diff --git a/lib/glut-3.7.6/CHANGES b/lib/glut-3.7.6/CHANGES deleted file mode 100644 index 44111f525c06007144a7c1ed8f5c352522a81a61..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/CHANGES +++ /dev/null @@ -1,988 +0,0 @@ - -GLUT Change Log -================ - -NOTE: This document is potentially incomplete. - - -GLUT 3.7 -> 3.7.1 ------------------- - - o Added a default icon for glut windows (Win32 only). - - o Added workspace and project files for compiling with - Microsoft Visual Studio (6 or greater). - - o Updated some of the demo programs. - - -GLUT 3.6 -> 3.7 ----------------- - - o Added to the ability to automatically link with - the necessary GLUT and OpenGL libraries. Define GLUT_NO_LIB_PRAGMA - to disable this (you need to disable this when compiling the - library itself). Define GLUT_USE_SGI_OPENGL for auto library - linking with the SGI OpenGL for Windows libraries. Define - GLUT_NO_WARNINGS_DISABLE to avoid warnings that GLUT programs - typically want to suppress. - - o Port of IRIS GL newave "wave physics" demo by Erik Larsen - (cayman@sprintmail.com). Look in progs/demos/newave - - o The glutSolidTeapot and glutWireTeapot do not tesselate as - finely as in previous releases. Expect the teapot to render - much faster as of GLUT 3.7. - - o The lib/*/Imakefile files have been updated to make it easier - to build shared/debug/profiling versions of the various GLUT - libraries. See Question 44 in the "FAQ.glut" files for - more details. - - o Fix progs/advanced/textext example to work on little-endian machines. - - o Fixed a performance bug in progs/advanced/rts.c that eliminates - one full shadow volume rendering pass. If you have the silhouette - shadow volume geometry, you can use GL_INVERT and draw the shadow - volume with a single pass with both front & back faces enabled - instead of two distinct passes for front and back as would be - needed if GL_INCR/GL_DECR were used. Also fixed the near and - far clipping planes for better depth precision with 16-bit - depth bufffers. - - o Improve the efficiency of Win32's wglMakeCurrent calls. It - turns out that Microsoft does not "short circuit" a redundant - wglMakeCurrent (ie, if you make current to the same context - and same DC you are already bound to, it is not a no-up). - Now, GLUT uses wglGetCurrentContext and wglGetCurrentDC to - determine when not to redundantly call wglMakeCurrent. - - This also reduced the calling of GetDC within Win32 GLUT. - - Note that the GLX version still assumes that a redundant - glXMakeCurrent is short circuited. - - o Call glutDestroyWindow (and glutLeaveGameMode) destroys the - window (or game mode window) before returning. Previously, - the X11 implementation didn't do an explicit flush so the - window could still be on the screen after glutDestroyWindow - (or glutLeaveGameMode) returned. The Win32 behavior was - corret in GLUT 3.6. - - o Work around Microsoft's bug where atexit callbacks are not - called if exit is called from within a DLL. I had to add new - routines glutCreateWindowWITHEXIT, glutCreateMenuWITHEXIT, - and glutInitWITHEXIT that pass in the exit routine's function - pointer so GLUT can call this routine and exit with the - atexit callbacks called correctly. - - o Added lib/glsmap library for dynamic real-time sphere mapping. - See the demos in progs/spheremap/glsmap - - Builds for N32, O32, and N64 for IRIX. - - rtsmap has an environment reflected in a sphere, teapot, or - icosahedron (8 passes). Very cool. fakeraytrace goes one - step further and has two reflective objects, then does an - extra recursive pass so that one of the spheres is actually - reflecting the reflection in the other sphere. Wow. - - o Man pages updated. - - Version number in man pages changed to 3.7. - - My email address changed to mjk@nvidia.com - - New man pages: - glutEnterGameMode - glutForceJoystickFunc - glutGameModeGet - glutGameModeString - glutIgnoreKeyRepeat - glutJoystickFunc - glutKeyboardUpFunc - glutSetKeyRepeat - glutSpecialUpFunc - - Updated man pages: - glutDeviceGet - glutGet - glutSolidTeapot - - o Updated the ./linux/* files for GLUT 3.7. - - o The GLUT library should compile with a C++ compiler now. I make - no promises that the entirety of GLUT can compile with a C++ - compiler though. Brian Paul wanted this for Mesa which does - expect to build with a C++ compiler. Christoph M. Hoffmann - brought up this issue. - - o Added proto dynamic sphere mapping programs in - progs/spheremap/hacks to help you understand the steps in - making a dynamic sphere map. - - o Added program demonstrating window space texture coordinate - generation at progs/advanced/texwinalign.c; demonstrates how - texture matrix can be be used to generated texture coordinates - in window space. - - o The -iconic command line option works for Win32 GLUT programs - now. The new test28 actually tests the -iconic command line option. - - o Added the glutGameModeString, glutEnterGameMode, glutLeaveGameMode, - and glutGameModeGet calls for "full screen" game mode display - change switching. Only the Win32 implementation really does - display mode changes. See lib/glut/glut_gamemode.c - - o Several demos added a -fullscreen option to use the new GLUT - game mode functionality. I generally also fixed these to - match the window aspect ratio. Examples: underwater, txfdemo - - o Sort of fixed how WM_ACTIVATE messages get processed in the - Win32 GLUT implementation. - - o Moved the Win32 WinProc function out of win32_util.c into - its own win32_winproc.c file. - - o Building the GLUT library debug for Win32 works now (changes - to the Makefile.win setup). - - o Added a poor man's stereo example by Walter Vannini - (walterv@jps.net, waltervannini@hotmail.com). The idea - is to draw the left eye in red and right eye in blue - and use cheap red/blue filter stereo glasses to see - the stereo separation. See progs/advanced/redblue_stereo.c - - o Improve GLUT static library implementation. Now if you don't - use the GLUT menu API, you don't get this code included in your - binary. Reduces GLUT program text size by 25% for such non-menu - GLUT programs. - - o Add gleGetNumSlices and gleSetNumSlices entry points to control - the tessellation level (previously, always a constant 20). - - o Improved dependencies in SGI Makefiles in lib/*/Makefile.sgi - - o Added progs/gle/martini.c example. Spinning martini glass. - - o Should work on VMS 7.0. Changes suggested by Jouk Jansen - (joukj@crys.chem.uva.nl). Mainly changes to GLUT library itself - to deal with VMS 7.0's POSIX-compliant support for gettimeofday. - - o Added GLUT version of "skyfly" terrain fly over demo. See - progs/demos/skyfly - - o Update of GLUT frequently asked questions. See FAQ.glut - - o Added workaround to real-time shadow demos so they work on old - (pre-IRIX 6.5) Octane and Impact systems. The work around makes - sure the feedback buffer is always at least 2048 entries big to - force use of software feedback. See progs/advanced/rts.c and - progs/advanced/shadowfun.c - - o Add work-around in hello2rts for Riva 128 and 128 ZX to make - hello2rts start by default with the stencil invariant hack - enabled. This makes sure that hello2rts use the software - rasterizer for all rendering so the shadows look right. Other - platforms may need this support. There is a menu option to - flip it on if need be. - - o Added a "win32pfd" (Win32 Pixel Format Descriptor) capability - name for the Win32 version of GLUT's glutInitDisplayString - parser. This lets you select a specific pixel format descriptor, - much as "xvisual" allows one to do with X11. This is intended - to facilitate benchmark construction with GLUT where particular - PFDs can be selected for benchmarking or testing. Also documented - on glutInitDisplayString man page. Win32 GLUT only. - - o Add glutGet(GLUT_WINDOW_FORMAT_ID) to return the window system - dependent window format ID (Visual ID for X11; Pixel Format - Descriptor Number for Win32). This should help people be able - to report bugs and now precisely what format ID they are - testing and/or benchmarking. Note that these values can change - between X servers, hardware, and OpenGL implementations. - - o Fix glutGet(GLUT_WINDOW_COLORMAP_SIZE) bug in X11 GLUT - implementation. The routine now correctly returns the colormap - size of the current layer (previously it returned the size - of the normal layer which was a totally bogus value for an - RGBA normal layer). - - o Fixed SEE ALSO section of glutDeviceGet man page. - - o glutInitDisplayString now knows how to use the SGIX_fbconfig - extension to access 16-bit StaticGray luminance visuals. - These high-resolution luminance (1 component) visuals are - excellent for medical imaging applications that need the - 16 bits per pixel resolution. - - To get a luminance window, do: - - glutInitDisplayString("luminance"); - - Note that few systems actually support 16-bit luminance visuals. - InfiniteReality does. I'm not aware of any other systems that - do. - - o Added missing GLUT entry points to the GLUT Ada binding - and interface files. - - o Added progs/demos/sysview, an IRIX operating system 3D - monitor. Only compiles on SGI machines, though it could - easily be adapted to other operating systems. Courtesy - of Javier Velasco . - - o Win32 GLUT didn't generate keyboard callback for Delete key - (ascii 127) before; now it does. - - o Fix warning in glut_input.c when compiling on Alpha due - to XInput extension API snafu. Pointed out by Tom Holroyd - compiling on a Linux Alpha machine. - - o Fixed bug reported by Rune Hasvold in - win32_glx.c where Win32 GLUT was always requesting a 1 - bit depth buffer at least. Now, GLUT requests zero bits - of DEPTH unless you request a depth buffer. Apparently - this bug was fixed in the Mesa version of GLUT a while - back, but didn't get to my GLUT source until now. - -GLUT 3.5 -> 3.6 ----------------- - - o The GLUT .zip file now has "Makefile" be a copy of "Makefile.win" - instead of "Makefile.sgi". This makes it easier for Win32 GLUT - users to just do an "nmake" to build GLUT. - - o Updated various README files for GLUT 3.6. - - o Update GLUT man page revs to say 3.6. - - o Fixed bug in Win32 accumulation buffer allocation code. Thanks to - Nate and Layne Christensen . - - o Fix bug in Win32 GLUT where pushing/popping a subwindow would - also reposition the window to its parent's origin. Now, push/pop - operations do not disturb the window position. - - o Fix all VC++ Win32 warnings and improve the GLUT.DLL speed - and size by macro'izing Xlib routines and eliminating X11-only - functionality from the Win32 version of the library. - - o Fixed various bugs in Win32 GLUT menu handling. The glutChange* - and glutRemoveMenuItem routines should work pretty well now. - - o Fix Win32 GLUT bug where a reshape did not properly result in - repair-damage, ie. glutLayerGet(GLUT_NORMAL_DAMAGED) didn't work - right in GLUT 3.5. - - o The "walker" demo's win32_dirent.h code got update to read directory - correctly for Windows 95 (does Win32 FindFirstFile on "." operate - differently from Windows NT? It seems like "*" works the way "." - should.) - - o X11 GLUT now detects when you set up an infinite loop due to - recursive submenu nesting. In previous GLUT implementations, - this could lead to an infinite loop with the X server grabbed; - now it leads to a GLUT fatal error. - - o GLUT now exits with a fatal error if glXCreateContext (or - wglCreateContext) fails instead of crashing. - - o Win32 "make test" infrastructure in place. - - o Ideas in Motion demo builds better now. - - o Substantially improve the performance of glutSolidTorus and - glutWireTorus by using quad strips instead of independent quads. - Also, generally made the looping more efficient. Thanks to - Emmanuel Maa BERRIET (eberriet@sky.fr) for pointing out the - inefficiencies. - - o Include Linas Vepstas's GLE library with GLUT (based on GLE 2.2.6). - Includes man pages at man/gle and examples at progs/gle - - The GLE Tubing and Extrusion Library is a graphics application - programming interface (API). The library consists of a number of - "C" language subroutines for drawing tubing and extrusions. - - Several bugs in GLE 2.2.6 are fixed here, particularly to make - GLE work well under Win32. - - o Fixed bugs in MUI so that it can support multiple user interface - windows. Added muiAttachUIList to associate a UI list with a GLUT - window. - - o More MUI enchancements to allow "disabled" greyed-out UI elements - courtesy of Tom Davis. - - o gliq, a pegboard game of IQ by Kiri Wagstaff, is at progs/demos/gliq - - o Add Nate Robin's port of the IRIS GL bounce program to OpenGL; see - progs/demos/bounce (includes a slider GUI element). - - o Add Nate Robin's "smooth" 3D object viewer without automatic nice - normal generation. - - o glflare, an OpenGL version of the D3D flare idea by Stephen Coy of - Microsoft. See progs/demos/glflare - - o Resolve gcc warnings (picky, picky) in lib/glut. This includes - not relying on the libc having strdup (not required by ANSI C or - POSIX). - - o Fix array bound overflow bug in progs/examples/stars.c - - o Handle fopen failure in progs/texfont/gentexfont.c - - o Add many more Ada GLUT examples; see progs/ada - - o Support X11R6's XK_KP_* keysyms for the keypad. Previously, - the Home,Left,Right,etc keys on the numeric keypad (when num lock - is off) got ignored. Now they should work. Thanks to Paul - Henning (phenning@cs.uiowa.edu) for pointing out this problem. - - o It is now possible to catch a Unix signal in a signal handler and - add a glutIdleFunc and know that the GLUT main loop will - immediately drop out of waiting for the event and call the idle - callback. This makes it possible to reliably respond to signals - from within a GLUT program. (Just on Unix systems, not Win32.) - - o Added progs/demos/lorenz, Lorenz Attractor Demo. - - o Added progs/examples/editgrid.c - - o Improved progs/mesademos/texobj.c - - o Fixed progs/redbook/surface.c to request a depth buffer. - - o Added progs/advanced/pointburst.c demonstrating a particle system. - - o Added progs/advanced/sgiflag.c demonstrating dynamic real-time - NURBS trimming. - - o progs/advanced/envmap.c supports OpenGL 1.1 now. - - o Fix GLUT library compilation problem on DEC Unix 4.0 on Alpha - machines reported by Ray S. Babcock (babcock@cs.montana.edu). - See glut_dstr.c - - o Fix single buffered GLUT programs that needed to be calling - glFlush at the end of the frame. Reported by - fossum@austin.ibm.com (Gordon C. Fossum). - - o Fix Fortran build error under IRIX 6.5 (use sed instead of grep). - - o Use "-Wl,-ignore_unresolved" SGI linker option to get around - problems in buggy SGI OpenGL Fortran bindings having extension - routines that are not implemented in the supplied OpenGL. - - o Added Brian Paul's marvelous Blue Pony demo in demos/bluepony - - I had requested a Blue Pony from SIGGRAPH as one of my "special - needs" for our SIGGRAPH '97 "OpenGL and Window System Integration" - course. Brian came through with this virtual Blue Pony. Thanks, - Brian! - - o Fixed a problem in test/glut/bigtest.c where if it ran too - long, it would stop rotation due to numeric problems. - - o Make new glut_swap.c and glut_cmap.c files to help keep - glutSwapWindow and the color index GLUT entrypoints out of - statically linked GLUT programs that do not use these routines. - - o Fix many warnings. - -GLUT 3.4 -> 3.5 ----------------- - - o Henk Kok (kok@wins.uva.nl) contributes another cool demo. See - progs/demos/opengl_logo - - o README.win32 now named README.win - - o Add the MUI (micro-UI) library developed for GLUT experimentally - based on SGI's Showcase user interface library. This code was - developed by Tom Davis (davis@sgi.com). - - o The test directory now has subdirectories. test/glut has - all the previous GLUT API tests. - - o Added menus to progs/advanced/projtex.c - - o Added tiffsift.c showing how to do "sifting" texture distortions - with OpenGL's third texture coordinate. - - o Improve lib/glut/glut_menu.c by having the code check if the - default visual is in the overlay so that it will get chosen - as the pop-up menu visual to minimize colormap flashing. - Suggested by Thomas Roell (thomas@xig.com). - - o Fix bug in glutStrokeLength and glutBitmapLength reported by Tom - Carroll . - - o Added shadowfun.c, boundary.c, hello2rts.c and rts.c as - examples of how to do fancy stenciled shadow volumes. See - the progs/advanced subdirectory. - - o Now man pages get installed with "glut" suffix. Should avoid - situations where GLUT's intro.3 clobber's systems intro.3 - because GLUT should now install intro.3glut - - o Changes to Glut.cf for Digital Unix (Alpha) suggested by - Dr Andrej Panjkov (A.Panjkov@latrobe.edu.au). - - o Added demos/chess and demos/rollercoaster demos written by - Henk Kok (kok@wins.uva.nl). Very nice. - - o Michael Gold's "rasterization only" demo uses OpenGL as just - a rasterization interfaces. See progs/advanced/rasonly.c - - o progs/demos/underwater shows OpenGL-based rendering of underwater - caustics effects. Very cool! - - o Added progs/perf_harness directory with an example of how - to create an application specific GLUT-based OpenGL benchmark. - - o Remove lib/glut/cannotate.c from distribution (no one should care). - - o Portability improvements throughout, particularly to Win32. - -GLUT 3.3 -> 3.4 ----------------- - - o Add glutStrokeLength and glutBitmapLength calls to glut.h - (previously undocumented). Will be documented part of GLUT 4 - API. - - o Added man discussion of glutStrokeLength, glutBitmapLength, - and glutWarpPointer. - - o Used ANSI C "const" keyword in glut API and implementation - as appropriate (this helped make Ada binding generation - easier). - - o README.win32 added; this is from Nate Robins's GLUT 3.3 - Win32 distribution. - - o SGI Makefiles use $(TOP)/glutdefs for shared GLUT-related - macros. - - o Add workaround for Microsoft's OpenGL 1.1 implementation. - MS OpenGL 1.1 does not advance the raster position by the - xoffset and yoffset of glBitmap if the specified bitmap - has a width or height of zero (it is just a no-op); this is - not what OpenGL specifies. I've fixed the GLUT bitmap fonts - to not use null bitmaps #ifdef WIN32 and instead use a 1x1 - bitmap with not bit set. capturexfont.c has been changed to - generate code with the #ifdef WIN32 workaround. - - o Fix bug in -geometry handling for negative window positions. - Now "-geometry 400x500-23-34" does not crash GLUT programs. - - o Makefile support for SGI machines so that you can set your - OBJECT_STYLE environment variable to one of SGI's various ABIs - and ISAs. This can let you compile GLUT fully 64-bit with - R10K instructions or mereley old 32-bit ABI. For example, - to compile N32 with only R4K instructions, do a - "setenv OBJECT_STYLE N32_M3". - - o Put header files in include/GL instead of GL - this would make - it esier to support other libraries within the GLUT distribution - (possibly libtiff) that wouldn't want a header to be in the GL - subdirectory. - - o Add GLUT 4 glutReportErrors entry point. - - o New cool game-oriented rendering demos: dinoreflect.c dinoshade.c - and halomagic.c - - o Support HP's Color Recovery System since Mesa uses it. - - o Add the libtiff examples in progs/tiff: showtiff, writetiff, - and textiff - - o Add the new OpenGL Programming Guide 2nd Edition examples to the - GLUT distribution. - - o added progs/mesademos/trdemo.c - Brian Paul's tiled rendering demo. - - o added progs/demos/geoface - facial animation demo. - - o no long export internal symbols in libglut that should have been static. - See lib/glut/Makefile.sgi's "make symcheck" rule. - - o glutInitDisplayString implemented. See test23. Also works automatically - with Mesa. - - o Added popup menu overlay color cell allocation logic for Sun's - Creator hardware. See test24. - - o Enhanced tests and fixed messages in a few places. - -GLUT 3.2 -> 3.3 ----------------- - - o The SGI Makefiles always build O32 executables. In IRIX 6.4, the - default executable type changes to N32; to avoid Makefile - sommersaults, we just keep use at O32. - - o Get rid of all the __glutFatalError calls in the GLUT test suite. - Naughty to be using a GLUT internal function. - - o Introduced some new entry points that will be part of the official - GLUT 4 API when it is finalized for video resize & window status. - The video resize API is useful for hardware with full screen - video resize (ie, InfiniteReality). The window status callback - extends the information of the previous visibility callback to - tell you when the window is fully vs. partially visible and - when the window is hidden vs. fully obscured. GUIs typically want - to know when a window gets unmapped; programs that rely on a - fully unobscured frame buffer (such as histogram occlusion culling) - need to know when the window is fully visisble. - - o progs/advanced/occlude.c demonstrates a histogram based occlusion - culling technique. It requires support of the histogram extension - and works best on a machine like RealityEngine. - - o glutSolidCube and glutWireCube efficiency improved. - - o Added progs/examples/cube.c - simple demo to draw a 3D cube. - - o Fixed warning message from glutSetWindow. - - o glutFullScreen called on a window before it is mapped now - properly overrides the WM_NORMAL_HINTS to ensure that the window - is positioned at 0,0 (ie, no random or interactive placement - by the window manager). - - o For IRIX 6.3 and IRIX 6.4, eliminate X server routine trips for - interning atoms using SGI's fast atoms optimization. - - o Added a GLUT introduction man page. Either "man glut" or "man intro". - - o Previously, timer callbacks could be starved by continous X - events. Now, timer callbacks and X event processing are handled - at the same priority. test/timer_test.c helps verify the improved - behavior. - - o Add IAFA for submitting GLUT to sunsite.unc.edu for anonymous - ftp; based on Mesa version. - - o SGI Makefiles work with MIPS 7.10 compilers now. - - o Fixed more warnings. - - o advanced: Fixed overlay bug in zcomposite. - - o demos: Fixed OpenGL bug in glutmech. - - o demos: Fixed atlantis to have a more reasonable near/far range for - machines with limited depth buffer resolution (<=16 bits). - - o Improved comments in places. - - o libglut: Fixed message if Motif atom intern'ing failed for fullscreen. - -GLUT 3.1 -> 3.2 ----------------- - - o Complete Unix-style nroff man pages for all the GLUT library - routines. See README.man for details. - - o Implement the MESA_SWAP_HACK. If you set the MESA_SWAP_HACK - enviornment variable and you are using Mesa, GLUT will attempt - to simply do a glXSwapBuffers to repair damage to a double - buffered GLUT window that appears to have been last displayed - using a glutSwapBuffers call. This can *greatly* improve the - redraw performance of GLUT programs running under Mesa when - they are damaged (for example by popup menus that are not in - the overlays). See lib/glut/glut_mesa.c This idea was suggested - by Brian Paul on the Mesa mailing list. - - Note that some poorly behaved (probably buggy, actually) GLUT - programs may no redraw correctly with MESA_SWAP_HACK. The - optimization relies upon your display callback being idempotent - and that the window is not otherwise rendered to by other - callback routines. - - o Port Brian Paul's various Mesa 2.0 demo programs to use - GLUT: bounce, gamma, gears, isosurf, offset, reflect, - spin, tess_demo, texobj, & winpos. The reflect program - is definitely worth checking out. - - o Include GLUT examples presented by Tom McReynolds and - David Blythe at the "Advanced OpenGL Rendering" course at - SIGGRAPH '96. - - o Add progs/examples/simple.c showing how to simply draw - a single triangle with OpenGL. How long would an equivalent - Direct3D immediate program be? Much longer... - - o Screen door transparency example using polygon stippling - based on code from Tim Hall. progs/examples/screendoor.c - - o Fix bug where glutRemoveMenuItem about recalculating - the menu's width in pixel that would sometimes cause an - X protocol error. - - o Make sure that when a popup menu is finished that if the - initiating window has an overlay, the overlay colormap - is installed. An overlay popup menu could otherwise knock - out the window's overlay colormap. - - o Fix an "off by one" error in the window number printed out - in a fatal error message when a redisplay is generated on - a window without a display callback. - - o Make consistent puncutation in some fatal error messages. - - o Some work to make example programs easier to build on - Windows NT and 95 (probably not complete; report bugs - please). - -GLUT 3.0 -> 3.1 ----------------- - - o The various shape rendering routines use single - precision instead of double precision. - - o The box shape rendering routines don't generate - redundant normals. - - o Make glutExtensionSupported more robust. - - o Added test20 for glutExtensionSupported. - - o Fixed Makefile in /usr/share/src/GLUT images. - - o Fixed multisample complication bug in dinospin.c - - o Fixed multiple includes in moth.c - - o Add contribed steam.c and glutmech demos (cool!). - - o Added fontdemo and evaltest in progs/examples. - - o Fix an HP/UX compilation problem with libglut.a - - o Fix GETTIMEOFDAY macro to take two args on a Sun. Why does - Sun claim to be SVR4 when they have a BSD (2 parameter - gettimeoday)? - - o Add an #ifdef to glut_win.c for working around Solaris - 2.4 and 2.5 bug in XmuLookupStandardColormap. - -GLUT 2.3 -> 3.0 ----------------- - - o Major version change so GLUT 3.0 does have API additions! - - o Added yacme (yet another colormap editor) demo by Patrick Bouchaud - (SGI Switzerland). - - o Updated glut.h so that GLUT_XLIB_IMPLEMENTATION=5 for 3.0 - and GLUT_API_VERSION=3 for 3.0. - - o Change all the sample programs to _not_ #include or - . From the spec: "Because a very large window system - software vendor (who will remain nameless) has an apparent - inability to appreciate that OpenGL's API is independent of their - window system API, portable ANSI C GLUT programs should not - directly include or . Instead, ANSI C GLUT - programs should rely on to include the necessary - OpenGL and GLU related header files." Sigh. - - o New Helvetica fonts: 10, 12, and 18 point versions. - GLUT_BITMAP_HELVETICA_10, GLUT_BITMAP_HELVETICA_12, and - GLUT_BITMAP_HELVETICA_18. - - o Implement glutFullScreen. - - o Implement glutSetCursor. - - o Implement glutGetModifiers. - - o Implement glutBitmapWidth and glutStrokeWidth. - - o Reimplement test2 to use glutGet(GLUT_ELAPSED_TIME) instead of - the less than portable gettimeofday. - - o Ripped out all the support for compiling earlier GLUT API - versions. It got very ugly and hard to maintain. - - o Added GLUT_LUMINANCE to GLUT verison 3 API and documented it, but - it is not implemented as part of GLUT 3.0; should be in 3.1. - - o Added OpenVMS support to GLUT library with much help from Andy Vesper. - - o The display mode mask parameter for glutInitDisplayMode and the - milliseconds parameter for glutTimerFunc are now of type unsigned - int (previously unsigned long). - - o glutMenuStatus obsoletes glutMenuState. The callback registered - by glutMenuStatus is triggered just like glutMenuState, except - that an additional two parameters pass the X and Y location of the - mouse when the menu status changes. This is to remedy problems a - GLUT program using glutPassiveMotion might have re-sync'ing with - the mouse position after menu use. - - o In previous releases of GLUT, various user input events were - discarded when menus were in use. Now, these callbacks are - generated. If the effect of the events should be performed after - the menu is released, it is up to the GLUT program to delay the - action. - - o Careful to ignore Enter/LeaveNotify events that come - from the pop-up window pointer grab and ungrab (ie, - Enter/LeaveNotify events not marked NotifyNormal for their mode. - Eliminates "spurious" entry events. - - o Fixed bug with new work (like subwindow creation is a display callback) - not being placed on the work queue and getting lost. - - o Fix memory corruption bug in caching of values returned by - glXChooseVisual; no longer cache. - - o Fixed bug with glutCopyColormap sometimes not accurately - re-establishing the WM_COLORMAP_WINDOWS property. - - o Fixed bug in deliver of enter and left callbacks. Before "virtual" - enter and leave (X protocol teminology) were being reported. The - semantic for the entry callback is it is entering and leaving - a GLUT windows real estate that counts; not passing through - the window hiearchy. - - o Add XFlush to __glutFinishMenu in case menu call back will want to - read from a terminal window. In this case, the X server may still - be grabbed since the XUngrabPointer hasn't been flushed out of - Xlib's buffers to the X server for processing (deadlock!). - - o Don't allow modification of menus while in use. Spec ammended to - say "It is illegal to create or destroy menus or change, add, or - remove menu items while a menu (and any cascaded sub-menus) are in - use (i.e., popped up)." Allowing modifications of menus while in - use was dubious, the semantics would be unclear, and even more - unfortunate, might vary from system to system. - - o Spec warns that you should not call routines that require a current - window or menu when there is not a current window or menu (like - before you create one or if you destroy the current one). - - o Fixed bug where glutSpecialFunc callback would only operate if - a glutKeyboardFunc callback was also registered. - - o Fixed bug in color index visual selection so that largest number - of bits of color resolution is preferred to smallest. - - o Fixed bug where if a double buffer X window was used to emulate - a single buffer window, GLUT should set the OpenGL read mode - to GL_FRONT (it was only changing the draw mode). - - o Fixed an obscure ordering bug with simultaneous glutPushWindow and - glutPopWindow calls on different subwindows of the same window. - - o Now, it is a fatal error to receive an expose event with no - display callback registered (it was stupid to allow mapped windows - that made no attempt to redisplay). The spec has been changed to - say NULL can not be passed to glutDisplayFunc; previously, it - said this would disable the callback. Stupid. What was I thinking? - - o GLUT spec is indexed now and generally improved. - - o Support for IRIX 6.2's N32 and N64 object style to take advantage - of new MIPS processor instruction sets. See lib/glut.n32 and - lib/glut.n64 (IRIX 6.x only). - - o Fortran bindings also available for N32 and N64. See lib/fglut.n32 - and lib/fglut.n64. - - o Tests support the new API version 3 interfaces. - - o Contributed "bigtest" test program. - - o Added splatlogo example demonstrating pixel path functionality. - - o Added zoomdino program demonstrating use overlay rubber-banding. - - o Contributed demo programs: hanoi, hanoi2, gears, moth, text3d, - and noof. - - o Contributed SGI stereo program: stereo-plane - - o Being out of colors in the default colormap without overlay planes - will no longer lead to a fatal error when allocating the color gray - for a pop-up menu. Instead, GLUT finds the closest matching color - automatically. Help from Brian Paul to code this. - - o Eliminated Glut64.mk from all Makefile.sgi's - -GLUT 2.2 -> 2.3 ----------------- - - o Fix obscure problem with how X Input extension button press and - release events get selected; it seems GLUT should also be - selecting for the DeviceButtonPressGrab event class since this - ensures that a release will be delivered to the same window as the - press; that was my intent for how buttons presses and releases - should work. I just didn't know you needed this obscure event - class to be selected. Such a grab is the default for pointer - events. - - o If windows are indirect, make sure that a glFinish is properly - done for all windows that have been made current to recently (ie, - last main loop iteration). This helps ensure windows don't get - ahead of themselves. Previously, GLUT simply did a glFinish to - whatever window GLUT happened to be made current to last at the - end of each main loop iteration. - - o Fix what can be considered a bug where calling glutPostRedisplay - within a display callback would not leave the redisplay set; this - applies other routines that set work state needing to be done. - Essentially, clear the workMask before the work callbacks are done - instead of after. The new test15 tests this. - - o To support other OpenGL higher-level library that might want to - be able to call glXMakeCurrent, GLUT should not try to track - make current state and short circuit glXMakeCurrent calls when - GLUT believes the window/context are already current. glXMakeCurrent - should implement the same "short circuit" case, but can appropriately - track the changed state from multiple libraries. - - o The glutRemoveMenuItem routine was totally busted previous to 2.3. - Now it is fixed and test14 is a regression test for it. - - o Add Greg Humphreys's hanoi program to progs/contrib - - o Examples demonstrating Open Inventor used with GLUT found in - progs/inventor - - o New progs/examples programs: abgr, triselect, texenv, stenciltst, - stars, fogtst - -GLUT 2.1 -> GLUT 2.2 ---------------------- - - o Fixed bug in glutGet(GLUT_WINDOW_X) and glutGet(GLUT_WINDOW_Y). - - o Added Philip Winston's human kinetics demo in progs/demos/walker - (COOL!). - - o Improved test suite. - - o Work around SunOS 4.x's non-ANSI compliant realloc. - - o Better handle delivery of reshape callback. - - o Pre-build stroke font C files to avoid having to rely on lex/yacc - working correctly. Too many Linux systems missing flex/bison or - having verisons that resulted in undefined symbols while building - strokegen. - - o Better portability, mostly avoiding compiler warnings. - - o 64-bit clean (as far as I know!). - - o Compiles right for systems like DEC Alpha that support GLX 1.1 but - do not support GLX_SGIS_multisample extension. - - o At Brian Paul's request for better Mesa support, changed colormap - allocation to work if RGBA window has PsueoColor visual. - - o Fix Drew Bliss reported bug in colormap allocation (resulted in - GLUT programs not correctly sharing colormaps). - - o Interesting bug involving the fact that XFlush may actually - read X protocol into Xlib's internal buffers so if you call - XFlush, then select on the X socket, you might find nothing to - read, but when in fact there is data in the Xlib internal buffers - that should be processed. Using ISDN (I guess it has weird - network properties) showed this bug in a GLUT test13. The fix is - to use XPending after XFlush. - - o Improve X Input documentation references in the GLUT spec. - - o Widen margins so spec kills less trees. - - o Clarify GLUT spec to explain glutGet values returned by - GLUT_WINDOW_X, GLUT_WINDOW_Y, GLUT_WINDOW_WIDTH, and - GLUT_WINDOW_HEIGHT as being returned in pixels. - - o Make sure consistently using reshape (and not resize) within GLUT - spec. - - o GLUT spec should document that glutExtensionSupported, - glutCreateWindow, and glutCreateSubwindow return int. - -GLUT 2.0 -> GLUT 2.1 ---------------------- - - o XCOMM comments in Imakefiles results in unusable Makefiles - for systems that pre-date an X11R5-based imake. - - o The rings.c and worms.c examples use "float" returning - versions of trigonometric functions (ie, cosf, sinf, etc.). While - ANSI C reserves these names for their logical purpose, many - systems do not implement these functions. - - o Calls to __glutWarning in glut_cindex in places lack - variable %d argument. - - o Intended comments in lib/Imakefile cause avoiable - warnings for some C pre-processors. - - o Old (pre-X11R6) versions of Xlib did not have XK_Page_Up - and XK_Page_Down keysym defs in /usr/include/X11/keysymdef.h - These are aliases to XK_Prior and XK_Next. - - o The X11R5 to_wfont derived strokegen program for converting - PEX fonts to C data structures was full of memory access - bugs. On most systems, they were not fatal. That's - what I get for trying to steal PEX code I gues. :-) - - o Various Purify-detected memory access bugs within the - GLUT library have been fixed. - - o Better Imakefile handling of lex usage in lib/glut/Imakefile - - o Better document colormap management routines. - - o Correctly document the prototype for glutCreateSubWindow - - o Add documentation usage hint explaining glutGetWindow - and glutGetMenu can be used to determine what window - or menu a callback is for. - - o Fix bug in glutDetachMenu - - o Fix bug in delivery of visibility callback for subwindows - of an unmapped top-level window. - - o scube.c should use more likely to be optimized - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) instead of - glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA) - - o Supression of various compiler detected warnings through - the GLUT distribution. - - o Use of the "polygon offset" extension if available in origami.c - - o SGI mkmkfiles.sgi script doesn't make Fortran by default now; - see instructions in README.fortran - - o Improvements to the test programs. - - o Avoid X Input extension calls when extension is present but - no devices are available. - -GLUT 1.0 -> GLUT 2.0 ---------------------- - - o API extensions; see README.glut2 - - o Bug fixes. - - o More demos. - - o Update documentation. - -- Mark diff --git a/lib/glut-3.7.6/FAQ.glut b/lib/glut-3.7.6/FAQ.glut deleted file mode 100644 index fab74c9f80a4a424203e8ad71d2a2bdca441f320..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/FAQ.glut +++ /dev/null @@ -1,915 +0,0 @@ - -An on-line (possibly more up-to-date) version of this GLUT Frequently -Asked Questions list can be found at: - - http://reality.sgi.com/opengl/glut3/glut-faq.html - -Here are few questions I expect to be frequently asked about GLUT 3.5. -First, here are tag-line summaries of the question subject matter. - -Q1: Problems building GLUT. I've tried to use the "mkmkfiles.imake" - script to generate Makefiles so I can build GLUT, but it doesn't - seem to work. What should I try? - -Q2: More GUI features. GLUT needs improved menus, dialog boxes, - scrollbars, text entry fields, etc. to be useful to me. What - should I do? - -Q3: New with GLUT 3.0. What new things are in GLUT 3.0? - -Q4: GLUT for Windows 95 and NT. Is there a version of GLUT for - Windows NT or Windows 95? - -Q5: GLUT for OS/2. Is there a version of GLUT for OS/2? - -Q6: GLUT for Power Macintosh. Is there a version of GLUT for the - Power Macintosh? - -Q7: GLUT 3.0 incompatibilities. I'm hesitant about upgrading to GLUT - 3.0 since I've got things working will with GLUT 2.3. Is the - transition painful? - -Q8: GLUT and Motif. So how do I use GLUT and Motif together? - -Q9: aux convension to GLUT. I have a bunch of simple OpenGL programs - using the aux toolkit descibed in the OpenGL Programming Guide - (the "red" book). Is there an easy way to convert them to GLUT? - -Q10: SGI N32 and 64-bit support. I have IRIX 6.2 (or 6.1) and I'd - like to write GLUT programs run in true 64-bit and/or benefit - from the recent, faster MIPS processors. How do I build GLUT to - support these newer application binary interfaces (ABIs)? - -Q11: FORTRAN and GLUT. I'd like to write FORTRAN programs using GLUT - and OpenGL. How do I use GLUT with FORTRAN? - -Q12: Sophisticated input devices. I'd like to use the sophisticated - input devices that GLUT supports. What should I know about this? - -Q13: GLUT and Open Inventor. Can I use GLUT and Open Inventor? - -Q14: GLUT, Sun, and Overlays. I have Sun workstation, and it is - supposed to support overlays. So why does GLUT not use them? - -Q15: The GLUT stroke font. The stroke font used for GLUT looks - familar. Where did it come from? - -Q16: My book about GLUT. I read in the NOTICE file that you are - writing a book on programming OpenGL for the X Window System. - Where can I get it? - -Q17: GLUT and Microsoft portability. You mention an unnamed bu "very - large window system software vendor" as the reason portable GLUT - programs should not directly include and - directly. What's the vendor and what are the details? - -Q18: GLUT and networking. I want my GLUT program to read and send - information over a socket to some other program. How do I do - this in in GLUT? - -Q19: Asking GLUT questions. Where's the best place to ask questions - about GLUT or OpenGL? Can I just email them to you? - -Q20: Free OpenGL. My workstation doesn't have OpenGL. Where can I get a - free copy to use with GLUT? - -Q21: GLUT overlay example code. I hear GLUT 3.0 has overlay support. - Where is an example? - -Q22: BadMatch errors running GLUT programs. I get BadMatch X protocol - errors when I run GLUT programs. What gives? - -Q23: New in GLUT 3.1. What is new in GLUT 3.1? - -Q24: Shared libraries for Linux. How do I make Linux shared libraries - for GLUT? - -Q25: New in GLUT 3.2. What is new in GLUT 3.2? - -Q26: GLUT API man pages. I've heard GLUT 3.2 has man pages. How do I - use them? - -Q27: Fast window repair for Mesa. What is the MESA_SWAP_HACK in GLUT - 3.2? How does it help Mesa users avoid excessive window redraws? - -Q28: Advanced GLUT example .rgb image file. I try to run the examples in - progs/advanced but they don't work for lack of image files. - Where can I get those files? - -Q29: IRIX 6.3 and 6.4 fast atoms support issues for older IRIX - releases. Why doesn't GLUT programs compiled on IRIX 6.4 or 6.3 - work earlier releases? - -Q30: GLUT for the Power Macintosh. Can I get a version of GLUT for the - Power Macintosh? - -Q31: New in GLUT 3.4. What is new in GLUT 3.4? - -Q32: Cosmo3D beta and GLUT problem. I installed SGI's Cosmo3D beta and - GLUT, and I'm having problems compiling GLUT programs. What gives? - -Q33: New in GLUT 3.5. What is new in GLUT 3.5? - -Q34: Using the precompiled GLUT DLLs with Borland compilers. How do I use - the precompiled Win32 GLUT DLLs with Borland compilers? - -Q35: Using GLUT with C++. Are there any C++ wrappers for GLUT? - -Q36: Avoiding the Console window for Win32 GLUT programs. How do you avoid - the Console window appearing when you compiler a Win32 GLUT - application with Microsoft compilers? - -Q37: New in GLUT 3.6. What is new in GLUT 3.6? - -Q38: O2 build problmes with glXChannelRectSyncSGIX. On my IRIX 6.3 SGI O2 - workstation, why do I get errors about "glXChannelRectSyncSGIX" - being unresolved building certain GLUT examples? - -Q39: Using GLUT with Microsoft OpenGL 1.1 and compiling GLUT with - Borland compilers causes GLUT applications to generates floating - point exceptions. What can be done? - -Q40: Using GLUT with SGI OpenGL for Windows and compiling with - Borland compilers results in linking problems. What can be - done? - -Q41: What is GameGLUT? - -Q42: I use a callback registered with "atexit" to clean up my temporary - files and stuff. Under Windows, my atexit callback is not being - called if you quit by application by clicking the X box or using - the Windows Close border menu. What gives? - -Q43: My Unix GLUT program has a variable named "select". When I run - my program it crashes on startup in code that is not mine. - What gives? - -Q44: I use Imakefiles to build GLUT. How do I make shared/debug/profiling - versions of the various GLUT libraries? - --- - -Q1: I've tried to use the "mkmkfiles.imake" script to generate - Makefiles so I can build GLUT, but it doesn't seem to work. What - should I try? - -A1: While Imakefiles are supposted to be system independent (hence - the "I"), the commands to translate Imakefiles into Makefiles - varies from system to system. The X Consortium provides a command - called "xmkmf", but vendors do not put this command in a - consistent place. The "mkmkfiles.imake" script tries its best to - generate Makefiles, but may get confused by different vendors - configurations that I am not aware of. - - It is also possible the imake configuration files (typically - located at /usr/lib/X11/config) are buggy or from a very old - version of X. - - SGI users can benefit from using the "mkmkfile.sgi" script that - uses SGI's parallel make, though "mkmkfiles.imake" should work - too. - --- - -Q2: GLUT needs improved menus, dialog boxes, scrollbars, text - entry fields, etc. to be useful to me. What should I do? - -A2: GLUT does not pretend to be a full-featured graphical user - interface toolkit. - - You _could_ write these sorts of GUI objects using GLUT and OpenGL - if you needed to. The other alternative is to use Motif or - whatever full featured toolkit you have. - - A little toolkit called micro-UI uses OpenGL for rendering and is - based on GLUT. The toolkit was developed by Tom Davis. See the - README.mui file the accompanies GLUT 3.5 and up. - --- - -Q3: What new things are in GLUT 3.0? - -A3: See README.glut3 or read The OpenGL Utility (GLUT) Programming - Interface document. - --- - -Q4: Is there a version of GLUT for Windows NT or Windows 95? - -A4: As of GLUT 3.5, GLUT now builds for both Win32 and X11 window - systems. Much thanks to Nate Robins. See the README.win file - contained in GLUT 3.5 for details. GLUT 3.6 improved the Win32 - GLUT support considerably. - --- - -Q5: Is there a version of GLUT for OS/2? - -A5: Yes. I believe a version based on GLUT 2.x is distributed on an - OS/2 OpenGL developer's CD-ROM. - - You may have reasonable luck porting the Win32 version of the - GLUT 3.6 distribution to OS/2. If you manage to do this, please - contact me. - --- - -Q6: Is there a version of GLUT for the Power Macintosh? - -A6: Conix Graphics supplies GLUT 3.5 with their Macintosh OpenGL - implementation. See http://www.conix3d.com. - - Was told by Template Graphics that an incomplete version of - GLUT had been developed for their OpenGL product for the Power - Macintosh. I am not sure if it was ever completed or made - available. - - - --- - -Q7: I'm hesitant about upgrading to GLUT 3.0 since I've got things - working will with GLUT 2.3. Is the transition painful? - -A7: I do not believe so. There are two changes worth noting that - _may_ affect programs you have written. - - First, you need a display callback registered before your display - your windows on the screen. It did not make sense for this to not - be true. In all likeihood, this should not affect your GLUT - programs if they written well. - - Second, you can no longer change, create, or destroy menus while - pop-up menus are in use. Before, you could do this, but it meant - a menu might be changed while in use. It was near impossible to - describe what should happen in the case of menus being changed - while in use that was likely to be portable to the way other - window systems handled menus, so I made the practice illegal. - - You can register a menu status callback to know when menus become - used and unused to avoid changing menus while they are in use. - - For more details about what has changed, see the CHANGES file. - --- - -Q8: So how do I use GLUT and Motif together? - -A8: You don't. To make GLUT simple and easy-to-program, GLUT - supplies its own event processing loop. This makes it nearly - impossible to combine GLUT and Motif. If you want Motif, you - probably want a full-featured toolkit, and you ship skip GLUT and - implement your application directly in Motif. - --- - -Q9: I have a bunch of simple OpenGL programs using the aux toolkit - descibed in the OpenGL Programming Guide (the "red" book). Is - there an easy way to convert them to GLUT? - -A9: In the progs/redbook directory, there is a script named - aux2glut.sed It will give you a good start at converting simple - aux calls to their GLUT equivalents. It is a good start, but - you'll still have to hand edit some things. - - Here's a usage example: - - sed -f aux2glut.sed < aux_prog. > glut_prog.c - - Note that the second edition of the OpenGL Programming Guide uses - GLUT and not the aux toolkit. - --- - -Q10: I have IRIX 6.2 (or 6.1) and I'd like to write GLUT programs - run in true 64-bit and/or benefit from the recent, faster MIPS - processors. How do I build GLUT to support these newer - application binary interfaces (ABIs)? - -A10: See README.irix6 - --- - -Q11: I'd like to write FORTRAN programs using GLUT and OpenGL. How - do I use GLUT with FORTRAN? - -A11: GLUT does have a FORTRAN language binding. - - For instructions for building a binding library for Silicon - Graphics workstations, see README.fortran - - If you want to use GLUT and OpenGL or Mesa on with Fortran on - non-SGI systems, I recommend that you check, William Mitchell's - f90gl home page: http://math.nist.gov/f90gl/ - --- - -Q12: I'd like to use the sophisticated input devices that GLUT - supports. What should I know about this? - -A12: GLUT uses the X Input extension to talk to these devices. Because - the X Input extension gives a framework for supporting input - devices, but does not manadate how particular devices are - supported, it is possible that each vendor supports the same input - devices differently. - - GLUT as implemented supports SGI's means of advertising the - tablet, dial & button box, and Spaceball devices. I am not sure - how other vendors support these devices. For the details of SGI's - support for these devices, see README.xinput Since there is no - benefit in each vendor supporting these same devices in a - different an incompatible way, I encourage other vendors to - implement their devices in this same manner. - --- - -Q13: Can I use GLUT and Open Inventor? - -A13: Yes. See the README.inventor file. Also, some source code - examples can be found at progs/inventor - - Because the Open Inventor development enviornment is not supported - on all systems, the Inventor example programs are not built by - default, and the Makefile there only support SGI systems. - --- - -Q14: I have Sun workstation, and it is supposed to support overlays. - So why does GLUT not use them? - -A14: GLUT uses the SERVER_OVERLAY_VISUALS convention that advertises - overlay visuals. Most major workstation vendors support this - convention (DEC, HP, IBM, SGI), but Sun only support the - SERVER_OVERLAY_VISUALS in their latest Creator 3D hardware. - --- - -Q15: The stroke font used for GLUT looks familar. Where did it come - from? - -A15: The data for the "stroke roman" font is lifted from the X11R5 - PEX sample implementation. - --- - -Q16: I read in the NOTICE file that you are writing a book on - programming OpenGL for the X Window System. Where can I get it? - -A16: My book titled "Programming OpenGL for the X Window System" was - released in August of 1996. The book is published by - Addison-Wesley and the ISBN is 0-201-48359-9. If you have seen - the "red" and "blue" OpenGL books, this book looks very similar, - but has a green cover. More information can be found at: - - http://reality.sgi.com/mjk_asd/OpenGLforX.html - http://aw.com/devpress/titles/48359.html - - The book includes a tutorial chapter introducing the entire GLUT - API. Another chapter uses GLUT-based examples to explain various - OpenGL rendering features. An appedix describes the GLUT API - in detail. If you use GLUT, this book will be very helpful. - - A Japanese translation is also available now (ISBN4-7952-9703-7). - --- - -Q17: You mention an unnamed bu "very large window system software - vendor" as the reason portable GLUT programs should not directly - include and directly. What's the vendor and - what are the details? - -A17: Microsoft. It's version of requires to be - included before can be included because of Microsoft - function declaration conventions. Sigh. - --- - -Q18: I want my GLUT program to read and send information over a socket - to some other program. How do I do this in in GLUT? - -A18: You can not do it currently. I am considering such support for - a possible GLUT 4.0. I'd like to have a portable solution. - - What you'd like is a callback that would tell you when a socket is - ready for reading and writing. I'm hoping to find a way to - support this in an operating system independent manner. Does - anyone know of a good portable interface for networked bytestream - connections? - - For now, you've got the source code to GLUT and you could hack it - into GLUT for whatever particular interface your operating system - provides. - --- - -Q19: Where's the best place to ask questions about GLUT or OpenGL? Can - I just email them to you? - -A19: While I may try to return email if I have time, the best place - is the comp.graphics.api.opengl newsgroup. This gives a lot more - people a chance to answer your question and you'll probably get an - answer much faster than sending me email. Plus, I may not know - the answer though someone on the "net" may know it. - --- - -Q20: My workstation doesn't have OpenGL. Where can I get a free copy - to use with GLUT? - -A20: OpenGL is licensed by Silicon Graphics and is not available as - "free" or "public domain" software, but workstation vendors - typically bundle OpenGL software with their workstation. However, - there is a package called Mesa written by Brian Paul at the - University of Wisconsin that implements the OpenGL API. (To be - branded as "OpenGL", an implementation must be licensed _and_ pass - the Architectural Review Board's conformance suite, so Mesa is not - an official "OpenGL" implementation.) Mesa does work with GLUT. - - Mesa 2.5 and beyond include GLUT with the Mesa source code - distribution. - --- - -Q21: I hear GLUT 3.0 has overlay support. Where is an example? - -A21: Look at progs/examples/zoomdino.c for an example of using overlays - for rubber-banding and display of a help message, both in the - overlays. Also, test/over_test.c exercises all of the overlay - routines. - --- - -Q22: I get BadMatch X protocol errors when I run GLUT programs. What gives? - -A22: There is a bug in the Solaris 2.4 and 2.5 implementation of -XmuLookupStandardColormap (fixed in Solaris 2.6). When you compile GLUT -on Solaris 2.4 or 2.5, please apply the following patch and compile -with -DSOLARIS_2_4_BUG to workaround the problem. See the comment in -the patch below. This code is already in GLUT 3.1. - -*** glut_win.c Wed Apr 24 14:06:08 1996 ---- glut_win.c.bad Wed Apr 24 14:03:58 1996 -*************** -*** 398,414 **** - case TrueColor: - case DirectColor: - *colormap = NULL; /* NULL if RGBA */ -- #ifndef SOLARIS_2_4_BUG -- /* Solaris 2.4 has a bug in its XmuLookupStandardColormap -- implementation. Please compile your Solaris 2.4 version -- of GLUT with -DSOLARIS_2_4_BUG to work around this bug. -- The symptom of the bug is that programs will get a -- BadMatch error from X_CreateWindow when creating a GLUT -- window because Solaris 2.4 creates a corrupted -- RGB_DEFAULT_MAP property. Note that this workaround -- prevents Colormap sharing between applications, perhaps -- leading unnecessary colormap installations or colormap -- flashing. */ - status = XmuLookupStandardColormap(__glutDisplay, - vi->screen, vi->visualid, vi->depth, XA_RGB_DEFAULT_MAP, - /* replace */ False, /* retain */ True); ---- 398,403 ---- -*************** -*** 423,429 **** - return; - } - } -- #endif - /* If no standard colormap but TrueColor, just make a - private one. */ - /* XXX Should do a better job of internal sharing for ---- 412,417 ---- - --- - -Q23: What is new in GLUT 3.1? - -A23: GLUT 3.1 is largely a maintence release. There are some new programs, a - few minor GLUT library bug fixes, but mostly GLUT 3.1 is to make sure GLUT - builds cleanly on various platforms like SunOS, HP/UX, Solaris, and Linux. - See the CHANGES file included in the distribution for more details. - --- - -Q24: How do I make Linux shared libraries for GLUT? - -A24: Peter F. Martone (pmarton@mailbox.bgsu.edu) has written some - instructions for making a Linux shared library for GLUT. You can grab - the instructions for doing so from - http://pizza.bgsu.edu/cgi-bin/cgiwrap/~pmarton/makeMainIndex - --- - -Q25: What is new in GLUT 3.2? - -A25: Like GLUT 3.1, GLUT 3.2 is a maintence release. Along with bug - fixes to the core GLUT library, many new GLUT example programs - have been added. The portability of the examples has been - improved so that most should build using Windows 95 and NT. - Also, GLUT API man pages are now included. See the CHANGES file - included in the distribution for more details. - --- - -Q26: I've heard GLUT 3.2 has man pages. How do I use them? - -A26: Please see the README.man file for details. The easiest way for - SGI users to get the man pages is to install the "glut_dev.man.glut" - subsystem included with the pre-compiled SGI GLUT images. - --- - -Q27: What is the MESA_SWAP_HACK in GLUT 3.2? How does it help Mesa - users avoid excessive window redraws? - -A27: The GLX specification states that the state of a window's back - color buffer after a glXSwapBuffers is undefined. However, the - freeware Mesa implementation of the OpenGL API always leaves - the back buffer with its previous contents (ie, it simply - "copies" the back buffer contents to the front buffer). - - Because Mesa lacks hardware acceleration and is often slow to - redraw a window, this presents the opportunity to speed - redrawing a window damaged by window system interactions by - simply calling glXSwapBuffers again. - - If you set the MESA_SWAP_HACK enviornment variable, GLUT 3.2 - will try to repair double buffered windows not otherwise - needing a redisplay because of glutPostRedisplay by calling - glXSwapBuffers when Mesa is the OpenGL implementation being - used and the last display callback called glutSwapBuffers. - - In general, this means if you see MESA_SWAP_HACK when using - Mesa, double buffered GLUT programs will redraw very quickly - after being damaged but still operate well if they've been - correctly written to use glutPostRedisplay to trigger - application required redraws. - - I encourage all Mesa users to set the MESA_SWAP_HACK environment - variable. - --- - -Q28: I try to run the examples in progs/advanced but they don't work - for lack of image files. Where can I get those files? - -A28: Yes, the image files these examples use are large and were - seperated out from the main GLUT source code distribution. - Get the glut_data.tar.gz file from where you got your - GLUT distribution. Untar these data files over your glut - distribution so the "data" directory is at the same level - as "progs". Then do a "make links" in the progs/advanced - directory to make symbolic links. - - See the progs/advanced/README file for more details. - --- - -Q29: Why doesn't GLUT programs compiled on IRIX 6.4 or 6.3 work - earlier releases? - -A29: First, SGI never guarantees that an executable built on a later - IRIX release will work on an earlier release. Sometimes it works; - more often than not it does not. GLUT takes advantage of a new X - optimization in IRIX 6.3 called "fast atoms". This optimization - lets X clients determine common atom values without an X server - round-trip. This helps X performance. - - If you compile the GLUT library on an IRIX 6.3 or IRIX 6.4 - machine, the library will support fast atoms. This will mean that - if you run executables linked against the "fast atom enabled" - version of the GLUT library, you'll get a run-time link error - saying something like: - - 17062:glut_example: rld: Fatal Error: attemped access to - unresolvable symbol in projtex: _XSGIFastInternAtom - - Do not be alarmed. If you want, you can recompile the GLUT - library with the -DNO_FAST_ATOMS and get a version of the library - that doesn't have the support so that GLUT executables built with - a library compiled without "fast atoms" can work on earlier IRIX - releases. Note that even if you do compile with -DNO_FAST_ATOMS, - there is still no guarantee that an IRIX executable compiled on a - newer release will actually work on an older release (but at - least you'll have a chance!). - - Note that the precompiled images lack "fast atoms" support so - they will work fine with IRIX releases before IRIX 6.3 and 6.4. - --- - -Q30: Can I get a version of GLUT for the Power Macintosh? - -A30: Conix Graphics has released a port of GLUT - 3.2 I believe. Try checking the Conix Graphics web site - http://www.conix3d.com for current info. - --- - -Q31: What is new in GLUT 3.4? - -A31: GLUT 3.4 is an incremental release. An Ada binding for SGI - machines is included along with an Ada example. Many new sample - programs. Several such as dinoshade.c demonstrate real-time - rendering techniques relevant for games. Examples using Sam - Leffler's libtiff library for loading, drawing and writing TIFF - image files. GLUT version of the facial animation "geoview" - decibed in the Parke and Water's book "Computer Facial - Animation". New API interfaces to be made part of the GLUT 4 API - update (not yet fully finalized though). glutInitDisplayMode for - example. Improved portability and a few bug fixes. - --- - -Q32: I installed SGI's Cosmo3D beta and GLUT, and I'm having problems - compiling GLUT programs. What gives? - -A32: Unfortunately, SGI's Cosmo3D beta images install a DSO for GLUT - (libglut.so) that does not fully implement the GLUT API and lacks - some of the newer GLUT 3.4 entrypoints as well. The problem is - that a DSO takes preferenc over an archive when you compile with - an option like "-lglut". While the Cosmo3D beta installs a - libglut.so, my GLUT distribution and images only build and - install an archive. There are a couple of solutions: - - 1) Explicitly link your GLUT programs with libglut.a (the - archive version of GLUT). For example, put "/usr/lib/libglut.a" - on your compile line instead of "-lglut". - - 2) You can convert the GLUT 3.4 archive into a DSO: - - su - cd /usr/lib - mv libglut.so libglut.so.cosmo - cc -32 -o libglut.so -shared -all libglut.a - cd /usr/lib32 - mv libglut.so libglut.so.cosmo - cc -n32 -o libglut.so -shared -all libglut.a - - The new DSO generated from the GLUT 3.4 DSO should be - compatible with the old Cosmo version. This will mean that - all the GLUT programs you build will need the libglut.so on - the machine they run on. - - 3) Remove the Cosmo3D beta. - --- - -Q33: What is new in GLUT 3.5? - -A33: The most significant change with GLUT 3.5 is unifying the X - Window System and Win32 versions of GLUT into a single source - code distribution. Henk Kok contributed several cool new demos - (rollercoaster, chess, opengl_logo). All the demos build cleanly - under Win32. Lots of bug fixes. Interesting new OpenGL rendering - techniques are demonstrated in a number of new examples: - movelight, dinoshade, halomagic, rendereps, movelight, shadowfun, - torus_test, underwater, texfont, reflectdino. - --- - -Q34: How do I use the precompiled Win32 GLUT DLLs with Borland compilers? - -A34: The "implib" command should let you generate a GLUT.LIB that works - with Borland compilers from the precompiled GLUT.DLL Here is an - example: - - C:\>implib -f C:\GLUT\LIB\GLUT.LIB C:\WINDOWS\SYSTEM\GLUT.DLL - - After this, then link C:\GLUT\LIB\GLUT.LIB to your project - - Likewise, for the Microsoft GLUT32.DLL: - - C:\>implib -f C:\GLUT\LIB\GLUT32.LIB C:\WINDOWS\SYSTEM\GLUT32.DLL - - Suggested by Carter . - - The "-f" option is suggested by Kris Matson . - --- - -Q35: Are there any C++ wrappers for GLUT? - -A35: Yes, George Stetten (stetten@acpub.duke.edu) of Duke University has - made available the GlutMaster C++ wrapper classes. See: - - http://www.duke.edu/~stetten/GlutMaster/GlutMaster.html - http://www.duke.edu/~stetten/GlutMaster/README.txt - --- - -Q36: How do you avoid the Console window appearing when you compiler a - Win32 GLUT application with Microsoft compilers? - -A36: Try using the following Microsoft Visual C compiler flags: - - /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup - - These are linker options... if main or wmain are defined, MSVC - build a CONSOLE app by default; hence the need for - /SUBSYSTEM:WINDOWS. if /SUBSYSTEM:WINDOWS is defined, MSVC - expects WinMain or wWinMain to be defined; hence the need to - /ENTRY:mainCRTStartup (eg the entry point is the usual C main). - - stdout/stderr are [apparently] not "attached"; output via printf - is simply "eaten" unless redirected at the command-line or by a - parent program. - - Information thanks to Jean-David Marrow (jd@riverbed.com). - --- - -Q37: What is new in GLUT 3.6? - -A37: GLUT 3.6 adds/improves the following: - - o Win32 GLUT performance improvements. - - o Win32 GLUT confromance improvements. - - o Linas Vepstas's GLE Tubing & Extrusions Library is - included with GLUT, including nroff man pages and - demo programs. - - o More GLUT-based OpenGL demos and examples (and bug - fixes to existing demos and examples). - - o glutPostWindowRedisplay and glutPostWindowOverlayRedisplay - entry points added for posting redisplays on non-current - windows (for faster multi-window updates). - - o Bug fixes and minor functionality improvements to Tom Davis's - micro-UI GLUT-based user interface toolkit. - - See the "CHANGES" file that accompanies GLUT 3.6 for a fuller - list of changes. - --- - -Q38: On my IRIX 6.3 SGI O2 workstation, why do I get errors about - "glXChannelRectSyncSGIX" being unresolved building certain GLUT - examples? - -A38: The original IRIX 6.3 release for the O2 workstation accidently - advertised support for the dynamic video resize extension supported - on SGI's high-end InfiniteReality graphics system. This confuses - GLUT into providing its dynamic video resize sub-API. - - This problem is fixed by patch 1979 (and its successor patches). - Because patch 1979 (and its successor patches) also help O2's - OpenGL rendering performance, I strongly recommend requesting - the latest O2 OpenGL patch from SGI customer support. - - Once the patch is installed, your build errors will be resolved. - --- - -Q39: Using GLUT with Microsoft OpenGL 1.1 and compiling GLUT with - Borland compilers causes GLUT applications to generates floating - point exceptions. What can be done? - -A39: Under certain conditions (e.g. while rendering solid surfaces - with lighting enabled) MS libraries cause some illegal operations - like floating point overflow or division by zero. The default - behaviour of Microsoft compilers is to mask (ignore) floating - point exceptions, while Borland compilers do not. A function of - Borland run-time library allows to mask exceptions. Modify - glut_init.c by adding the following lines to the function - __glutOpenWin32Connection. - -#ifdef __BORLANDC__ -#include - _control87(MCW_EM,MCW_EM); -#endif - - With this modification, compiling the GLUT library with your - Borland compilers and using GLUT with Microsoft OpenGL should - work fine. - - GLUT 3.7 will have this change already included in the GLUT - library source code distribution. - - This advice comes from Pier Giorgio Esposito (mc2172@mclink.it). - --- - -Q40: Using GLUT with SGI OpenGL for Windows and compiling with - Borland compilers results in linking problems. What can be - done? - -A40: Some care must be taken when linking GLUT.DLL or programs - that use it with Borland compilers. The import library - IMPORT32.LIB already contains the functions exported by - the Microsoft OpenGL libraries, thus SGI OpenGL import - libraries must be listed _before_ import32 in the Borland - tlink command line. - - This advice comes from Pier Giorgio Esposito (mc2172@mclink.it). - --- - -Q41: What is GameGLUT? - -A41: GameGLUT is a set of API extension to GLUT to be released in - GLUT 3.7. These extensions provide keyboard release callbacks, - disabling of keyboard auto repeat, joystick callbacks, and full - screen resolution setting. - --- - -Q42: I use a callback registered with "atexit" to clean up my temporary - files and stuff. Under Windows, my atexit callback is not being - called if you quit by application by clicking the X box or using - the Windows Close border menu. What gives? - -Q42: Windows has multiple C run-time libraries (CRTs). The GLUT.DLL - is linked against the MSVCRT.LIB CRT (for multi-threaded, DLL - programs). The OPENGL.DLL and GLU.DLL libraries are also linked - with MSVCR.LIB. By default, the Visual C++ compiler links with - the LIBC.LIB CRT (for single-threaded, non-DLL programs). - - Static data in one CRT is not shared with other CRTs in the - Win32 environment. In general, mixing CRTs in a single program - is bad. In particular, an atexit callback registered with one - CRT will not be called when the exit routine of another CRT is - called. - - The "/MD" option forces use of the MSVCRT.LIB (the one GLUT.DLL is - linked with). If you use the "/MD" option, then atexit callbacks - should occur just fine even if you application exits through a - GLUT fatal error or the user exits from the Windows close border - or clicks the X button. - - Do not use the "/ML" or "/MT" options when linking GLUT programs - under Win32. The options link with the LIBC.LIB and LIBCMT.LIB - libraries respectively. - - Be aware you can also link with these libraries explicitly (instead - of using the options) by putting LIBC.LIB or LIBCMT.LIB on your - command line. Avoid this practice since it will also cause - problems. - --- - -Q43: My Unix GLUT program has a variable named "select". When I run - my program it crashes on startup in code that is not mine. - What gives? - -Q43: There is a Unix system call called "select" that is used by both - the GLUT library and the Xlib library. If you name a variable - "select", the linker will pre-empt the C library version of select - with your variable. When GLUT or Xlib try to call the "select" - routine, they jump to your data instead and crash your application. - - The crash will be deep in GLUT or Xlib and this will likely be - very confusing. - - Rename your variable to a different name, and the problem will - be fixed. - - Note that other names such as "connect", "socket", "read", and - "write" will cause similiar problems if used as variable names or - routine names in GLUT programs. If in doubt, try doing "man XXX" - where XXX is the suspicious variable name. If you get the manual - page for a C library function, pick another name. - --- - -Q44: I use Imakefiles to build GLUT. How do I make shared/debug/profiling - versions of the various GLUT libraries? - -A44: This is much easier as of GLUT 3.7. Now, just edit the various - GLUT library Imakefiles (that is "lib/*/Imakefile") and set the - lines to say: - -#define DoNormalLib YES -#define DoSharedLib YES -#define DoDebugLib YES -#define DoProfileLib YES - - Change any of these to "NO" if you don't want the respective - type of library built. - - The do: - - cd lib - make clean - make Makefiles - make depend - make clean - make - - That's all there is to it. If you have problems with this procedure, - the most likely cause is that your Imake configuration files do not - have the appropriate rules for your compiler for building - shared/debug/profiling libraries. - - Check your Library.tmp file (often found in - /usr/lib/X11/config/Library.tmpl) if you have problems. - - (The previous README.linux and README.ibm-shlib files are - deprecated in favor of the advise above.) - --- - -- Mark diff --git a/lib/glut-3.7.6/Glut.cf b/lib/glut-3.7.6/Glut.cf deleted file mode 100644 index 34fd17a4ffe632edc9d9ed5b7391052d25df6d01..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/Glut.cf +++ /dev/null @@ -1,197 +0,0 @@ -XCOMM Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. -XCOMM Glut.cf - GLUT distribution Imakefile configuration info - -/* LINUX USERS: Remove the "/* " characters in the #define line - below this comment in order to use Linux shared objects. */ -/* #define UseSharedObjects 1 /**/ - -/* MESA USERS: Remove the "/* " characters in the #define line - below this comment and change the "#define MesaDir" line to - match the top-level directory of your Mesa source tree. */ -/* #define UseMesa 1 /**/ -#define MesaDir /usr/Mesa-3.0 /* UPDATE ME! */ - -#ifdef UseMesa -XCOMM using Mesa (the freeware OpenGL implementation) by Brian Paul -MESA_DIR = MesaDir -MESA_INCLUDE = -I$(MESA_DIR)/include -MESA_LIB = -L$(MESA_DIR)/lib -MESAGL = $(MESA_LIB) -lMesaGL -MESAGLU = $(MESA_LIB) -lMesaGLU -#endif - -#ifndef MathLibrary /* introduced with X11R6 */ -#define MathLibrary -lm -#endif - -#ifndef SaberProgramTarget /* in X11R5 but removed in X11R6 */ -#define SaberProgramTarget(program,srclist,objlist,locallibs,syslibs) -#endif - -#ifdef SunArchitecture - -/* - * Solaris has a non-standard way of placing libraries - * and header files. This should work for Template Graphics Systems' - * OpenGL implementation, assuming your OGLHOME and OPENWINHOME - * environment variables are set correctly. - */ -EXTRA_INCLUDES = -I$(TOP)/include -I$(OGLHOME)/include -I$(OPENWINHOME)/include $(MESA_INCLUDE) -#ifdef UseMesa -OPENGL = $(MESAGL) -GLU = $(MESAGLU) -#else -OPENGL = -L$(OGLHOME)/lib -lGL -L$(OPENWINHOME) -ldga -GLU = -L$(OGLHOME)/lib -lGLU -#endif -/* XXX Is this right, Template?? */ -INVENTOR = -L$(OGLHOME)/lib -lInventor -GLUT_DEPLIBS = $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLUT_LIBS = $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -MUI_DEPLIBS = $(DEPMUI) $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -MUI_LIBS = $(MUI) $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -GLE_DEPLIBS = $(DEPGLE) $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLE_LIBS = $(GLE) $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -GLSMAP_DEPLIBS = $(DEPGLSMAP) $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLSMAP_LIBS = $(GLSMAP) $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary - -#else /* Everybody but Sun... */ -#ifdef AlphaArchitecture - -/* Alpha suggestions from Andrej Panjkov (mataap@pop.latrobe.edu.au). */ - -/* Andrej writes: There is a bug in one of the imake configuration - files supplied with Digital Unix 3.2c that will cause the build to - fail. In the file /usr/lib/X11/config/osflib.tmpl, the reference to - libXi.a should be changed to libXi.so (which is in the correct - directory /usr/shlib). Root access is needed to fix this bug. I - don't know if the bug persists in later versions of DU. */ - -#if 0 /* Not using now. */ -/* - * Digital puts all Imake symbols for use with OpenGL in OpenGL.tmpl, so use - * the contents of that file instead of the definitions here. - */ -#include -EXTRA_INCLUDES = GLUTInclude $(MESA_INCLUDE) -#else -EXTRA_INCLUDES = -I$(TOP)/include $(MESA_INCLUDE) -#endif - -INVENTOR = -lInventor - -/* Suggested by Andrej Panjkov (mataap@pop.latrobe.edu.au) */ -DEPGLUTLIB = $(TOP)/lib/glut/libglut.a -GLUTLIB = $(TOP)/lib/glut/libglut.a - -GLUT_LIBS = $(GLUTLIB) $(GLULIB) $(GLLIB) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -GLUT_DEPLIBS = $(DEPGLUTLIB) $(DEPGLULIB) $(DEPGLLIB) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -MUI_LIBS = $(MUI) $(GLUTLIB) $(GLULIB) $(GLLIB) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -MUI_DEPLIBS = $(DEPMUI) $(DEPGLUTLIB) $(DEPGLULIB) $(DEPGLLIB) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLE_LIBS = $(GLE) $(GLUTLIB) $(GLULIB) $(GLLIB) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -GLE_DEPLIBS = $(DEPGLE) $(DEPGLUTLIB) $(DEPGLULIB) $(DEPGLLIB) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLSMAP_LIBS = $(GLSMAP) $(GLUTLIB) $(GLULIB) $(GLLIB) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -GLSMAP_DEPLIBS = $(DEPGLSMAP) $(DEPGLUTLIB) $(DEPGLULIB) $(DEPGLLIB) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) - -#else /* Everybody but Sun or DEC Alpha... */ - -/* - * This should work for normal vendors that put their OpenGL and X - * libraries and headers in standard places (or at least where - * imake configuration files know where they are). - */ - -#ifdef HPArchitecture -/* Nate Robbins (E&S) reports that HP does not have its Xmu.h header in - the standard place. */ -XMU_HEADERS = /usr/contrib/X11R5/include/ -EXTRA_INCLUDES = -I$(TOP)/include -I$(XMU_HEADERS) $(MESA_INCLUDE) -#else -EXTRA_INCLUDES = -I$(TOP)/include $(MESA_INCLUDE) -#endif - -GLUT_DEPLIBS = $(DEPGLUT) $(DEPXMULIB) $(DEPXLIB) -GLUT_LIBS = $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XLIB) MathLibrary -#ifdef UseMesa -OPENGL = $(MESAGL) -GLU = $(MESAGLU) -#else -OPENGL = -lGL -GLU = -lGLU -#endif -INVENTOR = -lInventor -GLUT_DEPLIBS = $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLUT_LIBS = $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -MUI_DEPLIBS = $(DEPMUI) $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -MUI_LIBS = $(MUI) $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -GLE_DEPLIBS = $(DEPGLE) $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLE_LIBS = $(GLE) $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary -GLSMAP_DEPLIBS = $(DEPGLSMAP) $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB) -GLSMAP_LIBS = $(GLSMAP) $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) MathLibrary - -#endif -#endif - -#ifdef UseSharedObjects -# for Linux shared objects - -#ifndef AlphaArchitecture -DEPGLUT = $(TOP)/lib/glut/libglut.so /* from PFM 6/31/96 */ -GLUT = $(TOP)/lib/glut/libglut.so /* from PFM 6/31/96 */ -#endif -DEPMUI = $(TOP)/lib/mui/libmui.so -MUI = $(TOP)/lib/mui/libmui.so -DEPGLE = $(TOP)/lib/gle/libgle.so -GLE = $(TOP)/lib/gle/libgle.so -DEPGLSMAP = $(TOP)/lib/glsmap/libglsmap.so -GLSMAP = $(TOP)/lib/glsmap/libglsmap.so - -#else -# for static objects - -#ifndef AlphaArchitecture -DEPGLUT = $(TOP)/lib/glut/libglut.a -GLUT = $(TOP)/lib/glut/libglut.a -#endif -DEPMUI = $(TOP)/lib/mui/libmui.a -MUI = $(TOP)/lib/mui/libmui.a -DEPGLE = $(TOP)/lib/gle/libgle.a -GLE = $(TOP)/lib/gle/libgle.a -DEPGLSMAP = $(TOP)/lib/glsmap/libglsmap.a -GLSMAP = $(TOP)/lib/glsmap/libglsmap.a - -#endif - -CXXEXTRA_INCLUDES = -I/usr/include/CC $(EXTRA_INCLUDES) $(MESA_INCLUDE) -GLUT_INVENTOR_DEPLIBS = $(GLUT_DEPLIBS) -GLUT_INVENTOR_LIBS = $(INVENTOR) $(GLUT_LIBS) - -#ifdef SGIArchitecture -/* For SGI C++ compiler, need to search extra dirs in make depend */ -#undef CplusplusDependIncludes -#define CplusplusDependIncludes -I$(ROOT)/usr/include/CC -#endif - -#ifndef NullParameter -/* - * NullParameter should be #define'ed to nothing in Imake.rules, but it has - * been reported to me that this is not always the case. If not, let - * Glut.cf #define it to nothing. - */ -#define NullParameter -#endif - -#define GlutTestProgramTarget(name) NormalProgramTarget(name,name.o,$(GLUT_DEPLIBS),$(GLUT_LIBS),NullParameter) -#define MuiTestProgramTarget(name) NormalProgramTarget(name,name.o,$(MUI_DEPLIBS),$(MUI_LIBS),NullParameter) -#define SimpleGlutProgramTarget(name) NormalProgramTarget(name,name.o,$(GLUT_DEPLIBS),$(GLUT_LIBS),NullParameter) -#define NormalGlutProgramTarget(name,objs) NormalProgramTarget(name,objs,$(GLUT_DEPLIBS),$(GLUT_LIBS),NullParameter) -#define SimpleMuiProgramTarget(name) NormalProgramTarget(name,name.o,$(MUI_DEPLIBS),$(MUI_LIBS),NullParameter) -#define NormalMuiProgramTarget(name,objs) NormalProgramTarget(name,objs,$(MUI_DEPLIBS),$(MUI_LIBS),NullParameter) -#define SimpleGleProgramTarget(name) NormalProgramTarget(name,name.o,$(GLE_DEPLIBS),$(GLE_LIBS),NullParameter) -#define NormalGleProgramTarget(name,objs) NormalProgramTarget(name,objs,$(GLE_DEPLIBS),$(GLE_LIBS),NullParameter) -#define SimpleGlsmapProgramTarget(name) NormalProgramTarget(name,name.o,$(GLSMAP_DEPLIBS),$(GLSMAP_LIBS),NullParameter) -#define NormalGlsmapProgramTarget(name,objs) NormalProgramTarget(name,objs,$(GLSMAP_DEPLIBS),$(GLSMAP_LIBS),NullParameter) -#define SimpleGlutInventorProgramTarget(name) NormalCplusplusProgramTarget(name,name.o,$(GLUT_INVENTOR_DEPLIBS),$(GLUT_INVENTOR_LIBS),NullParameter) -#define NormalGlutInventorProgramTarget(name,objs) NormalCplusplusProgramTarget(name,objs,$(GLUT_INVENTOR_DEPLIBS),$(GLUT_INVENTOR_LIBS),NullParameter) - -XCOMM end Glut.cf - GLUT distribution Imakefile configuration info diff --git a/lib/glut-3.7.6/IAFA-PACKAGE b/lib/glut-3.7.6/IAFA-PACKAGE deleted file mode 100644 index d201d716ae0db0c774cbfa6e28692fefe355b09b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/IAFA-PACKAGE +++ /dev/null @@ -1,9 +0,0 @@ -Title: OpenGL Utility Toolkit (GLUT) -Version: 3.7 -Description: A 3-D graphics library which uses the OpenGL API. -Author: Mark J. Kilgard mjk@nvidia.com -Maintained-by: Mark J. Kilgard mjk@nvidia.com -Maintained-at: http://reality.sgi.com/opengl/glut3/glut3.html -Platforms: Any Unix system with ANSI C and X and OpenGL or Mesa -OR- Windows 95 or NT PC. -Copying-Policy: Freely redistributable, not public domain, see NOTICE -Keywords: Mesa, OpenGL, GLUT, windowing library diff --git a/lib/glut-3.7.6/Imakefile b/lib/glut-3.7.6/Imakefile deleted file mode 100644 index c80a7d909034a1a61c3743aa43579010427ea196..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/Imakefile +++ /dev/null @@ -1,7 +0,0 @@ -#define IHaveSubdirs -#define PassCDebugFlags - -SUBDIRS = lib test progs - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/NOTICE b/lib/glut-3.7.6/NOTICE deleted file mode 100644 index 60309d4dff8e583cc59bebbfbd1ddb54bbb01f94..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/NOTICE +++ /dev/null @@ -1,15 +0,0 @@ -NOTICE: The OpenGL Utility Toolkit (GLUT) distribution contains source -code published in a book titled "Programming OpenGL for the X Window -System" (ISBN: 0-201-48359-9) published by Addison-Wesley. The -programs and associated files contained in the distribution were -developed by Mark J. Kilgard and are Copyright 1994, 1995, 1996, 1997, 1998 -by Mark J. Kilgard (unless otherwise noted). The programs are not in the -public domain, but they are freely distributable without licensing -fees. These programs are provided without guarantee or warrantee -expressed or implied. - -I acknowledge the assistance provided by William Mitchell in developing -GLUT's "fbc" interface for use by the f90gl Fortran 90 binding. - -- Mark Kilgard - August 28, 1998 diff --git a/lib/glut-3.7.6/Portability.txt b/lib/glut-3.7.6/Portability.txt deleted file mode 100644 index e0663afcbd621e107723a7926a3b97e2ffc8b3a9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/Portability.txt +++ /dev/null @@ -1,135 +0,0 @@ - -This note collects a bunch of portability issues that I've found in -ensuring that GLUT example source code is truly portable. I encourage -contributors to the GLUT source code distribution to review these -guidelines: - - o Avoid variables, routines, or structure elements named "new" or - "delete" to avoid these C++ keywords. - - o Avoid the "near" and "far" keywords introduced by Intel. Instead - try using "nnear" and "ffar" since these are common names in - graphics programming. - - o Do not assume the defines M_PI. Instead, after including - , say the following: - ------------------------------------------------------------------------ -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif ------------------------------------------------------------------------ - - o If you use the GLU tessellator, when you define or declare - callback functions, use the "CALLBACK" calling convention - identifier. This is required for the callbacks to work correctly - under Win32. After including , say the following: - ------------------------------------------------------------------------ -/* Win32 calling conventions. */ -#ifndef CALLBACK -#define CALLBACK -#endif ------------------------------------------------------------------------ - - Then using a GLU tessellator begin callback as an example say: - ------------------------------------------------------------------------ -static void CALLBACK -begin(GLenum type, void *polyData) -{ - glBegin(type); -} ------------------------------------------------------------------------ - - When registering the callback, say: - - gluTessCallback(tess, GLU_TESS_BEGIN_DATA, (void (CALLBACK*)()) &begin); - - o Avoid the floating point trig and exponential functions such as - "sinf", "cosf", "expf", etc. These functions are reserved by ANSI - C but not mandated. Instead use the double precision mandated - functions "sin", "cos", "exp", etc. Some systems also support - "fcos", "fsin", etc; definitely avoid these. - - o Do not use the EXIT_FAILURE and EXIT_SUCCESS constants defined by - ANSI C. Some old systems do not define these in stdlib.h but are - otherwise ANSI C compliant. Instead use "exit(1);" for failure - and "exit(0);" for success. - - o Use "rand" to generate random number. Do not use "random" or "drand48" - since they are not supported under Win32. - - o Avoid using "gettimeofday" or other system dependent routines to - determine a timestamp. Instead use - - timestamp = glutGet(GLUT_ELAPSED_TIME); - - o If you need to read a directory, check out the "win32_direct.h" - file used in progs/demos/walker/walker.c - - o Try to avoid including since it is not in Win32. - - o If your program runs in single buffered mode, be sure to call - glFlush() at the end of your display callback. Some OpenGL - implementations need a glFlush for pending graphics commands - to fully execute. Note that glutSwapBuffers performs an - implicit glFlush operation. - - o Avoid using strdup because strdup is not an actual ANSI C or - POSIX required routine. Indeed, OpenVMS does not support it. - And standard Linux libc only advertises strdup in string.h - if BSD or SVID routines are requested. Instead, directly include - the routine below: - ------------------------------------------------------------------------ -static char * -stralloc(const char *string) -{ - char *copy; - - copy = malloc(strlen(string) + 1); - if (copy == NULL) - return NULL; - strcpy(copy, string); - return copy; -} ------------------------------------------------------------------------ - - o Do not #include ; some platforms like IBM's AIX do not - have a getopt.h header file. Instead, you can portabily rely on - getopt() to be declared in on Unix machines. Still, - Win32 does not have a builtin getopt. - - o IBM's AIX defines "quad" to be a 64-bit type in . - Avoid using quad as a variable name. - - o HP's HP-UX 10.20 may have a type or otherwise define "time". - Avoid using time as a variable name. XXX GLUT doesn't do this - well currently. - - o GLU 1.2 introduced the types GLUquadric, GLUnurbs, and - GLUtesselator as aliases for the older GLUquadricObj, GLUnurbsObj, - and GLUtesselatorObj type names. Avoid the newer type names; use - the older names with the "Obj" suffix since all versions of GLU - support the Obj-suffixed types. (Note: yes, the GLU API has - GLUtesselatorObj is spelled incorrectly - tessellator should have - two l's.) - - o Do not include to get the standard C malloc/free - routines. Instead, include . FreeBSD and probably - other systems lack a . - - o Linux systems prototype a function called "idle" in . - This can result in an error in GLUT programs that name their - idle callback "idle" and include . Do no use a function - named idle if you include . - - o The SunOS 5.6 version of requires that also - be included because the assert() macro uses stderr. Be sure to - include along with everywhere to avoid - build errors on SunOS 5.6. - -- Mark Kilgard - October 17, 1998 diff --git a/lib/glut-3.7.6/README b/lib/glut-3.7.6/README deleted file mode 100644 index 4dbf9730af9cb6df0c0ff8e8a91a2084fbd83121..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/README +++ /dev/null @@ -1,186 +0,0 @@ - -This directory and its subdirectories contains the OpenGL Utility -Toolkit (GLUT) distribution. See the NOTICE for legal terms. - -VERSION: - -Release 3.7, Novermber 22, 1998. - -SUPPORTED PLATFORMS: - -This distribution should compile for: - - o Microsoft Windows 95, Windows 98, or Windows NT with Microsoft - OpenGL 1.1 (bundled standard with these systems) or SGI OpenGL - for Windows (aka Cosmo OpenGL). - - o SGI workstation running IRIX 5.2 or higher supporting OpenGL, - including 64-bit and N32 support IRIX 6.1, 6.2, 6.3, 6.4, and - 6.5. - - o DEC Alpha workstation running OSF/1 and OpenVMS with Open3D - layered product. - - o IBM RS/6000 workstations running AIX with OpenGL support. - - o Metro Link's Metro OpenGL for Linux. - - o Sun's OpenGL implementation for its workstations or Template - Graphics Software's OpenGL for Sun workstations. - - o Mesa 3.x (and 2.x) for Unix workstations, including Linux PCs - and SunOS 4.1.x. - - o Most other Unix workstations supporting either OpenGL or Mesa. - -MICROSOFT WINDOWS 95 and NT BUILD INSTRUCTIONS: <-- IMPORTANT! - -Read the "README-win32.txt" accompanying file. - -MESA BUILD INSTRUCTIONS: <-- IMPORTANT! - -Mesa 3.x and higher provide an implementation of GLUT in Mesa's -"MesaDemos" source code distribution. The official GLUT source -code distribution may or may not be more current than the version -of the GLUT library included with the MesaDemos distribution. - -Please note that even though the MesaDemos distribution contains -the source code for the GLUT library, the many GLUT source code -examples and demos in the GLUT source code distribution are not -part of Mesa. - -To ease building the GLUT source code distribution for Mesa, -users, see the note in the Glut.cf file in this directory. If -you uncomment the line saying "#define UseMesa 1" and then -set the "MesaDir" #define to the location of your Mesa source -code distribution, GLUT should build easily with Mesa. - -MAKEFILE GENERATION TO BUILD GLUT: <-- IMPORTANT! - -Use "mkmkfiles.sgi" to put Makefiles using the SGI Makefile conventions -in place. Use "mkmkfiles.imake" to put Makefiles generated from -Imakefiles in place. Run one of these two commands in this directory, -then do a "make". - -FREQUENTLY ASKED QUESTIONS ABOUT GLUT: - -See FAQ.glut - -CONTENTS OVERVIEW BY DIRECTORY: - - GL - GLUT interface header files - - lib - source code for GLUT libraries - - glut - GLUT library implementation - - mui - Tom Davis's GLUT-based micro-UI user interface library - - gle - Linas Vepstas's GLE Tubing & Extrusions library - - fglut - GLUT FORTRAN bindings (IRIX only) - glut.n32 - "N32" version of the GLUT library (IRIX only). - fglut.n32 - "N32" version of the GLUT library (IRIX only). - glut.n64 - 64-bit version of the GLUT library (IRIX only). - fglut.n64 - 64-bit version of the GLUT library (IRIX only). - mui.n32 - "N32" version of micro-UI library (IRIX only). - mui.n64 - 64-bit version of micro-UI library (IRIX only). - gle.n32 - "N32" version of GLE Tubing & Extrusions library (IRIX only). - gle.n64 - 64-bit version of GLE Tubing & Extrusions library (IRIX only). - - test - test programs - - glut - GLUT library tests - - mui - micro-UI library test - - progs - programs using GLUT - - examples - misc. GLUT examples - - redbook - examples from the OpenGL Programming Guide ported to GLUT - - advanced - GLUT examples demonstrating advanced OpenGL rendering - techniques. The programs are largely based on the SIGGRAPH '96 - course taught by David Blythe and Tom McReynolds. - - contrib - contributed GLUT examples - - demos - more involved OpenGL demos using GLUT - - fortran - GLUT FORTRAN examples - - glc - An example of using OpenGL's Character Rendering API - included in IRIX 6.2 and beyond. - - inventor - Two GLUT-based Open Inventor examples. - - mesademos - Ports to GLUT of programs developed by Brian Paul - that are distributed with Mesa. - - texfont - Tools and demos for using texture mapped fonts. - - tiff - Examples of using Sam Leffler's libtiff library for - reading, display, and writing TIFF image files. - - ada - Examples using the GLUT ADA binding. - -DOCUMENTATION: - -See the other README files in this directory. There is a complete -specification for GLUT API version 3 in PostScript available by -anonymous ftp accompanying this distribution. GLUT includes a full set -of nroff man pages for the GLUT API version 3. nroff man pages for -GLE are also included. - -ACCOMPANYING DATA FILES: - -Another separate GLUT data distribution contains a "data" subdirectory -containing large data files used by some of the examples in the -"progs/advanced" subdirectory. See the file "progs/advanced/README" -for more details. - -GLUT MAILING LIST: - -To subscribe to the GLUT mailing list, send an electronic mail message -with the word "subscribe" in the first line of the message to -glut-request@perp.com Messages intended for the GLUT mailing list can -be sent to glut@prep.com - -A SHAMELESS BUT HOPEFULLY HELPFUL PLUG: - -I've written a book titled "Programming OpenGL for the X Window System" -(ISBN: 0-201-48359-9) published by Addison-Wesley. It includes both a -complete tutorial and documentation for GLUT, as well as a full -explanation of using OpenGL with the X Window System's Xlib and -Xt/Motif interfaces. If you use GLUT, I believe you'll find this -book very informative. See: - - http://reality.sgi.com/mjk/OpenGLforX.html - -BUG REPORTING: - -Send bug reports by electronic mail to mjk@nvidia.com (I now work -for NVIDIA Corporation, not Silicon Graphics). - -Questions of a general interest about GLUT will be answered on the -comp.graphics.api.opengl newsgroup. - -ACKNOWLEDGEMENTS: - -Much thanks to OpenGL engineers at DEC, IBM, Microsoft, SGI, Sun, and -TGS. Of particular mention are Brian Paul from the University of -Wisconsin, Nate Robins at the Univeristy of Utah, and Craig Groeschel -of Metro Link Inc. for helping me ensure the portability of this code -to non-SGI graphics platforms. Also thank you to GLUT users who -supplied me with feedback and bug fixes. - -Nate Robin's effort to combine his Win32 GLUT with GLUT 3.5 were most -excellent. Tom Davis contributed the micro-UI library. GLUT 3.5's -testing on PCs was greatly aided by Petri Nordlund, Brian Buchner, -Leath Muller, Stephen Speicher, and I've probably missed others. Henk -Kok is responsible for the several way cool demos in GLUT 3.5. Thanks -for your help! - -- Mark Kilgard - mjk@nvidia.com diff --git a/lib/glut-3.7.6/README-win32.txt b/lib/glut-3.7.6/README-win32.txt deleted file mode 100644 index 67c8d413e020e36bdf2811b14983b938c72cc2fc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/README-win32.txt +++ /dev/null @@ -1,613 +0,0 @@ - - - GLUT for Win32 README - --------------------- - - -VERSION/INFO: - - This is GLUT for Win32 version 3.7.6 as of Nov 8th 2001. - See the COPYRIGHT section for distribution and copyright notices. - Send all bug reports and questions for this version of GLUT to - Nate Robins [nate@pobox.com]. - - For more information about GLUT for Win32, see the web page: - www.pobox.com/~nate/glut.html or subscribe to the GLUT for Win32 - mailing list by sending e-mail to majordomo@perp.com with - "subscribe glut" in the body of the message. - - For general information about GLUT, see the GLUT web page: - http://reality.sgi.com/opengl/glut3/glut3.html and be sure to - check the GLUT FAQ first for any questions that you may have: - http://reality.sgi.com/opengl/glut3/glut-faq.html - - -COMPILING/INSTALLATION: - - o Precompiled versions of the DLL and import library can be - found on the GLUT for Win32 web page mentioned above. - - o Microsoft Developer Studio 6 workspace and project files have - been included in the source code distribution. - - To build the glut dll: - First, open Microsoft Developer Studio. - Then, select File -> Open Workspace and find the glut.dsw file - in the file dialog and double-click on it. - Finally, select Build -> Build glut32.dll. - When the build is finished, it will copy: - glut32.dll to %WinDir%\System, - glut32.lib to $(MSDevDir)\..\..\VC98\lib, and - glut.h to $(MSDevDir)\..\..\VC98\include\GL. - - Additional workspace files have been included in the progs, test - and lib directories to build the progs, tests and libs respectively. - - -BORLAND NOTES: - - From what I understand, Borland supplies a utility that - converts Microsoft Visual C++ .libs into Borland compatible - files. Therefore, the best method for Borland users is - probably to get the precompiled versions of the library and - convert the library. To create an import library for Borland - from the DLLs, use the following command (from a command prompt): - IMPLIB glut32.lib glut32.dll - If IMPLIB crashes when called this way, try - IMPLIB glut32.lib glut32.def - using the glut32.def file in this distribution. - - -FORTRAN NOTES: - - Bill Mitchell [william.mitchell@nist.gov] has put considerable - effort into getting GLUT to work with different compilers for - Fortran 90. He indicates that you should copy the f90glut.h - file to your $(MSDevDir)\..\..\VC98\include\GL directory. - Then, just build GLUT as usual. The Fortran 90 interface, f90gl, - can be obtained at http://math.nist.gov/f90gl and contains - installation instructions and usage examples. - - -MISC NOTES: - - o Overlay support is not implemented, nor are there any plans to - implement it in the near future. - - o To customize the windows icon, you can use the resource name - GLUT_ICON. For example, create an icon named "glut.ico", and - create a file called glut.rc that contains the following: - GLUT_ICON ICON glut.ico - then compile the glut.rc file with the following: - rc /r glut - and link the resulting glut.res file into your executable - (just like you would an object file). - Alternatively, you can simply add the glut.rc file to your - project if you are using Microsoft Developer Studio. - - -IMPLEMENTATION DEPENDENT DIFFERENCES: - - There are a few differences between the Win32 version of GLUT - and the X11 version of GLUT. Those are outlined here. Note - that MOST of these differences are allowed by the GLUT - specification. Bugs and unsupported features are outlined in - the UNSUPPORTED/BUGS section. - - o glutInit: - The following command line options have no meaning (and are - ignored) in GLUT for Win32: - -display, -indirect, -direct, -sync. - - o glutInitWindowPosition, glutPositionWindow: - Win32 has two different coordinate systems for windows. - One is in terms of client space and the other is the whole - window space (including the decorations). If you - glutPositionWindow(0, 0), GLUT for Win32 will place the - window CLIENT area at 0, 0. This will cause the window - decorations (title bar and left edge) to be OFF-SCREEN, but - it gives the user the most flexibility in positioning. - HOWEVER, if the user specifies glutInitWindowPosition(0, 0), - the window is placed relative to window space at 0, 0. - This will cause the window to be opened in the upper left - corner with all the decorations showing. This behaviour is - acceptable under the current GLUT specification. - - o glutSetIconTitle, glutSetWindowTitle: - There is no separation between Icon title and Window title - in Win32. Therefore, setting an icon title in Win32 has - no effect. - - o glutSetCursor: - As indicated in the GLUT specification, cursors may be - different on different platforms. This is the case in GLUT - for Win32. For the most part, the cursors will match the - meaning, but not necessarily the shape. Notable exceptions - are the GLUT_CURSOR_INFO & GLUT_CURSOR_SPRAY which use the - crosshair cursor and the GLUT_CURSOR_CYCLE which uses the - 'no' or 'destroy' cursor in Win32. - - o glutVisibilityFunc: - Win32 seems to be unable to determine if a window is fully - obscured. Therefore, the visibility of a GLUT window is - only reflected by its Iconic, Hidden or Shown state. That - is, even if a window is fully obscured, in GLUT for Win32, - it is still "visible". - - o glutEntryFunc: - Window Focus is handled differently in Win32 and X. - Specifically, the "window manager" in Win32 uses a "click to - focus" policy. That is, in order for a window to receive - focus, a mouse button must be clicked in it. Likewise, in - order for a window to loose focus, a mouse button must be - clicked outside the window (or in another window). - Therefore, the Enter and Leave notification provided by GLUT - may behave differently in the Win32 and in X11 versions. - There is a viable workaround for this. A program called - "Tweak UI" is provided by Microsoft which can be used to - change the focus policy in Win32 to "focus follows mouse". - It is available from the Microsoft Web Pages: - http://www.microsoft.com/windows/software/PowerToy.htm - - o glutCopyColormap: - GLUT for Win32 always copies the colormap. There is never - any sharing of colormaps. This is probably okay, since - Win32 merges the logical palette and the physical palette - anyway, so even if there are two windows with totally - different colors in their colormaps, Win32 will find a - (hopefully) good match between them. - - o glutIdleFunc + menus: - The glut idle function will NOT be called when a menu is - active. This causes all animation to stop when a menu is - active (in general, this is probably okay). Timer - functions will still fire, however. If the timer callback - draws into the rendering context, the drawing will not show - up until after the menu has finished, though. - - -UNSUPPORTED/BUGS: - - o glutAttachMenu: - Win32 only likes to work with left and right mouse buttons. - Especially so with popup menus. Therefore, when attaching - the menu to the middle mouse button, the LEFT mouse button - must be used to select from the menu. - - o glutSpaceball*, glutButtonBox*, glutTablet*, glutDials*: - None of the special input devices are supported at this - time. - - o When resizing or moving a GLUT for Win32 window, no updating - is performed. This causes the window to leave "tracks" on - the screen when getting bigger or when previously obscured - parts are being revealed. I put in a bit of a kludgy - workaround for those that absolutely can't have the weird - lines. The reshape callback is called multiple times for - reshapes. Therefore, in the reshape callback, some drawing - can be done. It should probably be limited to a color buffer - clear. - - o The video resizing capabilities of GLUT 3.3+ for X11 is - currently unimplemented (this is probably ok, since it - really isn't part of the spec until 4.0). I doubt that - this will ever be part of GLUT for Win32, since there is no - hardware to support it. A hack could simply change the - resolution of the desktop. - - -CHANGES/FIXES: - - (Nov 8, '01) - x Released 3.7.6 - - (Nov 8, '01) - x Changed fullscreen mode from TOPMOST back to simply TOP, since - (it turns out) many people use windows atop a GLUT window. - - (Nov 8, '01) - x Added code to prevent CPU spiking when no idle function is - registered. Otherwise, if an idle function is registered, spike - CPU so that the idle function gets all the attention it needs and - if this is a problem on the program side, the user can stick a - sleep() in their idle function. I believe that this strikes the - best balance betweeen GLUT being fast, and also being "nice" to - other processes. Thanks to James Wright for reporting this bug. - - (Nov 8, '01) - x Fixed bug in motion callback handler which wasn't setting the - current window, so multiple window apps (e.g., any GLUI app) - wouldn't get the callback correctly. - - (Oct 4, '01) - x Fixed bug in glutEnterGameMode() that caused new windows to not - be in "fullscreen" mode, so they got window decorations. - - (Oct 4, '01) - x Fixed bug in glutEnterGameMode() that caused new windows to not - be in "fullscreen" mode, so they got window decorations. - - (Oct 3, '01) - x Fixed bug in getVisualInfoFromString(): visuals not reloaded on - display mode change. Reload visuals each time they are queried. - This fixes a problem with Win32 because the list of availabe Visuals - (Pixelformats) changes after a change in displaymode. The problem - occurs when switching to gamemode and back. Thanks to Michael - Wimmer for pointing this out & providing the fix. - - (Oct 3, '01) - x Fixed bug in XGetVisualInfo(): pixelformats enumerated incorrectly. - Passing 0 as a pixelformat index to DescribePixelFormat gives - unpredictible results (e.g., this fails on the Voodoo opengl32.dll - and always reports 0 as the last available pixelformat index). - Thanks to Michael Wimmer for pointing this out & providing the fix. - - (Oct 3, '01) - x Fixed bug in glXGetConfig(): pixelformats enumerated incorrectly. The - test was OpenGL support OR draw to window, but should be AND. Thanks - to Michael Wimmer for pointing this out & providing the fix. - - (Sep 28, '01) - x Fixed glutChangeToSubMenu()/glutChangeToMenuEntry() bug where if you - went back and forth between a submenu and a plain entry, the submenu - wouldn't be updated properly. - - (Sep 28, '01) - x glutSetIconTitle() is now a nop. - - (Sep 28, '01) - x glutFullScreen() now sets the window as TOPMOST, therefore, the - window will always be on top (this essentially disables alt-tabbing). - - (Sep 28, '01) - x The key repeat ignore flag is now honored correctly. - - (Sep 28, '01) - x Key presses are now reported more accurately and fully, in - particular, modified up events (i.e., SHIFT-2) are now reported - correctly. - - (Sep 28, '01) - x Subwindows nested arbitrarily deep get their keyboard callbacks - correctly now. - - (Sep 28, '01) - x Major rewrite of the window procedure code to clean it up and make - way for other bug fixes. - - (Sep 23, '01) - x Fixed noof example program to use RAND_MAX instead of assumed - max of 2147483647.0. (Now it looks _much_ better!) - - (Sep 22, '01) - x Fixed sunlight example program. globe.raw data file was corrupt, - added a new one. - - (Sep 22, '01) - x Fixed zcomposite example program to print message if overlay - support is not found (instead of crashing). - - (Jan 22, '01) - x Fixed malloc(0) bug in Win32 version of XGetVisualInfo. Thanks - to Kekoa Proudfoot for bringing this to my attention. - - (Dec 12, '00) - x Added data files for the advanced & advanced97 programs. - - (Dec 12, '00) - x Added Developer Studio 6 project and workspace files for pretty - much everything (the stuff left out was usually unix specific). - - (Dec 7, '00) - x Fixed several compilation problems & corrupt files. Thanks to - Alexander Stohr for bringing these to my attention and providing - detailed fixes. - - (Dec 6, '00) - x Fixed compiler support for lcc. Thanks to Gordon for bringing - this to my attention and debugging fixes. - - (Nov 8, '00) - x Fixed submenu problem (sometimes the menu callback was not - called for valid items). Thanks to Michael Keeley. - - (Oct 16, '00) - x Corrected corrupt duck.iv file. Thanks to Jon Willeke for finding - this problem. - - (Sept 27, '00) - x Fixed bug in processWorkList that could cause a hang. Thanks to - Bill Volz & Daniel Azuma. - - (Sept 26, '00) - x Added mui DLL project file (thanks to DMWeldy@ugsolutions.com). - - (Sept 9, '00) - x Fixed Delete key bug (crash when no keyboard callback was - registered, but a special key callback was). Thanks to - Kent Bowling (kent_bowling@hotmail.com) for finding this bug. - - (May 18, '00) - x Fixed subwindow keyboard callbacks. - - (May 22, '97) - o Menus don't work under Windows 95 - x Fixed! Added a unique identifier to each menu item, and a - search function to grab a menu item given the unique identifier. - - (May 21, '97) - o A few minor bug fixes here and there. - x Thanks to Bruce Silberman and Chris Vale for their help with - this. We now have a DLL! - - (Apr 25, '97) - o DLL version of the library is coming (as soon as I figure out - how to do it -- if you know, let me know). - x Thanks to Bruce Silberman and Chris Vale for their help with - this. We now have a DLL! - - (Apr 24, '97) - x Added returns to KEY_DOWN etc messages so that the F10 key - doesn't toggle the system menu anymore. - - (Apr 7, '97) - o Palette is incorrect for modes other than TrueColor. - x Fixed this by forcing a default palette in modes that aren't - Truecolor in order to 'simulate' it. The applications - program shouldn't have to do this IMHO, but I guess we - can't argue with Microsoft (well, we can, but what good - will it do?). - - (Apr 2, '97) - x Added glut.ide file for Borland users. - - (Apr 2, '97) - x Fixed a bug in the WM_QUERYNEWPALETTE message. Wasn't - checking for a null colormap, then de-ref'd it. Oops. - - (Mar 13, '97) - o glutTimerFunc: - Currently, GLUT for Win32 programs busy waits when there is - an outstanding timer event (i.e., there is no select() - call). I haven't found this to be a problem, but I plan to - fix it just because I can't bear the thought of a busy wait. - x Added a timer event and a wait in the main loop. This fixes - the CPU spike. - - (Mar 11, '97) - x Fixed subwindow visibility. The visibility callback of - subwindows wasn't being called, now it is. - - (Mar 11, '97) - o glutGetHDC, glutGetHWND: - In order to support additional dialog boxes, wgl fonts, and - a host of other Win32 dependent structures, two functions - have been added that operate on the current window in GLUT. - The first (glutGetHDC) returns a handle to the current - windows device context. The second (glutGetHWND) returns - handle to the current window. - x Took these out to preserve GLUT portability. - - (Mar 11, '97) - x Fixed the glutWarpPointer() coordinates. Were relative to - the screen, now relative to window (client area) origin - (which is what they're supposed to be). - - (Mar 11, '97) - o glutCreateMenu, glutIdleFunc: - Menu's are modal in Win32. That is, they don't allow any - messages to be processed while they are up. Therefore, if - an idle function exists, it will not be called while - processing a menu. - x Fixed! I've put in a timer function that fires every - millisecond while a menu is up. The timer function handles - idle and timer events only (which should be the only - functions that are firing when a menu is up anyway). - - (Mar 7 '97) - x Fixed minor bugs tracked down by the example programs. - - (Mar 6, '97) - x Merged 3.3 GLUT for X11 into 3.2 GLUT for Win32. New code - structure allows for EASY merging! - - o In Win32, the parent gets the right to set the cursor of - any of its children. Therefore, a child windows cursor - will 'blink' between its cursor and its parent. - x Fixed this by checking whether the cursor is in a child - window or not. - - (Feb 28 '97) - o On initial bringup apps are getting 2 display callbacks. - x Fixed by the Fev 28 re-write. - - o Some multiple window (not subwindow) functionality is messed up. - See the sphere.exe program. - x Fixed by the Feb 28 re-write. - - o GLUT for Win32 supports color index mode ONLY in a paletted - display mode (i.e., 256 or 16 color mode). - x Fixed this in the re-write. If you can get a color index - visual (pixel format) you can use color index mode. - - (Feb 28 '97) - o Quite a few bugs (and incompatibilities) were being caused - by the structure that I used in the previous port of GLUT. - Therefore I decided that it would be best to "get back to - the roots". I re-implemented most of glut trying to stick - with the structure layed out by Mark. The result is a much - more stable version that passes ALL (!) (except overlay) - the tests provided by Mark. In addition, this new - structure will allow future enhancements by Mark to be - integrated much more quickly into the Win32 version. Also, - I'm now ordering the bugs in reverse, so that the most - recently fixed appear at the top of the list. - - (9/8/96) - o Changed the glutGetModifiers code to produce an error if not - called in the core input callbacks. - - (9/11/96) - o If the alt key is pressed with more than one other modifier key - it acts as if it is stuck -- it stays selected until pressed - and released again. - x Fixed. - - (9/12/96) - o When a submenu is attached to a menu, sometimes a GPF occurs. - Fixed. Needed to set the submenu before referencing it's members. - - o Kenny: Also, one little problem, I attached the menu to the - right-button, but when the left-button is pressed I detach - it to give the right-button new meaning; if I pop-up the menu and I - don't want to select anything, like most users, I click off of the - menu to make it disappear. When I do this, I get a GLUT error and - the program terminates because I am altering the menu attachment - from within the button press while the menu is active. - x Fixed. Needed to finish the menu when the user presses the button, - not just when a button is released. - - o GLUT for Win32 emulates a middle mouse button by checking if - both mouse buttons are down. This causes a lot of problems with - the menu and other multiple mouse button things. - x Fixed. No more middle mouse button emulation. Perhaps it would - be a good idea to emulate the middle mouse button (if not present) - with a key? - - (9/15/96) - o Added code to accept a user defined icon. If no icon is provided, - a default icon is loaded. - - (9/19/96) - o Shane: Command line options seem to be screwed up. (9/13) - x Fixed. The geometry command line was broken, and so was the - gldebug command line. - - o Fixed a bug in the default glut reshape. It was looking for the - parent of the current window and GPF'ing if there wasn't a parent. - Put in a check for a parent, and if none is there, use the - child. - - o Idle function sucks up all processor cycles. (9/8/96) - x I don't know if this is avoidable. If you have a tight rendering - loop, it may be that the processor time is going to be sucked up - no matter what. You can add a sleep() to the end of your render - loop if you would like to yeild to other processes and you don't - care too much about the speed of your rendering loop. If you have - Hardware that supports OpenGL (like a 3Dpro card, or GLint card) - then this should be less of a problem, since it won't be rendering - in software. (9/11/96) - - o If a window is fully obscured by another window, the visibility - callback is NOT called. As far as I can tell, this is a limitation - of the Win32 api, but a workaround is being searched for. (9/8/96) - x Limitation of the Win32 API - - o Fixed the entry functions. They only work if the keyboard focus - changes. Therefore, in most Win32 systems, the mouse must be - pressed outside of the window to get a GLUT_LEFT message and - then pressed inside the window for a GLUT_ENTERED message. - - o Alt modifier key doesn't work with keyboard callback. (9/8/96) - x Probably okay, because the glut spec says that these keys can - be intercepted by the system (which the alt key is...) (9/11/96) - - (11/17/96) - o glutRemoveMenuItem() not working properly. - x Thanks to Gary (grc@maple.civeng.rutgers.edu) for the fix to - this one. - - o Timer functions are messed up. - x Thanks to Joseph Galbraith for the fix to this one. - - (12/9/96) - o One (minor) difference came up between the X version of glut - and the nt one which you should know about. It is not a new - problem, and it concerns co-ords returned to the pointer - callbacks. (glutMotionFunc, glutMouseFunc) - Under X, you get co-ords in the range 0 +/- 2^15, under NT - you get 0..2^16. This is only really a problem when moving - above or to the left of the window. - eg dragging one pixel ABOVE the window will give :- - under x11 : y = -1 - under nt : y = 2^16 -1 - x Put in fix provided by Shane Clauson. - - (12/17/96) - o Idle functions not working properly for multiple windows. - x Fixed this by posting an idle message to every window in the - window list when idle. - - (12/18/96) - o glutSetCursor() was misbehaving (lthomas@cco.caltech.edu). - x Win32 requires that the hCursor member of the window class - be set to NULL when the class is registered or whenever the - mouse is moved, the original cursor is replaced (go - figure!). Now sets the cursor whenever a WM_MOUSEMOVE message - is received, because the WM_SETCURSOR event resets the cursor - even when in the decoration area. - - o Geometry is not being handled quite right. The numbers don't - take into account the window decorations. That is, if I say - make a window 100x100, then the WHOLE window (not just the - client area) is 100x100. Therefore, the client (opengl) area - is smaller than 100x100. (9/8/96) - x Fixed. Added code to subtract the decoration size on glutGet() - and add the decoration size on glutReshapeWindow(). - - o Multiple glutPostRedisplay() calls are NOT being combined. - To get round the "coalesce" problem on glutPostRedisplay, - the easiest solution is to roll-your-own coalesce by - keeping a global "dirty" flag in the app (eg replace all - calls to glutPostRedisplay with image_dirty=TRUE;), and to - handle image_dirty with a single glutPostRedisplay in the - idle callback when required. (erk - but increases - performance for my particular app (a rendering engine on - the end of a pipleine with a stream of graphics updates) by - a couple of orders of magnitude ! ) (9/8/96) - x Added code to coalesce redisplays. Every idle cycle, a - check is made to see which windows need redisplay, if they - need it, a redisplay is posted. The glutPostRedisplay() - call is just a stub that sets a flag. - - -THANKS: - - Special thanks to the following people for extensive testing, - suggestions, fixes and help: - - Alexander Stohr - Shane Clauson - Kenny Hoff - Richard Readings - Paul McQuesten - Philip Winston - JaeWoo Ahn - Joseph Galbraith - Paula Higgins - Sam Fortin - Chris Vale - Bill Mitchell - - and of course, the original author of GLUT: - Mark Kilgard. - - and many others... - - -COPYRIGHT: - -The OpenGL Utility Toolkit distribution for Win32 (Windows NT & -Windows 95) contains source code modified from the original source -code for GLUT version 3.3 which was developed by Mark J. Kilgard. The -original source code for GLUT is Copyright 1997 by Mark J. Kilgard. -GLUT for Win32 is Copyright 1997 by Nate Robins and is not in the -public domain, but it is freely distributable without licensing fees. -It is provided without guarantee or warrantee expressed or implied. -It was ported with the permission of Mark J. Kilgard by Nate Robins. - -THIS SOURCE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -OpenGL (R) is a registered trademark of Silicon Graphics, Inc. diff --git a/lib/glut-3.7.6/README.ada b/lib/glut-3.7.6/README.ada deleted file mode 100644 index 308495c9ad264aa4b6ad28f2c30c4603d6db9c18..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/README.ada +++ /dev/null @@ -1,42 +0,0 @@ - -GLUT 3.4 was the first release of GLUT to support an Ada language -binding for SGI's Ada run-time and development environment. (With a -bit of work, GLUT could probably be easily be adapted to other Ada -development environments, assuming the environment already has an -OpenGL binding.) - -To use the SGI Ada binding, please make sure that the following GNAT -(SGI's Ada compiler) subsystems are installed on your system: - - Ada Execution-only Environment (eoe) - ------------------------------------- - gnat_eoe.sw.lib - - Ada Development Option (dev) - ----------------------------- - gnat_dev.bindings.GL - gnat_dev.bindings.std - gnat_dev.lib.src - gnat_dev.lib.obj - gnat_dev.sw.gnat - -The GLUT Ada binding was developed and tested with the IRIX 5.3 and 6.2 -gnat_dev and gnat_eoe images (v3.07, built 960827). - -Some fairly simple GLUT examples written in Ada can be found in the -progs/ada subdirectory. GLUT 3.6 expanded the number of Ada example -programs included in the GLUT source code distribution. GLUT's actual -Ada binding is found in the adainclude/GL subdirectory. - -To build the Ada binding and example programs, first build GLUT -normally, then: - - cd adainclude/GL - make glut.o - cd ../../progs/ada - make - -Good luck! - -- Mark Kilgard - November 12, 1997 diff --git a/lib/glut-3.7.6/README.fortran b/lib/glut-3.7.6/README.fortran deleted file mode 100644 index e9f9771bd8f5f678d11acf6ae28f5a688f3da4c3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/README.fortran +++ /dev/null @@ -1,190 +0,0 @@ -GLUT Fortran users, - -BUILD INSTRUCTIONS -=================== - -To build the GLUT Fortran API, do the following: - - 1) Make sure you are running IRIX 5.3, 6.1, or 6.2 or higher on - a Silicon Graphics workstation. - - >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - If you are not on an SGI workstation, I suggest you try out - the f90gl, a public domain implementation the official Fortran - 90 bindings for OpenGL. See the web site at: - - http://math.nist.gov/f90gl/ - - f90gl implements a Fortran 90 interface for OpenGL 1.1, GLU 1.2, - GLUT 3.7, and several extensions. f90gl supports both Unix - workstations, Linux PCs, and Windows 95/NT PCs. - - William Mitchell deserves special credit for developing the - f90gl implementation and pushing for a standard OpenGL - Fortran 90 binding. - - Also, note that GLUT 3.7 has a new "friend" interface for use - by f90gl to ensure future interoperability between f90gl - and future GLUT revisions. - <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - 2) Make sure you have Fortran compilers and OpenGL Fortran - libraries installed (make sure you have the right support - installed for the "object style" you wish to build). - - The following Fortran subsystems are particularly important - to have installed: - - ftn77_dev.sw.util -- utiles for building Fortran to C bindings - gl_dev.sw.fortran -- OpenGL Fortran binding libraries - - 3) Run "mkmkfiles.sgi" in this directory. - - 4) Make sure you have built the "lib/glut" and "lib/fglut" - directories: - - (cd lib/glut; make) - (cd lib/fglut; make) - - 5) Change to one of the GLUT Fortran library directories, - depending on what "object style" you wish to build: - - O32 (old 32-bit ABI) - "cd lib/fglut" - N64 (new 64-bit ABI) - "cd lib/fglut.n64" (IRIX 6.1 & 6.2 only) - N32 (new 32-bit ABI) - "cd lib/fglut.n32" (IRIX 6.2 only) - - (If you are building a given "object style", make sure you - build the accompanying GLUT library implementation. See - README.irix6) - - 6) Execute "make" in the directory. - -NOTES -====== - -All GLUT functionality is available through the GLUT Fortran API. - -A number of example GLUT Fortran examples are built in the directory as -examples of how to write GLUT Fortran programs. - -There are a number of caveats to using the GLUT Fortran API: - - o The GLUT Fortran API is not built by default. - - See the build instructions above. You will need the IRIX Fortran - development option installed. - - o The implementation of the GLUT Fortran API is probably only useful - to IRIX users because the generation of Fortran-to-C wrappers is - inherently dependent on vendor-dependent calling convention - dependencies. - - o The IRIX GLUT Fortran API is implemented as a set of wrappers to - to the GLUT C implementation. As such, there is a very slight - overhead to calling OpenGL routine through the GLUT Fortran - binding (this applies to the OpenGL Fortran wrapper routines as - well). - - o The ARB's official OpenGL Fortran API prefixes every routine and - constant with the letter F. The justification was to avoid name - space collisions with the C names. Nearly all modern Fortran - compilers avoid these name space clashes via other means (underbar - suffixing of Fortran routines is used by most Unix Fortran - compilers). - - The GLUT Fortran API does _not_ use such prefixing conventions - because of the documentation and coding confusion introduced by - such prefixes. Bending over backwards to support anachronistic - compliers does not justify this confusion. - - While the official OpenGL Fortran API, prefixes both routine and - constant names, there is no technical justification for prefixing - constant names. In practice, it creates a reasonable amount of - coding and documentation confusion (the confusion is heightened by - Fortran's default implicit variable initialization so you don't - realize the lack of a constant prefix until run-time) and pushes - names one character towards identifier limits. - - The GLUT distribution supplies its own version of "GL/fgl.h" and - "GL/fglu.h" which does not F-prefix constants. GLUT users are - encouraged to not use the F-prefixed constants. (The GLUT - supplied "GL/fgl.h" also works around problems discussed in the - next bullet.) - - Perhaps the OpenGL ARB will reconsider the F-prefix or (as an - unfortunate compromise) support both F prefixed and non F prefixed - constant names. - - o A OpenGL Fortran API implementation was released with IRIX 5.3 - (it was not previously available in IRIX). While the Fortran - wrappers work, there are a number of difficulties with using the - IRIX 5.3 OpenGL Fortran bindings: - - + Make sure you have the "Fortran 77 OpenGL Graphic Library" - subsystem installed. Its name is: ftn_dev.sw.opengl - - + The OpenGL Fortran man pages incorrectly document a number of - calls taking REAL*4 (real) parameters when they in fact - require REAL*8 (double precision) parameters. An example is - fglviewport. Any OpenGL (or GLU) routine that takes double's - as parameters in the C API, takes REAL*8's in the Fortran - API. Be very careful to use the dble intrinsic whenever - passing non-REAL*8 values to such routines! - - + The OpenGL Fortran man pages also do not add the F-prefixes - to constants discussed in the man pages. Because GLUT - supplies a "GL/fgl.h" without F-prefixes, this should be a - "good thing." - - + The "GL/fgl.h" header file describing the OpenGL Fortran API - contains identifiers over 32 characters long. While the MIPS - Fortran compiler should treat this as a soft warning and - truncate the identifiers to 32 characters, the compiler - generates a fatal error. For this reason, the "GL/fgl.h" in - this distribution has truncated by hand the "GL/fgl.h" - identifiers over 32 characters to 32 characters. - - o IRIX 6.2's OpenGL Fortran binding was quite bungled and is - basically unusable. - - A workaround for this problem is to compile your OpenGL Fortran - programs with the compiler option "-Wl,-ignore_unresolved". This - tells the compiler to ignore unresolved symbols. - - Then, when you run the OpenGL Fortran binaries, tell the run-time - linker (rld) to ignore unresolved symbols like this: - - setenv _RLD_ARGS -ignore_unresolved - - SGI patches 1892 (IRIX 6.3 and 6.4 OpenGL Fortran bindings) and - 2360 (IRIX 6.2 OpenGL Fortran bindings) should fix problems in the - OpenGL Fortran binding library. - - o Because GLUT fonts are compiled into programs and programs - should only have the fonts compiled into them that they use, - GLUT font names like GLUT_BITMAP_TIMES_ROMAN_24 are really - symbols so the linker should only pull in used fonts. - Unfortunately, if a data symbol is declared EXTERNAL, the - IRIX Fortran compiler pulls in the symbol whether the symbol - is used or not. For this reason, "GL/fglut.h" does not - explictly declare EXTERNAL the GLUT font symbols. GLUT - Fortran programmers should explicitly declare EXTERNAL - the GLUT fonts they use. - - o Neither the MicroUI (mui) or Tubing and Extrusion library (gle) - have Fortran bindings. - -INSTALLATION -============= - -If you want to install the resulting archives into the right system -library directories, do the following: - - FOR N32: cp lib/fglut.n32/libfglut.a /usr/lib32 - - FOR N64: cp lib/fglut.n64/libfglut.a /usr/lib64 - -Also, make sure to install the GLUT library implementation versions for -the given object style too. - -- Mark Kilgard diff --git a/lib/glut-3.7.6/README.glut2 b/lib/glut-3.7.6/README.glut2 deleted file mode 100644 index 11d0ce2f2bad4af9630ac6b49fa711160e931558..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/README.glut2 +++ /dev/null @@ -1,84 +0,0 @@ - -CHANGES for GLUT API version 2 -------------------------------- - -GLUT API version 2 should be fully compatible with the GLUT API -version 1. - -Here are the GLUT API version 2 additions in more detail: - - GLUT_MULTISAMPLE - a display mode bit mask for requesting - multi-sampling (hw anti-aliasing) available for Reality Engine - class graphics hardware (IRIX 5.3 has multi-sampling GLX - extension). - - GLUT_STEREO - a display mode bit mask for requesting - a stereo (quad buffering) OpenGL visual. - - glutGet(GLUT_WINDOW_NUM_SAMPLES) - returns number of - samples for multisampling for the window. - - glutGet(GLUT_WINDOW_STEREO) - boolean for it window supports - stereo. - - glutGet(GLUT_ELAPSED_TIME) - an OS-portable way to - get the elapsed time in milliseconds since glutInit - - glutDeviceGet(GLUT_HAS_KEYBOARD) - if keyboard supported. - - glutDeviceGet(GLUT_HAS_MOUSE) - if mouse supported. - - glutDeviceGet(GLUT_HAS_SPACEBALL) - if spaceball supported. - - glutDeviceGet(GLUT_HAS_DIAL_AND_BUTTON_BOX) - if dial and - button box supported. - - glutDeviceGet(GLUT_HAS_TABLET) - if tablet supported. - - glutDeviceGet(GLUT_NUM_MOUSE_BUTTONS) - number of mouse - buttons supported. - - glutDeviceGet(GLUT_NUM_SPACEBALL_BUTTONS) - number of - spaceball buttons supported. - - glutDeviceGet(GLUT_NUM_BUTTON_BOX_BUTTONS) - number of - button box buttons supported. - - glutDeviceGet(GLUT_NUM_DIALS) - number of dials supported. - - glutDeviceGet(GLUT_NUM_TABLET_BUTTONS) - number of table - buttons supported. - - glutSpecialFunc - register callback for keyboard function - and directional keys. - - glutSpaceballMotionFunc - register callback for spaceball - motion. - - glutSpaceballRotateFunc - register callback for spaceball - rotations. - - glutSpaceballButtonFunc - register callback for spaceball - button events. - - glutButtonBoxFunc - register callback for button box button - events. - - glutDialsFunc - register callback for dial motion. - - glutTabletMotionFunc - register callback for tablet motion. - - glutTabletButtonFunc - register callback for tablet button - events. - - glutExtensionSupported - report if a given OpenGL extension - is supported. - -Also there are a handful of minor bug fixes (of course). - -The stereo and multisampling stuff is probably (for now) interesting -mainly to Reality Engine graphics users. The new device support uses -the X Input extension. It works with SGI versions of the devices. I'm -investigating how portable the current code is for other vendor's -advertising of their similar X Input devices. - diff --git a/lib/glut-3.7.6/README.glut3 b/lib/glut-3.7.6/README.glut3 deleted file mode 100644 index c4b17a67593e74a17e99c3c611d4c61c6f0e3681..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/README.glut3 +++ /dev/null @@ -1,114 +0,0 @@ - -CHANGES for GLUT API version 3 -------------------------------- - -GLUT API version 3 should be (almost) fully compatible with the -GLUT API version 2. See the GLUT 3 specification for full details. - -Please be aware of two obscure reasons that programs that worked -under GLUT API version 2 may need slight modification for GLUT 3. - - 1) You are now _required_ to have a display callback registered - for any GLUT window displayed to the screen. Otherwise a - fatal error is generated. It would be a bug in your program - otherwise! In conjunction with this, you can no longer - call glutDisplayFunc(NULL) to unregister a display callback. - - 2) It is a fatal error now to modify a GLUT pop-up menu while - menus are in use. There were too many semantic problems with - changing menus that may be currently displayed. To determine - if menus are in use, you can use the "menu use" callback registered - with glutMenuStatusFunc - -Here are the GLUT API version 3 additions in more detail: - - void glutSetCursor(int cursor) - int glutGet(GLUT_WINDOW_CURSOR) - - Provides a way to set (and get) the window's cursor to one - of several enumerated cursor shapes including "none", - "stop-watch", "arrow", "crosshair", "pull left/up/down/etc.", - or "inherit". - - void glutFullScreen(void) - - Attempts to make the window as large as the window system - permits (ie, the screen size). Borders will be automatically - disabled if possible. - - void glutMenuStatus(void (*)(int status, int x, int y)) - - The existing glutMenuState routine's callback did not - provide the X & Y location when the menu state changed - which made it impossible to correctly implement locate - highlight in conjunction with menus. glutMenuStatus - returns the location. - - GLUT_BITMAP_HELVETICA_10 - GLUT_BITMAP_HELVETICA_12 - GLUT_BITMAP_HELVETICA_18 - - New bitmap fonts in a nicer font at nicer sizes. - - int glutStrokeLength(void *, char *string) - int glutBitmapLength(void *, char *string) - - Given a font handle and a string, returns the length in - modelview units or pixels respectively for the string - if rendered with the font. - - int glutCurrentModifiers(void) - - When called from within a keyboard, special keyboard, mouse - button, or mouse callback, returns a bitmask representing - the modifier keys active when the event generating the callback - occured. This will let you implement Alt+ combinations - and such. - - void glutEstablishOverlays(void) - void glutRemoveOverlays(void) - void glutOverlayDisplayFunc(void (*func)(void)) - void glutPostOverlayRedisplay(void) - void glutUseLayer(GLenum layer) - void glutLayerGet(GLenum type) - void glutShowOverlay(void) - void glutHideOverlay(void) - - This API provides a way to "add" an overlay to a GLUT window. - The overlay is like IRIS GL overlay support in that the overlay - completely overlaps the window. You setup the layer with - glutEstablishOverlay. You switch between the normal plane - and overlay using glutUseLayer. You can register an independent - callback for redisplaying the overlay, or use a unified display - callback for both layers. - - I believe this is a very simple overlay facility that will be - readily useful for OpenGL programs wanting access to overlay - planes. - - GLUT_LUMINANCE - - This is a new display mode that is like OpenGL's basic RGBA - color model, but has no Green or Blue components (and Alpha - is optional). The Red component represents single component - (or "luminance") data (between 0.0 and 1.0). The component - is integerized to between 0 and glutGet(GLUT_WINDOW_COLORMAP_SIZE)-1 - and looked up in a per-window color map. GLUT's glutSetColor, - glutGetColor, and glutCopyColormap work on a GLUT_LUMINANCE - window. The initial colormap of GLUT_LUMINANCE windows is - initialized to be a linear gray ramp. - - GLUT_LUMINANCE is very much like a color index window with - an RGBA rendering model. GLUT_LUMINANCE should be useful for - scientific visualization. - - Only some platforms will support GLUT_LUMINANCE. SGI's IMPACT - and InfiniteReality systems should provide GLUT_LUMINANCE - support, however while the GLUT version 3 API provides GLUT_LUMINANCE, - GLUT 3.0 does not implement GLUT_LUMINANCE support. - - Exact specifics of how GLUT_LUMINANCE operates are subject to - change. - -Also there are a handful of minor bug fixes (of course). - diff --git a/lib/glut-3.7.6/README.ibm-shlib b/lib/glut-3.7.6/README.ibm-shlib deleted file mode 100644 index f1c301d8f0d51971d8b6a7cf20bbc8eed91525ee..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/README.ibm-shlib +++ /dev/null @@ -1,79 +0,0 @@ -The information below is probably no longer accurate. Please see -Question 44 in the "FAQ.glut" file for instructions for building -shared libraries today. - -- Mark Kilgard - November 25, 1998 - --------------- - -IBM users wanting a GLUT shared library, - -I can't verify or maintain this information, but it could be useful to -someone on an IBM wanting to make shared libraries. I pass this -information on in case it is helpful. - -In theory, the better approach would be to use the imake rules for -building shared libraries. - -(I'm not too interestested in maitaining a shared library for GLUT since -the GLUT code is fairly small and portably maintaining shared libraries -for the wide variety of machines GLUT can run on would be a royal pain.) - -- Mark - -From gaitat@innerdoor.austin.ibm.com Thu Jul 20 08:57:58 1995 -Message-Id: <9507201557.AA20345@innerdoor.austin.ibm.com> -To: mjk@sgi.sgi.com -Subject: shared libglut.a -Date: Thu, 20 Jul 95 10:57:49 -0600 -From: Athanasios Gaitatzes - - -For the IBM platform I have made some changes to Glut.cf and lib/glut/Imakefile -in order to get a shared libglut.a so that the executables for the tests -and examples are not very big. -Here are the changes: ---------------------- -diff Glut.cf* -18d15 -< EXTRA_INCLUDES = -DAIXV3 -I$(TOP)/../include -I$(TOP) -21,22d17 -< ARFLAGS = crlo -< RANLIB = true -24d18 -< OPENGL = $(TOP)/../lib/libMesaGL.a -26d19 -< GLU = $(TOP)/../lib/libMesaGLU.a ---------------------- -diff lib/glut/Imakefile* -31,40c31 -< all:: libglut.a -< -< libglut.a: $(OBJS) -< rm -f libglut.a libglut.exp shrglut.o -< echo "#! libglut.a" > libglut.exp -< echo "noentry" >> libglut.exp -< create_exp $(OBJS) >> libglut.exp -< $(CC) -bM:SRE -o shrglut.o $(OBJS) -L../../../lib -lMesaGL -lMesaGLU --lX -mu -lXi -lXext -lX11 -lm -lc -bE:libglut.exp -enoentry -< ar $(ARFLAGS) $@ shrglut.o -< $(RANLIB) $@ ---- -> NormalLibraryTarget(glut,$(OBJS)) - -and you also need a create_exp script somewhere in your path: -#!/bin/csh -/usr/ucb/nm $* | awk '/ [BD] /{print $3}' | sort | uniq - -Athanasios G. Gaitatzes (Saki) -internet: gaitat@vnet.ibm.com | http://www.cs.purdue.edu/homes/mgg/saki.html -internal: gaitat@austin.ibm.com | http://w3.austin.ibm.com/~gaitat -These statements and/or opinions are not necessarily those of IBM - - __ () , - / ) /`-'| _/_ _/_ - /--/ / / __. o / __. / __. _ _ -/ ( o /__-<_(_/|_<_<__(_/|_<__/ |_ -(Please note that I no longer work at Silicon Graphics. Try contacting -Peter Daifuku | The tablet puck buttons. - | | - | <2> <4> | - | | - | <3> | - \ / - +-----+ - - Device manufacturer: Hitachi - -SGI Virtual Pointer: - - Device type: VIRTUAL_POINTER - Device name: virtual_pointer - Classes: 2 - ButtonClass - Number buttons: 5 - ValuatorClass - Device mode: Absolute - Number axes: 2 - Axis 1 - Minimum value: 0 - Maximum value: 1280 - Resolution: 200 - Axis 2 - Minimum value: 0 - Maximum value: 1024 - Resolution: 200 - Physical layout: n/a - Device manufacturer: n/a - Notes: The virtual_pointer allows multiple physical devices to "push" - a single logical pointer. The virtual pointer is an SGI feature. - -SGI Mouse: - - Device type: MOUSE - Device name: mouse - Classes: 2 - ButtonClass - Number buttons: 3 - ValuatorClass - Device mode: Absolute - Number axes: 2 - Axis 1 - Minimum value: 0 - Maximum value: 65000 - Resolution: 200 - Axis 2 - Minimum value: 0 - Maximum value: 65000 - Resolution: 200 - Physical layout: - - +-------------+ - | | - | [1] [2] [3] | <--- Buttons on mouse w/ button numbers. - | | - | | - | | - | | - +-------------+ - - Axis 1 is for mouse motion in X axis (left & right) - Axis 2 is for mouse motion in Y axis (top & bottom) - - Device manufacturer: SGI - - diff --git a/lib/glut-3.7.6/adainclude/GL/glut.adb b/lib/glut-3.7.6/adainclude/GL/glut.adb deleted file mode 100644 index 7ceb3457add6ad586296bca3a57b8a072499d032..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/adainclude/GL/glut.adb +++ /dev/null @@ -1,118 +0,0 @@ --- Generated from glut.h --- Date: Sun Apr 6 14:32:02 1997 --- --- Command line definitions: --- -D__ANSI_C__ -D_LANGUAGE_C -DGENERATING_ADA_BINDING -D__unix -D__sgi --- -D__mips -D__host_mips -D__EXTENSIONS__ -D__EDG -D__DSO__ -D__STDC__ --- -D_SYSTYPE_SVR4 -D_MODERN_C -D_MIPS_SZPTR=32 -D_MIPS_SZLONG=32 --- -D_MIPS_SZINT=32 -D_MIPS_SIM=_MIPS_SIM_ABI32 --- -D_MIPS_ISA=_MIPS_ISA_MIPS1 -D_MIPS_FPSET=16 -D_MIPSEB --- - -package body Glut is - - function glutCreateWindow (title : String) return Integer is - Result : Integer; - c_title : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (title); - begin - Result := glutCreateWindow (c_title); - Interfaces.C.Strings.Free (c_title); - return Result; - end glutCreateWindow; - - procedure glutInitDisplayString (name : String) is - c_name : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (name); - begin - glutInitDisplayString (c_name); - Interfaces.C.Strings.Free (c_name); - end glutInitDisplayString; - - procedure glutSetWindowTitle (title : String) is - c_title : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (title); - begin - glutSetWindowTitle (c_title); - Interfaces.C.Strings.Free (c_title); - end glutSetWindowTitle; - - procedure glutSetIconTitle (title : String) is - c_title : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (title); - begin - glutSetIconTitle (c_title); - Interfaces.C.Strings.Free (c_title); - end glutSetIconTitle; - - function glutBitmapLength (font : access Interfaces.C.Extensions.Void_Ptr; - str : String) return Integer is - Result : Integer; - c_str : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (str); - begin - Result := glutBitmapLength (font, c_str); - Interfaces.C.Strings.Free (c_str); - return Result; - end glutBitmapLength; - - function glutStrokeLength (font : access Interfaces.C.Extensions.Void_Ptr; - str : String) return Integer is - Result : Integer; - c_str : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (str); - begin - Result := glutStrokeLength (font, c_str); - Interfaces.C.Strings.Free (c_str); - return Result; - end glutStrokeLength; - - procedure glutAddMenuEntry (label : String; value : Integer) is - c_label : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (label); - begin - glutAddMenuEntry (c_label, value); - Interfaces.C.Strings.Free (c_label); - end glutAddMenuEntry; - - procedure glutAddSubMenu (label : String; submenu : Integer) is - c_label : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (label); - begin - glutAddSubMenu (c_label, submenu); - Interfaces.C.Strings.Free (c_label); - end glutAddSubMenu; - - procedure glutChangeToMenuEntry (item : Integer; - label : String; - value : Integer) is - c_label : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (label); - begin - glutChangeToMenuEntry (item, c_label, value); - Interfaces.C.Strings.Free (c_label); - end glutChangeToMenuEntry; - - procedure glutChangeToSubMenu (item : Integer; - label : String; - submenu : Integer) is - c_label : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (label); - begin - glutChangeToSubMenu (item, c_label, submenu); - Interfaces.C.Strings.Free (c_label); - end glutChangeToSubMenu; - - function glutExtensionSupported (name : String) return Integer is - Result : Integer; - c_name : Interfaces.C.Strings.Chars_Ptr := - Interfaces.C.Strings.New_String (name); - begin - Result := glutExtensionSupported (c_name); - Interfaces.C.Strings.Free (c_name); - return Result; - end glutExtensionSupported; - - -end Glut; - diff --git a/lib/glut-3.7.6/adainclude/GL/glut.ads b/lib/glut-3.7.6/adainclude/GL/glut.ads deleted file mode 100644 index ec296c0c2bbf0174a56ebfc27a20e5b7724fdbd2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/adainclude/GL/glut.ads +++ /dev/null @@ -1,920 +0,0 @@ --- Generated from glut.h --- Date: Sun Apr 6 14:32:02 1997 --- --- Command line definitions: --- -D__ANSI_C__ -D_LANGUAGE_C -DGENERATING_ADA_BINDING -D__unix -D__sgi --- -D__mips -D__host_mips -D__EXTENSIONS__ -D__EDG -D__DSO__ -D__STDC__ --- -D_SYSTYPE_SVR4 -D_MODERN_C -D_MIPS_SZPTR=32 -D_MIPS_SZLONG=32 --- -D_MIPS_SZINT=32 -D_MIPS_SIM=_MIPS_SIM_ABI32 --- -D_MIPS_ISA=_MIPS_ISA_MIPS1 -D_MIPS_FPSET=16 -D_MIPSEB --- - -with Interfaces.C; -with Interfaces.C.Extensions; -with Interfaces.C.Strings; -with GL; -package Glut is - - -- Copyright (c) Mark J. Kilgard, 1994, 1995, 1996. - -- This program is freely distributable without licensing fees and is - -- provided without guarantee or warrantee expressed or implied. This - -- program is -not- in the public domain. * - -- ** - -- GLUT API revision history: - -- - -- GLUT_API_VERSION is updated to reflect incompatible GLUT - -- API changes (interface changes, semantic changes, deletions, - -- or additions). - -- - -- GLUT_API_VERSION=1 First public release of GLUT. 11/29/94 - -- - -- GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling, - -- extension. Supports new input devices like tablet, dial and button - -- box, and Spaceball. Easy to query OpenGL extensions. - -- - -- GLUT_API_VERSION=3 glutMenuStatus added. - -- - -- * - - GLUT_API_VERSION : constant := 4; -- VERSION 4 API NOT FINALIZED - --- ** --- GLUT implementation revision history: --- --- GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT --- API revisions and implementation revisions (ie, bug fixes). --- --- GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of --- GLUT Xlib-based implementation. 11/29/94 --- --- GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of --- GLUT Xlib-based implementation providing GLUT version 2 --- interfaces. --- --- GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95 --- --- GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95 --- --- GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95 --- --- GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96 --- --- GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner --- and video resize. 1/3/97 --- * - - GLUT_XLIB_IMPLEMENTATION : constant := 7; - - -- Display mode bit masks. - - GLUT_RGB : constant := 0; - GLUT_RGBA : constant := 0; - GLUT_INDEX : constant := 1; - GLUT_SINGLE : constant := 0; - GLUT_DOUBLE : constant := 2; - GLUT_ACCUM : constant := 4; - GLUT_ALPHA : constant := 8; - GLUT_DEPTH : constant := 16; - GLUT_STENCIL : constant := 32; - GLUT_MULTISAMPLE : constant := 128; - GLUT_STEREO : constant := 256; - GLUT_LUMINANCE : constant := 512; - - -- Mouse buttons. - - GLUT_LEFT_BUTTON : constant := 0; - GLUT_MIDDLE_BUTTON : constant := 1; - GLUT_RIGHT_BUTTON : constant := 2; - - -- Mouse button callback state. - - GLUT_DOWN : constant := 0; - GLUT_UP : constant := 1; - - -- function keys - - GLUT_KEY_F1 : constant := 1; - GLUT_KEY_F2 : constant := 2; - GLUT_KEY_F3 : constant := 3; - GLUT_KEY_F4 : constant := 4; - GLUT_KEY_F5 : constant := 5; - GLUT_KEY_F6 : constant := 6; - GLUT_KEY_F7 : constant := 7; - GLUT_KEY_F8 : constant := 8; - GLUT_KEY_F9 : constant := 9; - GLUT_KEY_F10 : constant := 10; - GLUT_KEY_F11 : constant := 11; - GLUT_KEY_F12 : constant := 12; - - -- directional keys - - GLUT_KEY_LEFT : constant := 100; - GLUT_KEY_UP : constant := 101; - GLUT_KEY_RIGHT : constant := 102; - GLUT_KEY_DOWN : constant := 103; - GLUT_KEY_PAGE_UP : constant := 104; - GLUT_KEY_PAGE_DOWN : constant := 105; - GLUT_KEY_HOME : constant := 106; - GLUT_KEY_END : constant := 107; - GLUT_KEY_INSERT : constant := 108; - - -- Entry/exit callback state. - - GLUT_LEFT : constant := 0; - GLUT_ENTERED : constant := 1; - - -- Menu usage callback state. - - GLUT_MENU_NOT_IN_USE : constant := 0; - GLUT_MENU_IN_USE : constant := 1; - - -- Visibility callback state. - - GLUT_NOT_VISIBLE : constant := 0; - GLUT_VISIBLE : constant := 1; - - -- Window status callback state. - - GLUT_HIDDEN : constant := 0; - GLUT_FULLY_RETAINED : constant := 1; - GLUT_PARTIALLY_RETAINED : constant := 2; - GLUT_FULLY_COVERED : constant := 3; - - -- Color index component selection values. - - GLUT_RED : constant := 0; - GLUT_GREEN : constant := 1; - GLUT_BLUE : constant := 2; - - -- Layers for use. - - GLUT_NORMAL : constant := 0; - GLUT_OVERLAY : constant := 1; - - -- Stroke font opaque addresses (use constants instead in source code). - - glutStrokeRoman : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, glutStrokeRoman, "glutStrokeRoman", "glutStrokeRoman"); - - glutStrokeMonoRoman : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, - glutStrokeMonoRoman, - "glutStrokeMonoRoman", - "glutStrokeMonoRoman"); - - -- Stroke font constants (use these in GLUT program). - -- Bitmap font opaque addresses (use constants instead in source code). - - glutBitmap9By15 : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, glutBitmap9By15, "glutBitmap9By15", "glutBitmap9By15"); - - glutBitmap8By13 : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, glutBitmap8By13, "glutBitmap8By13", "glutBitmap8By13"); - - glutBitmapTimesRoman10 : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, - glutBitmapTimesRoman10, - "glutBitmapTimesRoman10", - "glutBitmapTimesRoman10"); - - glutBitmapTimesRoman24 : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, - glutBitmapTimesRoman24, - "glutBitmapTimesRoman24", - "glutBitmapTimesRoman24"); - - glutBitmapHelvetica10 : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, - glutBitmapHelvetica10, - "glutBitmapHelvetica10", - "glutBitmapHelvetica10"); - - glutBitmapHelvetica12 : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, - glutBitmapHelvetica12, - "glutBitmapHelvetica12", - "glutBitmapHelvetica12"); - - glutBitmapHelvetica18 : aliased Interfaces.C.Extensions.Void_Ptr; - pragma Import (C, - glutBitmapHelvetica18, - "glutBitmapHelvetica18", - "glutBitmapHelvetica18"); - - -- Bitmap font constants (use these in GLUT program). - -- glutGet parameters. - - GLUT_WINDOW_X : constant := 100; - GLUT_WINDOW_Y : constant := 101; - GLUT_WINDOW_WIDTH : constant := 102; - GLUT_WINDOW_HEIGHT : constant := 103; - GLUT_WINDOW_BUFFER_SIZE : constant := 104; - GLUT_WINDOW_STENCIL_SIZE : constant := 105; - GLUT_WINDOW_DEPTH_SIZE : constant := 106; - GLUT_WINDOW_RED_SIZE : constant := 107; - GLUT_WINDOW_GREEN_SIZE : constant := 108; - GLUT_WINDOW_BLUE_SIZE : constant := 109; - GLUT_WINDOW_ALPHA_SIZE : constant := 110; - GLUT_WINDOW_ACCUM_RED_SIZE : constant := 111; - GLUT_WINDOW_ACCUM_GREEN_SIZE : constant := 112; - GLUT_WINDOW_ACCUM_BLUE_SIZE : constant := 113; - GLUT_WINDOW_ACCUM_ALPHA_SIZE : constant := 114; - GLUT_WINDOW_DOUBLEBUFFER : constant := 115; - GLUT_WINDOW_RGBA : constant := 116; - GLUT_WINDOW_PARENT : constant := 117; - GLUT_WINDOW_NUM_CHILDREN : constant := 118; - GLUT_WINDOW_COLORMAP_SIZE : constant := 119; - GLUT_WINDOW_NUM_SAMPLES : constant := 120; - GLUT_WINDOW_STEREO : constant := 121; - GLUT_WINDOW_CURSOR : constant := 122; - GLUT_SCREEN_WIDTH : constant := 200; - GLUT_SCREEN_HEIGHT : constant := 201; - GLUT_SCREEN_WIDTH_MM : constant := 202; - GLUT_SCREEN_HEIGHT_MM : constant := 203; - GLUT_MENU_NUM_ITEMS : constant := 300; - GLUT_DISPLAY_MODE_POSSIBLE : constant := 400; - GLUT_INIT_WINDOW_X : constant := 500; - GLUT_INIT_WINDOW_Y : constant := 501; - GLUT_INIT_WINDOW_WIDTH : constant := 502; - GLUT_INIT_WINDOW_HEIGHT : constant := 503; - GLUT_INIT_DISPLAY_MODE : constant := 504; - GLUT_ELAPSED_TIME : constant := 700; - - -- glutDeviceGet parameters. - - GLUT_HAS_KEYBOARD : constant := 600; - GLUT_HAS_MOUSE : constant := 601; - GLUT_HAS_SPACEBALL : constant := 602; - GLUT_HAS_DIAL_AND_BUTTON_BOX : constant := 603; - GLUT_HAS_TABLET : constant := 604; - GLUT_NUM_MOUSE_BUTTONS : constant := 605; - GLUT_NUM_SPACEBALL_BUTTONS : constant := 606; - GLUT_NUM_BUTTON_BOX_BUTTONS : constant := 607; - GLUT_NUM_DIALS : constant := 608; - GLUT_NUM_TABLET_BUTTONS : constant := 609; - - -- glutLayerGet parameters. - - GLUT_OVERLAY_POSSIBLE : constant := 800; - GLUT_LAYER_IN_USE : constant := 801; - GLUT_HAS_OVERLAY : constant := 802; - GLUT_TRANSPARENT_INDEX : constant := 803; - GLUT_NORMAL_DAMAGED : constant := 804; - GLUT_OVERLAY_DAMAGED : constant := 805; - - -- glutVideoResizeGet parameters. - - GLUT_VIDEO_RESIZE_POSSIBLE : constant := 900; - GLUT_VIDEO_RESIZE_IN_USE : constant := 901; - GLUT_VIDEO_RESIZE_X_DELTA : constant := 902; - GLUT_VIDEO_RESIZE_Y_DELTA : constant := 903; - GLUT_VIDEO_RESIZE_WIDTH_DELTA : constant := 904; - GLUT_VIDEO_RESIZE_HEIGHT_DELTA : constant := 905; - GLUT_VIDEO_RESIZE_X : constant := 906; - GLUT_VIDEO_RESIZE_Y : constant := 907; - GLUT_VIDEO_RESIZE_WIDTH : constant := 908; - GLUT_VIDEO_RESIZE_HEIGHT : constant := 909; - - -- glutUseLayer parameters. - -- glutGetModifiers return mask. - - GLUT_ACTIVE_SHIFT : constant := 1; - GLUT_ACTIVE_CTRL : constant := 2; - GLUT_ACTIVE_ALT : constant := 4; - - -- glutSetCursor parameters. - -- Basic arrows. - - GLUT_CURSOR_RIGHT_ARROW : constant := 0; - GLUT_CURSOR_LEFT_ARROW : constant := 1; - - -- Symbolic cursor shapes. - - GLUT_CURSOR_INFO : constant := 2; - GLUT_CURSOR_DESTROY : constant := 3; - GLUT_CURSOR_HELP : constant := 4; - GLUT_CURSOR_CYCLE : constant := 5; - GLUT_CURSOR_SPRAY : constant := 6; - GLUT_CURSOR_WAIT : constant := 7; - GLUT_CURSOR_TEXT : constant := 8; - GLUT_CURSOR_CROSSHAIR : constant := 9; - - -- Directional cursors. - - GLUT_CURSOR_UP_DOWN : constant := 10; - GLUT_CURSOR_LEFT_RIGHT : constant := 11; - - -- Sizing cursors. - - GLUT_CURSOR_TOP_SIDE : constant := 12; - GLUT_CURSOR_BOTTOM_SIDE : constant := 13; - GLUT_CURSOR_LEFT_SIDE : constant := 14; - GLUT_CURSOR_RIGHT_SIDE : constant := 15; - GLUT_CURSOR_TOP_LEFT_CORNER : constant := 16; - GLUT_CURSOR_TOP_RIGHT_CORNER : constant := 17; - GLUT_CURSOR_BOTTOM_RIGHT_CORNER : constant := 18; - GLUT_CURSOR_BOTTOM_LEFT_CORNER : constant := 19; - - -- Inherit from parent window. - - GLUT_CURSOR_INHERIT : constant := 100; - - -- Blank cursor. - - GLUT_CURSOR_NONE : constant := 101; - - -- Fullscreen crosshair (if available). - - GLUT_CURSOR_FULL_CROSSHAIR : constant := 102; - - -- GLUT initialization sub-API. - - procedure glutInit (argcp : access Integer; - argv : access Interfaces.C.Strings.Chars_Ptr); - pragma Import (C, glutInit, "glutInit", "glutInit"); - - procedure glutInitDisplayMode (mode : Interfaces.C.unsigned); - pragma Import (C, - glutInitDisplayMode, - "glutInitDisplayMode", - "glutInitDisplayMode"); - - procedure glutInitDisplayString (string : Interfaces.C.Strings.Chars_Ptr); - pragma Import (C, - glutInitDisplayString, - "glutInitDisplayString", - "glutInitDisplayString"); - - procedure glutInitWindowPosition (x : Integer; y : Integer); - pragma Import (C, - glutInitWindowPosition, - "glutInitWindowPosition", - "glutInitWindowPosition"); - - procedure glutInitWindowSize (width : Integer; height : Integer); - pragma Import (C, - glutInitWindowSize, - "glutInitWindowSize", - "glutInitWindowSize"); - - procedure glutMainLoop; - pragma Import (C, glutMainLoop, "glutMainLoop", "glutMainLoop"); - - -- GLUT window sub-API. - - function glutCreateWindow - (title : Interfaces.C.Strings.Chars_Ptr) return Integer; - pragma Import (C, glutCreateWindow, "glutCreateWindow", "glutCreateWindow"); - - function glutCreateWindow (title : String) return Integer; - - function glutCreateSubWindow (win : Integer; - x : Integer; - y : Integer; - width : Integer; - height : Integer) return Integer; - pragma Import (C, - glutCreateSubWindow, - "glutCreateSubWindow", - "glutCreateSubWindow"); - - procedure glutDestroyWindow (win : Integer); - pragma Import (C, - glutDestroyWindow, - "glutDestroyWindow", - "glutDestroyWindow"); - - procedure glutPostRedisplay; - pragma Import (C, - glutPostRedisplay, - "glutPostRedisplay", - "glutPostRedisplay"); - - procedure glutPostWindowRedisplay (win : Integer); - pragma Import (C, - glutPostWindowRedisplay, - "glutPostWindowRedisplay", - "glutPostWindowRedisplay"); - - procedure glutSwapBuffers; - pragma Import (C, glutSwapBuffers, "glutSwapBuffers", "glutSwapBuffers"); - - function glutGetWindow return Integer; - pragma Import (C, glutGetWindow, "glutGetWindow", "glutGetWindow"); - - procedure glutSetWindow (win : Integer); - pragma Import (C, glutSetWindow, "glutSetWindow", "glutSetWindow"); - - procedure glutSetWindowTitle (title : Interfaces.C.Strings.Chars_Ptr); - pragma Import (C, - glutSetWindowTitle, - "glutSetWindowTitle", - "glutSetWindowTitle"); - - procedure glutSetWindowTitle (title : String); - - procedure glutSetIconTitle (title : Interfaces.C.Strings.Chars_Ptr); - pragma Import (C, glutSetIconTitle, "glutSetIconTitle", "glutSetIconTitle"); - - procedure glutSetIconTitle (title : String); - - procedure glutPositionWindow (x : Integer; y : Integer); - pragma Import (C, - glutPositionWindow, - "glutPositionWindow", - "glutPositionWindow"); - - procedure glutReshapeWindow (width : Integer; height : Integer); - pragma Import (C, - glutReshapeWindow, - "glutReshapeWindow", - "glutReshapeWindow"); - - procedure glutPopWindow; - pragma Import (C, glutPopWindow, "glutPopWindow", "glutPopWindow"); - - procedure glutPushWindow; - pragma Import (C, glutPushWindow, "glutPushWindow", "glutPushWindow"); - - procedure glutIconifyWindow; - pragma Import (C, - glutIconifyWindow, - "glutIconifyWindow", - "glutIconifyWindow"); - - procedure glutShowWindow; - pragma Import (C, glutShowWindow, "glutShowWindow", "glutShowWindow"); - - procedure glutHideWindow; - pragma Import (C, glutHideWindow, "glutHideWindow", "glutHideWindow"); - - procedure glutFullScreen; - pragma Import (C, glutFullScreen, "glutFullScreen", "glutFullScreen"); - - procedure glutSetCursor (cursor : Integer); - pragma Import (C, glutSetCursor, "glutSetCursor", "glutSetCursor"); - - procedure glutWarpPointer (x : Integer; y : Integer); - pragma Import (C, glutWarpPointer, "glutWarpPointer", "glutWarpPointer"); - - -- GLUT overlay sub-API. - - procedure glutEstablishOverlay; - pragma Import (C, - glutEstablishOverlay, - "glutEstablishOverlay", - "glutEstablishOverlay"); - - procedure glutRemoveOverlay; - pragma Import (C, - glutRemoveOverlay, - "glutRemoveOverlay", - "glutRemoveOverlay"); - - procedure glutUseLayer (layer : GL.GLenum); - pragma Import (C, glutUseLayer, "glutUseLayer", "glutUseLayer"); - - procedure glutPostOverlayRedisplay; - pragma Import (C, - glutPostOverlayRedisplay, - "glutPostOverlayRedisplay", - "glutPostOverlayRedisplay"); - - procedure glutPostWindowOverlayRedisplay (win : Integer); - pragma Import (C, - glutPostWindowOverlayRedisplay, - "glutPostWindowOverlayRedisplay", - "glutPostWindowOverlayRedisplay"); - - procedure glutShowOverlay; - pragma Import (C, glutShowOverlay, "glutShowOverlay", "glutShowOverlay"); - - procedure glutHideOverlay; - pragma Import (C, glutHideOverlay, "glutHideOverlay", "glutHideOverlay"); - - -- GLUT menu sub-API. - - type Glut_proc_1 is access procedure (P1 : Integer); - - function glutCreateMenu (P1 : Glut_proc_1) return Integer; - pragma Import (C, glutCreateMenu, "glutCreateMenu", "glutCreateMenu"); - - procedure glutDestroyMenu (menu : Integer); - pragma Import (C, glutDestroyMenu, "glutDestroyMenu", "glutDestroyMenu"); - - function glutGetMenu return Integer; - pragma Import (C, glutGetMenu, "glutGetMenu", "glutGetMenu"); - - procedure glutSetMenu (menu : Integer); - pragma Import (C, glutSetMenu, "glutSetMenu", "glutSetMenu"); - - procedure glutAddMenuEntry (label : Interfaces.C.Strings.Chars_Ptr; - value : Integer); - pragma Import (C, glutAddMenuEntry, "glutAddMenuEntry", "glutAddMenuEntry"); - - procedure glutAddMenuEntry (label : String; value : Integer); - - procedure glutAddSubMenu (label : Interfaces.C.Strings.Chars_Ptr; - submenu : Integer); - pragma Import (C, glutAddSubMenu, "glutAddSubMenu", "glutAddSubMenu"); - - procedure glutAddSubMenu (label : String; submenu : Integer); - - procedure glutChangeToMenuEntry (item : Integer; - label : Interfaces.C.Strings.Chars_Ptr; - value : Integer); - pragma Import (C, - glutChangeToMenuEntry, - "glutChangeToMenuEntry", - "glutChangeToMenuEntry"); - - procedure glutChangeToMenuEntry (item : Integer; - label : String; - value : Integer); - - procedure glutChangeToSubMenu (item : Integer; - label : Interfaces.C.Strings.Chars_Ptr; - submenu : Integer); - pragma Import (C, - glutChangeToSubMenu, - "glutChangeToSubMenu", - "glutChangeToSubMenu"); - - procedure glutChangeToSubMenu (item : Integer; - label : String; - submenu : Integer); - - procedure glutRemoveMenuItem (item : Integer); - pragma Import (C, - glutRemoveMenuItem, - "glutRemoveMenuItem", - "glutRemoveMenuItem"); - - procedure glutAttachMenu (button : Integer); - pragma Import (C, glutAttachMenu, "glutAttachMenu", "glutAttachMenu"); - - procedure glutDetachMenu (button : Integer); - pragma Import (C, glutDetachMenu, "glutDetachMenu", "glutDetachMenu"); - - -- GLUT callback sub-API. - - type Glut_proc_2 is access procedure; - - procedure glutDisplayFunc (P1 : Glut_proc_2); - pragma Import (C, glutDisplayFunc, "glutDisplayFunc", "glutDisplayFunc"); - - type Glut_proc_3 is access procedure (width : Integer; height : Integer); - - procedure glutReshapeFunc (P1 : Glut_proc_3); - pragma Import (C, glutReshapeFunc, "glutReshapeFunc", "glutReshapeFunc"); - - type Glut_proc_4 is access - procedure (key : Interfaces.C.unsigned_char; x : Integer; y : Integer); - - procedure glutKeyboardFunc (P1 : Glut_proc_4); - pragma Import (C, glutKeyboardFunc, "glutKeyboardFunc", "glutKeyboardFunc"); - - type Glut_proc_5 is access - procedure (button : Integer; state : Integer; x : Integer; y : Integer); - - procedure glutMouseFunc (P1 : Glut_proc_5); - pragma Import (C, glutMouseFunc, "glutMouseFunc", "glutMouseFunc"); - - type Glut_proc_6 is access procedure (x : Integer; y : Integer); - - procedure glutMotionFunc (P1 : Glut_proc_6); - pragma Import (C, glutMotionFunc, "glutMotionFunc", "glutMotionFunc"); - - type Glut_proc_7 is access procedure (x : Integer; y : Integer); - - procedure glutPassiveMotionFunc (P1 : Glut_proc_7); - pragma Import (C, - glutPassiveMotionFunc, - "glutPassiveMotionFunc", - "glutPassiveMotionFunc"); - - type Glut_proc_8 is access procedure (state : Integer); - - procedure glutEntryFunc (P1 : Glut_proc_8); - pragma Import (C, glutEntryFunc, "glutEntryFunc", "glutEntryFunc"); - - type Glut_proc_9 is access procedure (state : Integer); - - procedure glutVisibilityFunc (P1 : Glut_proc_9); - pragma Import (C, - glutVisibilityFunc, - "glutVisibilityFunc", - "glutVisibilityFunc"); - - type Glut_proc_10 is access procedure; - - procedure glutIdleFunc (P1 : Glut_proc_10); - pragma Import (C, glutIdleFunc, "glutIdleFunc", "glutIdleFunc"); - - type Glut_proc_11 is access procedure (value : Integer); - - procedure glutTimerFunc (millis : Interfaces.C.unsigned; - P2 : Glut_proc_11; - value : Integer); - pragma Import (C, glutTimerFunc, "glutTimerFunc", "glutTimerFunc"); - - type Glut_proc_12 is access procedure (state : Integer); - - procedure glutMenuStateFunc (P1 : Glut_proc_12); - pragma Import (C, - glutMenuStateFunc, - "glutMenuStateFunc", - "glutMenuStateFunc"); - - type Glut_proc_13 is access - procedure (key : Integer; x : Integer; y : Integer); - - procedure glutSpecialFunc (P1 : Glut_proc_13); - pragma Import (C, glutSpecialFunc, "glutSpecialFunc", "glutSpecialFunc"); - - type Glut_proc_14 is access - procedure (x : Integer; y : Integer; z : Integer); - - procedure glutSpaceballMotionFunc (P1 : Glut_proc_14); - pragma Import (C, - glutSpaceballMotionFunc, - "glutSpaceballMotionFunc", - "glutSpaceballMotionFunc"); - - type Glut_proc_15 is access - procedure (x : Integer; y : Integer; z : Integer); - - procedure glutSpaceballRotateFunc (P1 : Glut_proc_15); - pragma Import (C, - glutSpaceballRotateFunc, - "glutSpaceballRotateFunc", - "glutSpaceballRotateFunc"); - - type Glut_proc_16 is access procedure (button : Integer; state : Integer); - - procedure glutSpaceballButtonFunc (P1 : Glut_proc_16); - pragma Import (C, - glutSpaceballButtonFunc, - "glutSpaceballButtonFunc", - "glutSpaceballButtonFunc"); - - type Glut_proc_17 is access procedure (button : Integer; state : Integer); - - procedure glutButtonBoxFunc (P1 : Glut_proc_17); - pragma Import (C, - glutButtonBoxFunc, - "glutButtonBoxFunc", - "glutButtonBoxFunc"); - - type Glut_proc_18 is access procedure (dial : Integer; value : Integer); - - procedure glutDialsFunc (P1 : Glut_proc_18); - pragma Import (C, glutDialsFunc, "glutDialsFunc", "glutDialsFunc"); - - type Glut_proc_19 is access procedure (x : Integer; y : Integer); - - procedure glutTabletMotionFunc (P1 : Glut_proc_19); - pragma Import (C, - glutTabletMotionFunc, - "glutTabletMotionFunc", - "glutTabletMotionFunc"); - - type Glut_proc_20 is access - procedure (button : Integer; state : Integer; x : Integer; y : Integer); - - procedure glutTabletButtonFunc (P1 : Glut_proc_20); - pragma Import (C, - glutTabletButtonFunc, - "glutTabletButtonFunc", - "glutTabletButtonFunc"); - - type Glut_proc_21 is access - procedure (status : Integer; x : Integer; y : Integer); - - procedure glutMenuStatusFunc (P1 : Glut_proc_21); - pragma Import (C, - glutMenuStatusFunc, - "glutMenuStatusFunc", - "glutMenuStatusFunc"); - - type Glut_proc_22 is access procedure; - - procedure glutOverlayDisplayFunc (P1 : Glut_proc_22); - pragma Import (C, - glutOverlayDisplayFunc, - "glutOverlayDisplayFunc", - "glutOverlayDisplayFunc"); - - type Glut_proc_23 is access procedure (state : Integer); - - procedure glutWindowStatusFunc (P1 : Glut_proc_23); - pragma Import (C, - glutWindowStatusFunc, - "glutWindowStatusFunc", - "glutWindowStatusFunc"); - - -- GLUT color index sub-API. - - procedure glutSetColor (P1 : Integer; - red : GL.GLfloat; - green : GL.GLfloat; - blue : GL.GLfloat); - pragma Import (C, glutSetColor, "glutSetColor", "glutSetColor"); - - function glutGetColor - (ndx : Integer; component : Integer) return GL.GLfloat; - pragma Import (C, glutGetColor, "glutGetColor", "glutGetColor"); - - procedure glutCopyColormap (win : Integer); - pragma Import (C, glutCopyColormap, "glutCopyColormap", "glutCopyColormap"); - - -- GLUT state retrieval sub-API. - - function glutGet (type_Id : GL.GLenum) return Integer; - pragma Import (C, glutGet, "glutGet", "glutGet"); - - function glutDeviceGet (type_Id : GL.GLenum) return Integer; - pragma Import (C, glutDeviceGet, "glutDeviceGet", "glutDeviceGet"); - - -- GLUT extension support sub-API - - function glutExtensionSupported - (name : Interfaces.C.Strings.Chars_Ptr) return Integer; - pragma Import (C, - glutExtensionSupported, - "glutExtensionSupported", - "glutExtensionSupported"); - - function glutExtensionSupported (name : String) return Integer; - - function glutGetModifiers return Integer; - pragma Import (C, glutGetModifiers, "glutGetModifiers", "glutGetModifiers"); - - function glutLayerGet (type_Id : GL.GLenum) return Integer; - pragma Import (C, glutLayerGet, "glutLayerGet", "glutLayerGet"); - - -- GLUT font sub-API - - procedure glutBitmapCharacter (font : access Interfaces.C.Extensions.Void_Ptr; - character : Integer); - pragma Import (C, - glutBitmapCharacter, - "glutBitmapCharacter", - "glutBitmapCharacter"); - - function glutBitmapWidth - (font : access Interfaces.C.Extensions.Void_Ptr; - character : Integer) return Integer; - pragma Import (C, glutBitmapWidth, "glutBitmapWidth", "glutBitmapWidth"); - - procedure glutStrokeCharacter - (font : access Interfaces.C.Extensions.Void_Ptr; - character : Integer); - pragma Import (C, - glutStrokeCharacter, - "glutStrokeCharacter", - "glutStrokeCharacter"); - - function glutStrokeWidth - (font : access Interfaces.C.Extensions.Void_Ptr; - character : Integer) return Integer; - pragma Import (C, glutStrokeWidth, "glutStrokeWidth", "glutStrokeWidth"); - - function glutStrokeLength - (font : access Interfaces.C.Extensions.Void_Ptr; - string : Interfaces.C.Strings.Chars_Ptr) return Integer; - pragma Import (C, glutStrokeLength, "glutStrokeLength", "glutStrokeLength"); - - function glutBitmapLength - (font : access Interfaces.C.Extensions.Void_Ptr; - string : Interfaces.C.Strings.Chars_Ptr) return Integer; - pragma Import (C, glutBitmapLength, "glutBitmapLength", "glutBitmapLength"); - - -- GLUT pre-built models sub-API - - procedure glutWireSphere (radius : GL.GLdouble; - slices : GL.GLint; - stacks : GL.GLint); - pragma Import (C, glutWireSphere, "glutWireSphere", "glutWireSphere"); - - procedure glutSolidSphere (radius : GL.GLdouble; - slices : GL.GLint; - stacks : GL.GLint); - pragma Import (C, glutSolidSphere, "glutSolidSphere", "glutSolidSphere"); - - procedure glutWireCone (base : GL.GLdouble; - height : GL.GLdouble; - slices : GL.GLint; - stacks : GL.GLint); - pragma Import (C, glutWireCone, "glutWireCone", "glutWireCone"); - - procedure glutSolidCone (base : GL.GLdouble; - height : GL.GLdouble; - slices : GL.GLint; - stacks : GL.GLint); - pragma Import (C, glutSolidCone, "glutSolidCone", "glutSolidCone"); - - procedure glutWireCube (size : GL.GLdouble); - pragma Import (C, glutWireCube, "glutWireCube", "glutWireCube"); - - procedure glutSolidCube (size : GL.GLdouble); - pragma Import (C, glutSolidCube, "glutSolidCube", "glutSolidCube"); - - procedure glutWireTorus (innerRadius : GL.GLdouble; - outerRadius : GL.GLdouble; - sides : GL.GLint; - rings : GL.GLint); - pragma Import (C, glutWireTorus, "glutWireTorus", "glutWireTorus"); - - procedure glutSolidTorus (innerRadius : GL.GLdouble; - outerRadius : GL.GLdouble; - sides : GL.GLint; - rings : GL.GLint); - pragma Import (C, glutSolidTorus, "glutSolidTorus", "glutSolidTorus"); - - procedure glutWireDodecahedron; - pragma Import (C, - glutWireDodecahedron, - "glutWireDodecahedron", - "glutWireDodecahedron"); - - procedure glutSolidDodecahedron; - pragma Import (C, - glutSolidDodecahedron, - "glutSolidDodecahedron", - "glutSolidDodecahedron"); - - procedure glutWireTeapot (size : GL.GLdouble); - pragma Import (C, glutWireTeapot, "glutWireTeapot", "glutWireTeapot"); - - procedure glutSolidTeapot (size : GL.GLdouble); - pragma Import (C, glutSolidTeapot, "glutSolidTeapot", "glutSolidTeapot"); - - procedure glutWireOctahedron; - pragma Import (C, - glutWireOctahedron, - "glutWireOctahedron", - "glutWireOctahedron"); - - procedure glutSolidOctahedron; - pragma Import (C, - glutSolidOctahedron, - "glutSolidOctahedron", - "glutSolidOctahedron"); - - procedure glutWireTetrahedron; - pragma Import (C, - glutWireTetrahedron, - "glutWireTetrahedron", - "glutWireTetrahedron"); - - procedure glutSolidTetrahedron; - pragma Import (C, - glutSolidTetrahedron, - "glutSolidTetrahedron", - "glutSolidTetrahedron"); - - procedure glutWireIcosahedron; - pragma Import (C, - glutWireIcosahedron, - "glutWireIcosahedron", - "glutWireIcosahedron"); - - procedure glutSolidIcosahedron; - pragma Import (C, - glutSolidIcosahedron, - "glutSolidIcosahedron", - "glutSolidIcosahedron"); - - function glutVideoResizeGet (param : GL.GLenum) return Integer; - pragma Import (C, - glutVideoResizeGet, - "glutVideoResizeGet", - "glutVideoResizeGet"); - - procedure glutSetupVideoResizing; - pragma Import (C, - glutSetupVideoResizing, - "glutSetupVideoResizing", - "glutSetupVideoResizing"); - - procedure glutStopVideoResizing; - pragma Import (C, - glutStopVideoResizing, - "glutStopVideoResizing", - "glutStopVideoResizing"); - - procedure glutVideoResize (x : Integer; - y : Integer; - width : Integer; - height : Integer); - pragma Import (C, glutVideoResize, "glutVideoResize", "glutVideoResize"); - - procedure glutVideoPan (x : Integer; - y : Integer; - width : Integer; - height : Integer); - pragma Import (C, glutVideoPan, "glutVideoPan", "glutVideoPan"); - -end Glut; - diff --git a/lib/glut-3.7.6/glut-3.7.6.pro b/lib/glut-3.7.6/glut-3.7.6.pro deleted file mode 100644 index b956c8b903294e58db6d4d9077b6b8a7b7a4ee00..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/glut-3.7.6.pro +++ /dev/null @@ -1,167 +0,0 @@ -###################################################################### -# Automatically generated by qmake (2.01a) Mi Sep 29 21:06:53 2010 -###################################################################### - -TEMPLATE = lib -TARGET = -DEPENDPATH += . \ - include/GL \ - include/mui \ - lib/fglut \ - lib/gle \ - lib/glsmap \ - lib/glut \ - lib/mui -INCLUDEPATH += . \ - include \ - lib/glut \ - lib/gle \ - lib/glsmap - -# Input -HEADERS += include/GL/fgl.h \ - include/GL/fglu.h \ - include/GL/fglut.h \ - include/GL/glsmap.h \ - include/GL/glut.h \ - include/GL/glutf90.h \ - include/GL/tube.h \ - include/mui/browser.h \ - include/mui/displaylist.h \ - include/mui/gizmo.h \ - include/mui/hslider.h \ - include/mui/mui.h \ - include/mui/textlist.h \ - include/mui/uicolor.h \ - include/mui/vslider.h \ - lib/gle/copy.h \ - lib/gle/extrude.h \ - lib/gle/gutil.h \ - lib/gle/intersect.h \ - lib/gle/port.h \ - lib/gle/rot.h \ - lib/gle/segment.h \ - lib/gle/tube_gc.h \ - lib/gle/vvector.h \ - lib/glsmap/glsmapint.h \ - lib/glut/glutbitmap.h \ - lib/glut/glutint.h \ - lib/glut/glutstroke.h \ - lib/glut/glutwin32.h \ - lib/glut/layerutil.h \ - lib/glut/stroke.h \ - lib/glut/win32_glx.h \ - lib/glut/win32_x11.h \ - lib/mui/dirent32.h -LEXSOURCES += lib/glut/strokelex.l -YACCSOURCES += lib/glut/strokegen.y -SOURCES += lib/fglut/fglut.c \ - lib/fglut/fglut_8x13.c \ - lib/fglut/fglut_9x15.c \ - lib/fglut/fglut_hel10.c \ - lib/fglut/fglut_hel12.c \ - lib/fglut/fglut_hel18.c \ - lib/fglut/fglut_mroman.c \ - lib/fglut/fglut_roman.c \ - lib/fglut/fglut_tr10.c \ - lib/fglut/fglut_tr24.c \ - lib/gle/ex_angle.c \ - lib/gle/ex_cut_round.c \ - lib/gle/ex_raw.c \ - lib/gle/extrude.c \ - lib/gle/intersect.c \ - lib/gle/qmesh.c \ - lib/gle/rot_prince.c \ - lib/gle/rotate.c \ - lib/gle/round_cap.c \ - lib/gle/segment.c \ - lib/gle/texgen.c \ - lib/gle/urotate.c \ - lib/gle/view.c \ - lib/glsmap/smap_buildsmap.c \ - lib/glsmap/smap_context.c \ - lib/glsmap/smap_create.c \ - lib/glsmap/smap_destroy.c \ - lib/glsmap/smap_drawmesh.c \ - lib/glsmap/smap_flag.c \ - lib/glsmap/smap_get.c \ - lib/glsmap/smap_getfunc.c \ - lib/glsmap/smap_gettexdim.c \ - lib/glsmap/smap_gettexobj.c \ - lib/glsmap/smap_getvec.c \ - lib/glsmap/smap_makemesh.c \ - lib/glsmap/smap_nearfar.c \ - lib/glsmap/smap_origin.c \ - lib/glsmap/smap_render.c \ - lib/glsmap/smap_rvec2st.c \ - lib/glsmap/smap_set.c \ - lib/glsmap/smap_setfunc.c \ - lib/glsmap/smap_setvec.c \ - lib/glsmap/smap_texdim.c \ - lib/glsmap/smap_texobj.c \ - lib/glut/capturexfont.c \ - lib/glut/glut_8x13.c \ - lib/glut/glut_9x15.c \ - lib/glut/glut_bitmap.c \ - lib/glut/glut_bwidth.c \ - lib/glut/glut_cindex.c \ - lib/glut/glut_cmap.c \ - lib/glut/glut_cursor.c \ - lib/glut/glut_dials.c \ - lib/glut/glut_dstr.c \ - lib/glut/glut_event.c \ - lib/glut/glut_ext.c \ - lib/glut/glut_fcb.c \ - lib/glut/glut_fullscrn.c \ - lib/glut/glut_gamemode.c \ - lib/glut/glut_get.c \ - lib/glut/glut_glxext.c \ - lib/glut/glut_hel10.c \ - lib/glut/glut_hel12.c \ - lib/glut/glut_hel18.c \ - lib/glut/glut_init.c \ - lib/glut/glut_input.c \ - lib/glut/glut_joy.c \ - lib/glut/glut_key.c \ - lib/glut/glut_keyctrl.c \ - lib/glut/glut_keyup.c \ - lib/glut/glut_menu.c \ - lib/glut/glut_menu2.c \ - lib/glut/glut_mesa.c \ - lib/glut/glut_modifier.c \ - lib/glut/glut_mroman.c \ - lib/glut/glut_overlay.c \ - lib/glut/glut_roman.c \ - lib/glut/glut_shapes.c \ - lib/glut/glut_space.c \ - lib/glut/glut_stroke.c \ - lib/glut/glut_swap.c \ - lib/glut/glut_swidth.c \ - lib/glut/glut_tablet.c \ - lib/glut/glut_teapot.c \ - lib/glut/glut_tr10.c \ - lib/glut/glut_tr24.c \ - lib/glut/glut_util.c \ - lib/glut/glut_vidresize.c \ - lib/glut/glut_warp.c \ - lib/glut/glut_win.c \ - lib/glut/glut_winmisc.c \ - lib/glut/layerutil.c \ - lib/glut/win32_glx.c \ - lib/glut/win32_menu.c \ - lib/glut/win32_util.c \ - lib/glut/win32_winproc.c \ - lib/glut/win32_x11.c \ - lib/mui/browseparse.c \ - lib/mui/browser.c \ - lib/mui/button.c \ - lib/mui/displaylist.c \ - lib/mui/gizmo.c \ - lib/mui/glutmui.c \ - lib/mui/hslider.c \ - lib/mui/miscui.c \ - lib/mui/mui.c \ - lib/mui/pulldown.c \ - lib/mui/textlist.c \ - lib/mui/uicolor.c \ - lib/mui/vslider.c diff --git a/lib/glut-3.7.6/glut.dsw b/lib/glut-3.7.6/glut.dsw deleted file mode 100644 index e796b28919501f4a87bcc12b2d8f849f47b7d0d0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/glut.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "glut32"=".\lib\glut\glut32.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/glutdefs b/lib/glut-3.7.6/glutdefs deleted file mode 100644 index 05955b92c3234649d92186834acbd8d808d2af16..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/glutdefs +++ /dev/null @@ -1,50 +0,0 @@ -# -# glutdefs - common SGI Makefile defines for building GLUT -# -# Copyright (c) Mark J. Kilgard, 1997. -# - -# By default, we build for the "least common denominator" -# object style with is "old" 32-bit style. Set your -# OBJECT_STYLE environment variable to build GLUT's demos -# and examples with some other ABI. For example, to build -# N32 with -mips3 support, use: -# -# setenv OBJECT_STYLE N32_M3 -# -#if !defined(OBJECT_STYLE) -OBJECT_STYLE=32 -#endif - -# Object style logic. Note: the NONE and R32 object style -# are not supported. -# -#if $(OBJECT_STYLE) == "64" -GLUT_LIB_SUFFIX=.n64 -#elif $(OBJECT_STYLE) == "64_M3" -GLUT_LIB_SUFFIX=.n64 -#elif $(OBJECT_STYLE) == "64_M4" -GLUT_LIB_SUFFIX=.n64 -#elif $(OBJECT_STYLE) == "32_ABI" -GLUT_LIB_SUFFIX= -#elif $(OBJECT_STYLE) == "N32" -GLUT_LIB_SUFFIX=.n32 -#elif $(OBJECT_STYLE) == "N32_M3" -GLUT_LIB_SUFFIX=.n32 -#elif $(OBJECT_STYLE) == "N32_M4" -GLUT_LIB_SUFFIX=.n32 -#elif $(OBJECT_STYLE) == "32" -GLUT_LIB_SUFFIX= -#elif $(OBJECT_STYLE) == "32_M2" -GLUT_LIB_SUFFIX= -#else -GLUT_LIB_SUFFIX= -#endif - -# Where to find the GLUT archive for the appropriate object style. -# -GLUT = $(TOP)/lib/glut$(GLUT_LIB_SUFFIX)/libglut.a -FGLUT = $(TOP)/lib/fglut$(GLUT_LIB_SUFFIX)/libfglut.a -MUI = $(TOP)/lib/mui$(GLUT_LIB_SUFFIX)/libmui.a -GLE = $(TOP)/lib/gle$(GLUT_LIB_SUFFIX)/libgle.a -GLSMAP = $(TOP)/lib/glsmap$(GLUT_LIB_SUFFIX)/libglsmap.a diff --git a/lib/glut-3.7.6/include/GL/fgl.h b/lib/glut-3.7.6/include/GL/fgl.h deleted file mode 100644 index 64f981e6ecbff953959872832f19ec848dc630d0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/GL/fgl.h +++ /dev/null @@ -1,1707 +0,0 @@ - -C GLUT version of "GL/fgl.h" - -C Modifications from SGI IRIX 5.3 version: -C 1) F prefix removed from OpenGL constants. -C 2) Constants over 32 characters truncated to 32 characters. - -C *********************************************************** - -C AttribMask - integer*4 GL_CURRENT_BIT - parameter ( GL_CURRENT_BIT = 1 ) - integer*4 GL_POINT_BIT - parameter ( GL_POINT_BIT = 2 ) - integer*4 GL_LINE_BIT - parameter ( GL_LINE_BIT = 4 ) - integer*4 GL_POLYGON_BIT - parameter ( GL_POLYGON_BIT = 8 ) - integer*4 GL_POLYGON_STIPPLE_BIT - parameter ( GL_POLYGON_STIPPLE_BIT = 16 ) - integer*4 GL_PIXEL_MODE_BIT - parameter ( GL_PIXEL_MODE_BIT = 32 ) - integer*4 GL_LIGHTING_BIT - parameter ( GL_LIGHTING_BIT = 64 ) - integer*4 GL_FOG_BIT - parameter ( GL_FOG_BIT = 128 ) - integer*4 GL_DEPTH_BUFFER_BIT - parameter ( GL_DEPTH_BUFFER_BIT = 256 ) - integer*4 GL_ACCUM_BUFFER_BIT - parameter ( GL_ACCUM_BUFFER_BIT = 512 ) - integer*4 GL_STENCIL_BUFFER_BIT - parameter ( GL_STENCIL_BUFFER_BIT = 1024 ) - integer*4 GL_VIEWPORT_BIT - parameter ( GL_VIEWPORT_BIT = 2048 ) - integer*4 GL_TRANSFORM_BIT - parameter ( GL_TRANSFORM_BIT = 4096 ) - integer*4 GL_ENABLE_BIT - parameter ( GL_ENABLE_BIT = 8192 ) - integer*4 GL_COLOR_BUFFER_BIT - parameter ( GL_COLOR_BUFFER_BIT = 16384 ) - integer*4 GL_HINT_BIT - parameter ( GL_HINT_BIT = 32768 ) - integer*4 GL_EVAL_BIT - parameter ( GL_EVAL_BIT = 65536 ) - integer*4 GL_LIST_BIT - parameter ( GL_LIST_BIT = 131072 ) - integer*4 GL_TEXTURE_BIT - parameter ( GL_TEXTURE_BIT = 262144 ) - integer*4 GL_SCISSOR_BIT - parameter ( GL_SCISSOR_BIT = 524288 ) - integer*4 GL_ALL_ATTRIB_BITS - parameter ( GL_ALL_ATTRIB_BITS = 1048575 ) -C GL_MULTISAMPLE_BIT_EXT - -C ClearBufferMask -C GL_COLOR_BUFFER_BIT -C GL_ACCUM_BUFFER_BIT -C GL_STENCIL_BUFFER_BIT -C GL_DEPTH_BUFFER_BIT - -C Boolean - integer*4 GL_FALSE - parameter ( GL_FALSE = 0 ) - integer*4 GL_TRUE - parameter ( GL_TRUE = 1 ) - -C BeginMode - integer*4 GL_POINTS - parameter ( GL_POINTS = 0 ) - integer*4 GL_LINES - parameter ( GL_LINES = 1 ) - integer*4 GL_LINE_LOOP - parameter ( GL_LINE_LOOP = 2 ) - integer*4 GL_LINE_STRIP - parameter ( GL_LINE_STRIP = 3 ) - integer*4 GL_TRIANGLES - parameter ( GL_TRIANGLES = 4 ) - integer*4 GL_TRIANGLE_STRIP - parameter ( GL_TRIANGLE_STRIP = 5 ) - integer*4 GL_TRIANGLE_FAN - parameter ( GL_TRIANGLE_FAN = 6 ) - integer*4 GL_QUADS - parameter ( GL_QUADS = 7 ) - integer*4 GL_QUAD_STRIP - parameter ( GL_QUAD_STRIP = 8 ) - integer*4 GL_POLYGON - parameter ( GL_POLYGON = 9 ) - -C AccumOp - integer*4 GL_ACCUM - parameter ( GL_ACCUM = 256 ) - integer*4 GL_LOAD - parameter ( GL_LOAD = 257 ) - integer*4 GL_RETURN - parameter ( GL_RETURN = 258 ) - integer*4 GL_MULT - parameter ( GL_MULT = 259 ) - integer*4 GL_ADD - parameter ( GL_ADD = 260 ) - -C AlphaFunction - integer*4 GL_NEVER - parameter ( GL_NEVER = 512 ) - integer*4 GL_LESS - parameter ( GL_LESS = 513 ) - integer*4 GL_EQUAL - parameter ( GL_EQUAL = 514 ) - integer*4 GL_LEQUAL - parameter ( GL_LEQUAL = 515 ) - integer*4 GL_GREATER - parameter ( GL_GREATER = 516 ) - integer*4 GL_NOTEQUAL - parameter ( GL_NOTEQUAL = 517 ) - integer*4 GL_GEQUAL - parameter ( GL_GEQUAL = 518 ) - integer*4 GL_ALWAYS - parameter ( GL_ALWAYS = 519 ) - -C BlendingFactorDest - integer*4 GL_ZERO - parameter ( GL_ZERO = 0 ) - integer*4 GL_ONE - parameter ( GL_ONE = 1 ) - integer*4 GL_SRC_COLOR - parameter ( GL_SRC_COLOR = 768 ) - integer*4 GL_ONE_MINUS_SRC_COLOR - parameter ( GL_ONE_MINUS_SRC_COLOR = 769 ) - integer*4 GL_SRC_ALPHA - parameter ( GL_SRC_ALPHA = 770 ) - integer*4 GL_ONE_MINUS_SRC_ALPHA - parameter ( GL_ONE_MINUS_SRC_ALPHA = 771 ) - integer*4 GL_DST_ALPHA - parameter ( GL_DST_ALPHA = 772 ) - integer*4 GL_ONE_MINUS_DST_ALPHA - parameter ( GL_ONE_MINUS_DST_ALPHA = 773 ) -C GL_CONSTANT_COLOR_EXT -C GL_ONE_MINUS_CONSTANT_COLOR_EXT -C GL_CONSTANT_ALPHA_EXT -C GL_ONE_MINUS_CONSTANT_ALPHA_EXT - -C BlendingFactorSrc -C GL_ZERO -C GL_ONE - integer*4 GL_DST_COLOR - parameter ( GL_DST_COLOR = 774 ) - integer*4 GL_ONE_MINUS_DST_COLOR - parameter ( GL_ONE_MINUS_DST_COLOR = 775 ) - integer*4 GL_SRC_ALPHA_SATURATE - parameter ( GL_SRC_ALPHA_SATURATE = 776 ) -C GL_SRC_ALPHA -C GL_ONE_MINUS_SRC_ALPHA -C GL_DST_ALPHA -C GL_ONE_MINUS_DST_ALPHA -C GL_CONSTANT_COLOR_EXT -C GL_ONE_MINUS_CONSTANT_COLOR_EXT -C GL_CONSTANT_ALPHA_EXT -C GL_ONE_MINUS_CONSTANT_ALPHA_EXT - -C BlendingMode -C GL_LOGIC_OP -C GL_FUNC_ADD_EXT -C GL_MIN_EXT -C GL_MAX_EXT -C GL_FUNC_SUBTRACT_EXT -C GL_FUNC_REVERSE_SUBTRACT_EXT - -C ColorMaterialFace -C GL_FRONT -C GL_BACK -C GL_FRONT_AND_BACK - -C ColorMaterialParameter -C GL_AMBIENT -C GL_DIFFUSE -C GL_SPECULAR -C GL_EMISSION -C GL_AMBIENT_AND_DIFFUSE - -C ConvolutionBorderMode -C GL_REDUCE_EXT - -C ConvolutionParameter -C GL_CONVOLUTION_BORDER_MODE_EXT -C GL_CONVOLUTION_FILTER_SCALE_EXT -C GL_CONVOLUTION_FILTER_BIAS_EXT - -C ConvolutionTarget -C GL_CONVOLUTION_1D_EXT -C GL_CONVOLUTION_2D_EXT - -C CullFaceMode -C GL_FRONT -C GL_BACK -C GL_FRONT_AND_BACK - -C DepthFunction -C GL_NEVER -C GL_LESS -C GL_EQUAL -C GL_LEQUAL -C GL_GREATER -C GL_NOTEQUAL -C GL_GEQUAL -C GL_ALWAYS - -C DrawBufferMode - integer*4 GL_NONE - parameter ( GL_NONE = 0 ) - integer*4 GL_FRONT_LEFT - parameter ( GL_FRONT_LEFT = 1024 ) - integer*4 GL_FRONT_RIGHT - parameter ( GL_FRONT_RIGHT = 1025 ) - integer*4 GL_BACK_LEFT - parameter ( GL_BACK_LEFT = 1026 ) - integer*4 GL_BACK_RIGHT - parameter ( GL_BACK_RIGHT = 1027 ) - integer*4 GL_FRONT - parameter ( GL_FRONT = 1028 ) - integer*4 GL_BACK - parameter ( GL_BACK = 1029 ) - integer*4 GL_LEFT - parameter ( GL_LEFT = 1030 ) - integer*4 GL_RIGHT - parameter ( GL_RIGHT = 1031 ) - integer*4 GL_FRONT_AND_BACK - parameter ( GL_FRONT_AND_BACK = 1032 ) - integer*4 GL_AUX0 - parameter ( GL_AUX0 = 1033 ) - integer*4 GL_AUX1 - parameter ( GL_AUX1 = 1034 ) - integer*4 GL_AUX2 - parameter ( GL_AUX2 = 1035 ) - integer*4 GL_AUX3 - parameter ( GL_AUX3 = 1036 ) - -C Enable -C GL_FOG -C GL_LIGHTING -C GL_TEXTURE_1D -C GL_TEXTURE_2D -C GL_LINE_STIPPLE -C GL_POLYGON_STIPPLE -C GL_CULL_FACE -C GL_ALPHA_TEST -C GL_BLEND -C GL_LOGIC_OP -C GL_DITHER -C GL_STENCIL_TEST -C GL_DEPTH_TEST -C GL_CLIP_PLANE0 -C GL_CLIP_PLANE1 -C GL_CLIP_PLANE2 -C GL_CLIP_PLANE3 -C GL_CLIP_PLANE4 -C GL_CLIP_PLANE5 -C GL_LIGHT0 -C GL_LIGHT1 -C GL_LIGHT2 -C GL_LIGHT3 -C GL_LIGHT4 -C GL_LIGHT5 -C GL_LIGHT6 -C GL_LIGHT7 -C GL_TEXTURE_GEN_S -C GL_TEXTURE_GEN_T -C GL_TEXTURE_GEN_R -C GL_TEXTURE_GEN_Q -C GL_MAP1_VERTEX_3 -C GL_MAP1_VERTEX_4 -C GL_MAP1_COLOR_4 -C GL_MAP1_INDEX -C GL_MAP1_NORMAL -C GL_MAP1_TEXTURE_COORD_1 -C GL_MAP1_TEXTURE_COORD_2 -C GL_MAP1_TEXTURE_COORD_3 -C GL_MAP1_TEXTURE_COORD_4 -C GL_MAP2_VERTEX_3 -C GL_MAP2_VERTEX_4 -C GL_MAP2_COLOR_4 -C GL_MAP2_INDEX -C GL_MAP2_NORMAL -C GL_MAP2_TEXTURE_COORD_1 -C GL_MAP2_TEXTURE_COORD_2 -C GL_MAP2_TEXTURE_COORD_3 -C GL_MAP2_TEXTURE_COORD_4 -C GL_POINT_SMOOTH -C GL_LINE_SMOOTH -C GL_POLYGON_SMOOTH -C GL_SCISSOR_TEST -C GL_COLOR_MATERIAL -C GL_NORMALIZE -C GL_AUTO_NORMAL -C GL_CONVOLUTION_1D_EXT -C GL_CONVOLUTION_2D_EXT -C GL_SEPARABLE_2D_EXT -C GL_HISTOGRAM_EXT -C GL_MINMAX_EXT -C GL_POLYGON_OFFSET_EXT -C GL_TEXTURE_3D_EXT -C GL_MULTISAMPLE_SGIS -C GL_SAMPLE_ALPHA_TO_MASK_SGIS -C GL_SAMPLE_ALPHA_TO_ONE_SGIS -C GL_SAMPLE_MASK_SGIS - -C ErrorCode - integer*4 GL_NO_ERROR - parameter ( GL_NO_ERROR = 0 ) - integer*4 GL_INVALID_ENUM - parameter ( GL_INVALID_ENUM = 1280 ) - integer*4 GL_INVALID_VALUE - parameter ( GL_INVALID_VALUE = 1281 ) - integer*4 GL_INVALID_OPERATION - parameter ( GL_INVALID_OPERATION = 1282 ) - integer*4 GL_STACK_OVERFLOW - parameter ( GL_STACK_OVERFLOW = 1283 ) - integer*4 GL_STACK_UNDERFLOW - parameter ( GL_STACK_UNDERFLOW = 1284 ) - integer*4 GL_OUT_OF_MEMORY - parameter ( GL_OUT_OF_MEMORY = 1285 ) -C GL_TABLE_TOO_LARGE_EXT -C GL_TEXTURE_TOO_LARGE_EXT - -C FeedBackMode - integer*4 GL_2D - parameter ( GL_2D = 1536 ) - integer*4 GL_3D - parameter ( GL_3D = 1537 ) - integer*4 GL_3D_COLOR - parameter ( GL_3D_COLOR = 1538 ) - integer*4 GL_3D_COLOR_TEXTURE - parameter ( GL_3D_COLOR_TEXTURE = 1539 ) - integer*4 GL_4D_COLOR_TEXTURE - parameter ( GL_4D_COLOR_TEXTURE = 1540 ) - -C FeedBackToken - integer*4 GL_PASS_THROUGH_TOKEN - parameter ( GL_PASS_THROUGH_TOKEN = 1792 ) - integer*4 GL_POINT_TOKEN - parameter ( GL_POINT_TOKEN = 1793 ) - integer*4 GL_LINE_TOKEN - parameter ( GL_LINE_TOKEN = 1794 ) - integer*4 GL_POLYGON_TOKEN - parameter ( GL_POLYGON_TOKEN = 1795 ) - integer*4 GL_BITMAP_TOKEN - parameter ( GL_BITMAP_TOKEN = 1796 ) - integer*4 GL_DRAW_PIXEL_TOKEN - parameter ( GL_DRAW_PIXEL_TOKEN = 1797 ) - integer*4 GL_COPY_PIXEL_TOKEN - parameter ( GL_COPY_PIXEL_TOKEN = 1798 ) - integer*4 GL_LINE_RESET_TOKEN - parameter ( GL_LINE_RESET_TOKEN = 1799 ) - -C FogMode -C GL_LINEAR - integer*4 GL_EXP - parameter ( GL_EXP = 2048 ) - integer*4 GL_EXP2 - parameter ( GL_EXP2 = 2049 ) - -C FogParameter -C GL_FOG_COLOR -C GL_FOG_DENSITY -C GL_FOG_END -C GL_FOG_INDEX -C GL_FOG_MODE -C GL_FOG_START - -C FrontFaceDirection - integer*4 GL_CW - parameter ( GL_CW = 2304 ) - integer*4 GL_CCW - parameter ( GL_CCW = 2305 ) - -C GetConvolutionParameter -C GL_CONVOLUTION_BORDER_MODE_EXT -C GL_CONVOLUTION_FILTER_SCALE_EXT -C GL_CONVOLUTION_FILTER_BIAS_EXT -C GL_CONVOLUTION_FORMAT_EXT -C GL_CONVOLUTION_WIDTH_EXT -C GL_CONVOLUTION_HEIGHT_EXT -C GL_MAX_CONVOLUTION_WIDTH_EXT -C GL_MAX_CONVOLUTION_HEIGHT_EXT - -C GetHistogramParameter -C GL_HISTOGRAM_WIDTH_EXT -C GL_HISTOGRAM_FORMAT_EXT -C GL_HISTOGRAM_RED_SIZE_EXT -C GL_HISTOGRAM_GREEN_SIZE_EXT -C GL_HISTOGRAM_BLUE_SIZE_EXT -C GL_HISTOGRAM_ALPHA_SIZE_EXT -C GL_HISTOGRAM_LUMINANCE_SIZE_EXT -C GL_HISTOGRAM_SINK_EXT - -C GetMapTarget - integer*4 GL_COEFF - parameter ( GL_COEFF = 2560 ) - integer*4 GL_ORDER - parameter ( GL_ORDER = 2561 ) - integer*4 GL_DOMAIN - parameter ( GL_DOMAIN = 2562 ) - -C GetMinmaxParameter -C GL_MINMAX_FORMAT_EXT -C GL_MINMAX_SINK_EXT - -C GetPixelMap - integer*4 GL_PIXEL_MAP_I_TO_I - parameter ( GL_PIXEL_MAP_I_TO_I = 3184 ) - integer*4 GL_PIXEL_MAP_S_TO_S - parameter ( GL_PIXEL_MAP_S_TO_S = 3185 ) - integer*4 GL_PIXEL_MAP_I_TO_R - parameter ( GL_PIXEL_MAP_I_TO_R = 3186 ) - integer*4 GL_PIXEL_MAP_I_TO_G - parameter ( GL_PIXEL_MAP_I_TO_G = 3187 ) - integer*4 GL_PIXEL_MAP_I_TO_B - parameter ( GL_PIXEL_MAP_I_TO_B = 3188 ) - integer*4 GL_PIXEL_MAP_I_TO_A - parameter ( GL_PIXEL_MAP_I_TO_A = 3189 ) - integer*4 GL_PIXEL_MAP_R_TO_R - parameter ( GL_PIXEL_MAP_R_TO_R = 3190 ) - integer*4 GL_PIXEL_MAP_G_TO_G - parameter ( GL_PIXEL_MAP_G_TO_G = 3191 ) - integer*4 GL_PIXEL_MAP_B_TO_B - parameter ( GL_PIXEL_MAP_B_TO_B = 3192 ) - integer*4 GL_PIXEL_MAP_A_TO_A - parameter ( GL_PIXEL_MAP_A_TO_A = 3193 ) - -C GetTarget - integer*4 GL_CURRENT_COLOR - parameter ( GL_CURRENT_COLOR = 2816 ) - integer*4 GL_CURRENT_INDEX - parameter ( GL_CURRENT_INDEX = 2817 ) - integer*4 GL_CURRENT_NORMAL - parameter ( GL_CURRENT_NORMAL = 2818 ) - integer*4 GL_CURRENT_TEXTURE_COORDS - parameter ( GL_CURRENT_TEXTURE_COORDS = 2819 ) - integer*4 GL_CURRENT_RASTER_COLOR - parameter ( GL_CURRENT_RASTER_COLOR = 2820 ) - integer*4 GL_CURRENT_RASTER_INDEX - parameter ( GL_CURRENT_RASTER_INDEX = 2821 ) - integer*4 GL_CURRENT_RASTER_TEXTURE_COORDS - parameter ( GL_CURRENT_RASTER_TEXTURE_COORDS = 2822 ) - integer*4 GL_CURRENT_RASTER_POSITION - parameter ( GL_CURRENT_RASTER_POSITION = 2823 ) - integer*4 GL_CURRENT_RASTER_POSITION_VALID - parameter ( GL_CURRENT_RASTER_POSITION_VALID = 2824 ) - integer*4 GL_CURRENT_RASTER_DISTANCE - parameter ( GL_CURRENT_RASTER_DISTANCE = 2825 ) - integer*4 GL_POINT_SMOOTH - parameter ( GL_POINT_SMOOTH = 2832 ) - integer*4 GL_POINT_SIZE - parameter ( GL_POINT_SIZE = 2833 ) - integer*4 GL_POINT_SIZE_RANGE - parameter ( GL_POINT_SIZE_RANGE = 2834 ) - integer*4 GL_POINT_SIZE_GRANULARITY - parameter ( GL_POINT_SIZE_GRANULARITY = 2835 ) - integer*4 GL_LINE_SMOOTH - parameter ( GL_LINE_SMOOTH = 2848 ) - integer*4 GL_LINE_WIDTH - parameter ( GL_LINE_WIDTH = 2849 ) - integer*4 GL_LINE_WIDTH_RANGE - parameter ( GL_LINE_WIDTH_RANGE = 2850 ) - integer*4 GL_LINE_WIDTH_GRANULARITY - parameter ( GL_LINE_WIDTH_GRANULARITY = 2851 ) - integer*4 GL_LINE_STIPPLE - parameter ( GL_LINE_STIPPLE = 2852 ) - integer*4 GL_LINE_STIPPLE_PATTERN - parameter ( GL_LINE_STIPPLE_PATTERN = 2853 ) - integer*4 GL_LINE_STIPPLE_REPEAT - parameter ( GL_LINE_STIPPLE_REPEAT = 2854 ) - integer*4 GL_LIST_MODE - parameter ( GL_LIST_MODE = 2864 ) - integer*4 GL_MAX_LIST_NESTING - parameter ( GL_MAX_LIST_NESTING = 2865 ) - integer*4 GL_LIST_BASE - parameter ( GL_LIST_BASE = 2866 ) - integer*4 GL_LIST_INDEX - parameter ( GL_LIST_INDEX = 2867 ) - integer*4 GL_POLYGON_MODE - parameter ( GL_POLYGON_MODE = 2880 ) - integer*4 GL_POLYGON_SMOOTH - parameter ( GL_POLYGON_SMOOTH = 2881 ) - integer*4 GL_POLYGON_STIPPLE - parameter ( GL_POLYGON_STIPPLE = 2882 ) - integer*4 GL_EDGE_FLAG - parameter ( GL_EDGE_FLAG = 2883 ) - integer*4 GL_CULL_FACE - parameter ( GL_CULL_FACE = 2884 ) - integer*4 GL_CULL_FACE_MODE - parameter ( GL_CULL_FACE_MODE = 2885 ) - integer*4 GL_FRONT_FACE - parameter ( GL_FRONT_FACE = 2886 ) - integer*4 GL_LIGHTING - parameter ( GL_LIGHTING = 2896 ) - integer*4 GL_LIGHT_MODEL_LOCAL_VIEWER - parameter ( GL_LIGHT_MODEL_LOCAL_VIEWER = 2897 ) - integer*4 GL_LIGHT_MODEL_TWO_SIDE - parameter ( GL_LIGHT_MODEL_TWO_SIDE = 2898 ) - integer*4 GL_LIGHT_MODEL_AMBIENT - parameter ( GL_LIGHT_MODEL_AMBIENT = 2899 ) - integer*4 GL_SHADE_MODEL - parameter ( GL_SHADE_MODEL = 2900 ) - integer*4 GL_COLOR_MATERIAL_FACE - parameter ( GL_COLOR_MATERIAL_FACE = 2901 ) - integer*4 GL_COLOR_MATERIAL_PARAMETER - parameter ( GL_COLOR_MATERIAL_PARAMETER = 2902 ) - integer*4 GL_COLOR_MATERIAL - parameter ( GL_COLOR_MATERIAL = 2903 ) - integer*4 GL_FOG - parameter ( GL_FOG = 2912 ) - integer*4 GL_FOG_INDEX - parameter ( GL_FOG_INDEX = 2913 ) - integer*4 GL_FOG_DENSITY - parameter ( GL_FOG_DENSITY = 2914 ) - integer*4 GL_FOG_START - parameter ( GL_FOG_START = 2915 ) - integer*4 GL_FOG_END - parameter ( GL_FOG_END = 2916 ) - integer*4 GL_FOG_MODE - parameter ( GL_FOG_MODE = 2917 ) - integer*4 GL_FOG_COLOR - parameter ( GL_FOG_COLOR = 2918 ) - integer*4 GL_DEPTH_RANGE - parameter ( GL_DEPTH_RANGE = 2928 ) - integer*4 GL_DEPTH_TEST - parameter ( GL_DEPTH_TEST = 2929 ) - integer*4 GL_DEPTH_WRITEMASK - parameter ( GL_DEPTH_WRITEMASK = 2930 ) - integer*4 GL_DEPTH_CLEAR_VALUE - parameter ( GL_DEPTH_CLEAR_VALUE = 2931 ) - integer*4 GL_DEPTH_FUNC - parameter ( GL_DEPTH_FUNC = 2932 ) - integer*4 GL_ACCUM_CLEAR_VALUE - parameter ( GL_ACCUM_CLEAR_VALUE = 2944 ) - integer*4 GL_STENCIL_TEST - parameter ( GL_STENCIL_TEST = 2960 ) - integer*4 GL_STENCIL_CLEAR_VALUE - parameter ( GL_STENCIL_CLEAR_VALUE = 2961 ) - integer*4 GL_STENCIL_FUNC - parameter ( GL_STENCIL_FUNC = 2962 ) - integer*4 GL_STENCIL_VALUE_MASK - parameter ( GL_STENCIL_VALUE_MASK = 2963 ) - integer*4 GL_STENCIL_FAIL - parameter ( GL_STENCIL_FAIL = 2964 ) - integer*4 GL_STENCIL_PASS_DEPTH_FAIL - parameter ( GL_STENCIL_PASS_DEPTH_FAIL = 2965 ) - integer*4 GL_STENCIL_PASS_DEPTH_PASS - parameter ( GL_STENCIL_PASS_DEPTH_PASS = 2966 ) - integer*4 GL_STENCIL_REF - parameter ( GL_STENCIL_REF = 2967 ) - integer*4 GL_STENCIL_WRITEMASK - parameter ( GL_STENCIL_WRITEMASK = 2968 ) - integer*4 GL_MATRIX_MODE - parameter ( GL_MATRIX_MODE = 2976 ) - integer*4 GL_NORMALIZE - parameter ( GL_NORMALIZE = 2977 ) - integer*4 GL_VIEWPORT - parameter ( GL_VIEWPORT = 2978 ) - integer*4 GL_MODELVIEW_STACK_DEPTH - parameter ( GL_MODELVIEW_STACK_DEPTH = 2979 ) - integer*4 GL_PROJECTION_STACK_DEPTH - parameter ( GL_PROJECTION_STACK_DEPTH = 2980 ) - integer*4 GL_TEXTURE_STACK_DEPTH - parameter ( GL_TEXTURE_STACK_DEPTH = 2981 ) - integer*4 GL_MODELVIEW_MATRIX - parameter ( GL_MODELVIEW_MATRIX = 2982 ) - integer*4 GL_PROJECTION_MATRIX - parameter ( GL_PROJECTION_MATRIX = 2983 ) - integer*4 GL_TEXTURE_MATRIX - parameter ( GL_TEXTURE_MATRIX = 2984 ) - integer*4 GL_ATTRIB_STACK_DEPTH - parameter ( GL_ATTRIB_STACK_DEPTH = 2992 ) - integer*4 GL_ALPHA_TEST - parameter ( GL_ALPHA_TEST = 3008 ) - integer*4 GL_ALPHA_TEST_FUNC - parameter ( GL_ALPHA_TEST_FUNC = 3009 ) - integer*4 GL_ALPHA_TEST_REF - parameter ( GL_ALPHA_TEST_REF = 3010 ) - integer*4 GL_DITHER - parameter ( GL_DITHER = 3024 ) - integer*4 GL_BLEND_DST - parameter ( GL_BLEND_DST = 3040 ) - integer*4 GL_BLEND_SRC - parameter ( GL_BLEND_SRC = 3041 ) - integer*4 GL_BLEND - parameter ( GL_BLEND = 3042 ) - integer*4 GL_LOGIC_OP_MODE - parameter ( GL_LOGIC_OP_MODE = 3056 ) - integer*4 GL_LOGIC_OP - parameter ( GL_LOGIC_OP = 3057 ) - integer*4 GL_AUX_BUFFERS - parameter ( GL_AUX_BUFFERS = 3072 ) - integer*4 GL_DRAW_BUFFER - parameter ( GL_DRAW_BUFFER = 3073 ) - integer*4 GL_READ_BUFFER - parameter ( GL_READ_BUFFER = 3074 ) - integer*4 GL_SCISSOR_BOX - parameter ( GL_SCISSOR_BOX = 3088 ) - integer*4 GL_SCISSOR_TEST - parameter ( GL_SCISSOR_TEST = 3089 ) - integer*4 GL_INDEX_CLEAR_VALUE - parameter ( GL_INDEX_CLEAR_VALUE = 3104 ) - integer*4 GL_INDEX_WRITEMASK - parameter ( GL_INDEX_WRITEMASK = 3105 ) - integer*4 GL_COLOR_CLEAR_VALUE - parameter ( GL_COLOR_CLEAR_VALUE = 3106 ) - integer*4 GL_COLOR_WRITEMASK - parameter ( GL_COLOR_WRITEMASK = 3107 ) - integer*4 GL_INDEX_MODE - parameter ( GL_INDEX_MODE = 3120 ) - integer*4 GL_RGBA_MODE - parameter ( GL_RGBA_MODE = 3121 ) - integer*4 GL_DOUBLEBUFFER - parameter ( GL_DOUBLEBUFFER = 3122 ) - integer*4 GL_STEREO - parameter ( GL_STEREO = 3123 ) - integer*4 GL_RENDER_MODE - parameter ( GL_RENDER_MODE = 3136 ) - integer*4 GL_PERSPECTIVE_CORRECTION_HINT - parameter ( GL_PERSPECTIVE_CORRECTION_HINT = 3152 ) - integer*4 GL_POINT_SMOOTH_HINT - parameter ( GL_POINT_SMOOTH_HINT = 3153 ) - integer*4 GL_LINE_SMOOTH_HINT - parameter ( GL_LINE_SMOOTH_HINT = 3154 ) - integer*4 GL_POLYGON_SMOOTH_HINT - parameter ( GL_POLYGON_SMOOTH_HINT = 3155 ) - integer*4 GL_FOG_HINT - parameter ( GL_FOG_HINT = 3156 ) - integer*4 GL_TEXTURE_GEN_S - parameter ( GL_TEXTURE_GEN_S = 3168 ) - integer*4 GL_TEXTURE_GEN_T - parameter ( GL_TEXTURE_GEN_T = 3169 ) - integer*4 GL_TEXTURE_GEN_R - parameter ( GL_TEXTURE_GEN_R = 3170 ) - integer*4 GL_TEXTURE_GEN_Q - parameter ( GL_TEXTURE_GEN_Q = 3171 ) - integer*4 GL_PIXEL_MAP_I_TO_I_SIZE - parameter ( GL_PIXEL_MAP_I_TO_I_SIZE = 3248 ) - integer*4 GL_PIXEL_MAP_S_TO_S_SIZE - parameter ( GL_PIXEL_MAP_S_TO_S_SIZE = 3249 ) - integer*4 GL_PIXEL_MAP_I_TO_R_SIZE - parameter ( GL_PIXEL_MAP_I_TO_R_SIZE = 3250 ) - integer*4 GL_PIXEL_MAP_I_TO_G_SIZE - parameter ( GL_PIXEL_MAP_I_TO_G_SIZE = 3251 ) - integer*4 GL_PIXEL_MAP_I_TO_B_SIZE - parameter ( GL_PIXEL_MAP_I_TO_B_SIZE = 3252 ) - integer*4 GL_PIXEL_MAP_I_TO_A_SIZE - parameter ( GL_PIXEL_MAP_I_TO_A_SIZE = 3253 ) - integer*4 GL_PIXEL_MAP_R_TO_R_SIZE - parameter ( GL_PIXEL_MAP_R_TO_R_SIZE = 3254 ) - integer*4 GL_PIXEL_MAP_G_TO_G_SIZE - parameter ( GL_PIXEL_MAP_G_TO_G_SIZE = 3255 ) - integer*4 GL_PIXEL_MAP_B_TO_B_SIZE - parameter ( GL_PIXEL_MAP_B_TO_B_SIZE = 3256 ) - integer*4 GL_PIXEL_MAP_A_TO_A_SIZE - parameter ( GL_PIXEL_MAP_A_TO_A_SIZE = 3257 ) - integer*4 GL_UNPACK_SWAP_BYTES - parameter ( GL_UNPACK_SWAP_BYTES = 3312 ) - integer*4 GL_UNPACK_LSB_FIRST - parameter ( GL_UNPACK_LSB_FIRST = 3313 ) - integer*4 GL_UNPACK_ROW_LENGTH - parameter ( GL_UNPACK_ROW_LENGTH = 3314 ) - integer*4 GL_UNPACK_SKIP_ROWS - parameter ( GL_UNPACK_SKIP_ROWS = 3315 ) - integer*4 GL_UNPACK_SKIP_PIXELS - parameter ( GL_UNPACK_SKIP_PIXELS = 3316 ) - integer*4 GL_UNPACK_ALIGNMENT - parameter ( GL_UNPACK_ALIGNMENT = 3317 ) - integer*4 GL_PACK_SWAP_BYTES - parameter ( GL_PACK_SWAP_BYTES = 3328 ) - integer*4 GL_PACK_LSB_FIRST - parameter ( GL_PACK_LSB_FIRST = 3329 ) - integer*4 GL_PACK_ROW_LENGTH - parameter ( GL_PACK_ROW_LENGTH = 3330 ) - integer*4 GL_PACK_SKIP_ROWS - parameter ( GL_PACK_SKIP_ROWS = 3331 ) - integer*4 GL_PACK_SKIP_PIXELS - parameter ( GL_PACK_SKIP_PIXELS = 3332 ) - integer*4 GL_PACK_ALIGNMENT - parameter ( GL_PACK_ALIGNMENT = 3333 ) - integer*4 GL_MAP_COLOR - parameter ( GL_MAP_COLOR = 3344 ) - integer*4 GL_MAP_STENCIL - parameter ( GL_MAP_STENCIL = 3345 ) - integer*4 GL_INDEX_SHIFT - parameter ( GL_INDEX_SHIFT = 3346 ) - integer*4 GL_INDEX_OFFSET - parameter ( GL_INDEX_OFFSET = 3347 ) - integer*4 GL_RED_SCALE - parameter ( GL_RED_SCALE = 3348 ) - integer*4 GL_RED_BIAS - parameter ( GL_RED_BIAS = 3349 ) - integer*4 GL_ZOOM_X - parameter ( GL_ZOOM_X = 3350 ) - integer*4 GL_ZOOM_Y - parameter ( GL_ZOOM_Y = 3351 ) - integer*4 GL_GREEN_SCALE - parameter ( GL_GREEN_SCALE = 3352 ) - integer*4 GL_GREEN_BIAS - parameter ( GL_GREEN_BIAS = 3353 ) - integer*4 GL_BLUE_SCALE - parameter ( GL_BLUE_SCALE = 3354 ) - integer*4 GL_BLUE_BIAS - parameter ( GL_BLUE_BIAS = 3355 ) - integer*4 GL_ALPHA_SCALE - parameter ( GL_ALPHA_SCALE = 3356 ) - integer*4 GL_ALPHA_BIAS - parameter ( GL_ALPHA_BIAS = 3357 ) - integer*4 GL_DEPTH_SCALE - parameter ( GL_DEPTH_SCALE = 3358 ) - integer*4 GL_DEPTH_BIAS - parameter ( GL_DEPTH_BIAS = 3359 ) - integer*4 GL_MAX_EVAL_ORDER - parameter ( GL_MAX_EVAL_ORDER = 3376 ) - integer*4 GL_MAX_LIGHTS - parameter ( GL_MAX_LIGHTS = 3377 ) - integer*4 GL_MAX_CLIP_PLANES - parameter ( GL_MAX_CLIP_PLANES = 3378 ) - integer*4 GL_MAX_TEXTURE_SIZE - parameter ( GL_MAX_TEXTURE_SIZE = 3379 ) - integer*4 GL_MAX_PIXEL_MAP_TABLE - parameter ( GL_MAX_PIXEL_MAP_TABLE = 3380 ) - integer*4 GL_MAX_ATTRIB_STACK_DEPTH - parameter ( GL_MAX_ATTRIB_STACK_DEPTH = 3381 ) - integer*4 GL_MAX_MODELVIEW_STACK_DEPTH - parameter ( GL_MAX_MODELVIEW_STACK_DEPTH = 3382 ) - integer*4 GL_MAX_NAME_STACK_DEPTH - parameter ( GL_MAX_NAME_STACK_DEPTH = 3383 ) - integer*4 GL_MAX_PROJECTION_STACK_DEPTH - parameter ( GL_MAX_PROJECTION_STACK_DEPTH = 3384 ) - integer*4 GL_MAX_TEXTURE_STACK_DEPTH - parameter ( GL_MAX_TEXTURE_STACK_DEPTH = 3385 ) - integer*4 GL_MAX_VIEWPORT_DIMS - parameter ( GL_MAX_VIEWPORT_DIMS = 3386 ) - integer*4 GL_SUBPIXEL_BITS - parameter ( GL_SUBPIXEL_BITS = 3408 ) - integer*4 GL_INDEX_BITS - parameter ( GL_INDEX_BITS = 3409 ) - integer*4 GL_RED_BITS - parameter ( GL_RED_BITS = 3410 ) - integer*4 GL_GREEN_BITS - parameter ( GL_GREEN_BITS = 3411 ) - integer*4 GL_BLUE_BITS - parameter ( GL_BLUE_BITS = 3412 ) - integer*4 GL_ALPHA_BITS - parameter ( GL_ALPHA_BITS = 3413 ) - integer*4 GL_DEPTH_BITS - parameter ( GL_DEPTH_BITS = 3414 ) - integer*4 GL_STENCIL_BITS - parameter ( GL_STENCIL_BITS = 3415 ) - integer*4 GL_ACCUM_RED_BITS - parameter ( GL_ACCUM_RED_BITS = 3416 ) - integer*4 GL_ACCUM_GREEN_BITS - parameter ( GL_ACCUM_GREEN_BITS = 3417 ) - integer*4 GL_ACCUM_BLUE_BITS - parameter ( GL_ACCUM_BLUE_BITS = 3418 ) - integer*4 GL_ACCUM_ALPHA_BITS - parameter ( GL_ACCUM_ALPHA_BITS = 3419 ) - integer*4 GL_NAME_STACK_DEPTH - parameter ( GL_NAME_STACK_DEPTH = 3440 ) - integer*4 GL_AUTO_NORMAL - parameter ( GL_AUTO_NORMAL = 3456 ) - integer*4 GL_MAP1_COLOR_4 - parameter ( GL_MAP1_COLOR_4 = 3472 ) - integer*4 GL_MAP1_INDEX - parameter ( GL_MAP1_INDEX = 3473 ) - integer*4 GL_MAP1_NORMAL - parameter ( GL_MAP1_NORMAL = 3474 ) - integer*4 GL_MAP1_TEXTURE_COORD_1 - parameter ( GL_MAP1_TEXTURE_COORD_1 = 3475 ) - integer*4 GL_MAP1_TEXTURE_COORD_2 - parameter ( GL_MAP1_TEXTURE_COORD_2 = 3476 ) - integer*4 GL_MAP1_TEXTURE_COORD_3 - parameter ( GL_MAP1_TEXTURE_COORD_3 = 3477 ) - integer*4 GL_MAP1_TEXTURE_COORD_4 - parameter ( GL_MAP1_TEXTURE_COORD_4 = 3478 ) - integer*4 GL_MAP1_VERTEX_3 - parameter ( GL_MAP1_VERTEX_3 = 3479 ) - integer*4 GL_MAP1_VERTEX_4 - parameter ( GL_MAP1_VERTEX_4 = 3480 ) - integer*4 GL_MAP2_COLOR_4 - parameter ( GL_MAP2_COLOR_4 = 3504 ) - integer*4 GL_MAP2_INDEX - parameter ( GL_MAP2_INDEX = 3505 ) - integer*4 GL_MAP2_NORMAL - parameter ( GL_MAP2_NORMAL = 3506 ) - integer*4 GL_MAP2_TEXTURE_COORD_1 - parameter ( GL_MAP2_TEXTURE_COORD_1 = 3507 ) - integer*4 GL_MAP2_TEXTURE_COORD_2 - parameter ( GL_MAP2_TEXTURE_COORD_2 = 3508 ) - integer*4 GL_MAP2_TEXTURE_COORD_3 - parameter ( GL_MAP2_TEXTURE_COORD_3 = 3509 ) - integer*4 GL_MAP2_TEXTURE_COORD_4 - parameter ( GL_MAP2_TEXTURE_COORD_4 = 3510 ) - integer*4 GL_MAP2_VERTEX_3 - parameter ( GL_MAP2_VERTEX_3 = 3511 ) - integer*4 GL_MAP2_VERTEX_4 - parameter ( GL_MAP2_VERTEX_4 = 3512 ) - integer*4 GL_MAP1_GRID_DOMAIN - parameter ( GL_MAP1_GRID_DOMAIN = 3536 ) - integer*4 GL_MAP1_GRID_SEGMENTS - parameter ( GL_MAP1_GRID_SEGMENTS = 3537 ) - integer*4 GL_MAP2_GRID_DOMAIN - parameter ( GL_MAP2_GRID_DOMAIN = 3538 ) - integer*4 GL_MAP2_GRID_SEGMENTS - parameter ( GL_MAP2_GRID_SEGMENTS = 3539 ) - integer*4 GL_TEXTURE_1D - parameter ( GL_TEXTURE_1D = 3552 ) - integer*4 GL_TEXTURE_2D - parameter ( GL_TEXTURE_2D = 3553 ) -C GL_BLEND_COLOR_EXT -C GL_BLEND_EQUATION_EXT -C GL_CONVOLUTION_1D_EXT -C GL_CONVOLUTION_2D_EXT -C GL_SEPARABLE_2D_EXT -C GL_POST_CONVOLUTION_RED_SCALE_EXT -C GL_POST_CONVOLUTION_GREEN_SCALE_EXT -C GL_POST_CONVOLUTION_BLUE_SCALE_EXT -C GL_POST_CONVOLUTION_ALPHA_SCALE_EXT -C GL_POST_CONVOLUTION_RED_BIAS_EXT -C GL_POST_CONVOLUTION_GREEN_BIAS_EXT -C GL_POST_CONVOLUTION_BLUE_BIAS_EXT -C GL_POST_CONVOLUTION_ALPHA_BIAS_EXT -C GL_HISTOGRAM_EXT -C GL_MINMAX_EXT -C GL_POLYGON_OFFSET_EXT -C GL_POLYGON_OFFSET_FACTOR_EXT -C GL_POLYGON_OFFSET_BIAS_EXT -C GL_PACK_SKIP_IMAGES_EXT -C GL_PACK_IMAGE_HEIGHT_EXT -C GL_UNPACK_SKIP_IMAGES_EXT -C GL_UNPACK_IMAGE_HEIGHT_EXT -C GL_TEXTURE_3D_EXT -C GL_MAX_3D_TEXTURE_SIZE_EXT -C GL_DETAIL_TEXTURE_2D_BINDING_SGIS -C GL_MULTISAMPLE_SGIS -C GL_SAMPLE_ALPHA_TO_MASK_SGIS -C GL_SAMPLE_ALPHA_TO_ONE_SGIS -C GL_SAMPLE_MASK_SGIS -C GL_SAMPLE_BUFFERS_SGIS -C GL_SAMPLES_SGIS -C GL_SAMPLE_MASK_VALUE_SGIS -C GL_SAMPLE_MASK_INVERT_SGIS -C GL_SAMPLE_PATTERN_SGIS - -C GetTextureParameter -C GL_TEXTURE_MAG_FILTER -C GL_TEXTURE_MIN_FILTER -C GL_TEXTURE_WRAP_S -C GL_TEXTURE_WRAP_T - integer*4 GL_TEXTURE_WIDTH - parameter ( GL_TEXTURE_WIDTH = 4096 ) - integer*4 GL_TEXTURE_HEIGHT - parameter ( GL_TEXTURE_HEIGHT = 4097 ) - integer*4 GL_TEXTURE_COMPONENTS - parameter ( GL_TEXTURE_COMPONENTS = 4099 ) - integer*4 GL_TEXTURE_BORDER_COLOR - parameter ( GL_TEXTURE_BORDER_COLOR = 4100 ) - integer*4 GL_TEXTURE_BORDER - parameter ( GL_TEXTURE_BORDER = 4101 ) -C GL_TEXTURE_RED_SIZE_EXT -C GL_TEXTURE_GREEN_SIZE_EXT -C GL_TEXTURE_BLUE_SIZE_EXT -C GL_TEXTURE_ALPHA_SIZE_EXT -C GL_TEXTURE_LUMINANCE_SIZE_EXT -C GL_TEXTURE_INTENSITY_SIZE_EXT -C GL_TEXTURE_DEPTH_EXT -C GL_TEXTURE_WRAP_R_EXT -C GL_DETAIL_TEXTURE_LEVEL_SGIS -C GL_DETAIL_TEXTURE_MODE_SGIS -C GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS -C GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS - -C HintMode - integer*4 GL_DONT_CARE - parameter ( GL_DONT_CARE = 4352 ) - integer*4 GL_FASTEST - parameter ( GL_FASTEST = 4353 ) - integer*4 GL_NICEST - parameter ( GL_NICEST = 4354 ) - -C HintTarget -C GL_PERSPECTIVE_CORRECTION_HINT -C GL_POINT_SMOOTH_HINT -C GL_LINE_SMOOTH_HINT -C GL_POLYGON_SMOOTH_HINT -C GL_FOG_HINT - -C HistogramTarget -C GL_HISTOGRAM_EXT -C GL_PROXY_HISTOGRAM_EXT - -C LightModelParameter -C GL_LIGHT_MODEL_AMBIENT -C GL_LIGHT_MODEL_LOCAL_VIEWER -C GL_LIGHT_MODEL_TWO_SIDE - -C LightParameter - integer*4 GL_AMBIENT - parameter ( GL_AMBIENT = 4608 ) - integer*4 GL_DIFFUSE - parameter ( GL_DIFFUSE = 4609 ) - integer*4 GL_SPECULAR - parameter ( GL_SPECULAR = 4610 ) - integer*4 GL_POSITION - parameter ( GL_POSITION = 4611 ) - integer*4 GL_SPOT_DIRECTION - parameter ( GL_SPOT_DIRECTION = 4612 ) - integer*4 GL_SPOT_EXPONENT - parameter ( GL_SPOT_EXPONENT = 4613 ) - integer*4 GL_SPOT_CUTOFF - parameter ( GL_SPOT_CUTOFF = 4614 ) - integer*4 GL_CONSTANT_ATTENUATION - parameter ( GL_CONSTANT_ATTENUATION = 4615 ) - integer*4 GL_LINEAR_ATTENUATION - parameter ( GL_LINEAR_ATTENUATION = 4616 ) - integer*4 GL_QUADRATIC_ATTENUATION - parameter ( GL_QUADRATIC_ATTENUATION = 4617 ) - -C ListMode - integer*4 GL_COMPILE - parameter ( GL_COMPILE = 4864 ) - integer*4 GL_COMPILE_AND_EXECUTE - parameter ( GL_COMPILE_AND_EXECUTE = 4865 ) - -C ListNameType - integer*4 GL_BYTE - parameter ( GL_BYTE = 5120 ) - integer*4 GL_UNSIGNED_BYTE - parameter ( GL_UNSIGNED_BYTE = 5121 ) - integer*4 GL_SHORT - parameter ( GL_SHORT = 5122 ) - integer*4 GL_UNSIGNED_SHORT - parameter ( GL_UNSIGNED_SHORT = 5123 ) - integer*4 GL_INT - parameter ( GL_INT = 5124 ) - integer*4 GL_UNSIGNED_INT - parameter ( GL_UNSIGNED_INT = 5125 ) - integer*4 GL_FLOAT - parameter ( GL_FLOAT = 5126 ) - integer*4 GL_2_BYTES - parameter ( GL_2_BYTES = 5127 ) - integer*4 GL_3_BYTES - parameter ( GL_3_BYTES = 5128 ) - integer*4 GL_4_BYTES - parameter ( GL_4_BYTES = 5129 ) - -C LogicOp - integer*4 GL_CLEAR - parameter ( GL_CLEAR = 5376 ) - integer*4 GL_AND - parameter ( GL_AND = 5377 ) - integer*4 GL_AND_REVERSE - parameter ( GL_AND_REVERSE = 5378 ) - integer*4 GL_COPY - parameter ( GL_COPY = 5379 ) - integer*4 GL_AND_INVERTED - parameter ( GL_AND_INVERTED = 5380 ) - integer*4 GL_NOOP - parameter ( GL_NOOP = 5381 ) - integer*4 GL_XOR - parameter ( GL_XOR = 5382 ) - integer*4 GL_OR - parameter ( GL_OR = 5383 ) - integer*4 GL_NOR - parameter ( GL_NOR = 5384 ) - integer*4 GL_EQUIV - parameter ( GL_EQUIV = 5385 ) - integer*4 GL_INVERT - parameter ( GL_INVERT = 5386 ) - integer*4 GL_OR_REVERSE - parameter ( GL_OR_REVERSE = 5387 ) - integer*4 GL_COPY_INVERTED - parameter ( GL_COPY_INVERTED = 5388 ) - integer*4 GL_OR_INVERTED - parameter ( GL_OR_INVERTED = 5389 ) - integer*4 GL_NAND - parameter ( GL_NAND = 5390 ) - integer*4 GL_SET - parameter ( GL_SET = 5391 ) - -C MapTarget -C GL_MAP1_COLOR_4 -C GL_MAP1_INDEX -C GL_MAP1_NORMAL -C GL_MAP1_TEXTURE_COORD_1 -C GL_MAP1_TEXTURE_COORD_2 -C GL_MAP1_TEXTURE_COORD_3 -C GL_MAP1_TEXTURE_COORD_4 -C GL_MAP1_VERTEX_3 -C GL_MAP1_VERTEX_4 -C GL_MAP2_COLOR_4 -C GL_MAP2_INDEX -C GL_MAP2_NORMAL -C GL_MAP2_TEXTURE_COORD_1 -C GL_MAP2_TEXTURE_COORD_2 -C GL_MAP2_TEXTURE_COORD_3 -C GL_MAP2_TEXTURE_COORD_4 -C GL_MAP2_VERTEX_3 -C GL_MAP2_VERTEX_4 - -C MaterialFace -C GL_FRONT -C GL_BACK -C GL_FRONT_AND_BACK - -C MaterialParameter - integer*4 GL_EMISSION - parameter ( GL_EMISSION = 5632 ) - integer*4 GL_SHININESS - parameter ( GL_SHININESS = 5633 ) - integer*4 GL_AMBIENT_AND_DIFFUSE - parameter ( GL_AMBIENT_AND_DIFFUSE = 5634 ) - integer*4 GL_COLOR_INDEXES - parameter ( GL_COLOR_INDEXES = 5635 ) -C GL_AMBIENT -C GL_DIFFUSE -C GL_SPECULAR - -C MatrixMode - integer*4 GL_MODELVIEW - parameter ( GL_MODELVIEW = 5888 ) - integer*4 GL_PROJECTION - parameter ( GL_PROJECTION = 5889 ) - integer*4 GL_TEXTURE - parameter ( GL_TEXTURE = 5890 ) - -C MeshMode1 -C GL_POINT -C GL_LINE - -C MeshMode2 -C GL_POINT -C GL_LINE -C GL_FILL - -C MinmaxTarget -C GL_MINMAX_EXT - -C PixelCopyType - integer*4 GL_COLOR - parameter ( GL_COLOR = 6144 ) - integer*4 GL_DEPTH - parameter ( GL_DEPTH = 6145 ) - integer*4 GL_STENCIL - parameter ( GL_STENCIL = 6146 ) - -C PixelFormat - integer*4 GL_COLOR_INDEX - parameter ( GL_COLOR_INDEX = 6400 ) - integer*4 GL_STENCIL_INDEX - parameter ( GL_STENCIL_INDEX = 6401 ) - integer*4 GL_DEPTH_COMPONENT - parameter ( GL_DEPTH_COMPONENT = 6402 ) - integer*4 GL_RED - parameter ( GL_RED = 6403 ) - integer*4 GL_GREEN - parameter ( GL_GREEN = 6404 ) - integer*4 GL_BLUE - parameter ( GL_BLUE = 6405 ) - integer*4 GL_ALPHA - parameter ( GL_ALPHA = 6406 ) - integer*4 GL_RGB - parameter ( GL_RGB = 6407 ) - integer*4 GL_RGBA - parameter ( GL_RGBA = 6408 ) - integer*4 GL_LUMINANCE - parameter ( GL_LUMINANCE = 6409 ) - integer*4 GL_LUMINANCE_ALPHA - parameter ( GL_LUMINANCE_ALPHA = 6410 ) -C GL_ABGR_EXT - -C PixelInternalFormat -C GL_ALPHA4_EXT -C GL_ALPHA8_EXT -C GL_ALPHA12_EXT -C GL_ALPHA16_EXT -C GL_LUMINANCE4_EXT -C GL_LUMINANCE8_EXT -C GL_LUMINANCE12_EXT -C GL_LUMINANCE16_EXT -C GL_LUMINANCE4_ALPHA4_EXT -C GL_LUMINANCE6_ALPHA2_EXT -C GL_LUMINANCE8_ALPHA8_EXT -C GL_LUMINANCE12_ALPHA4_EXT -C GL_LUMINANCE12_ALPHA12_EXT -C GL_LUMINANCE16_ALPHA16_EXT -C GL_INTENSITY_EXT -C GL_INTENSITY4_EXT -C GL_INTENSITY8_EXT -C GL_INTENSITY12_EXT -C GL_INTENSITY16_EXT -C GL_RGB2_EXT -C GL_RGB4_EXT -C GL_RGB5_EXT -C GL_RGB8_EXT -C GL_RGB10_EXT -C GL_RGB12_EXT -C GL_RGB16_EXT -C GL_RGBA2_EXT -C GL_RGBA4_EXT -C GL_RGB5_A1_EXT -C GL_RGBA8_EXT -C GL_RGB10_A2_EXT -C GL_RGBA12_EXT -C GL_RGBA16_EXT - -C PixelMap -C GL_PIXEL_MAP_I_TO_I -C GL_PIXEL_MAP_S_TO_S -C GL_PIXEL_MAP_I_TO_R -C GL_PIXEL_MAP_I_TO_G -C GL_PIXEL_MAP_I_TO_B -C GL_PIXEL_MAP_I_TO_A -C GL_PIXEL_MAP_R_TO_R -C GL_PIXEL_MAP_G_TO_G -C GL_PIXEL_MAP_B_TO_B -C GL_PIXEL_MAP_A_TO_A - -C PixelStore -C GL_UNPACK_SWAP_BYTES -C GL_UNPACK_LSB_FIRST -C GL_UNPACK_ROW_LENGTH -C GL_UNPACK_SKIP_ROWS -C GL_UNPACK_SKIP_PIXELS -C GL_UNPACK_ALIGNMENT -C GL_PACK_SWAP_BYTES -C GL_PACK_LSB_FIRST -C GL_PACK_ROW_LENGTH -C GL_PACK_SKIP_ROWS -C GL_PACK_SKIP_PIXELS -C GL_PACK_ALIGNMENT -C GL_PACK_SKIP_IMAGES_EXT -C GL_PACK_IMAGE_HEIGHT_EXT -C GL_UNPACK_SKIP_IMAGES_EXT -C GL_UNPACK_IMAGE_HEIGHT_EXT - -C PixelTransfer -C GL_MAP_COLOR -C GL_MAP_STENCIL -C GL_INDEX_SHIFT -C GL_INDEX_OFFSET -C GL_RED_SCALE -C GL_RED_BIAS -C GL_GREEN_SCALE -C GL_GREEN_BIAS -C GL_BLUE_SCALE -C GL_BLUE_BIAS -C GL_ALPHA_SCALE -C GL_ALPHA_BIAS -C GL_DEPTH_SCALE -C GL_DEPTH_BIAS -C GL_POST_CONVOLUTION_RED_SCALE_EXT -C GL_POST_CONVOLUTION_GREEN_SCALE_EXT -C GL_POST_CONVOLUTION_BLUE_SCALE_EXT -C GL_POST_CONVOLUTION_ALPHA_SCALE_EXT -C GL_POST_CONVOLUTION_RED_BIAS_EXT -C GL_POST_CONVOLUTION_GREEN_BIAS_EXT -C GL_POST_CONVOLUTION_BLUE_BIAS_EXT -C GL_POST_CONVOLUTION_ALPHA_BIAS_EXT - -C PixelType - integer*4 GL_BITMAP - parameter ( GL_BITMAP = 6656 ) -C GL_BYTE -C GL_UNSIGNED_BYTE -C GL_SHORT -C GL_UNSIGNED_SHORT -C GL_INT -C GL_UNSIGNED_INT -C GL_FLOAT - -C PolygonMode - integer*4 GL_POINT - parameter ( GL_POINT = 6912 ) - integer*4 GL_LINE - parameter ( GL_LINE = 6913 ) - integer*4 GL_FILL - parameter ( GL_FILL = 6914 ) - -C ReadBufferMode -C GL_FRONT_LEFT -C GL_FRONT_RIGHT -C GL_BACK_LEFT -C GL_BACK_RIGHT -C GL_FRONT -C GL_BACK -C GL_LEFT -C GL_RIGHT -C GL_AUX0 -C GL_AUX1 -C GL_AUX2 -C GL_AUX3 - -C RenderingMode - integer*4 GL_RENDER - parameter ( GL_RENDER = 7168 ) - integer*4 GL_FEEDBACK - parameter ( GL_FEEDBACK = 7169 ) - integer*4 GL_SELECT - parameter ( GL_SELECT = 7170 ) - -C SamplePattern -C GL_1PASS_SGIS -C GL_2PASS_0_SGIS -C GL_2PASS_1_SGIS -C GL_4PASS_0_SGIS -C GL_4PASS_1_SGIS -C GL_4PASS_2_SGIS -C GL_4PASS_3_SGIS - -C SeparableTarget -C GL_SEPARABLE_2D_EXT - -C ShadingModel - integer*4 GL_FLAT - parameter ( GL_FLAT = 7424 ) - integer*4 GL_SMOOTH - parameter ( GL_SMOOTH = 7425 ) - -C StencilFunction -C GL_NEVER -C GL_LESS -C GL_EQUAL -C GL_LEQUAL -C GL_GREATER -C GL_NOTEQUAL -C GL_GEQUAL -C GL_ALWAYS - -C StencilOp -C GL_ZERO - integer*4 GL_KEEP - parameter ( GL_KEEP = 7680 ) - integer*4 GL_REPLACE - parameter ( GL_REPLACE = 7681 ) - integer*4 GL_INCR - parameter ( GL_INCR = 7682 ) - integer*4 GL_DECR - parameter ( GL_DECR = 7683 ) -C GL_INVERT - -C StringName - integer*4 GL_VENDOR - parameter ( GL_VENDOR = 7936 ) - integer*4 GL_RENDERER - parameter ( GL_RENDERER = 7937 ) - integer*4 GL_VERSION - parameter ( GL_VERSION = 7938 ) - integer*4 GL_EXTENSIONS - parameter ( GL_EXTENSIONS = 7939 ) - -C TextureCoordName - integer*4 GL_S - parameter ( GL_S = 8192 ) - integer*4 GL_T - parameter ( GL_T = 8193 ) - integer*4 GL_R - parameter ( GL_R = 8194 ) - integer*4 GL_Q - parameter ( GL_Q = 8195 ) - -C TextureEnvMode - integer*4 GL_MODULATE - parameter ( GL_MODULATE = 8448 ) - integer*4 GL_DECAL - parameter ( GL_DECAL = 8449 ) -C GL_BLEND -C GL_REPLACE_EXT - -C TextureEnvParameter - integer*4 GL_TEXTURE_ENV_MODE - parameter ( GL_TEXTURE_ENV_MODE = 8704 ) - integer*4 GL_TEXTURE_ENV_COLOR - parameter ( GL_TEXTURE_ENV_COLOR = 8705 ) - -C TextureEnvTarget - integer*4 GL_TEXTURE_ENV - parameter ( GL_TEXTURE_ENV = 8960 ) - -C TextureGenMode - integer*4 GL_EYE_LINEAR - parameter ( GL_EYE_LINEAR = 9216 ) - integer*4 GL_OBJECT_LINEAR - parameter ( GL_OBJECT_LINEAR = 9217 ) - integer*4 GL_SPHERE_MAP - parameter ( GL_SPHERE_MAP = 9218 ) - -C TextureGenParameter - integer*4 GL_TEXTURE_GEN_MODE - parameter ( GL_TEXTURE_GEN_MODE = 9472 ) - integer*4 GL_OBJECT_PLANE - parameter ( GL_OBJECT_PLANE = 9473 ) - integer*4 GL_EYE_PLANE - parameter ( GL_EYE_PLANE = 9474 ) - -C TextureMagFilter - integer*4 GL_NEAREST - parameter ( GL_NEAREST = 9728 ) - integer*4 GL_LINEAR - parameter ( GL_LINEAR = 9729 ) -C GL_LINEAR_DETAIL_SGIS -C GL_LINEAR_DETAIL_ALPHA_SGIS -C GL_LINEAR_DETAIL_COLOR_SGIS -C GL_LINEAR_SHARPEN_SGIS -C GL_LINEAR_SHARPEN_ALPHA_SGIS -C GL_LINEAR_SHARPEN_COLOR_SGIS - -C TextureMinFilter -C GL_NEAREST -C GL_LINEAR - integer*4 GL_NEAREST_MIPMAP_NEAREST - parameter ( GL_NEAREST_MIPMAP_NEAREST = 9984 ) - integer*4 GL_LINEAR_MIPMAP_NEAREST - parameter ( GL_LINEAR_MIPMAP_NEAREST = 9985 ) - integer*4 GL_NEAREST_MIPMAP_LINEAR - parameter ( GL_NEAREST_MIPMAP_LINEAR = 9986 ) - integer*4 GL_LINEAR_MIPMAP_LINEAR - parameter ( GL_LINEAR_MIPMAP_LINEAR = 9987 ) - -C TextureParameterName - integer*4 GL_TEXTURE_MAG_FILTER - parameter ( GL_TEXTURE_MAG_FILTER = 10240 ) - integer*4 GL_TEXTURE_MIN_FILTER - parameter ( GL_TEXTURE_MIN_FILTER = 10241 ) - integer*4 GL_TEXTURE_WRAP_S - parameter ( GL_TEXTURE_WRAP_S = 10242 ) - integer*4 GL_TEXTURE_WRAP_T - parameter ( GL_TEXTURE_WRAP_T = 10243 ) -C GL_TEXTURE_BORDER_COLOR -C GL_TEXTURE_WRAP_R_EXT -C GL_DETAIL_TEXTURE_LEVEL_SGIS -C GL_DETAIL_TEXTURE_MODE_SGIS - -C TextureTarget -C GL_TEXTURE_1D -C GL_TEXTURE_2D -C GL_PROXY_TEXTURE_1D_EXT -C GL_PROXY_TEXTURE_2D_EXT -C GL_TEXTURE_3D_EXT -C GL_PROXY_TEXTURE_3D_EXT -C GL_DETAIL_TEXTURE_2D_SGIS - -C TextureWrapMode - integer*4 GL_CLAMP - parameter ( GL_CLAMP = 10496 ) - integer*4 GL_REPEAT - parameter ( GL_REPEAT = 10497 ) - -C ClipPlaneName - integer*4 GL_CLIP_PLANE0 - parameter ( GL_CLIP_PLANE0 = 12288 ) - integer*4 GL_CLIP_PLANE1 - parameter ( GL_CLIP_PLANE1 = 12289 ) - integer*4 GL_CLIP_PLANE2 - parameter ( GL_CLIP_PLANE2 = 12290 ) - integer*4 GL_CLIP_PLANE3 - parameter ( GL_CLIP_PLANE3 = 12291 ) - integer*4 GL_CLIP_PLANE4 - parameter ( GL_CLIP_PLANE4 = 12292 ) - integer*4 GL_CLIP_PLANE5 - parameter ( GL_CLIP_PLANE5 = 12293 ) - -C LightName - integer*4 GL_LIGHT0 - parameter ( GL_LIGHT0 = 16384 ) - integer*4 GL_LIGHT1 - parameter ( GL_LIGHT1 = 16385 ) - integer*4 GL_LIGHT2 - parameter ( GL_LIGHT2 = 16386 ) - integer*4 GL_LIGHT3 - parameter ( GL_LIGHT3 = 16387 ) - integer*4 GL_LIGHT4 - parameter ( GL_LIGHT4 = 16388 ) - integer*4 GL_LIGHT5 - parameter ( GL_LIGHT5 = 16389 ) - integer*4 GL_LIGHT6 - parameter ( GL_LIGHT6 = 16390 ) - integer*4 GL_LIGHT7 - parameter ( GL_LIGHT7 = 16391 ) - -C Extensions - integer*4 GL_EXT_abgr - parameter ( GL_EXT_abgr = 1 ) - integer*4 GL_EXT_blend_color - parameter ( GL_EXT_blend_color = 1 ) - integer*4 GL_EXT_blend_logic_op - parameter ( GL_EXT_blend_logic_op = 1 ) - integer*4 GL_EXT_blend_minmax - parameter ( GL_EXT_blend_minmax = 1 ) - integer*4 GL_EXT_blend_subtract - parameter ( GL_EXT_blend_subtract = 1 ) - integer*4 GL_EXT_convolution - parameter ( GL_EXT_convolution = 1 ) - integer*4 GL_EXT_histogram - parameter ( GL_EXT_histogram = 1 ) - integer*4 GL_EXT_polygon_offset - parameter ( GL_EXT_polygon_offset = 1 ) - integer*4 GL_EXT_subtexture - parameter ( GL_EXT_subtexture = 1 ) - integer*4 GL_EXT_texture - parameter ( GL_EXT_texture = 1 ) - integer*4 GL_EXT_texture3D - parameter ( GL_EXT_texture3D = 1 ) - integer*4 GL_SGIS_detail_texture - parameter ( GL_SGIS_detail_texture = 1 ) - integer*4 GL_SGIS_multisample - parameter ( GL_SGIS_multisample = 1 ) - integer*4 GL_SGIS_sharpen_texture - parameter ( GL_SGIS_sharpen_texture = 1 ) - -C EXT_abgr - integer*4 GL_ABGR_EXT - parameter ( GL_ABGR_EXT = 32768 ) - -C EXT_blend_color - integer*4 GL_CONSTANT_COLOR_EXT - parameter ( GL_CONSTANT_COLOR_EXT = 32769 ) - integer*4 GL_ONE_MINUS_CONSTANT_COLOR_EXT - parameter ( GL_ONE_MINUS_CONSTANT_COLOR_EXT = 32770 ) - integer*4 GL_CONSTANT_ALPHA_EXT - parameter ( GL_CONSTANT_ALPHA_EXT = 32771 ) - integer*4 GL_ONE_MINUS_CONSTANT_ALPHA_EXT - parameter ( GL_ONE_MINUS_CONSTANT_ALPHA_EXT = 32772 ) - integer*4 GL_BLEND_COLOR_EXT - parameter ( GL_BLEND_COLOR_EXT = 32773 ) - -C EXT_blend_minmax - integer*4 GL_FUNC_ADD_EXT - parameter ( GL_FUNC_ADD_EXT = 32774 ) - integer*4 GL_MIN_EXT - parameter ( GL_MIN_EXT = 32775 ) - integer*4 GL_MAX_EXT - parameter ( GL_MAX_EXT = 32776 ) - integer*4 GL_BLEND_EQUATION_EXT - parameter ( GL_BLEND_EQUATION_EXT = 32777 ) - -C EXT_blend_subtract - integer*4 GL_FUNC_SUBTRACT_EXT - parameter ( GL_FUNC_SUBTRACT_EXT = 32778 ) - integer*4 GL_FUNC_REVERSE_SUBTRACT_EXT - parameter ( GL_FUNC_REVERSE_SUBTRACT_EXT = 32779 ) - -C EXT_convolution - integer*4 GL_CONVOLUTION_1D_EXT - parameter ( GL_CONVOLUTION_1D_EXT = 32784 ) - integer*4 GL_CONVOLUTION_2D_EXT - parameter ( GL_CONVOLUTION_2D_EXT = 32785 ) - integer*4 GL_SEPARABLE_2D_EXT - parameter ( GL_SEPARABLE_2D_EXT = 32786 ) - integer*4 GL_CONVOLUTION_BORDER_MODE_EXT - parameter ( GL_CONVOLUTION_BORDER_MODE_EXT = 32787 ) - integer*4 GL_CONVOLUTION_FILTER_SCALE_EXT - parameter ( GL_CONVOLUTION_FILTER_SCALE_EXT = 32788 ) - integer*4 GL_CONVOLUTION_FILTER_BIAS_EXT - parameter ( GL_CONVOLUTION_FILTER_BIAS_EXT = 32789 ) - integer*4 GL_REDUCE_EXT - parameter ( GL_REDUCE_EXT = 32790 ) - integer*4 GL_CONVOLUTION_FORMAT_EXT - parameter ( GL_CONVOLUTION_FORMAT_EXT = 32791 ) - integer*4 GL_CONVOLUTION_WIDTH_EXT - parameter ( GL_CONVOLUTION_WIDTH_EXT = 32792 ) - integer*4 GL_CONVOLUTION_HEIGHT_EXT - parameter ( GL_CONVOLUTION_HEIGHT_EXT = 32793 ) - integer*4 GL_MAX_CONVOLUTION_WIDTH_EXT - parameter ( GL_MAX_CONVOLUTION_WIDTH_EXT = 32794 ) - integer*4 GL_MAX_CONVOLUTION_HEIGHT_EXT - parameter ( GL_MAX_CONVOLUTION_HEIGHT_EXT = 32795 ) - integer*4 GL_POST_CONVOLUTION_RED_SCALE_EX - parameter ( GL_POST_CONVOLUTION_RED_SCALE_EX = 32796 ) - integer*4 GL_POST_CONVOLUTION_GREEN_SCALE_ - parameter ( GL_POST_CONVOLUTION_GREEN_SCALE_ = 32797 ) - integer*4 GL_POST_CONVOLUTION_BLUE_SCALE_E - parameter ( GL_POST_CONVOLUTION_BLUE_SCALE_E = 32798 ) - integer*4 GL_POST_CONVOLUTION_ALPHA_SCALE_ - parameter ( GL_POST_CONVOLUTION_ALPHA_SCALE_ = 32799 ) - integer*4 GL_POST_CONVOLUTION_RED_BIAS_EXT - parameter ( GL_POST_CONVOLUTION_RED_BIAS_EXT = 32800 ) - integer*4 GL_POST_CONVOLUTION_GREEN_BIAS_E - parameter ( GL_POST_CONVOLUTION_GREEN_BIAS_E = 32801 ) - integer*4 GL_POST_CONVOLUTION_BLUE_BIAS_EX - parameter ( GL_POST_CONVOLUTION_BLUE_BIAS_EX = 32802 ) - integer*4 GL_POST_CONVOLUTION_ALPHA_BIAS_E - parameter ( GL_POST_CONVOLUTION_ALPHA_BIAS_E = 32803 ) - -C EXT_histogram - integer*4 GL_HISTOGRAM_EXT - parameter ( GL_HISTOGRAM_EXT = 32804 ) - integer*4 GL_PROXY_HISTOGRAM_EXT - parameter ( GL_PROXY_HISTOGRAM_EXT = 32805 ) - integer*4 GL_HISTOGRAM_WIDTH_EXT - parameter ( GL_HISTOGRAM_WIDTH_EXT = 32806 ) - integer*4 GL_HISTOGRAM_FORMAT_EXT - parameter ( GL_HISTOGRAM_FORMAT_EXT = 32807 ) - integer*4 GL_HISTOGRAM_RED_SIZE_EXT - parameter ( GL_HISTOGRAM_RED_SIZE_EXT = 32808 ) - integer*4 GL_HISTOGRAM_GREEN_SIZE_EXT - parameter ( GL_HISTOGRAM_GREEN_SIZE_EXT = 32809 ) - integer*4 GL_HISTOGRAM_BLUE_SIZE_EXT - parameter ( GL_HISTOGRAM_BLUE_SIZE_EXT = 32810 ) - integer*4 GL_HISTOGRAM_ALPHA_SIZE_EXT - parameter ( GL_HISTOGRAM_ALPHA_SIZE_EXT = 32811 ) - integer*4 GL_HISTOGRAM_LUMINANCE_SIZE_EXT - parameter ( GL_HISTOGRAM_LUMINANCE_SIZE_EXT = 32812 ) - integer*4 GL_HISTOGRAM_SINK_EXT - parameter ( GL_HISTOGRAM_SINK_EXT = 32813 ) - integer*4 GL_MINMAX_EXT - parameter ( GL_MINMAX_EXT = 32814 ) - integer*4 GL_MINMAX_FORMAT_EXT - parameter ( GL_MINMAX_FORMAT_EXT = 32815 ) - integer*4 GL_MINMAX_SINK_EXT - parameter ( GL_MINMAX_SINK_EXT = 32816 ) - integer*4 GL_TABLE_TOO_LARGE_EXT - parameter ( GL_TABLE_TOO_LARGE_EXT = 32817 ) - -C EXT_polygon_offset - integer*4 GL_POLYGON_OFFSET_EXT - parameter ( GL_POLYGON_OFFSET_EXT = 32823 ) - integer*4 GL_POLYGON_OFFSET_FACTOR_EXT - parameter ( GL_POLYGON_OFFSET_FACTOR_EXT = 32824 ) - integer*4 GL_POLYGON_OFFSET_BIAS_EXT - parameter ( GL_POLYGON_OFFSET_BIAS_EXT = 32825 ) - -C EXT_texture - integer*4 GL_ALPHA4_EXT - parameter ( GL_ALPHA4_EXT = 32827 ) - integer*4 GL_ALPHA8_EXT - parameter ( GL_ALPHA8_EXT = 32828 ) - integer*4 GL_ALPHA12_EXT - parameter ( GL_ALPHA12_EXT = 32829 ) - integer*4 GL_ALPHA16_EXT - parameter ( GL_ALPHA16_EXT = 32830 ) - integer*4 GL_LUMINANCE4_EXT - parameter ( GL_LUMINANCE4_EXT = 32831 ) - integer*4 GL_LUMINANCE8_EXT - parameter ( GL_LUMINANCE8_EXT = 32832 ) - integer*4 GL_LUMINANCE12_EXT - parameter ( GL_LUMINANCE12_EXT = 32833 ) - integer*4 GL_LUMINANCE16_EXT - parameter ( GL_LUMINANCE16_EXT = 32834 ) - integer*4 GL_LUMINANCE4_ALPHA4_EXT - parameter ( GL_LUMINANCE4_ALPHA4_EXT = 32835 ) - integer*4 GL_LUMINANCE6_ALPHA2_EXT - parameter ( GL_LUMINANCE6_ALPHA2_EXT = 32836 ) - integer*4 GL_LUMINANCE8_ALPHA8_EXT - parameter ( GL_LUMINANCE8_ALPHA8_EXT = 32837 ) - integer*4 GL_LUMINANCE12_ALPHA4_EXT - parameter ( GL_LUMINANCE12_ALPHA4_EXT = 32838 ) - integer*4 GL_LUMINANCE12_ALPHA12_EXT - parameter ( GL_LUMINANCE12_ALPHA12_EXT = 32839 ) - integer*4 GL_LUMINANCE16_ALPHA16_EXT - parameter ( GL_LUMINANCE16_ALPHA16_EXT = 32840 ) - integer*4 GL_INTENSITY_EXT - parameter ( GL_INTENSITY_EXT = 32841 ) - integer*4 GL_INTENSITY4_EXT - parameter ( GL_INTENSITY4_EXT = 32842 ) - integer*4 GL_INTENSITY8_EXT - parameter ( GL_INTENSITY8_EXT = 32843 ) - integer*4 GL_INTENSITY12_EXT - parameter ( GL_INTENSITY12_EXT = 32844 ) - integer*4 GL_INTENSITY16_EXT - parameter ( GL_INTENSITY16_EXT = 32845 ) - integer*4 GL_RGB2_EXT - parameter ( GL_RGB2_EXT = 32846 ) - integer*4 GL_RGB4_EXT - parameter ( GL_RGB4_EXT = 32847 ) - integer*4 GL_RGB5_EXT - parameter ( GL_RGB5_EXT = 32848 ) - integer*4 GL_RGB8_EXT - parameter ( GL_RGB8_EXT = 32849 ) - integer*4 GL_RGB10_EXT - parameter ( GL_RGB10_EXT = 32850 ) - integer*4 GL_RGB12_EXT - parameter ( GL_RGB12_EXT = 32851 ) - integer*4 GL_RGB16_EXT - parameter ( GL_RGB16_EXT = 32852 ) - integer*4 GL_RGBA2_EXT - parameter ( GL_RGBA2_EXT = 32853 ) - integer*4 GL_RGBA4_EXT - parameter ( GL_RGBA4_EXT = 32854 ) - integer*4 GL_RGB5_A1_EXT - parameter ( GL_RGB5_A1_EXT = 32855 ) - integer*4 GL_RGBA8_EXT - parameter ( GL_RGBA8_EXT = 32856 ) - integer*4 GL_RGB10_A2_EXT - parameter ( GL_RGB10_A2_EXT = 32857 ) - integer*4 GL_RGBA12_EXT - parameter ( GL_RGBA12_EXT = 32858 ) - integer*4 GL_RGBA16_EXT - parameter ( GL_RGBA16_EXT = 32859 ) - integer*4 GL_TEXTURE_RED_SIZE_EXT - parameter ( GL_TEXTURE_RED_SIZE_EXT = 32860 ) - integer*4 GL_TEXTURE_GREEN_SIZE_EXT - parameter ( GL_TEXTURE_GREEN_SIZE_EXT = 32861 ) - integer*4 GL_TEXTURE_BLUE_SIZE_EXT - parameter ( GL_TEXTURE_BLUE_SIZE_EXT = 32862 ) - integer*4 GL_TEXTURE_ALPHA_SIZE_EXT - parameter ( GL_TEXTURE_ALPHA_SIZE_EXT = 32863 ) - integer*4 GL_TEXTURE_LUMINANCE_SIZE_EXT - parameter ( GL_TEXTURE_LUMINANCE_SIZE_EXT = 32864 ) - integer*4 GL_TEXTURE_INTENSITY_SIZE_EXT - parameter ( GL_TEXTURE_INTENSITY_SIZE_EXT = 32865 ) - integer*4 GL_REPLACE_EXT - parameter ( GL_REPLACE_EXT = 32866 ) - integer*4 GL_PROXY_TEXTURE_1D_EXT - parameter ( GL_PROXY_TEXTURE_1D_EXT = 32867 ) - integer*4 GL_PROXY_TEXTURE_2D_EXT - parameter ( GL_PROXY_TEXTURE_2D_EXT = 32868 ) - integer*4 GL_TEXTURE_TOO_LARGE_EXT - parameter ( GL_TEXTURE_TOO_LARGE_EXT = 32869 ) - -C EXT_texture3D - integer*4 GL_PACK_SKIP_IMAGES_EXT - parameter ( GL_PACK_SKIP_IMAGES_EXT = 32875 ) - integer*4 GL_PACK_IMAGE_HEIGHT_EXT - parameter ( GL_PACK_IMAGE_HEIGHT_EXT = 32876 ) - integer*4 GL_UNPACK_SKIP_IMAGES_EXT - parameter ( GL_UNPACK_SKIP_IMAGES_EXT = 32877 ) - integer*4 GL_UNPACK_IMAGE_HEIGHT_EXT - parameter ( GL_UNPACK_IMAGE_HEIGHT_EXT = 32878 ) - integer*4 GL_TEXTURE_3D_EXT - parameter ( GL_TEXTURE_3D_EXT = 32879 ) - integer*4 GL_PROXY_TEXTURE_3D_EXT - parameter ( GL_PROXY_TEXTURE_3D_EXT = 32880 ) - integer*4 GL_TEXTURE_DEPTH_EXT - parameter ( GL_TEXTURE_DEPTH_EXT = 32881 ) - integer*4 GL_TEXTURE_WRAP_R_EXT - parameter ( GL_TEXTURE_WRAP_R_EXT = 32882 ) - integer*4 GL_MAX_3D_TEXTURE_SIZE_EXT - parameter ( GL_MAX_3D_TEXTURE_SIZE_EXT = 32883 ) - -C SGIS_detail_texture - integer*4 GL_DETAIL_TEXTURE_2D_SGIS - parameter ( GL_DETAIL_TEXTURE_2D_SGIS = 32917 ) - integer*4 GL_DETAIL_TEXTURE_2D_BINDING_SGI - parameter ( GL_DETAIL_TEXTURE_2D_BINDING_SGI = 32918 ) - integer*4 GL_LINEAR_DETAIL_SGIS - parameter ( GL_LINEAR_DETAIL_SGIS = 32919 ) - integer*4 GL_LINEAR_DETAIL_ALPHA_SGIS - parameter ( GL_LINEAR_DETAIL_ALPHA_SGIS = 32920 ) - integer*4 GL_LINEAR_DETAIL_COLOR_SGIS - parameter ( GL_LINEAR_DETAIL_COLOR_SGIS = 32921 ) - integer*4 GL_DETAIL_TEXTURE_LEVEL_SGIS - parameter ( GL_DETAIL_TEXTURE_LEVEL_SGIS = 32922 ) - integer*4 GL_DETAIL_TEXTURE_MODE_SGIS - parameter ( GL_DETAIL_TEXTURE_MODE_SGIS = 32923 ) - integer*4 GL_DETAIL_TEXTURE_FUNC_POINTS_S - parameter ( GL_DETAIL_TEXTURE_FUNC_POINTS_S = 32924 ) - -C SGIS_multisample - integer*4 GL_MULTISAMPLE_BIT_EXT - parameter ( GL_MULTISAMPLE_BIT_EXT = 536870912 ) - integer*4 GL_MULTISAMPLE_SGIS - parameter ( GL_MULTISAMPLE_SGIS = 32925 ) - integer*4 GL_SAMPLE_ALPHA_TO_MASK_SGIS - parameter ( GL_SAMPLE_ALPHA_TO_MASK_SGIS = 32926 ) - integer*4 GL_SAMPLE_ALPHA_TO_ONE_SGIS - parameter ( GL_SAMPLE_ALPHA_TO_ONE_SGIS = 32927 ) - integer*4 GL_SAMPLE_MASK_SGIS - parameter ( GL_SAMPLE_MASK_SGIS = 32928 ) - integer*4 GL_1PASS_SGIS - parameter ( GL_1PASS_SGIS = 32929 ) - integer*4 GL_2PASS_0_SGIS - parameter ( GL_2PASS_0_SGIS = 32930 ) - integer*4 GL_2PASS_1_SGIS - parameter ( GL_2PASS_1_SGIS = 32931 ) - integer*4 GL_4PASS_0_SGIS - parameter ( GL_4PASS_0_SGIS = 32932 ) - integer*4 GL_4PASS_1_SGIS - parameter ( GL_4PASS_1_SGIS = 32933 ) - integer*4 GL_4PASS_2_SGIS - parameter ( GL_4PASS_2_SGIS = 32934 ) - integer*4 GL_4PASS_3_SGIS - parameter ( GL_4PASS_3_SGIS = 32935 ) - integer*4 GL_SAMPLE_BUFFERS_SGIS - parameter ( GL_SAMPLE_BUFFERS_SGIS = 32936 ) - integer*4 GL_SAMPLES_SGIS - parameter ( GL_SAMPLES_SGIS = 32937 ) - integer*4 GL_SAMPLE_MASK_VALUE_SGIS - parameter ( GL_SAMPLE_MASK_VALUE_SGIS = 32938 ) - integer*4 GL_SAMPLE_MASK_INVERT_SGIS - parameter ( GL_SAMPLE_MASK_INVERT_SGIS = 32939 ) - integer*4 GL_SAMPLE_PATTERN_SGIS - parameter ( GL_SAMPLE_PATTERN_SGIS = 32940 ) - -C SGIS_sharpen_texture - integer*4 GL_LINEAR_SHARPEN_SGIS - parameter ( GL_LINEAR_SHARPEN_SGIS = 32941 ) - integer*4 GL_LINEAR_SHARPEN_ALPHA_SGIS - parameter ( GL_LINEAR_SHARPEN_ALPHA_SGIS = 32942 ) - integer*4 GL_LINEAR_SHARPEN_COLOR_SGIS - parameter ( GL_LINEAR_SHARPEN_COLOR_SGIS = 32943 ) - integer*4 GL_SHARPEN_TEXTURE_FUNC_POINTS_S - parameter ( GL_SHARPEN_TEXTURE_FUNC_POINTS_S = 32944 ) - -C *********************************************************** - - - character*128 fglGetString - integer fglGetError - integer*4 fglRenderMode - logical*1 fglAreTexturesResidentEXT - logical*1 fglIsEnabled - logical*1 fglIsList - logical*1 fglIsTextureEXT - logical*4 fglGenLists - logical*4 fglGenTexturesEXT diff --git a/lib/glut-3.7.6/include/GL/fglu.h b/lib/glut-3.7.6/include/GL/fglu.h deleted file mode 100644 index 0b0497675f2c129abf737ef36392fb909aed7937..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/GL/fglu.h +++ /dev/null @@ -1,210 +0,0 @@ - -C GLUT version of "GL/fgl.h" - -C Modifications from SGI IRIX 5.3 version: -C 1) F prefix removed from GLU constants. -C 2) Fix GLU_TRUE and GLU_FALSE. - -C *** Generic constants *** - -C Errors: (return value 0 = no error) - integer*4 GLU_INVALID_ENUM - parameter ( GLU_INVALID_ENUM = 100900 ) - integer*4 GLU_INVALID_VALUE - parameter ( GLU_INVALID_VALUE = 100901 ) - integer*4 GLU_OUT_OF_MEMORY - parameter ( GLU_OUT_OF_MEMORY = 100902 ) - -C For laughs: - integer*4 GLU_TRUE - parameter ( GLU_TRUE = 1 ) - integer*4 GLU_FALSE - parameter ( GLU_FALSE = 0 ) - - -C *** Quadric constants *** - -C Types of normals: - integer*4 GLU_SMOOTH - parameter ( GLU_SMOOTH = 100000 ) - integer*4 GLU_FLAT - parameter ( GLU_FLAT = 100001 ) - integer*4 GLU_NONE - parameter ( GLU_NONE = 100002 ) - -C DrawStyle types: - integer*4 GLU_POINT - parameter ( GLU_POINT = 100010 ) - integer*4 GLU_LINE - parameter ( GLU_LINE = 100011 ) - integer*4 GLU_FILL - parameter ( GLU_FILL = 100012 ) - integer*4 GLU_SILHOUETTE - parameter ( GLU_SILHOUETTE = 100013 ) - -C Orientation types: - integer*4 GLU_OUTSIDE - parameter ( GLU_OUTSIDE = 100020 ) - integer*4 GLU_INSIDE - parameter ( GLU_INSIDE = 100021 ) - -C Callback types: -C GLU_ERROR 100103 - - -C *** Tesselation constants *** - -C Callback types: - integer*4 GLU_BEGIN - parameter ( GLU_BEGIN = 100100 ) - integer*4 GLU_VERTEX - parameter ( GLU_VERTEX = 100101 ) - integer*4 GLU_END - parameter ( GLU_END = 100102 ) - integer*4 GLU_ERROR - parameter ( GLU_ERROR = 100103 ) - integer*4 GLU_EDGE_FLAG - parameter ( GLU_EDGE_FLAG = 100104 ) - -C Contours types: - integer*4 GLU_CW - parameter ( GLU_CW = 100120 ) - integer*4 GLU_CCW - parameter ( GLU_CCW = 100121 ) - integer*4 GLU_INTERIOR - parameter ( GLU_INTERIOR = 100122 ) - integer*4 GLU_EXTERIOR - parameter ( GLU_EXTERIOR = 100123 ) - integer*4 GLU_UNKNOWN - parameter ( GLU_UNKNOWN = 100124 ) - - integer*4 GLU_TESS_ERROR1 - parameter ( GLU_TESS_ERROR1 = 100151 ) - integer*4 GLU_TESS_ERROR2 - parameter ( GLU_TESS_ERROR2 = 100152 ) - integer*4 GLU_TESS_ERROR3 - parameter ( GLU_TESS_ERROR3 = 100153 ) - integer*4 GLU_TESS_ERROR4 - parameter ( GLU_TESS_ERROR4 = 100154 ) - integer*4 GLU_TESS_ERROR5 - parameter ( GLU_TESS_ERROR5 = 100155 ) - integer*4 GLU_TESS_ERROR6 - parameter ( GLU_TESS_ERROR6 = 100156 ) - integer*4 GLU_TESS_ERROR7 - parameter ( GLU_TESS_ERROR7 = 100157 ) - integer*4 GLU_TESS_ERROR8 - parameter ( GLU_TESS_ERROR8 = 100158 ) - - -C *** NURBS constants *** - -C Properties: - integer*4 GLU_AUTO_LOAD_MATRIX - parameter ( GLU_AUTO_LOAD_MATRIX = 100200 ) - integer*4 GLU_CULLING - parameter ( GLU_CULLING = 100201 ) - integer*4 GLU_SAMPLING_TOLERANCE - parameter ( GLU_SAMPLING_TOLERANCE = 100203 ) - integer*4 GLU_DISPLAY_MODE - parameter ( GLU_DISPLAY_MODE = 100204 ) - -C Trimming curve types - integer*4 GLU_MAP1_TRIM_2 - parameter ( GLU_MAP1_TRIM_2 = 100210 ) - integer*4 GLU_MAP1_TRIM_3 - parameter ( GLU_MAP1_TRIM_3 = 100211 ) - -C Display modes: -C GLU_FILL 100012 - integer*4 GLU_OUTLINE_POLYGON - parameter ( GLU_OUTLINE_POLYGON = 100240 ) - integer*4 GLU_OUTLINE_PATCH - parameter ( GLU_OUTLINE_PATCH = 100241 ) - -C Callbacks: -C GLU_ERROR 100103 - -C Errors: - integer*4 GLU_NURBS_ERROR1 - parameter ( GLU_NURBS_ERROR1 = 100251 ) - integer*4 GLU_NURBS_ERROR2 - parameter ( GLU_NURBS_ERROR2 = 100252 ) - integer*4 GLU_NURBS_ERROR3 - parameter ( GLU_NURBS_ERROR3 = 100253 ) - integer*4 GLU_NURBS_ERROR4 - parameter ( GLU_NURBS_ERROR4 = 100254 ) - integer*4 GLU_NURBS_ERROR5 - parameter ( GLU_NURBS_ERROR5 = 100255 ) - integer*4 GLU_NURBS_ERROR6 - parameter ( GLU_NURBS_ERROR6 = 100256 ) - integer*4 GLU_NURBS_ERROR7 - parameter ( GLU_NURBS_ERROR7 = 100257 ) - integer*4 GLU_NURBS_ERROR8 - parameter ( GLU_NURBS_ERROR8 = 100258 ) - integer*4 GLU_NURBS_ERROR9 - parameter ( GLU_NURBS_ERROR9 = 100259 ) - integer*4 GLU_NURBS_ERROR10 - parameter ( GLU_NURBS_ERROR10 = 100260 ) - integer*4 GLU_NURBS_ERROR11 - parameter ( GLU_NURBS_ERROR11 = 100261 ) - integer*4 GLU_NURBS_ERROR12 - parameter ( GLU_NURBS_ERROR12 = 100262 ) - integer*4 GLU_NURBS_ERROR13 - parameter ( GLU_NURBS_ERROR13 = 100263 ) - integer*4 GLU_NURBS_ERROR14 - parameter ( GLU_NURBS_ERROR14 = 100264 ) - integer*4 GLU_NURBS_ERROR15 - parameter ( GLU_NURBS_ERROR15 = 100265 ) - integer*4 GLU_NURBS_ERROR16 - parameter ( GLU_NURBS_ERROR16 = 100266 ) - integer*4 GLU_NURBS_ERROR17 - parameter ( GLU_NURBS_ERROR17 = 100267 ) - integer*4 GLU_NURBS_ERROR18 - parameter ( GLU_NURBS_ERROR18 = 100268 ) - integer*4 GLU_NURBS_ERROR19 - parameter ( GLU_NURBS_ERROR19 = 100269 ) - integer*4 GLU_NURBS_ERROR20 - parameter ( GLU_NURBS_ERROR20 = 100270 ) - integer*4 GLU_NURBS_ERROR21 - parameter ( GLU_NURBS_ERROR21 = 100271 ) - integer*4 GLU_NURBS_ERROR22 - parameter ( GLU_NURBS_ERROR22 = 100272 ) - integer*4 GLU_NURBS_ERROR23 - parameter ( GLU_NURBS_ERROR23 = 100273 ) - integer*4 GLU_NURBS_ERROR24 - parameter ( GLU_NURBS_ERROR24 = 100274 ) - integer*4 GLU_NURBS_ERROR25 - parameter ( GLU_NURBS_ERROR25 = 100275 ) - integer*4 GLU_NURBS_ERROR26 - parameter ( GLU_NURBS_ERROR26 = 100276 ) - integer*4 GLU_NURBS_ERROR27 - parameter ( GLU_NURBS_ERROR27 = 100277 ) - integer*4 GLU_NURBS_ERROR28 - parameter ( GLU_NURBS_ERROR28 = 100278 ) - integer*4 GLU_NURBS_ERROR29 - parameter ( GLU_NURBS_ERROR29 = 100279 ) - integer*4 GLU_NURBS_ERROR30 - parameter ( GLU_NURBS_ERROR30 = 100280 ) - integer*4 GLU_NURBS_ERROR31 - parameter ( GLU_NURBS_ERROR31 = 100281 ) - integer*4 GLU_NURBS_ERROR32 - parameter ( GLU_NURBS_ERROR32 = 100282 ) - integer*4 GLU_NURBS_ERROR33 - parameter ( GLU_NURBS_ERROR33 = 100283 ) - integer*4 GLU_NURBS_ERROR34 - parameter ( GLU_NURBS_ERROR34 = 100284 ) - integer*4 GLU_NURBS_ERROR35 - parameter ( GLU_NURBS_ERROR35 = 100285 ) - integer*4 GLU_NURBS_ERROR36 - parameter ( GLU_NURBS_ERROR36 = 100286 ) - integer*4 GLU_NURBS_ERROR37 - parameter ( GLU_NURBS_ERROR37 = 100287 ) - - - character*128 fgluErrorString - character*128 fgluGetString - integer*4 fgluBuild1DMipmaps - integer*4 fgluBuild2DMipmaps - integer*4 fgluProject - integer*4 fgluScaleImage - integer*4 fgluUnProject diff --git a/lib/glut-3.7.6/include/GL/fglut.h b/lib/glut-3.7.6/include/GL/fglut.h deleted file mode 100644 index e0ad8536d9b12f50aef4339c331fcd63986aa496..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/GL/fglut.h +++ /dev/null @@ -1,321 +0,0 @@ - -C Copyright (c) Mark J. Kilgard, 1994. - -C This program is freely distributable without licensing fees -C and is provided without guarantee or warrantee expressed or -C implied. This program is -not- in the public domain. - -C GLUT Fortran header file - -C display mode bit masks - integer*4 GLUT_RGB - parameter ( GLUT_RGB = 0 ) - integer*4 GLUT_RGBA - parameter ( GLUT_RGBA = 0 ) - integer*4 GLUT_INDEX - parameter ( GLUT_INDEX = 1 ) - integer*4 GLUT_SINGLE - parameter ( GLUT_SINGLE = 0 ) - integer*4 GLUT_DOUBLE - parameter ( GLUT_DOUBLE = 2 ) - integer*4 GLUT_ACCUM - parameter ( GLUT_ACCUM = 4 ) - integer*4 GLUT_ALPHA - parameter ( GLUT_ALPHA = 8 ) - integer*4 GLUT_DEPTH - parameter ( GLUT_DEPTH = 16 ) - integer*4 GLUT_STENCIL - parameter ( GLUT_STENCIL = 32 ) - integer*4 GLUT_MULTISAMPLE - parameter ( GLUT_MULTISAMPLE = 128 ) - integer*4 GLUT_STEREO - parameter ( GLUT_STEREO = 256 ) - -C mouse buttons - integer*4 GLUT_LEFT_BUTTON - parameter ( GLUT_LEFT_BUTTON = 0 ) - integer*4 GLUT_MIDDLE_BUTTON - parameter ( GLUT_MIDDLE_BUTTON = 1 ) - integer*4 GLUT_RIGHT_BUTTON - parameter ( GLUT_RIGHT_BUTTON = 2 ) - -C mouse button callback state - integer*4 GLUT_DOWN - parameter ( GLUT_DOWN = 0 ) - integer*4 GLUT_UP - parameter ( GLUT_UP = 1 ) - -C special key callback values - integer*4 GLUT_KEY_F1 - parameter ( GLUT_KEY_F1 = 1 ) - integer*4 GLUT_KEY_F2 - parameter ( GLUT_KEY_F2 = 2 ) - integer*4 GLUT_KEY_F3 - parameter ( GLUT_KEY_F3 = 3 ) - integer*4 GLUT_KEY_F4 - parameter ( GLUT_KEY_F4 = 4 ) - integer*4 GLUT_KEY_F5 - parameter ( GLUT_KEY_F5 = 5 ) - integer*4 GLUT_KEY_F6 - parameter ( GLUT_KEY_F6 = 6 ) - integer*4 GLUT_KEY_F7 - parameter ( GLUT_KEY_F7 = 7 ) - integer*4 GLUT_KEY_F8 - parameter ( GLUT_KEY_F8 = 8 ) - integer*4 GLUT_KEY_F9 - parameter ( GLUT_KEY_F9 = 9 ) - integer*4 GLUT_KEY_F10 - parameter ( GLUT_KEY_F10 = 10 ) - integer*4 GLUT_KEY_F11 - parameter ( GLUT_KEY_F11 = 11 ) - integer*4 GLUT_KEY_F12 - parameter ( GLUT_KEY_F12 = 12 ) - integer*4 GLUT_KEY_LEFT - parameter ( GLUT_KEY_LEFT = 100 ) - integer*4 GLUT_KEY_UP - parameter ( GLUT_KEY_UP = 101 ) - integer*4 GLUT_KEY_RIGHT - parameter ( GLUT_KEY_RIGHT = 102 ) - integer*4 GLUT_KEY_DOWN - parameter ( GLUT_KEY_DOWN = 103 ) - integer*4 GLUT_KEY_PAGE_UP - parameter ( GLUT_KEY_PAGE_UP = 104 ) - integer*4 GLUT_KEY_PAGE_DOWN - parameter ( GLUT_KEY_PAGE_DOWN = 105 ) - integer*4 GLUT_KEY_HOME - parameter ( GLUT_KEY_HOME = 106 ) - integer*4 GLUT_KEY_END - parameter ( GLUT_KEY_END = 107 ) - integer*4 GLUT_KEY_INSERT - parameter ( GLUT_KEY_INSERT = 108 ) - -C entry/exit callback state - integer*4 GLUT_LEFT - parameter ( GLUT_LEFT = 0 ) - integer*4 GLUT_ENTERED - parameter ( GLUT_ENTERED = 1 ) - -C menu usage callback state - integer*4 GLUT_MENU_NOT_IN_USE - parameter ( GLUT_MENU_NOT_IN_USE = 0 ) - integer*4 GLUT_MENU_IN_USE - parameter ( GLUT_MENU_IN_USE = 1 ) - -C visibility callback state - integer*4 GLUT_NOT_VISIBLE - parameter ( GLUT_NOT_VISIBLE = 0 ) - integer*4 GLUT_VISIBLE - parameter ( GLUT_VISIBLE = 1 ) - -C color index component selection values - integer*4 GLUT_RED - parameter ( GLUT_RED = 0 ) - integer*4 GLUT_GREEN - parameter ( GLUT_GREEN = 1 ) - integer*4 GLUT_BLUE - parameter ( GLUT_BLUE = 2 ) - -C XXX Unfortunately, SGI's Fortran compiler links with -C EXTERNAL data even if it is not used. This defeats -C the purpose of GLUT naming fonts via opaque symbols. -C This means GLUT Fortran programmers should explicitly -C declared EXTERNAL GLUT fonts in subroutines where -C the fonts are used. - -C stroke font opaque names -C external GLUT_STROKE_ROMAN -C external GLUT_STROKE_MONO_ROMAN - -C bitmap font opaque names -C external GLUT_BITMAP_9_BY_15 -C external GLUT_BITMAP_8_BY_13 -C external GLUT_BITMAP_TIMES_ROMAN_10 -C external GLUT_BITMAP_TIMES_ROMAN_24 -C external GLUT_BITMAP_HELVETICA_10 -C external GLUT_BITMAP_HELVETICA_12 -C external GLUT_BITMAP_HELVETICA_18 - -C glutGet parameters - integer*4 GLUT_WINDOW_X - parameter ( GLUT_WINDOW_X = 100 ) - integer*4 GLUT_WINDOW_Y - parameter ( GLUT_WINDOW_Y = 101 ) - integer*4 GLUT_WINDOW_WIDTH - parameter ( GLUT_WINDOW_WIDTH = 102 ) - integer*4 GLUT_WINDOW_HEIGHT - parameter ( GLUT_WINDOW_HEIGHT = 103 ) - integer*4 GLUT_WINDOW_BUFFER_SIZE - parameter ( GLUT_WINDOW_BUFFER_SIZE = 104 ) - integer*4 GLUT_WINDOW_STENCIL_SIZE - parameter ( GLUT_WINDOW_STENCIL_SIZE = 105 ) - integer*4 GLUT_WINDOW_DEPTH_SIZE - parameter ( GLUT_WINDOW_DEPTH_SIZE = 106 ) - integer*4 GLUT_WINDOW_RED_SIZE - parameter ( GLUT_WINDOW_RED_SIZE = 107 ) - integer*4 GLUT_WINDOW_GREEN_SIZE - parameter ( GLUT_WINDOW_GREEN_SIZE = 108 ) - integer*4 GLUT_WINDOW_BLUE_SIZE - parameter ( GLUT_WINDOW_BLUE_SIZE = 109 ) - integer*4 GLUT_WINDOW_ALPHA_SIZE - parameter ( GLUT_WINDOW_ALPHA_SIZE = 110 ) - integer*4 GLUT_WINDOW_ACCUM_RED_SIZE - parameter ( GLUT_WINDOW_ACCUM_RED_SIZE = 111 ) - integer*4 GLUT_WINDOW_ACCUM_GREEN_SIZE - parameter ( GLUT_WINDOW_ACCUM_GREEN_SIZE = 112 ) - integer*4 GLUT_WINDOW_ACCUM_BLUE_SIZE - parameter ( GLUT_WINDOW_ACCUM_BLUE_SIZE = 113 ) - integer*4 GLUT_WINDOW_ACCUM_ALPHA_SIZE - parameter ( GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114 ) - integer*4 GLUT_WINDOW_DOUBLEBUFFER - parameter ( GLUT_WINDOW_DOUBLEBUFFER = 115 ) - integer*4 GLUT_WINDOW_RGBA - parameter ( GLUT_WINDOW_RGBA = 116 ) - integer*4 GLUT_WINDOW_PARENT - parameter ( GLUT_WINDOW_PARENT = 117 ) - integer*4 GLUT_WINDOW_NUM_CHILDREN - parameter ( GLUT_WINDOW_NUM_CHILDREN = 118 ) - integer*4 GLUT_WINDOW_COLORMAP_SIZE - parameter ( GLUT_WINDOW_COLORMAP_SIZE = 119 ) - integer*4 GLUT_WINDOW_NUM_SAMPLES - parameter ( GLUT_WINDOW_NUM_SAMPLES = 120 ) - integer*4 GLUT_WINDOW_STEREO - parameter ( GLUT_WINDOW_STEREO = 121 ) - integer*4 GLUT_WINDOW_CURSOR - parameter ( GLUT_WINDOW_CURSOR = 122 ) - integer*4 GLUT_SCREEN_WIDTH - parameter ( GLUT_SCREEN_WIDTH = 200 ) - integer*4 GLUT_SCREEN_HEIGHT - parameter ( GLUT_SCREEN_HEIGHT = 201 ) - integer*4 GLUT_SCREEN_WIDTH_MM - parameter ( GLUT_SCREEN_WIDTH_MM = 202 ) - integer*4 GLUT_SCREEN_HEIGHT_MM - parameter ( GLUT_SCREEN_HEIGHT_MM = 203 ) - integer*4 GLUT_MENU_NUM_ITEMS - parameter ( GLUT_MENU_NUM_ITEMS = 300 ) - integer*4 GLUT_DISPLAY_MODE_POSSIBLE - parameter ( GLUT_DISPLAY_MODE_POSSIBLE = 400 ) - integer*4 GLUT_INIT_WINDOW_X - parameter ( GLUT_INIT_WINDOW_X = 500 ) - integer*4 GLUT_INIT_WINDOW_Y - parameter ( GLUT_INIT_WINDOW_Y = 501 ) - integer*4 GLUT_INIT_WINDOW_WIDTH - parameter ( GLUT_INIT_WINDOW_WIDTH = 502 ) - integer*4 GLUT_INIT_WINDOW_HEIGHT - parameter ( GLUT_INIT_WINDOW_HEIGHT = 503 ) - integer*4 GLUT_INIT_DISPLAY_MODE - parameter ( GLUT_INIT_DISPLAY_MODE = 504 ) - integer*4 GLUT_ELAPSED_TIME - parameter ( GLUT_ELAPSED_TIME = 700 ) - -C glutDeviceGet parameters - integer*4 GLUT_HAS_KEYBOARD - parameter ( GLUT_HAS_KEYBOARD = 600 ) - integer*4 GLUT_HAS_MOUSE - parameter ( GLUT_HAS_MOUSE = 601 ) - integer*4 GLUT_HAS_SPACEBALL - parameter ( GLUT_HAS_SPACEBALL = 602 ) - integer*4 GLUT_HAS_DIAL_AND_BUTTON_BOX - parameter ( GLUT_HAS_DIAL_AND_BUTTON_BOX = 603 ) - integer*4 GLUT_HAS_TABLET - parameter ( GLUT_HAS_TABLET = 604 ) - integer*4 GLUT_NUM_MOUSE_BUTTONS - parameter ( GLUT_NUM_MOUSE_BUTTONS = 605 ) - integer*4 GLUT_NUM_SPACEBALL_BUTTONS - parameter ( GLUT_NUM_SPACEBALL_BUTTONS = 606 ) - integer*4 GLUT_NUM_BUTTON_BOX_BUTTONS - parameter ( GLUT_NUM_BUTTON_BOX_BUTTONS = 607 ) - integer*4 GLUT_NUM_DIALS - parameter ( GLUT_NUM_DIALS = 608 ) - integer*4 GLUT_NUM_TABLET_BUTTONS - parameter ( GLUT_NUM_TABLET_BUTTONS = 609 ) - -C glutLayerGet parameters - integer*4 GLUT_OVERLAY_POSSIBLE - parameter ( GLUT_OVERLAY_POSSIBLE = 800 ) - integer*4 GLUT_LAYER_IN_USE - parameter ( GLUT_LAYER_IN_USE = 801 ) - integer*4 GLUT_HAS_OVERLAY - parameter ( GLUT_HAS_OVERLAY = 802 ) - integer*4 GLUT_TRANSPARENT_INDEX - parameter ( GLUT_TRANSPARENT_INDEX = 803 ) - integer*4 GLUT_NORMAL_DAMAGED - parameter ( GLUT_NORMAL_DAMAGED = 804 ) - integer*4 GLUT_OVERLAY_DAMAGED - parameter ( GLUT_OVERLAY_DAMAGED = 805 ) - -C glutUseLayer parameters - integer*4 GLUT_NORMAL - parameter ( GLUT_NORMAL = 0 ) - integer*4 GLUT_OVERLAY - parameter ( GLUT_OVERLAY = 1 ) - -C glutGetModifiers return mask - integer*4 GLUT_ACTIVE_SHIFT - parameter ( GLUT_ACTIVE_SHIFT = 1 ) - integer*4 GLUT_ACTIVE_CTRL - parameter ( GLUT_ACTIVE_CTRL = 2 ) - integer*4 GLUT_ACTIVE_ALT - parameter ( GLUT_ACTIVE_ALT = 4 ) - -C glutSetCursor parameters - integer*4 GLUT_CURSOR_RIGHT_ARROW - parameter ( GLUT_CURSOR_RIGHT_ARROW = 0 ) - integer*4 GLUT_CURSOR_LEFT_ARROW - parameter ( GLUT_CURSOR_LEFT_ARROW = 1 ) - integer*4 GLUT_CURSOR_INFO - parameter ( GLUT_CURSOR_INFO = 2 ) - integer*4 GLUT_CURSOR_DESTROY - parameter ( GLUT_CURSOR_DESTROY = 3 ) - integer*4 GLUT_CURSOR_HELP - parameter ( GLUT_CURSOR_HELP = 4 ) - integer*4 GLUT_CURSOR_CYCLE - parameter ( GLUT_CURSOR_CYCLE = 5 ) - integer*4 GLUT_CURSOR_SPRAY - parameter ( GLUT_CURSOR_SPRAY = 6 ) - integer*4 GLUT_CURSOR_WAIT - parameter ( GLUT_CURSOR_WAIT = 7 ) - integer*4 GLUT_CURSOR_TEXT - parameter ( GLUT_CURSOR_TEXT = 8 ) - integer*4 GLUT_CURSOR_CROSSHAIR - parameter ( GLUT_CURSOR_CROSSHAIR = 9 ) - integer*4 GLUT_CURSOR_UP_DOWN - parameter ( GLUT_CURSOR_UP_DOWN = 10 ) - integer*4 GLUT_CURSOR_LEFT_RIGHT - parameter ( GLUT_CURSOR_LEFT_RIGHT = 11 ) - integer*4 GLUT_CURSOR_TOP_SIDE - parameter ( GLUT_CURSOR_TOP_SIDE = 12 ) - integer*4 GLUT_CURSOR_BOTTOM_SIDE - parameter ( GLUT_CURSOR_BOTTOM_SIDE = 13 ) - integer*4 GLUT_CURSOR_LEFT_SIDE - parameter ( GLUT_CURSOR_LEFT_SIDE = 14 ) - integer*4 GLUT_CURSOR_RIGHT_SIDE - parameter ( GLUT_CURSOR_RIGHT_SIDE = 15 ) - integer*4 GLUT_CURSOR_TOP_LEFT_CORNER - parameter ( GLUT_CURSOR_TOP_LEFT_CORNER = 16 ) - integer*4 GLUT_CURSOR_TOP_RIGHT_CORNER - parameter ( GLUT_CURSOR_TOP_RIGHT_CORNER = 17 ) - integer*4 GLUT_CURSOR_BOTTOM_RIGHT_CORNER - parameter ( GLUT_CURSOR_BOTTOM_RIGHT_CORNER = 18 ) - integer*4 GLUT_CURSOR_BOTTOM_LEFT_CORNER - parameter ( GLUT_CURSOR_BOTTOM_LEFT_CORNER = 19 ) - integer*4 GLUT_CURSOR_INHERIT - parameter ( GLUT_CURSOR_INHERIT = 100 ) - integer*4 GLUT_CURSOR_NONE - parameter ( GLUT_CURSOR_NONE = 101 ) - integer*4 GLUT_CURSOR_FULL_CROSSHAIR - parameter ( GLUT_CURSOR_FULL_CROSSHAIR = 102 ) - -C GLUT functions - integer*4 glutcreatewindow - integer*4 glutcreatesubwindow - integer*4 glutgetwindow - integer*4 glutcreatemenu - integer*4 glutgetmenu - real glutgetcolor - integer*4 glutget - integer*4 glutdeviceget - integer*4 glutextensionsupported - -C GLUT NULL name - external glutnull - diff --git a/lib/glut-3.7.6/include/GL/glsmap.h b/lib/glut-3.7.6/include/GL/glsmap.h deleted file mode 100644 index b97fa9acfd9f843978fccaa905505b89d3db84d0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/GL/glsmap.h +++ /dev/null @@ -1,137 +0,0 @@ -#ifndef __glsmap_h__ -#define __glsmap_h__ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#if defined(_WIN32) - -/* Try hard to avoid including to avoid name space pollution, - but Win32's needs APIENTRY and WINGDIAPI defined properly. */ -# if 0 -# define WIN32_LEAN_AND_MEAN -# include -# else - /* XXX This is from Win32's */ -# ifndef APIENTRY -# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -# endif -# ifndef CALLBACK - /* XXX This is from Win32's */ -# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -# endif - /* XXX This is from Win32's and */ -# ifndef WINGDIAPI -# define WINGDIAPI __declspec(dllimport) -# endif - /* XXX This is from Win32's */ -# ifndef _WCHAR_T_DEFINED -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -# endif -# endif - -#pragma warning (disable:4244) /* Disable bogus conversion warnings. */ -#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ - -#endif /* _WIN32 */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - SMAP_CLEAR_SMAP_TEXTURE = 0x1, - SMAP_GENERATE_VIEW_MIPMAPS = 0x2, - SMAP_GENERATE_SMAP_MIPMAPS = 0x4, - SMAP_GENERATE_MIPMAPS = 0x6 /* both of above */ -} SphereMapFlags; - -/* Cube view enumerants. */ -enum { - SMAP_FRONT = 0, - SMAP_TOP = 1, - SMAP_BOTTOM = 2, - SMAP_LEFT = 3, - SMAP_RIGHT = 4, - SMAP_BACK = 5 -}; - -typedef struct _SphereMap SphereMap; - -extern SphereMap *smapCreateSphereMap(SphereMap *shareSmap); -extern void smapDestroySphereMap(SphereMap *smap); - -extern void smapConfigureSphereMapMesh(SphereMap *smap, int steps, int rings, int edgeExtend); - -extern void smapSetSphereMapTexObj(SphereMap *smap, GLuint texobj); -extern void smapSetViewTexObj(SphereMap *smap, GLuint texobj); -extern void smapSetViewTexObjs(SphereMap *smap, GLuint texobjs[6]); -extern void smapGetSphereMapTexObj(SphereMap *smap, GLuint *texobj); -extern void smapGetViewTexObj(SphereMap *smap, GLuint *texobj); -extern void smapGetViewTexObjs(SphereMap *smap, GLuint texobjs[6]); - -extern void smapSetFlags(SphereMap *smap, SphereMapFlags flags); -extern void smapGetFlags(SphereMap *smap, SphereMapFlags *flags); - -extern void smapSetViewOrigin(SphereMap *smap, GLint x, GLint y); -extern void smapSetSphereMapOrigin(SphereMap *smap, GLint x, GLint y); -extern void smapGetViewOrigin(SphereMap *smap, GLint *x, GLint *y); -extern void smapGetSphereMapOrigin(SphereMap *smap, GLint *x, GLint *y); - -extern void smapSetEye(SphereMap *smap, GLfloat eyex, GLfloat eyey, GLfloat eyez); -extern void smapSetEyeVector(SphereMap *smap, GLfloat *eye); -extern void smapSetUp(SphereMap *smap, GLfloat upx, GLfloat upy, GLfloat upz); -extern void smapSetUpVector(SphereMap *smap, GLfloat *up); -extern void smapSetObject(SphereMap *smap, GLfloat objx, GLfloat objy, GLfloat objz); -extern void smapSetObjectVector(SphereMap *smap, GLfloat *obj); -extern void smapGetEye(SphereMap *smap, GLfloat *eyex, GLfloat *eyey, GLfloat *eyez); -extern void smapGetEyeVector(SphereMap *smap, GLfloat *eye); -extern void smapGetUp(SphereMap *smap, GLfloat *upx, GLfloat *upy, GLfloat *upz); -extern void smapGetUpVector(SphereMap *smap, GLfloat *up); -extern void smapGetObject(SphereMap *smap, GLfloat *objx, GLfloat *objy, GLfloat *objz); -extern void smapGetObjectVector(SphereMap *smap, GLfloat *obj); - -extern void smapSetNearFar(SphereMap *smap, GLfloat viewNear, GLfloat viewFar); -extern void smapGetNearFar(SphereMap *smap, GLfloat *viewNear, GLfloat *viewFar); - -extern void smapSetSphereMapTexDim(SphereMap *smap, GLsizei texdim); -extern void smapSetViewTexDim(SphereMap *smap, GLsizei texdim); -extern void smapGetSphereMapTexDim(SphereMap *smap, GLsizei *texdim); -extern void smapGetViewTexDim(SphereMap *smap, GLsizei *texdim); - -extern void smapSetContextData(SphereMap *smap, void *context); -extern void smapGetContextData(SphereMap *smap, void **context); - -extern void smapSetPositionLightsFunc(SphereMap *smap, void (*positionLights)(int view, void *context)); -extern void smapSetDrawViewFunc(SphereMap *smap, void (*drawView)(int view, void *context)); -extern void smapGetPositionLightsFunc(SphereMap *smap, void (**positionLights)(int view, void *context)); -extern void smapGetDrawViewFunc(SphereMap *smap, void (**drawView)(int view, void *context)); - -extern void smapGenViewTex(SphereMap *smap, int view); -extern void smapGenViewTexs(SphereMap *smap); -extern void smapGenSphereMapFromViewTexs(SphereMap *smap); -extern void smapGenSphereMap(SphereMap *smap); -extern void smapGenSphereMapWithOneViewTex(SphereMap *smap); - -extern int smapRvecToSt(float rvec[3], float st[2]); -extern void smapStToRvec(float *st, float *rvec); - -#ifdef __cplusplus -} - -#endif -#endif /* __glsmap_h__ */ diff --git a/lib/glut-3.7.6/include/GL/glut.h b/lib/glut-3.7.6/include/GL/glut.h deleted file mode 100644 index aa7428f36861724bc13d1012ecfb0f7174b918f5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/GL/glut.h +++ /dev/null @@ -1,716 +0,0 @@ -#ifndef __glut_h__ -#define __glut_h__ - -/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#if defined(_WIN32) - -/* GLUT 3.7 now tries to avoid including - to avoid name space pollution, but Win32's - needs APIENTRY and WINGDIAPI defined properly. */ -# if 0 - /* This would put tons of macros and crap in our clean name space. */ -# define WIN32_LEAN_AND_MEAN -# include -# else - /* XXX This is from Win32's */ -# ifndef APIENTRY -# define GLUT_APIENTRY_DEFINED -# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -# endif - /* XXX This is from Win32's */ -# ifndef CALLBACK -# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) || defined(__LCC__) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -# endif - /* XXX Hack for lcc compiler. It doesn't support __declspec(dllimport), just __stdcall. */ -# if defined( __LCC__ ) -# undef WINGDIAPI -# define WINGDIAPI __stdcall -# else - /* XXX This is from Win32's and */ -# ifndef WINGDIAPI -# define GLUT_WINGDIAPI_DEFINED -# define WINGDIAPI __declspec(dllimport) -# endif -# endif - /* XXX This is from Win32's */ -# ifndef _WCHAR_T_DEFINED -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -# endif -# endif - -/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA - in your compile preprocessor options. */ -# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA) -# pragma comment (lib, "winmm.lib") /* link with Windows MultiMedia lib */ -/* To enable automatic SGI OpenGL for Windows library usage for GLUT, - define GLUT_USE_SGI_OPENGL in your compile preprocessor options. */ -# ifdef GLUT_USE_SGI_OPENGL -# pragma comment (lib, "opengl.lib") /* link with SGI OpenGL for Windows lib */ -# pragma comment (lib, "glu.lib") /* link with SGI OpenGL Utility lib */ -# pragma comment (lib, "glut.lib") /* link with Win32 GLUT for SGI OpenGL lib */ -# else -# pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */ -# pragma comment (lib, "glu32.lib") /* link with Microsoft OpenGL Utility lib */ -# pragma comment (lib, "glut32.lib") /* link with Win32 GLUT lib */ -# endif -# endif - -/* To disable supression of annoying warnings about floats being promoted - to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor - options. */ -# ifndef GLUT_NO_WARNING_DISABLE -# pragma warning (disable:4244) /* Disable bogus VC++ 4.2 conversion warnings. */ -# pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -# endif - -/* Win32 has an annoying issue where there are multiple C run-time - libraries (CRTs). If the executable is linked with a different CRT - from the GLUT DLL, the GLUT DLL will not share the same CRT static - data seen by the executable. In particular, atexit callbacks registered - in the executable will not be called if GLUT calls its (different) - exit routine). GLUT is typically built with the - "/MD" option (the CRT with multithreading DLL support), but the Visual - C++ linker default is "/ML" (the single threaded CRT). - - One workaround to this issue is requiring users to always link with - the same CRT as GLUT is compiled with. That requires users supply a - non-standard option. GLUT 3.7 has its own built-in workaround where - the executable's "exit" function pointer is covertly passed to GLUT. - GLUT then calls the executable's exit function pointer to ensure that - any "atexit" calls registered by the application are called if GLUT - needs to exit. - - Note that the __glut*WithExit routines should NEVER be called directly. - To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */ - -/* XXX This is from Win32's */ -# if !defined(_MSC_VER) && !defined(__cdecl) - /* Define __cdecl for non-Microsoft compilers. */ -# define __cdecl -# define GLUT_DEFINED___CDECL -# endif -# ifndef _CRTIMP -# ifdef _NTSDK - /* Definition compatible with NT SDK */ -# define _CRTIMP -# else - /* Current definition */ -# ifdef _DLL -# define _CRTIMP __declspec(dllimport) -# else -# define _CRTIMP -# endif -# endif -# define GLUT_DEFINED__CRTIMP -# endif - -/* GLUT API entry point declarations for Win32. */ -# ifdef GLUT_BUILDING_LIB -# define GLUTAPI __declspec(dllexport) -# else -# ifdef _DLL -# define GLUTAPI __declspec(dllimport) -# else -# define GLUTAPI extern -# endif -# endif - -/* GLUT callback calling convention for Win32. */ -# define GLUTCALLBACK __cdecl - -#endif /* _WIN32 */ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_WIN32) -# ifndef GLUT_BUILDING_LIB -extern _CRTIMP void __cdecl exit(int); -# endif -#else -/* non-Win32 case. */ -/* Define APIENTRY and CALLBACK to nothing if we aren't on Win32. */ -# define APIENTRY -# define GLUT_APIENTRY_DEFINED -# define CALLBACK -/* Define GLUTAPI and GLUTCALLBACK as below if we aren't on Win32. */ -# define GLUTAPI extern -# define GLUTCALLBACK -/* Prototype exit for the non-Win32 case (see above). */ -extern void exit(int); -#endif - -/** - GLUT API revision history: - - GLUT_API_VERSION is updated to reflect incompatible GLUT - API changes (interface changes, semantic changes, deletions, - or additions). - - GLUT_API_VERSION=1 First public release of GLUT. 11/29/94 - - GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling, - extension. Supports new input devices like tablet, dial and button - box, and Spaceball. Easy to query OpenGL extensions. - - GLUT_API_VERSION=3 glutMenuStatus added. - - GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer, - glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic - video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc, - glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat, - glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!). -**/ -#ifndef GLUT_API_VERSION /* allow this to be overriden */ -#define GLUT_API_VERSION 3 -#endif - -/** - GLUT implementation revision history: - - GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT - API revisions and implementation revisions (ie, bug fixes). - - GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of - GLUT Xlib-based implementation. 11/29/94 - - GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of - GLUT Xlib-based implementation providing GLUT version 2 - interfaces. - - GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95 - - GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95 - - GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95 - - GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96 - - GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner - and video resize. 1/3/97 - - GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines. - - GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release. - - GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling. - - GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support. - - GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface. - - GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa -**/ -#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */ -#define GLUT_XLIB_IMPLEMENTATION 15 -#endif - -/* Display mode bit masks. */ -#define GLUT_RGB 0 -#define GLUT_RGBA GLUT_RGB -#define GLUT_INDEX 1 -#define GLUT_SINGLE 0 -#define GLUT_DOUBLE 2 -#define GLUT_ACCUM 4 -#define GLUT_ALPHA 8 -#define GLUT_DEPTH 16 -#define GLUT_STENCIL 32 -#if (GLUT_API_VERSION >= 2) -#define GLUT_MULTISAMPLE 128 -#define GLUT_STEREO 256 -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_LUMINANCE 512 -#endif - -/* Mouse buttons. */ -#define GLUT_LEFT_BUTTON 0 -#define GLUT_MIDDLE_BUTTON 1 -#define GLUT_RIGHT_BUTTON 2 - -/* Mouse button state. */ -#define GLUT_DOWN 0 -#define GLUT_UP 1 - -#if (GLUT_API_VERSION >= 2) -/* function keys */ -#define GLUT_KEY_F1 1 -#define GLUT_KEY_F2 2 -#define GLUT_KEY_F3 3 -#define GLUT_KEY_F4 4 -#define GLUT_KEY_F5 5 -#define GLUT_KEY_F6 6 -#define GLUT_KEY_F7 7 -#define GLUT_KEY_F8 8 -#define GLUT_KEY_F9 9 -#define GLUT_KEY_F10 10 -#define GLUT_KEY_F11 11 -#define GLUT_KEY_F12 12 -/* directional keys */ -#define GLUT_KEY_LEFT 100 -#define GLUT_KEY_UP 101 -#define GLUT_KEY_RIGHT 102 -#define GLUT_KEY_DOWN 103 -#define GLUT_KEY_PAGE_UP 104 -#define GLUT_KEY_PAGE_DOWN 105 -#define GLUT_KEY_HOME 106 -#define GLUT_KEY_END 107 -#define GLUT_KEY_INSERT 108 -#endif - -/* Entry/exit state. */ -#define GLUT_LEFT 0 -#define GLUT_ENTERED 1 - -/* Menu usage state. */ -#define GLUT_MENU_NOT_IN_USE 0 -#define GLUT_MENU_IN_USE 1 - -/* Visibility state. */ -#define GLUT_NOT_VISIBLE 0 -#define GLUT_VISIBLE 1 - -/* Window status state. */ -#define GLUT_HIDDEN 0 -#define GLUT_FULLY_RETAINED 1 -#define GLUT_PARTIALLY_RETAINED 2 -#define GLUT_FULLY_COVERED 3 - -/* Color index component selection values. */ -#define GLUT_RED 0 -#define GLUT_GREEN 1 -#define GLUT_BLUE 2 - -#if defined(_WIN32) -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN ((void*)0) -#define GLUT_STROKE_MONO_ROMAN ((void*)1) - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 ((void*)2) -#define GLUT_BITMAP_8_BY_13 ((void*)3) -#define GLUT_BITMAP_TIMES_ROMAN_10 ((void*)4) -#define GLUT_BITMAP_TIMES_ROMAN_24 ((void*)5) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 ((void*)6) -#define GLUT_BITMAP_HELVETICA_12 ((void*)7) -#define GLUT_BITMAP_HELVETICA_18 ((void*)8) -#endif -#else -/* Stroke font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutStrokeRoman; -GLUTAPI void *glutStrokeMonoRoman; - -/* Stroke font constants (use these in GLUT program). */ -#define GLUT_STROKE_ROMAN (&glutStrokeRoman) -#define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman) - -/* Bitmap font opaque addresses (use constants instead in source code). */ -GLUTAPI void *glutBitmap9By15; -GLUTAPI void *glutBitmap8By13; -GLUTAPI void *glutBitmapTimesRoman10; -GLUTAPI void *glutBitmapTimesRoman24; -GLUTAPI void *glutBitmapHelvetica10; -GLUTAPI void *glutBitmapHelvetica12; -GLUTAPI void *glutBitmapHelvetica18; - -/* Bitmap font constants (use these in GLUT program). */ -#define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) -#define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13) -#define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10) -#define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24) -#if (GLUT_API_VERSION >= 3) -#define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10) -#define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12) -#define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18) -#endif -#endif - -/* glutGet parameters. */ -#define GLUT_WINDOW_X ((GLenum) 100) -#define GLUT_WINDOW_Y ((GLenum) 101) -#define GLUT_WINDOW_WIDTH ((GLenum) 102) -#define GLUT_WINDOW_HEIGHT ((GLenum) 103) -#define GLUT_WINDOW_BUFFER_SIZE ((GLenum) 104) -#define GLUT_WINDOW_STENCIL_SIZE ((GLenum) 105) -#define GLUT_WINDOW_DEPTH_SIZE ((GLenum) 106) -#define GLUT_WINDOW_RED_SIZE ((GLenum) 107) -#define GLUT_WINDOW_GREEN_SIZE ((GLenum) 108) -#define GLUT_WINDOW_BLUE_SIZE ((GLenum) 109) -#define GLUT_WINDOW_ALPHA_SIZE ((GLenum) 110) -#define GLUT_WINDOW_ACCUM_RED_SIZE ((GLenum) 111) -#define GLUT_WINDOW_ACCUM_GREEN_SIZE ((GLenum) 112) -#define GLUT_WINDOW_ACCUM_BLUE_SIZE ((GLenum) 113) -#define GLUT_WINDOW_ACCUM_ALPHA_SIZE ((GLenum) 114) -#define GLUT_WINDOW_DOUBLEBUFFER ((GLenum) 115) -#define GLUT_WINDOW_RGBA ((GLenum) 116) -#define GLUT_WINDOW_PARENT ((GLenum) 117) -#define GLUT_WINDOW_NUM_CHILDREN ((GLenum) 118) -#define GLUT_WINDOW_COLORMAP_SIZE ((GLenum) 119) -#if (GLUT_API_VERSION >= 2) -#define GLUT_WINDOW_NUM_SAMPLES ((GLenum) 120) -#define GLUT_WINDOW_STEREO ((GLenum) 121) -#endif -#if (GLUT_API_VERSION >= 3) -#define GLUT_WINDOW_CURSOR ((GLenum) 122) -#endif -#define GLUT_SCREEN_WIDTH ((GLenum) 200) -#define GLUT_SCREEN_HEIGHT ((GLenum) 201) -#define GLUT_SCREEN_WIDTH_MM ((GLenum) 202) -#define GLUT_SCREEN_HEIGHT_MM ((GLenum) 203) -#define GLUT_MENU_NUM_ITEMS ((GLenum) 300) -#define GLUT_DISPLAY_MODE_POSSIBLE ((GLenum) 400) -#define GLUT_INIT_WINDOW_X ((GLenum) 500) -#define GLUT_INIT_WINDOW_Y ((GLenum) 501) -#define GLUT_INIT_WINDOW_WIDTH ((GLenum) 502) -#define GLUT_INIT_WINDOW_HEIGHT ((GLenum) 503) -#define GLUT_INIT_DISPLAY_MODE ((GLenum) 504) -#if (GLUT_API_VERSION >= 2) -#define GLUT_ELAPSED_TIME ((GLenum) 700) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_WINDOW_FORMAT_ID ((GLenum) 123) -#endif - -#if (GLUT_API_VERSION >= 2) -/* glutDeviceGet parameters. */ -#define GLUT_HAS_KEYBOARD ((GLenum) 600) -#define GLUT_HAS_MOUSE ((GLenum) 601) -#define GLUT_HAS_SPACEBALL ((GLenum) 602) -#define GLUT_HAS_DIAL_AND_BUTTON_BOX ((GLenum) 603) -#define GLUT_HAS_TABLET ((GLenum) 604) -#define GLUT_NUM_MOUSE_BUTTONS ((GLenum) 605) -#define GLUT_NUM_SPACEBALL_BUTTONS ((GLenum) 606) -#define GLUT_NUM_BUTTON_BOX_BUTTONS ((GLenum) 607) -#define GLUT_NUM_DIALS ((GLenum) 608) -#define GLUT_NUM_TABLET_BUTTONS ((GLenum) 609) -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -#define GLUT_DEVICE_IGNORE_KEY_REPEAT ((GLenum) 610) -#define GLUT_DEVICE_KEY_REPEAT ((GLenum) 611) -#define GLUT_HAS_JOYSTICK ((GLenum) 612) -#define GLUT_OWNS_JOYSTICK ((GLenum) 613) -#define GLUT_JOYSTICK_BUTTONS ((GLenum) 614) -#define GLUT_JOYSTICK_AXES ((GLenum) 615) -#define GLUT_JOYSTICK_POLL_RATE ((GLenum) 616) -#endif - -#if (GLUT_API_VERSION >= 3) -/* glutLayerGet parameters. */ -#define GLUT_OVERLAY_POSSIBLE ((GLenum) 800) -#define GLUT_LAYER_IN_USE ((GLenum) 801) -#define GLUT_HAS_OVERLAY ((GLenum) 802) -#define GLUT_TRANSPARENT_INDEX ((GLenum) 803) -#define GLUT_NORMAL_DAMAGED ((GLenum) 804) -#define GLUT_OVERLAY_DAMAGED ((GLenum) 805) - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* glutVideoResizeGet parameters. */ -#define GLUT_VIDEO_RESIZE_POSSIBLE ((GLenum) 900) -#define GLUT_VIDEO_RESIZE_IN_USE ((GLenum) 901) -#define GLUT_VIDEO_RESIZE_X_DELTA ((GLenum) 902) -#define GLUT_VIDEO_RESIZE_Y_DELTA ((GLenum) 903) -#define GLUT_VIDEO_RESIZE_WIDTH_DELTA ((GLenum) 904) -#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA ((GLenum) 905) -#define GLUT_VIDEO_RESIZE_X ((GLenum) 906) -#define GLUT_VIDEO_RESIZE_Y ((GLenum) 907) -#define GLUT_VIDEO_RESIZE_WIDTH ((GLenum) 908) -#define GLUT_VIDEO_RESIZE_HEIGHT ((GLenum) 909) -#endif - -/* glutUseLayer parameters. */ -#define GLUT_NORMAL ((GLenum) 0) -#define GLUT_OVERLAY ((GLenum) 1) - -/* glutGetModifiers return mask. */ -#define GLUT_ACTIVE_SHIFT 1 -#define GLUT_ACTIVE_CTRL 2 -#define GLUT_ACTIVE_ALT 4 - -/* glutSetCursor parameters. */ -/* Basic arrows. */ -#define GLUT_CURSOR_RIGHT_ARROW 0 -#define GLUT_CURSOR_LEFT_ARROW 1 -/* Symbolic cursor shapes. */ -#define GLUT_CURSOR_INFO 2 -#define GLUT_CURSOR_DESTROY 3 -#define GLUT_CURSOR_HELP 4 -#define GLUT_CURSOR_CYCLE 5 -#define GLUT_CURSOR_SPRAY 6 -#define GLUT_CURSOR_WAIT 7 -#define GLUT_CURSOR_TEXT 8 -#define GLUT_CURSOR_CROSSHAIR 9 -/* Directional cursors. */ -#define GLUT_CURSOR_UP_DOWN 10 -#define GLUT_CURSOR_LEFT_RIGHT 11 -/* Sizing cursors. */ -#define GLUT_CURSOR_TOP_SIDE 12 -#define GLUT_CURSOR_BOTTOM_SIDE 13 -#define GLUT_CURSOR_LEFT_SIDE 14 -#define GLUT_CURSOR_RIGHT_SIDE 15 -#define GLUT_CURSOR_TOP_LEFT_CORNER 16 -#define GLUT_CURSOR_TOP_RIGHT_CORNER 17 -#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 18 -#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 19 -/* Inherit from parent window. */ -#define GLUT_CURSOR_INHERIT 100 -/* Blank cursor. */ -#define GLUT_CURSOR_NONE 101 -/* Fullscreen crosshair (if available). */ -#define GLUT_CURSOR_FULL_CROSSHAIR 102 -#endif - -/* GLUT initialization sub-API. */ -GLUTAPI void APIENTRY glutInit(int *argcp, char **argv); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } -#define glutInit glutInit_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutInitDisplayString(const char *string); -#endif -GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y); -GLUTAPI void APIENTRY glutInitWindowSize(int width, int height); -GLUTAPI void APIENTRY glutMainLoop(void); - -/* GLUT window sub-API. */ -GLUTAPI int APIENTRY glutCreateWindow(const char *title); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } -#define glutCreateWindow glutCreateWindow_ATEXIT_HACK -#endif -#endif -GLUTAPI int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height); -GLUTAPI void APIENTRY glutDestroyWindow(int win); -GLUTAPI void APIENTRY glutPostRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutSwapBuffers(void); -GLUTAPI int APIENTRY glutGetWindow(void); -GLUTAPI void APIENTRY glutSetWindow(int win); -GLUTAPI void APIENTRY glutSetWindowTitle(const char *title); -GLUTAPI void APIENTRY glutSetIconTitle(const char *title); -GLUTAPI void APIENTRY glutPositionWindow(int x, int y); -GLUTAPI void APIENTRY glutReshapeWindow(int width, int height); -GLUTAPI void APIENTRY glutPopWindow(void); -GLUTAPI void APIENTRY glutPushWindow(void); -GLUTAPI void APIENTRY glutIconifyWindow(void); -GLUTAPI void APIENTRY glutShowWindow(void); -GLUTAPI void APIENTRY glutHideWindow(void); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutFullScreen(void); -GLUTAPI void APIENTRY glutSetCursor(int cursor); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWarpPointer(int x, int y); -#endif - -/* GLUT overlay sub-API. */ -GLUTAPI void APIENTRY glutEstablishOverlay(void); -GLUTAPI void APIENTRY glutRemoveOverlay(void); -GLUTAPI void APIENTRY glutUseLayer(GLenum layer); -GLUTAPI void APIENTRY glutPostOverlayRedisplay(void); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) -GLUTAPI void APIENTRY glutPostWindowOverlayRedisplay(int win); -#endif -GLUTAPI void APIENTRY glutShowOverlay(void); -GLUTAPI void APIENTRY glutHideOverlay(void); -#endif - -/* GLUT menu sub-API. */ -GLUTAPI int APIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int)); -#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) -GLUTAPI int APIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int)); -#ifndef GLUT_BUILDING_LIB -static int APIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); } -#define glutCreateMenu glutCreateMenu_ATEXIT_HACK -#endif -#endif -GLUTAPI void APIENTRY glutDestroyMenu(int menu); -GLUTAPI int APIENTRY glutGetMenu(void); -GLUTAPI void APIENTRY glutSetMenu(int menu); -GLUTAPI void APIENTRY glutAddMenuEntry(const char *label, int value); -GLUTAPI void APIENTRY glutAddSubMenu(const char *label, int submenu); -GLUTAPI void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value); -GLUTAPI void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu); -GLUTAPI void APIENTRY glutRemoveMenuItem(int item); -GLUTAPI void APIENTRY glutAttachMenu(int button); -GLUTAPI void APIENTRY glutDetachMenu(int button); - -/* GLUT window callback sub-API. */ -GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height)); -GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state)); -GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void)); -GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value); -GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state)); -#if (GLUT_API_VERSION >= 2) -GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); -GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state)); -GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value)); -GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); -GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); -#if (GLUT_API_VERSION >= 3) -GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y)); -GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void)); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state)); -#endif -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); -GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); -GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval); -#endif -#endif -#endif - -/* GLUT color index sub-API. */ -GLUTAPI void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue); -GLUTAPI GLfloat APIENTRY glutGetColor(int ndx, int component); -GLUTAPI void APIENTRY glutCopyColormap(int win); - -/* GLUT state retrieval sub-API. */ -GLUTAPI int APIENTRY glutGet(GLenum type); -GLUTAPI int APIENTRY glutDeviceGet(GLenum type); -#if (GLUT_API_VERSION >= 2) -/* GLUT extension support sub-API */ -GLUTAPI int APIENTRY glutExtensionSupported(const char *name); -#endif -#if (GLUT_API_VERSION >= 3) -GLUTAPI int APIENTRY glutGetModifiers(void); -GLUTAPI int APIENTRY glutLayerGet(GLenum type); -#endif - -/* GLUT font sub-API */ -GLUTAPI void APIENTRY glutBitmapCharacter(void *font, int character); -GLUTAPI int APIENTRY glutBitmapWidth(void *font, int character); -GLUTAPI void APIENTRY glutStrokeCharacter(void *font, int character); -GLUTAPI int APIENTRY glutStrokeWidth(void *font, int character); -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -GLUTAPI int APIENTRY glutBitmapLength(void *font, const unsigned char *string); -GLUTAPI int APIENTRY glutStrokeLength(void *font, const unsigned char *string); -#endif - -/* GLUT pre-built models sub-API */ -GLUTAPI void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); -GLUTAPI void APIENTRY glutWireCube(GLdouble size); -GLUTAPI void APIENTRY glutSolidCube(GLdouble size); -GLUTAPI void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); -GLUTAPI void APIENTRY glutWireDodecahedron(void); -GLUTAPI void APIENTRY glutSolidDodecahedron(void); -GLUTAPI void APIENTRY glutWireTeapot(GLdouble size); -GLUTAPI void APIENTRY glutSolidTeapot(GLdouble size); -GLUTAPI void APIENTRY glutWireOctahedron(void); -GLUTAPI void APIENTRY glutSolidOctahedron(void); -GLUTAPI void APIENTRY glutWireTetrahedron(void); -GLUTAPI void APIENTRY glutSolidTetrahedron(void); -GLUTAPI void APIENTRY glutWireIcosahedron(void); -GLUTAPI void APIENTRY glutSolidIcosahedron(void); - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) -/* GLUT video resize sub-API. */ -GLUTAPI int APIENTRY glutVideoResizeGet(GLenum param); -GLUTAPI void APIENTRY glutSetupVideoResizing(void); -GLUTAPI void APIENTRY glutStopVideoResizing(void); -GLUTAPI void APIENTRY glutVideoResize(int x, int y, int width, int height); -GLUTAPI void APIENTRY glutVideoPan(int x, int y, int width, int height); - -/* GLUT debugging sub-API. */ -GLUTAPI void APIENTRY glutReportErrors(void); -#endif - -#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) -/* GLUT device control sub-API. */ -/* glutSetKeyRepeat modes. */ -#define GLUT_KEY_REPEAT_OFF 0 -#define GLUT_KEY_REPEAT_ON 1 -#define GLUT_KEY_REPEAT_DEFAULT 2 - -/* Joystick button masks. */ -#define GLUT_JOYSTICK_BUTTON_A 1 -#define GLUT_JOYSTICK_BUTTON_B 2 -#define GLUT_JOYSTICK_BUTTON_C 4 -#define GLUT_JOYSTICK_BUTTON_D 8 - -GLUTAPI void APIENTRY glutIgnoreKeyRepeat(int ignore); -GLUTAPI void APIENTRY glutSetKeyRepeat(int repeatMode); -GLUTAPI void APIENTRY glutForceJoystickFunc(void); - -/* GLUT game mode sub-API. */ -/* glutGameModeGet. */ -#define GLUT_GAME_MODE_ACTIVE ((GLenum) 0) -#define GLUT_GAME_MODE_POSSIBLE ((GLenum) 1) -#define GLUT_GAME_MODE_WIDTH ((GLenum) 2) -#define GLUT_GAME_MODE_HEIGHT ((GLenum) 3) -#define GLUT_GAME_MODE_PIXEL_DEPTH ((GLenum) 4) -#define GLUT_GAME_MODE_REFRESH_RATE ((GLenum) 5) -#define GLUT_GAME_MODE_DISPLAY_CHANGED ((GLenum) 6) - -GLUTAPI void APIENTRY glutGameModeString(const char *string); -GLUTAPI int APIENTRY glutEnterGameMode(void); -GLUTAPI void APIENTRY glutLeaveGameMode(void); -GLUTAPI int APIENTRY glutGameModeGet(GLenum mode); -#endif - -#ifdef __cplusplus -} - -#endif - -#ifdef GLUT_APIENTRY_DEFINED -# undef GLUT_APIENTRY_DEFINED -# undef APIENTRY -#endif - -#ifdef GLUT_WINGDIAPI_DEFINED -# undef GLUT_WINGDIAPI_DEFINED -# undef WINGDIAPI -#endif - -#ifdef GLUT_DEFINED___CDECL -# undef GLUT_DEFINED___CDECL -# undef __cdecl -#endif - -#ifdef GLUT_DEFINED__CRTIMP -# undef GLUT_DEFINED__CRTIMP -# undef _CRTIMP -#endif - -#endif /* __glut_h__ */ diff --git a/lib/glut-3.7.6/include/GL/glutf90.h b/lib/glut-3.7.6/include/GL/glutf90.h deleted file mode 100644 index 7dc1d6772a5ca0c1a0b463629b0e88271064e514..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/GL/glutf90.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef __glutf90_h__ -#define __glutf90_h__ - -/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This header provides the binding interface for William Mitchell's - f90gl Fortran 90 GLUT binding. Other GLUT language bindings - can and should use this interace. */ - -/* I appreciate the guidance from William Mitchell - (mitchell@cam.nist.gov) in developing this friend interface - for use by the f90gl package. See ../../README.fortran */ - -#include - -/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */ -/* NOTE These values are part of a binary interface for the f90gl Fortran - 90 binding and so must NOT changes (additions are allowed). */ - -/* GLUTwindow callbacks. */ -#define GLUT_FCB_DISPLAY 0 /* GLUTdisplayFCB */ -#define GLUT_FCB_RESHAPE 1 /* GLUTreshapeFCB */ -#define GLUT_FCB_MOUSE 2 /* GLUTmouseFCB */ -#define GLUT_FCB_MOTION 3 /* GLUTmotionFCB */ -#define GLUT_FCB_PASSIVE 4 /* GLUTpassiveFCB */ -#define GLUT_FCB_ENTRY 5 /* GLUTentryFCB */ -#define GLUT_FCB_KEYBOARD 6 /* GLUTkeyboardFCB */ -#define GLUT_FCB_KEYBOARD_UP 7 /* GLUTkeyboardFCB */ -#define GLUT_FCB_WINDOW_STATUS 8 /* GLUTwindowStatusFCB */ -#define GLUT_FCB_VISIBILITY 9 /* GLUTvisibilityFCB */ -#define GLUT_FCB_SPECIAL 10 /* GLUTspecialFCB */ -#define GLUT_FCB_SPECIAL_UP 11 /* GLUTspecialFCB */ -#define GLUT_FCB_BUTTON_BOX 12 /* GLUTbuttonBoxFCB */ -#define GLUT_FCB_DIALS 13 /* GLUTdialsFCB */ -#define GLUT_FCB_SPACE_MOTION 14 /* GLUTspaceMotionFCB */ -#define GLUT_FCB_SPACE_ROTATE 15 /* GLUTspaceRotateFCB */ -#define GLUT_FCB_SPACE_BUTTON 16 /* GLUTspaceButtonFCB */ -#define GLUT_FCB_TABLET_MOTION 17 /* GLUTtabletMotionFCB */ -#define GLUT_FCB_TABLET_BUTTON 18 /* GLUTtabletButtonFCB */ -#define GLUT_FCB_JOYSTICK 19 /* GLUTjoystickFCB */ -/* Non-GLUTwindow callbacks. */ -#define GLUT_FCB_OVERLAY_DISPLAY 100 /* GLUTdisplayFCB */ -#define GLUT_FCB_SELECT 101 /* GLUTselectFCB */ -#define GLUT_FCB_TIMER 102 /* GLUTtimerFCB */ - -/* GLUT Fortran callback function types. */ -typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void); -typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *); -/* NOTE the pressed key is int, not unsigned char for Fortran! */ -typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *); -typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *); -typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *); -typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *); -typedef void (GLUTCALLBACK *GLUTentryFCB) (int *); -typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *); -typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *); -typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *); -typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *); -typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *); -typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *); -typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *); -typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *); -typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *); -typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *); -typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z); - -typedef void (GLUTCALLBACK *GLUTselectFCB) (int *); -typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *); -typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *); /* DEPRICATED. */ -typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *); -typedef void (GLUTCALLBACK *GLUTidleFCB) (void); - -/* Functions that set and return Fortran callback functions. */ -GLUTAPI void* APIENTRY __glutGetFCB(int which); -GLUTAPI void APIENTRY __glutSetFCB(int which, void *func); - -#endif /* __glutf90_h__ */ diff --git a/lib/glut-3.7.6/include/GL/tube.h b/lib/glut-3.7.6/include/GL/tube.h deleted file mode 100644 index 5ea54142b8be1ad166c6b08d8e7805c81cd93274..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/GL/tube.h +++ /dev/null @@ -1,205 +0,0 @@ -/* - * tube.h - * - * FUNCTION: - * Tubing and Extrusion header file. - * This file provides protypes and defines for the extrusion - * and tubing primitives. - * - * HISTORY: - * Linas Vepstas 1990, 1991 - */ - -#ifndef __TUBE_H__ -#define __TUBE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - GLE API revision history: - - GLE_API_VERSION is updated to reflect GLE API changes (interface - changes, semantic changes, deletions, or additions). - - GLE_API_VERSION=228 GLUT 3.7 release of GLE. -**/ -#ifndef GLE_API_VERSION /* allow this to be overriden */ -#define GLE_API_VERSION 228 -#endif - -#ifdef _WIN32 -#define OPENGL_10 -#endif - -/* some types */ -#define gleDouble double -typedef gleDouble gleAffine[2][3]; - -/* ====================================================== */ - -/* defines for tubing join styles */ -#define TUBE_JN_RAW 0x1 -#define TUBE_JN_ANGLE 0x2 -#define TUBE_JN_CUT 0x3 -#define TUBE_JN_ROUND 0x4 -#define TUBE_JN_MASK 0xf /* mask bits */ -#define TUBE_JN_CAP 0x10 - -/* determine how normal vectors are to be handled */ -#define TUBE_NORM_FACET 0x100 -#define TUBE_NORM_EDGE 0x200 -#define TUBE_NORM_PATH_EDGE 0x400 /* for spiral, lathe, helix primitives */ -#define TUBE_NORM_MASK 0xf00 /* mask bits */ - -/* closed or open countours */ -#define TUBE_CONTOUR_CLOSED 0x1000 - -#define GLE_TEXTURE_ENABLE 0x10000 -#define GLE_TEXTURE_STYLE_MASK 0xff -#define GLE_TEXTURE_VERTEX_FLAT 1 -#define GLE_TEXTURE_NORMAL_FLAT 2 -#define GLE_TEXTURE_VERTEX_CYL 3 -#define GLE_TEXTURE_NORMAL_CYL 4 -#define GLE_TEXTURE_VERTEX_SPH 5 -#define GLE_TEXTURE_NORMAL_SPH 6 -#define GLE_TEXTURE_VERTEX_MODEL_FLAT 7 -#define GLE_TEXTURE_NORMAL_MODEL_FLAT 8 -#define GLE_TEXTURE_VERTEX_MODEL_CYL 9 -#define GLE_TEXTURE_NORMAL_MODEL_CYL 10 -#define GLE_TEXTURE_VERTEX_MODEL_SPH 11 -#define GLE_TEXTURE_NORMAL_MODEL_SPH 12 - -#ifdef GL_32 -/* HACK for GL 3.2 -- needed because no way to tell if lighting is on. */ -#define TUBE_LIGHTING_ON 0x80000000 - -#define gleExtrusion extrusion -#define gleSetJoinStyle setjoinstyle -#define gleGetJoinStyle getjoinstyle -#define glePolyCone polycone -#define glePolyCylinder polycylinder -#define gleSuperExtrusion super_extrusion -#define gleTwistExtrusion twist_extrusion -#define gleSpiral spiral -#define gleLathe lathe -#define gleHelicoid helicoid -#define gleToroid toroid -#define gleScrew screw - -#endif /* GL_32 */ - -extern int gleGetJoinStyle (void); -extern void gleSetJoinStyle (int style); /* bitwise OR of flags */ -extern int gleGetNumSlices(void); -extern void gleSetNumSlices(int slices); - -/* draw polyclinder, specified as a polyline */ -extern void glePolyCylinder (int npoints, /* num points in polyline */ - gleDouble point_array[][3], /* polyline vertces */ - float color_array[][3], /* colors at polyline verts */ - gleDouble radius); /* radius of polycylinder */ - -/* draw polycone, specified as a polyline with radii */ -extern void glePolyCone (int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline vertices */ - float color_array[][3], /* colors at polyline verts */ - gleDouble radius_array[]); /* cone radii at polyline verts */ - -/* extrude arbitrary 2D contour along arbitrary 3D path */ -extern void gleExtrusion (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline vertices */ - float color_array[][3]); /* colors at polyline verts */ - -/* extrude 2D contour, specifying local rotations (twists) */ -extern void gleTwistExtrusion (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline vertices */ - float color_array[][3], /* color at polyline verts */ - gleDouble twist_array[]); /* countour twists (in degrees) */ - -/* extrude 2D contour, specifying local affine tranformations */ -extern void gleSuperExtrusion (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline vertices */ - float color_array[][3], /* color at polyline verts */ - gleDouble xform_array[][2][3]); /* 2D contour xforms */ - -/* spiral moves contour along helical path by parallel transport */ -extern void gleSpiral (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - gleDouble startRadius, /* spiral starts in x-y plane */ - gleDouble drdTheta, /* change in radius per revolution */ - gleDouble startZ, /* starting z value */ - gleDouble dzdTheta, /* change in Z per revolution */ - gleDouble startXform[2][3], /* starting contour affine xform */ - gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ - gleDouble startTheta, /* start angle in x-y plane */ - gleDouble sweepTheta); /* degrees to spiral around */ - -/* lathe moves contour along helical path by helically shearing 3D space */ -extern void gleLathe (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - gleDouble startRadius, /* spiral starts in x-y plane */ - gleDouble drdTheta, /* change in radius per revolution */ - gleDouble startZ, /* starting z value */ - gleDouble dzdTheta, /* change in Z per revolution */ - gleDouble startXform[2][3], /* starting contour affine xform */ - gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ - gleDouble startTheta, /* start angle in x-y plane */ - gleDouble sweepTheta); /* degrees to spiral around */ - -/* similar to spiral, except contour is a circle */ -extern void gleHelicoid (gleDouble rToroid, /* circle contour (torus) radius */ - gleDouble startRadius, /* spiral starts in x-y plane */ - gleDouble drdTheta, /* change in radius per revolution */ - gleDouble startZ, /* starting z value */ - gleDouble dzdTheta, /* change in Z per revolution */ - gleDouble startXform[2][3], /* starting contour affine xform */ - gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ - gleDouble startTheta, /* start angle in x-y plane */ - gleDouble sweepTheta); /* degrees to spiral around */ - -/* similar to lathe, except contour is a circle */ -extern void gleToroid (gleDouble rToroid, /* circle contour (torus) radius */ - gleDouble startRadius, /* spiral starts in x-y plane */ - gleDouble drdTheta, /* change in radius per revolution */ - gleDouble startZ, /* starting z value */ - gleDouble dzdTheta, /* change in Z per revolution */ - gleDouble startXform[2][3], /* starting contour affine xform */ - gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ - gleDouble startTheta, /* start angle in x-y plane */ - gleDouble sweepTheta); /* degrees to spiral around */ - -/* draws a screw shape */ -extern void gleScrew (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - gleDouble startz, /* start of segment */ - gleDouble endz, /* end of segment */ - gleDouble twist); /* number of rotations */ - -extern void gleTextureMode (int mode); - -#ifdef __cplusplus -} - -#endif -#endif /* __TUBE_H__ */ -/* ================== END OF FILE ======================= */ diff --git a/lib/glut-3.7.6/include/mui/browser.h b/lib/glut-3.7.6/include/mui/browser.h deleted file mode 100644 index 3c97b52396ec00aa263f46177b4f307f7d4f6e7b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/browser.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#define BROWSEFILE "/tmp/browserdata" - -extern char currentdirectoryname[]; -extern char currentfilename[]; -extern char browseprompt[]; - -extern int xcenter, ycenter; - -extern void parsebrowsefile(FILE *); -void setcurrentfilename(char *); diff --git a/lib/glut-3.7.6/include/mui/displaylist.h b/lib/glut-3.7.6/include/mui/displaylist.h deleted file mode 100644 index 471430bb0a51dac3b1394efc380f6ddc0546eb98..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/displaylist.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#define P_UISHADOW 343 -#define P_UILINESHADOW 344 - -#define UI_FONT_BOLD 1 -#define UI_FONT_NORMAL 2 -#define UI_FONT_FIXED_PITCH 3 - -void uistartdraw(void); -void uirecti(int x, int y, int z, int w); -void uienddraw(void (*uicolor)()); -void uimove2i(int,int); -void uidraw2i(int,int); -void uirectfi(int x, int y, int z, int w); -void uiclear(void); -void uicmov2i(int x, int y); -void uicharstr(char *s, int font); -void uiendline(void); -void uipushviewport(void); -void uipopviewport(void); -void uiviewport(int x, int y, int width, int height); -void uipmv2i(int, int); -void uipdr2i(int, int); -void uipclos(void); -void uiendline(void); diff --git a/lib/glut-3.7.6/include/mui/gizmo.h b/lib/glut-3.7.6/include/mui/gizmo.h deleted file mode 100644 index b99469d8b73a85d0e65fc17fdc709912bf9ea47b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/gizmo.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - - /* jot text editor source code. */ - /* Tom Davis */ - /* February 7, 1992 */ - -/* defines for gizmos */ - -#include - -#define BUTSTRLEN 60 -#define LABELSTRLEN 150 - -#define FONTWIDTH 9 /* for fixed font */ -#define BASELINE 9 - -/* BUTTON STUFF */ -#define PUSHBUTTON 3 -#define RADIOBUTTON 6 -#define INDICATOR 9 -#define BED 10 -#define BUTTON 11 - -#define BUTHEIGHT 28 -#define BUTWIDTH 75 -#define RADIOWIDTH 24 -#define RADIOHEIGHT 24 -#define TINYRADIOHEIGHT 16 -#define TINYRADIOWIDTH 16 - -typedef struct butn { - char str[BUTSTRLEN+1]; - int type; - void (*butcolor)(); - struct butn *link; /* for linking radio buttons, e.g. */ - muiObject *object; -} Button; - - -/* TEXT BOX STUFF */ -#define TBSTRLEN 200 -#define TEXTHEIGHT 17 -#define TEXTBOXHEIGHT 28 - -typedef struct { - char str[TBSTRLEN+1]; - char label[LABELSTRLEN+1]; - int tp1, tp2; - int charWidth; - int type; -} TextBox; - -TextBox *newtb(int xmin, int xmax); - -/* LABEL STUFF */ - -#define LBLSTRLEN 200 /* max length of a label string */ - -typedef struct { - char str[LBLSTRLEN+1]; -} Label; - -Label *newlabel(char *s); - -/* SLIDER STUFF */ - -#define SLIDERWIDTH 20 -#define MINSHALF 13 -#define ARROWHEIGHT 20 - -#define SCROLLDOWN -1 -#define SCROLLUP 1 -#define THUMB 2 - -typedef struct { - int scenter; /* the center of the thumb */ - int shalf; /* half of the thumb length */ - int oldpos; /* old scenter */ - int arrowdelta; /* arrow delta */ - int thumb; /* whether the thumb should show */ -} Slider; - -typedef Slider VSlider; -typedef Slider HSlider; - -/* TEXTLIST STUFF */ - -typedef struct { - int listheight; /* in lines of text */ - char **strs; /* text */ - int top; /* index into strs */ - int count; /* total number of strings */ - int selecteditem; /* index into selecteditem or -1 */ - int locateditem; /* index into locateditem or -1 */ -} TextList; - -/* PULLDOWN STUFF */ - -#define PULLDOWN_HEIGHT 25 - -typedef struct { - char title[40]; - int menu; - int xoffset; -} menuentry; - -typedef struct { - int count; - int ishelp; - menuentry menus[30]; - menuentry helpmenu; -} Pulldown; - - -/* Define for the settbtype() and gettypein() flag */ -#define TYPEIN_STRING 0 -#define TYPEIN_INT 1 -#define TYPEIN_FILE 2 -#define TYPEIN_FLOAT 3 - -/* Color Stuff */ - -extern Button *newbed(void); -extern Button *newbut(void); -extern Button *newradiobut(void); -extern Pulldown *newpd(void); -extern void drawbut(muiObject *); -extern void drawvs(muiObject *obj); -extern void drawhs(muiObject *obj); -extern void drawtl(muiObject *obj); -extern void drawradiobutton(muiObject *obj); -extern void drawtinyradio(muiObject *obj); -extern void drawpulldown(muiObject *obj); -extern int getcurrentcolor(void); -extern void setcurrentcolor(int c); -extern void drawedges(int, int, int, int, void (*)(void), void (*)(void)); -extern void loadbut(Button *, char *); -extern void drawbut(muiObject *); -extern int pressbut(muiObject *); -extern void drawlabel(muiObject *); -extern void drawboldlabel(muiObject *); -extern void loadtb(TextBox *, char *); -extern int handletb(muiObject *, int, int); -extern void drawtb(muiObject *); -extern int inbut(Button *, int, int); -extern int intb(muiObject *, int, int); -extern void activatetb(TextBox *); -extern void deactivatetb(TextBox *); -extern char *gettbstr(TextBox *); - -extern VSlider *newvs(muiObject *obj, int ymin, int ymax, int scenter, int shalf); -extern VSlider *newhs(muiObject *obj, int xmin, int xmax, int scenter, int shalf); -extern void drawsetup(void); -extern void drawrestore(void); -extern void backgrounddraw(int xmin, int ymin, int xmax, int ymax); -extern TextList *newtl(muiObject *obj, int listheight); - -extern enum muiReturnValue buttonhandler(muiObject *obj, int event, int value, int x, int y); -extern enum muiReturnValue nullhandler(muiObject *obj, int event, int value, int x, int y); -extern enum muiReturnValue textboxhandler(muiObject *obj, int event, int value, int x, int y); -extern enum muiReturnValue vshandler(muiObject *obj, int event, int value, int x, int y); -extern enum muiReturnValue hshandler(muiObject *obj, int event, int value, int x, int y); -extern enum muiReturnValue tlhandler(muiObject *obj, int event, int value, int x, int y); -extern enum muiReturnValue pdhandler(muiObject *obj, int event, int value, int x, int y); - - -/* mui events */ - -#define MUI_DEVICE_DOWN 1 -#define MUI_DEVICE_UP 2 -#define MUI_DEVICE_PRESS 3 -#define MUI_DEVICE_RELEASE 4 -#define MUI_DEVICE_CLICK 5 -#define MUI_DEVICE_DOUBLE_CLICK 6 -#define MUI_KEYSTROKE 7 - -#define MUI_BUTTONFONT 0 -#define MUI_BUTTONFONT_BOLD 0 - -typedef struct muicons { - struct muicons *next; - muiObject *object; -} muiCons; - -void muiBackgroundClear(void); - -void muiFreeObject(muiObject *obj); -int muiInObject(muiObject *obj, int x, int y); - -int muiGetLocate(muiObject *obj); -void muiSetLocate(muiObject *obj, int state); -int muiGetSelect(muiObject *obj); -void muiSetSelect(muiObject *obj, int state); -muiCons *muiGetListCons(int uilist); -muiObject *muiGetActiveTB(void); -void muiSetUIList(muiObject *obj, int list); -int muiGetUIList(muiObject *obj); - -void muiDrawObject(muiObject *obj); - -void muiError(char *s); - -muiObject *muiHitInList(int uilist, int x, int y); -void muiDrawUIList(int uilist); -void muiHandleEvent(int event, int value, int x, int y); - diff --git a/lib/glut-3.7.6/include/mui/hslider.h b/lib/glut-3.7.6/include/mui/hslider.h deleted file mode 100644 index 9d81047310ed533d15e69724d85ce6fda7cd1dd6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/hslider.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1990, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -void drawparths(VSlider *, int); -void adjusthsthumb(muiObject *, double, double); diff --git a/lib/glut-3.7.6/include/mui/mui.h b/lib/glut-3.7.6/include/mui/mui.h deleted file mode 100644 index 50a3d4ae3e98d930c44b0421313b144f8287d864..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/mui.h +++ /dev/null @@ -1,156 +0,0 @@ -#ifndef __mui_h__ -#define __mui_h__ - -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -enum muiObjType { MUI_BUTTON, MUI_LABEL, MUI_BOLDLABEL, MUI_TEXTBOX, - MUI_VSLIDER, MUI_TEXTLIST, MUI_RADIOBUTTON, - MUI_TINYRADIOBUTTON, MUI_PULLDOWN, MUI_HSLIDER }; - -/* MUI Return Values: */ - -enum muiReturnValue { MUI_NO_ACTION, - MUI_SLIDER_MOVE, - MUI_SLIDER_RETURN, - MUI_SLIDER_SCROLLDOWN, - MUI_SLIDER_SCROLLUP, - MUI_SLIDER_THUMB, - MUI_BUTTON_PRESS, - MUI_TEXTBOX_RETURN, - MUI_TEXTLIST_RETURN, - MUI_TEXTLIST_RETURN_CONFIRM -}; - -typedef struct muiobj { - enum muiObjType type; - int xmin, xmax, ymin, ymax; /* bounding box */ - short active; /* 1 = toggled on, or pressed radio button, or can - be typed in (textbox), etc */ - short enable; /* 1 = can be accessed; drawn with solid text */ - short select; /* 1 = pressed (must be located at the time */ - short locate; /* 1 = located; usually the cursor is over it */ - short visible; /* 1 = drawn. not visible => not enabled */ - enum muiReturnValue (*handler)(struct muiobj *obj, int event, int value, int x, int y); - int id; /* available for users */ - int uilist; - void * object; - void (*callback)(struct muiobj *, enum muiReturnValue); -} muiObject; - -/* General MUI Routines */ - -void muiInit(void); -void muiAttachUIList(int uilist); -void muiNewUIList(int listid); -void muiAddToUIList(int uilist, muiObject *obj); -void muiSetCallback(muiObject *obj, void (*callback)(muiObject *, enum muiReturnValue)); -void muiGetObjectSize(muiObject *obj, int *xmin, int *ymin, int *xmax, int *ymax); -void muiSetID(muiObject *obj, int id); -int muiGetID(muiObject *obj); - -/* for a click that doesn't hit anything: */ - -void muiSetNonMUIcallback(void (*nc)(int, int)); - -int muiGetVisible(muiObject *obj); -void muiSetVisible(muiObject *obj, int state); -int muiGetActive(muiObject *obj); -void muiSetActive(muiObject *obj, int state); -int muiGetEnable(muiObject *obj); -void muiSetEnable(muiObject *obj, int state); -void muiSetActiveUIList(int i); -int muiGetActiveUIList(void); - -/* Button Routines */ - -muiObject *muiNewButton(int xmin, int xmax, int ymin, int ymax); -void muiLoadButton(muiObject *but, char *str); -muiObject *muiNewRadioButton(int xmin, int ymin); -muiObject *muiNewTinyRadioButton(int xmin, int ymin); -void muiLinkButtons(muiObject *obj1, muiObject *obj2); -void muiClearRadio(muiObject *rad); - -/* Label Routines */ - -muiObject *muiNewLabel(int xmin, int ymin, char *label); -muiObject *muiNewBoldLabel(int xmin, int ymin, char *label); -void muiChangeLabel(muiObject *obj, char *s); - -/* Text Box Routines */ - -muiObject *muiNewTextbox(int xmin, int xmax, int ymin); -char *muiGetTBString(muiObject *obj); -void muiClearTBString(muiObject *obj); -void muiSetTBString(muiObject *obj, char *s); - -/* Vertical Slider Routines */ - -muiObject *muiNewVSlider(int xmin, int ymin, int ymax, int scenter, int shalf); -float muiGetVSVal(muiObject *obj); -void muiSetVSValue(muiObject *obj, float val); -void muiSetVSArrowDelta(muiObject *obj, int newd); - -/* Horizontal Slider Routines */ - -muiObject *muiNewHSlider(int xmin, int ymin, int xmax, int scenter, int shalf); -float muiGetHSVal(muiObject *obj); -void muiSetHSValue(muiObject *obj, float val); -void muiSetHSArrowDelta(muiObject *obj, int newd); - -/* Text List Routines */ - -muiObject *muiNewTextList(int xmin, int ymin, int xmax, int listheight); -void muiSetTLTop(muiObject *obj, float p); -int muiGetTLSelectedItem(muiObject *obj); -void muiSetTLStrings(muiObject *obj, char **s); -void muiSetTLTopInt(muiObject *obj, int top); - -/* Pulldown Menu Routines */ - -muiObject *muiNewPulldown(void); -void muiAddPulldownEntry(muiObject *obj, char *title, int menu, int ishelp); - -#ifdef __cplusplus -} - -#endif -#endif /* __mui_h__ */ diff --git a/lib/glut-3.7.6/include/mui/textlist.h b/lib/glut-3.7.6/include/mui/textlist.h deleted file mode 100644 index fabc5ce0a54dee51482b0b63d932b5f31310b847..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/textlist.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 1990, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -void drawparttl(TextList *, long); diff --git a/lib/glut-3.7.6/include/mui/uicolor.h b/lib/glut-3.7.6/include/mui/uicolor.h deleted file mode 100644 index 2da23284277356429f108f77738f80660ba3f992..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/uicolor.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -void uiBlack(void); -void uiVyDkGray(void); -void uiDkGray(void); -void uiMmGray(void); -void uiLtGray(void); -void uiVyLtGray(void); -void uiWhite(void); -void uiDkYellow(void); -void uiMmYellow(void); -void uiLtYellow(void); -void uiYellow(void); - -void uiBlue(void); - -void uiTerraCotta(void); -void uiDkTerraCotta(void); -void uiSlateBlue(void); - -void uiPupBlack(void); -void uiPupGray(void); -void uiPupWhite(void); -void uiPupClear(void); - -int getcurrentcolor(void); -void setcurrentcolor(int); -void uiBackground(void); diff --git a/lib/glut-3.7.6/include/mui/vslider.h b/lib/glut-3.7.6/include/mui/vslider.h deleted file mode 100644 index feb8dfedf6ddaf93f19418639d2d77e506d0b64a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/include/mui/vslider.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1990, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -void drawpartvs(VSlider *, int); -void adjustvsthumb(muiObject *, double, double); diff --git a/lib/glut-3.7.6/lib/Imakefile b/lib/glut-3.7.6/lib/Imakefile deleted file mode 100644 index be822433a8ceeb694f72aa24f2cc4cda5c85a209..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/Imakefile +++ /dev/null @@ -1,13 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1995. */ - -#define IHaveSubdirs -#define PassCDebugFlags - -/* NOTE: The fglut directory is GLUT FORTRAN bindings which are */ -/* specific to IRIX 5.x. See ../README.fortran */ - -SUBDIRS = glut mui gle glsmap - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/lib/_all.dsp b/lib/glut-3.7.6/lib/_all.dsp deleted file mode 100644 index 2e26c30f32adf2ab5d284c761d545a37b7e2380b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/lib/dll.dsw b/lib/glut-3.7.6/lib/dll.dsw deleted file mode 100644 index 78bc5329ee6ac16b592c19d75073177388840740..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/dll.dsw +++ /dev/null @@ -1,41 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "gle"=".\gle\gle.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "gle_dll"=".\gle\gle_dll.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/lib/fglut.n32/ObjectType.mk b/lib/glut-3.7.6/lib/fglut.n32/ObjectType.mk deleted file mode 100644 index 6116ff97ebaddd2e7bb0e9da92b07312322653c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut.n32/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_N32) -CSTYLE = $(CSTYLE_N32) diff --git a/lib/glut-3.7.6/lib/fglut.n64/ObjectType.mk b/lib/glut-3.7.6/lib/fglut.n64/ObjectType.mk deleted file mode 100644 index da57d5a870acf97fcb41e666ce5ddffe5e8f00fb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut.n64/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_64) -CSTYLE = $(CSTYLE_64) diff --git a/lib/glut-3.7.6/lib/fglut/ObjectType.mk b/lib/glut-3.7.6/lib/fglut/ObjectType.mk deleted file mode 100644 index f94dc77f5ffbe482ca1434d44eb74d83595a8ffc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_32) -CSTYLE = $(CSTYLE_32) diff --git a/lib/glut-3.7.6/lib/fglut/fglut.c b/lib/glut-3.7.6/lib/fglut/fglut.c deleted file mode 100644 index b7a0b30bebbec43937c88f28cf2f33e8ff3ca5d4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut.c +++ /dev/null @@ -1,287 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#ifndef WRAPPERS_ONLY - -#include - -extern int __Argc; -extern char **__Argv; - -static GLUTmenuStateFCB fortranMenuStateFunc; - -void -glutnull_(void) -{ -} - -void -glutinit_(void) -{ - glutInit(&__Argc, __Argv); -} - -static void -fortranMenuStateWrapper(int value) -{ - fortranMenuStateFunc(&value); -} - -static void -fortranReshapeWrapper(int w, int h) -{ - (*__glutCurrentWindow->freshape) (&w, &h); -} - -#if 0 /* XXX No IRIX joystick support for now. */ -static void -fortranJoystickWrapper(unsigned int button, int x, int y, int z) -{ - (*__glutCurrentWindow->fjoystick) (&button, &x, &y, &z); -} -#endif - -static void -fortranKeyboardWrapper(unsigned char ch, int x, int y) -{ - int chi = ch; - - (*__glutCurrentWindow->fkeyboard) (&chi, &x, &y); -} - -static void -fortranKeyboardUpWrapper(unsigned char ch, int x, int y) -{ - int chi = ch; - - (*__glutCurrentWindow->fkeyboardUp) (&chi, &x, &y); -} - -static void -fortranMouseWrapper(int btn, int state, int x, int y) -{ - (*__glutCurrentWindow->fmouse) (&btn, &state, &x, &y); -} - -static void -fortranMotionWrapper(int x, int y) -{ - (*__glutCurrentWindow->fmotion) (&x, &y); -} - -static void -fortranPassiveMotionWrapper(int x, int y) -{ - (*__glutCurrentWindow->fpassive) (&x, &y); -} - -static void -fortranEntryWrapper(int state) -{ - (*__glutCurrentWindow->fentry) (&state); -} - -static void -fortranVisibilityWrapper(int state) -{ - (*__glutCurrentWindow->fvisibility) (&state); -} - -static void -fortranTimerWrapper(int value) -{ - /* Relies on special knowledge that __glutTimerList points to - the GLUTtimer* currently being processed! */ - (*__glutTimerList->ffunc) (&value); -} - -static void -fortranSelectWrapper(int value) -{ - (*__glutItemSelected->menu->fselect) (&value); -} - -static void -fortranSpecialWrapper(int key, int x, int y) -{ - (*__glutCurrentWindow->fspecial) (&key, &x, &y); -} - -static void -fortranSpecialUpWrapper(int key, int x, int y) -{ - (*__glutCurrentWindow->fspecialUp) (&key, &x, &y); -} - -static void -fortranSpaceballMotionWrapper(int x, int y, int z) -{ - (*__glutCurrentWindow->fspaceMotion) (&x, &y, &z); -} - -static void -fortranSpaceballRotateWrapper(int x, int y, int z) -{ - (*__glutCurrentWindow->fspaceRotate) (&x, &y, &z); -} - -static void -fortranSpaceballButtonWrapper(int button, int state) -{ - (*__glutCurrentWindow->fspaceButton) (&button, &state); -} - -static void -fortranTabletMotionWrapper(int x, int y) -{ - (*__glutCurrentWindow->ftabletMotion) (&x, &y); -} - -static void -fortranTabletButtonWrapper(int button, int state, int x, int y) -{ - (*__glutCurrentWindow->ftabletButton) (&button, &state, &x, &y); -} - -static void -fortranDialsWrapper(int dial, int value) -{ - (*__glutCurrentWindow->fdials) (&dial, &value); -} - -static void -fortranButtonBoxWrapper(int button, int state) -{ - (*__glutCurrentWindow->fbuttonBox) (&button, &state); -} - -#endif /* WRAPPERS_ONLY */ - -#define glutfunc(Name,name,mixed,type) \ -void \ -glut##name##func(GLUT##type##FCB mixed) \ -{ \ - if(mixed == (GLUT##type## FCB) glutnull_) { \ - glut##Name ## Func(NULL); \ - } else { \ - glut##Name##Func(fortran##Name##Wrapper); \ - __glutCurrentWindow->f##mixed = mixed; \ - } \ -} - -glutfunc(Reshape, reshape, reshape, reshape) -glutfunc(Keyboard, keyboard, keyboard, keyboard) -glutfunc(KeyboardUp, keyboardup, keyboardUp, keyboard) -glutfunc(Mouse, mouse, mouse, mouse) -glutfunc(Motion, motion, motion, motion) -glutfunc(Entry, entry, entry, entry) -glutfunc(Visibility, visibility, visibility, visibility) -glutfunc(Special, special, special, special) -glutfunc(SpecialUp, specialup, specialUp, special) -glutfunc(Dials, dials, dials, dials) -glutfunc(SpaceballMotion, spaceballmotion, spaceMotion, spaceMotion) -glutfunc(SpaceballRotate, spaceballrotate, spaceRotate, spaceRotate) -glutfunc(SpaceballButton, spaceballbutton, spaceButton, spaceButton) -glutfunc(PassiveMotion, passivemotion, passive, passive) -glutfunc(ButtonBox, buttonbox, buttonBox, buttonBox) -glutfunc(TabletMotion, tabletmotion, tabletMotion, tabletMotion) -glutfunc(TabletButton, tabletbutton, tabletButton, tabletButton) - -/* Special callback cases. */ - -/* The display has no parameters passed so no need for wrapper. */ -void -glutdisplayfunc(GLUTdisplayFCB display) -{ - glutDisplayFunc((GLUTdisplayCB) display); -} - -int -glutcreatemenu(GLUTselectFCB select) -{ - int menu; - - menu = glutCreateMenu(fortranSelectWrapper); - __glutCurrentMenu->fselect = select; - return menu; -} - -void -gluttimerfunc(unsigned long interval, GLUTtimerFCB timer, int value) -{ - glutTimerFunc((unsigned int) interval, fortranTimerWrapper, value); - /* Relies on special __glutNewTimer variable side effect to - establish Fortran timer func! */ - __glutNewTimer->ffunc = timer; -} - -/* ARGSUSED */ -void -glutjoystickfunc(GLUTjoystickFCB joystick, int pollInterval) -{ -#if 0 /* XXX No IRIX joystick support for now. */ - if(joystick == (GLUTjoystickFCB) glutnull_) { - glutJoystickFunc(NULL, pollInterval); - } else { - glutJoystickFunc(fortranJoystickWrapper, pollInterval); - __glutCurrentWindow->fjoystick = joystick; - } -#endif -} - -void -glutidlefunc(GLUTidleFCB idleFunc) -{ - if (idleFunc == (GLUTidleFCB) glutnull_) { - glutIdleFunc(NULL); - } else { - glutIdleFunc(idleFunc); - } -} - -void -glutmenustatefunc(GLUTmenuStateFCB menuStateFunc) -{ - if (menuStateFunc == (GLUTmenuStateFCB) glutnull_) { - glutMenuStateFunc(NULL); - } else { - glutMenuStateFunc(fortranMenuStateWrapper); - fortranMenuStateFunc = menuStateFunc; - } -} - -void -glutbitmapcharacter(int *font, int ch) -{ - /* - * mkf2c gets confused by double pointers and void* pointers. - * So mkf2c does not complain, we consider the font handle to - * be an int*. But we really get an int** since Fortran - * passes by reference. So to "pedantically decode" the - * pointer, cast it first to int**, then dereference it, - * then cast the result to a void*. - */ - void *trueFont = (void *) *((int **) font); - - glutBitmapCharacter(trueFont, ch); -} - -void -glutstrokecharacter(int *font, int ch) -{ - /* - * mkf2c gets confused by double pointers and void* pointers. - * So mkf2c does not complain, we consider the font handle to - * be an int*. But we really get an int** since Fortran - * passes by reference. So to "pedantically decode" the - * pointer, cast it first to int**, then dereference it, - * then cast the result to a void*. - */ - void *trueFont = (void *) *((int **) font); - - glutStrokeCharacter(trueFont, ch); -} diff --git a/lib/glut-3.7.6/lib/fglut/fglut_8x13.c b/lib/glut-3.7.6/lib/fglut/fglut_8x13.c deleted file mode 100644 index 9d6a91be0bbaf763e9e1099c22f94a792ef62bd3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_8x13.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_bitmap_8_by_13_ = &glutBitmap8By13; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_9x15.c b/lib/glut-3.7.6/lib/fglut/fglut_9x15.c deleted file mode 100644 index 104372a9609ed1ff2f34780946c62d8ed725597c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_9x15.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_bitmap_9_by_15_ = &glutBitmap9By15; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_hel10.c b/lib/glut-3.7.6/lib/fglut/fglut_hel10.c deleted file mode 100644 index 21f2c64f674be12ad9c72a49f0778a72b4cead0a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_hel10.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_bitmap_helvetica_10_ = &glutBitmapHelvetica10; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_hel12.c b/lib/glut-3.7.6/lib/fglut/fglut_hel12.c deleted file mode 100644 index aec2600cebda918e12821773c33d510e539a7567..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_hel12.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_bitmap_helvetica_12_ = &glutBitmapHelvetica12; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_hel18.c b/lib/glut-3.7.6/lib/fglut/fglut_hel18.c deleted file mode 100644 index 414783442398071d7eebaf4d411bca6f82f9d2fd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_hel18.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_bitmap_helvetica_18 = &glutBitmapHelvetica18; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_mroman.c b/lib/glut-3.7.6/lib/fglut/fglut_mroman.c deleted file mode 100644 index 60dafee772646b321584799edb40511ff725712e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_mroman.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_stroke_mono_roman_ = &glutStrokeMonoRoman; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_roman.c b/lib/glut-3.7.6/lib/fglut/fglut_roman.c deleted file mode 100644 index 5ea07855ccdbff8956a9d9cc0ae6d81fd79480f2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_roman.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_stroke_roman_ = &glutStrokeRoman; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_tr10.c b/lib/glut-3.7.6/lib/fglut/fglut_tr10.c deleted file mode 100644 index 946b82594feb3363e478d758c418adc167e55e70..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_tr10.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_bitmap_times_roman_10_ = &glutBitmapTimesRoman10; - diff --git a/lib/glut-3.7.6/lib/fglut/fglut_tr24.c b/lib/glut-3.7.6/lib/fglut/fglut_tr24.c deleted file mode 100644 index c6d45afc5a4959cc07eb30d3a6ba957edb5526fc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/fglut/fglut_tr24.c +++ /dev/null @@ -1,11 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees and - is provided without guarantee or warrantee expressed or implied. - This program is -not- in the public domain. */ - -#include - -void *glut_bitmap_times_roman_24_ = &glutBitmapTimesRoman24; - diff --git a/lib/glut-3.7.6/lib/gle.n32/ObjectType.mk b/lib/glut-3.7.6/lib/gle.n32/ObjectType.mk deleted file mode 100644 index 6116ff97ebaddd2e7bb0e9da92b07312322653c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle.n32/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_N32) -CSTYLE = $(CSTYLE_N32) diff --git a/lib/glut-3.7.6/lib/gle.n64/ObjectType.mk b/lib/glut-3.7.6/lib/gle.n64/ObjectType.mk deleted file mode 100644 index 55d0f47555f040b45d0f60e02988ecfaa47da627..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle.n64/ObjectType.mk +++ /dev/null @@ -1,3 +0,0 @@ -LDOPTS = $(LDOPTS_64) -#OPTIMIZER = -O0 -CSTYLE = $(CSTYLE_64) diff --git a/lib/glut-3.7.6/lib/gle/Imakefile b/lib/glut-3.7.6/lib/gle/Imakefile deleted file mode 100644 index e71854647f2e732701c65705f44da668055a2d71..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/Imakefile +++ /dev/null @@ -1,30 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#define DoNormalLib YES - -#include - -#include "../../Glut.cf" - -EXTRA_DEFINES = -DOPENGL_10 -DAUTO_TEXTURE -D__GUTIL_DOUBLE - -SRCS = ex_angle.c ex_cut_round.c ex_raw.c extrude.c intersect.c \ - rot_prince.c rotate.c round_cap.c segment.c texgen.c \ - urotate.c view.c - -OBJS = ex_angle.o ex_cut_round.o ex_raw.o extrude.o intersect.o \ - rot_prince.o rotate.o round_cap.o segment.o texgen.o \ - urotate.o view.o - -#ifdef LibraryObjectRule -LibraryObjectRule() -#else -/* XXX Very lame, you must be using pre-R5 config files! This - will probably do essentially what LibraryObjectRule does. */ -NormalLibraryObjectRule() -#endif - -NormalLibraryTarget(gle,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/lib/gle/ObjectType.mk b/lib/glut-3.7.6/lib/gle/ObjectType.mk deleted file mode 100644 index f94dc77f5ffbe482ca1434d44eb74d83595a8ffc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_32) -CSTYLE = $(CSTYLE_32) diff --git a/lib/glut-3.7.6/lib/gle/copy.h b/lib/glut-3.7.6/lib/gle/copy.h deleted file mode 100644 index 1bfff4bad7035ea9d3355562640f79ec264c1ef0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/copy.h +++ /dev/null @@ -1,18 +0,0 @@ - -/* - * - * Written By Linas Vepstas November 1991 - */ - - -#define COPY_THREE_WORDS(A,B) { \ - struct three_words { long a, b, c, }; \ - *(struct three_words *) (A) = *(struct three_words *) (B); \ -} - -#define COPY_FOUR_WORDS(A,B) { \ - struct four_words { long a, b, c, d, }; \ - *(struct four_words *) (A) = *(struct four_words *) (B); \ -} - -/* ============================================================= */ diff --git a/lib/glut-3.7.6/lib/gle/ex_angle.c b/lib/glut-3.7.6/lib/gle/ex_angle.c deleted file mode 100644 index 0798c230c2fece2378d631150110c242028eb5f0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/ex_angle.c +++ /dev/null @@ -1,519 +0,0 @@ - -/* - * MODULE NAME: ex_angle.c - * - * FUNCTION: - * This module contains code that draws extrusions with angled - * joins ("angle join style"). It also inserts colors and normals - * where necessary, if appropriate. - * - * HISTORY: - * written by Linas Vepstas August/September 1991 - * split into multiple compile units, Linas, October 1991 - * added normal vectors Linas, October 1991 - * "code complete" (that is, I'm done), Linas Vepstas, October 1991 - * work around OpenGL's lack of support for concave polys, June 1994 - */ - -#include -#include -#include /* for the memcpy() subroutine */ -#include -#include "port.h" -#include "gutil.h" -#include "vvector.h" -#include "tube_gc.h" -#include "extrude.h" -#include "intersect.h" -#include "segment.h" - -/* ============================================================ */ -/* - * Algorithmic trivia: - * - * There is a slight bit of trivia which the super-duper exacto coder - * needs to know about the code in this module. It is this: - * - * This module attempts to correctly treat contour normal vectors - * by applying the inverse transpose of the 2D contour affine - * transformation to the 2D contour normals. This is perfectly correct, - * when applied to the "raw" join style. However, if the affine transform - * has a strong rotational component, AND the join style is angle or - * cut, then the normal vectors would continue to rotate as the - * intersect point is extrapolated. - * - * The extrapolation of the inverse-transpose matrix to the intersection - * point is not done. This would appear to be overkill for most - * situations. The viewer might possibly detect an artifact of the - * failure to do this correction IF all three of the following criteria - * were met: - * 1) The affine xform has a strong rotational component, - * 2) The angle between two succesive segments is sharp (greater than 15 or - * 30 degrees). - * 3) The join style is angle or cut. - * - * However, I beleive that it is highly unlikely that the viewer will - * detect any artifacts. The reason I beleive this is that a strong - * rotational component will twist a segment so strongly that the more - * visible artifact will be that a segment is composed of triangle strips. - * As the user attempts to minimize the tesselation artifacts by shortening - * segments, then the rotational component will decrease in proportion, - * and the lighting artifact will fall away. - * - * To summarize, there is a slight inexactness in this code. The author - * of the code beleives that this inexactness results in miniscule - * errors in every situation. - * - * Linas Vepstas March 1993 - */ - -/* ============================================================ */ - -void draw_angle_style_front_cap (int ncp, /* number of contour points */ - gleDouble bi[3], /* biscetor */ - gleDouble point_array[][3]) /* polyline */ -{ - int j; -#ifdef OPENGL_10 - GLUtriangulatorObj *tobj; -#endif /* OPENGL_10 */ - - if (bi[2] < 0.0) { - VEC_SCALE (bi, -1.0, bi); - } - -#ifdef GL_32 - /* old-style gl handles concave polygons no problem, so the code is - * simple. New-style gl is a lot more tricky. */ - /* draw the end cap */ - BGNPOLYGON (); - - N3F (bi); - for (j=0; j 0.0) { - VEC_SCALE (bi, -1.0, bi); - } - -#ifdef GL_32 - /* old-style gl handles concave polygons no problem, so the code is - * simple. New-style gl is a lot more tricky. */ - /* draw the end cap */ - BGNPOLYGON (); - - N3F (bi); - for (j=ncp-1; j>=0; j--) { - V3F (point_array[j], j, BACK_CAP); - } - ENDPOLYGON (); -#endif /* GL_32 */ - -#ifdef OPENGL_10 - N3F (bi); - - tobj = gluNewTess (); - gluTessCallback (tobj, GLU_BEGIN, glBegin); - gluTessCallback (tobj, GLU_VERTEX, glVertex3dv); - gluTessCallback (tobj, GLU_END, glEnd); - gluBeginPolygon (tobj); - - for (j=ncp-1; j>=0; j--) { - gluTessVertex (tobj, point_array[j], point_array[j]); - } - gluEndPolygon (tobj); - gluDeleteTess (tobj); -#endif /* OPENGL_10 */ -} - -/* ============================================================ */ - -void extrusion_angle_join (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D normal vecs */ - gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline */ - float color_array[][3], /* color of polyline */ - gleDouble xform_array[][2][3]) /* 2D contour xforms */ -{ - int i, j; - int inext, inextnext; - gleDouble m[4][4]; - gleDouble len; - gleDouble len_seg; - gleDouble diff[3]; - gleDouble bi_0[3], bi_1[3]; /* bisecting plane */ - gleDouble bisector_0[3], bisector_1[3]; /* bisecting plane */ - gleDouble end_point_0[3], end_point_1[3]; - gleDouble origin[3], neg_z[3]; - gleDouble yup[3]; /* alternate up vector */ - gleDouble *front_loop, *back_loop; /* contours in 3D */ - char * mem_anchor; - double *norm_loop; - double *front_norm, *back_norm, *tmp; /* contour normals in 3D */ - int first_time; - - /* By definition, the contour passed in has its up vector pointing in - * the y direction */ - if (up == NULL) { - yup[0] = 0.0; - yup[1] = 1.0; - yup[2] = 0.0; - } else { - VEC_COPY(yup, up); - } - - /* ========== "up" vector sanity check ========== */ - (void) up_sanity_check (yup, npoints, point_array); - - /* the origin is at the origin */ - origin [0] = 0.0; - origin [1] = 0.0; - origin [2] = 0.0; - - /* and neg_z is at neg z */ - neg_z[0] = 0.0; - neg_z[1] = 0.0; - neg_z[2] = 1.0; - - /* ignore all segments of zero length */ - i = 1; - inext = i; - FIND_NON_DEGENERATE_POINT (inext, npoints, len, diff, point_array); - len_seg = len; /* store for later use */ - - /* get the bisecting plane */ - bisecting_plane (bi_0, point_array[0], - point_array[1], - point_array[inext]); - /* reflect the up vector in the bisecting plane */ - VEC_REFLECT (yup, yup, bi_0); - - /* malloc the storage we'll need for relaying changed contours to the - * drawing routines. */ - mem_anchor = malloc (2 * 3 * ncp * sizeof(double) - + 2 * 3 * ncp * sizeof(gleDouble)); - front_loop = (gleDouble *) mem_anchor; - back_loop = front_loop + 3 * ncp; - front_norm = (double *) (back_loop + 3 * ncp); - back_norm = front_norm + 3 * ncp; - norm_loop = front_norm; - - /* may as well get the normals set up now */ - if (cont_normal != NULL) { - if (xform_array == NULL) { - for (j=0; j -#include -#include /* for the memcpy() subroutine */ -#include -#include "port.h" -#include "gutil.h" -#include "vvector.h" -#include "tube_gc.h" -#include "extrude.h" -#include "intersect.h" -#include "segment.h" - - -#ifdef NONCONCAVE_CAPS - -/* ============================================================ */ -/* - * This subroutine draws a flat cap, to close off the cut ends - * of the cut-style join. Because OpenGL doe not natively handle - * concave polygons, this will cause some artifacts to appear on the - * screen. - */ - -void draw_cut_style_cap_callback (int iloop, - double cap[][3], - float face_color[3], - gleDouble cut_vector[3], - gleDouble bisect_vector[3], - double norms[][3], - int frontwards) -{ - int i; - - if (face_color != NULL) C3F (face_color); - - if (frontwards) { - - /* if lighting is on, specify the endcap normal */ - if (cut_vector != NULL) { - /* if normal pointing in wrong direction, flip it. */ - if (cut_vector[2] < 0.0) { - VEC_SCALE (cut_vector, -1.0, cut_vector); - } - N3F_D (cut_vector); - } - BGNPOLYGON(); - for (i=0; i 0.0) - { VEC_SCALE (cut_vector, -1.0, cut_vector); } - N3F_D (cut_vector); - } - /* the sense of the loop is reversed for backfacing culling */ - BGNPOLYGON(); - for (i=iloop-1; i>-1; i--) { - V3F_D (cap[i], i, BACK_CAP); - } - ENDPOLYGON(); - } - -} - -#else /* NONCONCAVE_CAPS */ - -/* ============================================================ */ -/* - * This subroutine draws a flat cap, to close off the cut ends - * of the cut-style join. Properly handles concave endcaps. - */ - -/* ARGSUSED4 */ -static void draw_cut_style_cap_callback (int iloop, - double cap[][3], - float face_color[3], - gleDouble cut_vector[3], - gleDouble bisect_vector[3], - double norms[][3], - int frontwards) -{ - int i; -#ifdef OPENGL_10 - GLUtriangulatorObj *tobj; - tobj = gluNewTess (); - gluTessCallback (tobj, GLU_BEGIN, glBegin); - gluTessCallback (tobj, GLU_VERTEX, glVertex3dv); - gluTessCallback (tobj, GLU_END, glEnd); -#endif /* OPENGL_10 */ - - if (face_color != NULL) C3F (face_color); - - if (frontwards) { - - /* if lighting is on, specify the endcap normal */ - if (cut_vector != NULL) { - /* if normal pointing in wrong direction, flip it. */ - if (cut_vector[2] < 0.0) { - VEC_SCALE (cut_vector, -1.0, cut_vector); - } - N3F_D (cut_vector); - } -#ifdef GL_32 - BGNPOLYGON(); - for (i=0; i 0.0) { - VEC_SCALE (cut_vector, -1.0, cut_vector); - } - N3F_D (cut_vector); - } - /* the sense of the loop is reversed for backfacing culling */ -#ifdef GL_32 - BGNPOLYGON(); - for (i=iloop-1; i>-1; i--) { - V3F_D (cap[i], i, BACK_CAP); - } - ENDPOLYGON(); -#endif /* GL_32 */ -#ifdef OPENGL_10 - gluBeginPolygon (tobj); - for (i=iloop-1; i>-1; i--) { - gluTessVertex (tobj, cap[i], cap[i]); - } - gluEndPolygon (tobj); -#endif /* OPENGL_10 */ - } - -#ifdef OPENGL_10 - gluDeleteTess (tobj); -#endif /* OPENGL_10 */ - -} -#endif /* NONCONCAVE_ENDCAPS */ - -/* ============================================================ */ -/* - * This subroutine matchs the cap callback template, but is a no-op - */ - -/* ARGSUSED */ -void null_cap_callback (int iloop, - double cap[][3], - float face_color[3], - gleDouble cut_vector[3], - gleDouble bisect_vector[3], - double norms[][3], - int frontwards) -{} - -/* ============================================================ */ -/* - * This little routine draws the little idd-biddy fillet triangle with - * the right color, normal, etc. - * - * HACK ALERT -- there are two aspects to this routine/interface that - * are "unfinished". - * 1) the third point of the triangle should get a color thats - * interpolated beween the front and back color. The interpolant - * is not currently being computed. The error introduced by not - * doing this should be tiny and/or non-exitant in almost all - * expected uses of this code. - * - * 2) additional normal vectors should be supplied, and these should - * be interpolated to fit. Currently, this is not being done. As - * above, the expected error of not doing this should be tiny and/or - * non-existant in almost all expected uses of this code. - */ -/* ARGSUSED6 */ -static void draw_fillet_triangle_plain - (gleDouble va[3], - gleDouble vb[3], - gleDouble vc[3], - int face, - float front_color[3], - float back_color[3]) -{ - - if (front_color != NULL) C3F (front_color); - BGNTMESH (-5, 0.0); - if (face) { - V3F (va, -1, FILLET); - V3F (vb, -1, FILLET); - } else { - V3F (vb, -1, FILLET); - V3F (va, -1, FILLET); - } - V3F (vc, -1, FILLET); - ENDTMESH (); - -} - -/* ============================================================ */ -/* - * This little routine draws the little idd-biddy fillet triangle with - * the right color, normal, etc. - * - * HACK ALERT -- there are two aspects to this routine/interface that - * are "unfinished". - * 1) the third point of the triangle should get a color thats - * interpolated beween the front and back color. The interpolant - * is not currently being computed. The error introduced by not - * doing this should be tiny and/or non-exitant in almost all - * expected uses of this code. - * - * 2) additional normal vectors should be supplied, and these should - * be interpolated to fit. Currently, this is not being done. As - * above, the expected error of not doing this should be tiny and/or - * non-existant in almost all expected uses of this code. - */ -/* ARGSUSED5 */ -static void draw_fillet_triangle_n_norms - (gleDouble va[3], - gleDouble vb[3], - gleDouble vc[3], - int face, - float front_color[3], - float back_color[3], - double na[3], - double nb[3]) -{ - - if (front_color != NULL) C3F (front_color); - BGNTMESH (-5, 0.0); - if (__TUBE_DRAW_FACET_NORMALS) { - N3F_D (na); - if (face) { - V3F (va, -1, FILLET); - V3F (vb, -1, FILLET); - } else { - V3F (vb, -1, FILLET); - V3F (va, -1, FILLET); - } - V3F (vc, -1, FILLET); - } else { - if (face) { - N3F_D (na); - V3F (va, -1, FILLET); - N3F_D (nb); - V3F (vb, -1, FILLET); - } else { - N3F_D (nb); - V3F (vb, -1, FILLET); - N3F_D (na); - V3F (va, -1, FILLET); - N3F_D (nb); - } - V3F (vc, -1, FILLET); - } - ENDTMESH (); - -} - -/* ============================================================ */ - -static void draw_fillets_and_join_plain - (int ncp, - gleDouble trimmed_loop[][3], - gleDouble untrimmed_loop[][3], - int is_trimmed[], - gleDouble bis_origin[3], - gleDouble bis_vector[3], - float front_color[3], - float back_color[3], - gleDouble cut_vector[3], - int face, - void ((*cap_callback) (int iloop, - double cap[][3], - float face_color[3], - gleDouble cut_vector[3], - gleDouble bisect_vector[3], - double norms[][3], - int frontwards))) -{ - int istop; - int icnt, icnt_prev, iloop; - double *cap_loop; - gleDouble sect[3]; - gleDouble tmp_vec[3]; - int save_style; - int was_trimmed = FALSE; - - cap_loop = (double *) malloc ((ncp+3)*3*sizeof (double)); - - /* if the first point on the contour isn't trimmed, go ahead and - * drop an edge down to the bisecting plane, (thus starting the - * join). (Only need to do this for cut join, its bad if done for - * round join). - * - * But if the first point is trimmed, keep going until one - * is found that is not trimmed, and start join there. */ - - icnt = 0; - iloop = 0; - if (!is_trimmed[0]) { - if (__TUBE_CUT_JOIN) { - VEC_SUM (tmp_vec, trimmed_loop[0], bis_vector); - INNERSECT (sect, - bis_origin, - bis_vector, - trimmed_loop[0], - tmp_vec); - VEC_COPY ( (&cap_loop[3*iloop]), sect); - iloop ++; - } - VEC_COPY ( (&cap_loop[3*iloop]), (trimmed_loop[0])); - iloop++; - icnt_prev = icnt; - icnt ++; - } else { - - /* else, loop until an untrimmed point is found */ - was_trimmed = TRUE; - while (is_trimmed[icnt]) { - icnt_prev = icnt; - icnt ++; - if (icnt >= ncp) { - free (cap_loop); - return; /* oops - everything was trimmed */ - } - } - } - - /* Start walking around the end cap. Every time the end loop is - * trimmed, we know we'll need to draw a fillet triangle. In - * addition, after every pair of visibility changes, we draw a cap. */ - if (__TUBE_CLOSE_CONTOUR) { - istop = ncp; - } else { - istop = ncp-1; - } - - /* save the join style, and disable a closed contour. - * Need to do this so partial contours don't close up. */ - save_style = gleGetJoinStyle (); - gleSetJoinStyle (save_style & ~TUBE_CONTOUR_CLOSED); - - for (; icnt_prev < istop; icnt_prev ++, icnt ++, icnt %= ncp) { - - /* There are four interesting cases for drawing caps and fillets: - * 1) this & previous point were trimmed. Don't do anything, - * advance counter. - * 2) this point trimmed, previous not -- draw fillet, and - * draw cap. - * 3) this point not trimmed, previous one was -- compute - * intersection point, draw fillet with it, and save - * point for cap contour. - * 4) this & previous point not trimmed -- save for endcap. - */ - - /* Case 1 -- noop, just advance pointers */ - if (is_trimmed[icnt_prev] && is_trimmed[icnt]) { - } - - /* Case 2 -- Hah! first point! compute intersect & draw fillet! */ - if (is_trimmed[icnt_prev] && !is_trimmed[icnt]) { - - /* important note: the array "untrimmed" contains valid - * untrimmed data ONLY when is_trim is TRUE. Otherwise, - * only "trim" containes valid data */ - - /* compute intersection */ - INNERSECT (sect, - bis_origin, - bis_vector, - untrimmed_loop[icnt_prev], - trimmed_loop[icnt]); - - /* Draw Fillet */ - draw_fillet_triangle_plain (trimmed_loop[icnt_prev], - trimmed_loop[icnt], - sect, - face, - front_color, - back_color); - - VEC_COPY ( (&cap_loop[3*iloop]), sect); - iloop ++; - VEC_COPY ( (&cap_loop[3*iloop]), (trimmed_loop[icnt])); - iloop++; - } - - /* Case 3 -- add to collection of points */ - if (!is_trimmed[icnt_prev] && !is_trimmed[icnt]) { - VEC_COPY ( (&cap_loop[3*iloop]), (trimmed_loop[icnt])); - iloop++; - } - - /* Case 4 -- Hah! last point! draw fillet & draw cap! */ - if (!is_trimmed[icnt_prev] && is_trimmed[icnt]) { - was_trimmed = TRUE; - - /* important note: the array "untrimmed" contains valid - * untrimmed data ONLY when is_trim is TRUE. Otherwise, - * only "trim" containes valid data */ - - /* compute intersection */ - INNERSECT (sect, - bis_origin, - bis_vector, - trimmed_loop[icnt_prev], - untrimmed_loop[icnt]); - - /* Draw Fillet */ - draw_fillet_triangle_plain (trimmed_loop[icnt_prev], - trimmed_loop[icnt], - sect, - face, - front_color, - back_color); - - VEC_COPY ( (&cap_loop[3*iloop]), sect); - iloop ++; - - /* draw cap */ - if (iloop >= 3) (*cap_callback) (iloop, - (gleDouble (*)[3]) cap_loop, - front_color, - cut_vector, - bis_vector, - NULL, - face); - - /* reset cap counter */ - iloop = 0; - } - } - - /* now, finish up in the same way that we started. If the last - * point of the contour is visible, drop an edge to the bisecting - * plane, thus finishing the join, and then, draw the join! */ - - icnt --; /* decrement to make up for loop exit condititons */ - icnt += ncp; - icnt %= ncp; - if ((!is_trimmed[icnt]) && (iloop >= 2)) { - - VEC_SUM (tmp_vec, trimmed_loop[icnt], bis_vector); - INNERSECT (sect, - bis_origin, - bis_vector, - trimmed_loop[icnt], - tmp_vec); - VEC_COPY ( (&cap_loop[3*iloop]), sect); - iloop ++; - - /* if nothing was ever trimmed, then we want to draw the - * cap the way the user asked for it -- closed or not closed. - * Therefore, reset the closure flag to its original state. - */ - if (!was_trimmed) { - gleSetJoinStyle (save_style); - } - - /* draw cap */ - (*cap_callback) (iloop, - (gleDouble (*)[3]) cap_loop, - front_color, - cut_vector, - bis_vector, - NULL, - face); - } - - /* rest to the saved style */ - gleSetJoinStyle (save_style); - free (cap_loop); -} - -/* ============================================================ */ - -void draw_fillets_and_join_n_norms - (int ncp, - gleDouble trimmed_loop[][3], - gleDouble untrimmed_loop[][3], - int is_trimmed[], - gleDouble bis_origin[3], - gleDouble bis_vector[3], - double normals[][3], - float front_color[3], - float back_color[3], - gleDouble cut_vector[3], - int face, - void ((*cap_callback) (int iloop, - double cap[][3], - float face_color[3], - gleDouble cut_vector[3], - gleDouble bisect_vector[3], - double norms[][3], - int frontwards))) -{ - int istop; - int icnt, icnt_prev, iloop; - double *cap_loop, *norm_loop; - gleDouble sect[3]; - gleDouble tmp_vec[3]; - int save_style; - int was_trimmed = FALSE; - - cap_loop = (double *) malloc ((ncp+3)*3*2*sizeof (double)); - norm_loop = cap_loop + (ncp+3)*3; - - /* if the first point on the contour isn't trimmed, go ahead and - * drop an edge down to the bisecting plane, (thus starting the - * join). (Only need to do this for cut join, its bad if done for - * round join). - * - * But if the first point is trimmed, keep going until one - * is found that is not trimmed, and start join there. */ - - icnt = 0; - iloop = 0; - if (!is_trimmed[0]) { - if (__TUBE_CUT_JOIN) { - VEC_SUM (tmp_vec, trimmed_loop[0], bis_vector); - INNERSECT (sect, - bis_origin, - bis_vector, - trimmed_loop[0], - tmp_vec); - VEC_COPY ( (&cap_loop[3*iloop]), sect); - VEC_COPY ( (&norm_loop[3*iloop]), normals[0]); - iloop ++; - } - VEC_COPY ( (&cap_loop[3*iloop]), (trimmed_loop[0])); - VEC_COPY ( (&norm_loop[3*iloop]), normals[0]); - iloop++; - icnt_prev = icnt; - icnt ++; - } else { - - /* else, loop until an untrimmed point is found */ - was_trimmed = TRUE; - while (is_trimmed[icnt]) { - icnt_prev = icnt; - icnt ++; - if (icnt >= ncp) { - free (cap_loop); - return; /* oops - everything was trimmed */ - } - } - } - - /* Start walking around the end cap. Every time the end loop is - * trimmed, we know we'll need to draw a fillet triangle. In - * addition, after every pair of visibility changes, we draw a cap. */ - if (__TUBE_CLOSE_CONTOUR) { - istop = ncp; - } else { - istop = ncp-1; - } - - /* save the join style, and disable a closed contour. - * Need to do this so partial contours don't close up. */ - save_style = gleGetJoinStyle (); - gleSetJoinStyle (save_style & ~TUBE_CONTOUR_CLOSED); - - for (; icnt_prev < istop; icnt_prev ++, icnt ++, icnt %= ncp) { - - /* There are four interesting cases for drawing caps and fillets: - * 1) this & previous point were trimmed. Don't do anything, - * advance counter. - * 2) this point trimmed, previous not -- draw fillet, and - * draw cap. - * 3) this point not trimmed, previous one was -- compute - * intersection point, draw fillet with it, and save - * point for cap contour. - * 4) this & previous point not trimmed -- save for endcap. - */ - - /* Case 1 -- noop, just advance pointers */ - if (is_trimmed[icnt_prev] && is_trimmed[icnt]) { - } - - /* Case 2 -- Hah! first point! compute intersect & draw fillet! */ - if (is_trimmed[icnt_prev] && !is_trimmed[icnt]) { - - /* important note: the array "untrimmed" contains valid - * untrimmed data ONLY when is_trim is TRUE. Otherwise, - * only "trim" containes valid data */ - - /* compute intersection */ - INNERSECT (sect, - bis_origin, - bis_vector, - untrimmed_loop[icnt_prev], - trimmed_loop[icnt]); - - /* Draw Fillet */ - draw_fillet_triangle_n_norms (trimmed_loop[icnt_prev], - trimmed_loop[icnt], - sect, - face, - front_color, - back_color, - normals[icnt_prev], - normals[icnt]); - VEC_COPY ( (&cap_loop[3*iloop]), sect); - VEC_COPY ( (&norm_loop[3*iloop]), normals[icnt_prev]); - iloop ++; - VEC_COPY ( (&cap_loop[3*iloop]), (trimmed_loop[icnt])); - VEC_COPY ( (&norm_loop[3*iloop]), normals[icnt]); - iloop++; - } - - /* Case 3 -- add to collection of points */ - if (!is_trimmed[icnt_prev] && !is_trimmed[icnt]) { - VEC_COPY ( (&cap_loop[3*iloop]), (trimmed_loop[icnt])); - VEC_COPY ( (&norm_loop[3*iloop]), normals[icnt]); - iloop++; - } - - /* Case 4 -- Hah! last point! draw fillet & draw cap! */ - if (!is_trimmed[icnt_prev] && is_trimmed[icnt]) { - was_trimmed = TRUE; - - /* important note: the array "untrimmed" contains valid - * untrimmed data ONLY when is_trim is TRUE. Otherwise, - * only "trim" containes valid data */ - - /* compute intersection */ - INNERSECT (sect, - bis_origin, - bis_vector, - trimmed_loop[icnt_prev], - untrimmed_loop[icnt]); - - /* Draw Fillet */ - draw_fillet_triangle_n_norms (trimmed_loop[icnt_prev], - trimmed_loop[icnt], - sect, - face, - front_color, - back_color, - normals[icnt_prev], - normals[icnt]); - - VEC_COPY ( (&cap_loop[3*iloop]), sect); - - /* OK, maybe phong normals are wrong, but at least facet - * normals will come out OK. */ - if (__TUBE_DRAW_FACET_NORMALS) { - VEC_COPY ( (&norm_loop[3*iloop]), normals[icnt_prev]); - } else { - VEC_COPY ( (&norm_loop[3*iloop]), normals[icnt]); - } - iloop ++; - - /* draw cap */ - if (iloop >= 3) (*cap_callback) (iloop, - (gleDouble (*)[3]) cap_loop, - front_color, - cut_vector, - bis_vector, - (gleDouble (*)[3]) norm_loop, - face); - - /* reset cap counter */ - iloop = 0; - } - } - - /* now, finish up in the same way that we started. If the last - * point of the contour is visible, drop an edge to the bisecting - * plane, thus finishing the join, and then, draw the join! */ - - icnt --; /* decrement to make up for loop exit condititons */ - icnt += ncp; - icnt %= ncp; - if ((!is_trimmed[icnt]) && (iloop >= 2)) { - - if (__TUBE_CUT_JOIN) { - VEC_SUM (tmp_vec, trimmed_loop[icnt], bis_vector); - INNERSECT (sect, - bis_origin, - bis_vector, - trimmed_loop[icnt], - tmp_vec); - VEC_COPY ( (&cap_loop[3*iloop]), sect); - VEC_COPY ( (&norm_loop[3*iloop]), normals[icnt]); - iloop ++; - } - - /* if nothing was ever trimmed, then we want to draw the - * cap the way the user asked for it -- closed or not closed. - * Therefore, reset the closure flag to its original state. - */ - if (!was_trimmed) { - gleSetJoinStyle (save_style); - } - - /* draw cap */ - (*cap_callback) (iloop, - (gleDouble (*)[3]) cap_loop, - front_color, - cut_vector, - bis_vector, - (gleDouble (*)[3]) norm_loop, - face); - } - - /* rest to the saved style */ - gleSetJoinStyle (save_style); - free (cap_loop); -} - -/* ============================================================ */ -/* This routine draws "cut" style extrusions. - */ - -void extrusion_round_or_cut_join (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2],/* 2D normal vecs */ - gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline */ - float color_array[][3], /* color of polyline */ - gleDouble xform_array[][2][3]) /* 2D contour xforms */ -{ - int i, j; - int inext, inextnext; - gleDouble m[4][4]; - gleDouble tube_len, seg_len; - gleDouble diff[3]; - gleDouble bi_0[3], bi_1[3]; /* bisecting plane */ - gleDouble bisector_0[3], bisector_1[3]; /* bisecting plane */ - gleDouble cut_0[3], cut_1[3]; /* cutting planes */ - gleDouble lcut_0[3], lcut_1[3]; /* cutting planes */ - int valid_cut_0, valid_cut_1; /* flag -- cut vector is valid */ - gleDouble end_point_0[3], end_point_1[3]; - gleDouble torsion_point_0[3], torsion_point_1[3]; - gleDouble isect_point[3]; - gleDouble origin[3], neg_z[3]; - gleDouble yup[3]; /* alternate up vector */ - gleDouble *front_cap, *back_cap; /* arrays containing the end caps */ - gleDouble *front_loop, *back_loop; /* arrays containing the tube ends */ - double *front_norm, *back_norm; /* arrays containing normal vecs */ - double *norm_loop, *tmp; /* normal vectors, cast into 3d from 2d */ - int *front_is_trimmed, *back_is_trimmed; /* T or F */ - float *front_color, *back_color; /* pointers to segment colors */ - void ((*cap_callback) (int,double [][3],float [3],gleDouble [3], gleDouble [3], double [][3],int)); /* function callback to draw cap */ - void ((*tmp_cap_callback) (int,double [][3],float [3],gleDouble [3], gleDouble [3], double [][3],int)); /* function callback to draw cap */ - - int join_style_is_cut; /* TRUE if join style is cut */ - double dot; /* partial dot product */ - char *mem_anchor; - int first_time = TRUE; - gleDouble *cut_vec; - - /* create a local, block scope copy of of the join style. - * this will alleviate wasted cycles and register write-backs */ - /* choose the right callback, depending on the choosen join style */ - if (__TUBE_CUT_JOIN) { - join_style_is_cut = TRUE; - cap_callback = draw_cut_style_cap_callback; - } else { - join_style_is_cut = FALSE; - cap_callback = draw_round_style_cap_callback; - } - - /* By definition, the contour passed in has its up vector pointing in - * the y direction */ - if (up == NULL) { - yup[0] = 0.0; - yup[1] = 1.0; - yup[2] = 0.0; - } else { - VEC_COPY (yup, up); - } - - /* ========== "up" vector sanity check ========== */ - (void) up_sanity_check (yup, npoints, point_array); - - /* the origin is at the origin */ - origin [0] = 0.0; - origin [1] = 0.0; - origin [2] = 0.0; - - /* and neg_z is at neg z */ - neg_z[0] = 0.0; - neg_z[1] = 0.0; - neg_z[2] = 1.0; - - /* malloc the data areas that we'll need to store the end-caps */ - mem_anchor = malloc (4 * 3*ncp*sizeof(gleDouble) - + 2 * 3*ncp*sizeof(double) - + 2 * 1*ncp*sizeof(int)); - front_norm = (double *) mem_anchor; - back_norm = front_norm + 3*ncp; - front_loop = (gleDouble *) (back_norm + 3*ncp); - back_loop = front_loop + 3*ncp; - front_cap = back_loop + 3*ncp; - back_cap = front_cap + 3*ncp; - front_is_trimmed = (int *) (back_cap + 3*ncp); - back_is_trimmed = front_is_trimmed + ncp; - - /* ======================================= */ - - /* |-|-|-|-|-|-|-|-| SET UP FOR FIRST SEGMENT |-|-|-|-|-|-|-| */ - - /* ignore all segments of zero length */ - i = 1; - inext = i; - FIND_NON_DEGENERATE_POINT (inext, npoints, seg_len, diff, point_array); - tube_len = seg_len; /* store for later use */ - - /* may as well get the normals set up now */ - if (cont_normal != NULL) { - if (xform_array == NULL) { - norm_loop = front_norm; - back_norm = norm_loop; - for (j=0; j 0.0)) { -*/ - VEC_COPY ((&front_cap[3*j]), (&front_loop [3*j])); - VEC_COPY ((&front_loop[3*j]), isect_point); - front_is_trimmed[j] = TRUE; - } else { - front_is_trimmed[j] = FALSE; - } - - /* if intersection is behind the end of the segment, - * truncate to the end of the segment - * Note that coding front_loop [3*j+2] = -tube_len; - * doesn't work when twists are involved, */ - if (front_loop[3*j+2] < -tube_len) { - VEC_COPY( (&front_loop[3*j]), end_point_1); - } - - /* --------------------------------------------------- */ - /* The two end-points define a line. We did one endpoint - * above. Now do the other.Intersect this line - * against the clipping plane defined by the NEXT - * tube segment. */ - - /* if this and the last tube are co-linear, don't cut the angle - * if you do, a divide by zero will result. This and last tube - * are co-linear when the cut vector is of zero length */ - if (valid_cut_1 && join_style_is_cut) { - INNERSECT (isect_point, /* isect point (returned) */ - neg_z, /* point on intersecting plane */ - lcut_1, /* normal vector to plane */ - end_point_1, /* point on line */ - end_point_0); /* another point on the line */ - - if (lcut_1[2] > 0.0) { VEC_SCALE (lcut_1, -1.0, lcut_1); } - dot = lcut_1[0] * end_point_1[0]; - dot += lcut_1[1] * end_point_1[1]; - - - VEC_COPY ((&back_loop[3*j]), isect_point); - } else { - /* actual value of dot not interseting; need - * only be positive so that if test below failes */ - dot = 1.0; - VEC_COPY ((&back_loop[3*j]), end_point_1); - } - - INNERSECT (isect_point, /* intersection point (returned) */ - neg_z, /* point on intersecting plane */ - bisector_1, /* normal vector to plane */ - torsion_point_0, /* point on line */ - end_point_1); /* another point on the line */ - - /* cut out interior of intersecting tube */ - /* ... but save the uncut version for drawing the endcaps */ - /* ... note that cap contains valid data ONLY when is - *_trimmed is TRUE. */ -/* - if ((dot <= 0.0) || (back_loop[3*j+2] < -tube_len)) { -*/ - if ((dot <= 0.0) || (isect_point[2] > back_loop[3*j+2])) { - VEC_COPY ((&back_cap[3*j]), (&back_loop [3*j])); - VEC_COPY ((&back_loop[3*j]), isect_point); - back_is_trimmed[j] = TRUE; - } else { - back_is_trimmed[j] = FALSE; - } - - /* if intersection is behind the end of the segment, - * truncate to the end of the segment - * Note that coding back_loop [3*j+2] = 0.0; - * doesn't work when twists are involved, */ - if (back_loop[3*j+2] > 0.0) { - VEC_COPY( (&back_loop[3*j]), end_point_0); - } - } - - /* --------- END OF TMESH GENERATION -------------- */ - - /* |||||||||||||||||| START SEGMENT DRAW |||||||||||||||||||| */ - /* There are six different cases we can have for presence and/or - * absecnce of colors and normals, and for interpretation of - * normals. The blechy set of nested if statements below - * branch to each of the six cases */ - if (xform_array == NULL) { - if (color_array == NULL) { - if (cont_normal == NULL) { - draw_segment_plain (ncp, (gleVector *) front_loop, (gleVector *) back_loop, inext, seg_len); - } else - if (__TUBE_DRAW_FACET_NORMALS) { - draw_segment_facet_n (ncp, (gleVector *) front_loop, (gleVector *) back_loop, (gleVector *) norm_loop, - inext, seg_len); - } else { - draw_segment_edge_n (ncp, (gleVector *) front_loop, (gleVector *) back_loop, (gleVector *) norm_loop, - inext, seg_len); - } - } else { - if (cont_normal == NULL) { - draw_segment_color (ncp, (gleVector *) front_loop, (gleVector *) back_loop, - color_array[inext-1], - color_array[inext], inext, seg_len); - } else - if (__TUBE_DRAW_FACET_NORMALS) { - draw_segment_c_and_facet_n (ncp, - (gleVector *) front_loop, (gleVector *) back_loop, (gleVector *) norm_loop, - color_array[inext-1], - color_array[inext], inext, seg_len); - } else { - draw_segment_c_and_edge_n (ncp, - (gleVector *) front_loop, (gleVector *) back_loop, (gleVector *) norm_loop, - color_array[inext-1], - color_array[inext], inext, seg_len); - } - } - } else { - if (color_array == NULL) { - if (cont_normal == NULL) { - draw_segment_plain (ncp, (gleVector *) front_loop, (gleVector *) back_loop, inext, seg_len); - } else - if (__TUBE_DRAW_FACET_NORMALS) { - draw_binorm_segment_facet_n (ncp, (gleVector *) front_loop, (gleVector *) back_loop, - (gleVector *) front_norm, (gleVector *) back_norm, - inext, seg_len); - } else { - draw_binorm_segment_edge_n (ncp, (gleVector *) front_loop, (gleVector *) back_loop, - (gleVector *) front_norm, (gleVector *) back_norm, - inext, seg_len); - } - } else { - if (cont_normal == NULL) { - draw_segment_color (ncp, (gleVector *) front_loop, (gleVector *) back_loop, - color_array[inext-1], - color_array[inext], inext, seg_len); - } else - if (__TUBE_DRAW_FACET_NORMALS) { - draw_binorm_segment_c_and_facet_n (ncp, - (gleVector *) front_loop, (gleVector *) back_loop, - (gleVector *) front_norm, (gleVector *) back_norm, - color_array[inext-1], - color_array[inext], inext, seg_len); - } else { - draw_binorm_segment_c_and_edge_n (ncp, - (gleVector *) front_loop, (gleVector *) back_loop, - (gleVector *) front_norm, (gleVector *) back_norm, - color_array[inext-1], - color_array[inext], inext, seg_len); - } - } - } - /* |||||||||||||||||| END SEGMENT DRAW |||||||||||||||||||| */ - - /* v^v^v^v^v^v^v^v^v BEGIN END CAPS v^v^v^v^v^v^v^v^v^v^v^v */ - - /* if end caps are required, draw them. But don't draw any - * but the very first and last caps */ - if (first_time) { - first_time = FALSE; - tmp_cap_callback = cap_callback; - cap_callback = null_cap_callback; - if (__TUBE_DRAW_CAP) { - if (color_array != NULL) C3F (color_array[inext-1]); - draw_angle_style_front_cap (ncp, bisector_0, (gleDouble (*)[3]) front_loop); - } - } - /* v^v^v^v^v^v^v^v^v END END CAPS v^v^v^v^v^v^v^v^v^v^v^v */ - - /* $$$$$$$$$$$$$$$$ BEGIN -1, FILLET & JOIN DRAW $$$$$$$$$$$$$$$$$ */ - /* - * Now, draw the fillet triangles, and the join-caps. - */ - if (color_array != NULL) { - front_color = color_array[inext-1]; - back_color = color_array[inext]; - } else { - front_color = NULL; - back_color = NULL; - } - - if (cont_normal == NULL) { - /* the flag valid-cut is true if the cut vector has a valid - * value (i.e. if a degenerate case has not occured). - */ - if (valid_cut_0) { - cut_vec = lcut_0; - } else { - cut_vec = NULL; - } - draw_fillets_and_join_plain (ncp, - (gleVector *) front_loop, - (gleVector *) front_cap, - front_is_trimmed, - origin, - bisector_0, - front_color, - back_color, - cut_vec, - TRUE, - cap_callback); - - /* v^v^v^v^v^v^v^v^v BEGIN END CAPS v^v^v^v^v^v^v^v^v^v^v^v */ - if (inext == npoints-2) { - if (__TUBE_DRAW_CAP) { - if (color_array != NULL) C3F (color_array[inext]); - draw_angle_style_back_cap (ncp, bisector_1, (gleDouble (*)[3]) back_loop); - cap_callback = null_cap_callback; - } - } else { - /* restore ability to draw cap */ - cap_callback = tmp_cap_callback; - } - /* v^v^v^v^v^v^v^v^v END END CAPS v^v^v^v^v^v^v^v^v^v^v^v */ - - /* the flag valid-cut is true if the cut vector has a valid - * value (i.e. if a degenerate case has not occured). - */ - if (valid_cut_1) { - cut_vec = lcut_1; - } else { - cut_vec = NULL; - } - draw_fillets_and_join_plain (ncp, - (gleVector *) back_loop, - (gleVector *) back_cap, - back_is_trimmed, - neg_z, - bisector_1, - back_color, - front_color, - cut_vec, - FALSE, - cap_callback); - } else { - - /* the flag valid-cut is true if the cut vector has a valid - * value (i.e. if a degenerate case has not occured). - */ - if (valid_cut_0) { - cut_vec = lcut_0; - } else { - cut_vec = NULL; - } - draw_fillets_and_join_n_norms (ncp, - (gleVector *) front_loop, - (gleVector *) front_cap, - front_is_trimmed, - origin, - bisector_0, - (gleVector *) front_norm, - front_color, - back_color, - cut_vec, - TRUE, - cap_callback); - - /* v^v^v^v^v^v^v^v^v BEGIN END CAPS v^v^v^v^v^v^v^v^v^v^v^v */ - if (inext == npoints-2) { - if (__TUBE_DRAW_CAP) { - if (color_array != NULL) C3F (color_array[inext]); - draw_angle_style_back_cap (ncp, bisector_1, (gleDouble (*)[3]) back_loop); - cap_callback = null_cap_callback; - } - } else { - /* restore ability to draw cap */ - cap_callback = tmp_cap_callback; - } - /* v^v^v^v^v^v^v^v^v END END CAPS v^v^v^v^v^v^v^v^v^v^v^v */ - - /* the flag valid-cut is true if the cut vector has a valid - * value (i.e. if a degenerate case has not occured). - */ - if (valid_cut_1) { - cut_vec = lcut_1; - } else { - cut_vec = NULL; - } - draw_fillets_and_join_n_norms (ncp, - (gleVector *) back_loop, - (gleVector *) back_cap, - back_is_trimmed, - neg_z, - bisector_1, - (gleVector *) back_norm, - back_color, - front_color, - cut_vec, - FALSE, - cap_callback); - } - - /* $$$$$$$$$$$$$$$$ END FILLET & JOIN DRAW $$$$$$$$$$$$$$$$$ */ - - /* pop this matrix, do the next set */ - POPMATRIX (); - - /* slosh stuff over to next vertex */ - tmp = front_norm; - front_norm = back_norm; - back_norm = tmp; - - tube_len = seg_len; - i = inext; - inext = inextnext; - VEC_COPY (bi_0, bi_1); - VEC_COPY (cut_0, cut_1); - valid_cut_0 = valid_cut_1; - - /* reflect the up vector in the bisecting plane */ - VEC_REFLECT (yup, yup, bi_0); - } - /* |-|-|-|-|-|-|-|-| END LOOP OVER SEGMENTS |-|-|-|-|-|-|-| */ - - free (mem_anchor); - -} - -/* =================== END OF FILE =============================== */ diff --git a/lib/glut-3.7.6/lib/gle/ex_raw.c b/lib/glut-3.7.6/lib/gle/ex_raw.c deleted file mode 100644 index c54b7a127715f4f589585983f6ea791146b97efc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/ex_raw.c +++ /dev/null @@ -1,948 +0,0 @@ -/* - * MODULE NAME: ex_raw.c - * - * FUNCTION: - * This module contains code that draws extrusions with square - * ("raw join style") end styles. It also inserts colors and normals - * where necessary, if appropriate. - * - * HISTORY: - * written by Linas Vepstas August/September 1991 - * split into multiple compile units, Linas, October 1991 - * added normal vectors Linas, October 1991 - * "code complete" (that is, I'm done), Linas Vepstas, October 1991 - * work around OpenGL's lack of support for concave polys, June 1994 - */ - -#include -#include -#include /* for the memcpy() subroutine */ -#include /* to get stderr defined */ -#include - -#include "port.h" -#include "gutil.h" -#include "vvector.h" -#include "tube_gc.h" -#include "extrude.h" -#include "intersect.h" -#include "segment.h" - -/* ============================================================ */ -/* - * The following routine is, in principle, very simple: - * all that it does is normalize the up vector, and makes - * sure that it is perpendicular to the initial polyline segment. - * - * In fact, this routine gets awfully complicated because: - * a) the first few segements of the polyline might be degenerate, - * b) up vecotr may be parallel to first few segments of polyline, - * c) etc. - * - */ - -void up_sanity_check (gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3]) /* polyline */ -{ - int i; - double len; - double diff[3]; - - /* now, right off the bat, we should make sure that the up vector - * is in fact perpendicular to the polyline direction */ - VEC_DIFF (diff, point_array[1], point_array[0]); - VEC_LENGTH (len, diff); - if (len == 0.0) { - /* This error message should go through "official" error interface */ -/* - fprintf (stderr, "Extrusion: Warning: initial segment zero length \n"); -*/ - - /* loop till we find something that ain't of zero length */ - for (i=1; i-1; j--) { - point [0] = contour[j][0]; - point [1] = contour[j][1]; - V3F (point, j, BACK_CAP); - } - } - ENDPOLYGON (); -#endif /* GL_32 */ - -#ifdef OPENGL_10 - /* malloc the @#$%^&* array that OpenGL wants ! */ - pts = (double *) malloc (3*ncp*sizeof(double)); - tobj = gluNewTess (); - gluTessCallback (tobj, GLU_BEGIN, glBegin); - gluTessCallback (tobj, GLU_VERTEX, glVertex3dv); - gluTessCallback (tobj, GLU_END, glEnd); - gluBeginPolygon (tobj); - - /* draw the loop counter clockwise for the front cap */ - if (frontwards) { - for (j=1; j-1; j--) { - pts [3*j] = contour[j][0]; - pts [3*j+1] = contour[j][1]; - pts [3*j+2] = zval; - gluTessVertex (tobj, &pts[3*j], &pts[3*j]); - } - } - - gluEndPolygon (tobj); - free (pts); - gluDeleteTess (tobj); -#endif /* OPENGL_10 */ -} - - -/* ============================================================ */ -/* This routine does what it says: It draws a counter-clockwise cap - * from a 3D contour loop list - */ - -void draw_front_contour_cap (int ncp, /* number of contour points */ - gleDouble contour[][3]) /* 3D contour */ -{ - int j; -#ifdef OPENGL_10 - GLUtriangulatorObj *tobj; -#endif /* OPENGL_10 */ - -#ifdef GL_32 - /* old-style gl handles concave polygons no problem, so the code is - * simple. New-style gl is a lot more tricky. */ - /* draw the end cap */ - BGNPOLYGON (); - - for (j=0; j-1; j--) { - V3F (contour[j], j, BACK_CAP); - } - ENDPOLYGON (); -#endif /* GL_32 */ - -#ifdef OPENGL_10 - tobj = gluNewTess (); - gluTessCallback (tobj, GLU_BEGIN, glBegin); - gluTessCallback (tobj, GLU_VERTEX, glVertex3dv); - gluTessCallback (tobj, GLU_END, glEnd); - gluBeginPolygon (tobj); - - /* draw the end cap */ - /* draw the loop clockwise for the back cap */ - /* the sense of the loop is reversed for backfacing culling */ - for (j=ncp-1; j>-1; j--) { - gluTessVertex (tobj, contour[j], contour[j]); - } - gluEndPolygon (tobj); - gluDeleteTess (tobj); -#endif /* OPENGL_10 */ -} - -/* ============================================================ */ -/* This routine draws a segment of raw-join-style tubing. - * Essentially, we assume that the proper transformations have already - * been performed to properly orient the tube segment -- our only task - * left is to render */ -/* PLAIN - NO COLOR, NO NORMAL */ - -void draw_raw_segment_plain (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble len, - int inext) - -{ - int j; - double point[3]; - - /* draw the tube segment */ - BGNTMESH (inext, len); - for (j=0; j -#include -#include /* for the memcpy() subroutine */ -#include -#include "gutil.h" -#include "vvector.h" -#include "tube_gc.h" -#include "extrude.h" -#include "intersect.h" - -/* ============================================================ */ -/* The routine below determines the type of join style that will be - * used for tubing. */ - -void gleSetJoinStyle (int style) -{ - INIT_GC(); - extrusion_join_style = style; -} - -int gleGetJoinStyle (void) -{ - INIT_GC(); - return (extrusion_join_style); -} - -/* ============================================================ */ -/* - * draw a general purpose extrusion - */ - -void gleSuperExtrusion (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline */ - float color_array[][3], /* color of polyline */ - gleDouble xform_array[][2][3]) /* 2D contour xforms */ -{ - INIT_GC(); - _gle_gc -> ncp = ncp; - _gle_gc -> contour = contour; - _gle_gc -> cont_normal = cont_normal; - _gle_gc -> up = up; - _gle_gc -> npoints = npoints; - _gle_gc -> point_array = point_array; - _gle_gc -> color_array = color_array; - _gle_gc -> xform_array = xform_array; - - switch (__TUBE_STYLE) { - case TUBE_JN_RAW: - (void) extrusion_raw_join (ncp, contour, cont_normal, up, - npoints, - point_array, color_array, - xform_array); - break; - - case TUBE_JN_ANGLE: - (void) extrusion_angle_join (ncp, contour, cont_normal, up, - npoints, - point_array, color_array, - xform_array); - break; - - case TUBE_JN_CUT: - case TUBE_JN_ROUND: - /* This routine used for both cut and round styles */ - (void) extrusion_round_or_cut_join (ncp, contour, cont_normal, up, - npoints, - point_array, color_array, - xform_array); - break; - - default: - break; - } -} - -/* ============================================================ */ - -void gleExtrusion (int ncp, /* number of contour points */ - gleDouble contour[][2], /* 2D contour */ - gleDouble cont_normal[][2], /* 2D contour normals */ - gleDouble up[3], /* up vector for contour */ - int npoints, /* numpoints in poly-line */ - gleDouble point_array[][3], /* polyline */ - float color_array[][3]) /* color of polyline */ -{ - gleSuperExtrusion (ncp, contour, cont_normal, up, - npoints, - point_array, color_array, - NULL); -} - -/* ============================================================ */ - -/* should really make this an adaptive algorithm ... */ -static int __gleSlices = 20; - -int -gleGetNumSlices(void) -{ - return __gleSlices; -} - -void -gleSetNumSlices(int slices) -{ - __gleSlices = slices; -} - -void gen_polycone (int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble radius, - gleDouble xform_array[][2][3]) -{ - int saved_style; - glePoint *circle = (glePoint*) malloc(sizeof(glePoint)*2*__gleSlices); - glePoint *norm = &circle[__gleSlices]; - double c, s; - int i; - double v21[3]; - double len; - gleDouble up[3]; - - INIT_GC(); - - /* this if statement forces this routine into double-duty for - * both the polycone and the polycylinder routines */ - if (xform_array != NULL) radius = 1.0; - - s = sin (2.0*M_PI/ ((double) __gleSlices)); - c = cos (2.0*M_PI/ ((double) __gleSlices)); - - norm [0][0] = 1.0; - norm [0][1] = 0.0; - circle [0][0] = radius; - circle [0][1] = 0.0; - - /* draw a norm using recursion relations */ - for (i=1; i<__gleSlices; i++) { - norm [i][0] = norm[i-1][0] * c - norm[i-1][1] * s; - norm [i][1] = norm[i-1][0] * s + norm[i-1][1] * c; - circle [i][0] = radius * norm[i][0]; - circle [i][1] = radius * norm[i][1]; - } - - /* avoid degenerate vectors */ - /* first, find a non-zero length segment */ - i=0; - FIND_NON_DEGENERATE_POINT(i,npoints,len,v21,point_array) - if (i == npoints) return; - - /* next, check to see if this segment lies along x-axis */ - if ((v21[0] == 0.0) && (v21[2] == 0.0)) { - up[0] = up[1] = up[2] = 1.0; - } else { - up[0] = up[2] = 0.0; - up[1] = 1.0; - } - - /* save the current join style */ - saved_style = extrusion_join_style; - extrusion_join_style |= TUBE_CONTOUR_CLOSED; - - /* if lighting is not turned on, don't send normals. - * MMODE is a good indicator of whether lighting is active */ - if (!__IS_LIGHTING_ON) { - gleSuperExtrusion (__gleSlices, circle, NULL, up, - npoints, point_array, color_array, - xform_array); - } else { - gleSuperExtrusion (__gleSlices, circle, norm, up, - npoints, point_array, color_array, - xform_array); - } - - /* restore the join style */ - extrusion_join_style = saved_style; - - free(circle); -} - -/* ============================================================ */ - -void glePolyCylinder (int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble radius) -{ - gen_polycone (npoints, point_array, color_array, radius, NULL); -} - -/* ============================================================ */ - -void glePolyCone (int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble radius_array[]) -{ - gleAffine * xforms; - int j; - - /* build 2D affine matrices from radius array */ - xforms = (gleAffine *) malloc (npoints * sizeof(gleAffine)); - for (j=0; jinf) (1+x/N) ** N - * and take N=32. - */ - - /* initialize translation and delta translation */ - deltaTrans[0] = delta * dXformdTheta[0][2]; - deltaTrans[1] = delta * dXformdTheta[1][2]; - trans[0] = startXform[0][2]; - trans[1] = startXform[1][2]; - - /* prepare the tangent matrix */ - delta /= 32.0; - mA[0][0] = 1.0 + delta * dXformdTheta[0][0]; - mA[0][1] = delta * dXformdTheta[0][1]; - mA[1][0] = delta * dXformdTheta[1][0]; - mA[1][1] = 1.0 + delta * dXformdTheta[1][1]; - - /* compute exponential of matrix */ - MATRIX_PRODUCT_2X2 (mB, mA, mA); /* squared */ - MATRIX_PRODUCT_2X2 (mA, mB, mB); /* 4th power */ - MATRIX_PRODUCT_2X2 (mB, mA, mA); /* 8th power */ - MATRIX_PRODUCT_2X2 (mA, mB, mB); /* 16th power */ - MATRIX_PRODUCT_2X2 (mB, mA, mA); /* 32nd power */ - - /* initialize running matrix */ - COPY_MATRIX_2X2 (run, startXform); - - /* remember, the first point is hidden -- load some, any - * xform for the first point */ - xforms[0][0][0] = startXform[0][0]; - xforms[0][0][1] = startXform[0][1]; - xforms[0][0][2] = startXform[0][2]; - xforms[0][1][0] = startXform[1][0]; - xforms[0][1][1] = startXform[1][1]; - xforms[0][1][2] = startXform[1][2]; - - for (i=1; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=gle - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gle.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gle.mak" CFG="gle - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gle - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "gle - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gle - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "gle - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "gle - Win32 Release" -# Name "gle - Win32 Debug" -# Begin Source File - -SOURCE=.\copy.h -# End Source File -# Begin Source File - -SOURCE=.\ex_angle.c -# End Source File -# Begin Source File - -SOURCE=.\ex_cut_round.c -# End Source File -# Begin Source File - -SOURCE=.\ex_raw.c -# End Source File -# Begin Source File - -SOURCE=.\extrude.c -# End Source File -# Begin Source File - -SOURCE=.\extrude.h -# End Source File -# Begin Source File - -SOURCE=.\gutil.h -# End Source File -# Begin Source File - -SOURCE=.\intersect.c -# End Source File -# Begin Source File - -SOURCE=.\intersect.h -# End Source File -# Begin Source File - -SOURCE=.\port.h -# End Source File -# Begin Source File - -SOURCE=.\qmesh.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=.\rot.h -# End Source File -# Begin Source File - -SOURCE=.\rot_prince.c -# End Source File -# Begin Source File - -SOURCE=.\rotate.c -# End Source File -# Begin Source File - -SOURCE=.\round_cap.c -# End Source File -# Begin Source File - -SOURCE=.\segment.c -# End Source File -# Begin Source File - -SOURCE=.\segment.h -# End Source File -# Begin Source File - -SOURCE=.\texgen.c -# End Source File -# Begin Source File - -SOURCE=.\tube_gc.h -# End Source File -# Begin Source File - -SOURCE=.\urotate.c -# End Source File -# Begin Source File - -SOURCE=.\view.c -# End Source File -# Begin Source File - -SOURCE=.\vvector.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/lib/gle/gle_dll.dsp b/lib/glut-3.7.6/lib/gle/gle_dll.dsp deleted file mode 100644 index 1df5d6a8866947460c24b4bdfe5b3b757b30325c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/gle_dll.dsp +++ /dev/null @@ -1,180 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gle_dll" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=gle_dll - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gle_dll.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gle_dll.mak" CFG="gle_dll - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gle_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "gle_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gle_dll - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLE_DLL_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLE_DLL_EXPORTS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /dll /machine:I386 /out:"Release/gle.dll" - -!ELSEIF "$(CFG)" == "gle_dll - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLE_DLL_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLE_DLL_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /dll /debug /machine:I386 /out:"Debug/gle.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gle_dll - Win32 Release" -# Name "gle_dll - Win32 Debug" -# Begin Source File - -SOURCE=.\copy.h -# End Source File -# Begin Source File - -SOURCE=.\ex_angle.c -# End Source File -# Begin Source File - -SOURCE=.\ex_cut_round.c -# End Source File -# Begin Source File - -SOURCE=.\ex_raw.c -# End Source File -# Begin Source File - -SOURCE=.\extrude.c -# End Source File -# Begin Source File - -SOURCE=.\extrude.h -# End Source File -# Begin Source File - -SOURCE=.\gutil.h -# End Source File -# Begin Source File - -SOURCE=.\intersect.c -# End Source File -# Begin Source File - -SOURCE=.\intersect.h -# End Source File -# Begin Source File - -SOURCE=.\port.h -# End Source File -# Begin Source File - -SOURCE=.\qmesh.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=.\rot.h -# End Source File -# Begin Source File - -SOURCE=.\rot_prince.c -# End Source File -# Begin Source File - -SOURCE=.\rotate.c -# End Source File -# Begin Source File - -SOURCE=.\round_cap.c -# End Source File -# Begin Source File - -SOURCE=.\segment.c -# End Source File -# Begin Source File - -SOURCE=.\segment.h -# End Source File -# Begin Source File - -SOURCE=.\texgen.c -# End Source File -# Begin Source File - -SOURCE=.\tube_gc.h -# End Source File -# Begin Source File - -SOURCE=.\urotate.c -# End Source File -# Begin Source File - -SOURCE=.\view.c -# End Source File -# Begin Source File - -SOURCE=.\vvector.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/lib/gle/gutil.h b/lib/glut-3.7.6/lib/gle/gutil.h deleted file mode 100644 index 23296f694de46c3daca2ba9dfc1e2964ca6715b1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/gutil.h +++ /dev/null @@ -1,91 +0,0 @@ - -/* - * gutil.h - * - * FUNCTION: - * Provide utilities that allow rotation to occur - * around any axis. - * - * HISTORY: - * created by Linas Vepstas 1990 - * added single & double precision, June 1991, Linas Vepstas - */ - -#ifndef __GUTIL_H__ -#define __GUTIL_H__ - -#define __GUTIL_DOUBLE - -#ifdef __GUTIL_DOUBLE -#define gutDouble double -#else -#define gutDouble float -#endif - - -#ifdef _NO_PROTO /* NO ANSI C PROTOTYPING */ - -/* Rotation Utilities */ -extern void rot_axis_f (); -extern void rot_about_axis_f (); -extern void rot_omega_f (); -extern void urot_axis_f (); -extern void urot_about_axis_f (); -extern void urot_omega_f (); - -/* double-precision versions */ -extern void rot_axis_d (); -extern void rot_about_axis_d (); -extern void rot_omega_d (); -extern void urot_axis_d (); -extern void urot_about_axis_d (); -extern void urot_omega_d (); - -/* viewpoint functions */ -extern void uview_direction_d (); -extern void uview_direction_f (); -extern void uviewpoint_d (); -extern void uviewpoint_f (); - -#else /* _NO_PROTO */ /* ANSI C PROTOTYPING */ - -/* Rotation Utilities */ -extern void rot_axis_f (float omega, float axis[3]); -extern void rot_about_axis_f (float angle, float axis[3]); -extern void rot_omega_f (float axis[3]); -extern void urot_axis_f (float m[4][4], float omega, float axis[3]); -extern void urot_about_axis_f (float m[4][4], float angle, float axis[3]); -extern void urot_omega_f (float m[4][4], float axis[3]); - -/* double-precision versions */ -extern void rot_axis_d (double omega, double axis[3]); -extern void rot_about_axis_d (double angle, double axis[3]); -extern void rot_omega_d (double axis[3]); -extern void urot_axis_d (double m[4][4], double omega, double axis[3]); -extern void urot_about_axis_d (double m[4][4], double angle, double axis[3]); -extern void urot_omega_d (double m[4][4], double axis[3]); - -/* viewpoint functions */ -extern void uview_direction_d (double m[4][4], /* returned */ - double v21[3], /* input */ - double up[3]); /* input */ - -extern void uview_direction_f (float m[4][4], /* returned */ - float v21[3], /* input */ - float up[3]); /* input */ - -extern void uviewpoint_d (double m[4][4], /* returned */ - double v1[3], /* input */ - double v2[3], /* input */ - double up[3]); /* input */ - -extern void uviewpoint_f (float m[4][4], /* returned */ - float v1[3], /* input */ - float v2[3], /* input */ - float up[3]); /* input */ - -#endif /* _NO_PROTO */ - -#endif /* _GUTIL_H__ */ - -/* ------------------- end of file ---------------------- */ diff --git a/lib/glut-3.7.6/lib/gle/intersect.c b/lib/glut-3.7.6/lib/gle/intersect.c deleted file mode 100644 index e1948ab4410c60949a2193ba67cb00e2bd41f3d8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/intersect.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * FUNCTION: - * This file contains a number of utilities useful to 3D graphics in - * general, and to the generation of tubing and extrusions in particular - * - * HISTORY: - * Written by Linas Vepstas, August 1991 - */ - -#include "gutil.h" -#include "intersect.h" - -/* ========================================================== */ -/* - * The macro and subroutine INTERSECT are designed to compute the - * intersection of a line (defined by the points v1 and v2) and a plane - * (defined as plane which is normal to the vector n, and contains the - * point p). Both sect the array "sect", which is the point of - * interesection. - * - * The subroutine returns a value indicating if the specified inputs - * represented a degenerate case. Valid is TRUE if the computed - * intersection is valid, else it is FALSE. - */ - - -/* ========================================================== */ - -void intersect (gleDouble sect[3], /* returned */ - gleDouble p[3], /* input */ - gleDouble n[3], /* input */ - gleDouble v1[3], /* input */ - gleDouble v2[3]) /* input */ -{ - INTERSECT (sect, p, n, v1, v2); -} - -/* ========================================================== */ -/* - * The macro and subroutine BISECTING_PLANE compute a normal vecotr that - * describes the bisecting plane between three points (v1, v2 and v3). - * This bisecting plane has the following properties: - * 1) it contains the point v2 - * 2) the angle it makes with v21 == v2 - v1 is equal to the angle it - * makes with v32 == v3 - v2 - * 3) it is perpendicular to the plane defined by v1, v2, v3. - * - * Having input v1, v2, and v3, it returns a vector n. - * Note that n is NOT normalized (is NOT of unit length). - * - * The subroutine returns a value indicating if the specified inputs - * represented a degenerate case. Valid is TRUE if the computed - * intersection is valid, else it is FALSE. - */ - -int bisecting_plane (gleDouble n[3], /* returned */ - gleDouble v1[3], /* input */ - gleDouble v2[3], /* input */ - gleDouble v3[3]) /* input */ -{ - int valid; - - BISECTING_PLANE (valid, n, v1, v2, v3); - return (valid); -} - -/* ========================================================== */ diff --git a/lib/glut-3.7.6/lib/gle/intersect.h b/lib/glut-3.7.6/lib/gle/intersect.h deleted file mode 100644 index 6cc81dab6049be0e3215950f1767ca04e1acc928..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/intersect.h +++ /dev/null @@ -1,391 +0,0 @@ -/* - * FUNCTION: - * This file contains a number of utilities useful to 3D graphics in - * general, and to the generation of tubing and extrusions in particular - * - * HISTORY: - * Written by Linas Vepstas, August 1991 - * Updated to correctly handle degenerate cases, Linas, February 1993 - */ - -#include -#include "port.h" -#include "vvector.h" - -#define BACKWARDS_INTERSECT (2) - -/* ========================================================== */ -/* - * the Degenerate_Tolerance token represents the greatest amount by - * which different scales in a graphics environment can differ before - * they should be considered "degenerate". That is, when one vector is - * a million times longer than another, changces are that the second will - * be less than a pixel long, and therefore was probably meant to be - * degenerate (by the CAD package, etc.) But what should this tolerance - * be? At least 1 in onethousand (since screen sizes are 1K pixels), but - * les than 1 in 4 million (since this is the limit of single-precision - * floating point accuracy). Of course, if double precision were used, - * then the tolerance could be increased. - * - * Potentially, this naive assumption could cause problems if the CAD - * package attempts to zoom in on small details, and turns out, certain - * points should not hvae been degenerate. The problem presented here - * is that the tolerance could run out before single-precision ran - * out, and so the CAD packages would perceive this as a "bug". - * One alternative is to fiddle around & try to tighten the tolerance. - * However, the right alternative is to code the graphics pipeline in - * double-precision (and tighten the tolerance). - * - * By the way, note that Degernate Tolerance is a "dimensionless" - * quantitiy -- it has no units -- it does not measure feet, inches, - * millimeters or pixels. It is used only in the computations of ratios - * and relative lengths. - */ - -/* - * Right now, the tolerance is set to 2 parts in a million, which - * corresponds to a 19-bit distinction of mantissas. Note that - * single-precsion numbers have 24 bit mantissas. - */ - -#define DEGENERATE_TOLERANCE (0.000002) - -/* ========================================================== */ -/* - * The macro and subroutine INTERSECT are designed to compute the - * intersection of a line (defined by the points v1 and v2) and a plane - * (defined as plane which is normal to the vector n, and contains the - * point p). Both return the point sect, which is the point of - * interesection. - * - * This MACRO attemps to be fairly robust by checking for a divide by - * zero. - */ - -/* ========================================================== */ -/* - * HACK ALERT - * The intersection parameter t has the nice property that if t>1, - * then the intersection is "in front of" p1, and if t<0, then the - * intersection is "behind" p2. Unfortunately, as the intersecting plane - * and the line become parallel, t wraps through infinity -- i.e. t can - * become so large that t becomes "greater than infinity" and comes back - * as a negative number (i.e. winding number hopped by one unit). We - * have no way of detecting this situation without adding gazzillions - * of lines of code of topological algebra to detect the winding number; - * and this would be incredibly difficult, and ruin performance. - * - * Thus, we've installed a cheap hack for use by the "cut style" drawing - * routines. If t proves to be a large negative number (more negative - * than -5), then we assume that t was positive and wound through - * infinity. This makes most cuts look good, without introducing bogus - * cuts at infinity. - */ -/* ========================================================== */ - -#define INTERSECT(sect,p,n,v1,v2) \ -{ \ - gleDouble deno, numer, t, omt; \ - \ - deno = (v1[0] - v2[0]) * n[0]; \ - deno += (v1[1] - v2[1]) * n[1]; \ - deno += (v1[2] - v2[2]) * n[2]; \ - \ - if (deno == 0.0) { \ - VEC_COPY (n, v1); \ - /* printf ("Intersect: Warning: line is coplanar with plane \n"); */ \ - } else { \ - \ - numer = (p[0] - v2[0]) * n[0]; \ - numer += (p[1] - v2[1]) * n[1]; \ - numer += (p[2] - v2[2]) * n[2]; \ - \ - t = numer / deno; \ - omt = 1.0 - t; \ - \ - sect[0] = t * v1[0] + omt * v2[0]; \ - sect[1] = t * v1[1] + omt * v2[1]; \ - sect[2] = t * v1[2] + omt * v2[2]; \ - } \ -} - -/* ========================================================== */ -/* - * The macro and subroutine BISECTING_PLANE compute a normal vector that - * describes the bisecting plane between three points (v1, v2 and v3). - * This bisecting plane has the following properties: - * 1) it contains the point v2 - * 2) the angle it makes with v21 == v2 - v1 is equal to the angle it - * makes with v32 == v3 - v2 - * 3) it is perpendicular to the plane defined by v1, v2, v3. - * - * Having input v1, v2, and v3, it returns a unit vector n. - * - * In some cases, the user may specify degenerate points, and still - * expect "reasonable" or "obvious" behaviour. The "expected" - * behaviour for these degenerate cases is: - * - * 1) if v1 == v2 == v3, then return n=0 - * 2) if v1 == v2, then return v32 (normalized). - * 3) if v2 == v3, then return v21 (normalized). - * 4) if v1, v2 and v3 co-linear, then return v21 (normalized). - * - * Mathematically, these special cases "make sense" -- we just have to - * code around potential divide-by-zero's in the code below. - */ - -/* ========================================================== */ - -#define BISECTING_PLANE(valid,n,v1,v2,v3) \ -{ \ - double v21[3], v32[3]; \ - double len21, len32; \ - double dot; \ - \ - VEC_DIFF (v21, v2, v1); \ - VEC_DIFF (v32, v3, v2); \ - \ - VEC_LENGTH (len21, v21); \ - VEC_LENGTH (len32, v32); \ - \ - if (len21 <= DEGENERATE_TOLERANCE * len32) { \ - \ - if (len32 == 0.0) { \ - /* all three points lie ontop of one-another */ \ - VEC_ZERO (n); \ - valid = FALSE; \ - } else { \ - /* return a normalized copy of v32 as bisector */ \ - len32 = 1.0 / len32; \ - VEC_SCALE (n, len32, v32); \ - valid = TRUE; \ - } \ - \ - } else { \ - \ - valid = TRUE; \ - \ - if (len32 <= DEGENERATE_TOLERANCE * len21) { \ - /* return a normalized copy of v21 as bisector */ \ - len21 = 1.0 / len21; \ - VEC_SCALE (n, len21, v21); \ - \ - } else { \ - \ - /* normalize v21 to be of unit length */ \ - len21 = 1.0 / len21; \ - VEC_SCALE (v21, len21, v21); \ - \ - /* normalize v32 to be of unit length */ \ - len32 = 1.0 / len32; \ - VEC_SCALE (v32, len32, v32); \ - \ - VEC_DOT_PRODUCT (dot, v32, v21); \ - \ - /* if dot == 1 or -1, then points are colinear */ \ - if ((dot >= (1.0-DEGENERATE_TOLERANCE)) || \ - (dot <= (-1.0+DEGENERATE_TOLERANCE))) { \ - VEC_COPY (n, v21); \ - } else { \ - \ - /* go do the full computation */ \ - n[0] = dot * (v32[0] + v21[0]) - v32[0] - v21[0]; \ - n[1] = dot * (v32[1] + v21[1]) - v32[1] - v21[1]; \ - n[2] = dot * (v32[2] + v21[2]) - v32[2] - v21[2]; \ - \ - /* if above if-test's passed, \ - * n should NEVER be of zero length */ \ - VEC_NORMALIZE (n); \ - } \ - } \ - } \ -} - -/* ========================================================== */ -/* - * The block of code below is ifdef'd out, and is here for reference - * purposes only. It performs the "mathematically right thing" for - * computing a bisecting plane, but is, unfortunately, subject ot noise - * in the presence of near degenerate points. Since computer graphics, - * due to sloppy coding, laziness, or correctness, is filled with - * degenerate points, we can't really use this version. The code above - * is far more appropriate for graphics. - */ - -#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER -#define BISECTING_PLANE(n,v1,v2,v3) \ -{ \ - double v21[3], v32[3]; \ - double len21, len32; \ - double dot; \ - \ - VEC_DIFF (v21, v2, v1); \ - VEC_DIFF (v32, v3, v2); \ - \ - VEC_LENGTH (len21, v21); \ - VEC_LENGTH (len32, v32); \ - \ - if (len21 == 0.0) { \ - \ - if (len32 == 0.0) { \ - /* all three points lie ontop of one-another */ \ - VEC_ZERO (n); \ - valid = FALSE; \ - } else { \ - /* return a normalized copy of v32 as bisector */ \ - len32 = 1.0 / len32; \ - VEC_SCALE (n, len32, v32); \ - } \ - \ - } else { \ - \ - /* normalize v21 to be of unit length */ \ - len21 = 1.0 / len21; \ - VEC_SCALE (v21, len21, v21); \ - \ - if (len32 == 0.0) { \ - /* return a normalized copy of v21 as bisector */ \ - VEC_COPY (n, v21); \ - } else { \ - \ - /* normalize v32 to be of unit length */ \ - len32 = 1.0 / len32; \ - VEC_SCALE (v32, len32, v32); \ - \ - VEC_DOT_PRODUCT (dot, v32, v21); \ - \ - /* if dot == 1 or -1, then points are colinear */ \ - if ((dot == 1.0) || (dot == -1.0)) { \ - VEC_COPY (n, v21); \ - } else { \ - \ - /* go do the full computation */ \ - n[0] = dot * (v32[0] + v21[0]) - v32[0] - v21[0]; \ - n[1] = dot * (v32[1] + v21[1]) - v32[1] - v21[1]; \ - n[2] = dot * (v32[2] + v21[2]) - v32[2] - v21[2]; \ - \ - /* if above if-test's passed, \ - * n should NEVER be of zero length */ \ - VEC_NORMALIZE (n); \ - } \ - } \ - } \ -} -#endif - -/* ========================================================== */ -/* - * This macro computes the plane perpendicular to the the plane - * defined by three points, and whose normal vector is givven as the - * difference between the two vectors ... - * - * (See way below for the "math" model if you want to understand this. - * The comments about relative errors above apply here.) - */ - -#define CUTTING_PLANE(valid,n,v1,v2,v3) \ -{ \ - double v21[3], v32[3]; \ - double len21, len32; \ - double lendiff; \ - \ - VEC_DIFF (v21, v2, v1); \ - VEC_DIFF (v32, v3, v2); \ - \ - VEC_LENGTH (len21, v21); \ - VEC_LENGTH (len32, v32); \ - \ - if (len21 <= DEGENERATE_TOLERANCE * len32) { \ - \ - if (len32 == 0.0) { \ - /* all three points lie ontop of one-another */ \ - VEC_ZERO (n); \ - valid = FALSE; \ - } else { \ - /* return a normalized copy of v32 as cut-vector */ \ - len32 = 1.0 / len32; \ - VEC_SCALE (n, len32, v32); \ - valid = TRUE; \ - } \ - \ - } else { \ - \ - valid = TRUE; \ - \ - if (len32 <= DEGENERATE_TOLERANCE * len21) { \ - /* return a normalized copy of v21 as cut vector */ \ - len21 = 1.0 / len21; \ - VEC_SCALE (n, len21, v21); \ - } else { \ - \ - /* normalize v21 to be of unit length */ \ - len21 = 1.0 / len21; \ - VEC_SCALE (v21, len21, v21); \ - \ - /* normalize v32 to be of unit length */ \ - len32 = 1.0 / len32; \ - VEC_SCALE (v32, len32, v32); \ - \ - VEC_DIFF (n, v21, v32); \ - VEC_LENGTH (lendiff, n); \ - \ - /* if the perp vector is very small, then the two \ - * vectors are darn near collinear, and the cut \ - * vector is probably poorly defined. */ \ - if (lendiff < DEGENERATE_TOLERANCE) { \ - VEC_ZERO (n); \ - valid = FALSE; \ - } else { \ - lendiff = 1.0 / lendiff; \ - VEC_SCALE (n, lendiff, n); \ - } \ - } \ - } \ -} - -/* ========================================================== */ - -#ifdef MATHEMATICALLY_EXACT_GRAPHICALLY_A_KILLER -#define CUTTING_PLANE(n,v1,v2,v3) \ -{ \ - double v21[3], v32[3]; \ - \ - VEC_DIFF (v21, v2, v1); \ - VEC_DIFF (v32, v3, v2); \ - \ - VEC_NORMALIZE (v21); \ - VEC_NORMALIZE (v32); \ - \ - VEC_DIFF (n, v21, v32); \ - VEC_NORMALIZE (n); \ -} -#endif - - -/* ============================================================ */ -/* This macro is used in several places to cycle through a series of - * points to find the next non-degenerate point in a series */ - -#define FIND_NON_DEGENERATE_POINT(inext,npoints,len,diff,point_array) \ -{ \ - gleDouble slen; \ - gleDouble summa[3]; \ - \ - do { \ - /* get distance to next point */ \ - VEC_DIFF (diff, point_array[inext+1], point_array[inext]); \ - VEC_LENGTH (len, diff); \ - VEC_SUM (summa, point_array[inext+1], point_array[inext]); \ - VEC_LENGTH (slen, summa); \ - slen *= DEGENERATE_TOLERANCE; \ - inext ++; \ - } while ((len <= slen) && (inext < npoints-1)); \ -} - -/* ========================================================== */ - -extern int bisecting_plane (gleDouble n[3], /* returned */ - gleDouble v1[3], /* input */ - gleDouble v2[3], /* input */ - gleDouble v3[3]); /* input */ - diff --git a/lib/glut-3.7.6/lib/gle/port.h b/lib/glut-3.7.6/lib/gle/port.h deleted file mode 100644 index d9e6c83907e4148bc2ec8e3f7c7bd3a816859d70..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/port.h +++ /dev/null @@ -1,296 +0,0 @@ - -/* - * port.h - * - * FUNCTION: - * This file contains defines for porting the tubing toolkit from GL to - * OpenGL to some callback scheme. - * - * HISTORY: - * Created by Linas Vepstas -- February 1993 - * Added auto texture coord generation hacks, Linas April 1994 - */ - -#ifndef __GLE_PORT_H__ -#define __GLE_PORT_H__ - - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* ====================================================== */ -/* Some compilers can't handle multiply-subscripted array's */ - -#ifdef FUNKY_C -typedef gleDouble gleVector; -#define AVAL(arr,n,i,j) arr(6*n+3*i+j) -#define VVAL(arr,n,i) arr(3*n+i) - -#else /* FUNKY_C */ -typedef double gleVector[3]; -typedef double glePoint[2]; -#define AVAL(arr,n,i,j) arr[n][i][j] -#define VVAL(arr,n,i) arr[n][i]; - -#endif /* FUNKY_C */ - -/* ====================================================== */ -/* These are used to convey info about topography to the - * texture mapping routines */ - -#define FRONT 1 -#define BACK 2 -#define FRONT_CAP 3 -#define BACK_CAP 4 -#define FILLET 5 - -/* ====================================================== */ - -#define __GLE_DOUBLE - -/* ====================================================== */ - -#ifdef __GLE_DOUBLE -#define gleDouble double -#define urot_axis(a,b,c) urot_axis_d(a,b,c) -#define uview_direction(a,b,c) uview_direction_d(a,b,c) -#define uviewpoint(a,b,c,d) uviewpoint_d(a,b,c,d) -#define MULTMATRIX(m) MULTMATRIX_D(m) -#define LOADMATRIX(m) LOADMATRIX_D(m) -#define V3F(x,j,id) V3F_D(x,j,id) -#define N3F(x) N3F_D(x) -#define T2F(x,y) T2F_D(x,y) -#else -#define gleDouble float -#define urot_axis(a,b,c) urot_axis_f(a,b,c) -#define uview_direction(a,b,c) uview_direction_f(a,b,c) -#define uviewpoint(a,b,c,d) uviewpoint_f(a,b,c,d) -#define MULTMATRIX(m) MULTMATRIX_F(m) -#define LOADMATRIX(m) LOADMATRIX_F(m) -#define V3F(x,j,id) V3F_F(x,j,id) -#define N3F(x) N3F_F(x) -#define T2F(x,y) T2F_F(x,y) -#endif - -/* ====================================================== */ - -#if (defined DEBUG_GL_32 || DEBUG_OPENGL_10) -#undef GL_32 -#undef OPENGL_10 - -#define BGNTMESH(i,len) printf ("bgntmesh() \n"); -#define ENDTMESH() printf ("endtmesh() \n"); -#define BGNPOLYGON() printf ("bgnpolygon() \n"); -#define ENDPOLYGON() printf ("endpolygon() \n"); -#define V3F_F(x,j,id) printf ("v3f(x) %f %f %f \n", x[0], x[1], x[2]); -#define V3F_D(x,j,id) printf ("v3d(x) %f %f %f \n", x[0], x[1], x[2]); -#define N3F_F(x) printf ("n3f(x) %f %f %f \n", x[0], x[1], x[2]); -#define N3F_D(x) printf ("n3d(x) %f %f %f \n", x[0], x[1], x[2]); -#define C3F(x) printf ("c3f(x) %f %f %f \n", x[0], x[1], x[2]); - -#define POPMATRIX() printf ("popmatrix () \n"); -#define PUSHMATRIX() printf ("pushmatrix() \n"); -#define MULTMATRIX_F(x) MULTMATRIX_D(x) -#define LOADMATRIX_F(x) LOADMATRIX_D(x) - - -#define LOADMATRIX_D(x) { \ - int i, j; \ - printf ("loadmatrix (x) \n"); \ - for (i=0; i<4; i++) { \ - for (j=0; j<4; j++) { \ - printf ( "%f ", x[i][j]); \ - } \ - printf (" \n"); \ - } \ -} - -#define MULTMATRIX_D(x) { \ - int i, j; \ - printf ("multmatrix (x) \n"); \ - for (i=0; i<4; i++) { \ - for (j=0; j<4; j++) { \ - printf ( "%f ", x[i][j]); \ - } \ - printf (" \n"); \ - } \ -} - -#define __IS_LIGHTING_ON (1) - -#endif - -/* ====================================================== */ - -#ifdef GL_32 - -#include - -#define BGNTMESH(i,len) bgntmesh() -#define ENDTMESH() endtmesh() -#define BGNPOLYGON() bgnpolygon() -#define ENDPOLYGON() endpolygon() -#define V3F_F(x,j,id) v3f(x) -#define V3F_D(x,j,id) v3d(x) -#define N3F_F(x) n3f(x) -#define T2F_F(x,y) -#define T2F_D(x,y) -#define C3F(x) c3f(x) - -#define POPMATRIX() popmatrix () -#define PUSHMATRIX() pushmatrix() -#define MULTMATRIX_F(x) multmatrix (x) -#define LOADMATRIX_F(x) loadmatrix (x) - -#define N3F_D(x) { \ - float nnn[3]; \ - nnn[0] = (float) x[0]; \ - nnn[1] = (float) x[1]; \ - nnn[2] = (float) x[2]; \ - n3f (nnn); \ -} - -#define LOADMATRIX_D(x) { \ - int i, j; \ - float mmm[4][4]; \ - for (i=0; i<4; i++) { \ - for (j=0; j<4; j++) { \ - mmm[i][j] = (float) x[i][j]; \ - } \ - } \ - loadmatrix(mmm); \ -} - -#define MULTMATRIX_D(x) { \ - int i, j; \ - float mmm[4][4]; \ - for (i=0; i<4; i++) { \ - for (j=0; j<4; j++) { \ - mmm[i][j] = (float) x[i][j]; \ - } \ - } \ - multmatrix(mmm); \ -} - -/* #define __IS_LIGHTING_ON (MSINGLE == getmmode()) */ -#define __IS_LIGHTING_ON (extrusion_join_style & TUBE_LIGHTING_ON) - -#endif /* GL_32 */ - -/* ====================================================== */ -#ifdef OPENGL_10 - -#if defined(_WIN32) -#include -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#endif -#include -#include - -/* -#define N3F_F(x) { \ - float nnn[3]; \ - nnn[0] = - (float) x[0]; \ - nnn[1] = - (float) x[1]; \ - nnn[2] = - (float) x[2]; \ - glNormal3fv (nnn); \ -} -#define N3F_D(x) { \ - float nnn[3]; \ - nnn[0] = - (float) x[0]; \ - nnn[1] = - (float) x[1]; \ - nnn[2] = - (float) x[2]; \ - glNormal3fv (nnn); \ -} -*/ - -#define C3F(x) glColor3fv(x) -#define T2F_F(x,y) glTexCoord2f(x,y) -#define T2F_D(x,y) glTexCoord2d(x,y) - -#define POPMATRIX() glPopMatrix() -#define PUSHMATRIX() glPushMatrix() - -#define MULTMATRIX_F(x) glMultMatrixf ((const GLfloat *)x) -#define LOADMATRIX_F(x) glLoadMatrixf ((const GLfloat *)x) - -#define MULTMATRIX_D(x) glMultMatrixd ((const GLdouble *)x) -#define LOADMATRIX_D(x) glLoadMatrixd ((const GLdouble *)x) - -#define __IS_LIGHTING_ON (glIsEnabled(GL_LIGHTING)) - -/* ====================================================== */ -#ifdef AUTO_TEXTURE - -#define BGNTMESH(i,len) { \ - if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))(i,len);\ - glBegin (GL_TRIANGLE_STRIP); \ -} - -#define BGNPOLYGON() { \ - if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))();\ - glBegin (GL_POLYGON); \ -} - -#define N3F_F(x) { \ - if(_gle_gc -> n3f_gen_texture) (*(_gle_gc -> n3f_gen_texture))(x); \ - glNormal3fv(x); \ -} - -#define N3F_D(x) { \ - if(_gle_gc -> n3d_gen_texture) (*(_gle_gc -> n3d_gen_texture))(x); \ - glNormal3dv(x); \ -} - -#define V3F_F(x,j,id) { \ - if(_gle_gc -> v3f_gen_texture) (*(_gle_gc -> v3f_gen_texture))(x,j,id);\ - glVertex3fv(x); \ -} - -#define V3F_D(x,j,id) { \ - if(_gle_gc -> v3d_gen_texture) (*(_gle_gc -> v3d_gen_texture))(x,j,id); \ - glVertex3dv(x); \ -} - -#define ENDTMESH() { \ - if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \ - glEnd (); \ -} - -#define ENDPOLYGON() { \ - if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \ - glEnd (); \ -} - -/* ====================================================== */ -#else /* AUTO_TEXTURE */ - -#define BGNTMESH(i,len) glBegin (GL_TRIANGLE_STRIP); -#define BGNPOLYGON() glBegin (GL_POLYGON); - -#define N3F_F(x) glNormal3fv(x) -#define N3F_D(x) glNormal3dv(x) -#define V3F_F(x,j,id) glVertex3fv(x); -#define V3F_D(x,j,id) glVertex3dv(x); - -#define ENDTMESH() glEnd () -#define ENDPOLYGON() glEnd() - -#endif /* AUTO_TEXTURE */ - -#endif /* OPENGL_10 */ - -/* ====================================================== */ - - -#endif /* __GLE_PORT_H__ */ -/* ================== END OF FILE ======================= */ diff --git a/lib/glut-3.7.6/lib/gle/qmesh.c b/lib/glut-3.7.6/lib/gle/qmesh.c deleted file mode 100644 index c6ea83fb8923c6b1e61c262f90c23ef2c2b1c4f9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/qmesh.c +++ /dev/null @@ -1,196 +0,0 @@ - -/* - * This file contains routines to support the SGI compatible quad-mesh - * primitve. - * - * Written By Linas Vepstas November 1991 - */ - -#include - -struct _emu_qmesh_vertex_pair { - float ca[3]; - float na[3]; - float va[4]; - - float cb[3]; - float nb[3]; - float vb[4]; - }; - -#define QMESH 6 -static int bgnmode = 0; - -struct _emu_qmesh { - int num_vert; - struct _emu_qmesh_vertex_pair paira; - struct _emu_qmesh_vertex_pair pairb; - struct _emu_qmesh_vertex_pair *first_pair; - struct _emu_qmesh_vertex_pair *second_pair; - float defer_color[3]; - float defer_normal[3]; -} * _emu_qmesh_GC; - - -#define COPY_THREE_WORDS(A,B) { \ - struct three_words { long a, b, c; }; \ - *(struct three_words *) (A) = *(struct three_words *) (B); \ -} - -#define COPY_FOUR_WORDS(A,B) { \ - struct four_words { long a, b, c, d; }; \ - *(struct four_words *) (A) = *(struct four_words *) (B); \ -} - -/* ================================================================= */ - -void _emu_qmesh_InitGC (struct _emu_qmesh * tmp) -{ - - tmp -> num_vert = 0; - tmp -> first_pair = & (tmp -> paira); - tmp -> second_pair = & (tmp -> pairb); - - tmp -> defer_color[0] = 0.0; - tmp -> defer_color[1] = 0.0; - tmp -> defer_color[2] = 0.0; - - tmp -> defer_normal[0] = 0.0; - tmp -> defer_normal[1] = 0.0; - tmp -> defer_normal[2] = 0.0; - -} - -/* ================================================================= */ - -struct _emu_qmesh * _emu_qmesh_CreateGC (void) -{ - struct _emu_qmesh * tmp; - - tmp = (struct _emu_qmesh *) malloc (sizeof (struct _emu_qmesh)); - _emu_qmesh_InitGC (tmp); - - return (tmp); -} - -/* ================================================================= */ - -void _emu_qmesh_DestroyGC (void) -{ - free (_emu_qmesh_GC); -} - -/* ================================================================= */ - -void _emu_qmesh_bgnqmesh (void) -{ - _emu_qmesh_GC = _emu_qmesh_CreateGC (); - bgnmode = QMESH; -} - -/* ================================================================= */ - -void _emu_qmesh_endqmesh (void) -{ - _emu_qmesh_DestroyGC (); - bgnmode = 0; -} - -/* ================================================================= */ - -void _emu_qmesh_c3f (float c[3]) -{ - if (bgnmode == QMESH) { - COPY_THREE_WORDS (_emu_qmesh_GC -> defer_color, c); - } else { - c3f (c); - } -} - -/* ================================================================= */ - -void _emu_qmesh_n3f (float n[3]) -{ - if (bgnmode == QMESH) { - COPY_THREE_WORDS (_emu_qmesh_GC -> defer_normal, n); - } else { - n3f (n); - } -} - -/* ================================================================= */ - -void _emu_qmesh_v3f (float v[3]) -{ - int nv, even_odd, fs; - struct _emu_qmesh_vertex_pair *tmp; - - if (bgnmode == QMESH) { - nv = _emu_qmesh_GC -> num_vert; - even_odd = nv %2; - fs = (nv %4) / 2; - - if (fs) { - if (even_odd) { - COPY_THREE_WORDS (_emu_qmesh_GC -> pairb.cb, - _emu_qmesh_GC -> defer_color); - COPY_THREE_WORDS (_emu_qmesh_GC -> pairb.nb, - _emu_qmesh_GC -> defer_normal); - COPY_THREE_WORDS (_emu_qmesh_GC -> pairb.vb, v); - _emu_qmesh_GC -> pairb.vb [3] = 1.0; - } else { - COPY_THREE_WORDS (_emu_qmesh_GC -> pairb.ca, - _emu_qmesh_GC -> defer_color); - COPY_THREE_WORDS (_emu_qmesh_GC -> pairb.na, - _emu_qmesh_GC -> defer_normal); - COPY_THREE_WORDS (_emu_qmesh_GC -> pairb.va, v); - _emu_qmesh_GC -> pairb.va [3] = 1.0; - } - } else { - if (even_odd) { - COPY_THREE_WORDS (_emu_qmesh_GC -> paira.cb, - _emu_qmesh_GC -> defer_color); - COPY_THREE_WORDS (_emu_qmesh_GC -> paira.nb, - _emu_qmesh_GC -> defer_normal); - COPY_THREE_WORDS (_emu_qmesh_GC -> paira.vb, v); - _emu_qmesh_GC -> paira.vb [3] = 1.0; - } else { - COPY_THREE_WORDS (_emu_qmesh_GC -> paira.ca, - _emu_qmesh_GC -> defer_color); - COPY_THREE_WORDS (_emu_qmesh_GC -> paira.na, - _emu_qmesh_GC -> defer_normal); - COPY_THREE_WORDS (_emu_qmesh_GC -> paira.va, v); - _emu_qmesh_GC -> paira.va [3] = 1.0; - } - } - - if (even_odd && (nv >= 3)) { - bgnpolygon (); - c3f ( _emu_qmesh_GC -> first_pair -> ca); - n3f ( _emu_qmesh_GC -> first_pair -> na); - v4f ( _emu_qmesh_GC -> first_pair -> va); - c3f ( _emu_qmesh_GC -> first_pair -> cb); - n3f ( _emu_qmesh_GC -> first_pair -> nb); - v4f ( _emu_qmesh_GC -> first_pair -> vb); - c3f ( _emu_qmesh_GC -> second_pair -> cb); - n3f ( _emu_qmesh_GC -> second_pair -> nb); - v4f ( _emu_qmesh_GC -> second_pair -> vb); - c3f ( _emu_qmesh_GC -> second_pair -> ca); - n3f ( _emu_qmesh_GC -> second_pair -> na); - v4f ( _emu_qmesh_GC -> second_pair -> va); - endpolygon (); - - /* swap the data buffers */ - tmp = _emu_qmesh_GC -> first_pair; - _emu_qmesh_GC -> first_pair = _emu_qmesh_GC -> second_pair; - _emu_qmesh_GC -> second_pair = tmp; - } - - _emu_qmesh_GC -> num_vert ++; - - } else { - v3f (v); - } -} - -/* ================================================================= */ diff --git a/lib/glut-3.7.6/lib/gle/rot.h b/lib/glut-3.7.6/lib/gle/rot.h deleted file mode 100644 index f7588c1832932718a196fb17c92d6dfe9d71330b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/rot.h +++ /dev/null @@ -1,98 +0,0 @@ - -/* - * rot.h - * - * FUNCTION: - * rotation matrix utilities - * - * HISTORY: - * Linas Vepstas Aug 1990 - */ - -/* ========================================================== */ -/* - * The MACROS below generate and return more traditional rotation - * matrices -- matrices for rotations about principal axes. - */ -/* ========================================================== */ - -#define ROTX_CS(m,cosine,sine) \ -{ \ - /* rotation about the x-axis */ \ - \ - m[0][0] = 1.0; \ - m[0][1] = 0.0; \ - m[0][2] = 0.0; \ - m[0][3] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = (cosine); \ - m[1][2] = (sine); \ - m[1][3] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = -(sine); \ - m[2][2] = (cosine); \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -} - -/* ========================================================== */ - -#define ROTY_CS(m,cosine,sine) \ -{ \ - /* rotation about the y-axis */ \ - \ - m[0][0] = (cosine); \ - m[0][1] = 0.0; \ - m[0][2] = -(sine); \ - m[0][3] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = 1.0; \ - m[1][2] = 0.0; \ - m[1][3] = 0.0; \ - \ - m[2][0] = (sine); \ - m[2][1] = 0.0; \ - m[2][2] = (cosine); \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -} - -/* ========================================================== */ - -#define ROTZ_CS(m,cosine,sine) \ -{ \ - /* rotation about the z-axis */ \ - \ - m[0][0] = (cosine); \ - m[0][1] = (sine); \ - m[0][2] = 0.0; \ - m[0][3] = 0.0; \ - \ - m[1][0] = -(sine); \ - m[1][1] = (cosine); \ - m[1][2] = 0.0; \ - m[1][3] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = 0.0; \ - m[2][2] = 1.0; \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -} - -/* ========================================================== */ diff --git a/lib/glut-3.7.6/lib/gle/rot_prince.c b/lib/glut-3.7.6/lib/gle/rot_prince.c deleted file mode 100644 index 69cf042bd612740f87174bf284c6fe751a668537..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/rot_prince.c +++ /dev/null @@ -1,303 +0,0 @@ - -#include -#include "rot.h" -#include "port.h" - -/* ========================================================== */ -/* - * The routines below generate and return more traditional rotation - * matrices -- matrices for rotations about principal axes. - */ -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void urotx_sc_d (double m[4][4], /* returned */ - double cosine, /* input */ - double sine) /* input */ -#else -void urotx_sc_f (float m[4][4], /* returned */ - float cosine, /* input */ - float sine) /* input */ -#endif -{ - /* create matrix that represents rotation about the x-axis */ - - ROTX_CS (m, cosine, sine); -} - -/* ========================================================== */ - -#if 0 -#ifdef __GUTIL_DOUBLE -void rotx_cs_d (double cosine, /* input */ - double sine) /* input */ -{ - /* create and load matrix that represents rotation about the x-axis */ - double m[4][4]; - - (void) urotx_cs_d (m, cosine, sine); - MULTMATRIX_D (m); -} - -#else -void rotx_cs_f (float cosine, /* input */ - float sine) /* input */ -{ - /* create and load matrix that represents rotation about the x-axis */ - float m[4][4]; - - (void) urotx_cs_f (m, cosine, sine); - MULTMATRIX_F (m); -} -#endif -#endif - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void uroty_sc_d (double m[4][4], /* returned */ - double cosine, /* input */ - double sine) /* input */ -#else -void uroty_sc_f (float m[4][4], /* returned */ - float cosine, /* input */ - float sine) /* input */ -#endif -{ - /* create matriy that represents rotation about the y-ayis */ - - ROTX_CS (m, cosine, sine); -} - -/* ========================================================== */ - -#if 0 -#ifdef __GUTIL_DOUBLE -void roty_cs_d (double cosine, /* input */ - double sine) /* input */ -{ - /* create and load matriy that represents rotation about the y-ayis */ - double m[4][4]; - - (void) uroty_cs_d (m, cosine, sine); - MULTMATRIX_D (m); -} - -#else -void roty_cs_f (float cosine, /* input */ - float sine) /* input */ -{ - /* create and load matriy that represents rotation about the y-ayis */ - float m[4][4]; - - (void) uroty_cs_f (m, cosine, sine); - MULTMATRIX_F (m); -} -#endif -#endif - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void urotz_sc_d (double m[4][4], /* returned */ - double cosine, /* input */ - double sine) /* input */ -#else -void urotz_sc_f (float m[4][4], /* returned */ - float cosine, /* input */ - float sine) /* input */ -#endif -{ - /* create matriz that represents rotation about the z-azis */ - - ROTX_CS (m, cosine, sine); -} - -/* ========================================================== */ - -#if 0 -#ifdef __GUTIL_DOUBLE -void rotz_cs_d (double cosine, /* input */ - double sine) /* input */ -{ - /* create and load matriz that represents rotation about the z-azis */ - double m[4][4]; - - (void) urotz_cs_d (m, cosine, sine); - MULTMATRIX_D (m); -} - -#else -void rotz_cs_f (float cosine, /* input */ - float sine) /* input */ -{ - /* create and load matriz that represents rotation about the z-azis */ - float m[4][4]; - - (void) urotz_cs_f (m, cosine, sine); - MULTMATRIX_F (m); -} -#endif -#endif - -/* ========================================================== */ - -#if 0 -#ifdef __GUTIL_DOUBLE -void urot_cs_d (double m[4][4], /* returned */ - double cosine, /* input */ - double sine, /* input */ - char axis) /* input */ -{ - /* create matrix that represents rotation about a principle axis */ - - switch (axis) { - case 'x': - case 'X': - urotx_cs_d (m, cosine, sine); - break; - case 'y': - case 'Y': - uroty_cs_d (m, cosine, sine); - break; - case 'z': - case 'Z': - urotz_cs_d (m, cosine, sine); - break; - default: - break; - } - -} - -#else -void urot_cs_f (float m[4][4], /* returned */ - float cosine, /* input */ - float sine, /* input */ - char axis) /* input */ -{ - /* create matrix that represents rotation about a principle axis */ - - switch (axis) { - case 'x': - case 'X': - urotx_cs_f (m, cosine, sine); - break; - case 'y': - case 'Y': - uroty_cs_f (m, cosine, sine); - break; - case 'z': - case 'Z': - urotz_cs_f (m, cosine, sine); - break; - default: - break; - } - -} -#endif -#endif - -/* ========================================================== */ - -#if 0 -#ifdef __GUTIL_DOUBLE -void rot_cs_d (double cosine, /* input */ - double sine, /* input */ - char axis) /* input */ -{ - /* create and load matrix that represents rotation about the z-axis */ - double m[4][4]; - - (void) urot_cs_d (m, cosine, sine, axis); - MULTMATRIX_D (m); -} -#else -void rot_cs_f (float cosine, /* input */ - float sine, /* input */ - char axis) /* input */ -{ - /* create and load matrix that represents rotation about the z-axis */ - float m[4][4]; - - (void) urot_cs_f (m, cosine, sine, axis); - MULTMATRIX_F (m); -} -#endif -#endif - -/* ========================================================== */ - -#if 0 -#ifdef __GUTIL_DOUBLE -void urot_prince_d (double m[4][4], /* returned */ - double theta, /* input */ - char axis) /* input */ -{ - /* - * generate rotation matrix for rotation around principal axis; - * note that angle is measured in radians (divide by 180, multiply by - * PI to convert from degrees). - */ - - (void) urot_cs_d (m, - cos (theta), - sin (theta), - axis); -} -#else -void urot_prince_f (float m[4][4], /* returned */ - float theta, /* input */ - char axis) /* input */ -{ - /* - * generate rotation matrix for rotation around principal axis; - * note that angle is measured in radians (divide by 180, multiply by - * PI to convert from degrees). - */ - - (void) urot_cs_f (m, - (float) cos ((double) theta), - (float) sin ((double) theta), - axis); -} -#endif -#endif - -/* ========================================================== */ - -#if 0 -#ifdef __GUTIL_DOUBLE -void rot_prince_d (double theta, /* input */ - char axis) /* input */ -{ - double m[4][4]; - /* - * generate rotation matrix for rotation around principal axis; - * note that angle is measured in radians (divide by 180, multiply by - * PI to convert from degrees). - */ - - (void) urot_prince_d (m, theta, axis); - MULTMATRIX_D (m); -} -#else - -void rot_prince_f (float theta, /* input */ - char axis) /* input */ -{ - float m[4][4]; - /* - * generate rotation matrix for rotation around principal axis; - * note that angle is measured in radians (divide by 180, multiply by - * PI to convert from degrees). - */ - - (void) urot_prince_f (m, theta, axis); - MULTMATRIX_F (m); -} -#endif -#endif - -/* ========================================================== */ diff --git a/lib/glut-3.7.6/lib/gle/rotate.c b/lib/glut-3.7.6/lib/gle/rotate.c deleted file mode 100644 index 028b067ff1579a9fabfd5c5555aedd00418489cf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/rotate.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * MODULE NAME: rotate.c - * - * FUNCTION: - * This module contains three different routines that compute rotation - * matricies and load them into GL. - * Detailed description is provided below. - * - * DEPENDENCIES: - * The routines call GL matrix routines. - * - * HISTORY: - * Developed & written, Linas Vepstas, Septmeber 1991 - * Double precision port, March 1993 - * - * DETAILED DESCRIPTION: - * This module contains three routines: - * -------------------------------------------------------------------- - * - * void urot_about_axis (float m[4][4], --- returned - * float angle, --- input - * float axis[3]) --- input - * Computes a rotation matrix. - * The rotation is around the the direction specified by the argument - * argument axis[3]. User may specify vector which is not of unit - * length. The angle of rotation is specified in degrees, and is in the - * right-handed direction. - * - * void rot_about_axis (float angle, --- input - * float axis[3]) --- input - * Same as above routine, except that the matrix is multiplied into the - * GL matrix stack. - * - * -------------------------------------------------------------------- - * - * void urot_axis (float m[4][4], --- returned - * float omega, --- input - * float axis[3]) --- input - * Same as urot_about_axis(), but angle specified in radians. - * It is assumed that the argument axis[3] is a vector of unit length. - * If it is not of unit length, the returned matrix will not be correct. - * - * void rot_axis (float omega, --- input - * float axis[3]) --- input - * Same as above routine, except that the matrix is multiplied into the - * GL matrix stack. - * - * -------------------------------------------------------------------- - * - * void urot_omega (float m[4][4], --- returned - * float omega[3]) --- input - * same as urot_axis(), but the angle is taken as the length of the - * vector omega[3] - * - * void rot_omega (float omega[3]) --- input - * Same as above routine, except that the matrix is multiplied into the - * GL matrix stack. - * - * -------------------------------------------------------------------- - */ - -#include -#include "port.h" -#include "gutil.h" - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void rot_axis_d (double omega, /* input */ - double axis[3]) /* input */ -{ - double m[4][4]; - - (void) urot_axis_d (m, omega, axis); - MULTMATRIX_D (m); - -} -#else - -void rot_axis_f (float omega, /* input */ - float axis[3]) /* input */ -{ - float m[4][4]; - - (void) urot_axis_f (m, omega, axis); - MULTMATRIX_F (m); - -} -#endif - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void rot_about_axis_d (double angle, /* input */ - double axis[3]) /* input */ -{ - double m[4][4]; - - (void) urot_about_axis_d (m, angle, axis); - MULTMATRIX_D (m); -} - -#else -void rot_about_axis_f (float angle, /* input */ - float axis[3]) /* input */ -{ - float m[4][4]; - - (void) urot_about_axis_f (m, angle, axis); - MULTMATRIX_F (m); -} -#endif - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void rot_omega_d (double axis[3]) /* input */ -{ - double m[4][4]; - - (void) urot_omega_d (m, axis); - MULTMATRIX_D(m); -} -#else -void rot_omega_f (float axis[3]) /* input */ -{ - float m[4][4]; - - (void) urot_omega_f (m, axis); - MULTMATRIX_F(m); -} -#endif - -/* ========================================================== */ diff --git a/lib/glut-3.7.6/lib/gle/round_cap.c b/lib/glut-3.7.6/lib/gle/round_cap.c deleted file mode 100644 index 4decd91582bada387395db80375a40fca6e2b9e7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/round_cap.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - * MODULE NAME: round_cap.c - * - * FUNCTION: - * This module contains code that draws the round end-cap for round - * join-style tubing. - * - * HISTORY: - * written by Linas Vepstas August/September 1991 - * split into multiple compile units, Linas, October 1991 - * added normal vectors Linas, October 1991 - */ - - -#include -#include -#include -#include /* for the memcpy() subroutine */ -#include -#include "port.h" -#include "gutil.h" -#include "vvector.h" -#include "extrude.h" -#include "tube_gc.h" -#include "intersect.h" -#include "segment.h" - - -/* ============================================================ */ -/* This routine does what it says: It draws the end-caps for the - * "round" join style. - */ - -/* HACK ALERT HACK ALERT HACK ALERT HACK ALERT */ -/* This #define should be replaced by some adaptive thingy. - * the adaptiveness needs to depend on relative angles and diameter of - * extrusion relative to screen size (in pixels). - */ - -#define __ROUND_TESS_PIECES 5 - -void draw_round_style_cap_callback (int ncp, - double cap[][3], - float face_color[3], - gleDouble cut[3], - gleDouble bi[3], - double norms[][3], - int frontwards) -{ - double axis[3]; - double xycut[3]; - double theta; - double *last_contour, *next_contour; - double *last_norm, *next_norm; - double *cap_z; - double *tmp; - char *malloced_area; - int i, j, k; - double m[4][4]; - - if (face_color != NULL) C3F (face_color); - - /* ------------ start setting up rotation matrix ------------- */ - /* if the cut vector is NULL (this should only occur in - * a degenerate case), then we can't draw anything. return. */ - if (cut == NULL) return; - - /* make sure that the cut vector points inwards */ - if (cut[2] > 0.0) { - VEC_SCALE (cut, -1.0, cut); - } - - /* make sure that the bi vector points outwards */ - if (bi[2] < 0.0) { - VEC_SCALE (bi, -1.0, bi); - } - - /* determine the axis we are to rotate about to get bi-contour. - * Note that the axis will always lie in the x-y plane */ - VEC_CROSS_PRODUCT (axis, cut, bi); - - /* reverse the cut vector for the back cap -- - * need to do this to get angle right */ - if (!frontwards) { - VEC_SCALE (cut, -1.0, cut); - } - - /* get angle to rotate by -- arccos of dot product of cut with cut - * projected into the x-y plane */ - xycut [0] = 0.0; - xycut [1] = 0.0; - xycut [2] = 1.0; - VEC_PERP (xycut, cut, xycut); - VEC_NORMALIZE (xycut); - VEC_DOT_PRODUCT (theta, xycut, cut); - - theta = acos (theta); - - /* we'll tesselate round joins into a number of teeny pieces */ - theta /= (double) __ROUND_TESS_PIECES; - - /* get the matrix */ - urot_axis_d (m, theta, axis); - - /* ------------ done setting up rotation matrix ------------- */ - - /* This malloc is a fancy version of: - * last_contour = (double *) malloc (3*ncp*sizeof(double); - * next_contour = (double *) malloc (3*ncp*sizeof(double); - */ - malloced_area = malloc ((4*3+1) *ncp*sizeof (double)); - last_contour = (double *) malloced_area; - next_contour = last_contour + 3*ncp; - cap_z = next_contour + 3*ncp; - last_norm = cap_z + ncp; - next_norm = last_norm + 3*ncp; - - /* make first copy of contour */ - if (frontwards) { - for (j=0; j -#include -#include -#include /* for the memcpy() subroutine */ -#include "GL/tube.h" -#include "port.h" -#include "extrude.h" -#include "tube_gc.h" -#include "segment.h" - - -/* ============================================================ */ - -void draw_segment_plain (int ncp, /* number of contour points */ - gleDouble front_contour[][3], - gleDouble back_contour[][3], - int inext, double len) -{ - int j; - - /* draw the tube segment */ - BGNTMESH (inext, len); - for (j=0; j -#include -#include -#include "port.h" -#include "tube_gc.h" - -/* ======================================================= */ - -gleGC *_gle_gc = 0x0; - -gleGC * gleCreateGC (void) { - gleGC * retval = (gleGC *) malloc (sizeof (gleGC)); - - retval -> bgn_gen_texture = 0x0; - retval -> n3f_gen_texture = 0x0; - retval -> n3d_gen_texture = 0x0; - retval -> v3f_gen_texture = 0x0; - retval -> v3d_gen_texture = 0x0; - retval -> end_gen_texture = 0x0; - - retval -> save_bgn_gen_texture = 0x0; - retval -> save_n3f_gen_texture = 0x0; - retval -> save_n3d_gen_texture = 0x0; - retval -> save_v3f_gen_texture = 0x0; - retval -> save_v3d_gen_texture = 0x0; - retval -> save_end_gen_texture = 0x0; - - retval -> join_style = TUBE_JN_ANGLE | TUBE_JN_CAP | TUBE_NORM_FACET; - retval -> ncp = 0; - retval -> npoints = 0; - - retval -> num_vert = 0; - retval -> segment_number = 0; - retval -> segment_length = 0.0; - retval -> accum_seg_len = 0.0; - retval -> prev_x = 0.0; - retval -> prev_y = 0.0; - - return retval; -} - -/* ======================================================= */ - -#define segment_number (_gle_gc -> segment_number) -#define segment_length (_gle_gc -> segment_length) -#define accum_seg_len (_gle_gc -> accum_seg_len) -#define num_vert (_gle_gc -> num_vert) -#define prev_x (_gle_gc -> prev_x) -#define prev_y (_gle_gc -> prev_y) - -/* ======================================================= */ - -static double save_nx = 0.0; -static double save_ny = 0.0; -static double save_nz = 0.0; - -static void save_normal (double *v) { - save_nx = v[0]; - save_ny = v[1]; - save_nz = v[2]; -} - -/* ======================================================= */ - -static void bgn_sphere_texgen (int inext, double len) { - segment_number = inext - 1; - segment_length = len; - num_vert = 0; -} - -/* ======================================================= */ -/* - * this routine assumes that the vertex passed in has been normalized - * (i.e. is of unit length) - */ -/* ARGSUSED3 */ -static void sphere_texgen (double x, double y, double z, - int jcnt, int which_end) -{ - double theta, phi; - - /* let phi and theta range fro 0 to 1 */ - phi = 0.5 * atan2 (x, y) / M_PI; - phi += 0.5; - - theta = 1.0 - acos (z) / M_PI; - - /* if first vertex, merely record the texture coords */ - if (num_vert == 0) { - prev_x = phi; - prev_y = theta; - num_vert ++; - } else { - - /* if texture coordinates changed radically, wrap them */ - if ((prev_y - theta) > 0.6) { - theta +=1.0; - } else if ((prev_y - theta) < -0.6) { - theta -=1.0; - } /* else no-op */ - prev_y = theta; - - - /* if texture coordinates changed radically, wrap them */ - if ((prev_x - phi) > 0.6) { - phi +=1.0; - } else if ((prev_x - phi) < -0.6) { - phi -=1.0; - } /* else no-op */ - prev_x = phi; - - } - - T2F_D (phi, theta); -} - -/* ======================================================= */ -/* mappers */ - -static void vertex_sphere_texgen_v (double *v, int jcnt, int which_end) { - double x = v[0]; double y = v[1]; double z = v[2]; - double r; - - r = 1.0 / sqrt (x*x + y*y + z*z); - x *= r; - y *= r; - z *= r; - sphere_texgen (x, y, z, jcnt, which_end); -} - -/* ARGSUSED */ -static void normal_sphere_texgen_v (double *v, int jcnt, int which_end) { - sphere_texgen (save_nx, save_ny, save_nz, jcnt, which_end); -} - -static void vertex_sphere_model_v (double *v, int jcnt, int which_end) { - double x = _gle_gc->contour[jcnt][0]; - double y = _gle_gc->contour[jcnt][1]; - double z = v[2]; - double r; - - r = 1.0 / sqrt (x*x + y*y + z*z); - x *= r; - y *= r; - z *= r; - sphere_texgen (x, y, z, jcnt, which_end); -} - -/* ARGSUSED */ -static void normal_sphere_model_v (double *v, int jcnt, int which_end) { - if (!(_gle_gc -> cont_normal)) return; - sphere_texgen (_gle_gc->cont_normal[jcnt][0], - _gle_gc->cont_normal[jcnt][1], 0.0, jcnt, which_end); -} - -/* ======================================================= */ - -static void bgn_z_texgen (int inext, double len) { - - /* accumulate the previous length */ - accum_seg_len += segment_length; - - /* save current values */ - segment_number = inext - 1; - segment_length = len; - - /* reset counter on first segment */ - if (1 >= segment_number) accum_seg_len = 0.0; - - num_vert = 0; -} - -/* ======================================================= */ - -/* ARGSUSED2 */ -static void cylinder_texgen (double x, double y, double z, - int jcnt, int which_end) -{ - double phi; - - /* let phi and theta range fro 0 to 1 */ - phi = 0.5 * atan2 (x, y) / M_PI; - phi += 0.5; - - /* if first vertex, merely record the texture coords */ - if (num_vert == 0) { - prev_x = phi; - num_vert ++; - } else { - /* if texture coordinates changed radically, wrap them */ - if ((prev_x - phi) > 0.6) { - phi +=1.0; - } else if ((prev_x - phi) < -0.6) { - phi -=1.0; - } /* else no-op */ - prev_x = phi; - } - - if (FRONT == which_end) { - T2F_D (phi, accum_seg_len); - } - if (BACK == which_end) { - T2F_D (phi, accum_seg_len + segment_length); - } -} - -/* ======================================================= */ -/* mappers */ - -static void vertex_cylinder_texgen_v (double *v, int jcnt, int which_end) { - double x = v[0]; double y = v[1]; double z = v[2]; - double r; - - r = 1.0 / sqrt (x*x + y*y); - x *= r; - y *= r; - cylinder_texgen (x, y, z, jcnt, which_end); -} - -/* ARGSUSED */ -static void normal_cylinder_texgen_v (double *v, int jcnt, int which_end) { - cylinder_texgen (save_nx, save_ny, save_nz, jcnt, which_end); -} - -static void vertex_cylinder_model_v (double *v, int jcnt, int which_end) { - double x = _gle_gc->contour[jcnt][0]; - double y = _gle_gc->contour[jcnt][1]; - double z = v[2]; - double r; - - r = 1.0 / sqrt (x*x + y*y); - x *= r; - y *= r; - cylinder_texgen (x, y, z, jcnt, which_end); -} - -/* ARGSUSED */ -static void normal_cylinder_model_v (double *v, int jcnt, int which_end) { - if (!(_gle_gc -> cont_normal)) return; - cylinder_texgen (_gle_gc->cont_normal[jcnt][0], - _gle_gc->cont_normal[jcnt][1], 0.0, jcnt, which_end); -} - -/* ======================================================= */ - -/* ARGSUSED1 */ -static void flat_texgen (double x, double y, double z, - int jcnt, int which_end) -{ - if (FRONT == which_end) { - T2F_D (x, accum_seg_len); - } - if (BACK == which_end) { - T2F_D (x, accum_seg_len + segment_length); - } -} - -/* ======================================================= */ - - -static void vertex_flat_texgen_v (double *v, int jcnt, int which_end) { - flat_texgen (v[0], v[1], v[2], jcnt, which_end); -} - -/* ARGSUSED */ -static void normal_flat_texgen_v (double *v, int jcnt, int which_end) { - flat_texgen (save_nx, save_ny, save_nz, jcnt, which_end); -} - -static void vertex_flat_model_v (double *v, int jcnt, int which_end) { - flat_texgen (_gle_gc->contour[jcnt][0], - _gle_gc->contour[jcnt][1], v[2], jcnt, which_end); -} - -/* ARGSUSED */ -static void normal_flat_model_v (double *v, int jcnt, int which_end) { - if (!(_gle_gc -> cont_normal)) return; - flat_texgen (_gle_gc->cont_normal[jcnt][0], - _gle_gc->cont_normal[jcnt][1], 0.0, jcnt, which_end); -} - -/* ======================================================= */ - -void gleTextureMode (int mode) { - - INIT_GC(); - - /* enable textureing by restoring the mode */ - _gle_gc -> bgn_gen_texture = _gle_gc -> save_bgn_gen_texture; - _gle_gc -> n3f_gen_texture = _gle_gc -> save_n3f_gen_texture; - _gle_gc -> n3d_gen_texture = _gle_gc -> save_n3d_gen_texture; - _gle_gc -> v3f_gen_texture = _gle_gc -> save_v3f_gen_texture; - _gle_gc -> v3d_gen_texture = _gle_gc -> save_v3d_gen_texture; - _gle_gc -> end_gen_texture = _gle_gc -> save_end_gen_texture; - - switch (mode&GLE_TEXTURE_STYLE_MASK) { - - case GLE_TEXTURE_VERTEX_FLAT: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = vertex_flat_texgen_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_NORMAL_FLAT: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = normal_flat_texgen_v; - _gle_gc -> n3d_gen_texture = save_normal; - break; - - case GLE_TEXTURE_VERTEX_MODEL_FLAT: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = vertex_flat_model_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_NORMAL_MODEL_FLAT: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = normal_flat_model_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_VERTEX_CYL: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = vertex_cylinder_texgen_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_NORMAL_CYL: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = normal_cylinder_texgen_v; - _gle_gc -> n3d_gen_texture = save_normal; - break; - - case GLE_TEXTURE_VERTEX_MODEL_CYL: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = vertex_cylinder_model_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_NORMAL_MODEL_CYL: - _gle_gc -> bgn_gen_texture = bgn_z_texgen; - _gle_gc -> v3d_gen_texture = normal_cylinder_model_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_VERTEX_SPH: - _gle_gc -> bgn_gen_texture = bgn_sphere_texgen; - _gle_gc -> v3d_gen_texture = vertex_sphere_texgen_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_NORMAL_SPH: - _gle_gc -> bgn_gen_texture = bgn_sphere_texgen; - _gle_gc -> v3d_gen_texture = normal_sphere_texgen_v; - _gle_gc -> n3d_gen_texture = save_normal; - break; - - case GLE_TEXTURE_VERTEX_MODEL_SPH: - _gle_gc -> bgn_gen_texture = bgn_sphere_texgen; - _gle_gc -> v3d_gen_texture = vertex_sphere_model_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - case GLE_TEXTURE_NORMAL_MODEL_SPH: - _gle_gc -> bgn_gen_texture = bgn_sphere_texgen; - _gle_gc -> v3d_gen_texture = normal_sphere_model_v; - _gle_gc -> n3d_gen_texture = 0x0; - break; - - default: - break; - } - - /* disable texturing, and save the mode */ - if (!(mode & GLE_TEXTURE_ENABLE)) { - _gle_gc -> save_bgn_gen_texture = _gle_gc -> bgn_gen_texture; - _gle_gc -> save_n3f_gen_texture = _gle_gc -> n3f_gen_texture; - _gle_gc -> save_n3d_gen_texture = _gle_gc -> n3d_gen_texture; - _gle_gc -> save_v3f_gen_texture = _gle_gc -> v3f_gen_texture; - _gle_gc -> save_v3d_gen_texture = _gle_gc -> v3d_gen_texture; - _gle_gc -> save_end_gen_texture = _gle_gc -> end_gen_texture; - - _gle_gc -> bgn_gen_texture = 0x0; - _gle_gc -> n3f_gen_texture = 0x0; - _gle_gc -> n3d_gen_texture = 0x0; - _gle_gc -> v3f_gen_texture = 0x0; - _gle_gc -> v3d_gen_texture = 0x0; - _gle_gc -> end_gen_texture = 0x0; - } -} - -/* ================== END OF FILE ========================= */ diff --git a/lib/glut-3.7.6/lib/gle/tube_gc.h b/lib/glut-3.7.6/lib/gle/tube_gc.h deleted file mode 100644 index a9fe3107f78ea85908783e01e1f5861b36608b20..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/tube_gc.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * tube_gc.h - * - * FUNCTION: - * This file allows for easy changes to changes in the way the extrusion - * library handles state info (i.e. context). - * - * HISTORY: - * Linas Vepstas --- February 1993 - * Added auto texture coord generation hacks, Linas April 1994 - */ - -typedef float gleColor[3]; -typedef double gleTwoVec[2]; - -typedef struct { - - /* public methods */ - void (*bgn_gen_texture) (int, double); - void (*n3f_gen_texture) (float *); - void (*n3d_gen_texture) (double *); - void (*v3f_gen_texture) (float *, int, int); - void (*v3d_gen_texture) (double *, int, int); - void (*end_gen_texture) (void); - - /* protected members -- "general knowledge" stuff */ - int join_style; - - /* arguments passed into extrusion code */ - int ncp; /* number of contour points */ - gleTwoVec *contour; /* 2D contour */ - gleTwoVec *cont_normal; /* 2D contour normals */ - gleDouble *up; /* up vector */ - int npoints; /* number of points in polyline */ - gleVector *point_array; /* path */ - gleColor *color_array; /* path colors */ - gleAffine *xform_array; /* contour xforms */ - - /* private members, used by texturing code */ - int num_vert; - int segment_number; - double segment_length; - double accum_seg_len; - double prev_x; - double prev_y; - - void (*save_bgn_gen_texture) (int, double); - void (*save_n3f_gen_texture) (float *); - void (*save_n3d_gen_texture) (double *); - void (*save_v3f_gen_texture) (float *, int, int); - void (*save_v3d_gen_texture) (double *, int, int); - void (*save_end_gen_texture) (void); - -} gleGC; - -extern gleGC *_gle_gc; -extern gleGC * gleCreateGC (void); - -#define INIT_GC() {if (!_gle_gc) _gle_gc = gleCreateGC(); } -#define extrusion_join_style (_gle_gc->join_style) - -#define __TUBE_CLOSE_CONTOUR (extrusion_join_style & TUBE_CONTOUR_CLOSED) -#define __TUBE_DRAW_CAP (extrusion_join_style & TUBE_JN_CAP) -#define __TUBE_DRAW_FACET_NORMALS (extrusion_join_style & TUBE_NORM_FACET) -#define __TUBE_DRAW_PATH_EDGE_NORMALS (extrusion_join_style & TUBE_NORM_PATH_EDGE) - -#define __TUBE_STYLE (extrusion_join_style & TUBE_JN_MASK) -#define __TUBE_RAW_JOIN (extrusion_join_style & TUBE_JN_RAW) -#define __TUBE_CUT_JOIN (extrusion_join_style & TUBE_JN_CUT) -#define __TUBE_ANGLE_JOIN (extrusion_join_style & TUBE_JN_ANGLE) -#define __TUBE_ROUND_JOIN (extrusion_join_style & TUBE_JN_ROUND) - -/* ======================= END OF FILE ========================== */ diff --git a/lib/glut-3.7.6/lib/gle/urotate.c b/lib/glut-3.7.6/lib/gle/urotate.c deleted file mode 100644 index 5ce9d9f0586dd52db839e287f148d7c2c501f3bd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/urotate.c +++ /dev/null @@ -1,217 +0,0 @@ - -/* - * MODULE: urotate.c - * - * FUNCTION: - * This module contains three different routines that compute rotation - * matricies and return these to user. - * Detailed description is provided below. - * - * HISTORY: - * Developed & written, Linas Vepstas, Septmeber 1991 - * double precision port, March 1993 - * - * DETAILED DESCRIPTION: - * This module contains three routines: - * -------------------------------------------------------------------- - * - * void urot_about_axis (float m[4][4], --- returned - * float angle, --- input - * float axis[3]) --- input - * Computes a rotation matrix. - * The rotation is around the the direction specified by the argument - * argument axis[3]. User may specify vector which is not of unit - * length. The angle of rotation is specified in degrees, and is in the - * right-handed direction. - * - * void rot_about_axis (float angle, --- input - * float axis[3]) --- input - * Same as above routine, except that the matrix is multiplied into the - * GL matrix stack. - * - * -------------------------------------------------------------------- - * - * void urot_axis (float m[4][4], --- returned - * float omega, --- input - * float axis[3]) --- input - * Same as urot_about_axis(), but angle specified in radians. - * It is assumed that the argument axis[3] is a vector of unit length. - * If it is not of unit length, the returned matrix will not be correct. - * - * void rot_axis (float omega, --- input - * float axis[3]) --- input - * Same as above routine, except that the matrix is multiplied into the - * GL matrix stack. - * - * -------------------------------------------------------------------- - * - * void urot_omega (float m[4][4], --- returned - * float omega[3]) --- input - * same as urot_axis(), but the angle is taken as the length of the - * vector omega[3] - * - * void rot_omega (float omega[3]) --- input - * Same as above routine, except that the matrix is multiplied into the - * GL matrix stack. - * - * -------------------------------------------------------------------- - */ - -#include -#include "gutil.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void urot_axis_d (double m[4][4], /* returned */ - double omega, /* input */ - double axis[3]) /* input */ -#else -void urot_axis_f (float m[4][4], /* returned */ - float omega, /* input */ - float axis[3]) /* input */ -#endif -{ - double s, c, ssq, csq, cts; - double tmp; - - /* - * The formula coded up below can be derived by using the - * homomorphism between SU(2) and O(3), namely, that the - * 3x3 rotation matrix R is given by - * t.R.v = S(-1) t.v S - * where - * t are the Pauli matrices (similar to Quaternions, easier to use) - * v is an arbitrary 3-vector - * and S is a 2x2 hermitian matrix: - * S = exp ( i omega t.axis / 2 ) - * - * (Also, remember that computer graphics uses the transpose of R). - * - * The Pauli matrices are: - * - * tx = (0 1) ty = (0 -i) tz = (1 0) - * (1 0) (i 0) (0 -1) - * - * Note that no error checking is done -- if the axis vector is not - * of unit length, you'll get strange results. - */ - - tmp = (double) omega / 2.0; - s = sin (tmp); - c = cos (tmp); - - ssq = s*s; - csq = c*c; - - m[0][0] = m[1][1] = m[2][2] = csq - ssq; - - ssq *= 2.0; - - /* on-diagonal entries */ - m[0][0] += ssq * axis[0]*axis[0]; - m[1][1] += ssq * axis[1]*axis[1]; - m[2][2] += ssq * axis[2]*axis[2]; - - /* off-diagonal entries */ - m[0][1] = m[1][0] = axis[0] * axis[1] * ssq; - m[1][2] = m[2][1] = axis[1] * axis[2] * ssq; - m[2][0] = m[0][2] = axis[2] * axis[0] * ssq; - - cts = 2.0 * c * s; - - tmp = cts * axis[2]; - m[0][1] += tmp; - m[1][0] -= tmp; - - tmp = cts * axis[0]; - m[1][2] += tmp; - m[2][1] -= tmp; - - tmp = cts * axis[1]; - m[2][0] += tmp; - m[0][2] -= tmp; - - /* homogeneous entries */ - m[0][3] = m[1][3] = m[2][3] = m[3][2] = m[3][1] = m[3][0] = 0.0; - m[3][3] = 1.0; - - -} - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void urot_about_axis_d (double m[4][4], /* returned */ - double angle, /* input */ - double axis[3]) /* input */ -#else -void urot_about_axis_f (float m[4][4], /* returned */ - float angle, /* input */ - float axis[3]) /* input */ -#endif -{ - gutDouble len, ax[3]; - - angle *= M_PI/180.0; /* convert to radians */ - - /* renormalize axis vector, if needed */ - len = axis[0]*axis[0] + axis[1]*axis[1] + axis[2]*axis[2]; - - /* we can save some machine instructions by normalizing only - * if needed. The compiler should be able to schedule in the - * if test "for free". */ - if (len != 1.0) { - len = (gutDouble) (1.0 / sqrt ((double) len)); - ax[0] = axis[0] * len; - ax[1] = axis[1] * len; - ax[2] = axis[2] * len; -#ifdef __GUTIL_DOUBLE - urot_axis_d (m, angle, ax); -#else - urot_axis_f (m, angle, ax); -#endif - } else { -#ifdef __GUTIL_DOUBLE - urot_axis_d (m, angle, axis); -#else - urot_axis_f (m, angle, axis); -#endif - } -} - -/* ========================================================== */ - -#ifdef __GUTIL_DOUBLE -void urot_omega_d (double m[4][4], /* returned */ - double axis[3]) /* input */ -#else -void urot_omega_f (float m[4][4], /* returned */ - float axis[3]) /* input */ -#endif -{ - gutDouble len, ax[3]; - - /* normalize axis vector */ - len = axis[0]*axis[0] + axis[1]*axis[1] + axis[2]*axis[2]; - - len = (gutDouble) (1.0 / sqrt ((double) len)); - ax[0] = axis[0] * len; - ax[1] = axis[1] * len; - ax[2] = axis[2] * len; - - /* the amount of rotation is equal to the length, in radians */ -#ifdef __GUTIL_DOUBLE - urot_axis_d (m, len, ax); -#else - urot_axis_f (m, len, ax); -#endif - -} - -/* ======================= END OF FILE ========================== */ diff --git a/lib/glut-3.7.6/lib/gle/view.c b/lib/glut-3.7.6/lib/gle/view.c deleted file mode 100644 index dcc34799f9b16fcd3b53592ff579162e380b4f0b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/view.c +++ /dev/null @@ -1,308 +0,0 @@ - -/* - * MODULE Name: view.c - * - * FUNCTION: - * This module provides two different routines that compute and return - * viewing matrices. Both routines take a direction and an up vector, - * and return a matrix that transforms the direction to the z-axis, and - * the up-vector to the y-axis. - * - * HISTORY: - * written by Linas Vepstas August 1991 - * Added double precision interface, March 1993, Linas - */ - -#include -#include "rot.h" -#include "gutil.h" -#include "vvector.h" - -/* ============================================================ */ -/* - * The uviewdirection subroutine computes and returns a 4x4 rotation - * matrix that puts the negative z axis along the direction v21 and - * puts the y axis along the up vector. - * - * Note that this code is fairly tolerant of "weird" paramters. - * It normalizes when necessary, it does nothing when vectors are of - * zero length, or are co-linear. This code shouldn't croak, no matter - * what the user sends in as arguments. - */ -#ifdef __GUTIL_DOUBLE -void uview_direction_d (double m[4][4], /* returned */ - double v21[3], /* input */ - double up[3]) /* input */ -#else -void uview_direction_f (float m[4][4], /* returned */ - float v21[3], /* input */ - float up[3]) /* input */ -#endif -{ - double amat[4][4]; - double bmat[4][4]; - double cmat[4][4]; - double v_hat_21[3]; - double v_xy[3]; - double sine, cosine; - double len; - double up_proj[3]; - double tmp[3]; - - /* find the unit vector that points in the v21 direction */ - VEC_COPY (v_hat_21, v21); - VEC_LENGTH (len, v_hat_21); - if (len != 0.0) { - len = 1.0 / len; - VEC_SCALE (v_hat_21, len, v_hat_21); - - /* rotate z in the xz-plane until same latitude */ - sine = sqrt ( 1.0 - v_hat_21[2] * v_hat_21[2]); - ROTY_CS (amat, (-v_hat_21[2]), (-sine)); - - } else { - - /* error condition: zero length vecotr passed in -- do nothing */ - IDENTIFY_MATRIX_4X4 (amat); - } - - - /* project v21 onto the xy plane */ - v_xy[0] = v21[0]; - v_xy[1] = v21[1]; - v_xy[2] = 0.0; - VEC_LENGTH (len, v_xy); - - /* rotate in the x-y plane until v21 lies on z axis --- - * but of course, if its already there, do nothing */ - if (len != 0.0) { - - /* want xy projection to be unit vector, so that sines/cosines pop out */ - len = 1.0 / len; - VEC_SCALE (v_xy, len, v_xy); - - /* rotate the projection of v21 in the xy-plane over to the x axis */ - ROTZ_CS (bmat, v_xy[0], v_xy[1]); - - /* concatenate these together */ - MATRIX_PRODUCT_4X4 (cmat, amat, bmat); - - } else { - - /* no-op -- vector is already in correct position */ - COPY_MATRIX_4X4 (cmat, amat); - } - - /* up vector really should be perpendicular to the x-form direction -- - * Use up a couple of cycles, and make sure it is, - * just in case the user blew it. - */ - VEC_PERP (up_proj, up, v_hat_21); - VEC_LENGTH (len, up_proj); - if (len != 0.0) { - - /* normalize the vector */ - len = 1.0/len; - VEC_SCALE (up_proj, len, up_proj); - - /* compare the up-vector to the y-axis to get the cosine of the angle */ - tmp [0] = cmat [1][0]; - tmp [1] = cmat [1][1]; - tmp [2] = cmat [1][2]; - VEC_DOT_PRODUCT (cosine, tmp, up_proj); - - /* compare the up-vector to the x-axis to get the sine of the angle */ - tmp [0] = cmat [0][0]; - tmp [1] = cmat [0][1]; - tmp [2] = cmat [0][2]; - VEC_DOT_PRODUCT (sine, tmp, up_proj); - - /* rotate to align the up vector with the y-axis */ - ROTZ_CS (amat, cosine, -sine); - - /* This xform, although computed last, acts first */ - MATRIX_PRODUCT_4X4 (m, amat, cmat); - - } else { - - /* error condition: up vector is indeterminate (zero length) - * -- do nothing */ - COPY_MATRIX_4X4 (m, cmat); - } -} - -/* ============================================================ */ -#ifdef __STALE_CODE -/* - * The uview_dire subroutine computes and returns a 4x4 rotation - * matrix that puts the negative z axis along the direction v21 and - * puts the y axis along the up vector. - * - * It computes exactly the same matrix as the code above - * (uview_direction), but with an entirely different (and slower) - * algorithm. - * - * Note that the code below is slightly less robust than that above -- - * it may croak if the supplied vectors are of zero length, or are - * parallel to each other ... - */ -void uview_dire (float m[4][4], /* returned */ - float v21[3], /* input */ - float up[3]) /* input */ -{ - double theta; - float v_hat_21 [3]; - float z_hat [3]; - float v_cross_z [3]; - float u[3]; - float y_hat [3]; - float u_cross_y [3]; - double cosine; - float zmat [4][4]; - float upmat[4][4]; - float dot; - - /* perform rotation to z-axis only if not already - * pointing down z */ - if ((v21[0] != 0.0 ) || (v21[1] != 0.0)) { - - /* find the unit vector that points in the v21 direction */ - VEC_COPY (v_hat_21, v21); - VEC_NORMALIZE (v_hat_21); - - /* cosine theta equals v_hat dot z_hat */ - cosine = - v_hat_21 [2]; - theta = - acos (cosine); - - /* Take cros product with z -- we need this, because we will rotate - * about this axis */ - z_hat[0] = 0.0; - z_hat[1] = 0.0; - z_hat[2] = -1.0; - - VEC_CROSS_PRODUCT (v_cross_z, v_hat_21, z_hat); - VEC_NORMALIZE (v_cross_z); - - /* compute rotation matrix that takes -z axis to the v21 axis */ - urot_axis (zmat, (float) theta, v_cross_z); - - } else { - - IDENTIFY_MATRIX_4X4 (zmat); - if (v21[2] > 0.0) { - /* if its pointing down the positive z-axis, flip it, so that - * we point down negative z-axis. We flip x so that the partiy - * isn't destroyed (looks like a rotation) - */ - zmat[0][0] = -1.0; - zmat[2][2] = -1.0; - } - } - - /* --------------------- */ - /* OK, now compute the part that takes the y-axis to the up vector */ - - VEC_COPY (u, up); - /* the rotation blows up, if the up vector is not perpendicular to - * the v21 vector. Let us make sure that this is so. */ - VEC_PERP (u, u, v_hat_21); - - /* need to run the y axis through above x-form, to see where it went */ - y_hat[0] = zmat [1][0]; - y_hat[1] = zmat [1][1]; - y_hat[2] = zmat [1][2]; - - /* perform rotation to up-axis only if not already - * pointing along y axis */ - VEC_DOT_PRODUCT (dot, y_hat, u); - if ((-1.0 < dot) && (dot < 1.0)) { - - /* make sure that up really is a unit vector */ - VEC_NORMALIZE (u); - /* cosine phi equals y_hat dot up_vec */ - VEC_DOT_PRODUCT (cosine, u, y_hat); - theta = - acos (cosine); - - /* Take cross product with y */ - VEC_CROSS_PRODUCT (u_cross_y, u, y_hat); - VEC_NORMALIZE (u_cross_y); - - /* As a matter of fact, u_cross_y points either in the v21 direction, - * or in the minus v21 direction. In either case, we needed to compute - * it, because the the arccosine function returns values only for - * 0 to 180 degree, not 0 to 360, which is what we need. The - * cross-product helps us make up for this. - */ - /* rotate about the NEW z axis (i.e. v21) by the cosine */ - urot_axis (upmat, (float) theta, u_cross_y); - - } else { - - IDENTIFY_MATRIX_4X4 (upmat); - if (dot == -1.0) { - /* if its pointing along the negative y-axis, flip it, so that - * we point along the positive y-axis. We flip x so that the partiy - * isn't destroyed (looks like a rotation) - */ - upmat[0][0] = -1.0; - upmat[1][1] = -1.0; - } - } - - MATRIX_PRODUCT_4X4 (m, zmat, upmat); - -} -#endif /* __STALE_CODE */ - -/* ============================================================ */ -/* - * The uviewpoint subroutine computes and returns a 4x4 matrix that - * translates the origen to the point v1, puts the negative z axis - * along the direction v21==v2-v1, and puts the y axis along the up - * vector. - */ -#ifdef __GUTIL_DOUBLE -void uviewpoint_d (double m[4][4], /* returned */ - double v1[3], /* input */ - double v2[3], /* input */ - double up[3]) /* input */ -#else -void uviewpoint_f (float m[4][4], /* returned */ - float v1[3], /* input */ - float v2[3], /* input */ - float up[3]) /* input */ -#endif -{ -#ifdef __GUTIL_DOUBLE - double v_hat_21 [3]; - double trans_mat[4][4]; - double rot_mat[4][4]; -#else - float v_hat_21 [3]; - float trans_mat[4][4]; - float rot_mat[4][4]; -#endif - - /* find the vector that points in the v21 direction */ - VEC_DIFF (v_hat_21, v2, v1); - - /* compute rotation matrix that takes -z axis to the v21 axis, - * and y to the up dierction */ -#ifdef __GUTIL_DOUBLE - uview_direction_d (rot_mat, v_hat_21, up); -#else - uview_direction_f (rot_mat, v_hat_21, up); -#endif - - /* build matrix that translates the origin to v1 */ - IDENTIFY_MATRIX_4X4 (trans_mat); - trans_mat[3][0] = v1[0]; - trans_mat[3][1] = v1[1]; - trans_mat[3][2] = v1[2]; - - /* concatenate the matrices together */ - MATRIX_PRODUCT_4X4 (m, rot_mat, trans_mat); - -} - -/* ================== END OF FILE ============================ */ diff --git a/lib/glut-3.7.6/lib/gle/vvector.h b/lib/glut-3.7.6/lib/gle/vvector.h deleted file mode 100644 index 266b36e1a4bf19e046606d1c6c63687c1e663060..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/gle/vvector.h +++ /dev/null @@ -1,1339 +0,0 @@ - -/* - * vvector.h - * - * FUNCTION: - * This file contains a number of utilities useful for handling - * 3D vectors - * - * HISTORY: - * Written by Linas Vepstas, August 1991 - * Added 2D code, March 1993 - * Added Outer products, C++ proofed, Linas Vepstas October 1993 - */ - -#ifndef __GUTIL_VECTOR_H__ -#define __GUTIL_VECTOR_H__ - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - - -#include -#include "port.h" - -/* ========================================================== */ -/* Zero out a 2D vector */ - -#define VEC_ZERO_2(a) \ -{ \ - (a)[0] = (a)[1] = 0.0; \ -} - -/* ========================================================== */ -/* Zero out a 3D vector */ - -#define VEC_ZERO(a) \ -{ \ - (a)[0] = (a)[1] = (a)[2] = 0.0; \ -} - -/* ========================================================== */ -/* Zero out a 4D vector */ - -#define VEC_ZERO_4(a) \ -{ \ - (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0; \ -} - -/* ========================================================== */ -/* Vector copy */ - -#define VEC_COPY_2(b,a) \ -{ \ - (b)[0] = (a)[0]; \ - (b)[1] = (a)[1]; \ -} - -/* ========================================================== */ -/* Copy 3D vector */ - -#define VEC_COPY(b,a) \ -{ \ - (b)[0] = (a)[0]; \ - (b)[1] = (a)[1]; \ - (b)[2] = (a)[2]; \ -} - -/* ========================================================== */ -/* Copy 4D vector */ - -#define VEC_COPY_4(b,a) \ -{ \ - (b)[0] = (a)[0]; \ - (b)[1] = (a)[1]; \ - (b)[2] = (a)[2]; \ - (b)[3] = (a)[3]; \ -} - -/* ========================================================== */ -/* Vector difference */ - -#define VEC_DIFF_2(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] - (v1)[0]; \ - (v21)[1] = (v2)[1] - (v1)[1]; \ -} - -/* ========================================================== */ -/* Vector difference */ - -#define VEC_DIFF(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] - (v1)[0]; \ - (v21)[1] = (v2)[1] - (v1)[1]; \ - (v21)[2] = (v2)[2] - (v1)[2]; \ -} - -/* ========================================================== */ -/* Vector difference */ - -#define VEC_DIFF_4(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] - (v1)[0]; \ - (v21)[1] = (v2)[1] - (v1)[1]; \ - (v21)[2] = (v2)[2] - (v1)[2]; \ - (v21)[3] = (v2)[3] - (v1)[3]; \ -} - -/* ========================================================== */ -/* Vector sum */ - -#define VEC_SUM_2(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] + (v1)[0]; \ - (v21)[1] = (v2)[1] + (v1)[1]; \ -} - -/* ========================================================== */ -/* Vector sum */ - -#define VEC_SUM(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] + (v1)[0]; \ - (v21)[1] = (v2)[1] + (v1)[1]; \ - (v21)[2] = (v2)[2] + (v1)[2]; \ -} - -/* ========================================================== */ -/* Vector sum */ - -#define VEC_SUM_4(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] + (v1)[0]; \ - (v21)[1] = (v2)[1] + (v1)[1]; \ - (v21)[2] = (v2)[2] + (v1)[2]; \ - (v21)[3] = (v2)[3] + (v1)[3]; \ -} - -/* ========================================================== */ -/* scalar times vector */ - -#define VEC_SCALE_2(c,a,b) \ -{ \ - (c)[0] = (a)*(b)[0]; \ - (c)[1] = (a)*(b)[1]; \ -} - -/* ========================================================== */ -/* scalar times vector */ - -#define VEC_SCALE(c,a,b) \ -{ \ - (c)[0] = (a)*(b)[0]; \ - (c)[1] = (a)*(b)[1]; \ - (c)[2] = (a)*(b)[2]; \ -} - -/* ========================================================== */ -/* scalar times vector */ - -#define VEC_SCALE_4(c,a,b) \ -{ \ - (c)[0] = (a)*(b)[0]; \ - (c)[1] = (a)*(b)[1]; \ - (c)[2] = (a)*(b)[2]; \ - (c)[3] = (a)*(b)[3]; \ -} - -/* ========================================================== */ -/* accumulate scaled vector */ - -#define VEC_ACCUM_2(c,a,b) \ -{ \ - (c)[0] += (a)*(b)[0]; \ - (c)[1] += (a)*(b)[1]; \ -} - -/* ========================================================== */ -/* accumulate scaled vector */ - -#define VEC_ACCUM(c,a,b) \ -{ \ - (c)[0] += (a)*(b)[0]; \ - (c)[1] += (a)*(b)[1]; \ - (c)[2] += (a)*(b)[2]; \ -} - -/* ========================================================== */ -/* accumulate scaled vector */ - -#define VEC_ACCUM_4(c,a,b) \ -{ \ - (c)[0] += (a)*(b)[0]; \ - (c)[1] += (a)*(b)[1]; \ - (c)[2] += (a)*(b)[2]; \ - (c)[3] += (a)*(b)[3]; \ -} - -/* ========================================================== */ -/* Vector dot product */ - -#define VEC_DOT_PRODUCT_2(c,a,b) \ -{ \ - c = (a)[0]*(b)[0] + (a)[1]*(b)[1]; \ -} - -/* ========================================================== */ -/* Vector dot product */ - -#define VEC_DOT_PRODUCT(c,a,b) \ -{ \ - c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2]; \ -} - -/* ========================================================== */ -/* Vector dot product */ - -#define VEC_DOT_PRODUCT_4(c,a,b) \ -{ \ - c = (a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3] ; \ -} - -/* ========================================================== */ -/* vector impact parameter (squared) */ - -#define VEC_IMPACT_SQ(bsq,direction,position) \ -{ \ - gleDouble len, llel; \ - VEC_DOT_PRODUCT (len, position, position); \ - VEC_DOT_PRODUCT (llel, direction, position); \ - bsq = len - llel*llel; \ -} - -/* ========================================================== */ -/* vector impact parameter */ - -#define VEC_IMPACT(bsq,direction,position) \ -{ \ - VEC_IMPACT_SQ(bsq,direction,position); \ - bsq = sqrt (bsq); \ -} - -/* ========================================================== */ -/* Vector length */ - -#define VEC_LENGTH_2(len,a) \ -{ \ - len = a[0]*a[0] + a[1]*a[1]; \ - len = sqrt (len); \ -} - -/* ========================================================== */ -/* Vector length */ - -#define VEC_LENGTH(len,a) \ -{ \ - len = (a)[0]*(a)[0] + (a)[1]*(a)[1]; \ - len += (a)[2]*(a)[2]; \ - len = sqrt (len); \ -} - -/* ========================================================== */ -/* Vector length */ - -#define VEC_LENGTH_4(len,a) \ -{ \ - len = (a)[0]*(a)[0] + (a)[1]*(a)[1]; \ - len += (a)[2]*(a)[2]; \ - len += (a)[3] * (a)[3]; \ - len = sqrt (len); \ -} - -/* ========================================================== */ -/* distance between two points */ - -#define VEC_DISTANCE(len,va,vb) \ -{ \ - gleDouble tmp[4]; \ - VEC_DIFF (tmp, vb, va); \ - VEC_LENGTH (len, tmp); \ -} - -/* ========================================================== */ -/* Vector length */ - -#define VEC_CONJUGATE_LENGTH(len,a) \ -{ \ - len = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\ - len = sqrt (len); \ -} - -/* ========================================================== */ -/* Vector length */ - -#define VEC_NORMALIZE(a) \ -{ \ - double len; \ - VEC_LENGTH (len,a); \ - if (len != 0.0) { \ - len = 1.0 / len; \ - a[0] *= len; \ - a[1] *= len; \ - a[2] *= len; \ - } \ -} - -/* ========================================================== */ -/* Vector length */ - -#define VEC_RENORMALIZE(a,newlen) \ -{ \ - double len; \ - VEC_LENGTH (len,a); \ - if (len != 0.0) { \ - len = newlen / len; \ - a[0] *= len; \ - a[1] *= len; \ - a[2] *= len; \ - } \ -} - -/* ========================================================== */ -/* 3D Vector cross product yeilding vector */ - -#define VEC_CROSS_PRODUCT(c,a,b) \ -{ \ - c[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1]; \ - c[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2]; \ - c[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0]; \ -} - -/* ========================================================== */ -/* Vector perp -- assumes that n is of unit length - * accepts vector v, subtracts out any component parallel to n */ - -#define VEC_PERP(vp,v,n) \ -{ \ - double dot; \ - \ - VEC_DOT_PRODUCT (dot, v, n); \ - vp[0] = (v)[0] - (dot) * (n)[0]; \ - vp[1] = (v)[1] - (dot) * (n)[1]; \ - vp[2] = (v)[2] - (dot) * (n)[2]; \ -} - -/* ========================================================== */ -/* Vector parallel -- assumes that n is of unit length - * accepts vector v, subtracts out any component perpendicular to n */ - -#define VEC_PARALLEL(vp,v,n) \ -{ \ - double dot; \ - \ - VEC_DOT_PRODUCT (dot, v, n); \ - vp[0] = (dot) * (n)[0]; \ - vp[1] = (dot) * (n)[1]; \ - vp[2] = (dot) * (n)[2]; \ -} - -/* ========================================================== */ -/* Vector reflection -- assumes n is of unit length */ -/* Takes vector v, reflects it against reflector n, and returns vr */ - -#define VEC_REFLECT(vr,v,n) \ -{ \ - double dot; \ - \ - VEC_DOT_PRODUCT (dot, v, n); \ - vr[0] = (v)[0] - 2.0 * (dot) * (n)[0]; \ - vr[1] = (v)[1] - 2.0 * (dot) * (n)[1]; \ - vr[2] = (v)[2] - 2.0 * (dot) * (n)[2]; \ -} - -/* ========================================================== */ -/* Vector blending */ -/* Takes two vectors a, b, blends them together */ - -#define VEC_BLEND(vr,sa,a,sb,b) \ -{ \ - \ - vr[0] = (sa) * (a)[0] + (sb) * (b)[0]; \ - vr[1] = (sa) * (a)[1] + (sb) * (b)[1]; \ - vr[2] = (sa) * (a)[2] + (sb) * (b)[2]; \ -} - -/* ========================================================== */ -/* Vector print */ - -#define VEC_PRINT_2(a) \ -{ \ - double len; \ - VEC_LENGTH_2 (len, a); \ - printf (" a is %f %f length of a is %f \n", a[0], a[1], len); \ -} - -/* ========================================================== */ -/* Vector print */ - -#define VEC_PRINT(a) \ -{ \ - double len; \ - VEC_LENGTH (len, (a)); \ - printf (" a is %f %f %f length of a is %f \n", (a)[0], (a)[1], (a)[2], len); \ -} - -/* ========================================================== */ -/* Vector print */ - -#define VEC_PRINT_4(a) \ -{ \ - double len; \ - VEC_LENGTH_4 (len, (a)); \ - printf (" a is %f %f %f %f length of a is %f \n", \ - (a)[0], (a)[1], (a)[2], (a)[3], len); \ -} - -/* ========================================================== */ -/* print matrix */ - -#define MAT_PRINT_4X4(mmm) { \ - int i,j; \ - printf ("matrix mmm is \n"); \ - if (mmm == NULL) { \ - printf (" Null \n"); \ - } else { \ - for (i=0; i<4; i++) { \ - for (j=0; j<4; j++) { \ - printf ("%f ", mmm[i][j]); \ - } \ - printf (" \n"); \ - } \ - } \ -} - -/* ========================================================== */ -/* print matrix */ - -#define MAT_PRINT_3X3(mmm) { \ - int i,j; \ - printf ("matrix mmm is \n"); \ - if (mmm == NULL) { \ - printf (" Null \n"); \ - } else { \ - for (i=0; i<3; i++) { \ - for (j=0; j<3; j++) { \ - printf ("%f ", mmm[i][j]); \ - } \ - printf (" \n"); \ - } \ - } \ -} - -/* ========================================================== */ -/* print matrix */ - -#define MAT_PRINT_2X3(mmm) { \ - int i,j; \ - printf ("matrix mmm is \n"); \ - if (mmm == NULL) { \ - printf (" Null \n"); \ - } else { \ - for (i=0; i<2; i++) { \ - for (j=0; j<3; j++) { \ - printf ("%f ", mmm[i][j]); \ - } \ - printf (" \n"); \ - } \ - } \ -} - -/* ========================================================== */ -/* initialize matrix */ - -#define IDENTIFY_MATRIX_3X3(m) \ -{ \ - m[0][0] = 1.0; \ - m[0][1] = 0.0; \ - m[0][2] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = 1.0; \ - m[1][2] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = 0.0; \ - m[2][2] = 1.0; \ -} - -/* ========================================================== */ -/* initialize matrix */ - -#define IDENTIFY_MATRIX_4X4(m) \ -{ \ - m[0][0] = 1.0; \ - m[0][1] = 0.0; \ - m[0][2] = 0.0; \ - m[0][3] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = 1.0; \ - m[1][2] = 0.0; \ - m[1][3] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = 0.0; \ - m[2][2] = 1.0; \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -} - -/* ========================================================== */ -/* matrix copy */ - -#define COPY_MATRIX_2X2(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - \ -} - -/* ========================================================== */ -/* matrix copy */ - -#define COPY_MATRIX_2X3(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - b[0][2] = a[0][2]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[1][2]; \ -} - -/* ========================================================== */ -/* matrix copy */ - -#define COPY_MATRIX_3X3(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - b[0][2] = a[0][2]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[1][2]; \ - \ - b[2][0] = a[2][0]; \ - b[2][1] = a[2][1]; \ - b[2][2] = a[2][2]; \ -} - -/* ========================================================== */ -/* matrix copy */ - -#define COPY_MATRIX_4X4(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - b[0][2] = a[0][2]; \ - b[0][3] = a[0][3]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[1][2]; \ - b[1][3] = a[1][3]; \ - \ - b[2][0] = a[2][0]; \ - b[2][1] = a[2][1]; \ - b[2][2] = a[2][2]; \ - b[2][3] = a[2][3]; \ - \ - b[3][0] = a[3][0]; \ - b[3][1] = a[3][1]; \ - b[3][2] = a[3][2]; \ - b[3][3] = a[3][3]; \ -} - -/* ========================================================== */ -/* matrix transpose */ - -#define TRANSPOSE_MATRIX_2X2(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[1][0]; \ - \ - b[1][0] = a[0][1]; \ - b[1][1] = a[1][1]; \ -} - -/* ========================================================== */ -/* matrix transpose */ - -#define TRANSPOSE_MATRIX_3X3(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[1][0]; \ - b[0][2] = a[2][0]; \ - \ - b[1][0] = a[0][1]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[2][1]; \ - \ - b[2][0] = a[0][2]; \ - b[2][1] = a[1][2]; \ - b[2][2] = a[2][2]; \ -} - -/* ========================================================== */ -/* matrix transpose */ - -#define TRANSPOSE_MATRIX_4X4(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[1][0]; \ - b[0][2] = a[2][0]; \ - b[0][3] = a[3][0]; \ - \ - b[1][0] = a[0][1]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[2][1]; \ - b[1][3] = a[3][1]; \ - \ - b[2][0] = a[0][2]; \ - b[2][1] = a[1][2]; \ - b[2][2] = a[2][2]; \ - b[2][3] = a[3][2]; \ - \ - b[3][0] = a[0][3]; \ - b[3][1] = a[1][3]; \ - b[3][2] = a[2][3]; \ - b[3][3] = a[3][3]; \ -} - -/* ========================================================== */ -/* multiply matrix by scalar */ - -#define SCALE_MATRIX_2X2(b,s,a) \ -{ \ - b[0][0] = (s) * a[0][0]; \ - b[0][1] = (s) * a[0][1]; \ - \ - b[1][0] = (s) * a[1][0]; \ - b[1][1] = (s) * a[1][1]; \ -} - -/* ========================================================== */ -/* multiply matrix by scalar */ - -#define SCALE_MATRIX_3X3(b,s,a) \ -{ \ - b[0][0] = (s) * a[0][0]; \ - b[0][1] = (s) * a[0][1]; \ - b[0][2] = (s) * a[0][2]; \ - \ - b[1][0] = (s) * a[1][0]; \ - b[1][1] = (s) * a[1][1]; \ - b[1][2] = (s) * a[1][2]; \ - \ - b[2][0] = (s) * a[2][0]; \ - b[2][1] = (s) * a[2][1]; \ - b[2][2] = (s) * a[2][2]; \ -} - -/* ========================================================== */ -/* multiply matrix by scalar */ - -#define SCALE_MATRIX_4X4(b,s,a) \ -{ \ - b[0][0] = (s) * a[0][0]; \ - b[0][1] = (s) * a[0][1]; \ - b[0][2] = (s) * a[0][2]; \ - b[0][3] = (s) * a[0][3]; \ - \ - b[1][0] = (s) * a[1][0]; \ - b[1][1] = (s) * a[1][1]; \ - b[1][2] = (s) * a[1][2]; \ - b[1][3] = (s) * a[1][3]; \ - \ - b[2][0] = (s) * a[2][0]; \ - b[2][1] = (s) * a[2][1]; \ - b[2][2] = (s) * a[2][2]; \ - b[2][3] = (s) * a[2][3]; \ - \ - b[3][0] = s * a[3][0]; \ - b[3][1] = s * a[3][1]; \ - b[3][2] = s * a[3][2]; \ - b[3][3] = s * a[3][3]; \ -} - -/* ========================================================== */ -/* multiply matrix by scalar */ - -#define ACCUM_SCALE_MATRIX_2X2(b,s,a) \ -{ \ - b[0][0] += (s) * a[0][0]; \ - b[0][1] += (s) * a[0][1]; \ - \ - b[1][0] += (s) * a[1][0]; \ - b[1][1] += (s) * a[1][1]; \ -} - -/* +========================================================== */ -/* multiply matrix by scalar */ - -#define ACCUM_SCALE_MATRIX_3X3(b,s,a) \ -{ \ - b[0][0] += (s) * a[0][0]; \ - b[0][1] += (s) * a[0][1]; \ - b[0][2] += (s) * a[0][2]; \ - \ - b[1][0] += (s) * a[1][0]; \ - b[1][1] += (s) * a[1][1]; \ - b[1][2] += (s) * a[1][2]; \ - \ - b[2][0] += (s) * a[2][0]; \ - b[2][1] += (s) * a[2][1]; \ - b[2][2] += (s) * a[2][2]; \ -} - -/* +========================================================== */ -/* multiply matrix by scalar */ - -#define ACCUM_SCALE_MATRIX_4X4(b,s,a) \ -{ \ - b[0][0] += (s) * a[0][0]; \ - b[0][1] += (s) * a[0][1]; \ - b[0][2] += (s) * a[0][2]; \ - b[0][3] += (s) * a[0][3]; \ - \ - b[1][0] += (s) * a[1][0]; \ - b[1][1] += (s) * a[1][1]; \ - b[1][2] += (s) * a[1][2]; \ - b[1][3] += (s) * a[1][3]; \ - \ - b[2][0] += (s) * a[2][0]; \ - b[2][1] += (s) * a[2][1]; \ - b[2][2] += (s) * a[2][2]; \ - b[2][3] += (s) * a[2][3]; \ - \ - b[3][0] += (s) * a[3][0]; \ - b[3][1] += (s) * a[3][1]; \ - b[3][2] += (s) * a[3][2]; \ - b[3][3] += (s) * a[3][3]; \ -} - -/* +========================================================== */ -/* matrix product */ -/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ - -#define MATRIX_PRODUCT_2X2(c,a,b) \ -{ \ - c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]; \ - c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]; \ - \ - c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]; \ - c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]; \ - \ -} - -/* ========================================================== */ -/* matrix product */ -/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ - -#define MATRIX_PRODUCT_3X3(c,a,b) \ -{ \ - c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]; \ - c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]; \ - c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]; \ - \ - c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]; \ - c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]; \ - c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]; \ - \ - c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]; \ - c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]; \ - c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]; \ -} - -/* ========================================================== */ -/* matrix product */ -/* c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ - -#define MATRIX_PRODUCT_4X4(c,a,b) \ -{ \ - c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\ - c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\ - c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\ - c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\ - \ - c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\ - c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\ - c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\ - c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\ - \ - c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\ - c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\ - c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\ - c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\ - \ - c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\ - c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\ - c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\ - c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\ -} - -/* ========================================================== */ -/* matrix times vector */ - -#define MAT_DOT_VEC_2X2(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1]; \ -} - -/* ========================================================== */ -/* matrix times vector */ - -#define MAT_DOT_VEC_3X3(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2]; \ - p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2]; \ -} - -/* ========================================================== */ -/* matrix times vector */ - -#define MAT_DOT_VEC_4X4(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3]; \ - p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3]; \ - p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3]; \ -} - -/* ========================================================== */ -/* vector transpose times matrix */ -/* p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */ - -#define VEC_DOT_MAT_3X3(p,v,m) \ -{ \ - p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0]; \ - p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1]; \ - p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2]; \ -} - -/* ========================================================== */ -/* affine matrix times vector */ -/* The matrix is assumed to be an affine matrix, with last two - * entries representing a translation */ - -#define MAT_DOT_VEC_2X3(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]; \ -} - -/* ========================================================== */ -/* inverse transpose of matrix times vector - * - * This macro computes inverse transpose of matrix m, - * and multiplies vector v into it, to yeild vector p - * - * DANGER !!! Do Not use this on normal vectors!!! - * It will leave normals the wrong length !!! - * See macro below for use on normals. - */ - -#define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v) \ -{ \ - gleDouble det; \ - \ - det = m[0][0]*m[1][1] - m[0][1]*m[1][0]; \ - p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \ - p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \ - \ - /* if matrix not singular, and not orthonormal, then renormalize */ \ - if ((det!=1.0) && (det != 0.0)) { \ - det = 1.0 / det; \ - p[0] *= det; \ - p[1] *= det; \ - } \ -} - -/* ========================================================== */ -/* transform normal vector by inverse transpose of matrix - * and then renormalize the vector - * - * This macro computes inverse transpose of matrix m, - * and multiplies vector v into it, to yeild vector p - * Vector p is then normalized. - */ - - -#define NORM_XFORM_2X2(p,m,v) \ -{ \ - double len; \ - \ - /* do nothing if off-diagonals are zero and diagonals are \ - * equal */ \ - if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \ - p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \ - p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \ - \ - len = p[0]*p[0] + p[1]*p[1]; \ - len = 1.0 / sqrt (len); \ - p[0] *= len; \ - p[1] *= len; \ - } else { \ - VEC_COPY_2 (p, v); \ - } \ -} - -/* ========================================================== */ -/* outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ - -#define OUTER_PRODUCT_2X2(m,v,t) \ -{ \ - m[0][0] = v[0] * t[0]; \ - m[0][1] = v[0] * t[1]; \ - \ - m[1][0] = v[1] * t[0]; \ - m[1][1] = v[1] * t[1]; \ -} - -/* ========================================================== */ -/* outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ - -#define OUTER_PRODUCT_3X3(m,v,t) \ -{ \ - m[0][0] = v[0] * t[0]; \ - m[0][1] = v[0] * t[1]; \ - m[0][2] = v[0] * t[2]; \ - \ - m[1][0] = v[1] * t[0]; \ - m[1][1] = v[1] * t[1]; \ - m[1][2] = v[1] * t[2]; \ - \ - m[2][0] = v[2] * t[0]; \ - m[2][1] = v[2] * t[1]; \ - m[2][2] = v[2] * t[2]; \ -} - -/* ========================================================== */ -/* outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ - -#define OUTER_PRODUCT_4X4(m,v,t) \ -{ \ - m[0][0] = v[0] * t[0]; \ - m[0][1] = v[0] * t[1]; \ - m[0][2] = v[0] * t[2]; \ - m[0][3] = v[0] * t[3]; \ - \ - m[1][0] = v[1] * t[0]; \ - m[1][1] = v[1] * t[1]; \ - m[1][2] = v[1] * t[2]; \ - m[1][3] = v[1] * t[3]; \ - \ - m[2][0] = v[2] * t[0]; \ - m[2][1] = v[2] * t[1]; \ - m[2][2] = v[2] * t[2]; \ - m[2][3] = v[2] * t[3]; \ - \ - m[3][0] = v[3] * t[0]; \ - m[3][1] = v[3] * t[1]; \ - m[3][2] = v[3] * t[2]; \ - m[3][3] = v[3] * t[3]; \ -} - -/* +========================================================== */ -/* outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ - -#define ACCUM_OUTER_PRODUCT_2X2(m,v,t) \ -{ \ - m[0][0] += v[0] * t[0]; \ - m[0][1] += v[0] * t[1]; \ - \ - m[1][0] += v[1] * t[0]; \ - m[1][1] += v[1] * t[1]; \ -} - -/* +========================================================== */ -/* outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ - -#define ACCUM_OUTER_PRODUCT_3X3(m,v,t) \ -{ \ - m[0][0] += v[0] * t[0]; \ - m[0][1] += v[0] * t[1]; \ - m[0][2] += v[0] * t[2]; \ - \ - m[1][0] += v[1] * t[0]; \ - m[1][1] += v[1] * t[1]; \ - m[1][2] += v[1] * t[2]; \ - \ - m[2][0] += v[2] * t[0]; \ - m[2][1] += v[2] * t[1]; \ - m[2][2] += v[2] * t[2]; \ -} - -/* +========================================================== */ -/* outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ - -#define ACCUM_OUTER_PRODUCT_4X4(m,v,t) \ -{ \ - m[0][0] += v[0] * t[0]; \ - m[0][1] += v[0] * t[1]; \ - m[0][2] += v[0] * t[2]; \ - m[0][3] += v[0] * t[3]; \ - \ - m[1][0] += v[1] * t[0]; \ - m[1][1] += v[1] * t[1]; \ - m[1][2] += v[1] * t[2]; \ - m[1][3] += v[1] * t[3]; \ - \ - m[2][0] += v[2] * t[0]; \ - m[2][1] += v[2] * t[1]; \ - m[2][2] += v[2] * t[2]; \ - m[2][3] += v[2] * t[3]; \ - \ - m[3][0] += v[3] * t[0]; \ - m[3][1] += v[3] * t[1]; \ - m[3][2] += v[3] * t[2]; \ - m[3][3] += v[3] * t[3]; \ -} - -/* +========================================================== */ -/* determinant of matrix - * - * Computes determinant of matrix m, returning d - */ - -#define DETERMINANT_2X2(d,m) \ -{ \ - d = m[0][0] * m[1][1] - m[0][1] * m[1][0]; \ -} - -/* ========================================================== */ -/* determinant of matrix - * - * Computes determinant of matrix m, returning d - */ - -#define DETERMINANT_3X3(d,m) \ -{ \ - d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]); \ - d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]); \ - d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]); \ -} - -/* ========================================================== */ -/* i,j,th cofactor of a 4x4 matrix - * - */ - -#define COFACTOR_4X4_IJ(fac,m,i,j) \ -{ \ - int ii[4], jj[4], k; \ - \ - /* compute which row, columnt to skip */ \ - for (k=0; k - -#include "../../Glut.cf" - -SRCS = smap_buildsmap.c smap_context.c smap_create.c smap_destroy.c \ - smap_drawmesh.c smap_flag.c smap_get.c smap_getfunc.c smap_gettexdim.c \ - smap_gettexobj.c smap_getvec.c smap_makemesh.c smap_nearfar.c \ - smap_origin.c smap_render.c smap_rvec2st.c smap_set.c smap_setfunc.c \ - smap_setvec.c smap_texdim.c smap_texobj.c - -OBJS = smap_buildsmap.o smap_context.o smap_create.o smap_destroy.o \ - smap_drawmesh.o smap_flag.o smap_get.o smap_getfunc.o smap_gettexdim.o \ - smap_gettexobj.o smap_getvec.o smap_makemesh.o smap_nearfar.o \ - smap_origin.o smap_render.o smap_rvec2st.o smap_set.o smap_setfunc.o \ - smap_setvec.o smap_texdim.o smap_texobj.o - -#ifdef LibraryObjectRule -LibraryObjectRule() -#else -/* XXX Very lame, you must be using pre-R5 config files! This - will probably do essentially what LibraryObjectRule does. */ -NormalLibraryObjectRule() -#endif - -NormalLibraryTarget(glsmap,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/lib/glsmap/ObjectType.mk b/lib/glut-3.7.6/lib/glsmap/ObjectType.mk deleted file mode 100644 index f94dc77f5ffbe482ca1434d44eb74d83595a8ffc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_32) -CSTYLE = $(CSTYLE_32) diff --git a/lib/glut-3.7.6/lib/glsmap/glsmap.dsp b/lib/glut-3.7.6/lib/glsmap/glsmap.dsp deleted file mode 100644 index 7b6e9b2924c82e32409faaa4479dd8b44e0b8db2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/glsmap.dsp +++ /dev/null @@ -1,172 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glsmap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=glsmap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glsmap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glsmap.mak" CFG="glsmap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glsmap - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "glsmap - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glsmap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "glsmap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "glsmap - Win32 Release" -# Name "glsmap - Win32 Debug" -# Begin Source File - -SOURCE=.\glsmapint.h -# End Source File -# Begin Source File - -SOURCE=.\smap_buildsmap.c -# End Source File -# Begin Source File - -SOURCE=.\smap_context.c -# End Source File -# Begin Source File - -SOURCE=.\smap_create.c -# End Source File -# Begin Source File - -SOURCE=.\smap_destroy.c -# End Source File -# Begin Source File - -SOURCE=.\smap_drawmesh.c -# End Source File -# Begin Source File - -SOURCE=.\smap_flag.c -# End Source File -# Begin Source File - -SOURCE=.\smap_get.c -# End Source File -# Begin Source File - -SOURCE=.\smap_getfunc.c -# End Source File -# Begin Source File - -SOURCE=.\smap_gettexdim.c -# End Source File -# Begin Source File - -SOURCE=.\smap_gettexobj.c -# End Source File -# Begin Source File - -SOURCE=.\smap_getvec.c -# End Source File -# Begin Source File - -SOURCE=.\smap_makemesh.c -# End Source File -# Begin Source File - -SOURCE=.\smap_nearfar.c -# End Source File -# Begin Source File - -SOURCE=.\smap_origin.c -# End Source File -# Begin Source File - -SOURCE=.\smap_render.c -# End Source File -# Begin Source File - -SOURCE=.\smap_rvec2st.c -# End Source File -# Begin Source File - -SOURCE=.\smap_set.c -# End Source File -# Begin Source File - -SOURCE=.\smap_setfunc.c -# End Source File -# Begin Source File - -SOURCE=.\smap_setvec.c -# End Source File -# Begin Source File - -SOURCE=.\smap_texdim.c -# End Source File -# Begin Source File - -SOURCE=.\smap_texobj.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/lib/glsmap/glsmapint.h b/lib/glut-3.7.6/lib/glsmap/glsmapint.h deleted file mode 100644 index f91baea32b7d6fe891f693f64299ce5e92b97a24..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/glsmapint.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef __glsmapint_h__ -#define __glsmapint_h__ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -enum { X = 0, Y = 1, Z = 2 }; - -#define INITFACE(mesh) \ - int steps = mesh->steps; \ - int sqsteps = mesh->steps * mesh->steps - -#define FACE(side,y,x) \ - mesh->face[(side)*sqsteps + (y)*steps + (x)] - -#define FACExy(side,i,j) \ - (&FACE(side,i,j).x) - -#define FACEst(side,i,j) \ - (&FACE(side,i,j).s) - -#define INITBACK(mesh) \ - int allrings = mesh->rings + mesh->edgeExtend; \ - int ringedspokes = allrings * mesh->steps - -#define BACK(edge,ring,spoke) \ - mesh->back[(edge)*ringedspokes + (ring)*mesh->steps + (spoke)] - -#define BACKxy(edge,ring,spoke) \ - (&BACK(edge,ring,spoke).x) - -#define BACKst(edge,ring,spoke) \ - (&BACK(edge,ring,spoke).s) - -typedef struct _STXY { - GLfloat s, t; - GLfloat x, y; -} STXY; - -typedef struct _SphereMapMesh { - - int refcnt; - - int steps; - int rings; - int edgeExtend; - - STXY *face; - STXY *back; - -} SphereMapMesh; - -struct _SphereMap { - - /* Shared sphere map mesh vertex data. */ - SphereMapMesh *mesh; - - /* Texture object ids. */ - GLuint smapTexObj; - GLuint viewTexObjs[6]; - GLuint viewTexObj; - - /* Flags */ - SphereMapFlags flags; - - /* Texture dimensions must be a power of two. */ - int viewTexDim; /* view texture dimension */ - int smapTexDim; /* sphere map texture dimension */ - - /* Viewport origins for view and sphere map rendering. */ - int viewOrigin[2]; - int smapOrigin[2]; - - /* Viewing vectors. */ - GLfloat eye[3]; - GLfloat up[3]; - GLfloat obj[3]; - - /* Projection parameters. */ - GLfloat viewNear; - GLfloat viewFar; - - /* Rendering callbacks. */ - void (*positionLights)(int view, void *context); - void (*drawView)(int view, void *context); - - /* Application specified callback data. */ - void *context; - -}; - -/* Library internal routines. */ -extern void __smapDrawSphereMapMeshSide(SphereMapMesh *mesh, int side); -extern void __smapDrawSphereMapMeshBack(SphereMapMesh *mesh); -extern void __smapValidateSphereMapMesh(SphereMapMesh *mesh); - -#endif /* __glsmapint_h__ */ diff --git a/lib/glut-3.7.6/lib/glsmap/smap_buildsmap.c b/lib/glut-3.7.6/lib/glsmap/smap_buildsmap.c deleted file mode 100644 index 53fa0e6cb0dfe3b72ba4f0deb4551cd09d36003a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_buildsmap.c +++ /dev/null @@ -1,227 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* smap_buildsmap.c - automatically builds sphere map */ - -#include -#include -#include -#include - -#include "glsmapint.h" - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif -#if defined(GL_EXT_copy_texture) && !defined(GL_VERSION_1_1) -#define glCopyTexImage2D(A, B, C, D, E, F, G, H) glCopyTexImage2DEXT(A, B, C, D, E, F, G, H) -#endif - -static void -copyImageToTexture(SphereMap *smap, - GLuint texobj, int origin[2], int texdim) -{ - int isSmapTexObj = (texobj == smap->smapTexObj) ? 1 : 0; - int genMipmapsFlag = - isSmapTexObj ? SMAP_GENERATE_SMAP_MIPMAPS : SMAP_GENERATE_VIEW_MIPMAPS; - static GLubyte pixels[256][256][3]; /* XXX fix me. */ - - glBindTexture(GL_TEXTURE_2D, texobj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, - GL_LINEAR); - if (smap->flags & genMipmapsFlag) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - } else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR); - } - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - /* Clamp to avoid artifacts from wrap around in texture. */ - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - if (smap->flags & genMipmapsFlag) { - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glReadPixels(origin[X], origin[Y], texdim, texdim, - GL_RGB, GL_UNSIGNED_BYTE, pixels); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, texdim, texdim, - GL_RGB, GL_UNSIGNED_BYTE, pixels); - } else { - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, - origin[X], origin[Y], texdim, texdim, 0); - } -} - -static struct { - GLfloat angle; - GLfloat x, y, z; -} faceInfo[6] = { - { 0.0, +1.0, 0.0, 0.0 }, /* front */ - { 90.0, -1.0, 0.0, 0.0 }, /* top */ - { 90.0, +1.0, 0.0, 0.0 }, /* bottom */ - { 90.0, 0.0, -1.0, 0.0 }, /* left */ - { 90.0, 0.0, +1.0, 0.0 }, /* right */ - { 180.0, -1.0, 0.0, 0.0 } /* back */ -}; - -static void -configFace(SphereMap *smap, int view) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glRotatef(faceInfo[view].angle, - faceInfo[view].x, faceInfo[view].y, faceInfo[view].z); - gluLookAt(smap->obj[X], smap->obj[Y], smap->obj[Z], /* "eye" at object */ - smap->eye[X], smap->eye[Y], smap->eye[Z], /* looking at eye */ - smap->up[X], smap->up[Y], smap->up[Z]); -} - -static void -initGenViewTex(SphereMap *smap) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90.0, 1.0, smap->viewNear, smap->viewFar); - glViewport(smap->viewOrigin[X], smap->viewOrigin[Y], - smap->viewTexDim, smap->viewTexDim); - glScissor(0, 0, smap->viewTexDim, smap->viewTexDim); - glEnable(GL_SCISSOR_TEST); - glEnable(GL_DEPTH_TEST); -} - -static void -genViewTex(SphereMap *smap, int view) -{ - configFace(smap, view); - assert(smap->positionLights); - smap->positionLights(view, smap->context); - assert(smap->drawView); - smap->drawView(view, smap->context); -} - -void -smapGenViewTex(SphereMap *smap, int view) -{ - initGenViewTex(smap); - genViewTex(smap, view); - copyImageToTexture(smap, smap->viewTexObjs[view], - smap->viewOrigin, smap->viewTexDim); -} - -void -smapGenViewTexs(SphereMap *smap) -{ - int view; - - initGenViewTex(smap); - - for (view=0; view<6; view++) { - genViewTex(smap, view); - copyImageToTexture(smap, smap->viewTexObjs[view], - smap->viewOrigin, smap->viewTexDim); - } -} - -void -drawSphereMapMesh(SphereMap *smap) -{ - int side; - - /* Calculate sphere map mesh if needed. */ - __smapValidateSphereMapMesh(smap->mesh); - - /* Five front and side faces. */ - for (side=0; side<5; side++) { - /* Bind to texture for given face of cube map. */ - glBindTexture(GL_TEXTURE_2D, smap->viewTexObjs[side]); - __smapDrawSphereMapMeshSide(smap->mesh, side); - } - - /* Bind to texture for back face of cube map. */ - glBindTexture(GL_TEXTURE_2D, smap->viewTexObjs[side]); - __smapDrawSphereMapMeshBack(smap->mesh); -} - -void -initDrawSphereMapMesh(SphereMap *smap) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 1, 0, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glViewport(smap->smapOrigin[X], smap->smapOrigin[Y], - smap->smapTexDim, smap->smapTexDim); - - if (smap->flags & SMAP_CLEAR_SMAP_TEXTURE) { - glClear(GL_COLOR_BUFFER_BIT); - } - - glDisable(GL_DEPTH_TEST); - glEnable(GL_TEXTURE_2D); - glDisable(GL_CULL_FACE); -} - -void -smapGenSphereMapFromViewTexs(SphereMap *smap) -{ - initDrawSphereMapMesh(smap); - drawSphereMapMesh(smap); - - copyImageToTexture(smap, smap->smapTexObj, - smap->smapOrigin, smap->smapTexDim); -} - -void -smapGenSphereMap(SphereMap *smap) -{ - smapGenViewTexs(smap); - smapGenSphereMapFromViewTexs(smap); -} - -void -smapGenSphereMapWithOneViewTex(SphereMap *smap) -{ - int side; - - /* Make sure viewports are not obviously overlapping. */ - assert(smap->viewOrigin[X] != smap->smapOrigin[X]); - assert(smap->viewOrigin[Y] != smap->smapOrigin[Y]); - - /* Calculate sphere map mesh if needed. */ - __smapValidateSphereMapMesh(smap->mesh); - - /* Five front and side faces. */ - for (side=0; side<5; side++) { - initGenViewTex(smap); - genViewTex(smap, side); - copyImageToTexture(smap, smap->viewTexObj, - smap->viewOrigin, smap->viewTexDim); - - /* Preceeding copyImageToTexture does bind to smap->viewTexObj */ - - initDrawSphereMapMesh(smap); - __smapDrawSphereMapMeshSide(smap->mesh, side); - } - - initGenViewTex(smap); - genViewTex(smap, SMAP_BACK); - copyImageToTexture(smap, smap->viewTexObj, - smap->viewOrigin, smap->viewTexDim); - - /* Preceeding copyImageToTexture does bind to smap->viewTexObj */ - - initDrawSphereMapMesh(smap); - __smapDrawSphereMapMeshBack(smap->mesh); - - copyImageToTexture(smap, smap->smapTexObj, - smap->smapOrigin, smap->smapTexDim); -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_context.c b/lib/glut-3.7.6/lib/glsmap/smap_context.c deleted file mode 100644 index 6557b0bb018c1a7f557d80a8bbe61c6d0ca8647b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_context.c +++ /dev/null @@ -1,20 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapSetContextData(SphereMap *smap, void *context) -{ - smap->context = context; -} - -void -smapGetContextData(SphereMap *smap, void **context) -{ - *context = smap->context; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_create.c b/lib/glut-3.7.6/lib/glsmap/smap_create.c deleted file mode 100644 index 47eba82cddcb0492998785dd21b11e5631de8a02..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_create.c +++ /dev/null @@ -1,98 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -#include "glsmapint.h" - -static SphereMapMesh * -createSphereMapMesh(void) -{ - SphereMapMesh *mesh; - - mesh = (SphereMapMesh*) malloc(sizeof(SphereMapMesh)); - - mesh->steps = 8; - mesh->rings = 3; - mesh->edgeExtend = 1; - - mesh->face = NULL; - mesh->back = NULL; - - mesh->refcnt = 0; - - return mesh; -} - -static void -refSphereMapMesh(SphereMapMesh *mesh) -{ - mesh->refcnt++; -} - -SphereMap * -smapCreateSphereMap(SphereMap *shareSmap) -{ - SphereMap *smap; - int i; - - smap = (SphereMap*) malloc(sizeof(SphereMap)); - - if (shareSmap) { - smap->mesh = shareSmap->mesh; - } else { - smap->mesh = createSphereMapMesh(); - } - refSphereMapMesh(smap->mesh); - - /* Default texture objects. */ - smap->smapTexObj = 1001; - for (i=0; i<6; i++) { - smap->viewTexObjs[i] = i+1002; - } - smap->viewTexObj = 1008; - - /* Default texture dimensions 64x64 */ - smap->viewTexDim = 64; - smap->smapTexDim = 64; - - /* Default origin at lower left. */ - smap->viewOrigin[X] = 0; - smap->viewOrigin[Y] = 0; - smap->smapOrigin[X] = 0; - smap->smapOrigin[Y] = 0; - - /* Flags. */ - smap->flags = (SphereMapFlags) 0; - - /* Default eye vector. */ - smap->eye[X] = 0.0; - smap->eye[Y] = 0.0; - smap->eye[Z] = -10.0; - - /* Default up vector. */ - smap->up[X] = 0.0; - smap->up[Y] = 0.1; - smap->up[Z] = 0.0; - - /* Default object location vector. */ - smap->obj[X] = 0.0; - smap->obj[Y] = 0.0; - smap->obj[Z] = 0.0; - - /* Default near and far clip planes. */ - smap->viewNear = 0.1; - smap->viewFar = 20.0; - - smap->positionLights = NULL; - smap->drawView = NULL; - - smap->context = NULL; - - return smap; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_destroy.c b/lib/glut-3.7.6/lib/glsmap/smap_destroy.c deleted file mode 100644 index a90fa7b274e9f6c58a549c31f78375d945bb51d6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_destroy.c +++ /dev/null @@ -1,34 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include /* SunOS multithreaded assert() needs . Lame. */ -#include -#include - -#include "glsmapint.h" - -static void -derefSphereMapMesh(SphereMapMesh *mesh) -{ - assert(mesh->refcnt > 0); - mesh->refcnt--; - if (mesh->refcnt == 0) { - if (mesh->face) { - assert(mesh->back == - &(mesh->face[5*mesh->steps*mesh->steps])); - free(mesh->face); - } - free(mesh); - } -} - -void -smapDestroySphereMap(SphereMap *smap) -{ - derefSphereMapMesh(smap->mesh); - free(smap); -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_drawmesh.c b/lib/glut-3.7.6/lib/glsmap/smap_drawmesh.c deleted file mode 100644 index ed526c377f2abe605fc57fb8a579326952ff5310..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_drawmesh.c +++ /dev/null @@ -1,50 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -#include "glsmapint.h" - -void -__smapDrawSphereMapMeshSide(SphereMapMesh *mesh, int side) -{ - INITFACE(mesh); - int i, j; - - for (i=0; isteps-1; i++) { - glBegin(GL_QUAD_STRIP); - for (j=0; jsteps; j++) { - glTexCoord2fv (FACEst(side,i,j)); - glVertex2fv (FACExy(side,i,j)); - glTexCoord2fv (FACEst(side,i+1,j)); - glVertex2fv (FACExy(side,i+1,j)); - } - glEnd(); - } -} - -/* Back face specially rendered for its singularity! */ -void -__smapDrawSphereMapMeshBack(SphereMapMesh *mesh) -{ - INITBACK(mesh); - int side, i, j; - - for (side=0; side<4; side++) { - for (j=0; jrings-1+mesh->edgeExtend; j++) { - glBegin(GL_QUAD_STRIP); - for (i=0; isteps; i++) { - glTexCoord2fv (BACKst(side,j,i)); - glVertex2fv (BACKxy(side,j,i)); - glTexCoord2fv (BACKst(side,j+1,i)); - glVertex2fv (BACKxy(side,j+1,i)); - } - glEnd(); - } - } -} - diff --git a/lib/glut-3.7.6/lib/glsmap/smap_flag.c b/lib/glut-3.7.6/lib/glsmap/smap_flag.c deleted file mode 100644 index 11278b351dafabdeebdfcf697aa0c7dda731a69c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_flag.c +++ /dev/null @@ -1,20 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapSetFlags(SphereMap *smap, SphereMapFlags flags) -{ - smap->flags = flags; -} - -void -smapGetFlags(SphereMap *smap, SphereMapFlags *flags) -{ - *flags = smap->flags; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_get.c b/lib/glut-3.7.6/lib/glsmap/smap_get.c deleted file mode 100644 index d43155581edce01a2a08ec1e46e2cbd0cfb6c8f7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_get.c +++ /dev/null @@ -1,32 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void smapGetEye(SphereMap *smap, - GLfloat *eyex, GLfloat *eyey, GLfloat *eyez) -{ - *eyex = smap->eye[X]; - *eyey = smap->eye[Y]; - *eyez = smap->eye[Z]; -} - -void smapGetUp(SphereMap *smap, - GLfloat *upx, GLfloat *upy, GLfloat *upz) -{ - *upx = smap->up[X]; - *upy = smap->up[Y]; - *upz = smap->up[Z]; -} - -void smapGetObject(SphereMap *smap, - GLfloat *objx, GLfloat *objy, GLfloat *objz) -{ - *objx = smap->obj[X]; - *objy = smap->obj[Y]; - *objz = smap->obj[Z]; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_getfunc.c b/lib/glut-3.7.6/lib/glsmap/smap_getfunc.c deleted file mode 100644 index 9732addfd640a7ba23fdfc05addea4fdefd694ef..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_getfunc.c +++ /dev/null @@ -1,20 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void smapGetPositionLightsFunc(SphereMap *smap, - void (**positionLights)(int view, void *context)) -{ - *positionLights = smap->positionLights; -} - -void smapGetDrawViewFunc(SphereMap *smap, - void (**drawView)(int view, void *context)) -{ - *drawView = smap->drawView; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_gettexdim.c b/lib/glut-3.7.6/lib/glsmap/smap_gettexdim.c deleted file mode 100644 index ef3d243572099a9386563c0eefaba69bb6dd1bc7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_gettexdim.c +++ /dev/null @@ -1,21 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapGetSphereMapTexDim(SphereMap *smap, GLsizei *texdim) -{ - *texdim = smap->smapTexDim; -} - -void -smapGetViewTexDim(SphereMap *smap, GLsizei *texdim) -{ - *texdim = smap->viewTexDim; -} - diff --git a/lib/glut-3.7.6/lib/glsmap/smap_gettexobj.c b/lib/glut-3.7.6/lib/glsmap/smap_gettexobj.c deleted file mode 100644 index eba9b64b0e6c632a9a86d8eb2179512e71f1f177..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_gettexobj.c +++ /dev/null @@ -1,31 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapGetSphereMapTexObj(SphereMap *smap, GLuint *texobj) -{ - *texobj = smap->smapTexObj; -} - -void -smapGetViewTexObj(SphereMap *smap, GLuint *texobj) -{ - *texobj = smap->viewTexObj; -} - -void -smapGetViewTexObjs(SphereMap *smap, GLuint texobjs[6]) -{ - int i; - - for (i=0; i<6; i++) { - texobjs[i] = smap->viewTexObjs[i]; - } -} - diff --git a/lib/glut-3.7.6/lib/glsmap/smap_getvec.c b/lib/glut-3.7.6/lib/glsmap/smap_getvec.c deleted file mode 100644 index a56d309821b82304e42d5fa8d0e4ab6f007a49ed..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_getvec.c +++ /dev/null @@ -1,33 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapGetEyeVector(SphereMap *smap, GLfloat *eye) -{ - eye[X] = smap->eye[X]; - eye[Y] = smap->eye[Y]; - eye[Z] = smap->eye[Z]; -} - -void -smapGetUpVector(SphereMap *smap, GLfloat *up) -{ - up[X] = smap->up[X]; - up[Y] = smap->up[Y]; - up[Z] = smap->up[Z]; -} - -void -smapGetObjectVector(SphereMap *smap, GLfloat *obj) -{ - obj[X] = smap->obj[X]; - obj[Y] = smap->obj[Y]; - obj[Z] = smap->obj[Z]; -} - diff --git a/lib/glut-3.7.6/lib/glsmap/smap_makemesh.c b/lib/glut-3.7.6/lib/glsmap/smap_makemesh.c deleted file mode 100644 index cd5b411d6d4f9e3153279f978b4c7e212f0aa360..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_makemesh.c +++ /dev/null @@ -1,253 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include /* SunOS multithreaded assert() needs . Lame. */ -#include -#include -#include -#include - -#include "glsmapint.h" - -static struct { - int xl; - int yl; - int zl; - int swap; /* swap final (s,t) */ - int flip; /* flip final s or t, ie. [0..1] --> [1..0] */ - float dir; -} faceInfo[5] = { - { 0, 1, 2, 0, 1.0, 1.0 }, /* front */ - { 0, 2, 1, 0, -1.0, 1.0 }, /* top */ - { 0, 2, 1, 0, 1.0, -1.0 }, /* bottom */ - { 1, 2, 0, 1, -1.0, 1.0 }, /* left */ - { 1, 2, 0, 1, 1.0, -1.0 }, /* right */ -}; - -static struct { - int xl; - int yl; - float dir; -} edgeInfo[4] = { - { 0, 1, -1.0 }, - { 0, 1, 1.0 }, - { 1, 0, -1.0 }, - { 1, 0, 1.0 } -}; - -void -__smapValidateSphereMapMesh(SphereMapMesh *mesh) -{ - /* setup some local variables for variable array size indexing */ - INITFACE(mesh); - INITBACK(mesh); - - float st[2]; /* (s,t) coordinate */ - /* range=[0..1,0..1] */ - float v[3]; /* (x,y,z) location on cube map */ - /* range=[-1..1,-1..1,-1..1] */ - float rv[3]; /* reflection vector, ie. cube map location */ - /* normalized onto unit sphere */ - float len; /* distance from v[3] to origin */ - /* for converting to rv[3] */ - int side; /* which of 5 faces (all but back face) */ - int i, j; - int xl, yl, zl; /* renamed X, Y, Z index */ - int swap; - int flip; - int edge; /* which edge of back face */ - float sc, tc; /* singularity (s,t) on back face circle */ - - if (mesh->face) { - assert(mesh->back == &(mesh->face[5*sqsteps])); - return; - } - assert(mesh->back == NULL); - - mesh->face = (STXY*) - malloc((5*sqsteps+4*ringedspokes) * sizeof(STXY)); - mesh->back = &(mesh->face[5*sqsteps]); - - /* for the front and four side faces */ - for (side=0; side<5; side++) { - /* use faceInfo to parameterize face construction */ - xl = faceInfo[side].xl; - yl = faceInfo[side].yl; - zl = faceInfo[side].zl; - swap = faceInfo[side].swap; - flip = faceInfo[side].flip; - /* cube map "Z" coordinate */ - v[zl] = faceInfo[side].dir; - - for (i=0; isteps; i++) { - /* cube map "Y" coordinate */ - v[yl] = 2.0/(mesh->steps-1) * i - 1.0; - for (j=0; jsteps; j++) { - /* cube map "X" coordinate */ - v[xl] = 2.0/(mesh->steps-1) * j - 1.0; - - /* normalize cube map location to construct */ - /* reflection vector */ - len = sqrt(1.0 + v[xl]*v[xl] + v[yl]*v[yl]); - rv[0] = v[0]/len; - rv[1] = v[1]/len; - rv[2] = v[2]/len; - - /* map reflection vector to sphere map (s,t) */ - /* NOTE: face[side][i][j] (x,y) gets updated */ - smapRvecToSt(rv, FACExy(side,i,j)); - - /* update texture coordinate, */ - /* normalize [-1..1,-1..1] to [0..1,0..1] */ - if (!swap) { - FACE(side,i,j).s = (-v[xl] + 1.0)/2.0; - FACE(side,i,j).t = (flip*v[yl] + 1.0)/2.0; - } else { - FACE(side,i,j).s = (flip*-v[yl] + 1.0)/2.0; - FACE(side,i,j).t = (v[xl] + 1.0)/2.0; - } - } - } - } - - - /* The back face must be specially handled. The center - point in the back face of a cube map becomes a - a singularity around the circular edge of a sphere map. */ - - /* Carefully work from each edge of the back face to center - of back face mapped to the outside of the sphere map. */ - - /* cube map "Z" coordinate, always -1 since backface */ - v[2] = -1; - - /* for each edge */ - /* [x=-1, y=-1..1, z=-1] */ - /* [x= 1, y=-1..1, z=-1] */ - /* [x=-1..1, y=-1, z=-1] */ - /* [x=-1..1, y= 1, z=-1] */ - for (edge=0; edge<4; edge++) { - /* cube map "X" coordinate */ - v[edgeInfo[edge].xl] = edgeInfo[edge].dir; - for (j=0; jsteps; j++) { - /* cube map "Y" coordinate */ - v[edgeInfo[edge].yl] = 2.0/(mesh->steps-1) * j - 1.0; - - /* normalize cube map location to construct */ - /* reflection vector */ - len = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - rv[0] = v[0]/len; - rv[1] = v[1]/len; - rv[2] = v[2]/len; - - /* Map reflection vector to sphere map (s,t). */ - smapRvecToSt(rv, st); - - /* Determine distinance from the center of sphere */ - /* map (0.5,0.5) to (s,t) */ - len = sqrt((st[0]-0.5)*(st[0]-0.5) + (st[1]-0.5)*(st[1]-0.5)); - - /* Calculate (s,t) location extended to the singularity */ - /* at the center of the back face (ie, extend to */ - /* circle edge of the sphere map). */ - sc = (st[0]-0.5)/len * 0.5 + 0.5; - tc = (st[1]-0.5)/len * 0.5 + 0.5; - - /* (s,t) at back face edge. */ - BACK(edge,0,j).s = (-v[0] + 1.0)/2.0; - BACK(edge,0,j).t = (-v[1] + 1.0)/2.0; - BACK(edge,0,j).x = st[0]; - BACK(edge,0,j).y = st[1]; - - /* If just two rings, we just generate a back face edge - vertex and a center vertex (2 rings), but if there - are more rings, we carefully interpolate between the - edge and center vertices. Notice how smapStToRvec is used - to map the interpolated (s,t) into a reflection vector - that must then be extended to the back cube face (it is - not correct to just interpolate the texture - coordinates!). */ - if (mesh->rings > 2) { - float ist[2]; /* interpolated (s,t) */ - float ds, dt; /* delta s and delta t */ - - /* Start interpolating from the edge. */ - ist[0] = st[0]; - ist[1] = st[1]; - - /* Calculate delta s and delta t for interpolation. */ - ds = (sc - ist[0]) / (mesh->rings-1); - dt = (tc - ist[1]) / (mesh->rings-1); - - for (i=1; irings-1; i++) { - /* Incremental interpolation of (s,t). */ - ist[0] = ist[0] + ds; - ist[1] = ist[1] + dt; - - /* Calculate reflection vector from interpolated (s,t). */ - smapStToRvec(ist, rv); - /* Assert that z must be on the back cube face. */ - assert(rv[2] <= -sqrt(1.0/3.0)); - /* Extend reflection vector out of back cube face. */ - /* Note: z is negative value so negate z to avoid */ - /* inverting x and y! */ - rv[0] = rv[0] / -rv[2]; - rv[1] = rv[1] / -rv[2]; - - BACK(edge,i,j).s = (-rv[0] + 1.0)/2.0; - BACK(edge,i,j).t = (-rv[1] + 1.0)/2.0; - BACK(edge,i,j).x = ist[0]; - BACK(edge,i,j).y = ist[1]; - } - } - - /* (s,t) at circle edge of the sphere map is ALWAYS */ - /* at center of back cube map face */ - BACK(edge,mesh->rings-1,j).s = 0.5; - BACK(edge,mesh->rings-1,j).t = 0.5; - /* Location of singularity at the edge of the sphere map. */ - BACK(edge,mesh->rings-1,j).x = sc; - BACK(edge,mesh->rings-1,j).y = tc; - - if (mesh->edgeExtend) { - /* Add an extra ring to avoid seeing the */ - /* tessellation boundary of the sphere map's sphere. */ - BACK(edge,mesh->rings,j).s = 0.5; - BACK(edge,mesh->rings,j).t = 0.5; - /* 0.33 below is a fudge factor. */ - BACK(edge,mesh->rings,j).x = sc + 0.33*(sc - st[0]); - BACK(edge,mesh->rings,j).y = tc + 0.33*(tc - st[1]); - } - } - } - for (edge=0; edge<4; edge++) { - for (j=0; jsteps; j++) { - for (i=1; irings-1; i++) { - } - } - } -} - -void -smapConfigureSphereMapMesh(SphereMap *smap, - int steps, int rings, int edgeExtend) -{ - SphereMapMesh *mesh = smap->mesh; - - if (steps == mesh->steps && - rings == mesh->rings && - edgeExtend == mesh->edgeExtend) { - return; - } - - mesh->steps = steps; - mesh->rings = rings; - mesh->edgeExtend = edgeExtend; - - mesh->face = NULL; - mesh->back = NULL; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_nearfar.c b/lib/glut-3.7.6/lib/glsmap/smap_nearfar.c deleted file mode 100644 index 45eb55d83c944f2dc8be4157a4cd9fdc8ca8e5cf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_nearfar.c +++ /dev/null @@ -1,26 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapSetNearFar(SphereMap *smap, - GLfloat viewNear, GLfloat viewFar) -{ - /* Curse Intel for "near" and "far" keywords. */ - smap->viewNear = viewNear; - smap->viewFar = viewFar; -} - -void -smapGetNearFar(SphereMap *smap, - GLfloat *viewNear, GLfloat *viewFar) -{ - /* Curse Intel for "near" and "far" keywords. */ - *viewNear = smap->viewNear; - *viewFar = smap->viewFar; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_origin.c b/lib/glut-3.7.6/lib/glsmap/smap_origin.c deleted file mode 100644 index 9b6af2146fbdf31b0a6b279383e47cc893bf4e6c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_origin.c +++ /dev/null @@ -1,34 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -#include "glsmapint.h" - -void smapSetViewOrigin(SphereMap *smap, GLint x, GLint y) -{ - smap->viewOrigin[0] = x; - smap->viewOrigin[1] = y; -} - -void smapSetSphereMapOrigin(SphereMap *smap, GLint x, GLint y) -{ - smap->smapOrigin[0] = x; - smap->smapOrigin[1] = y; -} - -void smapGetViewOrigin(SphereMap *smap, GLint *x, GLint *y) -{ - *x = smap->viewOrigin[0]; - *y = smap->viewOrigin[1]; -} - -void smapGetSphereMapOrigin(SphereMap *smap, GLint *x, GLint *y) -{ - *x = smap->smapOrigin[0]; - *y = smap->smapOrigin[1]; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_render.c b/lib/glut-3.7.6/lib/glsmap/smap_render.c deleted file mode 100644 index 504458ae699b34e045615fd76bfe7500e59d7f07..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_render.c +++ /dev/null @@ -1,26 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -#include "glsmapint.h" - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif - -void -smapRenderSphereMappedObj(SphereMap *smap) -{ - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, smap->smapTexObj); -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_rvec2st.c b/lib/glut-3.7.6/lib/glsmap/smap_rvec2st.c deleted file mode 100644 index 23b5d8dc107548f166448fdd067896f6fc6fb6f9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_rvec2st.c +++ /dev/null @@ -1,79 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -#include "glsmapint.h" - -/* (x,y,z) reflection vector --> (s,t) sphere map coordinates */ -int -smapRvecToSt(float rvec[3], float st[2]) -{ - double m, recipm; - - /* In Section 2.10.4 ("Generating texture coordinates") - of the OpenGL 1.1 specification, you will find the - GL_SPHERE_MAP equations: - - n' = normal after transformation to eye coordinates - u = unit vector from origin to vertex in eye coordinates - - (rx, ry, rz) = u - 2 * n' * transpose(n') * u - - m = 2 * sqrt(rx^2 + ry^2 + (rz + 1)^2)) - - s = rx/m + 0.5 - t = ry/m + 0.5 - - The equation for calculating (rx, ry, rz) is the - equation for calculating the reflection vector for - a surface and observer. The explanation and - derivation for this equation is found in Roger's - "Procedural Elements for Computer Graphics" 2nd ed. - in Section 5-5 ("Determining the Reflection Vector"). - Note that Roger's convention has the Z axis in - the opposite direction from the OpenGL convention. */ - - m = 2 * sqrt(rvec[0]*rvec[0] + - rvec[1]*rvec[1] + - (rvec[2]+1)*(rvec[2]+1)); - if (m == 0.0) { - /* Some point on the sphere map perimeter. */ - st[0] = 0.0; - st[1] = 0.5; - return 0; - } - - recipm = 1.0/m; - - st[0] = rvec[0]*recipm + 0.5; - st[1] = rvec[1]*recipm + 0.5; - return 1; -} - -/* (s,t) sphere map coordinate --> reflection verctor (x,y,z) */ -void -smapStToRvec(float *st, float *rvec) -{ - double tmp1, tmp2; - - /* Using algebra to invert the sphere mapping equations - shown above in smapRvecToSt, you get: - - rx = 2*sqrt(-4*s^2 + 4*s - 4*t^2 + 4*t - 1)*(2*s-1) - ry = 2*sqrt(-4*s^2 + 4*s - 4*t^2 + 4*t - 1)*(2*t-1) - rz = -8*s^2 + 8*s - 8*t^2 + 8*t - 3 - - The C code below eliminates common subexpressions. */ - - tmp1 = st[0]*(1-st[0]) + st[1]*(1-st[1]); - tmp2 = 2 * sqrt(4*tmp1 - 1); - - rvec[0] = tmp2 * (2*st[0]-1); - rvec[1] = tmp2 * (2*st[1]-1); - rvec[2] = 8 * tmp1 - 3; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_set.c b/lib/glut-3.7.6/lib/glsmap/smap_set.c deleted file mode 100644 index 32d4e08a53e5d78a7b0fba1609a953fbdb2f98df..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_set.c +++ /dev/null @@ -1,32 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void smapSetEye(SphereMap *smap, - GLfloat eyex, GLfloat eyey, GLfloat eyez) -{ - smap->eye[X] = eyex; - smap->eye[Y] = eyey; - smap->eye[Z] = eyez; -} - -void smapSetUp(SphereMap *smap, - GLfloat upx, GLfloat upy, GLfloat upz) -{ - smap->up[X] = upx; - smap->up[Y] = upy; - smap->up[Z] = upz; -} - -void smapSetObject(SphereMap *smap, - GLfloat objx, GLfloat objy, GLfloat objz) -{ - smap->obj[X] = objx; - smap->obj[Y] = objy; - smap->obj[Z] = objz; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_setfunc.c b/lib/glut-3.7.6/lib/glsmap/smap_setfunc.c deleted file mode 100644 index 359c9a6ff6111d552405b9c6a2d11513e3c87696..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_setfunc.c +++ /dev/null @@ -1,20 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void smapSetPositionLightsFunc(SphereMap *smap, - void (*positionLights)(int view, void *context)) -{ - smap->positionLights = positionLights; -} - -void smapSetDrawViewFunc(SphereMap *smap, - void (*drawView)(int view, void *context)) -{ - smap->drawView = drawView; -} diff --git a/lib/glut-3.7.6/lib/glsmap/smap_setvec.c b/lib/glut-3.7.6/lib/glsmap/smap_setvec.c deleted file mode 100644 index 353be86dc70e08f59a9059d6e9cee572217cbd29..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_setvec.c +++ /dev/null @@ -1,33 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapSetEyeVector(SphereMap *smap, GLfloat *eye) -{ - smap->eye[X] = eye[X]; - smap->eye[Y] = eye[Y]; - smap->eye[Z] = eye[Z]; -} - -void -smapSetUpVector(SphereMap *smap, GLfloat *up) -{ - smap->up[X] = up[X]; - smap->up[Y] = up[Y]; - smap->up[Z] = up[Z]; -} - -void -smapSetObjectVector(SphereMap *smap, GLfloat *obj) -{ - smap->obj[X] = obj[X]; - smap->obj[Y] = obj[Y]; - smap->obj[Z] = obj[Z]; -} - diff --git a/lib/glut-3.7.6/lib/glsmap/smap_texdim.c b/lib/glut-3.7.6/lib/glsmap/smap_texdim.c deleted file mode 100644 index ebc4a58a57a48d852ac12f9df239607dd8f17cea..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_texdim.c +++ /dev/null @@ -1,21 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapSetSphereMapTexDim(SphereMap *smap, GLsizei texdim) -{ - smap->smapTexDim = texdim; -} - -void -smapSetViewTexDim(SphereMap *smap, GLsizei texdim) -{ - smap->viewTexDim = texdim; -} - diff --git a/lib/glut-3.7.6/lib/glsmap/smap_texobj.c b/lib/glut-3.7.6/lib/glsmap/smap_texobj.c deleted file mode 100644 index b4c478d50ca13621be7046a96cd8b1cc1d5e79c5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glsmap/smap_texobj.c +++ /dev/null @@ -1,31 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glsmapint.h" - -void -smapSetSphereMapTexObj(SphereMap *smap, GLuint texobj) -{ - smap->smapTexObj = texobj; -} - -void -smapSetViewTexObj(SphereMap *smap, GLuint texobj) -{ - smap->viewTexObj = texobj; -} - -void -smapSetViewTexObjs(SphereMap *smap, GLuint texobjs[6]) -{ - int i; - - for (i=0; i<6; i++) { - smap->viewTexObjs[i] = texobjs[i]; - } -} - diff --git a/lib/glut-3.7.6/lib/glut.n32/ObjectType.mk b/lib/glut-3.7.6/lib/glut.n32/ObjectType.mk deleted file mode 100644 index 6116ff97ebaddd2e7bb0e9da92b07312322653c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut.n32/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_N32) -CSTYLE = $(CSTYLE_N32) diff --git a/lib/glut-3.7.6/lib/glut.n64/ObjectType.mk b/lib/glut-3.7.6/lib/glut.n64/ObjectType.mk deleted file mode 100644 index 55d0f47555f040b45d0f60e02988ecfaa47da627..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut.n64/ObjectType.mk +++ /dev/null @@ -1,3 +0,0 @@ -LDOPTS = $(LDOPTS_64) -#OPTIMIZER = -O0 -CSTYLE = $(CSTYLE_64) diff --git a/lib/glut-3.7.6/lib/glut/Imakefile b/lib/glut-3.7.6/lib/glut/Imakefile deleted file mode 100644 index e87a230bd2497d0bafded12853626999a8518d1d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/Imakefile +++ /dev/null @@ -1,174 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#define DoNormalLib YES - -#include - -#include "../../Glut.cf" - -HDRS = \ - glutint.h \ - glutstroke.h \ - layerutil.h - -SRCS = \ - glut_8x13.c \ - glut_9x15.c \ - glut_bitmap.c \ - glut_bwidth.c \ - glut_cindex.c \ - glut_cmap.c \ - glut_cursor.c \ - glut_dials.c \ - glut_dstr.c \ - glut_event.c \ - glut_ext.c \ - glut_fullscrn.c \ - glut_gamemode.c \ - glut_get.c \ - glut_glxext.c \ - glut_hel10.c \ - glut_hel12.c \ - glut_hel18.c \ - glut_init.c \ - glut_input.c \ - glut_joy.c \ - glut_key.c \ - glut_keyctrl.c \ - glut_keyup.c \ - glut_menu.c \ - glut_menu2.c \ - glut_mesa.c \ - glut_modifier.c \ - glut_mroman.c \ - glut_overlay.c \ - glut_roman.c \ - glut_shapes.c \ - glut_space.c \ - glut_stroke.c \ - glut_swap.c \ - glut_swidth.c \ - glut_tablet.c \ - glut_teapot.c \ - glut_tr10.c \ - glut_tr24.c \ - glut_util.c \ - glut_vidresize.c \ - glut_warp.c \ - glut_win.c \ - glut_winmisc.c \ - layerutil.c - -OBJS = \ - glut_8x13.o \ - glut_9x15.o \ - glut_bitmap.o \ - glut_bwidth.o \ - glut_cindex.o \ - glut_cmap.o \ - glut_cursor.o \ - glut_dials.o \ - glut_dstr.o \ - glut_event.o \ - glut_ext.o \ - glut_fullscrn.o \ - glut_gamemode.o \ - glut_get.o \ - glut_glxext.o \ - glut_hel10.o \ - glut_hel12.o \ - glut_hel18.o \ - glut_init.o \ - glut_input.o \ - glut_joy.o \ - glut_key.o \ - glut_keyctrl.o \ - glut_keyup.o \ - glut_menu.o \ - glut_menu2.o \ - glut_mesa.o \ - glut_modifier.o \ - glut_mroman.o \ - glut_overlay.o \ - glut_roman.o \ - glut_shapes.o \ - glut_space.o \ - glut_stroke.o \ - glut_swap.o \ - glut_swidth.o \ - glut_tablet.o \ - glut_teapot.o \ - glut_tr10.o \ - glut_tr24.o \ - glut_util.o \ - glut_vidresize.o \ - glut_warp.o \ - glut_win.o \ - glut_winmisc.o \ - layerutil.o - -#ifdef LibraryObjectRule -LibraryObjectRule() -#else -/* XXX Very lame, you must be using pre-R5 config files! This - will probably do essentially what LibraryObjectRule does. */ -NormalLibraryObjectRule() -#endif - -NormalLibraryTarget(glut,$(OBJS)) - -/* I've gotten too many complaints from people (mostly Linux users) - trying to build GLUT that have problems using lex and yacc to - build the stroke fonts for GLUT so I will simply supply the - generated C stroke fonts files. If you would like to build the - fonts, please uncomment the following define of BuildStrokeFontsWithLex - and regenerate the Makefile. */ - -/* #define BuildStrokeFontsWithLex */ - -#ifdef BuildStrokeFontsWithLex - -# for SGI's parallel make -.ORDER : strokegen.h strokegen.c - -strokegen.h strokegen.c : strokegen.y - $(YACC) -d strokegen.y - $(MV) y.tab.c strokegen.c - $(MV) y.tab.h strokegen.h - -/* XXX Attempt to make up for the lack of lex support in pre-R6 imake - config files. */ -#ifndef LexCmd -#define LexCmd lex -LEX = LexCmd -#endif -#ifndef LexLib -#define LexLib -ll -LEXLIB = LexLib -#endif - -strokelex.c : strokelex.l - $(LEX) strokelex.l - $(MV) lex.yy.c strokelex.c - -strokegen : strokegen.o strokelex.o - $(CC) -o $@ $(CFLAGS) strokegen.o strokelex.o $(LEXLIB) - -glut_roman.c : Roman.stroke strokegen - ./strokegen -s glutStrokeRoman < Roman.stroke > $@ - -glut_mroman.c : MonoRoman.stroke strokegen - ./strokegen -s glutStrokeMonoRoman < MonoRoman.stroke > $@ - -GEN_STROKES = glut_roman.c glut_mroman.c - -depend:: glut_roman.c glut_mroman.c - -#endif /* BuildStrokeFontsWithLex */ - -clean:: - $(RM) y.tab.h y.tab.c lex.yy.c gram.h gram.c lex.c - $(RM) strokelex.c strokegen.c $(GEN_STROKES) strokegen capturexfont - -DependTarget() diff --git a/lib/glut-3.7.6/lib/glut/MonoRoman.stroke b/lib/glut-3.7.6/lib/glut/MonoRoman.stroke deleted file mode 100644 index 837104439100f45e284cffcb7835182bb1bde2f3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/MonoRoman.stroke +++ /dev/null @@ -1,503 +0,0 @@ -## -# $XConsortium: Roman_M.src,v 5.2 91/07/21 16:42:40 rws Exp $ -## -## Copyright (c) 1989,1990, 1991 by Sun Microsystems, Inc. and the X Consortium. -## -## All Rights Reserved -## -## Permission to use, copy, modify, and distribute this software and its -## documentation for any purpose and without fee is hereby granted, -## provided that the above copyright notice appear in all copies and that -## both that copyright notice and this permission notice appear in -## supporting documentation, and that the names of Sun Microsystems, -## the X Consortium, and MIT not be used in advertising or publicity -## pertaining to distribution of the software without specific, written -## prior permission. -## -## SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -## INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -## EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR -## CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -## USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -## OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -## PERFORMANCE OF THIS SOFTWARE. - -# Mono-spaced version of Roman Simplex font. - - FONTNAME Roman - TOP 119.0476 - BOTTOM -33.3333 - NUM_CH 128 - PROPERTIES 3 - - (CHARSET_REGISTRY ISO8859) - (CHARSET_ENCODING "1") - (SPACING M) - -INDEX 32 STROKE 0 CENTER 52.3810 RIGHT 104.7619 -INDEX 33 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3810 100.0000) (52.3810 33.3333) - OPEN 5 (52.3810 9.5238) (47.6191 4.7619) (52.3810 0.0000) - (57.1429 4.7619) (52.3810 9.5238) -INDEX 34 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (33.3334 100.0000) (33.3334 66.6667) - OPEN 2 (71.4286 100.0000) (71.4286 66.6667) -INDEX 35 STROKE 4 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (54.7619 119.0476) (21.4286 -33.3333) - OPEN 2 (83.3334 119.0476) (50.0000 -33.3333) - OPEN 2 (21.4286 57.1429) (88.0952 57.1429) - OPEN 2 (16.6667 28.5714) (83.3334 28.5714) -INDEX 36 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (42.8571 119.0476) (42.8571 -19.0476) - OPEN 2 (61.9047 119.0476) (61.9047 -19.0476) - OPEN 20 (85.7143 85.7143) (76.1905 95.2381) (61.9047 100.0000) - (42.8571 100.0000) (28.5714 95.2381) (19.0476 85.7143) (19.0476 76.1905) - (23.8095 66.6667) (28.5714 61.9048) (38.0952 57.1429) (66.6666 47.6190) - (76.1905 42.8571) (80.9524 38.0952) (85.7143 28.5714) (85.7143 14.2857) - (76.1905 4.7619) (61.9047 0.0000) (42.8571 0.0000) (28.5714 4.7619) - (19.0476 14.2857) -INDEX 37 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (95.2381 100.0000) (9.5238 0.0000) - OPEN 16 (33.3333 100.0000) (42.8571 90.4762) (42.8571 80.9524) - (38.0952 71.4286) (28.5714 66.6667) (19.0476 66.6667) (9.5238 76.1905) - (9.5238 85.7143) (14.2857 95.2381) (23.8095 100.0000) (33.3333 100.0000) - (42.8571 95.2381) (57.1428 90.4762) (71.4286 90.4762) (85.7143 95.2381) - (95.2381 100.0000) - OPEN 11 (76.1905 33.3333) (66.6667 28.5714) (61.9048 19.0476) - (61.9048 9.5238) (71.4286 0.0000) (80.9524 0.0000) (90.4762 4.7619) - (95.2381 14.2857) (95.2381 23.8095) (85.7143 33.3333) (76.1905 33.3333) -INDEX 38 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 34 (100.0000 57.1429) (100.0000 61.9048) (95.2381 66.6667) - (90.4762 66.6667) (85.7143 61.9048) (80.9524 52.3810) (71.4286 28.5714) - (61.9048 14.2857) (52.3809 4.7619) (42.8571 0.0000) (23.8095 0.0000) - (14.2857 4.7619) (9.5238 9.5238) (4.7619 19.0476) (4.7619 28.5714) - (9.5238 38.0952) (14.2857 42.8571) (47.6190 61.9048) (52.3809 66.6667) - (57.1429 76.1905) (57.1429 85.7143) (52.3809 95.2381) (42.8571 100.0000) - (33.3333 95.2381) (28.5714 85.7143) (28.5714 76.1905) (33.3333 61.9048) - (42.8571 47.6190) (66.6667 14.2857) (76.1905 4.7619) (85.7143 0.0000) - (95.2381 0.0000) (100.0000 4.7619) (100.0000 9.5238) -INDEX 39 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3810 100.0000) (52.3810 66.6667) -INDEX 40 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 10 (69.0476 119.0476) (59.5238 109.5238) (50.0000 95.2381) - (40.4762 76.1905) (35.7143 52.3810) (35.7143 33.3333) (40.4762 9.5238) - (50.0000 -9.5238) (59.5238 -23.8095) (69.0476 -33.3333) -INDEX 41 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 10 (35.7143 119.0476) (45.2381 109.5238) (54.7619 95.2381) - (64.2857 76.1905) (69.0476 52.3810) (69.0476 33.3333) (64.2857 9.5238) - (54.7619 -9.5238) (45.2381 -23.8095) (35.7143 -33.3333) -INDEX 42 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3810 71.4286) (52.3810 14.2857) - OPEN 2 (28.5715 57.1429) (76.1905 28.5714) - OPEN 2 (76.1905 57.1429) (28.5715 28.5714) -INDEX 43 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3809 85.7143) (52.3809 0.0000) - OPEN 2 (9.5238 42.8571) (95.2381 42.8571) -INDEX 44 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 8 (57.1429 4.7619) (52.3810 0.0000) (47.6191 4.7619) - (52.3810 9.5238) (57.1429 4.7619) (57.1429 -4.7619) (52.3810 -14.2857) - (47.6191 -19.0476) -INDEX 45 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (9.5238 42.8571) (95.2381 42.8571) -INDEX 46 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (52.3810 9.5238) (47.6191 4.7619) (52.3810 0.0000) - (57.1429 4.7619) (52.3810 9.5238) -INDEX 47 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 -14.2857) (85.7143 100.0000) -INDEX 48 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 17 (47.6190 100.0000) (33.3333 95.2381) (23.8095 80.9524) - (19.0476 57.1429) (19.0476 42.8571) (23.8095 19.0476) (33.3333 4.7619) - (47.6190 0.0000) (57.1428 0.0000) (71.4286 4.7619) (80.9524 19.0476) - (85.7143 42.8571) (85.7143 57.1429) (80.9524 80.9524) (71.4286 95.2381) - (57.1428 100.0000) (47.6190 100.0000) -INDEX 49 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 4 (40.4762 80.9524) (50.0000 85.7143) (64.2857 100.0000) - (64.2857 0.0000) -INDEX 50 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 14 (23.8095 76.1905) (23.8095 80.9524) (28.5714 90.4762) - (33.3333 95.2381) (42.8571 100.0000) (61.9047 100.0000) (71.4286 95.2381) - (76.1905 90.4762) (80.9524 80.9524) (80.9524 71.4286) (76.1905 61.9048) - (66.6666 47.6190) (19.0476 0.0000) (85.7143 0.0000) -INDEX 51 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 15 (28.5714 100.0000) (80.9524 100.0000) (52.3809 61.9048) - (66.6666 61.9048) (76.1905 57.1429) (80.9524 52.3810) (85.7143 38.0952) - (85.7143 28.5714) (80.9524 14.2857) (71.4286 4.7619) (57.1428 0.0000) - (42.8571 0.0000) (28.5714 4.7619) (23.8095 9.5238) (19.0476 19.0476) -INDEX 52 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 3 (64.2857 100.0000) (16.6667 33.3333) (88.0952 33.3333) - OPEN 2 (64.2857 100.0000) (64.2857 0.0000) -INDEX 53 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 17 (76.1905 100.0000) (28.5714 100.0000) (23.8095 57.1429) - (28.5714 61.9048) (42.8571 66.6667) (57.1428 66.6667) (71.4286 61.9048) - (80.9524 52.3810) (85.7143 38.0952) (85.7143 28.5714) (80.9524 14.2857) - (71.4286 4.7619) (57.1428 0.0000) (42.8571 0.0000) (28.5714 4.7619) - (23.8095 9.5238) (19.0476 19.0476) -INDEX 54 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 23 (78.5714 85.7143) (73.8096 95.2381) (59.5238 100.0000) - (50.0000 100.0000) (35.7143 95.2381) (26.1905 80.9524) (21.4286 57.1429) - (21.4286 33.3333) (26.1905 14.2857) (35.7143 4.7619) (50.0000 0.0000) - (54.7619 0.0000) (69.0476 4.7619) (78.5714 14.2857) (83.3334 28.5714) - (83.3334 33.3333) (78.5714 47.6190) (69.0476 57.1429) (54.7619 61.9048) - (50.0000 61.9048) (35.7143 57.1429) (26.1905 47.6190) (21.4286 33.3333) -INDEX 55 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (85.7143 100.0000) (38.0952 0.0000) - OPEN 2 (19.0476 100.0000) (85.7143 100.0000) -INDEX 56 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 29 (42.8571 100.0000) (28.5714 95.2381) (23.8095 85.7143) - (23.8095 76.1905) (28.5714 66.6667) (38.0952 61.9048) (57.1428 57.1429) - (71.4286 52.3810) (80.9524 42.8571) (85.7143 33.3333) (85.7143 19.0476) - (80.9524 9.5238) (76.1905 4.7619) (61.9047 0.0000) (42.8571 0.0000) - (28.5714 4.7619) (23.8095 9.5238) (19.0476 19.0476) (19.0476 33.3333) - (23.8095 42.8571) (33.3333 52.3810) (47.6190 57.1429) (66.6666 61.9048) - (76.1905 66.6667) (80.9524 76.1905) (80.9524 85.7143) (76.1905 95.2381) - (61.9047 100.0000) (42.8571 100.0000) -INDEX 57 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 23 (83.3334 66.6667) (78.5714 52.3810) (69.0476 42.8571) - (54.7619 38.0952) (50.0000 38.0952) (35.7143 42.8571) (26.1905 52.3810) - (21.4286 66.6667) (21.4286 71.4286) (26.1905 85.7143) (35.7143 95.2381) - (50.0000 100.0000) (54.7619 100.0000) (69.0476 95.2381) (78.5714 85.7143) - (83.3334 66.6667) (83.3334 42.8571) (78.5714 19.0476) (69.0476 4.7619) - (54.7619 0.0000) (45.2381 0.0000) (30.9524 4.7619) (26.1905 14.2857) -INDEX 58 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (52.3810 66.6667) (47.6191 61.9048) (52.3810 57.1429) - (57.1429 61.9048) (52.3810 66.6667) - OPEN 5 (52.3810 9.5238) (47.6191 4.7619) (52.3810 0.0000) - (57.1429 4.7619) (52.3810 9.5238) -INDEX 59 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (52.3810 66.6667) (47.6191 61.9048) (52.3810 57.1429) - (57.1429 61.9048) (52.3810 66.6667) - OPEN 8 (57.1429 4.7619) (52.3810 0.0000) (47.6191 4.7619) - (52.3810 9.5238) (57.1429 4.7619) (57.1429 -4.7619) (52.3810 -14.2857) - (47.6191 -19.0476) -INDEX 60 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 3 (90.4762 85.7143) (14.2857 42.8571) (90.4762 0.0000) -INDEX 61 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (9.5238 57.1429) (95.2381 57.1429) - OPEN 2 (9.5238 28.5714) (95.2381 28.5714) -INDEX 62 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 3 (14.2857 85.7143) (90.4762 42.8571) (14.2857 0.0000) -INDEX 63 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 14 (23.8095 76.1905) (23.8095 80.9524) (28.5714 90.4762) - (33.3333 95.2381) (42.8571 100.0000) (61.9047 100.0000) (71.4285 95.2381) - (76.1905 90.4762) (80.9524 80.9524) (80.9524 71.4286) (76.1905 61.9048) - (71.4285 57.1429) (52.3809 47.6190) (52.3809 33.3333) - OPEN 5 (52.3809 9.5238) (47.6190 4.7619) (52.3809 0.0000) - (57.1428 4.7619) (52.3809 9.5238) -INDEX 64 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 8 (64.2857 52.3810) (54.7619 57.1429) (45.2381 57.1429) - (40.4762 47.6190) (40.4762 42.8571) (45.2381 33.3333) (54.7619 33.3333) - (64.2857 38.0952) - OPEN 19 (64.2857 57.1429) (64.2857 38.0952) (69.0476 33.3333) - (78.5714 33.3333) (83.3334 42.8571) (83.3334 47.6190) (78.5714 61.9048) - (69.0476 71.4286) (54.7619 76.1905) (50.0000 76.1905) (35.7143 71.4286) - (26.1905 61.9048) (21.4286 47.6190) (21.4286 42.8571) (26.1905 28.5714) - (35.7143 19.0476) (50.0000 14.2857) (54.7619 14.2857) (69.0476 19.0476) -INDEX 65 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3809 100.0000) (14.2857 0.0000) - OPEN 2 (52.3809 100.0000) (90.4762 0.0000) - OPEN 2 (28.5714 33.3333) (76.1905 33.3333) -INDEX 66 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (19.0476 0.0000) - OPEN 9 (19.0476 100.0000) (61.9047 100.0000) (76.1905 95.2381) - (80.9524 90.4762) (85.7143 80.9524) (85.7143 71.4286) (80.9524 61.9048) - (76.1905 57.1429) (61.9047 52.3810) - OPEN 10 (19.0476 52.3810) (61.9047 52.3810) (76.1905 47.6190) - (80.9524 42.8571) (85.7143 33.3333) (85.7143 19.0476) (80.9524 9.5238) - (76.1905 4.7619) (61.9047 0.0000) (19.0476 0.0000) -INDEX 67 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 18 (88.0952 76.1905) (83.3334 85.7143) (73.8096 95.2381) - (64.2857 100.0000) (45.2381 100.0000) (35.7143 95.2381) (26.1905 85.7143) - (21.4286 76.1905) (16.6667 61.9048) (16.6667 38.0952) (21.4286 23.8095) - (26.1905 14.2857) (35.7143 4.7619) (45.2381 0.0000) (64.2857 0.0000) - (73.8096 4.7619) (83.3334 14.2857) (88.0952 23.8095) -INDEX 68 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (19.0476 0.0000) - OPEN 12 (19.0476 100.0000) (52.3809 100.0000) (66.6666 95.2381) - (76.1905 85.7143) (80.9524 76.1905) (85.7143 61.9048) (85.7143 38.0952) - (80.9524 23.8095) (76.1905 14.2857) (66.6666 4.7619) (52.3809 0.0000) - (19.0476 0.0000) -INDEX 69 STROKE 4 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (21.4286 100.0000) (21.4286 0.0000) - OPEN 2 (21.4286 100.0000) (83.3334 100.0000) - OPEN 2 (21.4286 52.3810) (59.5238 52.3810) - OPEN 2 (21.4286 0.0000) (83.3334 0.0000) -INDEX 70 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (21.4286 100.0000) (21.4286 0.0000) - OPEN 2 (21.4286 100.0000) (83.3334 100.0000) - OPEN 2 (21.4286 52.3810) (59.5238 52.3810) -INDEX 71 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 19 (88.0952 76.1905) (83.3334 85.7143) (73.8096 95.2381) - (64.2857 100.0000) (45.2381 100.0000) (35.7143 95.2381) (26.1905 85.7143) - (21.4286 76.1905) (16.6667 61.9048) (16.6667 38.0952) (21.4286 23.8095) - (26.1905 14.2857) (35.7143 4.7619) (45.2381 0.0000) (64.2857 0.0000) - (73.8096 4.7619) (83.3334 14.2857) (88.0952 23.8095) (88.0952 38.0952) - OPEN 2 (64.2857 38.0952) (88.0952 38.0952) -INDEX 72 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (19.0476 0.0000) - OPEN 2 (85.7143 100.0000) (85.7143 0.0000) - OPEN 2 (19.0476 52.3810) (85.7143 52.3810) -INDEX 73 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3810 100.0000) (52.3810 0.0000) -INDEX 74 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 10 (76.1905 100.0000) (76.1905 23.8095) (71.4286 9.5238) - (66.6667 4.7619) (57.1429 0.0000) (47.6191 0.0000) (38.0953 4.7619) - (33.3334 9.5238) (28.5715 23.8095) (28.5715 33.3333) -INDEX 75 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (19.0476 0.0000) - OPEN 2 (85.7143 100.0000) (19.0476 33.3333) - OPEN 2 (42.8571 57.1429) (85.7143 0.0000) -INDEX 76 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (23.8095 100.0000) (23.8095 0.0000) - OPEN 2 (23.8095 0.0000) (80.9524 0.0000) -INDEX 77 STROKE 4 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (14.2857 100.0000) (14.2857 0.0000) - OPEN 2 (14.2857 100.0000) (52.3809 0.0000) - OPEN 2 (90.4762 100.0000) (52.3809 0.0000) - OPEN 2 (90.4762 100.0000) (90.4762 0.0000) -INDEX 78 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (19.0476 0.0000) - OPEN 2 (19.0476 100.0000) (85.7143 0.0000) - OPEN 2 (85.7143 100.0000) (85.7143 0.0000) -INDEX 79 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 21 (42.8571 100.0000) (33.3333 95.2381) (23.8095 85.7143) - (19.0476 76.1905) (14.2857 61.9048) (14.2857 38.0952) (19.0476 23.8095) - (23.8095 14.2857) (33.3333 4.7619) (42.8571 0.0000) (61.9047 0.0000) - (71.4286 4.7619) (80.9524 14.2857) (85.7143 23.8095) (90.4762 38.0952) - (90.4762 61.9048) (85.7143 76.1905) (80.9524 85.7143) (71.4286 95.2381) - (61.9047 100.0000) (42.8571 100.0000) -INDEX 80 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (19.0476 0.0000) - OPEN 10 (19.0476 100.0000) (61.9047 100.0000) (76.1905 95.2381) - (80.9524 90.4762) (85.7143 80.9524) (85.7143 66.6667) (80.9524 57.1429) - (76.1905 52.3810) (61.9047 47.6190) (19.0476 47.6190) -INDEX 81 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 21 (42.8571 100.0000) (33.3333 95.2381) (23.8095 85.7143) - (19.0476 76.1905) (14.2857 61.9048) (14.2857 38.0952) (19.0476 23.8095) - (23.8095 14.2857) (33.3333 4.7619) (42.8571 0.0000) (61.9047 0.0000) - (71.4286 4.7619) (80.9524 14.2857) (85.7143 23.8095) (90.4762 38.0952) - (90.4762 61.9048) (85.7143 76.1905) (80.9524 85.7143) (71.4286 95.2381) - (61.9047 100.0000) (42.8571 100.0000) - OPEN 2 (57.1428 19.0476) (85.7143 -9.5238) -INDEX 82 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (19.0476 0.0000) - OPEN 10 (19.0476 100.0000) (61.9047 100.0000) (76.1905 95.2381) - (80.9524 90.4762) (85.7143 80.9524) (85.7143 71.4286) (80.9524 61.9048) - (76.1905 57.1429) (61.9047 52.3810) (19.0476 52.3810) - OPEN 2 (52.3809 52.3810) (85.7143 0.0000) -INDEX 83 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 20 (85.7143 85.7143) (76.1905 95.2381) (61.9047 100.0000) - (42.8571 100.0000) (28.5714 95.2381) (19.0476 85.7143) (19.0476 76.1905) - (23.8095 66.6667) (28.5714 61.9048) (38.0952 57.1429) (66.6666 47.6190) - (76.1905 42.8571) (80.9524 38.0952) (85.7143 28.5714) (85.7143 14.2857) - (76.1905 4.7619) (61.9047 0.0000) (42.8571 0.0000) (28.5714 4.7619) - (19.0476 14.2857) -INDEX 84 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3809 100.0000) (52.3809 0.0000) - OPEN 2 (19.0476 100.0000) (85.7143 100.0000) -INDEX 85 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 10 (19.0476 100.0000) (19.0476 28.5714) (23.8095 14.2857) - (33.3333 4.7619) (47.6190 0.0000) (57.1428 0.0000) (71.4286 4.7619) - (80.9524 14.2857) (85.7143 28.5714) (85.7143 100.0000) -INDEX 86 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (14.2857 100.0000) (52.3809 0.0000) - OPEN 2 (90.4762 100.0000) (52.3809 0.0000) -INDEX 87 STROKE 4 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (4.7619 100.0000) (28.5714 0.0000) - OPEN 2 (52.3809 100.0000) (28.5714 0.0000) - OPEN 2 (52.3809 100.0000) (76.1905 0.0000) - OPEN 2 (100.0000 100.0000) (76.1905 0.0000) -INDEX 88 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (85.7143 0.0000) - OPEN 2 (85.7143 100.0000) (19.0476 0.0000) -INDEX 89 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 3 (14.2857 100.0000) (52.3809 52.3810) (52.3809 0.0000) - OPEN 2 (90.4762 100.0000) (52.3809 52.3810) -INDEX 90 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (85.7143 100.0000) (19.0476 0.0000) - OPEN 2 (19.0476 100.0000) (85.7143 100.0000) - OPEN 2 (19.0476 0.0000) (85.7143 0.0000) -INDEX 91 STROKE 4 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (35.7143 119.0476) (35.7143 -33.3333) - OPEN 2 (40.4762 119.0476) (40.4762 -33.3333) - OPEN 2 (35.7143 119.0476) (69.0476 119.0476) - OPEN 2 (35.7143 -33.3333) (69.0476 -33.3333) -INDEX 92 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (19.0476 100.0000) (85.7143 -14.2857) -INDEX 93 STROKE 4 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (64.2857 119.0476) (64.2857 -33.3333) - OPEN 2 (69.0476 119.0476) (69.0476 -33.3333) - OPEN 2 (35.7143 119.0476) (69.0476 119.0476) - OPEN 2 (35.7143 -33.3333) (69.0476 -33.3333) -INDEX 94 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3809 109.5238) (14.2857 42.8571) - OPEN 2 (52.3809 109.5238) (90.4762 42.8571) -INDEX 95 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (0.0000 -33.3333) (104.7619 -33.3333) (104.7619 -28.5714) - (0.0000 -28.5714) (0.0000 -33.3333) -INDEX 96 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (42.8572 100.0000) (66.6667 71.4286) - OPEN 3 (42.8572 100.0000) (38.0953 95.2381) (66.6667 71.4286) -INDEX 97 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (80.9524 66.6667) (80.9524 0.0000) - OPEN 14 (80.9524 52.3810) (71.4285 61.9048) (61.9047 66.6667) - (47.6190 66.6667) (38.0952 61.9048) (28.5714 52.3810) (23.8095 38.0952) - (23.8095 28.5714) (28.5714 14.2857) (38.0952 4.7619) (47.6190 0.0000) - (61.9047 0.0000) (71.4285 4.7619) (80.9524 14.2857) -INDEX 98 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (23.8095 100.0000) (23.8095 0.0000) - OPEN 14 (23.8095 52.3810) (33.3333 61.9048) (42.8571 66.6667) - (57.1428 66.6667) (66.6666 61.9048) (76.1905 52.3810) (80.9524 38.0952) - (80.9524 28.5714) (76.1905 14.2857) (66.6666 4.7619) (57.1428 0.0000) - (42.8571 0.0000) (33.3333 4.7619) (23.8095 14.2857) -INDEX 99 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 14 (80.9524 52.3810) (71.4285 61.9048) (61.9047 66.6667) - (47.6190 66.6667) (38.0952 61.9048) (28.5714 52.3810) (23.8095 38.0952) - (23.8095 28.5714) (28.5714 14.2857) (38.0952 4.7619) (47.6190 0.0000) - (61.9047 0.0000) (71.4285 4.7619) (80.9524 14.2857) -INDEX 100 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (80.9524 100.0000) (80.9524 0.0000) - OPEN 14 (80.9524 52.3810) (71.4285 61.9048) (61.9047 66.6667) - (47.6190 66.6667) (38.0952 61.9048) (28.5714 52.3810) (23.8095 38.0952) - (23.8095 28.5714) (28.5714 14.2857) (38.0952 4.7619) (47.6190 0.0000) - (61.9047 0.0000) (71.4285 4.7619) (80.9524 14.2857) -INDEX 101 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 17 (23.8095 38.0952) (80.9524 38.0952) (80.9524 47.6190) - (76.1905 57.1429) (71.4285 61.9048) (61.9047 66.6667) (47.6190 66.6667) - (38.0952 61.9048) (28.5714 52.3810) (23.8095 38.0952) (23.8095 28.5714) - (28.5714 14.2857) (38.0952 4.7619) (47.6190 0.0000) (61.9047 0.0000) - (71.4285 4.7619) (80.9524 14.2857) -INDEX 102 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (71.4286 100.0000) (61.9048 100.0000) (52.3810 95.2381) - (47.6191 80.9524) (47.6191 0.0000) - OPEN 2 (33.3334 66.6667) (66.6667 66.6667) -INDEX 103 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 7 (80.9524 66.6667) (80.9524 -9.5238) (76.1905 -23.8095) - (71.4285 -28.5714) (61.9047 -33.3333) (47.6190 -33.3333) (38.0952 -28.5714) - OPEN 14 (80.9524 52.3810) (71.4285 61.9048) (61.9047 66.6667) - (47.6190 66.6667) (38.0952 61.9048) (28.5714 52.3810) (23.8095 38.0952) - (23.8095 28.5714) (28.5714 14.2857) (38.0952 4.7619) (47.6190 0.0000) - (61.9047 0.0000) (71.4285 4.7619) (80.9524 14.2857) -INDEX 104 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (26.1905 100.0000) (26.1905 0.0000) - OPEN 7 (26.1905 47.6190) (40.4762 61.9048) (50.0000 66.6667) - (64.2857 66.6667) (73.8095 61.9048) (78.5715 47.6190) (78.5715 0.0000) -INDEX 105 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (47.6191 100.0000) (52.3810 95.2381) (57.1429 100.0000) - (52.3810 104.7619) (47.6191 100.0000) - OPEN 2 (52.3810 66.6667) (52.3810 0.0000) -INDEX 106 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (57.1429 100.0000) (61.9048 95.2381) (66.6667 100.0000) - (61.9048 104.7619) (57.1429 100.0000) - OPEN 5 (61.9048 66.6667) (61.9048 -14.2857) (57.1429 -28.5714) - (47.6191 -33.3333) (38.0953 -33.3333) -INDEX 107 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (26.1905 100.0000) (26.1905 0.0000) - OPEN 2 (73.8095 66.6667) (26.1905 19.0476) - OPEN 2 (45.2381 38.0952) (78.5715 0.0000) -INDEX 108 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3810 100.0000) (52.3810 0.0000) -INDEX 109 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (0.0000 66.6667) (0.0000 0.0000) - OPEN 7 (0.0000 47.6190) (14.2857 61.9048) (23.8095 66.6667) - (38.0952 66.6667) (47.6190 61.9048) (52.3810 47.6190) (52.3810 0.0000) - OPEN 7 (52.3810 47.6190) (66.6667 61.9048) (76.1905 66.6667) - (90.4762 66.6667) (100.0000 61.9048) (104.7619 47.6190) (104.7619 0.0000) -INDEX 110 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (26.1905 66.6667) (26.1905 0.0000) - OPEN 7 (26.1905 47.6190) (40.4762 61.9048) (50.0000 66.6667) - (64.2857 66.6667) (73.8095 61.9048) (78.5715 47.6190) (78.5715 0.0000) -INDEX 111 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 17 (45.2381 66.6667) (35.7143 61.9048) (26.1905 52.3810) - (21.4286 38.0952) (21.4286 28.5714) (26.1905 14.2857) (35.7143 4.7619) - (45.2381 0.0000) (59.5238 0.0000) (69.0476 4.7619) (78.5714 14.2857) - (83.3334 28.5714) (83.3334 38.0952) (78.5714 52.3810) (69.0476 61.9048) - (59.5238 66.6667) (45.2381 66.6667) -INDEX 112 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (23.8095 66.6667) (23.8095 -33.3333) - OPEN 14 (23.8095 52.3810) (33.3333 61.9048) (42.8571 66.6667) - (57.1428 66.6667) (66.6666 61.9048) (76.1905 52.3810) (80.9524 38.0952) - (80.9524 28.5714) (76.1905 14.2857) (66.6666 4.7619) (57.1428 0.0000) - (42.8571 0.0000) (33.3333 4.7619) (23.8095 14.2857) -INDEX 113 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (80.9524 66.6667) (80.9524 -33.3333) - OPEN 14 (80.9524 52.3810) (71.4285 61.9048) (61.9047 66.6667) - (47.6190 66.6667) (38.0952 61.9048) (28.5714 52.3810) (23.8095 38.0952) - (23.8095 28.5714) (28.5714 14.2857) (38.0952 4.7619) (47.6190 0.0000) - (61.9047 0.0000) (71.4285 4.7619) (80.9524 14.2857) -INDEX 114 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (33.3334 66.6667) (33.3334 0.0000) - OPEN 5 (33.3334 38.0952) (38.0953 52.3810) (47.6191 61.9048) - (57.1429 66.6667) (71.4286 66.6667) -INDEX 115 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 17 (78.5715 52.3810) (73.8095 61.9048) (59.5238 66.6667) - (45.2381 66.6667) (30.9524 61.9048) (26.1905 52.3810) (30.9524 42.8571) - (40.4762 38.0952) (64.2857 33.3333) (73.8095 28.5714) (78.5715 19.0476) - (78.5715 14.2857) (73.8095 4.7619) (59.5238 0.0000) (45.2381 0.0000) - (30.9524 4.7619) (26.1905 14.2857) -INDEX 116 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (47.6191 100.0000) (47.6191 19.0476) (52.3810 4.7619) - (61.9048 0.0000) (71.4286 0.0000) - OPEN 2 (33.3334 66.6667) (66.6667 66.6667) -INDEX 117 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 7 (26.1905 66.6667) (26.1905 19.0476) (30.9524 4.7619) - (40.4762 0.0000) (54.7619 0.0000) (64.2857 4.7619) (78.5715 19.0476) - OPEN 2 (78.5715 66.6667) (78.5715 0.0000) -INDEX 118 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (23.8095 66.6667) (52.3809 0.0000) - OPEN 2 (80.9524 66.6667) (52.3809 0.0000) -INDEX 119 STROKE 4 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (14.2857 66.6667) (33.3333 0.0000) - OPEN 2 (52.3809 66.6667) (33.3333 0.0000) - OPEN 2 (52.3809 66.6667) (71.4286 0.0000) - OPEN 2 (90.4762 66.6667) (71.4286 0.0000) -INDEX 120 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (26.1905 66.6667) (78.5715 0.0000) - OPEN 2 (78.5715 66.6667) (26.1905 0.0000) -INDEX 121 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (26.1905 66.6667) (54.7619 0.0000) - OPEN 6 (83.3334 66.6667) (54.7619 0.0000) (45.2381 -19.0476) - (35.7143 -28.5714) (26.1905 -33.3333) (21.4286 -33.3333) -INDEX 122 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (78.5715 66.6667) (26.1905 0.0000) - OPEN 2 (26.1905 66.6667) (78.5715 66.6667) - OPEN 2 (26.1905 0.0000) (78.5715 0.0000) -INDEX 123 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 10 (64.2857 119.0476) (54.7619 114.2857) (50.0000 109.5238) - (45.2381 100.0000) (45.2381 90.4762) (50.0000 80.9524) (54.7619 76.1905) - (59.5238 66.6667) (59.5238 57.1429) (50.0000 47.6190) - OPEN 17 (54.7619 114.2857) (50.0000 104.7619) (50.0000 95.2381) - (54.7619 85.7143) (59.5238 80.9524) (64.2857 71.4286) (64.2857 61.9048) - (59.5238 52.3810) (40.4762 42.8571) (59.5238 33.3333) (64.2857 23.8095) - (64.2857 14.2857) (59.5238 4.7619) (54.7619 0.0000) (50.0000 -9.5238) - (50.0000 -19.0476) (54.7619 -28.5714) - OPEN 10 (50.0000 38.0952) (59.5238 28.5714) (59.5238 19.0476) - (54.7619 9.5238) (50.0000 4.7619) (45.2381 -4.7619) (45.2381 -14.2857) - (50.0000 -23.8095) (54.7619 -28.5714) (64.2857 -33.3333) -INDEX 124 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (52.3810 119.0476) (52.3810 -33.3333) -INDEX 125 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 10 (40.4762 119.0476) (50.0000 114.2857) (54.7619 109.5238) - (59.5238 100.0000) (59.5238 90.4762) (54.7619 80.9524) (50.0000 76.1905) - (45.2381 66.6667) (45.2381 57.1429) (54.7619 47.6190) - OPEN 17 (50.0000 114.2857) (54.7619 104.7619) (54.7619 95.2381) - (50.0000 85.7143) (45.2381 80.9524) (40.4762 71.4286) (40.4762 61.9048) - (45.2381 52.3810) (64.2857 42.8571) (45.2381 33.3333) (40.4762 23.8095) - (40.4762 14.2857) (45.2381 4.7619) (50.0000 0.0000) (54.7619 -9.5238) - (54.7619 -19.0476) (50.0000 -28.5714) - OPEN 10 (54.7619 38.0952) (45.2381 28.5714) (45.2381 19.0476) - (50.0000 9.5238) (54.7619 4.7619) (59.5238 -4.7619) (59.5238 -14.2857) - (54.7619 -23.8095) (50.0000 -28.5714) (40.4762 -33.3333) -INDEX 126 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 11 (9.5238 28.5714) (9.5238 38.0952) (14.2857 52.3810) - (23.8095 57.1429) (33.3333 57.1429) (42.8571 52.3810) (61.9048 38.0952) - (71.4286 33.3333) (80.9524 33.3333) (90.4762 38.0952) (95.2381 47.6190) - OPEN 11 (9.5238 38.0952) (14.2857 47.6190) (23.8095 52.3810) - (33.3333 52.3810) (42.8571 47.6190) (61.9048 33.3333) (71.4286 28.5714) - (80.9524 28.5714) (90.4762 33.3333) (95.2381 47.6190) (95.2381 57.1429) -INDEX 127 STROKE 2 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (71.4286 100.0000) (33.3333 -33.3333) - OPEN 17 (47.6190 66.6667) (33.3333 61.9048) (23.8095 52.3810) - (19.0476 38.0952) (19.0476 23.8095) (23.8095 14.2857) (33.3333 4.7619) - (47.6190 0.0000) (57.1428 0.0000) (71.4286 4.7619) (80.9524 14.2857) - (85.7143 28.5714) (85.7143 42.8571) (80.9524 52.3810) (71.4286 61.9048) - (57.1428 66.6667) (47.6190 66.6667) diff --git a/lib/glut-3.7.6/lib/glut/ObjectType.mk b/lib/glut-3.7.6/lib/glut/ObjectType.mk deleted file mode 100644 index f94dc77f5ffbe482ca1434d44eb74d83595a8ffc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_32) -CSTYLE = $(CSTYLE_32) diff --git a/lib/glut-3.7.6/lib/glut/Roman.stroke b/lib/glut-3.7.6/lib/glut/Roman.stroke deleted file mode 100644 index 6defa76ac2fae57b71c90ef34f1595d85444ef45..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/Roman.stroke +++ /dev/null @@ -1,604 +0,0 @@ -## -# $XConsortium: Roman.src,v 5.2 91/07/21 16:42:23 rws Exp $ -## -## Copyright (c) 1989,1990, 1991 by Sun Microsystems, Inc. and the X Consortium. -## -## All Rights Reserved -## -## Permission to use, copy, modify, and distribute this software and its -## documentation for any purpose and without fee is hereby granted, -## provided that the above copyright notice appear in all copies and that -## both that copyright notice and this permission notice appear in -## supporting documentation, and that the names of Sun Microsystems, -## the X Consortium, and MIT not be used in advertising or publicity -## pertaining to distribution of the software without specific, written -## prior permission. -## -## SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -## INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -## EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR -## CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -## USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -## OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -## PERFORMANCE OF THIS SOFTWARE. - -# Roman Simplex font. - - FONTNAME Roman - TOP 119.0476 - BOTTOM -33.3333 - NUM_CH 128 - PROPERTIES 3 - - (CHARSET_REGISTRY ISO8859) - (CHARSET_ENCODING "1") - (SPACING P) - -INDEX 32 STROKE 0 CENTER 52.3810 RIGHT 104.7619 -INDEX 33 STROKE 2 CENTER 4.7619 RIGHT 9.5238 - OPEN 2 (4.7619 100.0000) (4.7619 33.3333) - OPEN 5 (4.7619 9.5238) (0.0000 4.7619) (4.7619 0.0000) - (9.5238 4.7619) (4.7619 9.5238) -INDEX 34 STROKE 2 CENTER 19.0476 RIGHT 38.0952 - OPEN 2 (0.0000 100.0000) (0.0000 66.6667) - OPEN 2 (38.0952 100.0000) (38.0952 66.6667) -INDEX 35 STROKE 4 CENTER 33.3333 RIGHT 71.4286 - OPEN 2 (38.0952 119.0476) (4.7619 -33.3333) - OPEN 2 (66.6667 119.0476) (33.3333 -33.3333) - OPEN 2 (4.7619 57.1429) (71.4286 57.1429) - OPEN 2 (0.0000 28.5714) (66.6667 28.5714) -INDEX 36 STROKE 3 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (23.8095 119.0476) (23.8095 -19.0476) - OPEN 2 (42.8571 119.0476) (42.8571 -19.0476) - OPEN 20 (66.6667 85.7143) (57.1429 95.2381) (42.8571 100.0000) - (23.8095 100.0000) (9.5238 95.2381) (0.0000 85.7143) (0.0000 76.1905) - (4.7619 66.6667) (9.5238 61.9048) (19.0476 57.1429) (47.6190 47.6190) - (57.1429 42.8571) (61.9048 38.0952) (66.6667 28.5714) (66.6667 14.2857) - (57.1429 4.7619) (42.8571 0.0000) (23.8095 0.0000) (9.5238 4.7619) - (0.0000 14.2857) -INDEX 37 STROKE 3 CENTER 42.8571 RIGHT 85.7143 - OPEN 2 (85.7143 100.0000) (0.0000 0.0000) - OPEN 16 (23.8095 100.0000) (33.3333 90.4762) (33.3333 80.9524) - (28.5714 71.4286) (19.0476 66.6667) (9.5238 66.6667) (0.0000 76.1905) - (0.0000 85.7143) (4.7619 95.2381) (14.2857 100.0000) (23.8095 100.0000) - (33.3333 95.2381) (47.6190 90.4762) (61.9048 90.4762) (76.1905 95.2381) - (85.7143 100.0000) - OPEN 11 (66.6667 33.3333) (57.1429 28.5714) (52.3810 19.0476) - (52.3810 9.5238) (61.9048 0.0000) (71.4286 0.0000) (80.9524 4.7619) - (85.7143 14.2857) (85.7143 23.8095) (76.1905 33.3333) (66.6667 33.3333) -INDEX 38 STROKE 1 CENTER 47.6190 RIGHT 95.2381 - OPEN 34 (95.2381 57.1429) (95.2381 61.9048) (90.4762 66.6667) - (85.7143 66.6667) (80.9524 61.9048) (76.1905 52.3810) (66.6667 28.5714) - (57.1429 14.2857) (47.6190 4.7619) (38.0952 0.0000) (19.0476 0.0000) - (9.5238 4.7619) (4.7619 9.5238) (0.0000 19.0476) (0.0000 28.5714) - (4.7619 38.0952) (9.5238 42.8571) (42.8571 61.9048) (47.6190 66.6667) - (52.3810 76.1905) (52.3810 85.7143) (47.6190 95.2381) (38.0952 100.0000) - (28.5714 95.2381) (23.8095 85.7143) (23.8095 76.1905) (28.5714 61.9048) - (38.0952 47.6190) (61.9048 14.2857) (71.4286 4.7619) (80.9524 0.0000) - (90.4762 0.0000) (95.2381 4.7619) (95.2381 9.5238) -INDEX 39 STROKE 1 CENTER 0.0000 RIGHT 0.0000 - OPEN 2 (0.0000 100.0000) (0.0000 66.6667) -INDEX 40 STROKE 1 CENTER 14.2857 RIGHT 33.3333 - OPEN 10 (33.3333 119.0476) (23.8095 109.5238) (14.2857 95.2381) - (4.7619 76.1905) (0.0000 52.3810) (0.0000 33.3333) (4.7619 9.5238) - (14.2857 -9.5238) (23.8095 -23.8095) (33.3333 -33.3333) -INDEX 41 STROKE 1 CENTER 19.0476 RIGHT 33.3333 - OPEN 10 (0.0000 119.0476) (9.5238 109.5238) (19.0476 95.2381) - (28.5714 76.1905) (33.3333 52.3810) (33.3333 33.3333) (28.5714 9.5238) - (19.0476 -9.5238) (9.5238 -23.8095) (0.0000 -33.3333) -INDEX 42 STROKE 3 CENTER 23.8095 RIGHT 47.6190 - OPEN 2 (23.8095 71.4286) (23.8095 14.2857) - OPEN 2 (0.0000 57.1429) (47.6190 28.5714) - OPEN 2 (47.6190 57.1429) (0.0000 28.5714) -INDEX 43 STROKE 2 CENTER 42.8571 RIGHT 85.7143 - OPEN 2 (42.8571 85.7143) (42.8571 0.0000) - OPEN 2 (0.0000 42.8571) (85.7143 42.8571) -INDEX 44 STROKE 1 CENTER 4.7619 RIGHT 9.5238 - OPEN 8 (9.5238 4.7619) (4.7619 0.0000) (0.0000 4.7619) - (4.7619 9.5238) (9.5238 4.7619) (9.5238 -4.7619) (4.7619 -14.2857) - (0.0000 -19.0476) -INDEX 45 STROKE 1 CENTER 42.8571 RIGHT 85.7143 - OPEN 2 (0.0000 42.8571) (85.7143 42.8571) -INDEX 46 STROKE 1 CENTER 4.7619 RIGHT 9.5238 - OPEN 5 (4.7619 9.5238) (0.0000 4.7619) (4.7619 0.0000) - (9.5238 4.7619) (4.7619 9.5238) -INDEX 47 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 -14.2857) (66.6667 100.0000) -INDEX 48 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 17 (28.5714 100.0000) (14.2857 95.2381) (4.7619 80.9524) - (0.0000 57.1429) (0.0000 42.8571) (4.7619 19.0476) (14.2857 4.7619) - (28.5714 0.0000) (38.0952 0.0000) (52.3810 4.7619) (61.9048 19.0476) - (66.6667 42.8571) (66.6667 57.1429) (61.9048 80.9524) (52.3810 95.2381) - (38.0952 100.0000) (28.5714 100.0000) -INDEX 49 STROKE 1 CENTER 19.0476 RIGHT 23.8095 - OPEN 4 (0.0000 80.9524) (9.5238 85.7143) (23.8095 100.0000) - (23.8095 0.0000) -INDEX 50 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 14 (4.7619 76.1905) (4.7619 80.9524) (9.5238 90.4762) - (14.2857 95.2381) (23.8095 100.0000) (42.8571 100.0000) (52.3810 95.2381) - (57.1429 90.4762) (61.9048 80.9524) (61.9048 71.4286) (57.1429 61.9048) - (47.6190 47.6190) (0.0000 0.0000) (66.6667 0.0000) -INDEX 51 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 15 (9.5238 100.0000) (61.9048 100.0000) (33.3333 61.9048) - (47.6190 61.9048) (57.1429 57.1429) (61.9048 52.3810) (66.6667 38.0952) - (66.6667 28.5714) (61.9048 14.2857) (52.3810 4.7619) (38.0952 0.0000) - (23.8095 0.0000) (9.5238 4.7619) (4.7619 9.5238) (0.0000 19.0476) -INDEX 52 STROKE 2 CENTER 33.3333 RIGHT 71.4286 - OPEN 3 (47.6190 100.0000) (0.0000 33.3333) (71.4286 33.3333) - OPEN 2 (47.6190 100.0000) (47.6190 0.0000) -INDEX 53 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 17 (57.1429 100.0000) (9.5238 100.0000) (4.7619 57.1429) - (9.5238 61.9048) (23.8095 66.6667) (38.0952 66.6667) (52.3810 61.9048) - (61.9048 52.3810) (66.6667 38.0952) (66.6667 28.5714) (61.9048 14.2857) - (52.3810 4.7619) (38.0952 0.0000) (23.8095 0.0000) (9.5238 4.7619) - (4.7619 9.5238) (0.0000 19.0476) -INDEX 54 STROKE 1 CENTER 28.5714 RIGHT 61.9048 - OPEN 23 (57.1429 85.7143) (52.3810 95.2381) (38.0952 100.0000) - (28.5714 100.0000) (14.2857 95.2381) (4.7619 80.9524) (0.0000 57.1429) - (0.0000 33.3333) (4.7619 14.2857) (14.2857 4.7619) (28.5714 0.0000) - (33.3333 0.0000) (47.6190 4.7619) (57.1429 14.2857) (61.9048 28.5714) - (61.9048 33.3333) (57.1429 47.6190) (47.6190 57.1429) (33.3333 61.9048) - (28.5714 61.9048) (14.2857 57.1429) (4.7619 47.6190) (0.0000 33.3333) -INDEX 55 STROKE 2 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (66.6667 100.0000) (19.0476 0.0000) - OPEN 2 (0.0000 100.0000) (66.6667 100.0000) -INDEX 56 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 29 (23.8095 100.0000) (9.5238 95.2381) (4.7619 85.7143) - (4.7619 76.1905) (9.5238 66.6667) (19.0476 61.9048) (38.0952 57.1429) - (52.3810 52.3810) (61.9048 42.8571) (66.6667 33.3333) (66.6667 19.0476) - (61.9048 9.5238) (57.1429 4.7619) (42.8571 0.0000) (23.8095 0.0000) - (9.5238 4.7619) (4.7619 9.5238) (0.0000 19.0476) (0.0000 33.3333) - (4.7619 42.8571) (14.2857 52.3810) (28.5714 57.1429) (47.6190 61.9048) - (57.1429 66.6667) (61.9048 76.1905) (61.9048 85.7143) (57.1429 95.2381) - (42.8571 100.0000) (23.8095 100.0000) -INDEX 57 STROKE 1 CENTER 33.3333 RIGHT 61.9048 - OPEN 23 (61.9048 66.6667) (57.1429 52.3810) (47.6190 42.8571) - (33.3333 38.0952) (28.5714 38.0952) (14.2857 42.8571) (4.7619 52.3810) - (0.0000 66.6667) (0.0000 71.4286) (4.7619 85.7143) (14.2857 95.2381) - (28.5714 100.0000) (33.3333 100.0000) (47.6190 95.2381) (57.1429 85.7143) - (61.9048 66.6667) (61.9048 42.8571) (57.1429 19.0476) (47.6190 4.7619) - (33.3333 0.0000) (23.8095 0.0000) (9.5238 4.7619) (4.7619 14.2857) -INDEX 58 STROKE 2 CENTER 4.7619 RIGHT 9.5238 - OPEN 5 (4.7619 66.6667) (0.0000 61.9048) (4.7619 57.1429) - (9.5238 61.9048) (4.7619 66.6667) - OPEN 5 (4.7619 9.5238) (0.0000 4.7619) (4.7619 0.0000) - (9.5238 4.7619) (4.7619 9.5238) -INDEX 59 STROKE 2 CENTER 4.7619 RIGHT 9.5238 - OPEN 5 (4.7619 66.6667) (0.0000 61.9048) (4.7619 57.1429) - (9.5238 61.9048) (4.7619 66.6667) - OPEN 8 (9.5238 4.7619) (4.7619 0.0000) (0.0000 4.7619) - (4.7619 9.5238) (9.5238 4.7619) (9.5238 -4.7619) (4.7619 -14.2857) - (0.0000 -19.0476) -INDEX 60 STROKE 1 CENTER 38.0952 RIGHT 76.1905 - OPEN 3 (76.1905 85.7143) (0.0000 42.8571) (76.1905 0.0000) -INDEX 61 STROKE 2 CENTER 42.8571 RIGHT 85.7143 - OPEN 2 (0.0000 57.1429) (85.7143 57.1429) - OPEN 2 (0.0000 28.5714) (85.7143 28.5714) -INDEX 62 STROKE 1 CENTER 38.0952 RIGHT 76.1905 - OPEN 3 (0.0000 85.7143) (76.1905 42.8571) (0.0000 0.0000) -INDEX 63 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 14 (0.0000 76.1905) (0.0000 80.9524) (4.7619 90.4762) - (9.5238 95.2381) (19.0476 100.0000) (38.0952 100.0000) (47.6190 95.2381) - (52.3810 90.4762) (57.1429 80.9524) (57.1429 71.4286) (52.3810 61.9048) - (47.6190 57.1429) (28.5714 47.6190) (28.5714 33.3333) - OPEN 5 (28.5714 9.5238) (23.8095 4.7619) (28.5714 0.0000) - (33.3333 4.7619) (28.5714 9.5238) -INDEX 64 STROKE 2 CENTER 28.5714 RIGHT 61.9048 - OPEN 8 (42.8571 52.3810) (33.3333 57.1429) (23.8095 57.1429) - (19.0476 47.6190) (19.0476 42.8571) (23.8095 33.3333) (33.3333 33.3333) - (42.8571 38.0952) - OPEN 19 (42.8571 57.1429) (42.8571 38.0952) (47.6190 33.3333) - (57.1429 33.3333) (61.9048 42.8571) (61.9048 47.6190) (57.1429 61.9048) - (47.6190 71.4286) (33.3333 76.1905) (28.5714 76.1905) (14.2857 71.4286) - (4.7619 61.9048) (0.0000 47.6190) (0.0000 42.8571) (4.7619 28.5714) - (14.2857 19.0476) (28.5714 14.2857) (33.3333 14.2857) (47.6190 19.0476) -INDEX 65 STROKE 3 CENTER 38.0952 RIGHT 76.1905 - OPEN 2 (38.0952 100.0000) (0.0000 0.0000) - OPEN 2 (38.0952 100.0000) (76.1905 0.0000) - OPEN 2 (14.2857 33.3333) (61.9048 33.3333) -INDEX 66 STROKE 3 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 9 (0.0000 100.0000) (42.8571 100.0000) (57.1429 95.2381) - (61.9048 90.4762) (66.6667 80.9524) (66.6667 71.4286) (61.9048 61.9048) - (57.1429 57.1429) (42.8571 52.3810) - OPEN 10 (0.0000 52.3810) (42.8571 52.3810) (57.1429 47.6190) - (61.9048 42.8571) (66.6667 33.3333) (66.6667 19.0476) (61.9048 9.5238) - (57.1429 4.7619) (42.8571 0.0000) (0.0000 0.0000) -INDEX 67 STROKE 1 CENTER 33.3333 RIGHT 71.4286 - OPEN 18 (71.4286 76.1905) (66.6667 85.7143) (57.1429 95.2381) - (47.6190 100.0000) (28.5714 100.0000) (19.0476 95.2381) (9.5238 85.7143) - (4.7619 76.1905) (0.0000 61.9048) (0.0000 38.0952) (4.7619 23.8095) - (9.5238 14.2857) (19.0476 4.7619) (28.5714 0.0000) (47.6190 0.0000) - (57.1429 4.7619) (66.6667 14.2857) (71.4286 23.8095) -INDEX 68 STROKE 2 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 12 (0.0000 100.0000) (33.3333 100.0000) (47.6190 95.2381) - (57.1429 85.7143) (61.9048 76.1905) (66.6667 61.9048) (66.6667 38.0952) - (61.9048 23.8095) (57.1429 14.2857) (47.6190 4.7619) (33.3333 0.0000) - (0.0000 0.0000) -INDEX 69 STROKE 4 CENTER 28.5714 RIGHT 61.9048 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (0.0000 100.0000) (61.9048 100.0000) - OPEN 2 (0.0000 52.3810) (38.0952 52.3810) - OPEN 2 (0.0000 0.0000) (61.9048 0.0000) -INDEX 70 STROKE 3 CENTER 28.5714 RIGHT 61.9048 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (0.0000 100.0000) (61.9048 100.0000) - OPEN 2 (0.0000 52.3810) (38.0952 52.3810) -INDEX 71 STROKE 2 CENTER 33.3333 RIGHT 71.4286 - OPEN 19 (71.4286 76.1905) (66.6667 85.7143) (57.1429 95.2381) - (47.6190 100.0000) (28.5714 100.0000) (19.0476 95.2381) (9.5238 85.7143) - (4.7619 76.1905) (0.0000 61.9048) (0.0000 38.0952) (4.7619 23.8095) - (9.5238 14.2857) (19.0476 4.7619) (28.5714 0.0000) (47.6190 0.0000) - (57.1429 4.7619) (66.6667 14.2857) (71.4286 23.8095) (71.4286 38.0952) - OPEN 2 (47.6190 38.0952) (71.4286 38.0952) -INDEX 72 STROKE 3 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (66.6667 100.0000) (66.6667 0.0000) - OPEN 2 (0.0000 52.3810) (66.6667 52.3810) -INDEX 73 STROKE 1 CENTER 0.0000 RIGHT 0.0000 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) -INDEX 74 STROKE 1 CENTER 28.5714 RIGHT 47.6190 - OPEN 10 (47.6190 100.0000) (47.6190 23.8095) (42.8571 9.5238) - (38.0952 4.7619) (28.5714 0.0000) (19.0476 0.0000) (9.5238 4.7619) - (4.7619 9.5238) (0.0000 23.8095) (0.0000 33.3333) -INDEX 75 STROKE 3 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (66.6667 100.0000) (0.0000 33.3333) - OPEN 2 (23.8095 57.1429) (66.6667 0.0000) -INDEX 76 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (0.0000 0.0000) (57.1429 0.0000) -INDEX 77 STROKE 4 CENTER 38.0952 RIGHT 76.1905 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (0.0000 100.0000) (38.0952 0.0000) - OPEN 2 (76.1905 100.0000) (38.0952 0.0000) - OPEN 2 (76.1905 100.0000) (76.1905 0.0000) -INDEX 78 STROKE 3 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (0.0000 100.0000) (66.6667 0.0000) - OPEN 2 (66.6667 100.0000) (66.6667 0.0000) -INDEX 79 STROKE 1 CENTER 38.0952 RIGHT 76.1905 - OPEN 21 (28.5714 100.0000) (19.0476 95.2381) (9.5238 85.7143) - (4.7619 76.1905) (0.0000 61.9048) (0.0000 38.0952) (4.7619 23.8095) - (9.5238 14.2857) (19.0476 4.7619) (28.5714 0.0000) (47.6190 0.0000) - (57.1429 4.7619) (66.6667 14.2857) (71.4286 23.8095) (76.1905 38.0952) - (76.1905 61.9048) (71.4286 76.1905) (66.6667 85.7143) (57.1429 95.2381) - (47.6190 100.0000) (28.5714 100.0000) -INDEX 80 STROKE 2 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 10 (0.0000 100.0000) (42.8571 100.0000) (57.1429 95.2381) - (61.9048 90.4762) (66.6667 80.9524) (66.6667 66.6667) (61.9048 57.1429) - (57.1429 52.3810) (42.8571 47.6190) (0.0000 47.6190) -INDEX 81 STROKE 2 CENTER 38.0952 RIGHT 76.1905 - OPEN 21 (28.5714 100.0000) (19.0476 95.2381) (9.5238 85.7143) - (4.7619 76.1905) (0.0000 61.9048) (0.0000 38.0952) (4.7619 23.8095) - (9.5238 14.2857) (19.0476 4.7619) (28.5714 0.0000) (47.6190 0.0000) - (57.1429 4.7619) (66.6667 14.2857) (71.4286 23.8095) (76.1905 38.0952) - (76.1905 61.9048) (71.4286 76.1905) (66.6667 85.7143) (57.1429 95.2381) - (47.6190 100.0000) (28.5714 100.0000) - OPEN 2 (42.8571 19.0476) (71.4286 -9.5238) -INDEX 82 STROKE 3 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 10 (0.0000 100.0000) (42.8571 100.0000) (57.1429 95.2381) - (61.9048 90.4762) (66.6667 80.9524) (66.6667 71.4286) (61.9048 61.9048) - (57.1429 57.1429) (42.8571 52.3810) (0.0000 52.3810) - OPEN 2 (33.3333 52.3810) (66.6667 0.0000) -INDEX 83 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 20 (66.6667 85.7143) (57.1429 95.2381) (42.8571 100.0000) - (23.8095 100.0000) (9.5238 95.2381) (0.0000 85.7143) (0.0000 76.1905) - (4.7619 66.6667) (9.5238 61.9048) (19.0476 57.1429) (47.6190 47.6190) - (57.1429 42.8571) (61.9048 38.0952) (66.6667 28.5714) (66.6667 14.2857) - (57.1429 4.7619) (42.8571 0.0000) (23.8095 0.0000) (9.5238 4.7619) - (0.0000 14.2857) -INDEX 84 STROKE 2 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (33.3333 100.0000) (33.3333 0.0000) - OPEN 2 (0.0000 100.0000) (66.6667 100.0000) -INDEX 85 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 10 (0.0000 100.0000) (0.0000 28.5714) (4.7619 14.2857) - (14.2857 4.7619) (28.5714 0.0000) (38.0952 0.0000) (52.3810 4.7619) - (61.9048 14.2857) (66.6667 28.5714) (66.6667 100.0000) -INDEX 86 STROKE 2 CENTER 38.0952 RIGHT 76.1905 - OPEN 2 (0.0000 100.0000) (38.0952 0.0000) - OPEN 2 (76.1905 100.0000) (38.0952 0.0000) -INDEX 87 STROKE 4 CENTER 47.6190 RIGHT 95.2381 - OPEN 2 (0.0000 100.0000) (23.8095 0.0000) - OPEN 2 (47.6190 100.0000) (23.8095 0.0000) - OPEN 2 (47.6190 100.0000) (71.4286 0.0000) - OPEN 2 (95.2381 100.0000) (71.4286 0.0000) -INDEX 88 STROKE 2 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (66.6667 0.0000) - OPEN 2 (66.6667 100.0000) (0.0000 0.0000) -INDEX 89 STROKE 2 CENTER 38.0952 RIGHT 76.1905 - OPEN 3 (0.0000 100.0000) (38.0952 52.3810) (38.0952 0.0000) - OPEN 2 (76.1905 100.0000) (38.0952 52.3810) -INDEX 90 STROKE 3 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (66.6667 100.0000) (0.0000 0.0000) - OPEN 2 (0.0000 100.0000) (66.6667 100.0000) - OPEN 2 (0.0000 0.0000) (66.6667 0.0000) -INDEX 91 STROKE 4 CENTER 14.2857 RIGHT 33.3333 - OPEN 2 (0.0000 119.0476) (0.0000 -33.3333) - OPEN 2 (4.7619 119.0476) (4.7619 -33.3333) - OPEN 2 (0.0000 119.0476) (33.3333 119.0476) - OPEN 2 (0.0000 -33.3333) (33.3333 -33.3333) -INDEX 92 STROKE 1 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (0.0000 100.0000) (66.6667 -14.2857) -INDEX 93 STROKE 4 CENTER 19.0476 RIGHT 33.3333 - OPEN 2 (28.5714 119.0476) (28.5714 -33.3333) - OPEN 2 (33.3333 119.0476) (33.3333 -33.3333) - OPEN 2 (0.0000 119.0476) (33.3333 119.0476) - OPEN 2 (0.0000 -33.3333) (33.3333 -33.3333) -INDEX 94 STROKE 2 CENTER 38.0952 RIGHT 76.1905 - OPEN 2 (38.0952 109.5238) (0.0000 42.8571) - OPEN 2 (38.0952 109.5238) (76.1905 42.8571) -INDEX 95 STROKE 1 CENTER 52.3810 RIGHT 104.7619 - OPEN 5 (0.0000 -33.3333) (104.7619 -33.3333) (104.7619 -28.5714) - (0.0000 -28.5714) (0.0000 -33.3333) -INDEX 96 STROKE 2 CENTER 14.2857 RIGHT 28.5714 - OPEN 2 (4.7619 100.0000) (28.5714 71.4286) - OPEN 3 (4.7619 100.0000) (0.0000 95.2381) (28.5714 71.4286) -INDEX 97 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 2 (57.1429 66.6667) (57.1429 0.0000) - OPEN 14 (57.1429 52.3810) (47.6190 61.9048) (38.0952 66.6667) - (23.8095 66.6667) (14.2857 61.9048) (4.7619 52.3810) (0.0000 38.0952) - (0.0000 28.5714) (4.7619 14.2857) (14.2857 4.7619) (23.8095 0.0000) - (38.0952 0.0000) (47.6190 4.7619) (57.1429 14.2857) -INDEX 98 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 14 (0.0000 52.3810) (9.5238 61.9048) (19.0476 66.6667) - (33.3333 66.6667) (42.8571 61.9048) (52.3810 52.3810) (57.1429 38.0952) - (57.1429 28.5714) (52.3810 14.2857) (42.8571 4.7619) (33.3333 0.0000) - (19.0476 0.0000) (9.5238 4.7619) (0.0000 14.2857) -INDEX 99 STROKE 1 CENTER 28.5714 RIGHT 57.1429 - OPEN 14 (57.1429 52.3810) (47.6190 61.9048) (38.0952 66.6667) - (23.8095 66.6667) (14.2857 61.9048) (4.7619 52.3810) (0.0000 38.0952) - (0.0000 28.5714) (4.7619 14.2857) (14.2857 4.7619) (23.8095 0.0000) - (38.0952 0.0000) (47.6190 4.7619) (57.1429 14.2857) -INDEX 100 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 2 (57.1429 100.0000) (57.1429 0.0000) - OPEN 14 (57.1429 52.3810) (47.6190 61.9048) (38.0952 66.6667) - (23.8095 66.6667) (14.2857 61.9048) (4.7619 52.3810) (0.0000 38.0952) - (0.0000 28.5714) (4.7619 14.2857) (14.2857 4.7619) (23.8095 0.0000) - (38.0952 0.0000) (47.6190 4.7619) (57.1429 14.2857) -INDEX 101 STROKE 1 CENTER 28.5714 RIGHT 57.1429 - OPEN 17 (0.0000 38.0952) (57.1429 38.0952) (57.1429 47.6190) - (52.3810 57.1429) (47.6190 61.9048) (38.0952 66.6667) (23.8095 66.6667) - (14.2857 61.9048) (4.7619 52.3810) (0.0000 38.0952) (0.0000 28.5714) - (4.7619 14.2857) (14.2857 4.7619) (23.8095 0.0000) (38.0952 0.0000) - (47.6190 4.7619) (57.1429 14.2857) -INDEX 102 STROKE 2 CENTER 14.2857 RIGHT 38.0952 - OPEN 5 (38.0952 100.0000) (28.5714 100.0000) (19.0476 95.2381) - (14.2857 80.9524) (14.2857 0.0000) - OPEN 2 (0.0000 66.6667) (33.3333 66.6667) -INDEX 103 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 7 (57.1429 66.6667) (57.1429 -9.5238) (52.3810 -23.8095) - (47.6190 -28.5714) (38.0952 -33.3333) (23.8095 -33.3333) (14.2857 -28.5714) - OPEN 14 (57.1429 52.3810) (47.6190 61.9048) (38.0952 66.6667) - (23.8095 66.6667) (14.2857 61.9048) (4.7619 52.3810) (0.0000 38.0952) - (0.0000 28.5714) (4.7619 14.2857) (14.2857 4.7619) (23.8095 0.0000) - (38.0952 0.0000) (47.6190 4.7619) (57.1429 14.2857) -INDEX 104 STROKE 2 CENTER 23.8095 RIGHT 52.3810 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 7 (0.0000 47.6190) (14.2857 61.9048) (23.8095 66.6667) - (38.0952 66.6667) (47.6190 61.9048) (52.3810 47.6190) (52.3810 0.0000) -INDEX 105 STROKE 2 CENTER 4.7619 RIGHT 9.5238 - OPEN 5 (0.0000 100.0000) (4.7619 95.2381) (9.5238 100.0000) - (4.7619 104.7619) (0.0000 100.0000) - OPEN 2 (4.7619 66.6667) (4.7619 0.0000) -INDEX 106 STROKE 2 CENTER 19.0476 RIGHT 28.5714 - OPEN 5 (19.0476 100.0000) (23.8095 95.2381) (28.5714 100.0000) - (23.8095 104.7619) (19.0476 100.0000) - OPEN 5 (23.8095 66.6667) (23.8095 -14.2857) (19.0476 -28.5714) - (9.5238 -33.3333) (0.0000 -33.3333) -INDEX 107 STROKE 3 CENTER 23.8095 RIGHT 52.3810 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) - OPEN 2 (47.6190 66.6667) (0.0000 19.0476) - OPEN 2 (19.0476 38.0952) (52.3810 0.0000) -INDEX 108 STROKE 1 CENTER 0.0000 RIGHT 0.0000 - OPEN 2 (0.0000 100.0000) (0.0000 0.0000) -INDEX 109 STROKE 3 CENTER 52.3810 RIGHT 104.7619 - OPEN 2 (0.0000 66.6667) (0.0000 0.0000) - OPEN 7 (0.0000 47.6190) (14.2857 61.9048) (23.8095 66.6667) - (38.0952 66.6667) (47.6190 61.9048) (52.3810 47.6190) (52.3810 0.0000) - OPEN 7 (52.3810 47.6190) (66.6667 61.9048) (76.1905 66.6667) - (90.4762 66.6667) (100.0000 61.9048) (104.7619 47.6190) (104.7619 0.0000) -INDEX 110 STROKE 2 CENTER 23.8095 RIGHT 52.3810 - OPEN 2 (0.0000 66.6667) (0.0000 0.0000) - OPEN 7 (0.0000 47.6190) (14.2857 61.9048) (23.8095 66.6667) - (38.0952 66.6667) (47.6190 61.9048) (52.3810 47.6190) (52.3810 0.0000) -INDEX 111 STROKE 1 CENTER 28.5714 RIGHT 61.9048 - OPEN 17 (23.8095 66.6667) (14.2857 61.9048) (4.7619 52.3810) - (0.0000 38.0952) (0.0000 28.5714) (4.7619 14.2857) (14.2857 4.7619) - (23.8095 0.0000) (38.0952 0.0000) (47.6190 4.7619) (57.1429 14.2857) - (61.9048 28.5714) (61.9048 38.0952) (57.1429 52.3810) (47.6190 61.9048) - (38.0952 66.6667) (23.8095 66.6667) -INDEX 112 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 2 (0.0000 66.6667) (0.0000 -33.3333) - OPEN 14 (0.0000 52.3810) (9.5238 61.9048) (19.0476 66.6667) - (33.3333 66.6667) (42.8571 61.9048) (52.3810 52.3810) (57.1429 38.0952) - (57.1429 28.5714) (52.3810 14.2857) (42.8571 4.7619) (33.3333 0.0000) - (19.0476 0.0000) (9.5238 4.7619) (0.0000 14.2857) -INDEX 113 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 2 (57.1429 66.6667) (57.1429 -33.3333) - OPEN 14 (57.1429 52.3810) (47.6190 61.9048) (38.0952 66.6667) - (23.8095 66.6667) (14.2857 61.9048) (4.7619 52.3810) (0.0000 38.0952) - (0.0000 28.5714) (4.7619 14.2857) (14.2857 4.7619) (23.8095 0.0000) - (38.0952 0.0000) (47.6190 4.7619) (57.1429 14.2857) -INDEX 114 STROKE 2 CENTER 14.2857 RIGHT 38.0952 - OPEN 2 (0.0000 66.6667) (0.0000 0.0000) - OPEN 5 (0.0000 38.0952) (4.7619 52.3810) (14.2857 61.9048) - (23.8095 66.6667) (38.0952 66.6667) -INDEX 115 STROKE 1 CENTER 23.8095 RIGHT 52.3810 - OPEN 17 (52.3810 52.3810) (47.6190 61.9048) (33.3333 66.6667) - (19.0476 66.6667) (4.7619 61.9048) (0.0000 52.3810) (4.7619 42.8571) - (14.2857 38.0952) (38.0952 33.3333) (47.6190 28.5714) (52.3810 19.0476) - (52.3810 14.2857) (47.6190 4.7619) (33.3333 0.0000) (19.0476 0.0000) - (4.7619 4.7619) (0.0000 14.2857) -INDEX 116 STROKE 2 CENTER 14.2857 RIGHT 38.0952 - OPEN 5 (14.2857 100.0000) (14.2857 19.0476) (19.0476 4.7619) - (28.5714 0.0000) (38.0952 0.0000) - OPEN 2 (0.0000 66.6667) (33.3333 66.6667) -INDEX 117 STROKE 2 CENTER 23.8095 RIGHT 52.3810 - OPEN 7 (0.0000 66.6667) (0.0000 19.0476) (4.7619 4.7619) - (14.2857 0.0000) (28.5714 0.0000) (38.0952 4.7619) (52.3810 19.0476) - OPEN 2 (52.3810 66.6667) (52.3810 0.0000) -INDEX 118 STROKE 2 CENTER 28.5714 RIGHT 57.1429 - OPEN 2 (0.0000 66.6667) (28.5714 0.0000) - OPEN 2 (57.1429 66.6667) (28.5714 0.0000) -INDEX 119 STROKE 4 CENTER 38.0952 RIGHT 76.1905 - OPEN 2 (0.0000 66.6667) (19.0476 0.0000) - OPEN 2 (38.0952 66.6667) (19.0476 0.0000) - OPEN 2 (38.0952 66.6667) (57.1429 0.0000) - OPEN 2 (76.1905 66.6667) (57.1429 0.0000) -INDEX 120 STROKE 2 CENTER 23.8095 RIGHT 52.3810 - OPEN 2 (0.0000 66.6667) (52.3810 0.0000) - OPEN 2 (52.3810 66.6667) (0.0000 0.0000) -INDEX 121 STROKE 2 CENTER 33.3333 RIGHT 61.9048 - OPEN 2 (4.7619 66.6667) (33.3333 0.0000) - OPEN 6 (61.9048 66.6667) (33.3333 0.0000) (23.8095 -19.0476) - (14.2857 -28.5714) (4.7619 -33.3333) (0.0000 -33.3333) -INDEX 122 STROKE 3 CENTER 23.8095 RIGHT 52.3810 - OPEN 2 (52.3810 66.6667) (0.0000 0.0000) - OPEN 2 (0.0000 66.6667) (52.3810 66.6667) - OPEN 2 (0.0000 0.0000) (52.3810 0.0000) -INDEX 123 STROKE 3 CENTER 14.2857 RIGHT 23.8095 - OPEN 10 (23.8095 119.0476) (14.2857 114.2857) (9.5238 109.5238) - (4.7619 100.0000) (4.7619 90.4762) (9.5238 80.9524) (14.2857 76.1905) - (19.0476 66.6667) (19.0476 57.1429) (9.5238 47.6190) - OPEN 17 (14.2857 114.2857) (9.5238 104.7619) (9.5238 95.2381) - (14.2857 85.7143) (19.0476 80.9524) (23.8095 71.4286) (23.8095 61.9048) - (19.0476 52.3810) (0.0000 42.8571) (19.0476 33.3333) (23.8095 23.8095) - (23.8095 14.2857) (19.0476 4.7619) (14.2857 0.0000) (9.5238 -9.5238) - (9.5238 -19.0476) (14.2857 -28.5714) - OPEN 10 (9.5238 38.0952) (19.0476 28.5714) (19.0476 19.0476) - (14.2857 9.5238) (9.5238 4.7619) (4.7619 -4.7619) (4.7619 -14.2857) - (9.5238 -23.8095) (14.2857 -28.5714) (23.8095 -33.3333) -INDEX 124 STROKE 1 CENTER 0.0000 RIGHT 0.0000 - OPEN 2 (0.0000 119.0476) (0.0000 -33.3333) -INDEX 125 STROKE 3 CENTER 9.5238 RIGHT 23.8095 - OPEN 10 (0.0000 119.0476) (9.5238 114.2857) (14.2857 109.5238) - (19.0476 100.0000) (19.0476 90.4762) (14.2857 80.9524) (9.5238 76.1905) - (4.7619 66.6667) (4.7619 57.1429) (14.2857 47.6190) - OPEN 17 (9.5238 114.2857) (14.2857 104.7619) (14.2857 95.2381) - (9.5238 85.7143) (4.7619 80.9524) (0.0000 71.4286) (0.0000 61.9048) - (4.7619 52.3810) (23.8095 42.8571) (4.7619 33.3333) (0.0000 23.8095) - (0.0000 14.2857) (4.7619 4.7619) (9.5238 0.0000) (14.2857 -9.5238) - (14.2857 -19.0476) (9.5238 -28.5714) - OPEN 10 (14.2857 38.0952) (4.7619 28.5714) (4.7619 19.0476) - (9.5238 9.5238) (14.2857 4.7619) (19.0476 -4.7619) (19.0476 -14.2857) - (14.2857 -23.8095) (9.5238 -28.5714) (0.0000 -33.3333) -INDEX 126 STROKE 2 CENTER 42.8571 RIGHT 85.7143 - OPEN 11 (0.0000 28.5714) (0.0000 38.0952) (4.7619 52.3810) - (14.2857 57.1429) (23.8095 57.1429) (33.3333 52.3810) (52.3810 38.0952) - (61.9048 33.3333) (71.4286 33.3333) (80.9524 38.0952) (85.7143 47.6190) - OPEN 11 (0.0000 38.0952) (4.7619 47.6190) (14.2857 52.3810) - (23.8095 52.3810) (33.3333 47.6190) (52.3810 33.3333) (61.9048 28.5714) - (71.4286 28.5714) (80.9524 33.3333) (85.7143 47.6190) (85.7143 57.1429) -INDEX 127 STROKE 2 CENTER 33.3333 RIGHT 66.6667 - OPEN 2 (52.3810 100.0000) (14.2857 -33.3333) - OPEN 17 (28.5714 66.6667) (14.2857 61.9048) (4.7619 52.3810) - (0.0000 38.0952) (0.0000 23.8095) (4.7619 14.2857) (14.2857 4.7619) - (28.5714 0.0000) (38.0952 0.0000) (52.3810 4.7619) (61.9048 14.2857) - (66.6667 28.5714) (66.6667 42.8571) (61.9048 52.3810) (52.3810 61.9048) - (38.0952 66.6667) (28.5714 66.6667) - - - -#/* NCGA GRAFNET:SANS-SERIF NORMAL*/ - -BEARING 32 L_SPACE 0.0 WIDTH 20.0 R_SPACE 0.0 -BEARING 33 L_SPACE 8.62 WIDTH 13.64 R_SPACE 8.48 -BEARING 34 L_SPACE 4.02 WIDTH 32.86 R_SPACE 9.32 -BEARING 35 L_SPACE 3.2 WIDTH 68.94 R_SPACE 4.86 -BEARING 36 L_SPACE 4.82 WIDTH 67.44 R_SPACE 4.72 -BEARING 37 L_SPACE 6.36 WIDTH 112.38 R_SPACE 4.5 -BEARING 38 L_SPACE 5.98 WIDTH 82.02 R_SPACE 0.54 -BEARING 39 L_SPACE 4.44 WIDTH 13.36 R_SPACE 9.18 -BEARING 40 L_SPACE 7.58 WIDTH 24.72 R_SPACE 6.26 -BEARING 41 L_SPACE 5.28 WIDTH 24.34 R_SPACE 8.92 -BEARING 42 L_SPACE 6.96 WIDTH 42.06 R_SPACE 4.86 -BEARING 43 L_SPACE 5.98 WIDTH 96.36 R_SPACE 5.56 -BEARING 44 L_SPACE 8.76 WIDTH 14.2 R_SPACE 7.78 -BEARING 45 L_SPACE 7.38 WIDTH 38.84 R_SPACE 7.66 -BEARING 46 L_SPACE 8.34 WIDTH 13.78 R_SPACE 8.62 -BEARING 47 L_SPACE 7.24 WIDTH 38.44 R_SPACE 8.2 -BEARING 48 L_SPACE 4.98 WIDTH 66.58 R_SPACE 5.42 -BEARING 49 L_SPACE 11.82 WIDTH 34.26 R_SPACE 30.9 -BEARING 50 L_SPACE 5.42 WIDTH 66.0 R_SPACE 5.56 -BEARING 51 L_SPACE 5.0 WIDTH 66.62 R_SPACE 5.38 -BEARING 52 L_SPACE 3.88 WIDTH 68.24 R_SPACE 4.86 -BEARING 53 L_SPACE 4.86 WIDTH 65.96 R_SPACE 6.16 -BEARING 54 L_SPACE 5.58 WIDTH 65.08 R_SPACE 6.32 -BEARING 55 L_SPACE 5.56 WIDTH 66.42 R_SPACE 5.0 -BEARING 56 L_SPACE 5.6 WIDTH 65.98 R_SPACE 5.4 -BEARING 57 L_SPACE 6.6 WIDTH 64.82 R_SPACE 5.56 -BEARING 58 L_SPACE 9.32 WIDTH 14.06 R_SPACE 7.38 -BEARING 59 L_SPACE 8.2 WIDTH 13.96 R_SPACE 8.58 -BEARING 60 L_SPACE 3.06 WIDTH 102.5 R_SPACE 2.36 -BEARING 61 L_SPACE 5.7 WIDTH 96.36 R_SPACE 5.84 -BEARING 62 L_SPACE 2.78 WIDTH 102.5 R_SPACE 2.64 -BEARING 63 L_SPACE 8.42 WIDTH 60.22 R_SPACE 8.34 -BEARING 64 L_SPACE 6.36 WIDTH 126.24 R_SPACE 6.1 -BEARING 65 L_SPACE 2.5 WIDTH 88.16 R_SPACE 1.8 -BEARING 66 L_SPACE 11.42 WIDTH 75.5 R_SPACE 5.54 -BEARING 67 L_SPACE 6.66 WIDTH 87.06 R_SPACE 6.4 -BEARING 68 L_SPACE 11.96 WIDTH 81.48 R_SPACE 6.66 -BEARING 69 L_SPACE 11.42 WIDTH 72.28 R_SPACE 4.86 -BEARING 70 L_SPACE 11.42 WIDTH 67.96 R_SPACE 5.42 -BEARING 71 L_SPACE 7.06 WIDTH 89.56 R_SPACE 11.28 -BEARING 72 L_SPACE 11.42 WIDTH 77.7 R_SPACE 11.0 -BEARING 73 L_SPACE 10.86 WIDTH 13.36 R_SPACE 10.44 -BEARING 74 L_SPACE 2.5 WIDTH 56.96 R_SPACE 9.88 -BEARING 75 L_SPACE 11.28 WIDTH 79.8 R_SPACE 1.38 -BEARING 76 L_SPACE 11.68 WIDTH 62.8 R_SPACE 2.5 -BEARING 77 L_SPACE 10.86 WIDTH 94.56 R_SPACE 10.16 -BEARING 78 L_SPACE 11.14 WIDTH 77.98 R_SPACE 11.0 -BEARING 79 L_SPACE 6.24 WIDTH 95.28 R_SPACE 6.4 -BEARING 80 L_SPACE 12.1 WIDTH 73.44 R_SPACE 6.9 -BEARING 81 L_SPACE 5.3 WIDTH 96.0 R_SPACE 6.6 -BEARING 82 L_SPACE 11.68 WIDTH 80.64 R_SPACE 4.02 -BEARING 83 L_SPACE 8.0 WIDTH 78.28 R_SPACE 6.16 -BEARING 84 L_SPACE 2.36 WIDTH 79.52 R_SPACE 2.92 -BEARING 85 L_SPACE 11.54 WIDTH 77.28 R_SPACE 11.28 -BEARING 86 L_SPACE 2.36 WIDTH 87.04 R_SPACE 3.06 -BEARING 87 L_SPACE 2.22 WIDTH 125.76 R_SPACE 3.06 -BEARING 88 L_SPACE 2.5 WIDTH 86.76 R_SPACE 3.2 -BEARING 89 L_SPACE 1.52 WIDTH 88.98 R_SPACE 1.94 -BEARING 90 L_SPACE 2.5 WIDTH 77.7 R_SPACE 4.58 -BEARING 91 L_SPACE 7.78 WIDTH 25.76 R_SPACE 5.0 -BEARING 92 L_SPACE 5.84 WIDTH 73.24 R_SPACE 5.7 -BEARING 93 L_SPACE 4.44 WIDTH 25.48 R_SPACE 8.62 -BEARING 94 L_SPACE 5.98 WIDTH 55.28 R_SPACE 8.06 -BEARING 95 L_SPACE -1.1 WIDTH 70.04 R_SPACE 0.4 -BEARING 96 L_SPACE 28.26 WIDTH 25.9 R_SPACE 26.74 -BEARING 97 L_SPACE 6.68 WIDTH 67.54 R_SPACE 2.78 -BEARING 98 L_SPACE 8.76 WIDTH 63.66 R_SPACE 4.56 -BEARING 99 L_SPACE 5.52 WIDTH 61.46 R_SPACE 6.26 -BEARING 100 L_SPACE 4.64 WIDTH 63.88 R_SPACE 8.48 -BEARING 101 L_SPACE 5.72 WIDTH 65.62 R_SPACE 5.66 -BEARING 102 L_SPACE 0.68 WIDTH 34.12 R_SPACE -0.12 -BEARING 103 L_SPACE 5.36 WIDTH 63.16 R_SPACE 8.48 -BEARING 104 L_SPACE 9.6 WIDTH 58.34 R_SPACE 9.04 -BEARING 105 L_SPACE 10.02 WIDTH 11.42 R_SPACE 9.32 -BEARING 106 L_SPACE -1.66 WIDTH 23.1 R_SPACE 9.32 -BEARING 107 L_SPACE 9.6 WIDTH 59.18 R_SPACE 0.54 -BEARING 108 L_SPACE 10.02 WIDTH 11.42 R_SPACE 9.32 -BEARING 109 L_SPACE 9.6 WIDTH 96.36 R_SPACE 9.6 -BEARING 110 L_SPACE 9.18 WIDTH 58.48 R_SPACE 9.32 -BEARING 111 L_SPACE 4.98 WIDTH 67.14 R_SPACE 4.86 -BEARING 112 L_SPACE 9.46 WIDTH 63.34 R_SPACE 4.2 -BEARING 113 L_SPACE 4.84 WIDTH 63.38 R_SPACE 8.76 -BEARING 114 L_SPACE 9.46 WIDTH 34.8 R_SPACE 1.94 -BEARING 115 L_SPACE 4.7 WIDTH 59.4 R_SPACE 5.24 -BEARING 116 L_SPACE 0.54 WIDTH 33.42 R_SPACE 0.68 -BEARING 117 L_SPACE 9.46 WIDTH 58.2 R_SPACE 9.32 -BEARING 118 L_SPACE 1.8 WIDTH 65.86 R_SPACE 1.66 -BEARING 119 L_SPACE 2.5 WIDTH 95.82 R_SPACE 1.8 -BEARING 120 L_SPACE 1.66 WIDTH 65.32 R_SPACE 2.36 -BEARING 121 L_SPACE 1.8 WIDTH 65.18 R_SPACE 2.36 -BEARING 122 L_SPACE 4.44 WIDTH 59.88 R_SPACE 5.0 -BEARING 123 L_SPACE 7.38 WIDTH 36.06 R_SPACE 10.44 -BEARING 124 L_SPACE 11.54 WIDTH 6.96 R_SPACE 12.24 -BEARING 125 L_SPACE 9.18 WIDTH 36.2 R_SPACE 8.48 -BEARING 126 L_SPACE 2.92 WIDTH 102.36 R_SPACE 2.64 - diff --git a/lib/glut-3.7.6/lib/glut/capturexfont.c b/lib/glut-3.7.6/lib/glut/capturexfont.c deleted file mode 100644 index 491d62f3c89ae73715126bc86fedfc40ce7b8209..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/capturexfont.c +++ /dev/null @@ -1,352 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* capturexfont.c connects to an X server and downloads a - bitmap font from which a C source file is generated, - encoding the font for GLUT's use. Example usage: - capturexfont.c 9x15 glutBitmap9By15 > glut_9x15.c */ - -#include -#include -#include -#include -#include -#include -#include - -#define MAX_GLYPHS_PER_GRAB 512 /* This is big enough for 2^9 - glyph character sets */ - -static void -outputChar(int num, int width, int height, - int xoff, int yoff, int advance, int data) -{ - if (width == 0 || height == 0) { - printf("#ifdef _WIN32\n"); - printf("/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with\n"); - printf(" a height or width of zero does not advance the raster position\n"); - printf(" as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */\n"); - printf("static const GLubyte ch%ddata[] = { 0x0 };\n", num); - printf("static const BitmapCharRec ch%d = {", num); - printf("%d,", 0); - printf("%d,", 0); - printf("%d,", xoff); - printf("%d,", yoff); - printf("%d,", advance); - printf("ch%ddata", num); - printf("};\n"); - printf("#else\n"); - } - printf("static const BitmapCharRec ch%d = {", num); - printf("%d,", width); - printf("%d,", height); - printf("%d,", xoff); - printf("%d,", yoff); - printf("%d,", advance); - if (data) { - printf("ch%ddata", num); - } else { - printf("0"); - } - printf("};\n"); - if (width == 0 || height == 0) { - printf("#endif\n"); - } - printf("\n"); -} - -/* Can't just use isprint because it only works for the range - of ASCII characters (ie, TRUE for isascii) and capturexfont - might be run on 16-bit fonts. */ -#define PRINTABLE(ch) (isascii(ch) ? isprint(ch) : 0) - -void -captureXFont(Display * dpy, Font font, char *xfont, char *name) -{ - int first, last, count; - int cnt, len; - Pixmap offscreen; - Window drawable; - XFontStruct *fontinfo; - XImage *image; - GC xgc; - XGCValues values; - int width, height; - int i, j, k; - XCharStruct *charinfo; - XChar2b character; - GLubyte *bitmapData; - int x, y; - int spanLength; - int charWidth, charHeight, maxSpanLength, pixwidth; - int grabList[MAX_GLYPHS_PER_GRAB]; - int glyphsPerGrab = MAX_GLYPHS_PER_GRAB; - int numToGrab; - int rows, pages, byte1, byte2, index; - int nullBitmap; - - drawable = RootWindow(dpy, DefaultScreen(dpy)); - - fontinfo = XQueryFont(dpy, font); - pages = fontinfo->max_char_or_byte2 - fontinfo->min_char_or_byte2 + 1; - first = (fontinfo->min_byte1 << 8) + fontinfo->min_char_or_byte2; - last = (fontinfo->max_byte1 << 8) + fontinfo->max_char_or_byte2; - count = last - first + 1; - - width = fontinfo->max_bounds.rbearing - - fontinfo->min_bounds.lbearing; - height = fontinfo->max_bounds.ascent + - fontinfo->max_bounds.descent; - /* 16-bit fonts have more than one row; indexing into - per_char is trickier. */ - rows = fontinfo->max_byte1 - fontinfo->min_byte1 + 1; - - maxSpanLength = (width + 7) / 8; - /* For portability reasons we don't use alloca for - bitmapData, but we could. */ - bitmapData = malloc(height * maxSpanLength); - /* Be careful determining the width of the pixmap; the X - protocol allows pixmaps of width 2^16-1 (unsigned short - size) but drawing coordinates max out at 2^15-1 (signed - short size). If the width is too large, we need to limit - the glyphs per grab. */ - if ((glyphsPerGrab * 8 * maxSpanLength) >= (1 << 15)) { - glyphsPerGrab = (1 << 15) / (8 * maxSpanLength); - } - pixwidth = glyphsPerGrab * 8 * maxSpanLength; - offscreen = XCreatePixmap(dpy, drawable, pixwidth, height, 1); - - values.font = font; - values.background = 0; - values.foreground = 0; - xgc = XCreateGC(dpy, offscreen, - GCFont | GCBackground | GCForeground, &values); - XFillRectangle(dpy, offscreen, xgc, 0, 0, - 8 * maxSpanLength * glyphsPerGrab, height); - XSetForeground(dpy, xgc, 1); - - numToGrab = 0; - if (fontinfo->per_char == NULL) { - charinfo = &(fontinfo->min_bounds); - charWidth = charinfo->rbearing - charinfo->lbearing; - charHeight = charinfo->ascent + charinfo->descent; - spanLength = (charWidth + 7) / 8; - } - printf("\n/* GENERATED FILE -- DO NOT MODIFY */\n\n"); - printf("#include \"glutbitmap.h\"\n\n"); - for (i = first; count; i++, count--) { - int undefined; - if (rows == 1) { - undefined = (fontinfo->min_char_or_byte2 > i || - fontinfo->max_char_or_byte2 < i); - } else { - byte2 = i & 0xff; - byte1 = i >> 8; - undefined = (fontinfo->min_char_or_byte2 > byte2 || - fontinfo->max_char_or_byte2 < byte2 || - fontinfo->min_byte1 > byte1 || - fontinfo->max_byte1 < byte1); - - } - if (undefined) { - goto PossiblyDoGrab; - } - if (fontinfo->per_char != NULL) { - if (rows == 1) { - index = i - fontinfo->min_char_or_byte2; - } else { - byte2 = i & 0xff; - byte1 = i >> 8; - index = - (byte1 - fontinfo->min_byte1) * pages + - (byte2 - fontinfo->min_char_or_byte2); - } - charinfo = &(fontinfo->per_char[index]); - charWidth = charinfo->rbearing - charinfo->lbearing; - charHeight = charinfo->ascent + charinfo->descent; - if (charWidth == 0 || charHeight == 0) { - if (charinfo->width != 0) { - /* Still must move raster pos even if empty character - - */ - outputChar(i, 0, 0, 0, 0, charinfo->width, 0); - } - goto PossiblyDoGrab; - } - } - grabList[numToGrab] = i; - character.byte2 = i & 255; - character.byte1 = i >> 8; - - /* XXX We could use XDrawImageString16 which would also - paint the backing rectangle but X server bugs in some - scalable font rasterizers makes it more effective to do - XFillRectangles to clear the pixmap and then - XDrawImage16 for the text. */ - XDrawString16(dpy, offscreen, xgc, - -charinfo->lbearing + 8 * maxSpanLength * numToGrab, - charinfo->ascent, &character, 1); - - numToGrab++; - - PossiblyDoGrab: - - if (numToGrab >= glyphsPerGrab || count == 1) { - image = XGetImage(dpy, offscreen, - 0, 0, pixwidth, height, 1, XYPixmap); - for (j = numToGrab - 1; j >= 0; j--) { - if (fontinfo->per_char != NULL) { - byte2 = grabList[j] & 0xff; - byte1 = grabList[j] >> 8; - index = - (byte1 - fontinfo->min_byte1) * pages + - (byte2 - fontinfo->min_char_or_byte2); - charinfo = &(fontinfo->per_char[index]); - charWidth = charinfo->rbearing - charinfo->lbearing; - charHeight = charinfo->ascent + charinfo->descent; - spanLength = (charWidth + 7) / 8; - } - memset(bitmapData, 0, height * spanLength); - for (y = 0; y < charHeight; y++) { - for (x = 0; x < charWidth; x++) { - if (XGetPixel(image, j * maxSpanLength * 8 + x, - charHeight - 1 - y)) { - /* Little endian machines (such as DEC Alpha) - could benefit from reversing the bit order - here and changing the GL_UNPACK_LSB_FIRST - parameter in glutBitmapCharacter to GL_TRUE. */ - bitmapData[y * spanLength + x / 8] |= - (1 << (7 - (x & 7))); - } - } - } - if (PRINTABLE(grabList[j])) { - printf("/* char: 0x%x '%c' */\n\n", - grabList[j], grabList[j]); - } else { - printf("/* char: 0x%x */\n\n", grabList[j]); - } - - /* Determine if the bitmap is null. */ - nullBitmap = 1; - len = (charinfo->ascent + charinfo->descent) * - ((charinfo->rbearing - charinfo->lbearing + 7) / 8); - cnt = 0; - while (cnt < len) { - for (k = 0; k < 16 && cnt < len; k++, cnt++) { - if (bitmapData[cnt] != 0) { - nullBitmap = 0; - } - } - } - - if (!nullBitmap) { - printf("static const GLubyte ch%ddata[] = {\n", grabList[j]); - len = (charinfo->ascent + charinfo->descent) * - ((charinfo->rbearing - charinfo->lbearing + 7) / 8); - cnt = 0; - while (cnt < len) { - for (k = 0; k < 16 && cnt < len; k++, cnt++) { - printf("0x%x,", bitmapData[cnt]); - } - printf("\n"); - } - printf("};\n\n"); - } else { - charWidth = 0; - charHeight = 0; - } - - outputChar(grabList[j], charWidth, charHeight, - -charinfo->lbearing, charinfo->descent, - charinfo->width, !nullBitmap); - } - XDestroyImage(image); - numToGrab = 0; - if (count > 0) { - XSetForeground(dpy, xgc, 0); - XFillRectangle(dpy, offscreen, xgc, 0, 0, - 8 * maxSpanLength * glyphsPerGrab, height); - XSetForeground(dpy, xgc, 1); - } - } - } - XFreeGC(dpy, xgc); - XFreePixmap(dpy, offscreen); - /* For portability reasons we don't use alloca for - bitmapData, but we could. */ - free(bitmapData); - - printf("static const BitmapCharRec * const chars[] = {\n"); - for (i = first; i <= last; i++) { - int undefined; - byte2 = i & 0xff; - byte1 = i >> 8; - undefined = (fontinfo->min_char_or_byte2 > byte2 || - fontinfo->max_char_or_byte2 < byte2 || - fontinfo->min_byte1 > byte1 || - fontinfo->max_byte1 < byte1); - if (undefined) { - printf("0,\n"); - } else { - if (fontinfo->per_char != NULL) { - if (rows == 1) { - index = i - fontinfo->min_char_or_byte2; - } else { - byte2 = i & 0xff; - byte1 = i >> 8; - index = - (byte1 - fontinfo->min_byte1) * pages + - (byte2 - fontinfo->min_char_or_byte2); - } - charinfo = &(fontinfo->per_char[index]); - charWidth = charinfo->rbearing - charinfo->lbearing; - charHeight = charinfo->ascent + charinfo->descent; - if (charWidth == 0 || charHeight == 0) { - if (charinfo->width == 0) { - printf("0,\n"); - continue; - } - } - } - printf("&ch%d,\n", i); - } - } - printf("};\n\n"); - printf("const BitmapFontRec %s = {\n", name); - printf("\"%s\",\n", xfont); - printf("%d,\n", last - first + 1); - printf("%d,\n", first); - printf("chars\n"); - printf("};\n\n"); - XFreeFont(dpy, fontinfo); -} - -int -main(int argc, char **argv) -{ - Display *dpy; - Font font; - - if (argc != 3) { - fprintf(stderr, "usage: capturexfont XFONT NAME\n"); - exit(1); - } - dpy = XOpenDisplay(NULL); - if (dpy == NULL) { - fprintf(stderr, "capturexfont: could not open X display\n"); - exit(1); - } - font = XLoadFont(dpy, argv[1]); - if (font == None) { - fprintf(stderr, "capturexfont: bad font\n"); - exit(1); - } - captureXFont(dpy, font, argv[1], argv[2]); - XCloseDisplay(dpy); - return 0; -} diff --git a/lib/glut-3.7.6/lib/glut/glut.def b/lib/glut-3.7.6/lib/glut/glut.def deleted file mode 100644 index 94da6ab852e1d1666fbd4bcdd1a0c30d505d4273..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut.def +++ /dev/null @@ -1,126 +0,0 @@ -DESCRIPTION 'OpenGL Utility Toolkit for Win32' - -VERSION 3.7 - -EXPORTS - - glutAddMenuEntry - glutAddSubMenu - glutAttachMenu - glutBitmapCharacter - glutBitmapLength - glutBitmapWidth - glutButtonBoxFunc - glutChangeToMenuEntry - glutChangeToSubMenu - glutCopyColormap - glutCreateMenu - __glutCreateMenuWithExit - glutCreateSubWindow - glutCreateWindow - __glutCreateWindowWithExit - glutDestroyMenu - glutDestroyWindow - glutDetachMenu - glutDeviceGet - glutDialsFunc - glutDisplayFunc - glutEnterGameMode - glutEntryFunc - glutEstablishOverlay - glutExtensionSupported - glutForceJoystickFunc - glutFullScreen - glutGameModeGet - glutGameModeString - glutGet - glutGetColor - glutGetMenu - glutGetModifiers - glutGetWindow - glutHideOverlay - glutHideWindow - glutIconifyWindow - glutIdleFunc - glutIgnoreKeyRepeat - glutInit - __glutInitWithExit - glutInitDisplayMode - glutInitDisplayString - glutInitWindowPosition - glutInitWindowSize - glutJoystickFunc - glutKeyboardFunc - glutKeyboardUpFunc - glutLayerGet - glutLeaveGameMode - glutMainLoop - glutMenuStateFunc - glutMenuStatusFunc - glutMotionFunc - glutMouseFunc - glutOverlayDisplayFunc - glutPassiveMotionFunc - glutPopWindow - glutPositionWindow - glutPostOverlayRedisplay - glutPostRedisplay - glutPostWindowOverlayRedisplay - glutPostWindowRedisplay - glutPushWindow - glutRemoveMenuItem - glutRemoveOverlay - glutReportErrors - glutReshapeFunc - glutReshapeWindow - glutSetColor - glutSetCursor - glutSetIconTitle - glutSetKeyRepeat - glutSetMenu - glutSetWindow - glutSetWindowTitle - glutSetupVideoResizing - glutShowOverlay - glutShowWindow - glutSolidCone - glutSolidCube - glutSolidDodecahedron - glutSolidIcosahedron - glutSolidOctahedron - glutSolidSphere - glutSolidTeapot - glutSolidTetrahedron - glutSolidTorus - glutSpaceballButtonFunc - glutSpaceballMotionFunc - glutSpaceballRotateFunc - glutSpecialFunc - glutSpecialUpFunc - glutStopVideoResizing - glutStrokeCharacter - glutStrokeLength - glutStrokeWidth - glutSwapBuffers - glutTabletButtonFunc - glutTabletMotionFunc - glutTimerFunc - glutUseLayer - glutVideoPan - glutVideoResize - glutVideoResizeGet - glutVisibilityFunc - glutWarpPointer - glutWindowStatusFunc - glutWireCone - glutWireCube - glutWireDodecahedron - glutWireIcosahedron - glutWireOctahedron - glutWireSphere - glutWireTeapot - glutWireTetrahedron - glutWireTorus -; __glutSetFCB -; __glutGetFCB - diff --git a/lib/glut-3.7.6/lib/glut/glut.ico b/lib/glut-3.7.6/lib/glut/glut.ico deleted file mode 100644 index ffe391db4538225a3a6ddb6508d2854d2f57bbf1..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/lib/glut/glut.ico and /dev/null differ diff --git a/lib/glut-3.7.6/lib/glut/glut.rc b/lib/glut-3.7.6/lib/glut/glut.rc deleted file mode 100644 index 774918e3b93d52026862e71fac3c760fa3c342d5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut.rc +++ /dev/null @@ -1 +0,0 @@ -GLUT_ICON ICON DISCARDABLE "glut.ico" diff --git a/lib/glut-3.7.6/lib/glut/glut32.dsp b/lib/glut-3.7.6/lib/glut/glut32.dsp deleted file mode 100644 index 305d0b272df64ed4d32bb9f92e6ce69d7d07fb77..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut32.dsp +++ /dev/null @@ -1,351 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glut32" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=glut32 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glut32.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glut32.mak" CFG="glut32 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glut32 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "glut32 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glut32 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLUT32_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLUT32_EXPORTS" /U "GLUT_USE_SGI_OPENGL" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib glu32.lib opengl32.lib /nologo /dll /machine:I386 /nodefaultlib:"glut32.lib" -# Begin Special Build Tool -TargetDir=.\Release -SOURCE="$(InputPath)" -PostBuild_Desc=Copying libraries, headers & dll's... -PostBuild_Cmds=copy $(TARGETDIR)\glut32.dll %WINDIR%\SYSTEM copy $(TARGETDIR)\glut32.lib "$(MSDevDir)\..\..\VC98\lib" copy ..\..\include\GL\glut.h "$(MSDevDir)\..\..\VC98\include\GL" -# End Special Build Tool - -!ELSEIF "$(CFG)" == "glut32 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLUT32_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GLUT32_EXPORTS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib glu32.lib opengl32.lib /nologo /dll /debug /machine:I386 /nodefaultlib:"glut32.lib" /pdbtype:sept -# Begin Special Build Tool -TargetDir=.\Debug -SOURCE="$(InputPath)" -PostBuild_Desc=Copying libraries, headers & dll's... -PostBuild_Cmds=copy $(TARGETDIR)\glut32.dll %WINDIR%\SYSTEM32 copy $(TARGETDIR)\glut32.lib "$(MSDevDir)\..\..\VC98\lib" copy ..\..\include\GL\glut.h "$(MSDevDir)\..\..\VC98\include\GL" -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "glut32 - Win32 Release" -# Name "glut32 - Win32 Debug" -# Begin Source File - -SOURCE=.\glut.def -# End Source File -# Begin Source File - -SOURCE=..\..\include\Gl\glut.h -# End Source File -# Begin Source File - -SOURCE=.\glut.ico -# End Source File -# Begin Source File - -SOURCE=.\glut.rc -# End Source File -# Begin Source File - -SOURCE=.\glut_8x13.c -# End Source File -# Begin Source File - -SOURCE=.\glut_9x15.c -# End Source File -# Begin Source File - -SOURCE=.\glut_bitmap.c -# End Source File -# Begin Source File - -SOURCE=.\glut_bwidth.c -# End Source File -# Begin Source File - -SOURCE=.\glut_cindex.c -# End Source File -# Begin Source File - -SOURCE=.\glut_cmap.c -# End Source File -# Begin Source File - -SOURCE=.\glut_cursor.c -# End Source File -# Begin Source File - -SOURCE=.\glut_dials.c -# End Source File -# Begin Source File - -SOURCE=.\glut_dstr.c -# End Source File -# Begin Source File - -SOURCE=.\glut_event.c -# End Source File -# Begin Source File - -SOURCE=.\glut_ext.c -# End Source File -# Begin Source File - -SOURCE=.\glut_fcb.c -# End Source File -# Begin Source File - -SOURCE=.\glut_fullscrn.c -# End Source File -# Begin Source File - -SOURCE=.\glut_gamemode.c -# End Source File -# Begin Source File - -SOURCE=.\glut_get.c -# End Source File -# Begin Source File - -SOURCE=.\glut_glxext.c -# End Source File -# Begin Source File - -SOURCE=.\glut_hel10.c -# End Source File -# Begin Source File - -SOURCE=.\glut_hel12.c -# End Source File -# Begin Source File - -SOURCE=.\glut_hel18.c -# End Source File -# Begin Source File - -SOURCE=.\glut_init.c -# End Source File -# Begin Source File - -SOURCE=.\glut_input.c -# End Source File -# Begin Source File - -SOURCE=.\glut_joy.c -# End Source File -# Begin Source File - -SOURCE=.\glut_key.c -# End Source File -# Begin Source File - -SOURCE=.\glut_keyctrl.c -# End Source File -# Begin Source File - -SOURCE=.\glut_keyup.c -# End Source File -# Begin Source File - -SOURCE=.\glut_mesa.c -# End Source File -# Begin Source File - -SOURCE=.\glut_modifier.c -# End Source File -# Begin Source File - -SOURCE=.\glut_mroman.c -# End Source File -# Begin Source File - -SOURCE=.\glut_overlay.c -# End Source File -# Begin Source File - -SOURCE=.\glut_roman.c -# End Source File -# Begin Source File - -SOURCE=.\glut_shapes.c -# End Source File -# Begin Source File - -SOURCE=.\glut_space.c -# End Source File -# Begin Source File - -SOURCE=.\glut_stroke.c -# End Source File -# Begin Source File - -SOURCE=.\glut_swap.c -# End Source File -# Begin Source File - -SOURCE=.\glut_swidth.c -# End Source File -# Begin Source File - -SOURCE=.\glut_tablet.c -# End Source File -# Begin Source File - -SOURCE=.\glut_teapot.c -# End Source File -# Begin Source File - -SOURCE=.\glut_tr10.c -# End Source File -# Begin Source File - -SOURCE=.\glut_tr24.c -# End Source File -# Begin Source File - -SOURCE=.\glut_util.c -# End Source File -# Begin Source File - -SOURCE=.\glut_vidresize.c -# End Source File -# Begin Source File - -SOURCE=.\glut_warp.c -# End Source File -# Begin Source File - -SOURCE=.\glut_win.c -# End Source File -# Begin Source File - -SOURCE=.\glut_winmisc.c -# End Source File -# Begin Source File - -SOURCE=.\glutbitmap.h -# End Source File -# Begin Source File - -SOURCE=.\include\Gl\glutf90.h -# End Source File -# Begin Source File - -SOURCE=.\glutint.h -# End Source File -# Begin Source File - -SOURCE=.\glutstroke.h -# End Source File -# Begin Source File - -SOURCE=.\glutwin32.h -# End Source File -# Begin Source File - -SOURCE="..\..\README-win32.txt" -# End Source File -# Begin Source File - -SOURCE=.\stroke.h -# End Source File -# Begin Source File - -SOURCE=.\win32_glx.c -# End Source File -# Begin Source File - -SOURCE=.\win32_glx.h -# End Source File -# Begin Source File - -SOURCE=.\win32_menu.c -# End Source File -# Begin Source File - -SOURCE=.\win32_util.c -# End Source File -# Begin Source File - -SOURCE=.\win32_winproc.c -# End Source File -# Begin Source File - -SOURCE=.\win32_x11.c -# End Source File -# Begin Source File - -SOURCE=.\win32_x11.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/lib/glut/glut_8x13.c b/lib/glut-3.7.6/lib/glut/glut_8x13.c deleted file mode 100644 index c88c66591d9d6c841e0d1b155d80c95d72d10769..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_8x13.c +++ /dev/null @@ -1,2073 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#define glutBitmap8By13 XXX -#include "glutbitmap.h" -#undef glutBitmap8By13 - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch0data[] = { 0x0 }; -static const BitmapCharRec ch0 = {1,1,0,0,8,ch0data}; -#else -static const BitmapCharRec ch0 = {0,0,0,0,8,0}; -#endif - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch32data[] = { 0x0 }; -static const BitmapCharRec ch32 = {1,1,0,0,8,ch32data}; -#else -static const BitmapCharRec ch32 = {0,0,0,0,8,0}; -#endif - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch127data[] = { 0x0 }; -static const BitmapCharRec ch127 = {1,1,0,0,8,ch127data}; -#else -static const BitmapCharRec ch127 = {0,0,0,0,8,0}; -#endif - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch160data[] = { 0x0 }; -static const BitmapCharRec ch160 = {1,1,0,0,8,ch160data}; -#else -static const BitmapCharRec ch160 = {0,0,0,0,8,0}; -#endif - -/* char: 0xff */ - -static const GLubyte ch255data[] = { -0x78,0x84,0x4,0x74,0x8c,0x84,0x84,0x84,0x0,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch255 = {6,12,-1,2,8,ch255data}; - -/* char: 0xfe */ - -static const GLubyte ch254data[] = { -0x80,0x80,0xb8,0xc4,0x84,0x84,0xc4,0xb8,0x80,0x80, -}; - -static const BitmapCharRec ch254 = {6,10,-1,2,8,ch254data}; - -/* char: 0xfd */ - -static const GLubyte ch253data[] = { -0x78,0x84,0x4,0x74,0x8c,0x84,0x84,0x84,0x0,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch253 = {6,12,-1,2,8,ch253data}; - -/* char: 0xfc */ - -static const GLubyte ch252data[] = { -0x74,0x88,0x88,0x88,0x88,0x88,0x0,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch252 = {6,10,-1,0,8,ch252data}; - -/* char: 0xfb */ - -static const GLubyte ch251data[] = { -0x74,0x88,0x88,0x88,0x88,0x88,0x0,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch251 = {6,10,-1,0,8,ch251data}; - -/* char: 0xfa */ - -static const GLubyte ch250data[] = { -0x74,0x88,0x88,0x88,0x88,0x88,0x0,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch250 = {6,10,-1,0,8,ch250data}; - -/* char: 0xf9 */ - -static const GLubyte ch249data[] = { -0x74,0x88,0x88,0x88,0x88,0x88,0x0,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch249 = {6,10,-1,0,8,ch249data}; - -/* char: 0xf8 */ - -static const GLubyte ch248data[] = { -0x80,0x78,0xc4,0xa4,0x94,0x8c,0x78,0x4, -}; - -static const BitmapCharRec ch248 = {6,8,-1,1,8,ch248data}; - -/* char: 0xf7 */ - -static const GLubyte ch247data[] = { -0x20,0x20,0x0,0xf8,0x0,0x20,0x20, -}; - -static const BitmapCharRec ch247 = {5,7,-1,-1,8,ch247data}; - -/* char: 0xf6 */ - -static const GLubyte ch246data[] = { -0x78,0x84,0x84,0x84,0x84,0x78,0x0,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch246 = {6,10,-1,0,8,ch246data}; - -/* char: 0xf5 */ - -static const GLubyte ch245data[] = { -0x78,0x84,0x84,0x84,0x84,0x78,0x0,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch245 = {6,10,-1,0,8,ch245data}; - -/* char: 0xf4 */ - -static const GLubyte ch244data[] = { -0x78,0x84,0x84,0x84,0x84,0x78,0x0,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch244 = {6,10,-1,0,8,ch244data}; - -/* char: 0xf3 */ - -static const GLubyte ch243data[] = { -0x78,0x84,0x84,0x84,0x84,0x78,0x0,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch243 = {6,10,-1,0,8,ch243data}; - -/* char: 0xf2 */ - -static const GLubyte ch242data[] = { -0x78,0x84,0x84,0x84,0x84,0x78,0x0,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch242 = {6,10,-1,0,8,ch242data}; - -/* char: 0xf1 */ - -static const GLubyte ch241data[] = { -0x84,0x84,0x84,0x84,0xc4,0xb8,0x0,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch241 = {6,10,-1,0,8,ch241data}; - -/* char: 0xf0 */ - -static const GLubyte ch240data[] = { -0x78,0x84,0x84,0x84,0x84,0x78,0x8,0x50,0x30,0x48, -}; - -static const BitmapCharRec ch240 = {6,10,-1,0,8,ch240data}; - -/* char: 0xef */ - -static const GLubyte ch239data[] = { -0xf8,0x20,0x20,0x20,0x20,0x60,0x0,0x0,0x50,0x50, -}; - -static const BitmapCharRec ch239 = {5,10,-1,0,8,ch239data}; - -/* char: 0xee */ - -static const GLubyte ch238data[] = { -0xf8,0x20,0x20,0x20,0x20,0x60,0x0,0x0,0x90,0x60, -}; - -static const BitmapCharRec ch238 = {5,10,-1,0,8,ch238data}; - -/* char: 0xed */ - -static const GLubyte ch237data[] = { -0xf8,0x20,0x20,0x20,0x20,0x60,0x0,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch237 = {5,10,-1,0,8,ch237data}; - -/* char: 0xec */ - -static const GLubyte ch236data[] = { -0xf8,0x20,0x20,0x20,0x20,0x60,0x0,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch236 = {5,10,-1,0,8,ch236data}; - -/* char: 0xeb */ - -static const GLubyte ch235data[] = { -0x78,0x84,0x80,0xfc,0x84,0x78,0x0,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch235 = {6,10,-1,0,8,ch235data}; - -/* char: 0xea */ - -static const GLubyte ch234data[] = { -0x78,0x84,0x80,0xfc,0x84,0x78,0x0,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch234 = {6,10,-1,0,8,ch234data}; - -/* char: 0xe9 */ - -static const GLubyte ch233data[] = { -0x78,0x84,0x80,0xfc,0x84,0x78,0x0,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch233 = {6,10,-1,0,8,ch233data}; - -/* char: 0xe8 */ - -static const GLubyte ch232data[] = { -0x78,0x84,0x80,0xfc,0x84,0x78,0x0,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch232 = {6,10,-1,0,8,ch232data}; - -/* char: 0xe7 */ - -static const GLubyte ch231data[] = { -0x20,0x10,0x78,0x84,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch231 = {6,8,-1,2,8,ch231data}; - -/* char: 0xe6 */ - -static const GLubyte ch230data[] = { -0x6c,0x92,0x90,0x7c,0x12,0x6c, -}; - -static const BitmapCharRec ch230 = {7,6,0,0,8,ch230data}; - -/* char: 0xe5 */ - -static const GLubyte ch229data[] = { -0x74,0x8c,0x84,0x7c,0x4,0x78,0x0,0x30,0x48,0x30, -}; - -static const BitmapCharRec ch229 = {6,10,-1,0,8,ch229data}; - -/* char: 0xe4 */ - -static const GLubyte ch228data[] = { -0x74,0x8c,0x84,0x7c,0x4,0x78,0x0,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch228 = {6,10,-1,0,8,ch228data}; - -/* char: 0xe3 */ - -static const GLubyte ch227data[] = { -0x74,0x8c,0x84,0x7c,0x4,0x78,0x0,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch227 = {6,10,-1,0,8,ch227data}; - -/* char: 0xe2 */ - -static const GLubyte ch226data[] = { -0x74,0x8c,0x84,0x7c,0x4,0x78,0x0,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch226 = {6,10,-1,0,8,ch226data}; - -/* char: 0xe1 */ - -static const GLubyte ch225data[] = { -0x74,0x8c,0x84,0x7c,0x4,0x78,0x0,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch225 = {6,10,-1,0,8,ch225data}; - -/* char: 0xe0 */ - -static const GLubyte ch224data[] = { -0x74,0x8c,0x84,0x7c,0x4,0x78,0x0,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch224 = {6,10,-1,0,8,ch224data}; - -/* char: 0xdf */ - -static const GLubyte ch223data[] = { -0x80,0xb8,0xc4,0x84,0x84,0xf8,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch223 = {6,9,-1,1,8,ch223data}; - -/* char: 0xde */ - -static const GLubyte ch222data[] = { -0x80,0x80,0x80,0xf8,0x84,0x84,0x84,0xf8,0x80, -}; - -static const BitmapCharRec ch222 = {6,9,-1,0,8,ch222data}; - -/* char: 0xdd */ - -static const GLubyte ch221data[] = { -0x20,0x20,0x20,0x20,0x50,0x88,0x88,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch221 = {5,10,-1,0,8,ch221data}; - -/* char: 0xdc */ - -static const GLubyte ch220data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch220 = {6,10,-1,0,8,ch220data}; - -/* char: 0xdb */ - -static const GLubyte ch219data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch219 = {6,10,-1,0,8,ch219data}; - -/* char: 0xda */ - -static const GLubyte ch218data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch218 = {6,10,-1,0,8,ch218data}; - -/* char: 0xd9 */ - -static const GLubyte ch217data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch217 = {6,10,-1,0,8,ch217data}; - -/* char: 0xd8 */ - -static const GLubyte ch216data[] = { -0x80,0x78,0xc4,0xa4,0xa4,0xa4,0x94,0x94,0x8c,0x78,0x4, -}; - -static const BitmapCharRec ch216 = {6,11,-1,1,8,ch216data}; - -/* char: 0xd7 */ - -static const GLubyte ch215data[] = { -0x84,0x48,0x30,0x30,0x48,0x84, -}; - -static const BitmapCharRec ch215 = {6,6,-1,-1,8,ch215data}; - -/* char: 0xd6 */ - -static const GLubyte ch214data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch214 = {7,10,0,0,8,ch214data}; - -/* char: 0xd5 */ - -static const GLubyte ch213data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x28,0x14, -}; - -static const BitmapCharRec ch213 = {7,10,0,0,8,ch213data}; - -/* char: 0xd4 */ - -static const GLubyte ch212data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x24,0x18, -}; - -static const BitmapCharRec ch212 = {7,10,0,0,8,ch212data}; - -/* char: 0xd3 */ - -static const GLubyte ch211data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch211 = {7,10,0,0,8,ch211data}; - -/* char: 0xd2 */ - -static const GLubyte ch210data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x8,0x10, -}; - -static const BitmapCharRec ch210 = {7,10,0,0,8,ch210data}; - -/* char: 0xd1 */ - -static const GLubyte ch209data[] = { -0x82,0x86,0x8a,0x92,0xa2,0xc2,0x82,0x0,0x28,0x14, -}; - -static const BitmapCharRec ch209 = {7,10,0,0,8,ch209data}; - -/* char: 0xd0 */ - -static const GLubyte ch208data[] = { -0xfc,0x42,0x42,0x42,0xe2,0x42,0x42,0x42,0xfc, -}; - -static const BitmapCharRec ch208 = {7,9,0,0,8,ch208data}; - -/* char: 0xcf */ - -static const GLubyte ch207data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x50,0x50, -}; - -static const BitmapCharRec ch207 = {5,10,-1,0,8,ch207data}; - -/* char: 0xce */ - -static const GLubyte ch206data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch206 = {5,10,-1,0,8,ch206data}; - -/* char: 0xcd */ - -static const GLubyte ch205data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch205 = {5,10,-1,0,8,ch205data}; - -/* char: 0xcc */ - -static const GLubyte ch204data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch204 = {5,10,-1,0,8,ch204data}; - -/* char: 0xcb */ - -static const GLubyte ch203data[] = { -0xfc,0x80,0x80,0xf0,0x80,0x80,0xfc,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch203 = {6,10,-1,0,8,ch203data}; - -/* char: 0xca */ - -static const GLubyte ch202data[] = { -0xfc,0x80,0x80,0xf0,0x80,0x80,0xfc,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch202 = {6,10,-1,0,8,ch202data}; - -/* char: 0xc9 */ - -static const GLubyte ch201data[] = { -0xfc,0x80,0x80,0xf0,0x80,0x80,0xfc,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch201 = {6,10,-1,0,8,ch201data}; - -/* char: 0xc8 */ - -static const GLubyte ch200data[] = { -0xfc,0x80,0x80,0xf0,0x80,0x80,0xfc,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch200 = {6,10,-1,0,8,ch200data}; - -/* char: 0xc7 */ - -static const GLubyte ch199data[] = { -0x20,0x10,0x78,0x84,0x80,0x80,0x80,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch199 = {6,11,-1,2,8,ch199data}; - -/* char: 0xc6 */ - -static const GLubyte ch198data[] = { -0x9e,0x90,0x90,0xf0,0x9c,0x90,0x90,0x90,0x6e, -}; - -static const BitmapCharRec ch198 = {7,9,0,0,8,ch198data}; - -/* char: 0xc5 */ - -static const GLubyte ch197data[] = { -0x84,0x84,0xfc,0x84,0x84,0x48,0x30,0x30,0x48,0x30, -}; - -static const BitmapCharRec ch197 = {6,10,-1,0,8,ch197data}; - -/* char: 0xc4 */ - -static const GLubyte ch196data[] = { -0x84,0x84,0xfc,0x84,0x84,0x48,0x30,0x0,0x48,0x48, -}; - -static const BitmapCharRec ch196 = {6,10,-1,0,8,ch196data}; - -/* char: 0xc3 */ - -static const GLubyte ch195data[] = { -0x84,0x84,0xfc,0x84,0x84,0x48,0x30,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch195 = {6,10,-1,0,8,ch195data}; - -/* char: 0xc2 */ - -static const GLubyte ch194data[] = { -0x84,0x84,0xfc,0x84,0x84,0x48,0x30,0x0,0x48,0x30, -}; - -static const BitmapCharRec ch194 = {6,10,-1,0,8,ch194data}; - -/* char: 0xc1 */ - -static const GLubyte ch193data[] = { -0x84,0x84,0xfc,0x84,0x84,0x48,0x30,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch193 = {6,10,-1,0,8,ch193data}; - -/* char: 0xc0 */ - -static const GLubyte ch192data[] = { -0x84,0x84,0xfc,0x84,0x84,0x48,0x30,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch192 = {6,10,-1,0,8,ch192data}; - -/* char: 0xbf */ - -static const GLubyte ch191data[] = { -0x78,0x84,0x84,0x80,0x40,0x20,0x20,0x0,0x20, -}; - -static const BitmapCharRec ch191 = {6,9,-1,0,8,ch191data}; - -/* char: 0xbe */ - -static const GLubyte ch190data[] = { -0x6,0x1a,0x12,0xa,0x66,0x92,0x10,0x20,0x90,0x60, -}; - -static const BitmapCharRec ch190 = {7,10,0,0,8,ch190data}; - -/* char: 0xbd */ - -static const GLubyte ch189data[] = { -0x1e,0x10,0xc,0x2,0xf2,0x4c,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch189 = {7,10,0,0,8,ch189data}; - -/* char: 0xbc */ - -static const GLubyte ch188data[] = { -0x6,0x1a,0x12,0xa,0xe6,0x42,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch188 = {7,10,0,0,8,ch188data}; - -/* char: 0xbb */ - -static const GLubyte ch187data[] = { -0x90,0x48,0x24,0x12,0x24,0x48,0x90, -}; - -static const BitmapCharRec ch187 = {7,7,0,-1,8,ch187data}; - -/* char: 0xba */ - -static const GLubyte ch186data[] = { -0xf0,0x0,0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch186 = {4,6,-1,-3,8,ch186data}; - -/* char: 0xb9 */ - -static const GLubyte ch185data[] = { -0xe0,0x40,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch185 = {3,6,-1,-4,8,ch185data}; - -/* char: 0xb8 */ - -static const GLubyte ch184data[] = { -0xc0,0x40, -}; - -static const BitmapCharRec ch184 = {2,2,-3,2,8,ch184data}; - -/* char: 0xb7 */ - -static const GLubyte ch183data[] = { -0xc0, -}; - -static const BitmapCharRec ch183 = {2,1,-3,-4,8,ch183data}; - -/* char: 0xb6 */ - -static const GLubyte ch182data[] = { -0x28,0x28,0x28,0x28,0x68,0xe8,0xe8,0xe8,0x7c, -}; - -static const BitmapCharRec ch182 = {6,9,-1,0,8,ch182data}; - -/* char: 0xb5 */ - -static const GLubyte ch181data[] = { -0x80,0xb4,0xcc,0x84,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch181 = {6,7,-1,1,8,ch181data}; - -/* char: 0xb4 */ - -static const GLubyte ch180data[] = { -0x80,0x40, -}; - -static const BitmapCharRec ch180 = {2,2,-3,-8,8,ch180data}; - -/* char: 0xb3 */ - -static const GLubyte ch179data[] = { -0x60,0x90,0x10,0x20,0x90,0x60, -}; - -static const BitmapCharRec ch179 = {4,6,-1,-4,8,ch179data}; - -/* char: 0xb2 */ - -static const GLubyte ch178data[] = { -0xf0,0x80,0x60,0x10,0x90,0x60, -}; - -static const BitmapCharRec ch178 = {4,6,-1,-4,8,ch178data}; - -/* char: 0xb1 */ - -static const GLubyte ch177data[] = { -0xf8,0x0,0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch177 = {5,7,-1,-1,8,ch177data}; - -/* char: 0xb0 */ - -static const GLubyte ch176data[] = { -0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch176 = {4,4,-2,-5,8,ch176data}; - -/* char: 0xaf */ - -static const GLubyte ch175data[] = { -0xfc, -}; - -static const BitmapCharRec ch175 = {6,1,-1,-8,8,ch175data}; - -/* char: 0xae */ - -static const GLubyte ch174data[] = { -0x38,0x44,0xaa,0xb2,0xaa,0xaa,0x92,0x44,0x38, -}; - -static const BitmapCharRec ch174 = {7,9,0,-1,8,ch174data}; - -/* char: 0xad */ - -static const GLubyte ch173data[] = { -0xfc, -}; - -static const BitmapCharRec ch173 = {6,1,-1,-4,8,ch173data}; - -/* char: 0xac */ - -static const GLubyte ch172data[] = { -0x4,0x4,0x4,0xfc, -}; - -static const BitmapCharRec ch172 = {6,4,-1,-1,8,ch172data}; - -/* char: 0xab */ - -static const GLubyte ch171data[] = { -0x12,0x24,0x48,0x90,0x48,0x24,0x12, -}; - -static const BitmapCharRec ch171 = {7,7,0,-1,8,ch171data}; - -/* char: 0xaa */ - -static const GLubyte ch170data[] = { -0xf8,0x0,0x78,0x88,0x78,0x8,0x70, -}; - -static const BitmapCharRec ch170 = {5,7,-1,-2,8,ch170data}; - -/* char: 0xa9 */ - -static const GLubyte ch169data[] = { -0x38,0x44,0x92,0xaa,0xa2,0xaa,0x92,0x44,0x38, -}; - -static const BitmapCharRec ch169 = {7,9,0,-1,8,ch169data}; - -/* char: 0xa8 */ - -static const GLubyte ch168data[] = { -0xd8, -}; - -static const BitmapCharRec ch168 = {5,1,-1,-8,8,ch168data}; - -/* char: 0xa7 */ - -static const GLubyte ch167data[] = { -0x60,0x90,0x10,0x60,0x90,0x90,0x60,0x80,0x90,0x60, -}; - -static const BitmapCharRec ch167 = {4,10,-2,0,8,ch167data}; - -/* char: 0xa6 */ - -static const GLubyte ch166data[] = { -0x80,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch166 = {1,9,-3,0,8,ch166data}; - -/* char: 0xa5 */ - -static const GLubyte ch165data[] = { -0x10,0x10,0x7c,0x10,0x7c,0x28,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch165 = {7,9,0,0,8,ch165data}; - -/* char: 0xa4 */ - -static const GLubyte ch164data[] = { -0x84,0x78,0x48,0x48,0x78,0x84, -}; - -static const BitmapCharRec ch164 = {6,6,-1,-1,8,ch164data}; - -/* char: 0xa3 */ - -static const GLubyte ch163data[] = { -0xdc,0x62,0x20,0x20,0x20,0x70,0x20,0x22,0x1c, -}; - -static const BitmapCharRec ch163 = {7,9,0,0,8,ch163data}; - -/* char: 0xa2 */ - -static const GLubyte ch162data[] = { -0x20,0x70,0xa8,0xa0,0xa0,0xa8,0x70,0x20, -}; - -static const BitmapCharRec ch162 = {5,8,-1,-1,8,ch162data}; - -/* char: 0xa1 */ - -static const GLubyte ch161data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80, -}; - -static const BitmapCharRec ch161 = {1,9,-3,0,8,ch161data}; - -/* char: 0x7e '~' */ - -static const GLubyte ch126data[] = { -0x90,0xa8,0x48, -}; - -static const BitmapCharRec ch126 = {5,3,-1,-6,8,ch126data}; - -/* char: 0x7d '}' */ - -static const GLubyte ch125data[] = { -0xe0,0x10,0x10,0x20,0x18,0x20,0x10,0x10,0xe0, -}; - -static const BitmapCharRec ch125 = {5,9,-1,0,8,ch125data}; - -/* char: 0x7c '|' */ - -static const GLubyte ch124data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch124 = {1,9,-3,0,8,ch124data}; - -/* char: 0x7b '{' */ - -static const GLubyte ch123data[] = { -0x38,0x40,0x40,0x20,0xc0,0x20,0x40,0x40,0x38, -}; - -static const BitmapCharRec ch123 = {5,9,-2,0,8,ch123data}; - -/* char: 0x7a 'z' */ - -static const GLubyte ch122data[] = { -0xfc,0x40,0x20,0x10,0x8,0xfc, -}; - -static const BitmapCharRec ch122 = {6,6,-1,0,8,ch122data}; - -/* char: 0x79 'y' */ - -static const GLubyte ch121data[] = { -0x78,0x84,0x4,0x74,0x8c,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch121 = {6,8,-1,2,8,ch121data}; - -/* char: 0x78 'x' */ - -static const GLubyte ch120data[] = { -0x84,0x48,0x30,0x30,0x48,0x84, -}; - -static const BitmapCharRec ch120 = {6,6,-1,0,8,ch120data}; - -/* char: 0x77 'w' */ - -static const GLubyte ch119data[] = { -0x44,0xaa,0x92,0x92,0x82,0x82, -}; - -static const BitmapCharRec ch119 = {7,6,0,0,8,ch119data}; - -/* char: 0x76 'v' */ - -static const GLubyte ch118data[] = { -0x20,0x50,0x50,0x88,0x88,0x88, -}; - -static const BitmapCharRec ch118 = {5,6,-1,0,8,ch118data}; - -/* char: 0x75 'u' */ - -static const GLubyte ch117data[] = { -0x74,0x88,0x88,0x88,0x88,0x88, -}; - -static const BitmapCharRec ch117 = {6,6,-1,0,8,ch117data}; - -/* char: 0x74 't' */ - -static const GLubyte ch116data[] = { -0x38,0x44,0x40,0x40,0x40,0xf8,0x40,0x40, -}; - -static const BitmapCharRec ch116 = {6,8,-1,0,8,ch116data}; - -/* char: 0x73 's' */ - -static const GLubyte ch115data[] = { -0x78,0x84,0x18,0x60,0x84,0x78, -}; - -static const BitmapCharRec ch115 = {6,6,-1,0,8,ch115data}; - -/* char: 0x72 'r' */ - -static const GLubyte ch114data[] = { -0x40,0x40,0x40,0x40,0x44,0xb8, -}; - -static const BitmapCharRec ch114 = {6,6,-1,0,8,ch114data}; - -/* char: 0x71 'q' */ - -static const GLubyte ch113data[] = { -0x4,0x4,0x4,0x74,0x8c,0x84,0x8c,0x74, -}; - -static const BitmapCharRec ch113 = {6,8,-1,2,8,ch113data}; - -/* char: 0x70 'p' */ - -static const GLubyte ch112data[] = { -0x80,0x80,0x80,0xb8,0xc4,0x84,0xc4,0xb8, -}; - -static const BitmapCharRec ch112 = {6,8,-1,2,8,ch112data}; - -/* char: 0x6f 'o' */ - -static const GLubyte ch111data[] = { -0x78,0x84,0x84,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch111 = {6,6,-1,0,8,ch111data}; - -/* char: 0x6e 'n' */ - -static const GLubyte ch110data[] = { -0x84,0x84,0x84,0x84,0xc4,0xb8, -}; - -static const BitmapCharRec ch110 = {6,6,-1,0,8,ch110data}; - -/* char: 0x6d 'm' */ - -static const GLubyte ch109data[] = { -0x82,0x92,0x92,0x92,0x92,0xec, -}; - -static const BitmapCharRec ch109 = {7,6,0,0,8,ch109data}; - -/* char: 0x6c 'l' */ - -static const GLubyte ch108data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x60, -}; - -static const BitmapCharRec ch108 = {5,9,-1,0,8,ch108data}; - -/* char: 0x6b 'k' */ - -static const GLubyte ch107data[] = { -0x84,0x88,0x90,0xe0,0x90,0x88,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch107 = {6,9,-1,0,8,ch107data}; - -/* char: 0x6a 'j' */ - -static const GLubyte ch106data[] = { -0x70,0x88,0x88,0x8,0x8,0x8,0x8,0x18,0x0,0x8, -}; - -static const BitmapCharRec ch106 = {5,10,-1,2,8,ch106data}; - -/* char: 0x69 'i' */ - -static const GLubyte ch105data[] = { -0xf8,0x20,0x20,0x20,0x20,0x60,0x0,0x20, -}; - -static const BitmapCharRec ch105 = {5,8,-1,0,8,ch105data}; - -/* char: 0x68 'h' */ - -static const GLubyte ch104data[] = { -0x84,0x84,0x84,0x84,0xc4,0xb8,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch104 = {6,9,-1,0,8,ch104data}; - -/* char: 0x67 'g' */ - -static const GLubyte ch103data[] = { -0x78,0x84,0x78,0x80,0x70,0x88,0x88,0x74, -}; - -static const BitmapCharRec ch103 = {6,8,-1,2,8,ch103data}; - -/* char: 0x66 'f' */ - -static const GLubyte ch102data[] = { -0x40,0x40,0x40,0x40,0xf8,0x40,0x40,0x44,0x38, -}; - -static const BitmapCharRec ch102 = {6,9,-1,0,8,ch102data}; - -/* char: 0x65 'e' */ - -static const GLubyte ch101data[] = { -0x78,0x84,0x80,0xfc,0x84,0x78, -}; - -static const BitmapCharRec ch101 = {6,6,-1,0,8,ch101data}; - -/* char: 0x64 'd' */ - -static const GLubyte ch100data[] = { -0x74,0x8c,0x84,0x84,0x8c,0x74,0x4,0x4,0x4, -}; - -static const BitmapCharRec ch100 = {6,9,-1,0,8,ch100data}; - -/* char: 0x63 'c' */ - -static const GLubyte ch99data[] = { -0x78,0x84,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch99 = {6,6,-1,0,8,ch99data}; - -/* char: 0x62 'b' */ - -static const GLubyte ch98data[] = { -0xb8,0xc4,0x84,0x84,0xc4,0xb8,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch98 = {6,9,-1,0,8,ch98data}; - -/* char: 0x61 'a' */ - -static const GLubyte ch97data[] = { -0x74,0x8c,0x84,0x7c,0x4,0x78, -}; - -static const BitmapCharRec ch97 = {6,6,-1,0,8,ch97data}; - -/* char: 0x60 '`' */ - -static const GLubyte ch96data[] = { -0x10,0x60,0xe0, -}; - -static const BitmapCharRec ch96 = {4,3,-2,-6,8,ch96data}; - -/* char: 0x5f '_' */ - -static const GLubyte ch95data[] = { -0xfe, -}; - -static const BitmapCharRec ch95 = {7,1,0,1,8,ch95data}; - -/* char: 0x5e '^' */ - -static const GLubyte ch94data[] = { -0x88,0x50,0x20, -}; - -static const BitmapCharRec ch94 = {5,3,-1,-6,8,ch94data}; - -/* char: 0x5d ']' */ - -static const GLubyte ch93data[] = { -0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf0, -}; - -static const BitmapCharRec ch93 = {4,9,-1,0,8,ch93data}; - -/* char: 0x5c '\' */ - -static const GLubyte ch92data[] = { -0x2,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x80, -}; - -static const BitmapCharRec ch92 = {7,9,0,0,8,ch92data}; - -/* char: 0x5b '[' */ - -static const GLubyte ch91data[] = { -0xf0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xf0, -}; - -static const BitmapCharRec ch91 = {4,9,-2,0,8,ch91data}; - -/* char: 0x5a 'Z' */ - -static const GLubyte ch90data[] = { -0xfc,0x80,0x80,0x40,0x20,0x10,0x8,0x4,0xfc, -}; - -static const BitmapCharRec ch90 = {6,9,-1,0,8,ch90data}; - -/* char: 0x59 'Y' */ - -static const GLubyte ch89data[] = { -0x10,0x10,0x10,0x10,0x10,0x28,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch89 = {7,9,0,0,8,ch89data}; - -/* char: 0x58 'X' */ - -static const GLubyte ch88data[] = { -0x82,0x82,0x44,0x28,0x10,0x28,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch88 = {7,9,0,0,8,ch88data}; - -/* char: 0x57 'W' */ - -static const GLubyte ch87data[] = { -0x44,0xaa,0x92,0x92,0x92,0x82,0x82,0x82,0x82, -}; - -static const BitmapCharRec ch87 = {7,9,0,0,8,ch87data}; - -/* char: 0x56 'V' */ - -static const GLubyte ch86data[] = { -0x10,0x28,0x28,0x28,0x44,0x44,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch86 = {7,9,0,0,8,ch86data}; - -/* char: 0x55 'U' */ - -static const GLubyte ch85data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch85 = {6,9,-1,0,8,ch85data}; - -/* char: 0x54 'T' */ - -static const GLubyte ch84data[] = { -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xfe, -}; - -static const BitmapCharRec ch84 = {7,9,0,0,8,ch84data}; - -/* char: 0x53 'S' */ - -static const GLubyte ch83data[] = { -0x78,0x84,0x4,0x4,0x78,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch83 = {6,9,-1,0,8,ch83data}; - -/* char: 0x52 'R' */ - -static const GLubyte ch82data[] = { -0x84,0x88,0x90,0xa0,0xf8,0x84,0x84,0x84,0xf8, -}; - -static const BitmapCharRec ch82 = {6,9,-1,0,8,ch82data}; - -/* char: 0x51 'Q' */ - -static const GLubyte ch81data[] = { -0x4,0x78,0x94,0xa4,0x84,0x84,0x84,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch81 = {6,10,-1,1,8,ch81data}; - -/* char: 0x50 'P' */ - -static const GLubyte ch80data[] = { -0x80,0x80,0x80,0x80,0xf8,0x84,0x84,0x84,0xf8, -}; - -static const BitmapCharRec ch80 = {6,9,-1,0,8,ch80data}; - -/* char: 0x4f 'O' */ - -static const GLubyte ch79data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch79 = {6,9,-1,0,8,ch79data}; - -/* char: 0x4e 'N' */ - -static const GLubyte ch78data[] = { -0x84,0x84,0x84,0x8c,0x94,0xa4,0xc4,0x84,0x84, -}; - -static const BitmapCharRec ch78 = {6,9,-1,0,8,ch78data}; - -/* char: 0x4d 'M' */ - -static const GLubyte ch77data[] = { -0x82,0x82,0x82,0x92,0x92,0xaa,0xc6,0x82,0x82, -}; - -static const BitmapCharRec ch77 = {7,9,0,0,8,ch77data}; - -/* char: 0x4c 'L' */ - -static const GLubyte ch76data[] = { -0xfc,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch76 = {6,9,-1,0,8,ch76data}; - -/* char: 0x4b 'K' */ - -static const GLubyte ch75data[] = { -0x84,0x88,0x90,0xa0,0xc0,0xa0,0x90,0x88,0x84, -}; - -static const BitmapCharRec ch75 = {6,9,-1,0,8,ch75data}; - -/* char: 0x4a 'J' */ - -static const GLubyte ch74data[] = { -0x70,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x3c, -}; - -static const BitmapCharRec ch74 = {6,9,-1,0,8,ch74data}; - -/* char: 0x49 'I' */ - -static const GLubyte ch73data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf8, -}; - -static const BitmapCharRec ch73 = {5,9,-1,0,8,ch73data}; - -/* char: 0x48 'H' */ - -static const GLubyte ch72data[] = { -0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch72 = {6,9,-1,0,8,ch72data}; - -/* char: 0x47 'G' */ - -static const GLubyte ch71data[] = { -0x74,0x8c,0x84,0x9c,0x80,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch71 = {6,9,-1,0,8,ch71data}; - -/* char: 0x46 'F' */ - -static const GLubyte ch70data[] = { -0x80,0x80,0x80,0x80,0xf0,0x80,0x80,0x80,0xfc, -}; - -static const BitmapCharRec ch70 = {6,9,-1,0,8,ch70data}; - -/* char: 0x45 'E' */ - -static const GLubyte ch69data[] = { -0xfc,0x80,0x80,0x80,0xf0,0x80,0x80,0x80,0xfc, -}; - -static const BitmapCharRec ch69 = {6,9,-1,0,8,ch69data}; - -/* char: 0x44 'D' */ - -static const GLubyte ch68data[] = { -0xfc,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xfc, -}; - -static const BitmapCharRec ch68 = {7,9,0,0,8,ch68data}; - -/* char: 0x43 'C' */ - -static const GLubyte ch67data[] = { -0x78,0x84,0x80,0x80,0x80,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch67 = {6,9,-1,0,8,ch67data}; - -/* char: 0x42 'B' */ - -static const GLubyte ch66data[] = { -0xfc,0x42,0x42,0x42,0x7c,0x42,0x42,0x42,0xfc, -}; - -static const BitmapCharRec ch66 = {7,9,0,0,8,ch66data}; - -/* char: 0x41 'A' */ - -static const GLubyte ch65data[] = { -0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x48,0x30, -}; - -static const BitmapCharRec ch65 = {6,9,-1,0,8,ch65data}; - -/* char: 0x40 '@' */ - -static const GLubyte ch64data[] = { -0x78,0x80,0x94,0xac,0xa4,0x9c,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch64 = {6,9,-1,0,8,ch64data}; - -/* char: 0x3f '?' */ - -static const GLubyte ch63data[] = { -0x10,0x0,0x10,0x10,0x8,0x4,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch63 = {6,9,-1,0,8,ch63data}; - -/* char: 0x3e '>' */ - -static const GLubyte ch62data[] = { -0x80,0x40,0x20,0x10,0x8,0x10,0x20,0x40,0x80, -}; - -static const BitmapCharRec ch62 = {5,9,-1,0,8,ch62data}; - -/* char: 0x3d '=' */ - -static const GLubyte ch61data[] = { -0xfc,0x0,0x0,0xfc, -}; - -static const BitmapCharRec ch61 = {6,4,-1,-2,8,ch61data}; - -/* char: 0x3c '<' */ - -static const GLubyte ch60data[] = { -0x8,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x8, -}; - -static const BitmapCharRec ch60 = {5,9,-2,0,8,ch60data}; - -/* char: 0x3b ';' */ - -static const GLubyte ch59data[] = { -0x80,0x60,0x70,0x0,0x0,0x20,0x70,0x20, -}; - -static const BitmapCharRec ch59 = {4,8,-1,1,8,ch59data}; - -/* char: 0x3a ':' */ - -static const GLubyte ch58data[] = { -0x40,0xe0,0x40,0x0,0x0,0x40,0xe0,0x40, -}; - -static const BitmapCharRec ch58 = {3,8,-2,1,8,ch58data}; - -/* char: 0x39 '9' */ - -static const GLubyte ch57data[] = { -0x70,0x8,0x4,0x4,0x74,0x8c,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch57 = {6,9,-1,0,8,ch57data}; - -/* char: 0x38 '8' */ - -static const GLubyte ch56data[] = { -0x78,0x84,0x84,0x84,0x78,0x84,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch56 = {6,9,-1,0,8,ch56data}; - -/* char: 0x37 '7' */ - -static const GLubyte ch55data[] = { -0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x4,0xfc, -}; - -static const BitmapCharRec ch55 = {6,9,-1,0,8,ch55data}; - -/* char: 0x36 '6' */ - -static const GLubyte ch54data[] = { -0x78,0x84,0x84,0xc4,0xb8,0x80,0x80,0x40,0x38, -}; - -static const BitmapCharRec ch54 = {6,9,-1,0,8,ch54data}; - -/* char: 0x35 '5' */ - -static const GLubyte ch53data[] = { -0x78,0x84,0x4,0x4,0xc4,0xb8,0x80,0x80,0xfc, -}; - -static const BitmapCharRec ch53 = {6,9,-1,0,8,ch53data}; - -/* char: 0x34 '4' */ - -static const GLubyte ch52data[] = { -0x8,0x8,0xfc,0x88,0x88,0x48,0x28,0x18,0x8, -}; - -static const BitmapCharRec ch52 = {6,9,-1,0,8,ch52data}; - -/* char: 0x33 '3' */ - -static const GLubyte ch51data[] = { -0x78,0x84,0x4,0x4,0x38,0x10,0x8,0x4,0xfc, -}; - -static const BitmapCharRec ch51 = {6,9,-1,0,8,ch51data}; - -/* char: 0x32 '2' */ - -static const GLubyte ch50data[] = { -0xfc,0x80,0x40,0x30,0x8,0x4,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch50 = {6,9,-1,0,8,ch50data}; - -/* char: 0x31 '1' */ - -static const GLubyte ch49data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xa0,0x60,0x20, -}; - -static const BitmapCharRec ch49 = {5,9,-1,0,8,ch49data}; - -/* char: 0x30 '0' */ - -static const GLubyte ch48data[] = { -0x30,0x48,0x84,0x84,0x84,0x84,0x84,0x48,0x30, -}; - -static const BitmapCharRec ch48 = {6,9,-1,0,8,ch48data}; - -/* char: 0x2f '/' */ - -static const GLubyte ch47data[] = { -0x80,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x2, -}; - -static const BitmapCharRec ch47 = {7,9,0,0,8,ch47data}; - -/* char: 0x2e '.' */ - -static const GLubyte ch46data[] = { -0x40,0xe0,0x40, -}; - -static const BitmapCharRec ch46 = {3,3,-2,1,8,ch46data}; - -/* char: 0x2d '-' */ - -static const GLubyte ch45data[] = { -0xfc, -}; - -static const BitmapCharRec ch45 = {6,1,-1,-4,8,ch45data}; - -/* char: 0x2c ',' */ - -static const GLubyte ch44data[] = { -0x80,0x60,0x70, -}; - -static const BitmapCharRec ch44 = {4,3,-1,1,8,ch44data}; - -/* char: 0x2b '+' */ - -static const GLubyte ch43data[] = { -0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch43 = {5,5,-1,-2,8,ch43data}; - -/* char: 0x2a '*' */ - -static const GLubyte ch42data[] = { -0x48,0x30,0xfc,0x30,0x48, -}; - -static const BitmapCharRec ch42 = {6,5,-1,-2,8,ch42data}; - -/* char: 0x29 ')' */ - -static const GLubyte ch41data[] = { -0x80,0x40,0x40,0x20,0x20,0x20,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch41 = {3,9,-2,0,8,ch41data}; - -/* char: 0x28 '(' */ - -static const GLubyte ch40data[] = { -0x20,0x40,0x40,0x80,0x80,0x80,0x40,0x40,0x20, -}; - -static const BitmapCharRec ch40 = {3,9,-3,0,8,ch40data}; - -/* char: 0x27 ''' */ - -static const GLubyte ch39data[] = { -0x80,0x60,0x70, -}; - -static const BitmapCharRec ch39 = {4,3,-1,-6,8,ch39data}; - -/* char: 0x26 '&' */ - -static const GLubyte ch38data[] = { -0x74,0x88,0x94,0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch38 = {6,7,-1,0,8,ch38data}; - -/* char: 0x25 '%' */ - -static const GLubyte ch37data[] = { -0x88,0x54,0x48,0x20,0x10,0x10,0x48,0xa4,0x44, -}; - -static const BitmapCharRec ch37 = {6,9,-1,0,8,ch37data}; - -/* char: 0x24 '$' */ - -static const GLubyte ch36data[] = { -0x20,0xf0,0x28,0x70,0xa0,0x78,0x20, -}; - -static const BitmapCharRec ch36 = {5,7,-1,-1,8,ch36data}; - -/* char: 0x23 '#' */ - -static const GLubyte ch35data[] = { -0x48,0x48,0xfc,0x48,0xfc,0x48,0x48, -}; - -static const BitmapCharRec ch35 = {6,7,-1,-1,8,ch35data}; - -/* char: 0x22 '"' */ - -static const GLubyte ch34data[] = { -0x90,0x90,0x90, -}; - -static const BitmapCharRec ch34 = {4,3,-2,-6,8,ch34data}; - -/* char: 0x21 '!' */ - -static const GLubyte ch33data[] = { -0x80,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch33 = {1,9,-3,0,8,ch33data}; - -/* char: 0x1f */ - -static const GLubyte ch31data[] = { -0x80, -}; - -static const BitmapCharRec ch31 = {1,1,-3,-3,8,ch31data}; - -/* char: 0x1e */ - -static const GLubyte ch30data[] = { -0xdc,0x62,0x20,0x20,0x20,0x70,0x20,0x22,0x1c, -}; - -static const BitmapCharRec ch30 = {7,9,0,0,8,ch30data}; - -/* char: 0x1d */ - -static const GLubyte ch29data[] = { -0x80,0x40,0xfe,0x10,0xfe,0x4,0x2, -}; - -static const BitmapCharRec ch29 = {7,7,0,0,8,ch29data}; - -/* char: 0x1c */ - -static const GLubyte ch28data[] = { -0x88,0x48,0x48,0x48,0x48,0xfc, -}; - -static const BitmapCharRec ch28 = {6,6,-1,0,8,ch28data}; - -/* char: 0x1b */ - -static const GLubyte ch27data[] = { -0xfe,0x80,0x20,0x8,0x2,0x8,0x20,0x80, -}; - -static const BitmapCharRec ch27 = {7,8,0,0,8,ch27data}; - -/* char: 0x1a */ - -static const GLubyte ch26data[] = { -0xfe,0x2,0x8,0x20,0x80,0x20,0x8,0x2, -}; - -static const BitmapCharRec ch26 = {7,8,0,0,8,ch26data}; - -/* char: 0x19 */ - -static const GLubyte ch25data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch25 = {1,13,-3,2,8,ch25data}; - -/* char: 0x18 */ - -static const GLubyte ch24data[] = { -0x10,0x10,0x10,0x10,0x10,0xff, -}; - -static const BitmapCharRec ch24 = {8,6,0,2,8,ch24data}; - -/* char: 0x17 */ - -static const GLubyte ch23data[] = { -0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -}; - -static const BitmapCharRec ch23 = {8,8,0,-3,8,ch23data}; - -/* char: 0x16 */ - -static const GLubyte ch22data[] = { -0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -}; - -static const BitmapCharRec ch22 = {4,13,0,2,8,ch22data}; - -/* char: 0x15 */ - -static const GLubyte ch21data[] = { -0x80,0x80,0x80,0x80,0x80,0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch21 = {5,13,-3,2,8,ch21data}; - -/* char: 0x14 */ - -static const GLubyte ch20data[] = { -0xff, -}; - -static const BitmapCharRec ch20 = {8,1,0,1,8,ch20data}; - -/* char: 0x13 */ - -static const GLubyte ch19data[] = { -0xff, -}; - -static const BitmapCharRec ch19 = {8,1,0,-1,8,ch19data}; - -/* char: 0x12 */ - -static const GLubyte ch18data[] = { -0xff, -}; - -static const BitmapCharRec ch18 = {8,1,0,-3,8,ch18data}; - -/* char: 0x11 */ - -static const GLubyte ch17data[] = { -0xff, -}; - -static const BitmapCharRec ch17 = {8,1,0,-5,8,ch17data}; - -/* char: 0x10 */ - -static const GLubyte ch16data[] = { -0xff, -}; - -static const BitmapCharRec ch16 = {8,1,0,-7,8,ch16data}; - -/* char: 0xf */ - -static const GLubyte ch15data[] = { -0x10,0x10,0x10,0x10,0x10,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -}; - -static const BitmapCharRec ch15 = {8,13,0,2,8,ch15data}; - -/* char: 0xe */ - -static const GLubyte ch14data[] = { -0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch14 = {5,8,-3,-3,8,ch14data}; - -/* char: 0xd */ - -static const GLubyte ch13data[] = { -0x80,0x80,0x80,0x80,0x80,0xf8, -}; - -static const BitmapCharRec ch13 = {5,6,-3,2,8,ch13data}; - -/* char: 0xc */ - -static const GLubyte ch12data[] = { -0x10,0x10,0x10,0x10,0x10,0xf0, -}; - -static const BitmapCharRec ch12 = {4,6,0,2,8,ch12data}; - -/* char: 0xb */ - -static const GLubyte ch11data[] = { -0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -}; - -static const BitmapCharRec ch11 = {4,8,0,-3,8,ch11data}; - -/* char: 0xa */ - -static const GLubyte ch10data[] = { -0x8,0x8,0x8,0x8,0x3e,0x20,0x50,0x88,0x88, -}; - -static const BitmapCharRec ch10 = {7,9,0,2,8,ch10data}; - -/* char: 0x9 */ - -static const GLubyte ch9data[] = { -0x3e,0x20,0x20,0x20,0x88,0x98,0xa8,0xc8,0x88, -}; - -static const BitmapCharRec ch9 = {7,9,0,2,8,ch9data}; - -/* char: 0x8 */ - -static const GLubyte ch8data[] = { -0xfe,0x10,0x10,0xfe,0x10,0x10, -}; - -static const BitmapCharRec ch8 = {7,6,0,0,8,ch8data}; - -/* char: 0x7 */ - -static const GLubyte ch7data[] = { -0x70,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch7 = {5,4,-1,-5,8,ch7data}; - -/* char: 0x6 */ - -static const GLubyte ch6data[] = { -0x20,0x20,0x3c,0x20,0x3e,0xf8,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch6 = {7,9,0,2,8,ch6data}; - -/* char: 0x5 */ - -static const GLubyte ch5data[] = { -0x22,0x22,0x3c,0x22,0x3c,0x78,0x80,0x80,0x78, -}; - -static const BitmapCharRec ch5 = {7,9,0,2,8,ch5data}; - -/* char: 0x4 */ - -static const GLubyte ch4data[] = { -0x10,0x10,0x1c,0x10,0x9e,0x80,0xe0,0x80,0xf0, -}; - -static const BitmapCharRec ch4 = {7,9,0,2,8,ch4data}; - -/* char: 0x3 */ - -static const GLubyte ch3data[] = { -0x8,0x8,0x8,0x3e,0x88,0x88,0xf8,0x88,0x88, -}; - -static const BitmapCharRec ch3 = {7,9,0,2,8,ch3data}; - -/* char: 0x2 */ - -static const GLubyte ch2data[] = { -0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa, -}; - -static const BitmapCharRec ch2 = {8,12,0,2,8,ch2data}; - -/* char: 0x1 */ - -static const GLubyte ch1data[] = { -0x10,0x38,0x7c,0xfe,0x7c,0x38,0x10, -}; - -static const BitmapCharRec ch1 = {7,7,0,-1,8,ch1data}; - -static const BitmapCharRec * const chars[] = { -&ch0, -&ch1, -&ch2, -&ch3, -&ch4, -&ch5, -&ch6, -&ch7, -&ch8, -&ch9, -&ch10, -&ch11, -&ch12, -&ch13, -&ch14, -&ch15, -&ch16, -&ch17, -&ch18, -&ch19, -&ch20, -&ch21, -&ch22, -&ch23, -&ch24, -&ch25, -&ch26, -&ch27, -&ch28, -&ch29, -&ch30, -&ch31, -&ch32, -&ch33, -&ch34, -&ch35, -&ch36, -&ch37, -&ch38, -&ch39, -&ch40, -&ch41, -&ch42, -&ch43, -&ch44, -&ch45, -&ch46, -&ch47, -&ch48, -&ch49, -&ch50, -&ch51, -&ch52, -&ch53, -&ch54, -&ch55, -&ch56, -&ch57, -&ch58, -&ch59, -&ch60, -&ch61, -&ch62, -&ch63, -&ch64, -&ch65, -&ch66, -&ch67, -&ch68, -&ch69, -&ch70, -&ch71, -&ch72, -&ch73, -&ch74, -&ch75, -&ch76, -&ch77, -&ch78, -&ch79, -&ch80, -&ch81, -&ch82, -&ch83, -&ch84, -&ch85, -&ch86, -&ch87, -&ch88, -&ch89, -&ch90, -&ch91, -&ch92, -&ch93, -&ch94, -&ch95, -&ch96, -&ch97, -&ch98, -&ch99, -&ch100, -&ch101, -&ch102, -&ch103, -&ch104, -&ch105, -&ch106, -&ch107, -&ch108, -&ch109, -&ch110, -&ch111, -&ch112, -&ch113, -&ch114, -&ch115, -&ch116, -&ch117, -&ch118, -&ch119, -&ch120, -&ch121, -&ch122, -&ch123, -&ch124, -&ch125, -&ch126, -&ch127, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -&ch160, -&ch161, -&ch162, -&ch163, -&ch164, -&ch165, -&ch166, -&ch167, -&ch168, -&ch169, -&ch170, -&ch171, -&ch172, -&ch173, -&ch174, -&ch175, -&ch176, -&ch177, -&ch178, -&ch179, -&ch180, -&ch181, -&ch182, -&ch183, -&ch184, -&ch185, -&ch186, -&ch187, -&ch188, -&ch189, -&ch190, -&ch191, -&ch192, -&ch193, -&ch194, -&ch195, -&ch196, -&ch197, -&ch198, -&ch199, -&ch200, -&ch201, -&ch202, -&ch203, -&ch204, -&ch205, -&ch206, -&ch207, -&ch208, -&ch209, -&ch210, -&ch211, -&ch212, -&ch213, -&ch214, -&ch215, -&ch216, -&ch217, -&ch218, -&ch219, -&ch220, -&ch221, -&ch222, -&ch223, -&ch224, -&ch225, -&ch226, -&ch227, -&ch228, -&ch229, -&ch230, -&ch231, -&ch232, -&ch233, -&ch234, -&ch235, -&ch236, -&ch237, -&ch238, -&ch239, -&ch240, -&ch241, -&ch242, -&ch243, -&ch244, -&ch245, -&ch246, -&ch247, -&ch248, -&ch249, -&ch250, -&ch251, -&ch252, -&ch253, -&ch254, -&ch255, -}; - -const BitmapFontRec glutBitmap8By13 = { -"-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1", -256, -0, -chars -}; - diff --git a/lib/glut-3.7.6/lib/glut/glut_9x15.c b/lib/glut-3.7.6/lib/glut/glut_9x15.c deleted file mode 100644 index 04df3dcde27d0e954cd3efc8ce13cd5c968f668b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_9x15.c +++ /dev/null @@ -1,2075 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#define glutBitmap9By15 XXX -#include "glutbitmap.h" -#undef glutBitmap9By15 - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch0data[] = { 0x0 }; -static const BitmapCharRec ch0 = {1,1,0,0,9,ch0data}; -#else -static const BitmapCharRec ch0 = {0,0,0,0,9,0}; -#endif - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch32data[] = { 0x0 }; -static const BitmapCharRec ch32 = {1,1,0,0,9,ch32data}; -#else -static const BitmapCharRec ch32 = {0,0,0,0,9,0}; -#endif - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch127data[] = { 0x0 }; -static const BitmapCharRec ch127 = {1,1,0,0,9,ch127data}; -#else -static const BitmapCharRec ch127 = {0,0,0,0,9,0}; -#endif - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch160data[] = { 0x0 }; -static const BitmapCharRec ch160 = {1,1,0,0,9,ch160data}; -#else -static const BitmapCharRec ch160 = {0,0,0,0,9,0}; -#endif - -/* char: 0xff */ - -static const GLubyte ch255data[] = { -0x78,0x84,0x4,0x74,0x8c,0x84,0x84,0x84,0x84,0x84,0x0,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch255 = {6,14,-1,3,9,ch255data}; - -/* char: 0xfe */ - -static const GLubyte ch254data[] = { -0x80,0x80,0x80,0xbc,0xc2,0x82,0x82,0x82,0xc2,0xbc,0x80,0x80, -}; - -static const BitmapCharRec ch254 = {7,12,-1,3,9,ch254data}; - -/* char: 0xfd */ - -static const GLubyte ch253data[] = { -0x78,0x84,0x4,0x74,0x8c,0x84,0x84,0x84,0x84,0x84,0x0,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch253 = {6,14,-1,3,9,ch253data}; - -/* char: 0xfc */ - -static const GLubyte ch252data[] = { -0x7a,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch252 = {7,11,-1,0,9,ch252data}; - -/* char: 0xfb */ - -static const GLubyte ch251data[] = { -0x7a,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch251 = {7,11,-1,0,9,ch251data}; - -/* char: 0xfa */ - -static const GLubyte ch250data[] = { -0x7a,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch250 = {7,11,-1,0,9,ch250data}; - -/* char: 0xf9 */ - -static const GLubyte ch249data[] = { -0x7a,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch249 = {7,11,-1,0,9,ch249data}; - -/* char: 0xf8 */ - -static const GLubyte ch248data[] = { -0x80,0x7c,0xa2,0xa2,0x92,0x8a,0x8a,0x7c,0x2, -}; - -static const BitmapCharRec ch248 = {7,9,-1,1,9,ch248data}; - -/* char: 0xf7 */ - -static const GLubyte ch247data[] = { -0x10,0x38,0x10,0x0,0xfe,0x0,0x10,0x38,0x10, -}; - -static const BitmapCharRec ch247 = {7,9,-1,0,9,ch247data}; - -/* char: 0xf6 */ - -static const GLubyte ch246data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch246 = {7,11,-1,0,9,ch246data}; - -/* char: 0xf5 */ - -static const GLubyte ch245data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch245 = {7,11,-1,0,9,ch245data}; - -/* char: 0xf4 */ - -static const GLubyte ch244data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch244 = {7,11,-1,0,9,ch244data}; - -/* char: 0xf3 */ - -static const GLubyte ch243data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch243 = {7,11,-1,0,9,ch243data}; - -/* char: 0xf2 */ - -static const GLubyte ch242data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch242 = {7,11,-1,0,9,ch242data}; - -/* char: 0xf1 */ - -static const GLubyte ch241data[] = { -0x82,0x82,0x82,0x82,0x82,0xc2,0xbc,0x0,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch241 = {7,11,-1,0,9,ch241data}; - -/* char: 0xf0 */ - -static const GLubyte ch240data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c,0x8,0x50,0x30,0x48, -}; - -static const BitmapCharRec ch240 = {7,11,-1,0,9,ch240data}; - -/* char: 0xef */ - -static const GLubyte ch239data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x50,0x50, -}; - -static const BitmapCharRec ch239 = {5,11,-2,0,9,ch239data}; - -/* char: 0xee */ - -static const GLubyte ch238data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x90,0x60, -}; - -static const BitmapCharRec ch238 = {5,11,-2,0,9,ch238data}; - -/* char: 0xed */ - -static const GLubyte ch237data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x60,0x10, -}; - -static const BitmapCharRec ch237 = {5,11,-2,0,9,ch237data}; - -/* char: 0xec */ - -static const GLubyte ch236data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x30,0x40, -}; - -static const BitmapCharRec ch236 = {5,11,-2,0,9,ch236data}; - -/* char: 0xeb */ - -static const GLubyte ch235data[] = { -0x7c,0x80,0x80,0xfe,0x82,0x82,0x7c,0x0,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch235 = {7,11,-1,0,9,ch235data}; - -/* char: 0xea */ - -static const GLubyte ch234data[] = { -0x7c,0x80,0x80,0xfe,0x82,0x82,0x7c,0x0,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch234 = {7,11,-1,0,9,ch234data}; - -/* char: 0xe9 */ - -static const GLubyte ch233data[] = { -0x7c,0x80,0x80,0xfe,0x82,0x82,0x7c,0x0,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch233 = {7,11,-1,0,9,ch233data}; - -/* char: 0xe8 */ - -static const GLubyte ch232data[] = { -0x7c,0x80,0x80,0xfe,0x82,0x82,0x7c,0x0,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch232 = {7,11,-1,0,9,ch232data}; - -/* char: 0xe7 */ - -static const GLubyte ch231data[] = { -0x30,0x48,0x18,0x7c,0x82,0x80,0x80,0x80,0x82,0x7c, -}; - -static const BitmapCharRec ch231 = {7,10,-1,3,9,ch231data}; - -/* char: 0xe6 */ - -static const GLubyte ch230data[] = { -0x6e,0x92,0x90,0x7c,0x12,0x92,0x6c, -}; - -static const BitmapCharRec ch230 = {7,7,-1,0,9,ch230data}; - -/* char: 0xe5 */ - -static const GLubyte ch229data[] = { -0x7a,0x86,0x82,0x7e,0x2,0x2,0x7c,0x0,0x18,0x24,0x18, -}; - -static const BitmapCharRec ch229 = {7,11,-1,0,9,ch229data}; - -/* char: 0xe4 */ - -static const GLubyte ch228data[] = { -0x7a,0x86,0x82,0x7e,0x2,0x2,0x7c,0x0,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch228 = {7,11,-1,0,9,ch228data}; - -/* char: 0xe3 */ - -static const GLubyte ch227data[] = { -0x7a,0x86,0x82,0x7e,0x2,0x2,0x7c,0x0,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch227 = {7,11,-1,0,9,ch227data}; - -/* char: 0xe2 */ - -static const GLubyte ch226data[] = { -0x7a,0x86,0x82,0x7e,0x2,0x2,0x7c,0x0,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch226 = {7,11,-1,0,9,ch226data}; - -/* char: 0xe1 */ - -static const GLubyte ch225data[] = { -0x7a,0x86,0x82,0x7e,0x2,0x2,0x7c,0x0,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch225 = {7,11,-1,0,9,ch225data}; - -/* char: 0xe0 */ - -static const GLubyte ch224data[] = { -0x7a,0x86,0x82,0x7e,0x2,0x2,0x7c,0x0,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch224 = {7,11,-1,0,9,ch224data}; - -/* char: 0xdf */ - -static const GLubyte ch223data[] = { -0x80,0xbc,0xc2,0x82,0x82,0xfc,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch223 = {7,9,-1,1,9,ch223data}; - -/* char: 0xde */ - -static const GLubyte ch222data[] = { -0x80,0x80,0x80,0xfc,0x82,0x82,0x82,0xfc,0x80,0x80, -}; - -static const BitmapCharRec ch222 = {7,10,-1,0,9,ch222data}; - -/* char: 0xdd */ - -static const GLubyte ch221data[] = { -0x10,0x10,0x10,0x10,0x28,0x44,0x82,0x82,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch221 = {7,11,-1,0,9,ch221data}; - -/* char: 0xdc */ - -static const GLubyte ch220data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch220 = {7,11,-1,0,9,ch220data}; - -/* char: 0xdb */ - -static const GLubyte ch219data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch219 = {7,11,-1,0,9,ch219data}; - -/* char: 0xda */ - -static const GLubyte ch218data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch218 = {7,11,-1,0,9,ch218data}; - -/* char: 0xd9 */ - -static const GLubyte ch217data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch217 = {7,11,-1,0,9,ch217data}; - -/* char: 0xd8 */ - -static const GLubyte ch216data[] = { -0x80,0x7c,0xc2,0xa2,0xa2,0x92,0x92,0x8a,0x8a,0x86,0x7c,0x2, -}; - -static const BitmapCharRec ch216 = {7,12,-1,1,9,ch216data}; - -/* char: 0xd7 */ - -static const GLubyte ch215data[] = { -0x82,0x44,0x28,0x10,0x28,0x44,0x82, -}; - -static const BitmapCharRec ch215 = {7,7,-1,-1,9,ch215data}; - -/* char: 0xd6 */ - -static const GLubyte ch214data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch214 = {7,11,-1,0,9,ch214data}; - -/* char: 0xd5 */ - -static const GLubyte ch213data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch213 = {7,11,-1,0,9,ch213data}; - -/* char: 0xd4 */ - -static const GLubyte ch212data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch212 = {7,11,-1,0,9,ch212data}; - -/* char: 0xd3 */ - -static const GLubyte ch211data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch211 = {7,11,-1,0,9,ch211data}; - -/* char: 0xd2 */ - -static const GLubyte ch210data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x7c,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch210 = {7,11,-1,0,9,ch210data}; - -/* char: 0xd1 */ - -static const GLubyte ch209data[] = { -0x82,0x86,0x8a,0x92,0x92,0xa2,0xc2,0x82,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch209 = {7,11,-1,0,9,ch209data}; - -/* char: 0xd0 */ - -static const GLubyte ch208data[] = { -0xfc,0x42,0x42,0x42,0x42,0xf2,0x42,0x42,0x42,0xfc, -}; - -static const BitmapCharRec ch208 = {7,10,-1,0,9,ch208data}; - -/* char: 0xcf */ - -static const GLubyte ch207data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x50,0x50, -}; - -static const BitmapCharRec ch207 = {5,11,-2,0,9,ch207data}; - -/* char: 0xce */ - -static const GLubyte ch206data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x88,0x70, -}; - -static const BitmapCharRec ch206 = {5,11,-2,0,9,ch206data}; - -/* char: 0xcd */ - -static const GLubyte ch205data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x60,0x10, -}; - -static const BitmapCharRec ch205 = {5,11,-2,0,9,ch205data}; - -/* char: 0xcc */ - -static const GLubyte ch204data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0xf8,0x0,0x30,0x40, -}; - -static const BitmapCharRec ch204 = {5,11,-2,0,9,ch204data}; - -/* char: 0xcb */ - -static const GLubyte ch203data[] = { -0xfe,0x40,0x40,0x40,0x78,0x40,0x40,0xfe,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch203 = {7,11,-1,0,9,ch203data}; - -/* char: 0xca */ - -static const GLubyte ch202data[] = { -0xfe,0x40,0x40,0x40,0x78,0x40,0x40,0xfe,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch202 = {7,11,-1,0,9,ch202data}; - -/* char: 0xc9 */ - -static const GLubyte ch201data[] = { -0xfe,0x40,0x40,0x40,0x78,0x40,0x40,0xfe,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch201 = {7,11,-1,0,9,ch201data}; - -/* char: 0xc8 */ - -static const GLubyte ch200data[] = { -0xfe,0x40,0x40,0x40,0x78,0x40,0x40,0xfe,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch200 = {7,11,-1,0,9,ch200data}; - -/* char: 0xc7 */ - -static const GLubyte ch199data[] = { -0x30,0x48,0x18,0x7c,0x82,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x7c, -}; - -static const BitmapCharRec ch199 = {7,13,-1,3,9,ch199data}; - -/* char: 0xc6 */ - -static const GLubyte ch198data[] = { -0x9e,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x6e, -}; - -static const BitmapCharRec ch198 = {7,10,-1,0,9,ch198data}; - -/* char: 0xc5 */ - -static const GLubyte ch197data[] = { -0x82,0x82,0x82,0xfe,0x82,0x82,0x44,0x38,0x10,0x28,0x10, -}; - -static const BitmapCharRec ch197 = {7,11,-1,0,9,ch197data}; - -/* char: 0xc4 */ - -static const GLubyte ch196data[] = { -0x82,0x82,0x82,0xfe,0x82,0x82,0x44,0x38,0x0,0x28,0x28, -}; - -static const BitmapCharRec ch196 = {7,11,-1,0,9,ch196data}; - -/* char: 0xc3 */ - -static const GLubyte ch195data[] = { -0x82,0x82,0x82,0xfe,0x82,0x82,0x44,0x38,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch195 = {7,11,-1,0,9,ch195data}; - -/* char: 0xc2 */ - -static const GLubyte ch194data[] = { -0x82,0x82,0x82,0xfe,0x82,0x82,0x44,0x38,0x0,0x44,0x38, -}; - -static const BitmapCharRec ch194 = {7,11,-1,0,9,ch194data}; - -/* char: 0xc1 */ - -static const GLubyte ch193data[] = { -0x82,0x82,0x82,0xfe,0x82,0x82,0x44,0x38,0x0,0x30,0x8, -}; - -static const BitmapCharRec ch193 = {7,11,-1,0,9,ch193data}; - -/* char: 0xc0 */ - -static const GLubyte ch192data[] = { -0x82,0x82,0x82,0xfe,0x82,0x82,0x44,0x38,0x0,0x18,0x20, -}; - -static const BitmapCharRec ch192 = {7,11,-1,0,9,ch192data}; - -/* char: 0xbf */ - -static const GLubyte ch191data[] = { -0x7c,0x82,0x82,0x80,0x40,0x20,0x10,0x10,0x0,0x10, -}; - -static const BitmapCharRec ch191 = {7,10,-1,0,9,ch191data}; - -/* char: 0xbe */ - -static const GLubyte ch190data[] = { -0x6,0x1a,0x12,0xa,0x66,0x92,0x10,0x20,0x90,0x60, -}; - -static const BitmapCharRec ch190 = {7,10,-1,0,9,ch190data}; - -/* char: 0xbd */ - -static const GLubyte ch189data[] = { -0x1e,0x10,0xc,0x2,0xf2,0x4c,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch189 = {7,10,-1,0,9,ch189data}; - -/* char: 0xbc */ - -static const GLubyte ch188data[] = { -0x6,0x1a,0x12,0xa,0xe6,0x42,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch188 = {7,10,-1,0,9,ch188data}; - -/* char: 0xbb */ - -static const GLubyte ch187data[] = { -0x90,0x48,0x24,0x12,0x12,0x24,0x48,0x90, -}; - -static const BitmapCharRec ch187 = {7,8,-1,-1,9,ch187data}; - -/* char: 0xba */ - -static const GLubyte ch186data[] = { -0xf8,0x0,0x70,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch186 = {5,6,-1,-5,9,ch186data}; - -/* char: 0xb9 */ - -static const GLubyte ch185data[] = { -0xe0,0x40,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch185 = {3,6,-1,-4,9,ch185data}; - -/* char: 0xb8 */ - -static const GLubyte ch184data[] = { -0x60,0x90,0x30, -}; - -static const BitmapCharRec ch184 = {4,3,-2,3,9,ch184data}; - -/* char: 0xb7 */ - -static const GLubyte ch183data[] = { -0xc0,0xc0, -}; - -static const BitmapCharRec ch183 = {2,2,-4,-4,9,ch183data}; - -/* char: 0xb6 */ - -static const GLubyte ch182data[] = { -0xa,0xa,0xa,0xa,0xa,0x7a,0x8a,0x8a,0x8a,0x7e, -}; - -static const BitmapCharRec ch182 = {7,10,-1,0,9,ch182data}; - -/* char: 0xb5 */ - -static const GLubyte ch181data[] = { -0x80,0x80,0xba,0xc6,0x82,0x82,0x82,0x82,0x82, -}; - -static const BitmapCharRec ch181 = {7,9,-1,2,9,ch181data}; - -/* char: 0xb4 */ - -static const GLubyte ch180data[] = { -0xc0,0x20, -}; - -static const BitmapCharRec ch180 = {3,2,-3,-9,9,ch180data}; - -/* char: 0xb3 */ - -static const GLubyte ch179data[] = { -0x60,0x90,0x10,0x20,0x90,0x60, -}; - -static const BitmapCharRec ch179 = {4,6,-1,-4,9,ch179data}; - -/* char: 0xb2 */ - -static const GLubyte ch178data[] = { -0xf0,0x80,0x60,0x10,0x90,0x60, -}; - -static const BitmapCharRec ch178 = {4,6,-1,-4,9,ch178data}; - -/* char: 0xb1 */ - -static const GLubyte ch177data[] = { -0xfe,0x0,0x10,0x10,0x10,0xfe,0x10,0x10,0x10, -}; - -static const BitmapCharRec ch177 = {7,9,-1,-1,9,ch177data}; - -/* char: 0xb0 */ - -static const GLubyte ch176data[] = { -0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch176 = {4,4,-3,-6,9,ch176data}; - -/* char: 0xaf */ - -static const GLubyte ch175data[] = { -0xfc, -}; - -static const BitmapCharRec ch175 = {6,1,-1,-9,9,ch175data}; - -/* char: 0xae */ - -static const GLubyte ch174data[] = { -0x3c,0x42,0xa5,0xa9,0xbd,0xa5,0xb9,0x42,0x3c, -}; - -static const BitmapCharRec ch174 = {8,9,0,-1,9,ch174data}; - -/* char: 0xad */ - -static const GLubyte ch173data[] = { -0xfc, -}; - -static const BitmapCharRec ch173 = {6,1,-1,-4,9,ch173data}; - -/* char: 0xac */ - -static const GLubyte ch172data[] = { -0x4,0x4,0x4,0xfc, -}; - -static const BitmapCharRec ch172 = {6,4,-1,-2,9,ch172data}; - -/* char: 0xab */ - -static const GLubyte ch171data[] = { -0x12,0x24,0x48,0x90,0x90,0x48,0x24,0x12, -}; - -static const BitmapCharRec ch171 = {7,8,-1,-1,9,ch171data}; - -/* char: 0xaa */ - -static const GLubyte ch170data[] = { -0xf8,0x0,0x78,0x90,0x70,0x90,0x60, -}; - -static const BitmapCharRec ch170 = {5,7,-3,-3,9,ch170data}; - -/* char: 0xa9 */ - -static const GLubyte ch169data[] = { -0x3c,0x42,0x99,0xa5,0xa1,0xa5,0x99,0x42,0x3c, -}; - -static const BitmapCharRec ch169 = {8,9,0,-1,9,ch169data}; - -/* char: 0xa8 */ - -static const GLubyte ch168data[] = { -0xa0,0xa0, -}; - -static const BitmapCharRec ch168 = {3,2,-3,-9,9,ch168data}; - -/* char: 0xa7 */ - -static const GLubyte ch167data[] = { -0x70,0x88,0x8,0x70,0x88,0x88,0x88,0x70,0x80,0x88,0x70, -}; - -static const BitmapCharRec ch167 = {5,11,-2,1,9,ch167data}; - -/* char: 0xa6 */ - -static const GLubyte ch166data[] = { -0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch166 = {1,11,-4,1,9,ch166data}; - -/* char: 0xa5 */ - -static const GLubyte ch165data[] = { -0x10,0x10,0x10,0x7c,0x10,0x7c,0x28,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch165 = {7,10,-1,0,9,ch165data}; - -/* char: 0xa4 */ - -static const GLubyte ch164data[] = { -0x82,0x7c,0x44,0x44,0x7c,0x82, -}; - -static const BitmapCharRec ch164 = {7,6,-1,-3,9,ch164data}; - -/* char: 0xa3 */ - -static const GLubyte ch163data[] = { -0x5c,0xa2,0x60,0x20,0x20,0xf8,0x20,0x20,0x22,0x1c, -}; - -static const BitmapCharRec ch163 = {7,10,-1,0,9,ch163data}; - -/* char: 0xa2 */ - -static const GLubyte ch162data[] = { -0x40,0x78,0xa4,0xa0,0x90,0x94,0x78,0x8, -}; - -static const BitmapCharRec ch162 = {6,8,-1,0,9,ch162data}; - -/* char: 0xa1 */ - -static const GLubyte ch161data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x80,0x80, -}; - -static const BitmapCharRec ch161 = {1,11,-4,0,9,ch161data}; - -/* char: 0x7e '~' */ - -static const GLubyte ch126data[] = { -0x8c,0x92,0x62, -}; - -static const BitmapCharRec ch126 = {7,3,-1,-7,9,ch126data}; - -/* char: 0x7d '}' */ - -static const GLubyte ch125data[] = { -0xe0,0x10,0x10,0x10,0x20,0x18,0x18,0x20,0x10,0x10,0x10,0xe0, -}; - -static const BitmapCharRec ch125 = {5,12,-1,1,9,ch125data}; - -/* char: 0x7c '|' */ - -static const GLubyte ch124data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch124 = {1,12,-4,1,9,ch124data}; - -/* char: 0x7b '{' */ - -static const GLubyte ch123data[] = { -0x38,0x40,0x40,0x40,0x20,0xc0,0xc0,0x20,0x40,0x40,0x40,0x38, -}; - -static const BitmapCharRec ch123 = {5,12,-3,1,9,ch123data}; - -/* char: 0x7a 'z' */ - -static const GLubyte ch122data[] = { -0xfe,0x40,0x20,0x10,0x8,0x4,0xfe, -}; - -static const BitmapCharRec ch122 = {7,7,-1,0,9,ch122data}; - -/* char: 0x79 'y' */ - -static const GLubyte ch121data[] = { -0x78,0x84,0x4,0x74,0x8c,0x84,0x84,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch121 = {6,10,-1,3,9,ch121data}; - -/* char: 0x78 'x' */ - -static const GLubyte ch120data[] = { -0x82,0x44,0x28,0x10,0x28,0x44,0x82, -}; - -static const BitmapCharRec ch120 = {7,7,-1,0,9,ch120data}; - -/* char: 0x77 'w' */ - -static const GLubyte ch119data[] = { -0x44,0xaa,0x92,0x92,0x92,0x82,0x82, -}; - -static const BitmapCharRec ch119 = {7,7,-1,0,9,ch119data}; - -/* char: 0x76 'v' */ - -static const GLubyte ch118data[] = { -0x10,0x28,0x28,0x44,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch118 = {7,7,-1,0,9,ch118data}; - -/* char: 0x75 'u' */ - -static const GLubyte ch117data[] = { -0x7a,0x84,0x84,0x84,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch117 = {7,7,-1,0,9,ch117data}; - -/* char: 0x74 't' */ - -static const GLubyte ch116data[] = { -0x1c,0x22,0x20,0x20,0x20,0x20,0xfc,0x20,0x20, -}; - -static const BitmapCharRec ch116 = {7,9,-1,0,9,ch116data}; - -/* char: 0x73 's' */ - -static const GLubyte ch115data[] = { -0x7c,0x82,0x2,0x7c,0x80,0x82,0x7c, -}; - -static const BitmapCharRec ch115 = {7,7,-1,0,9,ch115data}; - -/* char: 0x72 'r' */ - -static const GLubyte ch114data[] = { -0x40,0x40,0x40,0x40,0x42,0x62,0x9c, -}; - -static const BitmapCharRec ch114 = {7,7,-1,0,9,ch114data}; - -/* char: 0x71 'q' */ - -static const GLubyte ch113data[] = { -0x2,0x2,0x2,0x7a,0x86,0x82,0x82,0x82,0x86,0x7a, -}; - -static const BitmapCharRec ch113 = {7,10,-1,3,9,ch113data}; - -/* char: 0x70 'p' */ - -static const GLubyte ch112data[] = { -0x80,0x80,0x80,0xbc,0xc2,0x82,0x82,0x82,0xc2,0xbc, -}; - -static const BitmapCharRec ch112 = {7,10,-1,3,9,ch112data}; - -/* char: 0x6f 'o' */ - -static const GLubyte ch111data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch111 = {7,7,-1,0,9,ch111data}; - -/* char: 0x6e 'n' */ - -static const GLubyte ch110data[] = { -0x82,0x82,0x82,0x82,0x82,0xc2,0xbc, -}; - -static const BitmapCharRec ch110 = {7,7,-1,0,9,ch110data}; - -/* char: 0x6d 'm' */ - -static const GLubyte ch109data[] = { -0x82,0x92,0x92,0x92,0x92,0x92,0xec, -}; - -static const BitmapCharRec ch109 = {7,7,-1,0,9,ch109data}; - -/* char: 0x6c 'l' */ - -static const GLubyte ch108data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0, -}; - -static const BitmapCharRec ch108 = {5,10,-2,0,9,ch108data}; - -/* char: 0x6b 'k' */ - -static const GLubyte ch107data[] = { -0x82,0x8c,0xb0,0xc0,0xb0,0x8c,0x82,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch107 = {7,10,-1,0,9,ch107data}; - -/* char: 0x6a 'j' */ - -static const GLubyte ch106data[] = { -0x78,0x84,0x84,0x84,0x4,0x4,0x4,0x4,0x4,0x1c,0x0,0x0,0xc, -}; - -static const BitmapCharRec ch106 = {6,13,-1,3,9,ch106data}; - -/* char: 0x69 'i' */ - -static const GLubyte ch105data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x60, -}; - -static const BitmapCharRec ch105 = {5,10,-2,0,9,ch105data}; - -/* char: 0x68 'h' */ - -static const GLubyte ch104data[] = { -0x82,0x82,0x82,0x82,0x82,0xc2,0xbc,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch104 = {7,10,-1,0,9,ch104data}; - -/* char: 0x67 'g' */ - -static const GLubyte ch103data[] = { -0x7c,0x82,0x82,0x7c,0x80,0x78,0x84,0x84,0x84,0x7a, -}; - -static const BitmapCharRec ch103 = {7,10,-1,3,9,ch103data}; - -/* char: 0x66 'f' */ - -static const GLubyte ch102data[] = { -0x20,0x20,0x20,0x20,0xf8,0x20,0x20,0x22,0x22,0x1c, -}; - -static const BitmapCharRec ch102 = {7,10,-1,0,9,ch102data}; - -/* char: 0x65 'e' */ - -static const GLubyte ch101data[] = { -0x7c,0x80,0x80,0xfe,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch101 = {7,7,-1,0,9,ch101data}; - -/* char: 0x64 'd' */ - -static const GLubyte ch100data[] = { -0x7a,0x86,0x82,0x82,0x82,0x86,0x7a,0x2,0x2,0x2, -}; - -static const BitmapCharRec ch100 = {7,10,-1,0,9,ch100data}; - -/* char: 0x63 'c' */ - -static const GLubyte ch99data[] = { -0x7c,0x82,0x80,0x80,0x80,0x82,0x7c, -}; - -static const BitmapCharRec ch99 = {7,7,-1,0,9,ch99data}; - -/* char: 0x62 'b' */ - -static const GLubyte ch98data[] = { -0xbc,0xc2,0x82,0x82,0x82,0xc2,0xbc,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch98 = {7,10,-1,0,9,ch98data}; - -/* char: 0x61 'a' */ - -static const GLubyte ch97data[] = { -0x7a,0x86,0x82,0x7e,0x2,0x2,0x7c, -}; - -static const BitmapCharRec ch97 = {7,7,-1,0,9,ch97data}; - -/* char: 0x60 '`' */ - -static const GLubyte ch96data[] = { -0x10,0x20,0x40,0xc0, -}; - -static const BitmapCharRec ch96 = {4,4,-3,-6,9,ch96data}; - -/* char: 0x5f '_' */ - -static const GLubyte ch95data[] = { -0xff, -}; - -static const BitmapCharRec ch95 = {8,1,0,1,9,ch95data}; - -/* char: 0x5e '^' */ - -static const GLubyte ch94data[] = { -0x82,0x44,0x28,0x10, -}; - -static const BitmapCharRec ch94 = {7,4,-1,-6,9,ch94data}; - -/* char: 0x5d ']' */ - -static const GLubyte ch93data[] = { -0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf0, -}; - -static const BitmapCharRec ch93 = {4,12,-2,1,9,ch93data}; - -/* char: 0x5c '\' */ - -static const GLubyte ch92data[] = { -0x2,0x4,0x4,0x8,0x10,0x10,0x20,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch92 = {7,10,-1,0,9,ch92data}; - -/* char: 0x5b '[' */ - -static const GLubyte ch91data[] = { -0xf0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xf0, -}; - -static const BitmapCharRec ch91 = {4,12,-3,1,9,ch91data}; - -/* char: 0x5a 'Z' */ - -static const GLubyte ch90data[] = { -0xfe,0x80,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0xfe, -}; - -static const BitmapCharRec ch90 = {7,10,-1,0,9,ch90data}; - -/* char: 0x59 'Y' */ - -static const GLubyte ch89data[] = { -0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch89 = {7,10,-1,0,9,ch89data}; - -/* char: 0x58 'X' */ - -static const GLubyte ch88data[] = { -0x82,0x82,0x44,0x28,0x10,0x10,0x28,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch88 = {7,10,-1,0,9,ch88data}; - -/* char: 0x57 'W' */ - -static const GLubyte ch87data[] = { -0x44,0xaa,0x92,0x92,0x92,0x92,0x82,0x82,0x82,0x82, -}; - -static const BitmapCharRec ch87 = {7,10,-1,0,9,ch87data}; - -/* char: 0x56 'V' */ - -static const GLubyte ch86data[] = { -0x10,0x28,0x28,0x28,0x44,0x44,0x44,0x82,0x82,0x82, -}; - -static const BitmapCharRec ch86 = {7,10,-1,0,9,ch86data}; - -/* char: 0x55 'U' */ - -static const GLubyte ch85data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82, -}; - -static const BitmapCharRec ch85 = {7,10,-1,0,9,ch85data}; - -/* char: 0x54 'T' */ - -static const GLubyte ch84data[] = { -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xfe, -}; - -static const BitmapCharRec ch84 = {7,10,-1,0,9,ch84data}; - -/* char: 0x53 'S' */ - -static const GLubyte ch83data[] = { -0x7c,0x82,0x82,0x2,0xc,0x70,0x80,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch83 = {7,10,-1,0,9,ch83data}; - -/* char: 0x52 'R' */ - -static const GLubyte ch82data[] = { -0x82,0x82,0x84,0x88,0x90,0xfc,0x82,0x82,0x82,0xfc, -}; - -static const BitmapCharRec ch82 = {7,10,-1,0,9,ch82data}; - -/* char: 0x51 'Q' */ - -static const GLubyte ch81data[] = { -0x6,0x8,0x7c,0x92,0xa2,0x82,0x82,0x82,0x82,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch81 = {7,12,-1,2,9,ch81data}; - -/* char: 0x50 'P' */ - -static const GLubyte ch80data[] = { -0x80,0x80,0x80,0x80,0x80,0xfc,0x82,0x82,0x82,0xfc, -}; - -static const BitmapCharRec ch80 = {7,10,-1,0,9,ch80data}; - -/* char: 0x4f 'O' */ - -static const GLubyte ch79data[] = { -0x7c,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch79 = {7,10,-1,0,9,ch79data}; - -/* char: 0x4e 'N' */ - -static const GLubyte ch78data[] = { -0x82,0x82,0x82,0x86,0x8a,0x92,0xa2,0xc2,0x82,0x82, -}; - -static const BitmapCharRec ch78 = {7,10,-1,0,9,ch78data}; - -/* char: 0x4d 'M' */ - -static const GLubyte ch77data[] = { -0x82,0x82,0x82,0x92,0x92,0xaa,0xaa,0xc6,0x82,0x82, -}; - -static const BitmapCharRec ch77 = {7,10,-1,0,9,ch77data}; - -/* char: 0x4c 'L' */ - -static const GLubyte ch76data[] = { -0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch76 = {7,10,-1,0,9,ch76data}; - -/* char: 0x4b 'K' */ - -static const GLubyte ch75data[] = { -0x82,0x84,0x88,0x90,0xa0,0xe0,0x90,0x88,0x84,0x82, -}; - -static const BitmapCharRec ch75 = {7,10,-1,0,9,ch75data}; - -/* char: 0x4a 'J' */ - -static const GLubyte ch74data[] = { -0x78,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x1e, -}; - -static const BitmapCharRec ch74 = {7,10,-1,0,9,ch74data}; - -/* char: 0x49 'I' */ - -static const GLubyte ch73data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf8, -}; - -static const BitmapCharRec ch73 = {5,10,-2,0,9,ch73data}; - -/* char: 0x48 'H' */ - -static const GLubyte ch72data[] = { -0x82,0x82,0x82,0x82,0x82,0xfe,0x82,0x82,0x82,0x82, -}; - -static const BitmapCharRec ch72 = {7,10,-1,0,9,ch72data}; - -/* char: 0x47 'G' */ - -static const GLubyte ch71data[] = { -0x7c,0x82,0x82,0x82,0x8e,0x80,0x80,0x80,0x82,0x7c, -}; - -static const BitmapCharRec ch71 = {7,10,-1,0,9,ch71data}; - -/* char: 0x46 'F' */ - -static const GLubyte ch70data[] = { -0x40,0x40,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0xfe, -}; - -static const BitmapCharRec ch70 = {7,10,-1,0,9,ch70data}; - -/* char: 0x45 'E' */ - -static const GLubyte ch69data[] = { -0xfe,0x40,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0xfe, -}; - -static const BitmapCharRec ch69 = {7,10,-1,0,9,ch69data}; - -/* char: 0x44 'D' */ - -static const GLubyte ch68data[] = { -0xfc,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xfc, -}; - -static const BitmapCharRec ch68 = {7,10,-1,0,9,ch68data}; - -/* char: 0x43 'C' */ - -static const GLubyte ch67data[] = { -0x7c,0x82,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x7c, -}; - -static const BitmapCharRec ch67 = {7,10,-1,0,9,ch67data}; - -/* char: 0x42 'B' */ - -static const GLubyte ch66data[] = { -0xfc,0x42,0x42,0x42,0x42,0x7c,0x42,0x42,0x42,0xfc, -}; - -static const BitmapCharRec ch66 = {7,10,-1,0,9,ch66data}; - -/* char: 0x41 'A' */ - -static const GLubyte ch65data[] = { -0x82,0x82,0x82,0xfe,0x82,0x82,0x82,0x44,0x28,0x10, -}; - -static const BitmapCharRec ch65 = {7,10,-1,0,9,ch65data}; - -/* char: 0x40 '@' */ - -static const GLubyte ch64data[] = { -0x7c,0x80,0x80,0x9a,0xa6,0xa2,0x9e,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch64 = {7,10,-1,0,9,ch64data}; - -/* char: 0x3f '?' */ - -static const GLubyte ch63data[] = { -0x10,0x0,0x10,0x10,0x8,0x4,0x2,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch63 = {7,10,-1,0,9,ch63data}; - -/* char: 0x3e '>' */ - -static const GLubyte ch62data[] = { -0x80,0x40,0x20,0x10,0x8,0x8,0x10,0x20,0x40,0x80, -}; - -static const BitmapCharRec ch62 = {5,10,-2,0,9,ch62data}; - -/* char: 0x3d '=' */ - -static const GLubyte ch61data[] = { -0xfe,0x0,0x0,0xfe, -}; - -static const BitmapCharRec ch61 = {7,4,-1,-2,9,ch61data}; - -/* char: 0x3c '<' */ - -static const GLubyte ch60data[] = { -0x8,0x10,0x20,0x40,0x80,0x80,0x40,0x20,0x10,0x8, -}; - -static const BitmapCharRec ch60 = {5,10,-2,0,9,ch60data}; - -/* char: 0x3b ';' */ - -static const GLubyte ch59data[] = { -0x80,0x40,0x40,0xc0,0xc0,0x0,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch59 = {2,10,-4,3,9,ch59data}; - -/* char: 0x3a ':' */ - -static const GLubyte ch58data[] = { -0xc0,0xc0,0x0,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch58 = {2,7,-4,0,9,ch58data}; - -/* char: 0x39 '9' */ - -static const GLubyte ch57data[] = { -0x78,0x4,0x2,0x2,0x7a,0x86,0x82,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch57 = {7,10,-1,0,9,ch57data}; - -/* char: 0x38 '8' */ - -static const GLubyte ch56data[] = { -0x38,0x44,0x82,0x82,0x44,0x38,0x44,0x82,0x44,0x38, -}; - -static const BitmapCharRec ch56 = {7,10,-1,0,9,ch56data}; - -/* char: 0x37 '7' */ - -static const GLubyte ch55data[] = { -0x40,0x40,0x20,0x20,0x10,0x8,0x4,0x2,0x2,0xfe, -}; - -static const BitmapCharRec ch55 = {7,10,-1,0,9,ch55data}; - -/* char: 0x36 '6' */ - -static const GLubyte ch54data[] = { -0x7c,0x82,0x82,0x82,0xc2,0xbc,0x80,0x80,0x40,0x3c, -}; - -static const BitmapCharRec ch54 = {7,10,-1,0,9,ch54data}; - -/* char: 0x35 '5' */ - -static const GLubyte ch53data[] = { -0x7c,0x82,0x2,0x2,0x2,0xc2,0xbc,0x80,0x80,0xfe, -}; - -static const BitmapCharRec ch53 = {7,10,-1,0,9,ch53data}; - -/* char: 0x34 '4' */ - -static const GLubyte ch52data[] = { -0x4,0x4,0x4,0xfe,0x84,0x44,0x24,0x14,0xc,0x4, -}; - -static const BitmapCharRec ch52 = {7,10,-1,0,9,ch52data}; - -/* char: 0x33 '3' */ - -static const GLubyte ch51data[] = { -0x7c,0x82,0x2,0x2,0x2,0x1c,0x8,0x4,0x2,0xfe, -}; - -static const BitmapCharRec ch51 = {7,10,-1,0,9,ch51data}; - -/* char: 0x32 '2' */ - -static const GLubyte ch50data[] = { -0xfe,0x80,0x40,0x30,0x8,0x4,0x2,0x82,0x82,0x7c, -}; - -static const BitmapCharRec ch50 = {7,10,-1,0,9,ch50data}; - -/* char: 0x31 '1' */ - -static const GLubyte ch49data[] = { -0xfe,0x10,0x10,0x10,0x10,0x10,0x90,0x50,0x30,0x10, -}; - -static const BitmapCharRec ch49 = {7,10,-1,0,9,ch49data}; - -/* char: 0x30 '0' */ - -static const GLubyte ch48data[] = { -0x38,0x44,0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x38, -}; - -static const BitmapCharRec ch48 = {7,10,-1,0,9,ch48data}; - -/* char: 0x2f '/' */ - -static const GLubyte ch47data[] = { -0x80,0x40,0x40,0x20,0x10,0x10,0x8,0x4,0x4,0x2, -}; - -static const BitmapCharRec ch47 = {7,10,-1,0,9,ch47data}; - -/* char: 0x2e '.' */ - -static const GLubyte ch46data[] = { -0xc0,0xc0, -}; - -static const BitmapCharRec ch46 = {2,2,-4,0,9,ch46data}; - -/* char: 0x2d '-' */ - -static const GLubyte ch45data[] = { -0xfe, -}; - -static const BitmapCharRec ch45 = {7,1,-1,-4,9,ch45data}; - -/* char: 0x2c ',' */ - -static const GLubyte ch44data[] = { -0x80,0x40,0x40,0xc0,0xc0, -}; - -static const BitmapCharRec ch44 = {2,5,-4,3,9,ch44data}; - -/* char: 0x2b '+' */ - -static const GLubyte ch43data[] = { -0x10,0x10,0x10,0xfe,0x10,0x10,0x10, -}; - -static const BitmapCharRec ch43 = {7,7,-1,-1,9,ch43data}; - -/* char: 0x2a '*' */ - -static const GLubyte ch42data[] = { -0x10,0x92,0x54,0x38,0x54,0x92,0x10, -}; - -static const BitmapCharRec ch42 = {7,7,-1,-1,9,ch42data}; - -/* char: 0x29 ')' */ - -static const GLubyte ch41data[] = { -0x80,0x40,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch41 = {3,12,-3,1,9,ch41data}; - -/* char: 0x28 '(' */ - -static const GLubyte ch40data[] = { -0x20,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20, -}; - -static const BitmapCharRec ch40 = {3,12,-3,1,9,ch40data}; - -/* char: 0x27 ''' */ - -static const GLubyte ch39data[] = { -0x80,0x40,0x20,0x30, -}; - -static const BitmapCharRec ch39 = {4,4,-3,-6,9,ch39data}; - -/* char: 0x26 '&' */ - -static const GLubyte ch38data[] = { -0x62,0x94,0x88,0x94,0x62,0x60,0x90,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch38 = {7,10,-1,0,9,ch38data}; - -/* char: 0x25 '%' */ - -static const GLubyte ch37data[] = { -0x84,0x4a,0x4a,0x24,0x10,0x10,0x48,0xa4,0xa4,0x42, -}; - -static const BitmapCharRec ch37 = {7,10,-1,0,9,ch37data}; - -/* char: 0x24 '$' */ - -static const GLubyte ch36data[] = { -0x10,0x7c,0x92,0x12,0x12,0x14,0x38,0x50,0x90,0x92,0x7c,0x10, -}; - -static const BitmapCharRec ch36 = {7,12,-1,1,9,ch36data}; - -/* char: 0x23 '#' */ - -static const GLubyte ch35data[] = { -0x48,0x48,0xfc,0x48,0x48,0xfc,0x48,0x48, -}; - -static const BitmapCharRec ch35 = {6,8,-1,-1,9,ch35data}; - -/* char: 0x22 '"' */ - -static const GLubyte ch34data[] = { -0x90,0x90,0x90, -}; - -static const BitmapCharRec ch34 = {4,3,-3,-7,9,ch34data}; - -/* char: 0x21 '!' */ - -static const GLubyte ch33data[] = { -0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch33 = {1,11,-4,0,9,ch33data}; - -/* char: 0x1f */ - -static const GLubyte ch31data[] = { -0xc0,0xc0, -}; - -static const BitmapCharRec ch31 = {2,2,-4,-2,9,ch31data}; - -/* char: 0x1e */ - -static const GLubyte ch30data[] = { -0x5c,0xa2,0x60,0x20,0x20,0xf8,0x20,0x20,0x22,0x1c, -}; - -static const BitmapCharRec ch30 = {7,10,-1,0,9,ch30data}; - -/* char: 0x1d */ - -static const GLubyte ch29data[] = { -0x80,0x40,0xfe,0x10,0xfe,0x4,0x2, -}; - -static const BitmapCharRec ch29 = {7,7,-1,0,9,ch29data}; - -/* char: 0x1c */ - -static const GLubyte ch28data[] = { -0x44,0x24,0x24,0x24,0x24,0x24,0xfe, -}; - -static const BitmapCharRec ch28 = {7,7,-1,0,9,ch28data}; - -/* char: 0x1b */ - -static const GLubyte ch27data[] = { -0xfe,0x0,0x80,0x40,0x20,0x10,0x8,0x8,0x10,0x20,0x40,0x80, -}; - -static const BitmapCharRec ch27 = {7,12,-1,2,9,ch27data}; - -/* char: 0x1a */ - -static const GLubyte ch26data[] = { -0xfc,0x0,0x4,0x8,0x10,0x20,0x40,0x40,0x20,0x10,0x8,0x4, -}; - -static const BitmapCharRec ch26 = {6,12,-2,2,9,ch26data}; - -/* char: 0x19 */ - -static const GLubyte ch25data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch25 = {1,15,-4,3,9,ch25data}; - -/* char: 0x18 */ - -static const GLubyte ch24data[] = { -0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0xff,0x80, -}; - -static const BitmapCharRec ch24 = {9,7,0,3,9,ch24data}; - -/* char: 0x17 */ - -static const GLubyte ch23data[] = { -0xff,0x80,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0, -0x8,0x0, -}; - -static const BitmapCharRec ch23 = {9,9,0,-3,9,ch23data}; - -/* char: 0x16 */ - -static const GLubyte ch22data[] = { -0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, -}; - -static const BitmapCharRec ch22 = {5,15,0,3,9,ch22data}; - -/* char: 0x15 */ - -static const GLubyte ch21data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch21 = {5,15,-4,3,9,ch21data}; - -/* char: 0x14 */ - -static const GLubyte ch20data[] = { -0xff,0x80, -}; - -static const BitmapCharRec ch20 = {9,1,0,1,9,ch20data}; - -/* char: 0x13 */ - -static const GLubyte ch19data[] = { -0xff,0x80, -}; - -static const BitmapCharRec ch19 = {9,1,0,-1,9,ch19data}; - -/* char: 0x12 */ - -static const GLubyte ch18data[] = { -0xff,0x80, -}; - -static const BitmapCharRec ch18 = {9,1,0,-3,9,ch18data}; - -/* char: 0x11 */ - -static const GLubyte ch17data[] = { -0xff,0x80, -}; - -static const BitmapCharRec ch17 = {9,1,0,-5,9,ch17data}; - -/* char: 0x10 */ - -static const GLubyte ch16data[] = { -0xff,0x80, -}; - -static const BitmapCharRec ch16 = {9,1,0,-7,9,ch16data}; - -/* char: 0xf */ - -static const GLubyte ch15data[] = { -0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0xff,0x80,0x8,0x0, -0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x0, -}; - -static const BitmapCharRec ch15 = {9,15,0,3,9,ch15data}; - -/* char: 0xe */ - -static const GLubyte ch14data[] = { -0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch14 = {5,9,-4,-3,9,ch14data}; - -/* char: 0xd */ - -static const GLubyte ch13data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0xf8, -}; - -static const BitmapCharRec ch13 = {5,7,-4,3,9,ch13data}; - -/* char: 0xc */ - -static const GLubyte ch12data[] = { -0x8,0x8,0x8,0x8,0x8,0x8,0xf8, -}; - -static const BitmapCharRec ch12 = {5,7,0,3,9,ch12data}; - -/* char: 0xb */ - -static const GLubyte ch11data[] = { -0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, -}; - -static const BitmapCharRec ch11 = {5,9,0,-3,9,ch11data}; - -/* char: 0xa */ - -static const GLubyte ch10data[] = { -0x8,0x8,0x8,0x8,0x3e,0x0,0x20,0x50,0x88,0x88, -}; - -static const BitmapCharRec ch10 = {7,10,-1,2,9,ch10data}; - -/* char: 0x9 */ - -static const GLubyte ch9data[] = { -0x3e,0x20,0x20,0x20,0x20,0x88,0x98,0xa8,0xc8,0x88, -}; - -static const BitmapCharRec ch9 = {7,10,-1,2,9,ch9data}; - -/* char: 0x8 */ - -static const GLubyte ch8data[] = { -0xfe,0x10,0x10,0xfe,0x10,0x10, -}; - -static const BitmapCharRec ch8 = {7,6,-1,0,9,ch8data}; - -/* char: 0x7 */ - -static const GLubyte ch7data[] = { -0x70,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch7 = {5,4,-2,-6,9,ch7data}; - -/* char: 0x6 */ - -static const GLubyte ch6data[] = { -0x20,0x20,0x3c,0x20,0x3e,0x0,0xf8,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch6 = {7,10,-1,2,9,ch6data}; - -/* char: 0x5 */ - -static const GLubyte ch5data[] = { -0x22,0x22,0x3c,0x22,0x3c,0x0,0x78,0x80,0x80,0x78, -}; - -static const BitmapCharRec ch5 = {7,10,-1,2,9,ch5data}; - -/* char: 0x4 */ - -static const GLubyte ch4data[] = { -0x10,0x10,0x1c,0x10,0x1e,0x80,0x80,0xe0,0x80,0xf0, -}; - -static const BitmapCharRec ch4 = {7,10,-1,2,9,ch4data}; - -/* char: 0x3 */ - -static const GLubyte ch3data[] = { -0x8,0x8,0x8,0x3e,0x0,0x88,0x88,0xf8,0x88,0x88, -}; - -static const BitmapCharRec ch3 = {7,10,-1,2,9,ch3data}; - -/* char: 0x2 */ - -static const GLubyte ch2data[] = { -0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa, -}; - -static const BitmapCharRec ch2 = {8,14,0,3,9,ch2data}; - -/* char: 0x1 */ - -static const GLubyte ch1data[] = { -0x10,0x38,0x7c,0xfe,0x7c,0x38,0x10, -}; - -static const BitmapCharRec ch1 = {7,7,-1,0,9,ch1data}; - -static const BitmapCharRec * const chars[] = { -&ch0, -&ch1, -&ch2, -&ch3, -&ch4, -&ch5, -&ch6, -&ch7, -&ch8, -&ch9, -&ch10, -&ch11, -&ch12, -&ch13, -&ch14, -&ch15, -&ch16, -&ch17, -&ch18, -&ch19, -&ch20, -&ch21, -&ch22, -&ch23, -&ch24, -&ch25, -&ch26, -&ch27, -&ch28, -&ch29, -&ch30, -&ch31, -&ch32, -&ch33, -&ch34, -&ch35, -&ch36, -&ch37, -&ch38, -&ch39, -&ch40, -&ch41, -&ch42, -&ch43, -&ch44, -&ch45, -&ch46, -&ch47, -&ch48, -&ch49, -&ch50, -&ch51, -&ch52, -&ch53, -&ch54, -&ch55, -&ch56, -&ch57, -&ch58, -&ch59, -&ch60, -&ch61, -&ch62, -&ch63, -&ch64, -&ch65, -&ch66, -&ch67, -&ch68, -&ch69, -&ch70, -&ch71, -&ch72, -&ch73, -&ch74, -&ch75, -&ch76, -&ch77, -&ch78, -&ch79, -&ch80, -&ch81, -&ch82, -&ch83, -&ch84, -&ch85, -&ch86, -&ch87, -&ch88, -&ch89, -&ch90, -&ch91, -&ch92, -&ch93, -&ch94, -&ch95, -&ch96, -&ch97, -&ch98, -&ch99, -&ch100, -&ch101, -&ch102, -&ch103, -&ch104, -&ch105, -&ch106, -&ch107, -&ch108, -&ch109, -&ch110, -&ch111, -&ch112, -&ch113, -&ch114, -&ch115, -&ch116, -&ch117, -&ch118, -&ch119, -&ch120, -&ch121, -&ch122, -&ch123, -&ch124, -&ch125, -&ch126, -&ch127, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -&ch160, -&ch161, -&ch162, -&ch163, -&ch164, -&ch165, -&ch166, -&ch167, -&ch168, -&ch169, -&ch170, -&ch171, -&ch172, -&ch173, -&ch174, -&ch175, -&ch176, -&ch177, -&ch178, -&ch179, -&ch180, -&ch181, -&ch182, -&ch183, -&ch184, -&ch185, -&ch186, -&ch187, -&ch188, -&ch189, -&ch190, -&ch191, -&ch192, -&ch193, -&ch194, -&ch195, -&ch196, -&ch197, -&ch198, -&ch199, -&ch200, -&ch201, -&ch202, -&ch203, -&ch204, -&ch205, -&ch206, -&ch207, -&ch208, -&ch209, -&ch210, -&ch211, -&ch212, -&ch213, -&ch214, -&ch215, -&ch216, -&ch217, -&ch218, -&ch219, -&ch220, -&ch221, -&ch222, -&ch223, -&ch224, -&ch225, -&ch226, -&ch227, -&ch228, -&ch229, -&ch230, -&ch231, -&ch232, -&ch233, -&ch234, -&ch235, -&ch236, -&ch237, -&ch238, -&ch239, -&ch240, -&ch241, -&ch242, -&ch243, -&ch244, -&ch245, -&ch246, -&ch247, -&ch248, -&ch249, -&ch250, -&ch251, -&ch252, -&ch253, -&ch254, -&ch255, -}; - -const BitmapFontRec glutBitmap9By15 = { -"-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1", -256, -0, -chars -}; - diff --git a/lib/glut-3.7.6/lib/glut/glut_bitmap.c b/lib/glut-3.7.6/lib/glut/glut_bitmap.c deleted file mode 100644 index 2a74054f60ee469109db8ddae44a8e83da8ad3f0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_bitmap.c +++ /dev/null @@ -1,57 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" -#include "glutbitmap.h" - -void APIENTRY -glutBitmapCharacter(GLUTbitmapFont font, int c) -{ - const BitmapCharRec *ch; - BitmapFontPtr fontinfo; - GLint swapbytes, lsbfirst, rowlength; - GLint skiprows, skippixels, alignment; - -#if defined(_WIN32) - fontinfo = (BitmapFontPtr) __glutFont(font); -#else - fontinfo = (BitmapFontPtr) font; -#endif - - if (c < fontinfo->first || - c >= fontinfo->first + fontinfo->num_chars) - return; - ch = fontinfo->ch[c - fontinfo->first]; - if (ch) { - /* Save current modes. */ - glGetIntegerv(GL_UNPACK_SWAP_BYTES, &swapbytes); - glGetIntegerv(GL_UNPACK_LSB_FIRST, &lsbfirst); - glGetIntegerv(GL_UNPACK_ROW_LENGTH, &rowlength); - glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skiprows); - glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &skippixels); - glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment); - /* Little endian machines (DEC Alpha for example) could - benefit from setting GL_UNPACK_LSB_FIRST to GL_TRUE - instead of GL_FALSE, but this would require changing the - generated bitmaps too. */ - glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE); - glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glBitmap(ch->width, ch->height, ch->xorig, ch->yorig, - ch->advance, 0, ch->bitmap); - /* Restore saved modes. */ - glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes); - glPixelStorei(GL_UNPACK_LSB_FIRST, lsbfirst); - glPixelStorei(GL_UNPACK_ROW_LENGTH, rowlength); - glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels); - glPixelStorei(GL_UNPACK_ALIGNMENT, alignment); - } -} diff --git a/lib/glut-3.7.6/lib/glut/glut_bwidth.c b/lib/glut-3.7.6/lib/glut/glut_bwidth.c deleted file mode 100644 index 117cecf0b8c1cb840906edfdca41469d4309919c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_bwidth.c +++ /dev/null @@ -1,58 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" -#include "glutbitmap.h" - -/* CENTRY */ -int APIENTRY -glutBitmapWidth(GLUTbitmapFont font, int c) -{ - BitmapFontPtr fontinfo; - const BitmapCharRec *ch; - -#ifdef _WIN32 - fontinfo = (BitmapFontPtr) __glutFont(font); -#else - fontinfo = (BitmapFontPtr) font; -#endif - - if (c < fontinfo->first || c >= fontinfo->first + fontinfo->num_chars) - return 0; - ch = fontinfo->ch[c - fontinfo->first]; - if (ch) - return ch->advance; - else - return 0; -} - -int APIENTRY -glutBitmapLength(GLUTbitmapFont font, const unsigned char *string) -{ - int c, length; - BitmapFontPtr fontinfo; - const BitmapCharRec *ch; - -#ifdef _WIN32 - fontinfo = (BitmapFontPtr) __glutFont(font); -#else - fontinfo = (BitmapFontPtr) font; -#endif - - length = 0; - for (; *string != '\0'; string++) { - c = *string; - if (c >= fontinfo->first && c < fontinfo->first + fontinfo->num_chars) { - ch = fontinfo->ch[c - fontinfo->first]; - if (ch) - length += ch->advance; - } - } - return length; -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_cindex.c b/lib/glut-3.7.6/lib/glut/glut_cindex.c deleted file mode 100644 index a74d8b6bce638724a2074a33b5bafbcb3667a682..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_cindex.c +++ /dev/null @@ -1,252 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include "glutint.h" - -#define CLAMP(i) ((i) > 1.0 ? 1.0 : ((i) < 0.0 ? 0.0 : (i))) - -/* CENTRY */ -void APIENTRY -glutSetColor(int ndx, GLfloat red, GLfloat green, GLfloat blue) -{ - GLUTcolormap *cmap, *newcmap; - XVisualInfo *vis; - XColor color; - int i; - - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { - cmap = __glutCurrentWindow->colormap; - vis = __glutCurrentWindow->vis; - } else { - cmap = __glutCurrentWindow->overlay->colormap; - vis = __glutCurrentWindow->overlay->vis; - if (ndx == __glutCurrentWindow->overlay->transparentPixel) { - __glutWarning( - "glutSetColor: cannot set color of overlay transparent index %d\n", - ndx); - return; - } - } - - if (!cmap) { - __glutWarning("glutSetColor: current window is RGBA"); - return; - } -#if defined(_WIN32) - if (ndx >= 256 || /* always assume 256 colors on Win32 */ -#else - if (ndx >= vis->visual->map_entries || -#endif - ndx < 0) { - __glutWarning("glutSetColor: index %d out of range", ndx); - return; - } - if (cmap->refcnt > 1) { - newcmap = __glutAssociateNewColormap(vis); - cmap->refcnt--; - /* Wouldn't it be nice if XCopyColormapAndFree could be - told not to free the old colormap's entries! */ - for (i = cmap->size - 1; i >= 0; i--) { - if (i == ndx) { - /* We are going to set this cell shortly! */ - continue; - } - if (cmap->cells[i].component[GLUT_RED] >= 0.0) { - color.pixel = i; - newcmap->cells[i].component[GLUT_RED] = - cmap->cells[i].component[GLUT_RED]; - color.red = (GLfloat) 0xffff * - cmap->cells[i].component[GLUT_RED]; - newcmap->cells[i].component[GLUT_GREEN] = - cmap->cells[i].component[GLUT_GREEN]; - color.green = (GLfloat) 0xffff * - cmap->cells[i].component[GLUT_GREEN]; - newcmap->cells[i].component[GLUT_BLUE] = - cmap->cells[i].component[GLUT_BLUE]; - color.blue = (GLfloat) 0xffff * - cmap->cells[i].component[GLUT_BLUE]; - color.flags = DoRed | DoGreen | DoBlue; -#if defined(_WIN32) - if (IsWindowVisible(__glutCurrentWindow->win)) { - XHDC = __glutCurrentWindow->hdc; - } else { - XHDC = 0; - } -#endif - XStoreColor(__glutDisplay, newcmap->cmap, &color); - } else { - /* Leave unallocated entries unallocated. */ - } - } - cmap = newcmap; - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { - __glutCurrentWindow->colormap = cmap; - __glutCurrentWindow->cmap = cmap->cmap; - } else { - __glutCurrentWindow->overlay->colormap = cmap; - __glutCurrentWindow->overlay->cmap = cmap->cmap; - } - XSetWindowColormap(__glutDisplay, - __glutCurrentWindow->renderWin, cmap->cmap); - -#if !defined(_WIN32) - { - GLUTwindow *toplevel; - - toplevel = __glutToplevelOf(__glutCurrentWindow); - if (toplevel->cmap != cmap->cmap) { - __glutPutOnWorkList(toplevel, GLUT_COLORMAP_WORK); - } - } -#endif - } - color.pixel = ndx; - red = CLAMP(red); - cmap->cells[ndx].component[GLUT_RED] = red; - color.red = (GLfloat) 0xffff *red; - green = CLAMP(green); - cmap->cells[ndx].component[GLUT_GREEN] = green; - color.green = (GLfloat) 0xffff *green; - blue = CLAMP(blue); - cmap->cells[ndx].component[GLUT_BLUE] = blue; - color.blue = (GLfloat) 0xffff *blue; - color.flags = DoRed | DoGreen | DoBlue; -#if defined(_WIN32) - if (IsWindowVisible(__glutCurrentWindow->win)) { - XHDC = __glutCurrentWindow->hdc; - } else { - XHDC = 0; - } -#endif - XStoreColor(__glutDisplay, cmap->cmap, &color); -} - -GLfloat APIENTRY -glutGetColor(int ndx, int comp) -{ - GLUTcolormap *colormap; - XVisualInfo *vis; - - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { - colormap = __glutCurrentWindow->colormap; - vis = __glutCurrentWindow->vis; - } else { - colormap = __glutCurrentWindow->overlay->colormap; - vis = __glutCurrentWindow->overlay->vis; - if (ndx == __glutCurrentWindow->overlay->transparentPixel) { - __glutWarning("glutGetColor: requesting overlay transparent index %d\n", - ndx); - return -1.0; - } - } - - if (!colormap) { - __glutWarning("glutGetColor: current window is RGBA"); - return -1.0; - } -#if defined(_WIN32) -#define OUT_OF_RANGE_NDX(ndx) (ndx >= 256 || ndx < 0) -#else -#define OUT_OF_RANGE_NDX(ndx) (ndx >= vis->visual->map_entries || ndx < 0) -#endif - if (OUT_OF_RANGE_NDX(ndx)) { - __glutWarning("glutGetColor: index %d out of range", ndx); - return -1.0; - } - return colormap->cells[ndx].component[comp]; -} - -void APIENTRY -glutCopyColormap(int winnum) -{ - GLUTwindow *window = __glutWindowList[winnum - 1]; - GLUTcolormap *oldcmap, *newcmap; - XVisualInfo *dstvis; - - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { - oldcmap = __glutCurrentWindow->colormap; - dstvis = __glutCurrentWindow->vis; - newcmap = window->colormap; - } else { - oldcmap = __glutCurrentWindow->overlay->colormap; - dstvis = __glutCurrentWindow->overlay->vis; - if (!window->overlay) { - __glutWarning("glutCopyColormap: window %d has no overlay", winnum); - return; - } - newcmap = window->overlay->colormap; - } - - if (!oldcmap) { - __glutWarning("glutCopyColormap: destination colormap must be color index"); - return; - } - if (!newcmap) { - __glutWarning( - "glutCopyColormap: source colormap of window %d must be color index", - winnum); - return; - } - if (newcmap == oldcmap) { - /* Source and destination are the same; now copy needed. */ - return; - } -#if !defined(_WIN32) - /* Play safe: compare visual IDs, not Visual*'s. */ - if (newcmap->visual->visualid == oldcmap->visual->visualid) { -#endif - /* Visuals match! "Copy" by reference... */ - __glutFreeColormap(oldcmap); - newcmap->refcnt++; - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { - __glutCurrentWindow->colormap = newcmap; - __glutCurrentWindow->cmap = newcmap->cmap; - } else { - __glutCurrentWindow->overlay->colormap = newcmap; - __glutCurrentWindow->overlay->cmap = newcmap->cmap; - } - XSetWindowColormap(__glutDisplay, __glutCurrentWindow->renderWin, - newcmap->cmap); -#if !defined(_WIN32) - __glutPutOnWorkList(__glutToplevelOf(window), GLUT_COLORMAP_WORK); - } else { - GLUTcolormap *copycmap; - XColor color; - int i, last; - - /* Visuals different - need a distinct X colormap! */ - copycmap = __glutAssociateNewColormap(dstvis); - /* Wouldn't it be nice if XCopyColormapAndFree could be - told not to free the old colormap's entries! */ - last = newcmap->size; - if (last > copycmap->size) { - last = copycmap->size; - } - for (i = last - 1; i >= 0; i--) { - if (newcmap->cells[i].component[GLUT_RED] >= 0.0) { - color.pixel = i; - copycmap->cells[i].component[GLUT_RED] = - newcmap->cells[i].component[GLUT_RED]; - color.red = (GLfloat) 0xffff * - newcmap->cells[i].component[GLUT_RED]; - copycmap->cells[i].component[GLUT_GREEN] = - newcmap->cells[i].component[GLUT_GREEN]; - color.green = (GLfloat) 0xffff * - newcmap->cells[i].component[GLUT_GREEN]; - copycmap->cells[i].component[GLUT_BLUE] = - newcmap->cells[i].component[GLUT_BLUE]; - color.blue = (GLfloat) 0xffff * - newcmap->cells[i].component[GLUT_BLUE]; - color.flags = DoRed | DoGreen | DoBlue; - XStoreColor(__glutDisplay, copycmap->cmap, &color); - } - } - } -#endif -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_cmap.c b/lib/glut-3.7.6/lib/glut/glut_cmap.c deleted file mode 100644 index e3bbbf8354806cd412279a4f84e2042f1662c330..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_cmap.c +++ /dev/null @@ -1,395 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include /* SunOS multithreaded assert() needs . Lame. */ -#include -#if !defined(_WIN32) -#include -#include -#include /* for XA_RGB_DEFAULT_MAP atom */ -#if defined(__vms) -#include /* for XmuLookupStandardColormap */ -#else -#include /* for XmuLookupStandardColormap */ -#endif -#endif - -/* SGI optimization introduced in IRIX 6.3 to avoid X server - round trips for interning common X atoms. */ -#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS) -#include -#else -#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how) -#endif - -#include "glutint.h" -#include "layerutil.h" - -GLUTcolormap *__glutColormapList = NULL; - -GLUTcolormap * -__glutAssociateNewColormap(XVisualInfo * vis) -{ - GLUTcolormap *cmap; - int transparentPixel, i; - unsigned long pixels[255]; - - cmap = (GLUTcolormap *) malloc(sizeof(GLUTcolormap)); - if (!cmap) - __glutFatalError("out of memory."); -#if defined(_WIN32) - pixels[0] = 0; /* avoid compilation warnings on win32 */ - cmap->visual = 0; - cmap->size = 256; /* always assume 256 on Win32 */ -#else - cmap->visual = vis->visual; - cmap->size = vis->visual->map_entries; -#endif - cmap->refcnt = 1; - cmap->cells = (GLUTcolorcell *) - malloc(sizeof(GLUTcolorcell) * cmap->size); - if (!cmap->cells) - __glutFatalError("out of memory."); - /* make all color cell entries be invalid */ - for (i = cmap->size - 1; i >= 0; i--) { - cmap->cells[i].component[GLUT_RED] = -1.0; - cmap->cells[i].component[GLUT_GREEN] = -1.0; - cmap->cells[i].component[GLUT_BLUE] = -1.0; - } - transparentPixel = __glutGetTransparentPixel(__glutDisplay, vis); - if (transparentPixel == -1 || transparentPixel >= cmap->size) { - - /* If there is no transparent pixel or if the transparent - pixel is outside the range of valid colormap cells (HP - can implement their overlays this smart way since their - transparent pixel is 255), we can AllocAll the colormap. - See note below. */ - - cmap->cmap = XCreateColormap(__glutDisplay, - __glutRoot, cmap->visual, AllocAll); - } else { - - /* On machines where zero (or some other value in the range - of 0 through map_entries-1), BadAlloc may be generated - when an AllocAll overlay colormap is allocated since the - transparent pixel precludes all the cells in the colormap - being allocated (the transparent pixel is pre-allocated). - So in this case, use XAllocColorCells to allocate - map_entries-1 pixels (that is, all but the transparent - pixel. */ - -#if defined(_WIN32) - cmap->cmap = XCreateColormap(__glutDisplay, - __glutRoot, 0, AllocNone); -#else - cmap->cmap = XCreateColormap(__glutDisplay, - __glutRoot, vis->visual, AllocNone); - XAllocColorCells(__glutDisplay, cmap->cmap, False, 0, 0, - pixels, cmap->size - 1); -#endif - } - cmap->next = __glutColormapList; - __glutColormapList = cmap; - return cmap; -} - -static GLUTcolormap * -associateColormap(XVisualInfo * vis) -{ -#if !defined(_WIN32) - GLUTcolormap *cmap = __glutColormapList; - - while (cmap != NULL) { - /* Play safe: compare visual IDs, not Visual*'s. */ - if (cmap->visual->visualid == vis->visual->visualid) { - /* Already have created colormap for the visual. */ - cmap->refcnt++; - return cmap; - } - cmap = cmap->next; - } -#endif - return __glutAssociateNewColormap(vis); -} - -void -__glutSetupColormap(XVisualInfo * vi, GLUTcolormap ** colormap, Colormap * cmap) -{ -#if defined(_WIN32) - if (vi->dwFlags & PFD_NEED_PALETTE || vi->iPixelType == PFD_TYPE_COLORINDEX) { - *colormap = associateColormap(vi); - *cmap = (*colormap)->cmap; - } else { - *colormap = NULL; - *cmap = 0; - } -#else - Status status; - XStandardColormap *standardCmaps; - int i, numCmaps; - static Atom hpColorRecoveryAtom = -1; - int isRGB, visualClass, rc; - -#if defined(__cplusplus) || defined(c_plusplus) - visualClass = vi->c_class; -#else - visualClass = vi->class; -#endif - switch (visualClass) { - case PseudoColor: - /* Mesa might return a PseudoColor visual for RGB mode. */ - rc = glXGetConfig(__glutDisplay, vi, GLX_RGBA, &isRGB); - if (rc == 0 && isRGB) { - /* Must be Mesa. */ - *colormap = NULL; - if (MaxCmapsOfScreen(DefaultScreenOfDisplay(__glutDisplay)) == 1 - && vi->visual == DefaultVisual(__glutDisplay, __glutScreen)) { - char *privateCmap = getenv("MESA_PRIVATE_CMAP"); - - if (privateCmap) { - /* User doesn't want to share colormaps. */ - *cmap = XCreateColormap(__glutDisplay, __glutRoot, - vi->visual, AllocNone); - } else { - /* Share the root colormap. */ - *cmap = DefaultColormap(__glutDisplay, __glutScreen); - } - } else { - /* Get our own PseudoColor colormap. */ - *cmap = XCreateColormap(__glutDisplay, __glutRoot, - vi->visual, AllocNone); - } - } else { - /* CI mode, real GLX never returns a PseudoColor visual - for RGB mode. */ - *colormap = associateColormap(vi); - *cmap = (*colormap)->cmap; - } - break; - case TrueColor: - case DirectColor: - *colormap = NULL; /* NULL if RGBA */ - - /* Hewlett-Packard supports a feature called "HP Color - Recovery". Mesa has code to use HP Color Recovery. For - Mesa to use this feature, the atom - _HP_RGB_SMOOTH_MAP_LIST must be defined on the root - window AND the colormap obtainable by XGetRGBColormaps - for that atom must be set on the window. If that - colormap is not set, the output will look stripy. */ - - if (hpColorRecoveryAtom == -1) { - char *xvendor; - -#define VENDOR_HP "Hewlett-Packard" - - /* Only makes sense to make XInternAtom round-trip if we - know that we are connected to an HP X server. */ - xvendor = ServerVendor(__glutDisplay); - if (!strncmp(xvendor, VENDOR_HP, sizeof(VENDOR_HP) - 1)) { - hpColorRecoveryAtom = XInternAtom(__glutDisplay, "_HP_RGB_SMOOTH_MAP_LIST", True); - } else { - hpColorRecoveryAtom = None; - } - } - if (hpColorRecoveryAtom != None) { - status = XGetRGBColormaps(__glutDisplay, __glutRoot, - &standardCmaps, &numCmaps, hpColorRecoveryAtom); - if (status == 1) { - for (i = 0; i < numCmaps; i++) { - if (standardCmaps[i].visualid == vi->visualid) { - *cmap = standardCmaps[i].colormap; - XFree(standardCmaps); - return; - } - } - XFree(standardCmaps); - } - } -#ifndef SOLARIS_2_4_BUG - /* Solaris 2.4 and 2.5 have a bug in their - XmuLookupStandardColormap implementations. Please - compile your Solaris 2.4 or 2.5 version of GLUT with - -DSOLARIS_2_4_BUG to work around this bug. The symptom - of the bug is that programs will get a BadMatch error - from X_CreateWindow when creating a GLUT window because - Solaris 2.4 and 2.5 create a corrupted RGB_DEFAULT_MAP - property. Note that this workaround prevents Colormap - sharing between applications, perhaps leading - unnecessary colormap installations or colormap flashing. - Sun fixed this bug in Solaris 2.6. */ - status = XmuLookupStandardColormap(__glutDisplay, - vi->screen, vi->visualid, vi->depth, XA_RGB_DEFAULT_MAP, - /* replace */ False, /* retain */ True); - if (status == 1) { - status = XGetRGBColormaps(__glutDisplay, __glutRoot, - &standardCmaps, &numCmaps, XA_RGB_DEFAULT_MAP); - if (status == 1) { - for (i = 0; i < numCmaps; i++) { - if (standardCmaps[i].visualid == vi->visualid) { - *cmap = standardCmaps[i].colormap; - XFree(standardCmaps); - return; - } - } - XFree(standardCmaps); - } - } -#endif - /* If no standard colormap but TrueColor, just make a - private one. */ - /* XXX Should do a better job of internal sharing for - privately allocated TrueColor colormaps. */ - /* XXX DirectColor probably needs ramps hand initialized! */ - *cmap = XCreateColormap(__glutDisplay, __glutRoot, - vi->visual, AllocNone); - break; - case StaticColor: - case StaticGray: - case GrayScale: - /* Mesa supports these visuals */ - *colormap = NULL; - *cmap = XCreateColormap(__glutDisplay, __glutRoot, - vi->visual, AllocNone); - break; - default: - __glutFatalError( - "could not allocate colormap for visual type: %d.", - visualClass); - } - return; -#endif -} - -#if !defined(_WIN32) -static int -findColormaps(GLUTwindow * window, - Window * winlist, Colormap * cmaplist, int num, int max) -{ - GLUTwindow *child; - int i; - - /* Do not allow more entries that maximum number of - colormaps! */ - if (num >= max) - return num; - /* Is cmap for this window already on the list? */ - for (i = 0; i < num; i++) { - if (cmaplist[i] == window->cmap) - goto normalColormapAlreadyListed; - } - /* Not found on the list; add colormap and window. */ - winlist[num] = window->win; - cmaplist[num] = window->cmap; - num++; - -normalColormapAlreadyListed: - - /* Repeat above but for the overlay colormap if there one. */ - if (window->overlay) { - if (num >= max) - return num; - for (i = 0; i < num; i++) { - if (cmaplist[i] == window->overlay->cmap) - goto overlayColormapAlreadyListed; - } - winlist[num] = window->overlay->win; - cmaplist[num] = window->overlay->cmap; - num++; - } -overlayColormapAlreadyListed: - - /* Recursively search children. */ - child = window->children; - while (child) { - num = findColormaps(child, winlist, cmaplist, num, max); - child = child->siblings; - } - return num; -} - -void -__glutEstablishColormapsProperty(GLUTwindow * window) -{ - /* this routine is strictly X. Win32 doesn't need to do - anything of this sort (but has to do other wacky stuff - later). */ - static Atom wmColormapWindows = None; - Window *winlist; - Colormap *cmaplist; - Status status; - int maxcmaps, num; - - assert(!window->parent); - maxcmaps = MaxCmapsOfScreen(ScreenOfDisplay(__glutDisplay, - __glutScreen)); - /* For portability reasons we don't use alloca for winlist - and cmaplist, but we could. */ - winlist = (Window *) malloc(maxcmaps * sizeof(Window)); - cmaplist = (Colormap *) malloc(maxcmaps * sizeof(Colormap)); - num = findColormaps(window, winlist, cmaplist, 0, maxcmaps); - if (num < 2) { - /* Property no longer needed; remove it. */ - wmColormapWindows = XSGIFastInternAtom(__glutDisplay, - "WM_COLORMAP_WINDOWS", SGI_XA_WM_COLORMAP_WINDOWS, False); - if (wmColormapWindows == None) { - __glutWarning("Could not intern X atom for WM_COLORMAP_WINDOWS."); - return; - } - XDeleteProperty(__glutDisplay, window->win, wmColormapWindows); - } else { - status = XSetWMColormapWindows(__glutDisplay, window->win, - winlist, num); - /* XSetWMColormapWindows should always work unless the - WM_COLORMAP_WINDOWS property cannot be intern'ed. We - check to be safe. */ - if (status == False) - __glutFatalError("XSetWMColormapWindows returned False."); - } - /* For portability reasons we don't use alloca for winlist - and cmaplist, but we could. */ - free(winlist); - free(cmaplist); -} - -GLUTwindow * -__glutToplevelOf(GLUTwindow * window) -{ - while (window->parent) { - window = window->parent; - } - return window; -} -#endif - -void -__glutFreeColormap(GLUTcolormap * cmap) -{ - GLUTcolormap *cur, **prev; - - cmap->refcnt--; - if (cmap->refcnt == 0) { - /* remove from colormap list */ - cur = __glutColormapList; - prev = &__glutColormapList; - while (cur) { - if (cur == cmap) { - *prev = cmap->next; - break; - } - prev = &(cur->next); - cur = cur->next; - } - /* actually free colormap */ - XFreeColormap(__glutDisplay, cmap->cmap); - free(cmap->cells); - free(cmap); - } -} - diff --git a/lib/glut-3.7.6/lib/glut/glut_cursor.c b/lib/glut-3.7.6/lib/glut/glut_cursor.c deleted file mode 100644 index 7601a6d36cd2edb80aae014ef3c88c76e5e53d14..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_cursor.c +++ /dev/null @@ -1,201 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1995, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -#if !defined(_WIN32) -#include /* For XA_CURSOR */ -#include -#endif - -typedef struct _CursorTable { -#if defined(_WIN32) - char* glyph; -#else - int glyph; -#endif - Cursor cursor; -} CursorTable; -/* *INDENT-OFF* */ - -static CursorTable cursorTable[] = { - {XC_arrow, None}, /* GLUT_CURSOR_RIGHT_ARROW */ - {XC_top_left_arrow, None}, /* GLUT_CURSOR_LEFT_ARROW */ - {XC_hand1, None}, /* GLUT_CURSOR_INFO */ - {XC_pirate, None}, /* GLUT_CURSOR_DESTROY */ - {XC_question_arrow, None}, /* GLUT_CURSOR_HELP */ - {XC_exchange, None}, /* GLUT_CURSOR_CYCLE */ - {XC_spraycan, None}, /* GLUT_CURSOR_SPRAY */ - {XC_watch, None}, /* GLUT_CURSOR_WAIT */ - {XC_xterm, None}, /* GLUT_CURSOR_TEXT */ - {XC_crosshair, None}, /* GLUT_CURSOR_CROSSHAIR */ - {XC_sb_v_double_arrow, None}, /* GLUT_CURSOR_UP_DOWN */ - {XC_sb_h_double_arrow, None}, /* GLUT_CURSOR_LEFT_RIGHT */ - {XC_top_side, None}, /* GLUT_CURSOR_TOP_SIDE */ - {XC_bottom_side, None}, /* GLUT_CURSOR_BOTTOM_SIDE */ - {XC_left_side, None}, /* GLUT_CURSOR_LEFT_SIDE */ - {XC_right_side, None}, /* GLUT_CURSOR_RIGHT_SIDE */ - {XC_top_left_corner, None}, /* GLUT_CURSOR_TOP_LEFT_CORNER */ - {XC_top_right_corner, None}, /* GLUT_CURSOR_TOP_RIGHT_CORNER */ - {XC_bottom_right_corner, None}, /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */ - {XC_bottom_left_corner, None}, /* GLUT_CURSOR_BOTTOM_LEFT_CORNER */ -}; -/* *INDENT-ON* */ - -#if !defined(_WIN32) -static Cursor blankCursor = None; -static Cursor fullCrosshairCusor = None; - -/* SGI X server's support a special property called the - _SGI_CROSSHAIR_CURSOR that when installed as a window's - cursor, becomes a full screen crosshair cursor. SGI - has special cursor generation hardware for this case. */ -static Cursor -getFullCrosshairCursor(void) -{ - Cursor cursor; - Atom crosshairAtom, actualType; - int rc, actualFormat; - unsigned long n, left; - unsigned long *value; - - if (fullCrosshairCusor == None) { - crosshairAtom = XInternAtom(__glutDisplay, - "_SGI_CROSSHAIR_CURSOR", True); - if (crosshairAtom != None) { - value = 0; /* Make compiler happy. */ - rc = XGetWindowProperty(__glutDisplay, __glutRoot, - crosshairAtom, 0, 1, False, XA_CURSOR, &actualType, - &actualFormat, &n, &left, (unsigned char **) &value); - if (rc == Success && actualFormat == 32 && n >= 1) { - cursor = value[0]; - XFree(value); - return cursor; - } - } - } - return XCreateFontCursor(__glutDisplay, XC_crosshair); -} - -/* X11 forces you to create a blank cursor if you want - to disable the cursor. */ -static Cursor -makeBlankCursor(void) -{ - static char data[1] = - {0}; - Cursor cursor; - Pixmap blank; - XColor dummy; - - blank = XCreateBitmapFromData(__glutDisplay, __glutRoot, - data, 1, 1); - if (blank == None) - __glutFatalError("out of memory."); - cursor = XCreatePixmapCursor(__glutDisplay, blank, blank, - &dummy, &dummy, 0, 0); - XFreePixmap(__glutDisplay, blank); - - return cursor; -} -#endif /* !_WIN32 */ - -/* Win32 and X11 use this same function to accomplish - fairly different tasks. X11 lets you just define the - cursor for a window and the window system takes care - of making sure that the window's cursor is installed - when the mouse is in the window. Win32 requires the - application to handle a WM_SETCURSOR message to install - the right cursor when windows are entered. Think of - the Win32 __glutSetCursor (called from __glutWindowProc) - as "install cursor". Think of the X11 __glutSetCursor - (called from glutSetCursor) as "define cursor". */ -void -__glutSetCursor(GLUTwindow *window) -{ - int cursor = window->cursor; - Cursor xcursor; - - if (cursor >= 0 && - cursor < sizeof(cursorTable) / sizeof(cursorTable[0])) { - if (cursorTable[cursor].cursor == None) { - cursorTable[cursor].cursor = XCreateFontCursor(__glutDisplay, - cursorTable[cursor].glyph); - } - xcursor = cursorTable[cursor].cursor; - } else { - /* Special cases. */ - switch (cursor) { - case GLUT_CURSOR_INHERIT: -#if defined(_WIN32) - while (window->parent) { - window = window->parent; - if (window->cursor != GLUT_CURSOR_INHERIT) { - __glutSetCursor(window); - return; - } - } - /* XXX Default to an arrow cursor. Is this - right or should we be letting the default - window proc be installing some system cursor? */ - xcursor = cursorTable[0].cursor; - if (xcursor == NULL) { - xcursor = - cursorTable[0].cursor = - LoadCursor(NULL, cursorTable[0].glyph); - } -#else - xcursor = None; -#endif - break; - case GLUT_CURSOR_NONE: -#if defined(_WIN32) - xcursor = NULL; -#else - if (blankCursor == None) { - blankCursor = makeBlankCursor(); - } - xcursor = blankCursor; -#endif - break; - case GLUT_CURSOR_FULL_CROSSHAIR: -#if defined(_WIN32) - xcursor = LoadCursor(NULL, IDC_CROSS); -#else - if (fullCrosshairCusor == None) { - fullCrosshairCusor = getFullCrosshairCursor(); - } - xcursor = fullCrosshairCusor; -#endif - break; - } - } - XDefineCursor(__glutDisplay, - window->win, xcursor); - XFlush(__glutDisplay); -} - -/* CENTRY */ -void APIENTRY -glutSetCursor(int cursor) -{ -#ifdef _WIN32 - POINT point; - - __glutCurrentWindow->cursor = cursor; - /* Are we in the window right now? If so, - install the cursor. */ - GetCursorPos(&point); - if (__glutCurrentWindow->win == WindowFromPoint(point)) { - __glutSetCursor(__glutCurrentWindow); - } -#else - __glutCurrentWindow->cursor = cursor; - __glutSetCursor(__glutCurrentWindow); -#endif -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_dials.c b/lib/glut-3.7.6/lib/glut/glut_dials.c deleted file mode 100644 index b34e8430e293f9d3cfa99d1ba335b727c782071d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_dials.c +++ /dev/null @@ -1,26 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -void APIENTRY -glutButtonBoxFunc(GLUTbuttonBoxCB buttonBoxFunc) -{ - __glutCurrentWindow->buttonBox = buttonBoxFunc; - __glutUpdateInputDeviceMaskFunc = __glutUpdateInputDeviceMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_DEVICE_MASK_WORK); -} - -void APIENTRY -glutDialsFunc(GLUTdialsCB dialsFunc) -{ - __glutCurrentWindow->dials = dialsFunc; - __glutUpdateInputDeviceMaskFunc = __glutUpdateInputDeviceMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_DEVICE_MASK_WORK); -} diff --git a/lib/glut-3.7.6/lib/glut/glut_dstr.c b/lib/glut-3.7.6/lib/glut/glut_dstr.c deleted file mode 100644 index 6084e87dd87c9af83315ca2fd2cdc33b62fc8350..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_dstr.c +++ /dev/null @@ -1,1637 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include -#include "glutint.h" - -/* glxcaps matches the criteria macros listed in glutint.h, but - only list the first set (those that correspond to GLX visual - attributes). */ -static int glxcap[NUM_GLXCAPS] = -{ - GLX_RGBA, - GLX_BUFFER_SIZE, - GLX_DOUBLEBUFFER, - GLX_STEREO, - GLX_AUX_BUFFERS, - GLX_RED_SIZE, - GLX_GREEN_SIZE, - GLX_BLUE_SIZE, - GLX_ALPHA_SIZE, - GLX_DEPTH_SIZE, - GLX_STENCIL_SIZE, - GLX_ACCUM_RED_SIZE, - GLX_ACCUM_GREEN_SIZE, - GLX_ACCUM_BLUE_SIZE, - GLX_ACCUM_ALPHA_SIZE, - GLX_LEVEL, -}; - -#ifdef TEST - -#if !defined(_WIN32) -char *__glutProgramName = "dstr"; -Display *__glutDisplay; -int __glutScreen; -XVisualInfo *(*__glutDetermineVisualFromString) (char *string, Bool * treatAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask, void **fbc) = NULL; -char *__glutDisplayString = NULL; -#endif -static int verbose = 0; - -static char *compstr[] = -{ - "none", "=", "!=", "<=", ">=", ">", "<", "~" -}; -static char *capstr[] = -{ - "rgba", "bufsize", "double", "stereo", "auxbufs", "red", "green", "blue", "alpha", - "depth", "stencil", "acred", "acgreen", "acblue", "acalpha", "level", "xvisual", - "transparent", "samples", "xstaticgray", "xgrayscale", "xstaticcolor", "xpseudocolor", - "xtruecolor", "xdirectcolor", "slow", "conformant", "num" -}; - -static void -printCriteria(Criterion * criteria, int ncriteria) -{ - int i; - printf("Criteria: %d\n", ncriteria); - for (i = 0; i < ncriteria; i++) { - printf(" %s %s %d\n", - capstr[criteria[i].capability], - compstr[criteria[i].comparison], - criteria[i].value); - } -} - -#endif /* TEST */ - -static int isMesaGLX = -1; - -static int -determineMesaGLX(void) -{ -#ifdef GLX_VERSION_1_1 - const char *vendor, *version, *ch; - - vendor = glXGetClientString(__glutDisplay, GLX_VENDOR); - if (!strcmp(vendor, "Brian Paul")) { - version = glXGetClientString(__glutDisplay, GLX_VERSION); - for (ch = version; *ch != ' ' && *ch != '\0'; ch++); - for (; *ch == ' ' && *ch != '\0'; ch++); - -#define MESA_NAME "Mesa " /* Trailing space is intentional. */ - - if (!strncmp(MESA_NAME, ch, sizeof(MESA_NAME) - 1)) { - return 1; - } - } -#else - /* Recent versions for Mesa should support GLX 1.1 and - therefore glXGetClientString. If we get into this case, - we would be compiling against a true OpenGL not supporting - GLX 1.1, and the resulting compiled library won't work well - with Mesa then. */ -#endif - return 0; -} - -static XVisualInfo ** -getMesaVisualList(int *n) -{ - XVisualInfo **vlist, *vinfo; - int attribs[23]; - int i, x, cnt; - - vlist = (XVisualInfo **) malloc((32 + 16) * sizeof(XVisualInfo *)); - if (!vlist) - __glutFatalError("out of memory."); - - cnt = 0; - for (i = 0; i < 32; i++) { - x = 0; - attribs[x] = GLX_RGBA; - x++; - attribs[x] = GLX_RED_SIZE; - x++; - attribs[x] = 1; - x++; - attribs[x] = GLX_GREEN_SIZE; - x++; - attribs[x] = 1; - x++; - attribs[x] = GLX_BLUE_SIZE; - x++; - attribs[x] = 1; - x++; - if (i & 1) { - attribs[x] = GLX_DEPTH_SIZE; - x++; - attribs[x] = 1; - x++; - } - if (i & 2) { - attribs[x] = GLX_STENCIL_SIZE; - x++; - attribs[x] = 1; - x++; - } - if (i & 4) { - attribs[x] = GLX_ACCUM_RED_SIZE; - x++; - attribs[x] = 1; - x++; - attribs[x] = GLX_ACCUM_GREEN_SIZE; - x++; - attribs[x] = 1; - x++; - attribs[x] = GLX_ACCUM_BLUE_SIZE; - x++; - attribs[x] = 1; - x++; - } - if (i & 8) { - attribs[x] = GLX_ALPHA_SIZE; - x++; - attribs[x] = 1; - x++; - if (i & 4) { - attribs[x] = GLX_ACCUM_ALPHA_SIZE; - x++; - attribs[x] = 1; - x++; - } - } - if (i & 16) { - attribs[x] = GLX_DOUBLEBUFFER; - x++; - } - attribs[x] = None; - x++; - assert(x <= sizeof(attribs) / sizeof(attribs[0])); - vinfo = glXChooseVisual(__glutDisplay, __glutScreen, attribs); - if (vinfo) { - vlist[cnt] = vinfo; - cnt++; - } - } - for (i = 0; i < 16; i++) { - x = 0; - if (i & 1) { - attribs[x] = GLX_DEPTH_SIZE; - x++; - attribs[x] = 1; - x++; - } - if (i & 2) { - attribs[x] = GLX_STENCIL_SIZE; - x++; - attribs[x] = 1; - x++; - } - if (i & 4) { - attribs[x] = GLX_DOUBLEBUFFER; - x++; - } - if (i & 8) { - attribs[x] = GLX_LEVEL; - x++; - attribs[x] = 1; - x++; -#if defined(GLX_TRANSPARENT_TYPE_EXT) && defined(GLX_TRANSPARENT_INDEX_EXT) - attribs[x] = GLX_TRANSPARENT_TYPE_EXT; - x++; - attribs[x] = GLX_TRANSPARENT_INDEX_EXT; - x++; -#endif - } - attribs[x] = None; - x++; - assert(x <= sizeof(attribs) / sizeof(attribs[0])); - vinfo = glXChooseVisual(__glutDisplay, __glutScreen, attribs); - if (vinfo) { - vlist[cnt] = vinfo; - cnt++; - } - } - - *n = cnt; - return vlist; -} - -static FrameBufferMode * -loadVisuals(int *nitems_return) -{ - XVisualInfo *vinfo, **vlist, template; - FrameBufferMode *fbmodes, *mode; - int n, i, j, rc, glcapable; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - int multisample; -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_info) - int visual_info; -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_rating) - int visual_rating; -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - int fbconfig; -#endif - - isMesaGLX = determineMesaGLX(); - if (isMesaGLX) { - vlist = getMesaVisualList(&n); - } else { -#if !defined(_WIN32) - template.screen = __glutScreen; - vinfo = XGetVisualInfo(__glutDisplay, VisualScreenMask, &template, &n); -#else - vinfo = XGetVisualInfo(__glutDisplay, 0, &template, &n); -#endif - if (vinfo == NULL) { - *nitems_return = 0; - return NULL; - } - assert(n > 0); - - /* Make an array of XVisualInfo* pointers to help the Mesa - case because each glXChooseVisual call returns a - distinct XVisualInfo*, not a handy array like - XGetVisualInfo. (Mesa expects us to return the _exact_ - pointer returned by glXChooseVisual so we could not just - copy the returned structure.) */ - vlist = (XVisualInfo **) malloc(n * sizeof(XVisualInfo *)); - if (!vlist) - __glutFatalError("out of memory."); - for (i = 0; i < n; i++) { - vlist[i] = &vinfo[i]; - } - } - -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - multisample = __glutIsSupportedByGLX("GLX_SGIS_multisample"); -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_info) - visual_info = __glutIsSupportedByGLX("GLX_EXT_visual_info"); -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_rating) - visual_rating = __glutIsSupportedByGLX("GLX_EXT_visual_rating"); -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - fbconfig = __glutIsSupportedByGLX("GLX_SGIX_fbconfig"); -#endif - - fbmodes = (FrameBufferMode *) malloc(n * sizeof(FrameBufferMode)); - if (fbmodes == NULL) { - *nitems_return = -1; - return NULL; - } - for (i = 0; i < n; i++) { - mode = &fbmodes[i]; - mode->vi = vlist[i]; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - mode->fbc = NULL; -#endif - rc = glXGetConfig(__glutDisplay, vlist[i], GLX_USE_GL, &glcapable); - if (rc == 0 && glcapable) { - mode->valid = 1; /* Assume the best until proven - otherwise. */ - for (j = 0; j < NUM_GLXCAPS; j++) { - rc = glXGetConfig(__glutDisplay, vlist[i], glxcap[j], &mode->cap[j]); - if (rc != 0) { - mode->valid = 0; - } - } -#if defined(_WIN32) - mode->cap[XVISUAL] = ChoosePixelFormat(XHDC, vlist[i]); -#else - mode->cap[XVISUAL] = (int) vlist[i]->visualid; -#endif - mode->cap[XSTATICGRAY] = 0; - mode->cap[XGRAYSCALE] = 0; - mode->cap[XSTATICCOLOR] = 0; - mode->cap[XPSEUDOCOLOR] = 0; - mode->cap[XTRUECOLOR] = 0; - mode->cap[XDIRECTCOLOR] = 0; -#if !defined(_WIN32) -#if defined(__cplusplus) || defined(c_plusplus) - switch (vlist[i]->c_class) { -#else - switch (vlist[i]->class) { -#endif - case StaticGray: - mode->cap[XSTATICGRAY] = 1; - break; - case GrayScale: - mode->cap[XGRAYSCALE] = 1; - break; - case StaticColor: - mode->cap[XSTATICCOLOR] = 1; - break; - case PseudoColor: - mode->cap[XPSEUDOCOLOR] = 1; - break; - case TrueColor: - mode->cap[XTRUECOLOR] = 1; - break; - case DirectColor: - mode->cap[XDIRECTCOLOR] = 1; - break; - } -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_rating) - if (visual_rating) { - int rating; - -/* babcock@cs.montana.edu reported that DEC UNIX (OSF1) V4.0 - 564 for Alpha did not properly define GLX_VISUAL_CAVEAT_EXT - in despite claiming to support - GLX_EXT_visual_rating. */ -#ifndef GLX_VISUAL_CAVEAT_EXT -#define GLX_VISUAL_CAVEAT_EXT 0x20 -#endif - - rc = glXGetConfig(__glutDisplay, - vlist[i], GLX_VISUAL_CAVEAT_EXT, &rating); - if (rc != 0) { - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 1; - } else { - switch (rating) { - case GLX_SLOW_VISUAL_EXT: - mode->cap[SLOW] = 1; - mode->cap[CONFORMANT] = 1; - break; - -/* IRIX 5.3 for the R10K Indigo2 may have shipped without this - properly defined in /usr/include/GL/glxtokens.h */ -#ifndef GLX_NON_CONFORMANT_VISUAL_EXT -#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D -#endif - - case GLX_NON_CONFORMANT_VISUAL_EXT: - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 0; - break; - case GLX_NONE_EXT: - default: /* XXX Hopefully this is a good default - assumption. */ - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 1; - break; - } - } - } else { - mode->cap[TRANSPARENT] = 0; - } -#else - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 1; -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_info) - if (visual_info) { - int transparent; - -/* babcock@cs.montana.edu reported that DEC UNIX (OSF1) V4.0 - 564 for Alpha did not properly define - GLX_TRANSPARENT_TYPE_EXT in despite claiming to - support GLX_EXT_visual_info. */ -#ifndef GLX_TRANSPARENT_TYPE_EXT -#define GLX_TRANSPARENT_TYPE_EXT 0x23 -#endif - - rc = glXGetConfig(__glutDisplay, - vlist[i], GLX_TRANSPARENT_TYPE_EXT, &transparent); - if (rc != 0) { - mode->cap[TRANSPARENT] = 0; - } else { - mode->cap[TRANSPARENT] = (transparent != GLX_NONE_EXT); - } - } else { - mode->cap[TRANSPARENT] = 0; - } -#else - mode->cap[TRANSPARENT] = 0; -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - if (multisample) { - rc = glXGetConfig(__glutDisplay, - vlist[i], GLX_SAMPLES_SGIS, &mode->cap[SAMPLES]); - if (rc != 0) { - mode->cap[SAMPLES] = 0; - } - } else { - mode->cap[SAMPLES] = 0; - } -#else - mode->cap[SAMPLES] = 0; -#endif - } else { -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - if (fbconfig) { - GLXFBConfigSGIX fbc; - int fbconfigID, drawType, renderType; - - fbc = glXGetFBConfigFromVisualSGIX(__glutDisplay, vlist[i]); - if (fbc) { - rc = glXGetFBConfigAttribSGIX(__glutDisplay, fbc, - GLX_FBCONFIG_ID_SGIX, &fbconfigID); - if ((rc == 0) && (fbconfigID != None)) { - rc = glXGetFBConfigAttribSGIX(__glutDisplay, fbc, - GLX_DRAWABLE_TYPE_SGIX, &drawType); - if ((rc == 0) && (drawType & GLX_WINDOW_BIT_SGIX)) { - rc = glXGetFBConfigAttribSGIX(__glutDisplay, fbc, - GLX_RENDER_TYPE_SGIX, &renderType); - if ((rc == 0) && (renderType & GLX_RGBA_BIT_SGIX)) { - mode->fbc = fbc; - mode->valid = 1; /* Assume the best until - proven otherwise. */ - - assert(glxcap[0] == GLX_RGBA); - mode->cap[0] = 1; - - /* Start with "j = 1" to skip the GLX_RGBA attribute. */ - for (j = 1; j < NUM_GLXCAPS; j++) { - rc = glXGetFBConfigAttribSGIX(__glutDisplay, - fbc, glxcap[j], &mode->cap[j]); - if (rc != 0) { - mode->valid = 0; - } - } - - mode->cap[XVISUAL] = (int) vlist[i]->visualid; - mode->cap[XSTATICGRAY] = 0; - mode->cap[XGRAYSCALE] = 0; - mode->cap[XSTATICCOLOR] = 0; - mode->cap[XPSEUDOCOLOR] = 0; - mode->cap[XTRUECOLOR] = 0; - mode->cap[XDIRECTCOLOR] = 0; -#if defined(__cplusplus) || defined(c_plusplus) - switch (vlist[i]->c_class) { -#else - switch (vlist[i]->class) { -#endif - case StaticGray: - mode->cap[XSTATICGRAY] = 1; - break; - case GrayScale: - mode->cap[XGRAYSCALE] = 1; - break; - case StaticColor: - mode->cap[XSTATICCOLOR] = 1; - break; - case PseudoColor: - mode->cap[XPSEUDOCOLOR] = 1; - break; - case TrueColor: - mode->cap[XTRUECOLOR] = 1; - break; - case DirectColor: - mode->cap[XDIRECTCOLOR] = 1; - break; - } -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_rating) - if (visual_rating) { - int rating; - -/* babcock@cs.montana.edu reported that DEC UNIX (OSF1) V4.0 - 564 for Alpha did not properly define GLX_VISUAL_CAVEAT_EXT - in despite claiming to support - GLX_EXT_visual_rating. */ -#ifndef GLX_VISUAL_CAVEAT_EXT -#define GLX_VISUAL_CAVEAT_EXT 0x20 -#endif - - rc = glXGetFBConfigAttribSGIX(__glutDisplay, - fbc, GLX_VISUAL_CAVEAT_EXT, &rating); - if (rc != 0) { - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 1; - } else { - switch (rating) { - case GLX_SLOW_VISUAL_EXT: - mode->cap[SLOW] = 1; - mode->cap[CONFORMANT] = 1; - break; - -/* IRIX 5.3 for the R10K Indigo2 may have shipped without this - properly defined in /usr/include/GL/glxtokens.h */ -#ifndef GLX_NON_CONFORMANT_VISUAL_EXT -#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D -#endif - - case GLX_NON_CONFORMANT_VISUAL_EXT: - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 0; - break; - case GLX_NONE_EXT: - default: /* XXX Hopefully this is a good - default assumption. */ - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 1; - break; - } - } - } else { - mode->cap[TRANSPARENT] = 0; - } -#else - mode->cap[SLOW] = 0; - mode->cap[CONFORMANT] = 1; -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_info) - if (visual_info) { - int transparent; - -/* babcock@cs.montana.edu reported that DEC UNIX (OSF1) V4.0 - 564 for Alpha did not properly define - GLX_TRANSPARENT_TYPE_EXT in despite claiming to - support GLX_EXT_visual_info. */ -#ifndef GLX_TRANSPARENT_TYPE_EXT -#define GLX_TRANSPARENT_TYPE_EXT 0x23 -#endif - - rc = glXGetFBConfigAttribSGIX(__glutDisplay, - fbc, GLX_TRANSPARENT_TYPE_EXT, &transparent); - if (rc != 0) { - mode->cap[TRANSPARENT] = 0; - } else { - mode->cap[TRANSPARENT] = (transparent != GLX_NONE_EXT); - } - } else { - mode->cap[TRANSPARENT] = 0; - } -#else - mode->cap[TRANSPARENT] = 0; -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - if (multisample) { - rc = glXGetFBConfigAttribSGIX(__glutDisplay, - fbc, GLX_SAMPLES_SGIS, &mode->cap[SAMPLES]); - if (rc != 0) { - mode->cap[SAMPLES] = 0; - } - } else { - mode->cap[SAMPLES] = 0; - } -#else - mode->cap[SAMPLES] = 0; -#endif - - } else { - /* Fbconfig is not RGBA; GLUT only uses RGBA - FBconfigs. */ - /* XXX Code could be exteneded to handle color - index FBconfigs, but seems a color index - window-renderable FBconfig would also be - advertised as an X visual. */ - mode->valid = 0; - } - } else { - /* Fbconfig does not support window rendering; - not a valid FBconfig for GLUT windows. */ - mode->valid = 0; - } - } else { - /* FBconfig ID is None (zero); not a valid - FBconfig. */ - mode->valid = 0; - } - } else { - /* FBconfig ID is None (zero); not a valid FBconfig. */ - mode->valid = 0; - } - } else { - /* No SGIX_fbconfig GLX sever implementation support. */ - mode->valid = 0; - } -#else - /* No SGIX_fbconfig GLX extension API support. */ - mode->valid = 0; -#endif - } - } - - free(vlist); - *nitems_return = n; - return fbmodes; -} - -static XVisualInfo * -findMatch(FrameBufferMode * fbmodes, int nfbmodes, - Criterion * criteria, int ncriteria, void **fbc) -{ - FrameBufferMode *found; - int *bestScore, *thisScore; - int i, j, numok, result, worse, better; - - found = NULL; - numok = 1; /* "num" capability is indexed from 1, - not 0. */ - - /* XXX alloca canidate. */ - bestScore = (int *) malloc(ncriteria * sizeof(int)); - if (!bestScore) - __glutFatalError("out of memory."); - for (j = 0; j < ncriteria; j++) { - /* Very negative number. */ - bestScore[j] = -32768; - } - - /* XXX alloca canidate. */ - thisScore = (int *) malloc(ncriteria * sizeof(int)); - if (!thisScore) - __glutFatalError("out of memory."); - - for (i = 0; i < nfbmodes; i++) { - if (fbmodes[i].valid) { -#ifdef TEST -#if !defined(_WIN32) - if (verbose) - printf("Visual 0x%x\n", fbmodes[i].vi->visualid); -#endif -#endif - - worse = 0; - better = 0; - - for (j = 0; j < ncriteria; j++) { - int cap, cvalue, fbvalue; - - cap = criteria[j].capability; - cvalue = criteria[j].value; - if (cap == NUM) { - fbvalue = numok; - } else { - fbvalue = fbmodes[i].cap[cap]; - } -#ifdef TEST - if (verbose) - printf(" %s %s %d to %d\n", - capstr[cap], compstr[criteria[j].comparison], cvalue, fbvalue); -#endif - switch (criteria[j].comparison) { - case EQ: - result = cvalue == fbvalue; - thisScore[j] = 1; - break; - case NEQ: - result = cvalue != fbvalue; - thisScore[j] = 1; - break; - case LT: - result = fbvalue < cvalue; - thisScore[j] = fbvalue - cvalue; - break; - case GT: - result = fbvalue > cvalue; - thisScore[j] = fbvalue - cvalue; - break; - case LTE: - result = fbvalue <= cvalue; - thisScore[j] = fbvalue - cvalue; - break; - case GTE: - result = (fbvalue >= cvalue); - thisScore[j] = fbvalue - cvalue; - break; - case MIN: - result = fbvalue >= cvalue; - thisScore[j] = cvalue - fbvalue; - break; - } - -#ifdef TEST - if (verbose) - printf(" result=%d score=%d bestScore=%d\n", result, thisScore[j], bestScore[j]); -#endif - - if (result) { - if (better || thisScore[j] > bestScore[j]) { - better = 1; - } else if (thisScore[j] == bestScore[j]) { - /* Keep looking. */ - } else { - goto nextFBM; - } - } else { - if (cap == NUM) { - worse = 1; - } else { - goto nextFBM; - } - } - - } - - if (better && !worse) { - found = &fbmodes[i]; - for (j = 0; j < ncriteria; j++) { - bestScore[j] = thisScore[j]; - } - } - numok++; - - nextFBM:; - - } - } - free(bestScore); - free(thisScore); - if (found) { -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - *fbc = found->fbc; -#endif - return found->vi; - } else { - return NULL; - } -} - -static int -parseCriteria(char *word, Criterion * criterion, int *mask, - Bool * allowDoubleAsSingle) -{ - char *cstr, *vstr, *response; - int comparator, value; - int rgb, rgba, acc, acca, count, i; - - cstr = strpbrk(word, "=>': - if (cstr[1] == '=') { - comparator = GTE; - vstr = &cstr[2]; - } else { - comparator = GT; - vstr = &cstr[1]; - } - break; - case '<': - if (cstr[1] == '=') { - comparator = LTE; - vstr = &cstr[2]; - } else { - comparator = LT; - vstr = &cstr[1]; - } - break; - case '!': - if (cstr[1] == '=') { - comparator = NEQ; - vstr = &cstr[2]; - } else { - return -1; - } - break; - default: - return -1; - } - value = (int) strtol(vstr, &response, 0); - if (response == vstr) { - /* Not a valid number. */ - return -1; - } - *cstr = '\0'; - } else { - comparator = NONE; - } - switch (word[0]) { - case 'a': - if (!strcmp(word, "alpha")) { - criterion[0].capability = ALPHA_SIZE; - if (comparator == NONE) { - criterion[0].comparison = GTE; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << RGBA); - *mask |= (1 << ALPHA_SIZE); - *mask |= (1 << RGBA_MODE); - return 1; - } - acca = !strcmp(word, "acca"); - acc = !strcmp(word, "acc"); - if (acc || acca) { - criterion[0].capability = ACCUM_RED_SIZE; - criterion[1].capability = ACCUM_GREEN_SIZE; - criterion[2].capability = ACCUM_BLUE_SIZE; - criterion[3].capability = ACCUM_ALPHA_SIZE; - if (acca) { - count = 4; - } else { - count = 3; - criterion[3].comparison = MIN; - criterion[3].value = 0; - } - if (comparator == NONE) { - comparator = GTE; - value = 8; - } - for (i = 0; i < count; i++) { - criterion[i].comparison = comparator; - criterion[i].value = value; - } - *mask |= (1 << ACCUM_RED_SIZE); - return 4; - } - if (!strcmp(word, "auxbufs")) { - criterion[0].capability = AUX_BUFFERS; - if (comparator == NONE) { - criterion[0].comparison = MIN; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << AUX_BUFFERS); - return 1; - } - return -1; - case 'b': - if (!strcmp(word, "blue")) { - criterion[0].capability = BLUE_SIZE; - if (comparator == NONE) { - criterion[0].comparison = GTE; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << RGBA); - *mask |= (1 << RGBA_MODE); - return 1; - } - if (!strcmp(word, "buffer")) { - criterion[0].capability = BUFFER_SIZE; - if (comparator == NONE) { - criterion[0].comparison = GTE; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - return 1; - } - return -1; - case 'c': - if (!strcmp(word, "conformant")) { - criterion[0].capability = CONFORMANT; - if (comparator == NONE) { - criterion[0].comparison = EQ; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << CONFORMANT); - return 1; - } - return -1; - case 'd': - if (!strcmp(word, "depth")) { - criterion[0].capability = DEPTH_SIZE; - if (comparator == NONE) { - criterion[0].comparison = GTE; - criterion[0].value = 12; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << DEPTH_SIZE); - return 1; - } - if (!strcmp(word, "double")) { - criterion[0].capability = DOUBLEBUFFER; - if (comparator == NONE) { - criterion[0].comparison = EQ; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << DOUBLEBUFFER); - return 1; - } - return -1; - case 'g': - if (!strcmp(word, "green")) { - criterion[0].capability = GREEN_SIZE; - if (comparator == NONE) { - criterion[0].comparison = GTE; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << RGBA); - *mask |= (1 << RGBA_MODE); - return 1; - } - return -1; - case 'i': - if (!strcmp(word, "index")) { - criterion[0].capability = RGBA; - criterion[0].comparison = EQ; - criterion[0].value = 0; - *mask |= (1 << RGBA); - *mask |= (1 << CI_MODE); - criterion[1].capability = BUFFER_SIZE; - if (comparator == NONE) { - criterion[1].comparison = GTE; - criterion[1].value = 1; - } else { - criterion[1].comparison = comparator; - criterion[1].value = value; - } - return 2; - } - return -1; - case 'l': - if (!strcmp(word, "luminance")) { - criterion[0].capability = RGBA; - criterion[0].comparison = EQ; - criterion[0].value = 1; - - criterion[1].capability = RED_SIZE; - if (comparator == NONE) { - criterion[1].comparison = GTE; - criterion[1].value = 1; - } else { - criterion[1].comparison = comparator; - criterion[1].value = value; - } - - criterion[2].capability = GREEN_SIZE; - criterion[2].comparison = EQ; - criterion[2].value = 0; - - criterion[3].capability = BLUE_SIZE; - criterion[3].comparison = EQ; - criterion[3].value = 0; - - *mask |= (1 << RGBA); - *mask |= (1 << RGBA_MODE); - *mask |= (1 << LUMINANCE_MODE); - return 4; - } - return -1; - case 'n': - if (!strcmp(word, "num")) { - criterion[0].capability = NUM; - if (comparator == NONE) { - return -1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - return 1; - } - } - return -1; - case 'r': - if (!strcmp(word, "red")) { - criterion[0].capability = RED_SIZE; - if (comparator == NONE) { - criterion[0].comparison = GTE; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << RGBA); - *mask |= (1 << RGBA_MODE); - return 1; - } - rgba = !strcmp(word, "rgba"); - rgb = !strcmp(word, "rgb"); - if (rgb || rgba) { - criterion[0].capability = RGBA; - criterion[0].comparison = EQ; - criterion[0].value = 1; - - criterion[1].capability = RED_SIZE; - criterion[2].capability = GREEN_SIZE; - criterion[3].capability = BLUE_SIZE; - criterion[4].capability = ALPHA_SIZE; - if (rgba) { - count = 5; - } else { - count = 4; - criterion[4].comparison = MIN; - criterion[4].value = 0; - } - if (comparator == NONE) { - comparator = GTE; - value = 1; - } - for (i = 1; i < count; i++) { - criterion[i].comparison = comparator; - criterion[i].value = value; - } - *mask |= (1 << RGBA); - *mask |= (1 << RGBA_MODE); - return 5; - } - return -1; - case 's': - if (!strcmp(word, "stencil")) { - criterion[0].capability = STENCIL_SIZE; - if (comparator == NONE) { - criterion[0].comparison = MIN; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << STENCIL_SIZE); - return 1; - } - if (!strcmp(word, "single")) { - criterion[0].capability = DOUBLEBUFFER; - if (comparator == NONE) { - criterion[0].comparison = EQ; - criterion[0].value = 0; - *allowDoubleAsSingle = True; - *mask |= (1 << DOUBLEBUFFER); - return 1; - } else { - return -1; - } - } - if (!strcmp(word, "stereo")) { - criterion[0].capability = STEREO; - if (comparator == NONE) { - criterion[0].comparison = EQ; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << STEREO); - return 1; - } - if (!strcmp(word, "samples")) { - criterion[0].capability = SAMPLES; - if (comparator == NONE) { - criterion[0].comparison = LTE; - criterion[0].value = 4; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << SAMPLES); - return 1; - } - if (!strcmp(word, "slow")) { - criterion[0].capability = SLOW; - if (comparator == NONE) { - /* Just "slow" means permit fast visuals, but accept - slow ones in preference. Presumably the slow ones - must be higher quality or something else desirable. */ - criterion[0].comparison = GTE; - criterion[0].value = 0; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - *mask |= (1 << SLOW); - return 1; - } - return -1; -#if defined(_WIN32) - case 'w': - if (!strcmp(word, "win32pfd")) { - criterion[0].capability = XVISUAL; - if (comparator == NONE) { - return -1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - return 1; - } - } - return -1; -#endif -#if !defined(_WIN32) - case 'x': - if (!strcmp(word, "xvisual")) { - if (comparator == NONE) { - return -1; - } else { - criterion[0].capability = XVISUAL; - criterion[0].comparison = comparator; - criterion[0].value = value; - /* Set everything in "mask" so that no default criteria - get used. Assume the program really wants the - xvisual specified. */ - *mask |= ~0; - return 1; - } - } - /* Be a little over-eager to fill in the comparison and - value so we won't have to replicate the code after each - string match. */ - if (comparator == NONE) { - criterion[0].comparison = EQ; - criterion[0].value = 1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - } - - if (!strcmp(word, "xstaticgray")) { - criterion[0].capability = XSTATICGRAY; - *mask |= (1 << XSTATICGRAY); /* Indicates _any_ visual - class selected. */ - return 1; - } - if (!strcmp(word, "xgrayscale")) { - criterion[0].capability = XGRAYSCALE; - *mask |= (1 << XSTATICGRAY); /* Indicates _any_ visual - class selected. */ - return 1; - } - if (!strcmp(word, "xstaticcolor")) { - criterion[0].capability = XSTATICCOLOR; - *mask |= (1 << XSTATICGRAY); /* Indicates _any_ visual - class selected. */ - return 1; - } - if (!strcmp(word, "xpseudocolor")) { - criterion[0].capability = XPSEUDOCOLOR; - *mask |= (1 << XSTATICGRAY); /* Indicates _any_ visual - class selected. */ - return 1; - } - if (!strcmp(word, "xtruecolor")) { - criterion[0].capability = XTRUECOLOR; - *mask |= (1 << XSTATICGRAY); /* Indicates _any_ visual - class selected. */ - return 1; - } - if (!strcmp(word, "xdirectcolor")) { - criterion[0].capability = XDIRECTCOLOR; - *mask |= (1 << XSTATICGRAY); /* Indicates _any_ visual - class selected. */ - return 1; - } - return -1; -#endif - default: - return -1; - } -} - -static Criterion * -parseModeString(char *mode, int *ncriteria, Bool * allowDoubleAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask) -{ - Criterion *criteria = NULL; - int n, mask, parsed, i; - char *copy, *word; - - *allowDoubleAsSingle = False; - copy = __glutStrdup(mode); - /* Attempt to estimate how many criteria entries should be - needed. */ - n = 0; - word = strtok(copy, " \t"); - while (word) { - n++; - word = strtok(NULL, " \t"); - } - /* Overestimate by 4 times ("rgba" might add four criteria - entries) plus add in possible defaults plus space for - required criteria. */ - criteria = (Criterion *) malloc((4 * n + 30 + nRequired) * sizeof(Criterion)); - if (!criteria) { - __glutFatalError("out of memory."); - } - - /* Re-copy the copy of the mode string. */ - strcpy(copy, mode); - - /* First add the required criteria (these match at the - highest priority). Typically these will be used to force a - specific level (layer), transparency, and/or visual type. */ - mask = requiredMask; - for (i = 0; i < nRequired; i++) { - criteria[i] = requiredCriteria[i]; - } - n = nRequired; - - word = strtok(copy, " \t"); - while (word) { - parsed = parseCriteria(word, &criteria[n], &mask, allowDoubleAsSingle); - if (parsed >= 0) { - n += parsed; - } else { - __glutWarning("Unrecognized display string word: %s (ignoring)\n", word); - } - word = strtok(NULL, " \t"); - } - -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - if (__glutIsSupportedByGLX("GLX_SGIS_multisample")) { - if (!(mask & (1 << SAMPLES))) { - criteria[n].capability = SAMPLES; - criteria[n].comparison = EQ; - criteria[n].value = 0; - n++; - } else { - /* Multisample visuals are marked nonconformant. If - multisampling was requeste and no conformant - preference was set, assume that we will settle for a - non-conformant visual to get multisampling. */ - if (!(mask & (1 << CONFORMANT))) { - criteria[n].capability = CONFORMANT; - criteria[n].comparison = MIN; - criteria[n].value = 0; - n++; - mask |= (1 << CONFORMANT); - } - } - } -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_info) - if (__glutIsSupportedByGLX("GLX_EXT_visual_info")) { - if (!(mask & (1 << TRANSPARENT))) { - criteria[n].capability = TRANSPARENT; - criteria[n].comparison = EQ; - criteria[n].value = 0; - n++; - } - } -#endif -#if defined(GLX_VERSION_1_1) && defined(GLX_EXT_visual_rating) - if (__glutIsSupportedByGLX("GLX_EXT_visual_rating")) { - if (!(mask & (1 << SLOW))) { - criteria[n].capability = SLOW; - criteria[n].comparison = EQ; - criteria[n].value = 0; - n++; - } - if (!(mask & (1 << CONFORMANT))) { - criteria[n].capability = CONFORMANT; - criteria[n].comparison = EQ; - criteria[n].value = 1; - n++; - } - } -#endif - if (!(mask & (1 << ACCUM_RED_SIZE))) { - criteria[n].capability = ACCUM_RED_SIZE; - criteria[n].comparison = MIN; - criteria[n].value = 0; - criteria[n + 1].capability = ACCUM_GREEN_SIZE; - criteria[n + 1].comparison = MIN; - criteria[n + 1].value = 0; - criteria[n + 2].capability = ACCUM_BLUE_SIZE; - criteria[n + 2].comparison = MIN; - criteria[n + 2].value = 0; - criteria[n + 3].capability = ACCUM_ALPHA_SIZE; - criteria[n + 3].comparison = MIN; - criteria[n + 3].value = 0; - n += 4; - } - if (!(mask & (1 << AUX_BUFFERS))) { - criteria[n].capability = AUX_BUFFERS; - criteria[n].comparison = MIN; - criteria[n].value = 0; - n++; - } - if (!(mask & (1 << RGBA))) { - criteria[n].capability = RGBA; - criteria[n].comparison = EQ; - criteria[n].value = 1; - criteria[n + 1].capability = RED_SIZE; - criteria[n + 1].comparison = GTE; - criteria[n + 1].value = 1; - criteria[n + 2].capability = GREEN_SIZE; - criteria[n + 2].comparison = GTE; - criteria[n + 2].value = 1; - criteria[n + 3].capability = BLUE_SIZE; - criteria[n + 3].comparison = GTE; - criteria[n + 3].value = 1; - criteria[n + 4].capability = ALPHA_SIZE; - criteria[n + 4].comparison = MIN; - criteria[n + 4].value = 0; - n += 5; - mask |= (1 << RGBA_MODE); - } -#if !defined(_WIN32) - if (!(mask & (1 << XSTATICGRAY))) { - assert(isMesaGLX != -1); - if ((mask & (1 << RGBA_MODE)) && !isMesaGLX) { - /* Normally, request an RGBA mode visual be TrueColor, - except in the case of Mesa where we trust Mesa (and - other code in GLUT) to handle any type of RGBA visual - reasonably. */ - if (mask & (1 << LUMINANCE_MODE)) { - /* If RGBA luminance was requested, actually go for - a StaticGray visual. */ - criteria[n].capability = XSTATICGRAY; - } else { - criteria[n].capability = XTRUECOLOR; - } - criteria[n].value = 1; - criteria[n].comparison = EQ; - - n++; - } - if (mask & (1 << CI_MODE)) { - criteria[n].capability = XPSEUDOCOLOR; - criteria[n].value = 1; - criteria[n].comparison = EQ; - n++; - } - } -#endif - if (!(mask & (1 << STEREO))) { - criteria[n].capability = STEREO; - criteria[n].comparison = EQ; - criteria[n].value = 0; - n++; - } - if (!(mask & (1 << DOUBLEBUFFER))) { - criteria[n].capability = DOUBLEBUFFER; - criteria[n].comparison = EQ; - criteria[n].value = 0; - *allowDoubleAsSingle = True; - n++; - } - if (!(mask & (1 << DEPTH_SIZE))) { - criteria[n].capability = DEPTH_SIZE; - criteria[n].comparison = MIN; - criteria[n].value = 0; - n++; - } - if (!(mask & (1 << STENCIL_SIZE))) { - criteria[n].capability = STENCIL_SIZE; - criteria[n].comparison = MIN; - criteria[n].value = 0; - n++; - } - if (!(mask & (1 << LEVEL))) { - criteria[n].capability = LEVEL; - criteria[n].comparison = EQ; - criteria[n].value = 0; - n++; - } - if (n) { - /* Since over-estimated the size needed; squeeze it down to - reality. */ - criteria = (Criterion *) realloc(criteria, n * sizeof(Criterion)); - if (!criteria) { - /* Should never happen since should be shrinking down! */ - __glutFatalError("out of memory."); - } - } else { - /* For portability, avoid "realloc(ptr,0)" call. */ - free(criteria); - criteria = NULL; - } - - free(copy); - *ncriteria = n; - return criteria; -} - -static FrameBufferMode *fbmodes = NULL; -static int nfbmodes = 0; - -static XVisualInfo * -getVisualInfoFromString(char *string, Bool * treatAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask, void **fbc) -{ - Criterion *criteria; - XVisualInfo *visinfo; - Bool allowDoubleAsSingle; - int ncriteria, i; - - /* In WIN32, after changing display settings, the visuals might change. - (e.g. if entering game mode with a different bitdepth!) - Therefore, reload the visuals each time they are queried. */ -#ifdef WIN32 - if (fbmodes) { - free(fbmodes); - fbmodes = NULL; - nfbmodes = 0; - } -#endif - if (!fbmodes) { - fbmodes = loadVisuals(&nfbmodes); - } - criteria = parseModeString(string, &ncriteria, - &allowDoubleAsSingle, requiredCriteria, nRequired, requiredMask); - if (criteria == NULL) { - __glutWarning("failed to parse mode string"); - return NULL; - } -#ifdef TEST - printCriteria(criteria, ncriteria); -#endif - visinfo = findMatch(fbmodes, nfbmodes, criteria, ncriteria, fbc); - if (visinfo) { - *treatAsSingle = 0; - } else { - if (allowDoubleAsSingle) { - /* Rewrite criteria so that we now look for a double - buffered visual which will then get treated as a - single buffered visual. */ - for (i = 0; i < ncriteria; i++) { - if (criteria[i].capability == DOUBLEBUFFER - && criteria[i].comparison == EQ - && criteria[i].value == 0) { - criteria[i].value = 1; - } - } - visinfo = findMatch(fbmodes, nfbmodes, criteria, ncriteria, fbc); - if (visinfo) { - *treatAsSingle = 1; - } - } - } - free(criteria); - - if (visinfo) { -#if defined(_WIN32) - /* We could have a valid pixel format for drawing to a - bitmap. However, we don't want to draw into a bitmap, we - need one that can be used with a window, so make sure - that this is true. */ - if (!(visinfo->dwFlags & PFD_DRAW_TO_WINDOW)) - return NULL; -#endif - return visinfo; - } else { - return NULL; - } -} - -/* CENTRY */ -void APIENTRY -glutInitDisplayString(const char *string) -{ -#ifdef _WIN32 - XHDC = GetDC(GetDesktopWindow()); -#endif - - __glutDetermineVisualFromString = getVisualInfoFromString; - if (__glutDisplayString) { - free(__glutDisplayString); - } - if (string) { - __glutDisplayString = __glutStrdup(string); - if (!__glutDisplayString) - __glutFatalError("out of memory."); - } else { - __glutDisplayString = NULL; - } -} -/* ENDCENTRY */ - -#ifdef TEST - -Criterion requiredWindowCriteria[] = -{ - {LEVEL, EQ, 0}, - {TRANSPARENT, EQ, 0} -}; -int numRequiredWindowCriteria = sizeof(requiredWindowCriteria) / sizeof(Criterion); -int requiredWindowCriteriaMask = (1 << LEVEL) | (1 << TRANSPARENT); - -Criterion requiredOverlayCriteria[] = -{ - {LEVEL, EQ, 1}, - {TRANSPARENT, EQ, 1}, - {XPSEUDOCOLOR, EQ, 1}, - {RGBA, EQ, 0}, - {BUFFER_SIZE, GTE, 1} -}; -int numRequiredOverlayCriteria = sizeof(requiredOverlayCriteria) / sizeof(Criterion); -int requiredOverlayCriteriaMask = -(1 << LEVEL) | (1 << TRANSPARENT) | (1 << XSTATICGRAY) | (1 << RGBA) | (1 << CI_MODE); - -int -main(int argc, char **argv) -{ - Display *dpy; - XVisualInfo *vinfo; - Bool treatAsSingle; - char *str, buffer[1024]; - int tty = isatty(fileno(stdin)); - int overlay = 0, showconfig = 0; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - GLXFBConfigSGIX fbc; -#else - void *fbc; -#endif - -#if !defined(_WIN32) - dpy = XOpenDisplay(NULL); - if (dpy == NULL) { - printf("Could not connect to X server\n"); - exit(1); - } - __glutDisplay = dpy; - __glutScreen = DefaultScreen(__glutDisplay); -#endif - while (!feof(stdin)) { - if (tty) - printf("dstr> "); - str = gets(buffer); - if (str) { - printf("\n"); - if (!strcmp("v", str)) { - verbose = 1 - verbose; - printf("verbose = %d\n\n", verbose); - } else if (!strcmp("s", str)) { - showconfig = 1 - showconfig; - printf("showconfig = %d\n\n", showconfig); - } else if (!strcmp("o", str)) { - overlay = 1 - overlay; - printf("overlay = %d\n\n", overlay); - } else { - if (overlay) { - vinfo = getVisualInfoFromString(str, &treatAsSingle, - requiredOverlayCriteria, numRequiredOverlayCriteria, requiredOverlayCriteriaMask, (void**) &fbc); - } else { - vinfo = getVisualInfoFromString(str, &treatAsSingle, - requiredWindowCriteria, numRequiredWindowCriteria, requiredWindowCriteriaMask, (void**) &fbc); - } - if (vinfo) { - printf("\n"); - if (!tty) - printf("Display string: %s", str); -#ifdef _WIN32 - printf("Visual = 0x%x\n", 0); -#else - printf("Visual = 0x%x%s\n", vinfo->visualid, fbc ? " (needs FBC)" : ""); -#endif - if (treatAsSingle) { - printf("Treat as SINGLE.\n"); - } - if (showconfig) { - int glxCapable, bufferSize, level, renderType, doubleBuffer, - stereo, auxBuffers, redSize, greenSize, blueSize, - alphaSize, depthSize, stencilSize, acRedSize, acGreenSize, - acBlueSize, acAlphaSize; - - glXGetConfig(dpy, vinfo, GLX_BUFFER_SIZE, &bufferSize); - glXGetConfig(dpy, vinfo, GLX_LEVEL, &level); - glXGetConfig(dpy, vinfo, GLX_RGBA, &renderType); - glXGetConfig(dpy, vinfo, GLX_DOUBLEBUFFER, &doubleBuffer); - glXGetConfig(dpy, vinfo, GLX_STEREO, &stereo); - glXGetConfig(dpy, vinfo, GLX_AUX_BUFFERS, &auxBuffers); - glXGetConfig(dpy, vinfo, GLX_RED_SIZE, &redSize); - glXGetConfig(dpy, vinfo, GLX_GREEN_SIZE, &greenSize); - glXGetConfig(dpy, vinfo, GLX_BLUE_SIZE, &blueSize); - glXGetConfig(dpy, vinfo, GLX_ALPHA_SIZE, &alphaSize); - glXGetConfig(dpy, vinfo, GLX_DEPTH_SIZE, &depthSize); - glXGetConfig(dpy, vinfo, GLX_STENCIL_SIZE, &stencilSize); - glXGetConfig(dpy, vinfo, GLX_ACCUM_RED_SIZE, &acRedSize); - glXGetConfig(dpy, vinfo, GLX_ACCUM_GREEN_SIZE, &acGreenSize); - glXGetConfig(dpy, vinfo, GLX_ACCUM_BLUE_SIZE, &acBlueSize); - glXGetConfig(dpy, vinfo, GLX_ACCUM_ALPHA_SIZE, &acAlphaSize); - printf("RGBA = (%d, %d, %d, %d)\n", redSize, greenSize, blueSize, alphaSize); - printf("acc = (%d, %d, %d, %d)\n", acRedSize, acGreenSize, acBlueSize, acAlphaSize); - printf("db = %d\n", doubleBuffer); - printf("str = %d\n", stereo); - printf("aux = %d\n", auxBuffers); - printf("lvl = %d\n", level); - printf("buf = %d\n", bufferSize); - printf("rgba = %d\n", renderType); - printf("z = %d\n", depthSize); - printf("s = %d\n", stencilSize); - } - } else { - printf("\n"); - printf("No match.\n"); - } - printf("\n"); - } - } - } - printf("\n"); - return 0; -} -#endif diff --git a/lib/glut-3.7.6/lib/glut/glut_event.c b/lib/glut-3.7.6/lib/glut/glut_event.c deleted file mode 100644 index ca71b04782372352dfd43caa631a1dcb635dec87..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_event.c +++ /dev/null @@ -1,1386 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include -#include /* Some FD_ZERO macros use memset without - prototyping memset. */ - -/* Much of the following #ifdef logic to include the proper - prototypes for the select system call is based on logic - from the X11R6.3 version of . */ - -#if !defined(_WIN32) -# ifdef __sgi -# include /* prototype for bzero used by FD_ZERO */ -# endif -# if (defined(SVR4) || defined(CRAY) || defined(AIXV3)) && !defined(FD_SETSIZE) -# include /* select system call interface */ -# ifdef luna -# include -# endif -# endif - /* AIX 4.2 fubar-ed , so go to heroic measures to get it */ -# if defined(AIXV4) && !defined(NFDBITS) -# include -# endif -#endif /* !_WIN32 */ - -#include - -#if !defined(_WIN32) -# if defined(__vms) && ( __VMS_VER < 70000000 ) -# include -# else -# ifndef __vms -# include -# endif -# endif -# include -# include -# include -#else -# ifdef __CYGWIN32__ -# include -# else -# include -# endif -# ifdef __hpux - /* XXX Bert Gijsbers reports that HP-UX - needs different keysyms for the End, Insert, and Delete keys - to work on an HP 715. It would be better if HP generated - standard keysyms for standard keys. */ -# include -# endif -#endif /* !_WIN32 */ - -#if defined(__vms) && ( __VMS_VER < 70000000 ) -#include -#include -extern int SYS$CLREF(int efn); -extern int SYS$SETIMR(unsigned int efn, struct timeval *timeout, void *ast, - unsigned int request_id, unsigned int flags); -extern int SYS$WFLOR(unsigned int efn, unsigned int mask); -extern int SYS$CANTIM(unsigned int request_id, unsigned int mode); -#endif /* __vms, VMs 6.2 or earlier */ - -#include "glutint.h" - -static GLUTtimer *freeTimerList = NULL; - -GLUTidleCB __glutIdleFunc = NULL; -GLUTtimer *__glutTimerList = NULL; -#ifdef SUPPORT_FORTRAN -GLUTtimer *__glutNewTimer; -#endif -GLUTwindow *__glutWindowWorkList = NULL; -GLUTmenu *__glutMappedMenu; -GLUTmenu *__glutCurrentMenu = NULL; - -void (*__glutUpdateInputDeviceMaskFunc) (GLUTwindow *); -#if !defined(_WIN32) -void (*__glutMenuItemEnterOrLeave)(GLUTmenuItem * item, int num, int type) = NULL; -void (*__glutFinishMenu)(Window win, int x, int y); -void (*__glutPaintMenu)(GLUTmenu * menu); -void (*__glutStartMenu)(GLUTmenu * menu, GLUTwindow * window, int x, int y, int x_win, int y_win); -GLUTmenu * (*__glutGetMenuByNum)(int menunum); -GLUTmenuItem * (*__glutGetMenuItem)(GLUTmenu * menu, Window win, int *which); -GLUTmenu * (*__glutGetMenu)(Window win); -#endif - -Atom __glutMotifHints = None; -/* Modifier mask of ~0 implies not in core input callback. */ -unsigned int __glutModifierMask = (unsigned int) ~0; -int __glutWindowDamaged = 0; - -void APIENTRY -glutIdleFunc(GLUTidleCB idleFunc) -{ - __glutIdleFunc = idleFunc; -} - -void APIENTRY -glutTimerFunc(unsigned int interval, GLUTtimerCB timerFunc, int value) -{ - GLUTtimer *timer, *other; - GLUTtimer **prevptr; - struct timeval now; - - if (!timerFunc) - return; - - if (freeTimerList) { - timer = freeTimerList; - freeTimerList = timer->next; - } else { - timer = (GLUTtimer *) malloc(sizeof(GLUTtimer)); - if (!timer) - __glutFatalError("out of memory."); - } - - timer->func = timerFunc; -#if defined(__vms) && ( __VMS_VER < 70000000 ) - /* VMS time is expressed in units of 100 ns */ - timer->timeout.val = interval * TICKS_PER_MILLISECOND; -#else - timer->timeout.tv_sec = (int) interval / 1000; - timer->timeout.tv_usec = (int) (interval % 1000) * 1000; -#endif - timer->value = value; - timer->next = NULL; - GETTIMEOFDAY(&now); - ADD_TIME(timer->timeout, timer->timeout, now); - prevptr = &__glutTimerList; - other = *prevptr; - while (other && IS_AFTER(other->timeout, timer->timeout)) { - prevptr = &other->next; - other = *prevptr; - } - timer->next = other; -#ifdef SUPPORT_FORTRAN - __glutNewTimer = timer; /* for Fortran binding! */ -#endif - *prevptr = timer; -} - -void -handleTimeouts(void) -{ - struct timeval now; - GLUTtimer *timer; - - /* Assumption is that __glutTimerList is already determined - to be non-NULL. */ - GETTIMEOFDAY(&now); - while (IS_AT_OR_AFTER(__glutTimerList->timeout, now)) { - timer = __glutTimerList; - timer->func(timer->value); - __glutTimerList = timer->next; - timer->next = freeTimerList; - freeTimerList = timer; - if (!__glutTimerList) - break; - } -} - -void -__glutPutOnWorkList(GLUTwindow * window, int workMask) -{ - if (window->workMask) { - /* Already on list; just OR in new workMask. */ - window->workMask |= workMask; - } else { - /* Update work mask and add to window work list. */ - window->workMask = workMask; - /* Assert that if the window does not have a - workMask already, the window should definitely - not be the head of the work list. */ - assert(window != __glutWindowWorkList); - window->prevWorkWin = __glutWindowWorkList; - __glutWindowWorkList = window; - } -} - -void -__glutPostRedisplay(GLUTwindow * window, int layerMask) -{ - int shown = (layerMask & (GLUT_REDISPLAY_WORK | GLUT_REPAIR_WORK)) ? - window->shownState : window->overlay->shownState; - - /* Post a redisplay if the window is visible (or the - visibility of the window is unknown, ie. window->visState - == -1) _and_ the layer is known to be shown. */ - if (window->visState != GLUT_HIDDEN - && window->visState != GLUT_FULLY_COVERED && shown) { - __glutPutOnWorkList(window, layerMask); - } -} - -/* CENTRY */ -void APIENTRY -glutPostRedisplay(void) -{ - __glutPostRedisplay(__glutCurrentWindow, GLUT_REDISPLAY_WORK); -} - -/* The advantage of this routine is that it saves the cost of a - glutSetWindow call (entailing an expensive OpenGL context switch), - particularly useful when multiple windows need redisplays posted at - the same times. See also glutPostWindowOverlayRedisplay. */ -void APIENTRY -glutPostWindowRedisplay(int win) -{ - __glutPostRedisplay(__glutWindowList[win - 1], GLUT_REDISPLAY_WORK); -} - -/* ENDCENTRY */ -static GLUTeventParser *eventParserList = NULL; - -/* __glutRegisterEventParser allows another module to register - to intercept X events types not otherwise acted on by the - GLUT processEventsAndTimeouts routine. The X Input - extension support code uses an event parser for handling X - Input extension events. */ - -void -__glutRegisterEventParser(GLUTeventParser * parser) -{ - parser->next = eventParserList; - eventParserList = parser; -} - -static void -markWindowHidden(GLUTwindow * window) -{ - if (GLUT_HIDDEN != window->visState) { - GLUTwindow *child; - - if (window->windowStatus) { - window->visState = GLUT_HIDDEN; - __glutSetWindow(window); - window->windowStatus(GLUT_HIDDEN); - } - /* An unmap is only reported on a single window; its - descendents need to know they are no longer visible. */ - child = window->children; - while (child) { - markWindowHidden(child); - child = child->siblings; - } - } -} - -#if !defined(_WIN32) - -static void -purgeStaleWindow(Window win) -{ - GLUTstale **pEntry = &__glutStaleWindowList; - GLUTstale *entry = __glutStaleWindowList; - - /* Tranverse singly-linked stale window list look for the - window ID. */ - while (entry) { - if (entry->win == win) { - /* Found it; delete it. */ - *pEntry = entry->next; - free(entry); - return; - } else { - pEntry = &entry->next; - entry = *pEntry; - } - } -} - -/* Unlike XNextEvent, if a signal arrives, - interruptibleXNextEvent will return (with a zero return - value). This helps GLUT drop out of XNextEvent if a signal - is delivered. The intent is so that a GLUT program can call - glutIdleFunc in a signal handler to register an idle func - and then immediately get dropped into the idle func (after - returning from the signal handler). The idea is to make - GLUT's main loop reliably interruptible by signals. */ -static int -interruptibleXNextEvent(Display * dpy, XEvent * event) -{ - fd_set fds; - int rc; - - /* Flush X protocol since XPending does not do this - implicitly. */ - XFlush(__glutDisplay); - for (;;) { - if (XPending(__glutDisplay)) { - XNextEvent(dpy, event); - return 1; - } - FD_ZERO(&fds); - FD_SET(__glutConnectionFD, &fds); - rc = select(__glutConnectionFD + 1, &fds, - NULL, NULL, NULL); - if (rc < 0) { - if (errno == EINTR) { - return 0; - } else { - __glutFatalError("select error."); - } - } - } -} - -#endif - -static void -processEventsAndTimeouts(void) -{ -#if defined ( _WIN32 ) - MSG msg; - - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - TranslateMessage( &msg ); - DispatchMessage( &msg ); - if ( msg.message == WM_QUIT ) { - exit( 0 ); - } - } - if (__glutTimerList) { - handleTimeouts(); - } -#else /* _WIN32 */ - - do { - static int mappedMenuButton; - GLUTeventParser *parser; - XEvent event, ahead; - GLUTwindow *window; - GLUTkeyboardCB keyboard; - GLUTspecialCB special; - int gotEvent, width, height; - - gotEvent = interruptibleXNextEvent(__glutDisplay, &event); - if (gotEvent) { - switch (event.type) { - case MappingNotify: - XRefreshKeyboardMapping((XMappingEvent *) & event); - break; - case ConfigureNotify: - window = __glutGetWindow(event.xconfigure.window); - if (window) { - if (window->win != event.xconfigure.window) { - /* Ignore ConfigureNotify sent to the overlay - planes. GLUT could get here because overlays - select for StructureNotify events to receive - DestroyNotify. */ - break; - } - width = event.xconfigure.width; - height = event.xconfigure.height; - if (width != window->width || height != window->height) { - if (window->overlay) { - XResizeWindow(__glutDisplay, window->overlay->win, width, height); - } - window->width = width; - window->height = height; - __glutSetWindow(window); - /* Do not execute OpenGL out of sequence with - respect to the XResizeWindow request! */ - glXWaitX(); - window->reshape(width, height); - window->forceReshape = False; - /* A reshape should be considered like posting a - repair; this is necessary for the "Mesa - glXSwapBuffers to repair damage" hack to operate - correctly. Without it, there's not an initial - back buffer render from which to blit from when - damage happens to the window. */ - __glutPostRedisplay(window, GLUT_REPAIR_WORK); - } - } - break; - case Expose: - /* compress expose events */ - while (XEventsQueued(__glutDisplay, QueuedAfterReading) - > 0) { - XPeekEvent(__glutDisplay, &ahead); - if (ahead.type != Expose || - ahead.xexpose.window != event.xexpose.window) { - break; - } - XNextEvent(__glutDisplay, &event); - } - if (event.xexpose.count == 0) { - GLUTmenu *menu; - - if (__glutMappedMenu && - (menu = __glutGetMenu(event.xexpose.window))) { - __glutPaintMenu(menu); - } else { - window = __glutGetWindow(event.xexpose.window); - if (window) { - if (window->win == event.xexpose.window) { - __glutPostRedisplay(window, GLUT_REPAIR_WORK); - } else if (window->overlay && window->overlay->win == event.xexpose.window) { - __glutPostRedisplay(window, GLUT_OVERLAY_REPAIR_WORK); - } - } - } - } else { - /* there are more exposes to read; wait to redisplay */ - } - break; - case ButtonPress: - case ButtonRelease: - if (__glutMappedMenu && event.type == ButtonRelease - && mappedMenuButton == event.xbutton.button) { - /* Menu is currently popped up and its button is - released. */ - __glutFinishMenu(event.xbutton.window, event.xbutton.x, event.xbutton.y); - } else { - window = __glutGetWindow(event.xbutton.window); - if (window) { - GLUTmenu *menu; - int menuNum; - - menuNum = window->menu[event.xbutton.button - 1]; - /* Make sure that __glutGetMenuByNum is only called if there - really is a menu present. */ - if ((menuNum > 0) && (menu = __glutGetMenuByNum(menuNum))) { - if (event.type == ButtonPress && !__glutMappedMenu) { - __glutStartMenu(menu, window, - event.xbutton.x_root, event.xbutton.y_root, - event.xbutton.x, event.xbutton.y); - mappedMenuButton = event.xbutton.button; - } else { - /* Ignore a release of a button with a menu - attatched to it when no menu is popped up, - or ignore a press when another menu is - already popped up. */ - } - } else if (window->mouse) { - __glutSetWindow(window); - __glutModifierMask = event.xbutton.state; - window->mouse(event.xbutton.button - 1, - event.type == ButtonRelease ? - GLUT_UP : GLUT_DOWN, - event.xbutton.x, event.xbutton.y); - __glutModifierMask = ~0; - } else { - /* Stray mouse events. Ignore. */ - } - } else { - /* Window might have been destroyed and all the - events for the window may not yet be received. */ - } - } - break; - case MotionNotify: - if (!__glutMappedMenu) { - window = __glutGetWindow(event.xmotion.window); - if (window) { - /* If motion function registered _and_ buttons held - * down, call motion function... */ - if (window->motion && event.xmotion.state & - (Button1Mask | Button2Mask | Button3Mask)) { - __glutSetWindow(window); - window->motion(event.xmotion.x, event.xmotion.y); - } - /* If passive motion function registered _and_ - buttons not held down, call passive motion - function... */ - else if (window->passive && - ((event.xmotion.state & - (Button1Mask | Button2Mask | Button3Mask)) == - 0)) { - __glutSetWindow(window); - window->passive(event.xmotion.x, - event.xmotion.y); - } - } - } else { - /* Motion events are thrown away when a pop up menu - is active. */ - } - break; - case KeyPress: - case KeyRelease: - window = __glutGetWindow(event.xkey.window); - if (!window) { - break; - } - if (event.type == KeyPress) { - keyboard = window->keyboard; - } else { - - /* If we are ignoring auto repeated keys for this window, - check if the next event in the X event queue is a KeyPress - for the exact same key (and at the exact same time) as the - key being released. The X11 protocol will send auto - repeated keys as such KeyRelease/KeyPress pairs. */ - - if (window->ignoreKeyRepeat) { - if (XEventsQueued(__glutDisplay, QueuedAfterReading)) { - XPeekEvent(__glutDisplay, &ahead); - if (ahead.type == KeyPress - && ahead.xkey.window == event.xkey.window - && ahead.xkey.keycode == event.xkey.keycode - && ahead.xkey.time == event.xkey.time) { - /* Pop off the repeated KeyPress and ignore - the auto repeated KeyRelease/KeyPress pair. */ - XNextEvent(__glutDisplay, &event); - break; - } - } - } - keyboard = window->keyboardUp; - } - if (keyboard) { - char tmp[1]; - int rc; - - rc = XLookupString(&event.xkey, tmp, sizeof(tmp), - NULL, NULL); - if (rc) { - __glutSetWindow(window); - __glutModifierMask = event.xkey.state; - keyboard(tmp[0], - event.xkey.x, event.xkey.y); - __glutModifierMask = ~0; - break; - } - } - if (event.type == KeyPress) { - special = window->special; - } else { - special = window->specialUp; - } - if (special) { - KeySym ks; - int key; - -/* Introduced in X11R6: (Partial list of) Keypad Functions. Define - in place in case compiling against an older pre-X11R6 - X11/keysymdef.h file. */ -#ifndef XK_KP_Home -#define XK_KP_Home 0xFF95 -#endif -#ifndef XK_KP_Left -#define XK_KP_Left 0xFF96 -#endif -#ifndef XK_KP_Up -#define XK_KP_Up 0xFF97 -#endif -#ifndef XK_KP_Right -#define XK_KP_Right 0xFF98 -#endif -#ifndef XK_KP_Down -#define XK_KP_Down 0xFF99 -#endif -#ifndef XK_KP_Prior -#define XK_KP_Prior 0xFF9A -#endif -#ifndef XK_KP_Next -#define XK_KP_Next 0xFF9B -#endif -#ifndef XK_KP_End -#define XK_KP_End 0xFF9C -#endif -#ifndef XK_KP_Insert -#define XK_KP_Insert 0xFF9E -#endif -#ifndef XK_KP_Delete -#define XK_KP_Delete 0xFF9F -#endif - - ks = XLookupKeysym((XKeyEvent *) & event, 0); - /* XXX Verbose, but makes no assumptions about keysym - layout. */ - switch (ks) { -/* *INDENT-OFF* */ - /* function keys */ - case XK_F1: key = GLUT_KEY_F1; break; - case XK_F2: key = GLUT_KEY_F2; break; - case XK_F3: key = GLUT_KEY_F3; break; - case XK_F4: key = GLUT_KEY_F4; break; - case XK_F5: key = GLUT_KEY_F5; break; - case XK_F6: key = GLUT_KEY_F6; break; - case XK_F7: key = GLUT_KEY_F7; break; - case XK_F8: key = GLUT_KEY_F8; break; - case XK_F9: key = GLUT_KEY_F9; break; - case XK_F10: key = GLUT_KEY_F10; break; - case XK_F11: key = GLUT_KEY_F11; break; - case XK_F12: key = GLUT_KEY_F12; break; - /* directional keys */ - case XK_KP_Left: - case XK_Left: key = GLUT_KEY_LEFT; break; - case XK_KP_Up: /* Introduced in X11R6. */ - case XK_Up: key = GLUT_KEY_UP; break; - case XK_KP_Right: /* Introduced in X11R6. */ - case XK_Right: key = GLUT_KEY_RIGHT; break; - case XK_KP_Down: /* Introduced in X11R6. */ - case XK_Down: key = GLUT_KEY_DOWN; break; -/* *INDENT-ON* */ - - case XK_KP_Prior: /* Introduced in X11R6. */ - case XK_Prior: - /* XK_Prior same as X11R6's XK_Page_Up */ - key = GLUT_KEY_PAGE_UP; - break; - case XK_KP_Next: /* Introduced in X11R6. */ - case XK_Next: - /* XK_Next same as X11R6's XK_Page_Down */ - key = GLUT_KEY_PAGE_DOWN; - break; - case XK_KP_Home: /* Introduced in X11R6. */ - case XK_Home: - key = GLUT_KEY_HOME; - break; -#ifdef __hpux - case XK_Select: -#endif - case XK_KP_End: /* Introduced in X11R6. */ - case XK_End: - key = GLUT_KEY_END; - break; -#ifdef __hpux - case XK_InsertChar: -#endif - case XK_KP_Insert: /* Introduced in X11R6. */ - case XK_Insert: - key = GLUT_KEY_INSERT; - break; -#ifdef __hpux - case XK_DeleteChar: -#endif - case XK_KP_Delete: /* Introduced in X11R6. */ - /* The Delete character is really an ASCII key. */ - __glutSetWindow(window); - keyboard(127, /* ASCII Delete character. */ - event.xkey.x, event.xkey.y); - goto skip; - default: - goto skip; - } - __glutSetWindow(window); - __glutModifierMask = event.xkey.state; - special(key, event.xkey.x, event.xkey.y); - __glutModifierMask = ~0; - skip:; - } - break; - case EnterNotify: - case LeaveNotify: - if (event.xcrossing.mode != NotifyNormal || - event.xcrossing.detail == NotifyNonlinearVirtual || - event.xcrossing.detail == NotifyVirtual) { - - /* Careful to ignore Enter/LeaveNotify events that - come from the pop-up menu pointer grab and ungrab. - Also, ignore "virtual" Enter/LeaveNotify events - since they represent the pointer passing through - the window hierarchy without actually entering or - leaving the actual real estate of a window. */ - - break; - } - if (__glutMappedMenu) { - GLUTmenuItem *item; - int num; - - item = __glutGetMenuItem(__glutMappedMenu, - event.xcrossing.window, &num); - if (item) { - __glutMenuItemEnterOrLeave(item, num, event.type); - break; - } - } - window = __glutGetWindow(event.xcrossing.window); - if (window) { - if (window->entry) { - if (event.type == EnterNotify) { - - /* With overlays established, X can report two - enter events for both the overlay and normal - plane window. Do not generate a second enter - callback if we reported one without an - intervening leave. */ - - if (window->entryState != EnterNotify) { - int num = window->num; - Window xid = window->win; - - window->entryState = EnterNotify; - __glutSetWindow(window); - window->entry(GLUT_ENTERED); - - if (__glutMappedMenu) { - - /* Do not generate any passive motion events - when menus are in use. */ - - } else { - - /* An EnterNotify event can result in a - "compound" callback if a passive motion - callback is also registered. In this case, - be a little paranoid about the possibility - the window could have been destroyed in the - entry callback. */ - - window = __glutWindowList[num]; - if (window && window->passive && window->win == xid) { - __glutSetWindow(window); - window->passive(event.xcrossing.x, event.xcrossing.y); - } - } - } - } else { - if (window->entryState != LeaveNotify) { - - /* When an overlay is established for a window - already mapped and with the pointer in it, - the X server will generate a leave/enter - event pair as the pointer leaves (without - moving) from the normal plane X window to - the newly mapped overlay X window (or vice - versa). This enter/leave pair should not be - reported to the GLUT program since the pair - is a consequence of creating (or destroying) - the overlay, not an actual leave from the - GLUT window. */ - - if (XEventsQueued(__glutDisplay, QueuedAfterReading)) { - XPeekEvent(__glutDisplay, &ahead); - if (ahead.type == EnterNotify && - __glutGetWindow(ahead.xcrossing.window) == window) { - XNextEvent(__glutDisplay, &event); - break; - } - } - window->entryState = LeaveNotify; - __glutSetWindow(window); - window->entry(GLUT_LEFT); - } - } - } else if (window->passive) { - __glutSetWindow(window); - window->passive(event.xcrossing.x, event.xcrossing.y); - } - } - break; - case UnmapNotify: - /* MapNotify events are not needed to maintain - visibility state since VisibilityNotify events will - be delivered when a window becomes visible from - mapping. However, VisibilityNotify events are not - delivered when a window is unmapped (for the window - or its children). */ - window = __glutGetWindow(event.xunmap.window); - if (window) { - if (window->win != event.xconfigure.window) { - /* Ignore UnmapNotify sent to the overlay planes. - GLUT could get here because overlays select for - StructureNotify events to receive DestroyNotify. - */ - break; - } - markWindowHidden(window); - } - break; - case VisibilityNotify: - window = __glutGetWindow(event.xvisibility.window); - if (window) { - /* VisibilityUnobscured+1 = GLUT_FULLY_RETAINED, - VisibilityPartiallyObscured+1 = - GLUT_PARTIALLY_RETAINED, VisibilityFullyObscured+1 - = GLUT_FULLY_COVERED. */ - int visState = event.xvisibility.state + 1; - - if (visState != window->visState) { - if (window->windowStatus) { - window->visState = visState; - __glutSetWindow(window); - window->windowStatus(visState); - } - } - } - break; - case ClientMessage: - if (event.xclient.data.l[0] == __glutWMDeleteWindow) - exit(0); - break; - case DestroyNotify: - purgeStaleWindow(event.xdestroywindow.window); - break; - case CirculateNotify: - case CreateNotify: - case GravityNotify: - case ReparentNotify: - /* Uninteresting to GLUT (but possible for GLUT to - receive). */ - break; - default: - /* Pass events not directly handled by the GLUT main - event loop to any event parsers that have been - registered. In this way, X Input extension events - are passed to the correct handler without forcing - all GLUT programs to support X Input event handling. - */ - parser = eventParserList; - while (parser) { - if (parser->func(&event)) - break; - parser = parser->next; - } - break; - } - } - if (__glutTimerList) { - handleTimeouts(); - } - } - while (XPending(__glutDisplay)); -#endif /* _WIN32 */ -} - -static void -waitForSomething(void) -{ -#if defined(__vms) && ( __VMS_VER < 70000000 ) - static struct timeval zerotime = - {0}; - unsigned int timer_efn; -#define timer_id 'glut' /* random :-) number */ - unsigned int wait_mask; -#else - static struct timeval zerotime = - {0, 0}; -#if !defined(_WIN32) - fd_set fds; -#endif -#endif - struct timeval now, timeout, waittime; -#if !defined(_WIN32) - int rc; -#endif - - /* Flush X protocol since XPending does not do this - implicitly. */ - XFlush(__glutDisplay); - if (XPending(__glutDisplay)) { - /* It is possible (but quite rare) that XFlush may have - needed to wait for a writable X connection file - descriptor, and in the process, may have had to read off - X protocol from the file descriptor. If XPending is true, - this case occured and we should avoid waiting in select - since X protocol buffered within Xlib is due to be - processed and potentially no more X protocol is on the - file descriptor, so we would risk waiting improperly in - select. */ - goto immediatelyHandleXinput; - } -#if defined(__vms) && ( __VMS_VER < 70000000 ) - timeout = __glutTimerList->timeout; - GETTIMEOFDAY(&now); - wait_mask = 1 << (__glutConnectionFD & 31); - if (IS_AFTER(now, timeout)) { - /* We need an event flag for the timer. */ - /* XXX The `right' way to do this is to use LIB$GET_EF, but - since it needs to be in the same cluster as the EFN for - the display, we will have hack it. */ - timer_efn = __glutConnectionFD - 1; - if ((timer_efn / 32) != (__glutConnectionFD / 32)) { - timer_efn = __glutConnectionFD + 1; - } - rc = SYS$CLREF(timer_efn); - rc = SYS$SETIMR(timer_efn, &timeout, NULL, timer_id, 0); - wait_mask |= 1 << (timer_efn & 31); - } else { - timer_efn = 0; - } - rc = SYS$WFLOR(__glutConnectionFD, wait_mask); - if (timer_efn != 0 && SYS$CLREF(timer_efn) == SS$_WASCLR) { - rc = SYS$CANTIM(timer_id, PSL$C_USER); - } - /* XXX There does not seem to be checking of "rc" in the code - above. Can any of the SYS$ routines above fail? */ -#else /* not vms6.2 or lower */ -#if !defined(_WIN32) - FD_ZERO(&fds); - FD_SET(__glutConnectionFD, &fds); -#endif - timeout = __glutTimerList->timeout; - GETTIMEOFDAY(&now); - if (IS_AFTER(now, timeout)) { - TIMEDELTA(waittime, timeout, now); - } else { - waittime = zerotime; - } -#if !defined(_WIN32) - rc = select(__glutConnectionFD + 1, &fds, - NULL, NULL, &waittime); - if (rc < 0 && errno != EINTR) - __glutFatalError("select error."); -#else - MsgWaitForMultipleObjects(0, NULL, FALSE, waittime.tv_sec*1000 + waittime.tv_usec/1000, QS_ALLEVENTS); -#endif -#endif /* not vms6.2 or lower */ - /* Without considering the cause of select unblocking, check - for pending X events and handle any timeouts (by calling - processEventsAndTimeouts). We always look for X events - even if select returned with 0 (indicating a timeout); - otherwise we risk starving X event processing by continous - timeouts. */ - if (XPending(__glutDisplay)) { - immediatelyHandleXinput: - processEventsAndTimeouts(); - } else { - if (__glutTimerList) - handleTimeouts(); - } -} - -static void -idleWait(void) -{ - if (XPending(__glutDisplay)) { - processEventsAndTimeouts(); - } else { - if (__glutTimerList) { - handleTimeouts(); - } - } - /* Make sure idle func still exists! */ - if (__glutIdleFunc) { - __glutIdleFunc(); - } -} - -static GLUTwindow **beforeEnd; - -static GLUTwindow * -processWindowWorkList(GLUTwindow * window) -{ - int workMask; - - if (window->prevWorkWin) { - window->prevWorkWin = processWindowWorkList(window->prevWorkWin); - if (beforeEnd == 0) - beforeEnd = &window->prevWorkWin; - } else { - beforeEnd = &window->prevWorkWin; - } - - /* Capture work mask for work that needs to be done to this - window, then clear the window's work mask (excepting the - dummy work bit, see below). Then, process the captured - work mask. This allows callbacks in the processing the - captured work mask to set the window's work mask for - subsequent processing. */ - - workMask = window->workMask; - assert((workMask & GLUT_DUMMY_WORK) == 0); - - /* Set the dummy work bit, clearing all other bits, to - indicate that the window is currently on the window work - list _and_ that the window's work mask is currently being - processed. This convinces __glutPutOnWorkList that this - window is on the work list still. */ - window->workMask = GLUT_DUMMY_WORK; - - /* Optimization: most of the time, the work to do is a - redisplay and not these other types of work. Check for - the following cases as a group to before checking each one - individually one by one. This saves about 25 MIPS - instructions in the common redisplay only case. */ - if (workMask & (GLUT_EVENT_MASK_WORK | GLUT_DEVICE_MASK_WORK | - GLUT_CONFIGURE_WORK | GLUT_COLORMAP_WORK | GLUT_MAP_WORK)) { -#if !defined(_WIN32) - /* Be sure to set event mask BEFORE map window is done. */ - if (workMask & GLUT_EVENT_MASK_WORK) { - long eventMask; - - /* Make sure children are not propogating events this - window is selecting for. Be sure to do this before - enabling events on the children's parent. */ - if (window->children) { - GLUTwindow *child = window->children; - unsigned long attribMask = CWDontPropagate; - XSetWindowAttributes wa; - - wa.do_not_propagate_mask = window->eventMask & GLUT_DONT_PROPAGATE_FILTER_MASK; - if (window->eventMask & GLUT_HACK_STOP_PROPAGATE_MASK) { - wa.event_mask = child->eventMask | (window->eventMask & GLUT_HACK_STOP_PROPAGATE_MASK); - attribMask |= CWEventMask; - } - do { - XChangeWindowAttributes(__glutDisplay, child->win, - attribMask, &wa); - child = child->siblings; - } while (child); - } - eventMask = window->eventMask; - if (window->parent && window->parent->eventMask & GLUT_HACK_STOP_PROPAGATE_MASK) - eventMask |= (window->parent->eventMask & GLUT_HACK_STOP_PROPAGATE_MASK); - XSelectInput(__glutDisplay, window->win, eventMask); - if (window->overlay) - XSelectInput(__glutDisplay, window->overlay->win, - window->eventMask & GLUT_OVERLAY_EVENT_FILTER_MASK); - } -#endif /* !_WIN32 */ - /* Be sure to set device mask BEFORE map window is done. */ - if (workMask & GLUT_DEVICE_MASK_WORK) { - __glutUpdateInputDeviceMaskFunc(window); - } - /* Be sure to configure window BEFORE map window is done. */ - if (workMask & GLUT_CONFIGURE_WORK) { -#if defined(_WIN32) - if ( workMask & GLUT_FULL_SCREEN_WORK ) { - DWORD s; - RECT r; - - GetWindowRect(GetDesktopWindow(), &r); - s = GetWindowLong(window->win, GWL_STYLE); - s &= ~WS_OVERLAPPEDWINDOW; - s |= WS_POPUP; - SetWindowLong(window->win, GWL_STYLE, s); - SetWindowPos(window->win, - HWND_TOP, /* safer - a lot of people use windows atop a fullscreen GLUT window. */ - //HWND_TOPMOST, /* is better, but no windows atop it */ - r.left, r.top, - r.right-r.left, r.bottom-r.top, - SWP_FRAMECHANGED); - - /* This hack causes the window to go back to the right position - when it is taken out of fullscreen mode. */ - { - POINT p; - - p.x = 0; - p.y = 0; - ClientToScreen(window->win, &p); - window->desiredConfMask |= CWX | CWY; - window->desiredX = p.x; - window->desiredY = p.y; - } - } else { - RECT changes; - POINT point; - UINT flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING | SWP_NOSIZE | SWP_NOZORDER; - DWORD style; - - GetClientRect(window->win, &changes); - style = GetWindowLong(window->win, GWL_STYLE); - - /* Get rid of fullscreen mode, if it exists */ - if ( style & WS_POPUP ) { - style &= ~WS_POPUP; - style |= WS_OVERLAPPEDWINDOW; - SetWindowLong(window->win, GWL_STYLE, style); - flags |= SWP_FRAMECHANGED; - } - - /* If this window is a toplevel window, translate the 0,0 client - coordinate into a screen coordinate for proper placement. */ - if (!window->parent) { - point.x = 0; - point.y = 0; - ClientToScreen(window->win, &point); - changes.left = point.x; - changes.top = point.y; - } - if (window->desiredConfMask & (CWX | CWY)) { - changes.left = window->desiredX; - changes.top = window->desiredY; - flags &= ~SWP_NOMOVE; - } - if (window->desiredConfMask & (CWWidth | CWHeight)) { - changes.right = changes.left + window->desiredWidth; - changes.bottom = changes.top + window->desiredHeight; - flags &= ~SWP_NOSIZE; - /* XXX If overlay exists, resize the overlay here, ie. - if (window->overlay) ... */ - } - if (window->desiredConfMask & CWStackMode) { - flags &= ~SWP_NOZORDER; - /* XXX Overlay support might require something special here. */ - } - - /* Adjust the window rectangle because Win32 thinks that the x, y, - width & height are the WHOLE window (including decorations), - whereas GLUT treats the x, y, width & height as only the CLIENT - area of the window. Only do this to top level windows - that are not in game mode (since game mode windows do - not have any decorations). */ - if (!window->parent && window != __glutGameModeWindow) { - AdjustWindowRect(&changes, style, FALSE); - } - - /* Do the repositioning, moving, and push/pop. */ - SetWindowPos(window->win, - window->desiredStack == Above ? HWND_TOP : HWND_BOTTOM, - changes.left, changes.top, - changes.right - changes.left, changes.bottom - changes.top, - flags); - - /* Zero out the mask. */ - window->desiredConfMask = 0; - } -#else /* !_WIN32 */ - XWindowChanges changes; - - changes.x = window->desiredX; - changes.y = window->desiredY; - if (window->desiredConfMask & (CWWidth | CWHeight)) { - changes.width = window->desiredWidth; - changes.height = window->desiredHeight; - if (window->overlay) - XResizeWindow(__glutDisplay, window->overlay->win, - window->desiredWidth, window->desiredHeight); - if (__glutMotifHints != None) { - if (workMask & GLUT_FULL_SCREEN_WORK) { - MotifWmHints hints; - - hints.flags = MWM_HINTS_DECORATIONS; - hints.decorations = 0; /* Absolutely no - decorations. */ - XChangeProperty(__glutDisplay, window->win, - __glutMotifHints, __glutMotifHints, 32, - PropModeReplace, (unsigned char *) &hints, 4); - if (workMask & GLUT_MAP_WORK) { - /* Handle case where glutFullScreen is called - before the first time that the window is - mapped. Some window managers will randomly or - interactively position the window the first - time it is mapped if the window's - WM_NORMAL_HINTS property does not request an - explicit position. We don't want any such - window manager interaction when going - fullscreen. Overwrite the WM_NORMAL_HINTS - property installed by glutCreateWindow's - XSetWMProperties property with one explicitly - requesting a fullscreen window. */ - XSizeHints hints; - - hints.flags = USPosition | USSize; - hints.x = 0; - hints.y = 0; - hints.width = window->desiredWidth; - hints.height = window->desiredHeight; - XSetWMNormalHints(__glutDisplay, window->win, &hints); - } - } else { - XDeleteProperty(__glutDisplay, window->win, __glutMotifHints); - } - } - } - if (window->desiredConfMask & CWStackMode) { - changes.stack_mode = window->desiredStack; - /* Do not let glutPushWindow push window beneath the - underlay. */ - if (window->parent && window->parent->overlay - && window->desiredStack == Below) { - changes.stack_mode = Above; - changes.sibling = window->parent->overlay->win; - window->desiredConfMask |= CWSibling; - } - } - XConfigureWindow(__glutDisplay, window->win, - window->desiredConfMask, &changes); - window->desiredConfMask = 0; -#endif - } -#if !defined(_WIN32) - /* Be sure to establish the colormaps BEFORE map window is - done. */ - if (workMask & GLUT_COLORMAP_WORK) { - __glutEstablishColormapsProperty(window); - } -#endif - if (workMask & GLUT_MAP_WORK) { - switch (window->desiredMapState) { - case WithdrawnState: - if (window->parent) { - XUnmapWindow(__glutDisplay, window->win); - } else { - XWithdrawWindow(__glutDisplay, window->win, - __glutScreen); - } - window->shownState = 0; - break; - case NormalState: - XMapWindow(__glutDisplay, window->win); - window->shownState = 1; - break; -#ifdef _WIN32 - case GameModeState: /* Not an Xlib value. */ - ShowWindow(window->win, SW_SHOW); - window->shownState = 1; - break; -#endif - case IconicState: - XIconifyWindow(__glutDisplay, window->win, __glutScreen); - window->shownState = 0; - break; - } - } - } - if (workMask & (GLUT_REDISPLAY_WORK | GLUT_OVERLAY_REDISPLAY_WORK | GLUT_REPAIR_WORK | GLUT_OVERLAY_REPAIR_WORK)) { - if (window->forceReshape) { - /* Guarantee that before a display callback is generated - for a window, a reshape callback must be generated. */ - __glutSetWindow(window); - window->reshape(window->width, window->height); - window->forceReshape = False; - - /* Setting the redisplay bit on the first reshape is - necessary to make the "Mesa glXSwapBuffers to repair - damage" hack operate correctly. Without indicating a - redisplay is necessary, there's not an initial back - buffer render from which to blit from when damage - happens to the window. */ - workMask |= GLUT_REDISPLAY_WORK; - } - /* The code below is more involved than otherwise necessary - because it is paranoid about the overlay or entire window - being removed or destroyed in the course of the callbacks. - Notice how the global __glutWindowDamaged is used to record - the layers' damage status. See the code in glutLayerGet for - how __glutWindowDamaged is used. The point is to not have to - update the "damaged" field after the callback since the - window (or overlay) may be destroyed (or removed) when the - callback returns. */ - - if (window->overlay && window->overlay->display) { - int num = window->num; - Window xid = window->overlay ? window->overlay->win : None; - - /* If an overlay display callback is registered, we - differentiate between a redisplay needed for the - overlay and/or normal plane. If there is no overlay - display callback registered, we simply use the - standard display callback. */ - - if (workMask & (GLUT_REDISPLAY_WORK | GLUT_REPAIR_WORK)) { - if (__glutMesaSwapHackSupport) { - if (window->usedSwapBuffers) { - if ((workMask & (GLUT_REPAIR_WORK | GLUT_REDISPLAY_WORK)) == GLUT_REPAIR_WORK) { - SWAP_BUFFERS_WINDOW(window); - goto skippedDisplayCallback1; - } - } - } - /* Render to normal plane. */ -#ifdef _WIN32 - window->renderDc = window->hdc; -#endif - window->renderWin = window->win; - window->renderCtx = window->ctx; - __glutWindowDamaged = (workMask & GLUT_REPAIR_WORK); - __glutSetWindow(window); - window->usedSwapBuffers = 0; - window->display(); - __glutWindowDamaged = 0; - - skippedDisplayCallback1:; - } - if (workMask & (GLUT_OVERLAY_REDISPLAY_WORK | GLUT_OVERLAY_REPAIR_WORK)) { - window = __glutWindowList[num]; - if (window && window->overlay && - window->overlay->win == xid && window->overlay->display) { - - /* Render to overlay. */ -#ifdef _WIN32 - window->renderDc = window->overlay->hdc; -#endif - window->renderWin = window->overlay->win; - window->renderCtx = window->overlay->ctx; - __glutWindowDamaged = (workMask & GLUT_OVERLAY_REPAIR_WORK); - __glutSetWindow(window); - window->overlay->display(); - __glutWindowDamaged = 0; - } else { - /* Overlay may have since been destroyed or the - overlay callback may have been disabled during - normal display callback. */ - } - } - } else { - if (__glutMesaSwapHackSupport) { - if (!window->overlay && window->usedSwapBuffers) { - if ((workMask & (GLUT_REPAIR_WORK | GLUT_REDISPLAY_WORK)) == GLUT_REPAIR_WORK) { - SWAP_BUFFERS_WINDOW(window); - goto skippedDisplayCallback2; - } - } - } - /* Render to normal plane (and possibly overlay). */ - __glutWindowDamaged = (workMask & (GLUT_OVERLAY_REPAIR_WORK | GLUT_REPAIR_WORK)); - __glutSetWindow(window); - window->usedSwapBuffers = 0; - window->display(); - __glutWindowDamaged = 0; - - skippedDisplayCallback2:; - } - } - /* Combine workMask with window->workMask to determine what - finish and debug work there is. */ - workMask |= window->workMask; - - if (workMask & GLUT_FINISH_WORK) { - /* Finish work makes sure a glFinish gets done to indirect - rendering contexts. Indirect contexts tend to have much - longer latency because lots of OpenGL extension requests - can queue up in the X protocol stream. __glutSetWindow - is where the finish works gets queued for indirect - contexts. */ - __glutSetWindow(window); - glFinish(); - } - if (workMask & GLUT_DEBUG_WORK) { - __glutSetWindow(window); - glutReportErrors(); - } - /* Strip out dummy, finish, and debug work bits. */ - window->workMask &= ~(GLUT_DUMMY_WORK | GLUT_FINISH_WORK | GLUT_DEBUG_WORK); - if (window->workMask) { - /* Leave on work list. */ - return window; - } else { - if (beforeEnd == &window->prevWorkWin) - beforeEnd = 0; - /* Remove current window from work list. */ - return window->prevWorkWin; - } -} - -/* CENTRY */ -void APIENTRY -glutMainLoop(void) -{ -#if !defined(_WIN32) - if (!__glutDisplay) - __glutFatalUsage("main loop entered with out proper initialization."); -#endif - if (!__glutWindowListSize) - __glutFatalUsage( - "main loop entered with no windows created."); - for (;;) { - if (__glutWindowWorkList) { - GLUTwindow *remainder, *work; - - work = __glutWindowWorkList; - __glutWindowWorkList = NULL; - if (work) { - remainder = processWindowWorkList(work); - if (remainder) { - *beforeEnd = __glutWindowWorkList; - __glutWindowWorkList = remainder; - } - } - } - if (__glutIdleFunc || __glutWindowWorkList) { - idleWait(); - } else { - if (__glutTimerList) { - waitForSomething(); - } else { - processEventsAndTimeouts(); - } -#if defined(_WIN32) - // If there is no idle function, go to sleep for a millisecond (we - // still need to possibly service timers) or until there is some - // event in our queue. - MsgWaitForMultipleObjects(0, NULL, FALSE, 1, QS_ALLEVENTS); -#endif - } - } -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_ext.c b/lib/glut-3.7.6/lib/glut/glut_ext.c deleted file mode 100644 index b6fe4041889b66da756b6c879e12d495fbe42582..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_ext.c +++ /dev/null @@ -1,53 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -#include "glutint.h" - -/* CENTRY */ -int APIENTRY -glutExtensionSupported(const char *extension) -{ - static const GLubyte *extensions = NULL; - const GLubyte *start; - GLubyte *where, *terminator; - - /* Extension names should not have spaces. */ - where = (GLubyte *) strchr(extension, ' '); - if (where || *extension == '\0') - return 0; - - if (!extensions) { - extensions = glGetString(GL_EXTENSIONS); - } - /* It takes a bit of care to be fool-proof about parsing the - OpenGL extensions string. Don't be fooled by sub-strings, - etc. */ - start = extensions; - for (;;) { - /* If your application crashes in the strstr routine below, - you are probably calling glutExtensionSupported without - having a current window. Calling glGetString without - a current OpenGL context has unpredictable results. - Please fix your program. */ - where = (GLubyte *) strstr((const char *) start, extension); - if (!where) - break; - terminator = where + strlen(extension); - if (where == start || *(where - 1) == ' ') { - if (*terminator == ' ' || *terminator == '\0') { - return 1; - } - } - start = terminator; - } - return 0; -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_fcb.c b/lib/glut-3.7.6/lib/glut/glut_fcb.c deleted file mode 100644 index 73d1d27ae7b910c0d9b71b2923672aaef1ff582d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_fcb.c +++ /dev/null @@ -1,164 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* I appreciate the guidance from William Mitchell - (mitchell@cam.nist.gov) in developing this friend interface - for use by the f90gl package. See ../../README.fortran */ - -#include "glutint.h" - -/* FCB stands for Fortran CallBack. */ - -/* There is only one idleFunc, menuStateFunc, and menuStatusFunc, so they - can be saved in the wrappers for Fortran rather than the C structures. */ - -/* Set a Fortran callback function. */ - -void APIENTRY -__glutSetFCB(int which, void *func) -{ -#ifdef SUPPORT_FORTRAN - switch (which) { - case GLUT_FCB_DISPLAY: - __glutCurrentWindow->fdisplay = (GLUTdisplayFCB) func; - break; - case GLUT_FCB_RESHAPE: - __glutCurrentWindow->freshape = (GLUTreshapeFCB) func; - break; - case GLUT_FCB_MOUSE: - __glutCurrentWindow->fmouse = (GLUTmouseFCB) func; - break; - case GLUT_FCB_MOTION: - __glutCurrentWindow->fmotion = (GLUTmotionFCB) func; - break; - case GLUT_FCB_PASSIVE: - __glutCurrentWindow->fpassive = (GLUTpassiveFCB) func; - break; - case GLUT_FCB_ENTRY: - __glutCurrentWindow->fentry = (GLUTentryFCB) func; - break; - case GLUT_FCB_KEYBOARD: - __glutCurrentWindow->fkeyboard = (GLUTkeyboardFCB) func; - break; - case GLUT_FCB_KEYBOARD_UP: - __glutCurrentWindow->fkeyboardUp = (GLUTkeyboardFCB) func; - break; - case GLUT_FCB_WINDOW_STATUS: - __glutCurrentWindow->fwindowStatus = (GLUTwindowStatusFCB) func; - break; - case GLUT_FCB_VISIBILITY: - __glutCurrentWindow->fvisibility = (GLUTvisibilityFCB) func; - break; - case GLUT_FCB_SPECIAL: - __glutCurrentWindow->fspecial = (GLUTspecialFCB) func; - break; - case GLUT_FCB_SPECIAL_UP: - __glutCurrentWindow->fspecialUp = (GLUTspecialFCB) func; - break; - case GLUT_FCB_BUTTON_BOX: - __glutCurrentWindow->fbuttonBox = (GLUTbuttonBoxFCB) func; - break; - case GLUT_FCB_DIALS: - __glutCurrentWindow->fdials = (GLUTdialsFCB) func; - break; - case GLUT_FCB_SPACE_MOTION: - __glutCurrentWindow->fspaceMotion = (GLUTspaceMotionFCB) func; - break; - case GLUT_FCB_SPACE_ROTATE: - __glutCurrentWindow->fspaceRotate = (GLUTspaceRotateFCB) func; - break; - case GLUT_FCB_SPACE_BUTTON: - __glutCurrentWindow->fspaceButton = (GLUTspaceButtonFCB) func; - break; - case GLUT_FCB_TABLET_MOTION: - __glutCurrentWindow->ftabletMotion = (GLUTtabletMotionFCB) func; - break; - case GLUT_FCB_TABLET_BUTTON: - __glutCurrentWindow->ftabletButton = (GLUTtabletButtonFCB) func; - break; -#ifdef _WIN32 - case GLUT_FCB_JOYSTICK: - __glutCurrentWindow->fjoystick = (GLUTjoystickFCB) func; - break; -#endif - case GLUT_FCB_OVERLAY_DISPLAY: - __glutCurrentWindow->overlay->fdisplay = (GLUTdisplayFCB) func; - break; - case GLUT_FCB_SELECT: - __glutCurrentMenu->fselect = (GLUTselectFCB) func; - break; - case GLUT_FCB_TIMER: - __glutNewTimer->ffunc = (GLUTtimerFCB) func; - break; - } -#endif -} - -/* Get a Fortran callback function. */ - -void* APIENTRY -__glutGetFCB(int which) -{ -#ifdef SUPPORT_FORTRAN - switch (which) { - case GLUT_FCB_DISPLAY: - return (void *) __glutCurrentWindow->fdisplay; - case GLUT_FCB_RESHAPE: - return (void *) __glutCurrentWindow->freshape; - case GLUT_FCB_MOUSE: - return (void *) __glutCurrentWindow->fmouse; - case GLUT_FCB_MOTION: - return (void *) __glutCurrentWindow->fmotion; - case GLUT_FCB_PASSIVE: - return (void *) __glutCurrentWindow->fpassive; - case GLUT_FCB_ENTRY: - return (void *) __glutCurrentWindow->fentry; - case GLUT_FCB_KEYBOARD: - return (void *) __glutCurrentWindow->fkeyboard; - case GLUT_FCB_KEYBOARD_UP: - return (void *) __glutCurrentWindow->fkeyboardUp; - case GLUT_FCB_WINDOW_STATUS: - return (void *) __glutCurrentWindow->fwindowStatus; - case GLUT_FCB_VISIBILITY: - return (void *) __glutCurrentWindow->fvisibility; - case GLUT_FCB_SPECIAL: - return (void *) __glutCurrentWindow->fspecial; - case GLUT_FCB_SPECIAL_UP: - return (void *) __glutCurrentWindow->fspecialUp; - case GLUT_FCB_BUTTON_BOX: - return (void *) __glutCurrentWindow->fbuttonBox; - case GLUT_FCB_DIALS: - return (void *) __glutCurrentWindow->fdials; - case GLUT_FCB_SPACE_MOTION: - return (void *) __glutCurrentWindow->fspaceMotion; - case GLUT_FCB_SPACE_ROTATE: - return (void *) __glutCurrentWindow->fspaceRotate; - case GLUT_FCB_SPACE_BUTTON: - return (void *) __glutCurrentWindow->fspaceButton; - case GLUT_FCB_TABLET_MOTION: - return (void *) __glutCurrentWindow->ftabletMotion; - case GLUT_FCB_TABLET_BUTTON: - return (void *) __glutCurrentWindow->ftabletButton; - case GLUT_FCB_JOYSTICK: -#ifdef _WIN32 - return (void *) __glutCurrentWindow->fjoystick; -#else - return NULL; -#endif - case GLUT_FCB_OVERLAY_DISPLAY: - return (void *) __glutCurrentWindow->overlay->fdisplay; - case GLUT_FCB_SELECT: - return (void *) __glutCurrentMenu->fselect; - case GLUT_FCB_TIMER: - return (void *) __glutTimerList->ffunc; - default: - return NULL; - } -#else - return NULL; -#endif -} diff --git a/lib/glut-3.7.6/lib/glut/glut_fullscrn.c b/lib/glut-3.7.6/lib/glut/glut_fullscrn.c deleted file mode 100644 index 892a06c61af663b453e93042d3bd042d3ff6015e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_fullscrn.c +++ /dev/null @@ -1,52 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1995, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include /* SunOS multithreaded assert() needs . Lame. */ -#include - -#if !defined(_WIN32) -#include -#include -#endif - -/* SGI optimization introduced in IRIX 6.3 to avoid X server - round trips for interning common X atoms. */ -#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS) -#include -#else -#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how) -#endif - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutFullScreen(void) -{ - assert(!__glutCurrentWindow->parent); - IGNORE_IN_GAME_MODE(); -#if !defined(_WIN32) - if (__glutMotifHints == None) { - __glutMotifHints = XSGIFastInternAtom(__glutDisplay, "_MOTIF_WM_HINTS", - SGI_XA__MOTIF_WM_HINTS, 0); - if (__glutMotifHints == None) { - __glutWarning("Could not intern X atom for _MOTIF_WM_HINTS."); - } - } -#endif - - __glutCurrentWindow->desiredX = 0; - __glutCurrentWindow->desiredY = 0; - __glutCurrentWindow->desiredWidth = __glutScreenWidth; - __glutCurrentWindow->desiredHeight = __glutScreenHeight; - __glutCurrentWindow->desiredConfMask |= CWX | CWY | CWWidth | CWHeight; - - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_CONFIGURE_WORK | GLUT_FULL_SCREEN_WORK); -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_gamemode.c b/lib/glut-3.7.6/lib/glut/glut_gamemode.c deleted file mode 100644 index b660df24a1ab93a49129dd1f09d7b104582b8fac..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_gamemode.c +++ /dev/null @@ -1,674 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -#include "glutint.h" - -#ifndef _WIN32 -#include -#include - -/* SGI optimization introduced in IRIX 6.3 to avoid X server - round trips for interning common X atoms. */ -#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS) -#include -#else -#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how) -#endif -#endif /* not _WIN32 */ - -int __glutDisplaySettingsChanged = 0; -static DisplayMode *dmodes, *currentDm = NULL; -static int ndmodes = -1; -GLUTwindow *__glutGameModeWindow = NULL; - -#ifdef TEST -static char *compstr[] = -{ - "none", "=", "!=", "<=", ">=", ">", "<", "~" -}; -static char *capstr[] = -{ - "width", "height", "bpp", "hertz", "num" -}; -#endif - -void -__glutCloseDownGameMode(void) -{ - if (__glutDisplaySettingsChanged) { -#ifdef _WIN32 - /* Assumes that display settings have been changed, that - is __glutDisplaySettingsChanged is true. */ - ChangeDisplaySettings(NULL, 0); -#endif - __glutDisplaySettingsChanged = 0; - } - __glutGameModeWindow = NULL; -} - -void APIENTRY -glutLeaveGameMode(void) -{ - if (__glutGameModeWindow == NULL) { - __glutWarning("not in game mode so cannot leave game mode"); - return; - } - __glutDestroyWindow(__glutGameModeWindow, - __glutGameModeWindow); - XFlush(__glutDisplay); - __glutGameModeWindow = NULL; -} - -#ifdef _WIN32 - -/* Same values as from MSDN's SetDisp.c example. */ -#define MIN_WIDTH 400 -#define MIN_FREQUENCY 60 - -static void -initGameModeSupport(void) -{ - DEVMODE dm; - DWORD mode; - int i; - - if (ndmodes >= 0) { - /* ndmodes is initially -1 to indicate no - dmodes allocated yet. */ - return; - } - - /* Determine how many display modes there are. */ - ndmodes = 0; - mode = 0; - while (EnumDisplaySettings(NULL, mode, &dm)) { - if (dm.dmPelsWidth >= MIN_WIDTH && - (dm.dmDisplayFrequency == 0 || - dm.dmDisplayFrequency >= MIN_FREQUENCY)) { - ndmodes++; - } - mode++; - } - - /* Allocate memory for a list of all the display modes. */ - dmodes = (DisplayMode*) - malloc(ndmodes * sizeof(DisplayMode)); - - /* Now that we know how many display modes to expect, - enumerate them again and save the information in - the list we allocated above. */ - i = 0; - mode = 0; - while (EnumDisplaySettings(NULL, mode, &dm)) { - /* Try to reject any display settings that seem unplausible. */ - if (dm.dmPelsWidth >= MIN_WIDTH && - (dm.dmDisplayFrequency == 0 || - dm.dmDisplayFrequency >= MIN_FREQUENCY)) { - dmodes[i].devmode = dm; - dmodes[i].valid = 1; /* XXX Not used for now. */ - dmodes[i].cap[DM_WIDTH] = dm.dmPelsWidth; - dmodes[i].cap[DM_HEIGHT] = dm.dmPelsHeight; - dmodes[i].cap[DM_PIXEL_DEPTH] = dm.dmBitsPerPel; - if (dm.dmDisplayFrequency == 0) { - /* Guess a reasonable guess. */ - /* Lame Windows 95 version of EnumDisplaySettings. */ - dmodes[i].cap[DM_HERTZ] = 60; - } else { - dmodes[i].cap[DM_HERTZ] = dm.dmDisplayFrequency; - } - i++; - } - mode++; - } - - assert(i == ndmodes); -} - -#else - -/* X Windows version of initGameModeSupport. */ -static void -initGameModeSupport(void) -{ - if (ndmodes >= 0) { - /* ndmodes is initially -1 to indicate no - dmodes allocated yet. */ - return; - } - - /* Determine how many display modes there are. */ - ndmodes = 0; -} - -#endif - -/* This routine is based on similiar code in glut_dstr.c */ -static DisplayMode * -findMatch(DisplayMode * dmodes, int ndmodes, - Criterion * criteria, int ncriteria) -{ - DisplayMode *found; - int *bestScore, *thisScore; - int i, j, numok, result, worse, better; - - found = NULL; - numok = 1; /* "num" capability is indexed from 1, - not 0. */ - - /* XXX alloca canidate. */ - bestScore = (int *) malloc(ncriteria * sizeof(int)); - if (!bestScore) { - __glutFatalError("out of memory."); - } - for (j = 0; j < ncriteria; j++) { - /* Very negative number. */ - bestScore[j] = -32768; - } - - /* XXX alloca canidate. */ - thisScore = (int *) malloc(ncriteria * sizeof(int)); - if (!thisScore) { - __glutFatalError("out of memory."); - } - - for (i = 0; i < ndmodes; i++) { - if (dmodes[i].valid) { - worse = 0; - better = 0; - - for (j = 0; j < ncriteria; j++) { - int cap, cvalue, dvalue; - - cap = criteria[j].capability; - cvalue = criteria[j].value; - if (cap == NUM) { - dvalue = numok; - } else { - dvalue = dmodes[i].cap[cap]; - } -#ifdef TEST - if (verbose) - printf(" %s %s %d to %d\n", - capstr[cap], compstr[criteria[j].comparison], cvalue, dvalue); -#endif - switch (criteria[j].comparison) { - case EQ: - result = cvalue == dvalue; - thisScore[j] = 1; - break; - case NEQ: - result = cvalue != dvalue; - thisScore[j] = 1; - break; - case LT: - result = dvalue < cvalue; - thisScore[j] = dvalue - cvalue; - break; - case GT: - result = dvalue > cvalue; - thisScore[j] = dvalue - cvalue; - break; - case LTE: - result = dvalue <= cvalue; - thisScore[j] = dvalue - cvalue; - break; - case GTE: - result = (dvalue >= cvalue); - thisScore[j] = dvalue - cvalue; - break; - case MIN: - result = dvalue >= cvalue; - thisScore[j] = cvalue - dvalue; - break; - } - -#ifdef TEST - if (verbose) - printf(" result=%d score=%d bestScore=%d\n", result, thisScore[j], bestScore[j]); -#endif - - if (result) { - if (better || thisScore[j] > bestScore[j]) { - better = 1; - } else if (thisScore[j] == bestScore[j]) { - /* Keep looking. */ - } else { - goto nextDM; - } - } else { - if (cap == NUM) { - worse = 1; - } else { - goto nextDM; - } - } - - } - - if (better && !worse) { - found = &dmodes[i]; - for (j = 0; j < ncriteria; j++) { - bestScore[j] = thisScore[j]; - } - } - numok++; - - nextDM:; - - } - } - free(bestScore); - free(thisScore); - return found; -} - -/** - * Parses strings in the form of: - * 800x600 - * 800x600:16 - * 800x600@60 - * 800x600:16@60 - * @60 - * :16 - * :16@60 - * NOTE that @ before : is not parsed. - */ -static int -specialCaseParse(char *word, Criterion * criterion, int mask) -{ - char *xstr, *response; - int got; - int width, height, bpp, hertz; - - switch(word[0]) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - /* The WWWxHHH case. */ - if (mask & (1 << DM_WIDTH)) { - return -1; - } - xstr = strpbrk(&word[1], "x"); - if (xstr) { - width = (int) strtol(word, &response, 0); - if (response == word || response[0] != 'x') { - /* Not a valid number OR needs to be followed by 'x'. */ - return -1; - } - height = (int) strtol(&xstr[1], &response, 0); - if (response == &xstr[1]) { - /* Not a valid number. */ - return -1; - } - criterion[0].capability = DM_WIDTH; - criterion[0].comparison = EQ; - criterion[0].value = width; - criterion[1].capability = DM_HEIGHT; - criterion[1].comparison = EQ; - criterion[1].value = height; - got = specialCaseParse(response, - &criterion[2], 1 << DM_WIDTH); - if (got >= 0) { - return got + 2; - } else { - return -1; - } - } - return -1; - case ':': - /* The :BPP case. */ - if (mask & (1 << DM_PIXEL_DEPTH)) { - return -1; - } - bpp = (int) strtol(&word[1], &response, 0); - if (response == &word[1]) { - /* Not a valid number. */ - return -1; - } - criterion[0].capability = DM_PIXEL_DEPTH; - criterion[0].comparison = EQ; - criterion[0].value = bpp; - got = specialCaseParse(response, - &criterion[1], (1 << DM_WIDTH) | (1 << DM_PIXEL_DEPTH)); - if (got >= 0) { - return got + 1; - } else { - return -1; - } - case '@': - /* The @HZ case. */ - if (mask & (1 << DM_HERTZ)) { - return -1; - } - hertz = (int) strtol(&word[1], &response, 0); - if (response == &word[1]) { - /* Not a valid number. */ - return -1; - } - criterion[0].capability = DM_HERTZ; - criterion[0].comparison = EQ; - criterion[0].value = hertz; - got = specialCaseParse(response, - &criterion[1], ~DM_HERTZ); - if (got >= 0) { - return got + 1; - } else { - return -1; - } - case '\0': - return 0; - } - return -1; -} - -/* This routine is based on similiar code in glut_dstr.c */ -static int -parseCriteria(char *word, Criterion * criterion) -{ - char *cstr, *vstr, *response; - int comparator, value; - - cstr = strpbrk(word, "=>': - if (cstr[1] == '=') { - comparator = GTE; - vstr = &cstr[2]; - } else { - comparator = GT; - vstr = &cstr[1]; - } - break; - case '<': - if (cstr[1] == '=') { - comparator = LTE; - vstr = &cstr[2]; - } else { - comparator = LT; - vstr = &cstr[1]; - } - break; - case '!': - if (cstr[1] == '=') { - comparator = NEQ; - vstr = &cstr[2]; - } else { - return -1; - } - break; - default: - return -1; - } - value = (int) strtol(vstr, &response, 0); - if (response == vstr) { - /* Not a valid number. */ - return -1; - } - *cstr = '\0'; - } else { - comparator = NONE; - } - switch (word[0]) { - case 'b': - if (!strcmp(word, "bpp")) { - criterion[0].capability = DM_PIXEL_DEPTH; - if (comparator == NONE) { - return -1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - return 1; - } - } - return -1; - case 'h': - if (!strcmp(word, "height")) { - criterion[0].capability = DM_HEIGHT; - if (comparator == NONE) { - return -1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - return 1; - } - } - if (!strcmp(word, "hertz")) { - criterion[0].capability = DM_HERTZ; - if (comparator == NONE) { - return -1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - return 1; - } - } - return -1; - case 'n': - if (!strcmp(word, "num")) { - criterion[0].capability = DM_NUM; - if (comparator == NONE) { - return -1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - return 1; - } - } - return -1; - case 'w': - if (!strcmp(word, "width")) { - criterion[0].capability = DM_WIDTH; - if (comparator == NONE) { - return -1; - } else { - criterion[0].comparison = comparator; - criterion[0].value = value; - return 1; - } - } - return -1; - } - if (comparator == NONE) { - return specialCaseParse(word, criterion, 0); - } - return -1; -} - -/* This routine is based on similiar code in glut_dstr.c */ -static Criterion * -parseDisplayString(const char *display, int *ncriteria) -{ - Criterion *criteria = NULL; - int n, parsed; - char *copy, *word; - - copy = __glutStrdup(display); - /* Attempt to estimate how many criteria entries should be - needed. */ - n = 0; - word = strtok(copy, " \t"); - while (word) { - n++; - word = strtok(NULL, " \t"); - } - /* Allocate number of words of criteria. A word - could contain as many as four criteria in the - worst case. Example: 800x600:16@60 */ - criteria = (Criterion *) malloc(4 * n * sizeof(Criterion)); - if (!criteria) { - __glutFatalError("out of memory."); - } - - /* Re-copy the copy of the display string. */ - strcpy(copy, display); - - n = 0; - word = strtok(copy, " \t"); - while (word) { - parsed = parseCriteria(word, &criteria[n]); - if (parsed >= 0) { - n += parsed; - } else { - __glutWarning("Unrecognized game mode string word: %s (ignoring)\n", word); - } - word = strtok(NULL, " \t"); - } - - free(copy); - *ncriteria = n; - return criteria; -} - -void APIENTRY -glutGameModeString(const char *string) -{ - Criterion *criteria; - int ncriteria; - - initGameModeSupport(); - criteria = parseDisplayString(string, &ncriteria); - currentDm = findMatch(dmodes, ndmodes, criteria, ncriteria); - free(criteria); -} - -int APIENTRY -glutEnterGameMode(void) -{ - GLUTwindow *window; - int width, height; - Window win; - - if (__glutMappedMenu) { - __glutFatalUsage("entering game mode not allowed while menus in use"); - } - if (__glutGameModeWindow) { - /* Already in game mode, so blow away game mode - window so apps can change resolutions. */ - window = __glutGameModeWindow; - /* Setting the game mode window to NULL tricks - the window destroy code into not undoing the - screen display change since we plan on immediately - doing another mode change. */ - __glutGameModeWindow = NULL; - __glutDestroyWindow(window, window); - } - - /* Assume default screen size until we find out if we - can actually change the display settings. */ - width = __glutScreenWidth; - height = __glutScreenHeight; - - if (currentDm) { -#ifdef _WIN32 - LONG status; - static int registered = 0; - - status = ChangeDisplaySettings(¤tDm->devmode, - CDS_FULLSCREEN); - if (status == DISP_CHANGE_SUCCESSFUL) { - __glutDisplaySettingsChanged = 1; - width = currentDm->cap[DM_WIDTH]; - height = currentDm->cap[DM_HEIGHT]; - if (!registered) { - atexit(__glutCloseDownGameMode); - registered = 1; - } - } else { - /* Switch back to default resolution. */ - ChangeDisplaySettings(NULL, 0); - } -#endif - } - - window = __glutCreateWindow(NULL, 0, 0, - width, height, /* game mode */ 1); - win = window->win; - -#if !defined(_WIN32) - if (__glutMotifHints == None) { - __glutMotifHints = XSGIFastInternAtom(__glutDisplay, "_MOTIF_WM_HINTS", - SGI_XA__MOTIF_WM_HINTS, 0); - if (__glutMotifHints == None) { - __glutWarning("Could not intern X atom for _MOTIF_WM_HINTS."); - } - } - - /* Game mode window is a toplevel window. */ - XSetWMProtocols(__glutDisplay, win, &__glutWMDeleteWindow, 1); -#endif - - /* Schedule the fullscreen property to be added and to - make sure the window is configured right. Win32 - doesn't need this. */ - window->desiredX = 0; - window->desiredY = 0; - window->desiredWidth = width; - window->desiredHeight = height; - window->desiredConfMask |= CWX | CWY | CWWidth | CWHeight; -#ifdef _WIN32 - /* Win32 does not want to use GLUT_FULL_SCREEN_WORK - for game mode because we need to be maximizing - the window in game mode, not just sizing it to - take up the full screen. The Win32-ness of game - mode happens when you pass 1 in the gameMode parameter - to __glutCreateWindow above. A gameMode of creates - a WS_POPUP window, not a standard WS_OVERLAPPEDWINDOW - window. WS_POPUP ensures the taskbar is hidden. */ - __glutPutOnWorkList(window, - GLUT_CONFIGURE_WORK); -#else - __glutPutOnWorkList(window, - GLUT_CONFIGURE_WORK | GLUT_FULL_SCREEN_WORK); -#endif - - __glutGameModeWindow = window; - return window->num + 1; -} - -int APIENTRY -glutGameModeGet(GLenum mode) -{ - switch (mode) { - case GLUT_GAME_MODE_ACTIVE: - return __glutGameModeWindow != NULL; - case GLUT_GAME_MODE_POSSIBLE: - return currentDm != NULL; - case GLUT_GAME_MODE_WIDTH: - return currentDm ? currentDm->cap[DM_WIDTH] : -1; - case GLUT_GAME_MODE_HEIGHT: - return currentDm ? currentDm->cap[DM_HEIGHT] : -1; - case GLUT_GAME_MODE_PIXEL_DEPTH: - return currentDm ? currentDm->cap[DM_PIXEL_DEPTH] : -1; - case GLUT_GAME_MODE_REFRESH_RATE: - return currentDm ? currentDm->cap[DM_HERTZ] : -1; - case GLUT_GAME_MODE_DISPLAY_CHANGED: - return __glutDisplaySettingsChanged; - default: - return -1; - } -} diff --git a/lib/glut-3.7.6/lib/glut/glut_get.c b/lib/glut-3.7.6/lib/glut/glut_get.c deleted file mode 100644 index b01671efbfcc6092b26cbf1657824a28fcf4105d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_get.c +++ /dev/null @@ -1,216 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include /* SunOS 4 needs NULL defined for GETTIMEOFDAY macro. */ -#include "glutint.h" - -/* CENTRY */ -int APIENTRY -glutGet(GLenum param) -{ - Window win, root; - int x, y, value; - unsigned int width, height, border, depth; - - switch (param) { - case GLUT_INIT_WINDOW_X: - return __glutInitX; - case GLUT_INIT_WINDOW_Y: - return __glutInitY; - case GLUT_INIT_WINDOW_WIDTH: - return __glutInitWidth; - case GLUT_INIT_WINDOW_HEIGHT: - return __glutInitHeight; - case GLUT_INIT_DISPLAY_MODE: - return __glutDisplayMode; - case GLUT_WINDOW_X: - XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win, - __glutRoot, 0, 0, &x, &y, &win); - return x; - case GLUT_WINDOW_Y: - XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win, - __glutRoot, 0, 0, &x, &y, &win); - return y; - case GLUT_WINDOW_WIDTH: - if (!__glutCurrentWindow->reshape) { - XGetGeometry(__glutDisplay, __glutCurrentWindow->win, - &root, &x, &y, - &width, &height, &border, &depth); - return width; - } - return __glutCurrentWindow->width; - case GLUT_WINDOW_HEIGHT: - if (!__glutCurrentWindow->reshape) { - XGetGeometry(__glutDisplay, __glutCurrentWindow->win, - &root, &x, &y, - &width, &height, &border, &depth); - return height; - } - return __glutCurrentWindow->height; - -#define GET_CONFIG(attrib) { \ - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { \ - glXGetConfig(__glutDisplay, __glutCurrentWindow->vis, \ - attrib, &value); \ - } else { \ - glXGetConfig(__glutDisplay, __glutCurrentWindow->overlay->vis, \ - attrib, &value); \ - } \ -} - - case GLUT_WINDOW_BUFFER_SIZE: - GET_CONFIG(GLX_BUFFER_SIZE); - return value; - case GLUT_WINDOW_STENCIL_SIZE: - GET_CONFIG(GLX_STENCIL_SIZE); - return value; - case GLUT_WINDOW_DEPTH_SIZE: - GET_CONFIG(GLX_DEPTH_SIZE); - return value; - case GLUT_WINDOW_RED_SIZE: - GET_CONFIG(GLX_RED_SIZE); - return value; - case GLUT_WINDOW_GREEN_SIZE: - GET_CONFIG(GLX_GREEN_SIZE); - return value; - case GLUT_WINDOW_BLUE_SIZE: - GET_CONFIG(GLX_BLUE_SIZE); - return value; - case GLUT_WINDOW_ALPHA_SIZE: - GET_CONFIG(GLX_ALPHA_SIZE); - return value; - case GLUT_WINDOW_ACCUM_RED_SIZE: - GET_CONFIG(GLX_ACCUM_RED_SIZE); - return value; - case GLUT_WINDOW_ACCUM_GREEN_SIZE: - GET_CONFIG(GLX_ACCUM_GREEN_SIZE); - return value; - case GLUT_WINDOW_ACCUM_BLUE_SIZE: - GET_CONFIG(GLX_ACCUM_BLUE_SIZE); - return value; - case GLUT_WINDOW_ACCUM_ALPHA_SIZE: - GET_CONFIG(GLX_ACCUM_ALPHA_SIZE); - return value; - case GLUT_WINDOW_DOUBLEBUFFER: - GET_CONFIG(GLX_DOUBLEBUFFER); - return value; - case GLUT_WINDOW_RGBA: - GET_CONFIG(GLX_RGBA); - return value; - case GLUT_WINDOW_COLORMAP_SIZE: - GET_CONFIG(GLX_RGBA); - if (value) { - return 0; - } else { -#if defined(_WIN32) - /* KLUDGE: we always assume 256 colors in CI mode on - Win32 */ - return 256; -#else - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { - return __glutCurrentWindow->vis->visual->map_entries; - } else { - return __glutCurrentWindow->overlay->vis->visual->map_entries; - } -#endif /* _WIN32 */ - } - case GLUT_WINDOW_PARENT: - return __glutCurrentWindow->parent ? - __glutCurrentWindow->parent->num + 1 : 0; - case GLUT_WINDOW_NUM_CHILDREN: - { - int num = 0; - GLUTwindow *children = __glutCurrentWindow->children; - - while (children) { - num++; - children = children->siblings; - } - return num; - } - case GLUT_WINDOW_NUM_SAMPLES: -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - if (__glutIsSupportedByGLX("GLX_SGIS_multisample")) { - GET_CONFIG(GLX_SAMPLES_SGIS); - return value; - } else { - return 0; - } -#else - /* Independent of GLX server support, multisampling not - supported by GLX client-side. */ - return 0; -#endif - case GLUT_WINDOW_STEREO: - GET_CONFIG(GLX_STEREO); - return value; - case GLUT_WINDOW_CURSOR: - return __glutCurrentWindow->cursor; - case GLUT_SCREEN_WIDTH: - return DisplayWidth(__glutDisplay, __glutScreen); - case GLUT_SCREEN_HEIGHT: - return DisplayHeight(__glutDisplay, __glutScreen); - case GLUT_SCREEN_WIDTH_MM: - return DisplayWidthMM(__glutDisplay, __glutScreen); - case GLUT_SCREEN_HEIGHT_MM: - return DisplayHeightMM(__glutDisplay, __glutScreen); - case GLUT_MENU_NUM_ITEMS: - return __glutCurrentMenu->num; - case GLUT_DISPLAY_MODE_POSSIBLE: - { - XVisualInfo *vi; - Bool dummy, visAlloced; - void *fbc; - -#if defined(_WIN32) - /* Our fake glXChooseVisual (which is called by - __glutDetermineVisual) needs an HDC to work with, so grab one - from the "root" window. */ - XHDC = GetDC(GetDesktopWindow()); -#endif - vi = __glutDetermineWindowVisual(&dummy, &visAlloced, &fbc); -#if defined(_WIN32) - ReleaseDC(GetDesktopWindow(), XHDC); -#endif - if (vi) { - if (visAlloced) - XFree(vi); - return 1; - } - return 0; - } - case GLUT_ELAPSED_TIME: - { - struct timeval elapsed, beginning, now; - - __glutInitTime(&beginning); - GETTIMEOFDAY(&now); - TIMEDELTA(elapsed, now, beginning); - /* Return elapsed milliseconds. */ -#if defined(__vms) && ( __VMS_VER < 70000000 ) - return (int) (elapsed.val / TICKS_PER_MILLISECOND); -#else - return (int) ((elapsed.tv_sec * 1000) + (elapsed.tv_usec / 1000)); -#endif - } - case GLUT_WINDOW_FORMAT_ID: -#if defined(_WIN32) - return GetPixelFormat(__glutCurrentWindow->hdc); -#else - if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { - return (int) __glutCurrentWindow->vis->visualid; - } else { - return (int) __glutCurrentWindow->overlay->vis->visualid; - } -#endif - default: - __glutWarning("invalid glutGet parameter: %d", param); - return -1; - } -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_glxext.c b/lib/glut-3.7.6/lib/glut/glut_glxext.c deleted file mode 100644 index a481617f583b197b85f8a7b38a972ae91270284c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_glxext.c +++ /dev/null @@ -1,48 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include "glutint.h" - -#if defined(GLX_VERSION_1_1) -int -__glutIsSupportedByGLX(char *extension) -{ - static const char *extensions = NULL; - const char *start; - char *where, *terminator; - int major, minor; - - glXQueryVersion(__glutDisplay, &major, &minor); - /* Be careful not to call glXQueryExtensionsString if it - looks like the server doesn't support GLX 1.1. - Unfortunately, the original GLX 1.0 didn't have the notion - of GLX extensions. */ - if ((major == 1 && minor >= 1) || (major > 1)) { - if (!extensions) - extensions = glXQueryExtensionsString(__glutDisplay, __glutScreen); - /* It takes a bit of care to be fool-proof about parsing - the GLX extensions string. Don't be fooled by - sub-strings, etc. */ - start = extensions; - for (;;) { - where = strstr(start, extension); - if (!where) - return 0; - terminator = where + strlen(extension); - if (where == start || *(where - 1) == ' ') { - if (*terminator == ' ' || *terminator == '\0') { - return 1; - } - } - start = terminator; - } - } - return 0; -} -#endif diff --git a/lib/glut-3.7.6/lib/glut/glut_hel10.c b/lib/glut-3.7.6/lib/glut/glut_hel10.c deleted file mode 100644 index 7d948297a360c326b7ccb7d0271b3ee1a69488f9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_hel10.c +++ /dev/null @@ -1,1778 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#define glutBitmapHelvetica10 XXX -#include "glutbitmap.h" -#undef glutBitmapHelvetica10 - -/* char: 0xff */ - -static const GLubyte ch255data[] = { -0x80,0x40,0x40,0x60,0xa0,0xa0,0x90,0x90,0x0,0x50, -}; - -static const BitmapCharRec ch255 = {4,10,0,2,5,ch255data}; - -/* char: 0xfe */ - -static const GLubyte ch254data[] = { -0x80,0x80,0xb0,0xc8,0x88,0x88,0xc8,0xb0,0x80,0x80, -}; - -static const BitmapCharRec ch254 = {5,10,0,2,6,ch254data}; - -/* char: 0xfd */ - -static const GLubyte ch253data[] = { -0x80,0x40,0x40,0x60,0xa0,0xa0,0x90,0x90,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch253 = {4,11,0,2,5,ch253data}; - -/* char: 0xfc */ - -static const GLubyte ch252data[] = { -0x70,0x90,0x90,0x90,0x90,0x90,0x0,0x50, -}; - -static const BitmapCharRec ch252 = {4,8,0,0,5,ch252data}; - -/* char: 0xfb */ - -static const GLubyte ch251data[] = { -0x70,0x90,0x90,0x90,0x90,0x90,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch251 = {4,9,0,0,5,ch251data}; - -/* char: 0xfa */ - -static const GLubyte ch250data[] = { -0x70,0x90,0x90,0x90,0x90,0x90,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch250 = {4,9,0,0,5,ch250data}; - -/* char: 0xf9 */ - -static const GLubyte ch249data[] = { -0x70,0x90,0x90,0x90,0x90,0x90,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch249 = {4,9,0,0,5,ch249data}; - -/* char: 0xf8 */ - -static const GLubyte ch248data[] = { -0x70,0x88,0xc8,0xa8,0x98,0x74, -}; - -static const BitmapCharRec ch248 = {6,6,0,0,6,ch248data}; - -/* char: 0xf7 */ - -static const GLubyte ch247data[] = { -0x20,0x0,0xf8,0x0,0x20, -}; - -static const BitmapCharRec ch247 = {5,5,0,-1,6,ch247data}; - -/* char: 0xf6 */ - -static const GLubyte ch246data[] = { -0x70,0x88,0x88,0x88,0x88,0x70,0x0,0x50, -}; - -static const BitmapCharRec ch246 = {5,8,0,0,6,ch246data}; - -/* char: 0xf5 */ - -static const GLubyte ch245data[] = { -0x70,0x88,0x88,0x88,0x88,0x70,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch245 = {5,9,0,0,6,ch245data}; - -/* char: 0xf4 */ - -static const GLubyte ch244data[] = { -0x70,0x88,0x88,0x88,0x88,0x70,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch244 = {5,9,0,0,6,ch244data}; - -/* char: 0xf3 */ - -static const GLubyte ch243data[] = { -0x70,0x88,0x88,0x88,0x88,0x70,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch243 = {5,9,0,0,6,ch243data}; - -/* char: 0xf2 */ - -static const GLubyte ch242data[] = { -0x70,0x88,0x88,0x88,0x88,0x70,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch242 = {5,9,0,0,6,ch242data}; - -/* char: 0xf1 */ - -static const GLubyte ch241data[] = { -0x90,0x90,0x90,0x90,0x90,0xe0,0x0,0xa0,0x50, -}; - -static const BitmapCharRec ch241 = {4,9,0,0,5,ch241data}; - -/* char: 0xf0 */ - -static const GLubyte ch240data[] = { -0x70,0x88,0x88,0x88,0x88,0x78,0x90,0x60,0x50, -}; - -static const BitmapCharRec ch240 = {5,9,0,0,6,ch240data}; - -/* char: 0xef */ - -static const GLubyte ch239data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0, -}; - -static const BitmapCharRec ch239 = {3,8,0,0,2,ch239data}; - -/* char: 0xee */ - -static const GLubyte ch238data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch238 = {3,9,1,0,2,ch238data}; - -/* char: 0xed */ - -static const GLubyte ch237data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x40, -}; - -static const BitmapCharRec ch237 = {2,9,0,0,2,ch237data}; - -/* char: 0xec */ - -static const GLubyte ch236data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch236 = {2,9,1,0,2,ch236data}; - -/* char: 0xeb */ - -static const GLubyte ch235data[] = { -0x60,0x90,0x80,0xf0,0x90,0x60,0x0,0x50, -}; - -static const BitmapCharRec ch235 = {4,8,0,0,5,ch235data}; - -/* char: 0xea */ - -static const GLubyte ch234data[] = { -0x60,0x90,0x80,0xf0,0x90,0x60,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch234 = {4,9,0,0,5,ch234data}; - -/* char: 0xe9 */ - -static const GLubyte ch233data[] = { -0x60,0x90,0x80,0xf0,0x90,0x60,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch233 = {4,9,0,0,5,ch233data}; - -/* char: 0xe8 */ - -static const GLubyte ch232data[] = { -0x60,0x90,0x80,0xf0,0x90,0x60,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch232 = {4,9,0,0,5,ch232data}; - -/* char: 0xe7 */ - -static const GLubyte ch231data[] = { -0x60,0x20,0x60,0x90,0x80,0x80,0x90,0x60, -}; - -static const BitmapCharRec ch231 = {4,8,0,2,5,ch231data}; - -/* char: 0xe6 */ - -static const GLubyte ch230data[] = { -0x6c,0x92,0x90,0x7e,0x12,0xec, -}; - -static const BitmapCharRec ch230 = {7,6,0,0,8,ch230data}; - -/* char: 0xe5 */ - -static const GLubyte ch229data[] = { -0x68,0x90,0x90,0x70,0x10,0xe0,0x20,0x50,0x20, -}; - -static const BitmapCharRec ch229 = {5,9,0,0,5,ch229data}; - -/* char: 0xe4 */ - -static const GLubyte ch228data[] = { -0x68,0x90,0x90,0x70,0x10,0xe0,0x0,0x50, -}; - -static const BitmapCharRec ch228 = {5,8,0,0,5,ch228data}; - -/* char: 0xe3 */ - -static const GLubyte ch227data[] = { -0x68,0x90,0x90,0x70,0x10,0xe0,0x0,0xa0,0x50, -}; - -static const BitmapCharRec ch227 = {5,9,0,0,5,ch227data}; - -/* char: 0xe2 */ - -static const GLubyte ch226data[] = { -0x68,0x90,0x90,0x70,0x10,0xe0,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch226 = {5,9,0,0,5,ch226data}; - -/* char: 0xe1 */ - -static const GLubyte ch225data[] = { -0x68,0x90,0x90,0x70,0x10,0xe0,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch225 = {5,9,0,0,5,ch225data}; - -/* char: 0xe0 */ - -static const GLubyte ch224data[] = { -0x68,0x90,0x90,0x70,0x10,0xe0,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch224 = {5,9,0,0,5,ch224data}; - -/* char: 0xdf */ - -static const GLubyte ch223data[] = { -0xa0,0x90,0x90,0x90,0xa0,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch223 = {4,8,0,0,5,ch223data}; - -/* char: 0xde */ - -static const GLubyte ch222data[] = { -0x80,0x80,0xf0,0x88,0x88,0xf0,0x80,0x80, -}; - -static const BitmapCharRec ch222 = {5,8,-1,0,7,ch222data}; - -/* char: 0xdd */ - -static const GLubyte ch221data[] = { -0x10,0x10,0x10,0x28,0x28,0x44,0x44,0x82,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch221 = {7,11,0,0,7,ch221data}; - -/* char: 0xdc */ - -static const GLubyte ch220data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x48, -}; - -static const BitmapCharRec ch220 = {6,10,-1,0,8,ch220data}; - -/* char: 0xdb */ - -static const GLubyte ch219data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch219 = {6,11,-1,0,8,ch219data}; - -/* char: 0xda */ - -static const GLubyte ch218data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch218 = {6,11,-1,0,8,ch218data}; - -/* char: 0xd9 */ - -static const GLubyte ch217data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch217 = {6,11,-1,0,8,ch217data}; - -/* char: 0xd8 */ - -static const GLubyte ch216data[] = { -0x80,0x78,0xc4,0xa4,0xa4,0x94,0x94,0x8c,0x78,0x4, -}; - -static const BitmapCharRec ch216 = {6,10,-1,1,8,ch216data}; - -/* char: 0xd7 */ - -static const GLubyte ch215data[] = { -0x88,0x50,0x20,0x50,0x88, -}; - -static const BitmapCharRec ch215 = {5,5,0,-1,6,ch215data}; - -/* char: 0xd6 */ - -static const GLubyte ch214data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x78,0x0,0x48, -}; - -static const BitmapCharRec ch214 = {6,10,-1,0,8,ch214data}; - -/* char: 0xd5 */ - -static const GLubyte ch213data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x78,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch213 = {6,11,-1,0,8,ch213data}; - -/* char: 0xd4 */ - -static const GLubyte ch212data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x78,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch212 = {6,11,-1,0,8,ch212data}; - -/* char: 0xd3 */ - -static const GLubyte ch211data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x78,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch211 = {6,11,-1,0,8,ch211data}; - -/* char: 0xd2 */ - -static const GLubyte ch210data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x78,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch210 = {6,11,-1,0,8,ch210data}; - -/* char: 0xd1 */ - -static const GLubyte ch209data[] = { -0x8c,0x8c,0x94,0x94,0xa4,0xa4,0xc4,0xc4,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch209 = {6,11,-1,0,8,ch209data}; - -/* char: 0xd0 */ - -static const GLubyte ch208data[] = { -0x78,0x44,0x42,0x42,0xf2,0x42,0x44,0x78, -}; - -static const BitmapCharRec ch208 = {7,8,0,0,8,ch208data}; - -/* char: 0xcf */ - -static const GLubyte ch207data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0, -}; - -static const BitmapCharRec ch207 = {3,10,0,0,3,ch207data}; - -/* char: 0xce */ - -static const GLubyte ch206data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch206 = {3,11,0,0,3,ch206data}; - -/* char: 0xcd */ - -static const GLubyte ch205data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x40, -}; - -static const BitmapCharRec ch205 = {2,11,-1,0,3,ch205data}; - -/* char: 0xcc */ - -static const GLubyte ch204data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch204 = {2,11,0,0,3,ch204data}; - -/* char: 0xcb */ - -static const GLubyte ch203data[] = { -0xf8,0x80,0x80,0x80,0xf8,0x80,0x80,0xf8,0x0,0x50, -}; - -static const BitmapCharRec ch203 = {5,10,-1,0,7,ch203data}; - -/* char: 0xca */ - -static const GLubyte ch202data[] = { -0xf8,0x80,0x80,0xf8,0x80,0x80,0x80,0xf8,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch202 = {5,11,-1,0,7,ch202data}; - -/* char: 0xc9 */ - -static const GLubyte ch201data[] = { -0xf8,0x80,0x80,0x80,0xf8,0x80,0x80,0xf8,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch201 = {5,11,-1,0,7,ch201data}; - -/* char: 0xc8 */ - -static const GLubyte ch200data[] = { -0xf8,0x80,0x80,0x80,0xf8,0x80,0x80,0xf8,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch200 = {5,11,-1,0,7,ch200data}; - -/* char: 0xc7 */ - -static const GLubyte ch199data[] = { -0x30,0x10,0x78,0x84,0x80,0x80,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch199 = {6,10,-1,2,8,ch199data}; - -/* char: 0xc6 */ - -static const GLubyte ch198data[] = { -0x8f,0x80,0x88,0x0,0x78,0x0,0x48,0x0,0x2f,0x80,0x28,0x0,0x18,0x0,0x1f,0x80, -}; - -static const BitmapCharRec ch198 = {9,8,0,0,10,ch198data}; - -/* char: 0xc5 */ - -static const GLubyte ch197data[] = { -0x82,0x82,0x7c,0x44,0x28,0x28,0x10,0x10,0x10,0x28,0x10, -}; - -static const BitmapCharRec ch197 = {7,11,0,0,7,ch197data}; - -/* char: 0xc4 */ - -static const GLubyte ch196data[] = { -0x82,0x82,0x7c,0x44,0x28,0x28,0x10,0x10,0x0,0x28, -}; - -static const BitmapCharRec ch196 = {7,10,0,0,7,ch196data}; - -/* char: 0xc3 */ - -static const GLubyte ch195data[] = { -0x82,0x82,0x7c,0x44,0x28,0x28,0x10,0x10,0x0,0x28,0x14, -}; - -static const BitmapCharRec ch195 = {7,11,0,0,7,ch195data}; - -/* char: 0xc2 */ - -static const GLubyte ch194data[] = { -0x82,0x82,0x7c,0x44,0x28,0x28,0x10,0x10,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch194 = {7,11,0,0,7,ch194data}; - -/* char: 0xc1 */ - -static const GLubyte ch193data[] = { -0x82,0x82,0x7c,0x44,0x28,0x28,0x10,0x10,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch193 = {7,11,0,0,7,ch193data}; - -/* char: 0xc0 */ - -static const GLubyte ch192data[] = { -0x82,0x82,0x7c,0x44,0x28,0x28,0x10,0x10,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch192 = {7,11,0,0,7,ch192data}; - -/* char: 0xbf */ - -static const GLubyte ch191data[] = { -0x60,0x90,0x80,0x40,0x20,0x20,0x0,0x20, -}; - -static const BitmapCharRec ch191 = {4,8,-1,2,6,ch191data}; - -/* char: 0xbe */ - -static const GLubyte ch190data[] = { -0x21,0x0,0x17,0x80,0x13,0x0,0x9,0x0,0xc8,0x0,0x24,0x0,0x44,0x0,0xe2,0x0, -}; - -static const BitmapCharRec ch190 = {9,8,0,0,9,ch190data}; - -/* char: 0xbd */ - -static const GLubyte ch189data[] = { -0x27,0x12,0x15,0xb,0x48,0x44,0xc4,0x42, -}; - -static const BitmapCharRec ch189 = {8,8,0,0,9,ch189data}; - -/* char: 0xbc */ - -static const GLubyte ch188data[] = { -0x21,0x0,0x17,0x80,0x13,0x0,0x9,0x0,0x48,0x0,0x44,0x0,0xc4,0x0,0x42,0x0, -}; - -static const BitmapCharRec ch188 = {9,8,0,0,9,ch188data}; - -/* char: 0xbb */ - -static const GLubyte ch187data[] = { -0xa0,0x50,0x28,0x50,0xa0, -}; - -static const BitmapCharRec ch187 = {5,5,0,0,6,ch187data}; - -/* char: 0xba */ - -static const GLubyte ch186data[] = { -0xe0,0x0,0xe0,0xa0,0xe0, -}; - -static const BitmapCharRec ch186 = {3,5,0,-3,4,ch186data}; - -/* char: 0xb9 */ - -static const GLubyte ch185data[] = { -0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch185 = {2,4,0,-3,3,ch185data}; - -/* char: 0xb8 */ - -static const GLubyte ch184data[] = { -0xc0,0x40, -}; - -static const BitmapCharRec ch184 = {2,2,0,2,3,ch184data}; - -/* char: 0xb7 */ - -static const GLubyte ch183data[] = { -0xc0, -}; - -static const BitmapCharRec ch183 = {2,1,0,-3,3,ch183data}; - -/* char: 0xb6 */ - -static const GLubyte ch182data[] = { -0x28,0x28,0x28,0x28,0x28,0x68,0xe8,0xe8,0xe8,0x7c, -}; - -static const BitmapCharRec ch182 = {6,10,0,2,6,ch182data}; - -/* char: 0xb5 */ - -static const GLubyte ch181data[] = { -0x80,0x80,0xf0,0x90,0x90,0x90,0x90,0x90, -}; - -static const BitmapCharRec ch181 = {4,8,0,2,5,ch181data}; - -/* char: 0xb4 */ - -static const GLubyte ch180data[] = { -0x80,0x40, -}; - -static const BitmapCharRec ch180 = {2,2,0,-6,3,ch180data}; - -/* char: 0xb3 */ - -static const GLubyte ch179data[] = { -0xc0,0x20,0x40,0xe0, -}; - -static const BitmapCharRec ch179 = {3,4,0,-3,3,ch179data}; - -/* char: 0xb2 */ - -static const GLubyte ch178data[] = { -0xe0,0x40,0xa0,0x60, -}; - -static const BitmapCharRec ch178 = {3,4,0,-3,3,ch178data}; - -/* char: 0xb1 */ - -static const GLubyte ch177data[] = { -0xf8,0x0,0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch177 = {5,7,0,0,6,ch177data}; - -/* char: 0xb0 */ - -static const GLubyte ch176data[] = { -0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch176 = {4,4,0,-3,4,ch176data}; - -/* char: 0xaf */ - -static const GLubyte ch175data[] = { -0xe0, -}; - -static const BitmapCharRec ch175 = {3,1,0,-7,3,ch175data}; - -/* char: 0xae */ - -static const GLubyte ch174data[] = { -0x38,0x44,0xaa,0xb2,0xba,0x44,0x38, -}; - -static const BitmapCharRec ch174 = {7,7,-1,0,9,ch174data}; - -/* char: 0xad */ - -static const GLubyte ch173data[] = { -0xe0, -}; - -static const BitmapCharRec ch173 = {3,1,0,-3,4,ch173data}; - -/* char: 0xac */ - -static const GLubyte ch172data[] = { -0x8,0x8,0xf8, -}; - -static const BitmapCharRec ch172 = {5,3,-1,-2,7,ch172data}; - -/* char: 0xab */ - -static const GLubyte ch171data[] = { -0x28,0x50,0xa0,0x50,0x28, -}; - -static const BitmapCharRec ch171 = {5,5,0,0,6,ch171data}; - -/* char: 0xaa */ - -static const GLubyte ch170data[] = { -0xe0,0x0,0xa0,0x20,0xe0, -}; - -static const BitmapCharRec ch170 = {3,5,0,-3,4,ch170data}; - -/* char: 0xa9 */ - -static const GLubyte ch169data[] = { -0x38,0x44,0x9a,0xa2,0x9a,0x44,0x38, -}; - -static const BitmapCharRec ch169 = {7,7,-1,0,9,ch169data}; - -/* char: 0xa8 */ - -static const GLubyte ch168data[] = { -0xa0, -}; - -static const BitmapCharRec ch168 = {3,1,0,-7,3,ch168data}; - -/* char: 0xa7 */ - -static const GLubyte ch167data[] = { -0x70,0x88,0x18,0x70,0xc8,0x98,0x70,0xc0,0x88,0x70, -}; - -static const BitmapCharRec ch167 = {5,10,0,2,6,ch167data}; - -/* char: 0xa6 */ - -static const GLubyte ch166data[] = { -0x80,0x80,0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch166 = {1,10,-1,2,3,ch166data}; - -/* char: 0xa5 */ - -static const GLubyte ch165data[] = { -0x20,0xf8,0x20,0xf8,0x50,0x50,0x88,0x88, -}; - -static const BitmapCharRec ch165 = {5,8,0,0,6,ch165data}; - -/* char: 0xa4 */ - -static const GLubyte ch164data[] = { -0x90,0x60,0x90,0x90,0x60,0x90, -}; - -static const BitmapCharRec ch164 = {4,6,0,-1,5,ch164data}; - -/* char: 0xa3 */ - -static const GLubyte ch163data[] = { -0xb0,0x48,0x40,0x40,0xe0,0x40,0x48,0x30, -}; - -static const BitmapCharRec ch163 = {5,8,0,0,6,ch163data}; - -/* char: 0xa2 */ - -static const GLubyte ch162data[] = { -0x40,0x70,0xa8,0xa0,0xa0,0xa8,0x70,0x10, -}; - -static const BitmapCharRec ch162 = {5,8,0,1,6,ch162data}; - -/* char: 0xa1 */ - -static const GLubyte ch161data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80, -}; - -static const BitmapCharRec ch161 = {1,8,-1,2,3,ch161data}; - -/* char: 0xa0 */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch160data[] = { 0x0 }; -static const BitmapCharRec ch160 = {1,1,0,0,3,ch160data}; -#else -static const BitmapCharRec ch160 = {0,0,0,0,3,0}; -#endif - -/* char: 0x7e '~' */ - -static const GLubyte ch126data[] = { -0x98,0x64, -}; - -static const BitmapCharRec ch126 = {6,2,0,-3,7,ch126data}; - -/* char: 0x7d '}' */ - -static const GLubyte ch125data[] = { -0x80,0x40,0x40,0x40,0x40,0x20,0x40,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch125 = {3,10,0,2,3,ch125data}; - -/* char: 0x7c '|' */ - -static const GLubyte ch124data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch124 = {1,10,-1,2,3,ch124data}; - -/* char: 0x7b '{' */ - -static const GLubyte ch123data[] = { -0x20,0x40,0x40,0x40,0x40,0x80,0x40,0x40,0x40,0x20, -}; - -static const BitmapCharRec ch123 = {3,10,0,2,3,ch123data}; - -/* char: 0x7a 'z' */ - -static const GLubyte ch122data[] = { -0xf0,0x80,0x40,0x20,0x10,0xf0, -}; - -static const BitmapCharRec ch122 = {4,6,0,0,5,ch122data}; - -/* char: 0x79 'y' */ - -static const GLubyte ch121data[] = { -0x80,0x40,0x40,0x60,0xa0,0xa0,0x90,0x90, -}; - -static const BitmapCharRec ch121 = {4,8,0,2,5,ch121data}; - -/* char: 0x78 'x' */ - -static const GLubyte ch120data[] = { -0x88,0x88,0x50,0x20,0x50,0x88, -}; - -static const BitmapCharRec ch120 = {5,6,0,0,6,ch120data}; - -/* char: 0x77 'w' */ - -static const GLubyte ch119data[] = { -0x28,0x28,0x54,0x54,0x92,0x92, -}; - -static const BitmapCharRec ch119 = {7,6,0,0,8,ch119data}; - -/* char: 0x76 'v' */ - -static const GLubyte ch118data[] = { -0x20,0x20,0x50,0x50,0x88,0x88, -}; - -static const BitmapCharRec ch118 = {5,6,0,0,6,ch118data}; - -/* char: 0x75 'u' */ - -static const GLubyte ch117data[] = { -0x70,0x90,0x90,0x90,0x90,0x90, -}; - -static const BitmapCharRec ch117 = {4,6,0,0,5,ch117data}; - -/* char: 0x74 't' */ - -static const GLubyte ch116data[] = { -0x60,0x40,0x40,0x40,0x40,0xe0,0x40,0x40, -}; - -static const BitmapCharRec ch116 = {3,8,0,0,4,ch116data}; - -/* char: 0x73 's' */ - -static const GLubyte ch115data[] = { -0x60,0x90,0x10,0x60,0x90,0x60, -}; - -static const BitmapCharRec ch115 = {4,6,0,0,5,ch115data}; - -/* char: 0x72 'r' */ - -static const GLubyte ch114data[] = { -0x80,0x80,0x80,0x80,0xc0,0xa0, -}; - -static const BitmapCharRec ch114 = {3,6,0,0,4,ch114data}; - -/* char: 0x71 'q' */ - -static const GLubyte ch113data[] = { -0x8,0x8,0x68,0x98,0x88,0x88,0x98,0x68, -}; - -static const BitmapCharRec ch113 = {5,8,0,2,6,ch113data}; - -/* char: 0x70 'p' */ - -static const GLubyte ch112data[] = { -0x80,0x80,0xb0,0xc8,0x88,0x88,0xc8,0xb0, -}; - -static const BitmapCharRec ch112 = {5,8,0,2,6,ch112data}; - -/* char: 0x6f 'o' */ - -static const GLubyte ch111data[] = { -0x70,0x88,0x88,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch111 = {5,6,0,0,6,ch111data}; - -/* char: 0x6e 'n' */ - -static const GLubyte ch110data[] = { -0x88,0x88,0x88,0x88,0xc8,0xb0, -}; - -static const BitmapCharRec ch110 = {5,6,0,0,6,ch110data}; - -/* char: 0x6d 'm' */ - -static const GLubyte ch109data[] = { -0x92,0x92,0x92,0x92,0x92,0xec, -}; - -static const BitmapCharRec ch109 = {7,6,0,0,8,ch109data}; - -/* char: 0x6c 'l' */ - -static const GLubyte ch108data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch108 = {1,8,0,0,2,ch108data}; - -/* char: 0x6b 'k' */ - -static const GLubyte ch107data[] = { -0x90,0x90,0xa0,0xc0,0xa0,0x90,0x80,0x80, -}; - -static const BitmapCharRec ch107 = {4,8,0,0,5,ch107data}; - -/* char: 0x6a 'j' */ - -static const GLubyte ch106data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80, -}; - -static const BitmapCharRec ch106 = {1,9,0,1,2,ch106data}; - -/* char: 0x69 'i' */ - -static const GLubyte ch105data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80, -}; - -static const BitmapCharRec ch105 = {1,8,0,0,2,ch105data}; - -/* char: 0x68 'h' */ - -static const GLubyte ch104data[] = { -0x88,0x88,0x88,0x88,0xc8,0xb0,0x80,0x80, -}; - -static const BitmapCharRec ch104 = {5,8,0,0,6,ch104data}; - -/* char: 0x67 'g' */ - -static const GLubyte ch103data[] = { -0x70,0x8,0x68,0x98,0x88,0x88,0x98,0x68, -}; - -static const BitmapCharRec ch103 = {5,8,0,2,6,ch103data}; - -/* char: 0x66 'f' */ - -static const GLubyte ch102data[] = { -0x40,0x40,0x40,0x40,0x40,0xe0,0x40,0x30, -}; - -static const BitmapCharRec ch102 = {4,8,0,0,4,ch102data}; - -/* char: 0x65 'e' */ - -static const GLubyte ch101data[] = { -0x60,0x90,0x80,0xf0,0x90,0x60, -}; - -static const BitmapCharRec ch101 = {4,6,0,0,5,ch101data}; - -/* char: 0x64 'd' */ - -static const GLubyte ch100data[] = { -0x68,0x98,0x88,0x88,0x98,0x68,0x8,0x8, -}; - -static const BitmapCharRec ch100 = {5,8,0,0,6,ch100data}; - -/* char: 0x63 'c' */ - -static const GLubyte ch99data[] = { -0x60,0x90,0x80,0x80,0x90,0x60, -}; - -static const BitmapCharRec ch99 = {4,6,0,0,5,ch99data}; - -/* char: 0x62 'b' */ - -static const GLubyte ch98data[] = { -0xb0,0xc8,0x88,0x88,0xc8,0xb0,0x80,0x80, -}; - -static const BitmapCharRec ch98 = {5,8,0,0,6,ch98data}; - -/* char: 0x61 'a' */ - -static const GLubyte ch97data[] = { -0x68,0x90,0x90,0x70,0x10,0xe0, -}; - -static const BitmapCharRec ch97 = {5,6,0,0,5,ch97data}; - -/* char: 0x60 '`' */ - -static const GLubyte ch96data[] = { -0x80,0x80,0x40, -}; - -static const BitmapCharRec ch96 = {2,3,0,-5,3,ch96data}; - -/* char: 0x5f '_' */ - -static const GLubyte ch95data[] = { -0xfc, -}; - -static const BitmapCharRec ch95 = {6,1,0,2,6,ch95data}; - -/* char: 0x5e '^' */ - -static const GLubyte ch94data[] = { -0x88,0x50,0x50,0x20,0x20, -}; - -static const BitmapCharRec ch94 = {5,5,0,-3,6,ch94data}; - -/* char: 0x5d ']' */ - -static const GLubyte ch93data[] = { -0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0, -}; - -static const BitmapCharRec ch93 = {2,10,0,2,3,ch93data}; - -/* char: 0x5c '\' */ - -static const GLubyte ch92data[] = { -0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80, -}; - -static const BitmapCharRec ch92 = {3,8,0,0,3,ch92data}; - -/* char: 0x5b '[' */ - -static const GLubyte ch91data[] = { -0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xc0, -}; - -static const BitmapCharRec ch91 = {2,10,-1,2,3,ch91data}; - -/* char: 0x5a 'Z' */ - -static const GLubyte ch90data[] = { -0xf8,0x80,0x40,0x20,0x20,0x10,0x8,0xf8, -}; - -static const BitmapCharRec ch90 = {5,8,-1,0,7,ch90data}; - -/* char: 0x59 'Y' */ - -static const GLubyte ch89data[] = { -0x10,0x10,0x10,0x28,0x28,0x44,0x44,0x82, -}; - -static const BitmapCharRec ch89 = {7,8,0,0,7,ch89data}; - -/* char: 0x58 'X' */ - -static const GLubyte ch88data[] = { -0x88,0x88,0x50,0x50,0x20,0x50,0x88,0x88, -}; - -static const BitmapCharRec ch88 = {5,8,-1,0,7,ch88data}; - -/* char: 0x57 'W' */ - -static const GLubyte ch87data[] = { -0x22,0x0,0x22,0x0,0x22,0x0,0x55,0x0,0x49,0x0,0x49,0x0,0x88,0x80,0x88,0x80, -}; - -static const BitmapCharRec ch87 = {9,8,0,0,9,ch87data}; - -/* char: 0x56 'V' */ - -static const GLubyte ch86data[] = { -0x10,0x28,0x28,0x44,0x44,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch86 = {7,8,0,0,7,ch86data}; - -/* char: 0x55 'U' */ - -static const GLubyte ch85data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch85 = {6,8,-1,0,8,ch85data}; - -/* char: 0x54 'T' */ - -static const GLubyte ch84data[] = { -0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf8, -}; - -static const BitmapCharRec ch84 = {5,8,0,0,5,ch84data}; - -/* char: 0x53 'S' */ - -static const GLubyte ch83data[] = { -0x70,0x88,0x88,0x8,0x70,0x80,0x88,0x70, -}; - -static const BitmapCharRec ch83 = {5,8,-1,0,7,ch83data}; - -/* char: 0x52 'R' */ - -static const GLubyte ch82data[] = { -0x88,0x88,0x88,0x88,0xf0,0x88,0x88,0xf0, -}; - -static const BitmapCharRec ch82 = {5,8,-1,0,7,ch82data}; - -/* char: 0x51 'Q' */ - -static const GLubyte ch81data[] = { -0x2,0x7c,0x8c,0x94,0x84,0x84,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch81 = {7,9,-1,1,8,ch81data}; - -/* char: 0x50 'P' */ - -static const GLubyte ch80data[] = { -0x80,0x80,0x80,0x80,0xf0,0x88,0x88,0xf0, -}; - -static const BitmapCharRec ch80 = {5,8,-1,0,7,ch80data}; - -/* char: 0x4f 'O' */ - -static const GLubyte ch79data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x78, -}; - -static const BitmapCharRec ch79 = {6,8,-1,0,8,ch79data}; - -/* char: 0x4e 'N' */ - -static const GLubyte ch78data[] = { -0x8c,0x8c,0x94,0x94,0xa4,0xa4,0xc4,0xc4, -}; - -static const BitmapCharRec ch78 = {6,8,-1,0,8,ch78data}; - -/* char: 0x4d 'M' */ - -static const GLubyte ch77data[] = { -0x92,0x92,0x92,0xaa,0xaa,0xc6,0xc6,0x82, -}; - -static const BitmapCharRec ch77 = {7,8,-1,0,9,ch77data}; - -/* char: 0x4c 'L' */ - -static const GLubyte ch76data[] = { -0xf0,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch76 = {4,8,-1,0,6,ch76data}; - -/* char: 0x4b 'K' */ - -static const GLubyte ch75data[] = { -0x88,0x88,0x90,0x90,0xe0,0xa0,0x90,0x88, -}; - -static const BitmapCharRec ch75 = {5,8,-1,0,7,ch75data}; - -/* char: 0x4a 'J' */ - -static const GLubyte ch74data[] = { -0x60,0x90,0x10,0x10,0x10,0x10,0x10,0x10, -}; - -static const BitmapCharRec ch74 = {4,8,0,0,5,ch74data}; - -/* char: 0x49 'I' */ - -static const GLubyte ch73data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch73 = {1,8,-1,0,3,ch73data}; - -/* char: 0x48 'H' */ - -static const GLubyte ch72data[] = { -0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch72 = {6,8,-1,0,8,ch72data}; - -/* char: 0x47 'G' */ - -static const GLubyte ch71data[] = { -0x74,0x8c,0x84,0x8c,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch71 = {6,8,-1,0,8,ch71data}; - -/* char: 0x46 'F' */ - -static const GLubyte ch70data[] = { -0x80,0x80,0x80,0x80,0xf0,0x80,0x80,0xf8, -}; - -static const BitmapCharRec ch70 = {5,8,-1,0,6,ch70data}; - -/* char: 0x45 'E' */ - -static const GLubyte ch69data[] = { -0xf8,0x80,0x80,0x80,0xf8,0x80,0x80,0xf8, -}; - -static const BitmapCharRec ch69 = {5,8,-1,0,7,ch69data}; - -/* char: 0x44 'D' */ - -static const GLubyte ch68data[] = { -0xf0,0x88,0x84,0x84,0x84,0x84,0x88,0xf0, -}; - -static const BitmapCharRec ch68 = {6,8,-1,0,8,ch68data}; - -/* char: 0x43 'C' */ - -static const GLubyte ch67data[] = { -0x78,0x84,0x80,0x80,0x80,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch67 = {6,8,-1,0,8,ch67data}; - -/* char: 0x42 'B' */ - -static const GLubyte ch66data[] = { -0xf0,0x88,0x88,0x88,0xf0,0x88,0x88,0xf0, -}; - -static const BitmapCharRec ch66 = {5,8,-1,0,7,ch66data}; - -/* char: 0x41 'A' */ - -static const GLubyte ch65data[] = { -0x82,0x82,0x7c,0x44,0x28,0x28,0x10,0x10, -}; - -static const BitmapCharRec ch65 = {7,8,0,0,7,ch65data}; - -/* char: 0x40 '@' */ - -static const GLubyte ch64data[] = { -0x3e,0x0,0x40,0x0,0x9b,0x0,0xa4,0x80,0xa4,0x80,0xa2,0x40,0x92,0x40,0x4d,0x40, -0x20,0x80,0x1f,0x0, -}; - -static const BitmapCharRec ch64 = {10,10,0,2,11,ch64data}; - -/* char: 0x3f '?' */ - -static const GLubyte ch63data[] = { -0x40,0x0,0x40,0x40,0x20,0x10,0x90,0x60, -}; - -static const BitmapCharRec ch63 = {4,8,-1,0,6,ch63data}; - -/* char: 0x3e '>' */ - -static const GLubyte ch62data[] = { -0x80,0x40,0x20,0x40,0x80, -}; - -static const BitmapCharRec ch62 = {3,5,-1,-1,6,ch62data}; - -/* char: 0x3d '=' */ - -static const GLubyte ch61data[] = { -0xf0,0x0,0xf0, -}; - -static const BitmapCharRec ch61 = {4,3,0,-2,5,ch61data}; - -/* char: 0x3c '<' */ - -static const GLubyte ch60data[] = { -0x20,0x40,0x80,0x40,0x20, -}; - -static const BitmapCharRec ch60 = {3,5,-1,-1,6,ch60data}; - -/* char: 0x3b ';' */ - -static const GLubyte ch59data[] = { -0x80,0x40,0x40,0x0,0x0,0x0,0x0,0x40, -}; - -static const BitmapCharRec ch59 = {2,8,0,2,3,ch59data}; - -/* char: 0x3a ':' */ - -static const GLubyte ch58data[] = { -0x80,0x0,0x0,0x0,0x0,0x80, -}; - -static const BitmapCharRec ch58 = {1,6,-1,0,3,ch58data}; - -/* char: 0x39 '9' */ - -static const GLubyte ch57data[] = { -0x70,0x88,0x8,0x68,0x98,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch57 = {5,8,0,0,6,ch57data}; - -/* char: 0x38 '8' */ - -static const GLubyte ch56data[] = { -0x70,0x88,0x88,0x88,0x70,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch56 = {5,8,0,0,6,ch56data}; - -/* char: 0x37 '7' */ - -static const GLubyte ch55data[] = { -0x40,0x40,0x20,0x20,0x10,0x10,0x8,0xf8, -}; - -static const BitmapCharRec ch55 = {5,8,0,0,6,ch55data}; - -/* char: 0x36 '6' */ - -static const GLubyte ch54data[] = { -0x70,0x88,0x88,0xc8,0xb0,0x80,0x88,0x70, -}; - -static const BitmapCharRec ch54 = {5,8,0,0,6,ch54data}; - -/* char: 0x35 '5' */ - -static const GLubyte ch53data[] = { -0x70,0x88,0x8,0x8,0xf0,0x80,0x80,0xf8, -}; - -static const BitmapCharRec ch53 = {5,8,0,0,6,ch53data}; - -/* char: 0x34 '4' */ - -static const GLubyte ch52data[] = { -0x10,0x10,0xf8,0x90,0x50,0x50,0x30,0x10, -}; - -static const BitmapCharRec ch52 = {5,8,0,0,6,ch52data}; - -/* char: 0x33 '3' */ - -static const GLubyte ch51data[] = { -0x70,0x88,0x8,0x8,0x30,0x8,0x88,0x70, -}; - -static const BitmapCharRec ch51 = {5,8,0,0,6,ch51data}; - -/* char: 0x32 '2' */ - -static const GLubyte ch50data[] = { -0xf8,0x80,0x40,0x30,0x8,0x8,0x88,0x70, -}; - -static const BitmapCharRec ch50 = {5,8,0,0,6,ch50data}; - -/* char: 0x31 '1' */ - -static const GLubyte ch49data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch49 = {2,8,-1,0,6,ch49data}; - -/* char: 0x30 '0' */ - -static const GLubyte ch48data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch48 = {5,8,0,0,6,ch48data}; - -/* char: 0x2f '/' */ - -static const GLubyte ch47data[] = { -0x80,0x80,0x40,0x40,0x40,0x40,0x20,0x20, -}; - -static const BitmapCharRec ch47 = {3,8,0,0,3,ch47data}; - -/* char: 0x2e '.' */ - -static const GLubyte ch46data[] = { -0x80, -}; - -static const BitmapCharRec ch46 = {1,1,-1,0,3,ch46data}; - -/* char: 0x2d '-' */ - -static const GLubyte ch45data[] = { -0xf8, -}; - -static const BitmapCharRec ch45 = {5,1,-1,-3,7,ch45data}; - -/* char: 0x2c ',' */ - -static const GLubyte ch44data[] = { -0x80,0x40,0x40, -}; - -static const BitmapCharRec ch44 = {2,3,0,2,3,ch44data}; - -/* char: 0x2b '+' */ - -static const GLubyte ch43data[] = { -0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch43 = {5,5,0,-1,6,ch43data}; - -/* char: 0x2a '*' */ - -static const GLubyte ch42data[] = { -0xa0,0x40,0xa0, -}; - -static const BitmapCharRec ch42 = {3,3,0,-5,4,ch42data}; - -/* char: 0x29 ')' */ - -static const GLubyte ch41data[] = { -0x80,0x40,0x40,0x20,0x20,0x20,0x20,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch41 = {3,10,-1,2,4,ch41data}; - -/* char: 0x28 '(' */ - -static const GLubyte ch40data[] = { -0x20,0x40,0x40,0x80,0x80,0x80,0x80,0x40,0x40,0x20, -}; - -static const BitmapCharRec ch40 = {3,10,0,2,4,ch40data}; - -/* char: 0x27 ''' */ - -static const GLubyte ch39data[] = { -0x80,0x40,0x40, -}; - -static const BitmapCharRec ch39 = {2,3,-1,-5,3,ch39data}; - -/* char: 0x26 '&' */ - -static const GLubyte ch38data[] = { -0x64,0x98,0x98,0xa4,0x60,0x50,0x50,0x20, -}; - -static const BitmapCharRec ch38 = {6,8,-1,0,8,ch38data}; - -/* char: 0x25 '%' */ - -static const GLubyte ch37data[] = { -0x26,0x29,0x16,0x10,0x8,0x68,0x94,0x64, -}; - -static const BitmapCharRec ch37 = {8,8,0,0,9,ch37data}; - -/* char: 0x24 '$' */ - -static const GLubyte ch36data[] = { -0x20,0x70,0xa8,0x28,0x70,0xa0,0xa8,0x70,0x20, -}; - -static const BitmapCharRec ch36 = {5,9,0,1,6,ch36data}; - -/* char: 0x23 '#' */ - -static const GLubyte ch35data[] = { -0x50,0x50,0xf8,0x28,0x7c,0x28,0x28, -}; - -static const BitmapCharRec ch35 = {6,7,0,0,6,ch35data}; - -/* char: 0x22 '"' */ - -static const GLubyte ch34data[] = { -0xa0,0xa0, -}; - -static const BitmapCharRec ch34 = {3,2,-1,-6,4,ch34data}; - -/* char: 0x21 '!' */ - -static const GLubyte ch33data[] = { -0x80,0x0,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch33 = {1,8,-1,0,3,ch33data}; - -/* char: 0x20 ' ' */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch32data[] = { 0x0 }; -static const BitmapCharRec ch32 = {0,0,0,0,3,ch32data}; -#else -static const BitmapCharRec ch32 = {0,0,0,0,3,0}; -#endif - -static const BitmapCharRec * const chars[] = { -&ch32, -&ch33, -&ch34, -&ch35, -&ch36, -&ch37, -&ch38, -&ch39, -&ch40, -&ch41, -&ch42, -&ch43, -&ch44, -&ch45, -&ch46, -&ch47, -&ch48, -&ch49, -&ch50, -&ch51, -&ch52, -&ch53, -&ch54, -&ch55, -&ch56, -&ch57, -&ch58, -&ch59, -&ch60, -&ch61, -&ch62, -&ch63, -&ch64, -&ch65, -&ch66, -&ch67, -&ch68, -&ch69, -&ch70, -&ch71, -&ch72, -&ch73, -&ch74, -&ch75, -&ch76, -&ch77, -&ch78, -&ch79, -&ch80, -&ch81, -&ch82, -&ch83, -&ch84, -&ch85, -&ch86, -&ch87, -&ch88, -&ch89, -&ch90, -&ch91, -&ch92, -&ch93, -&ch94, -&ch95, -&ch96, -&ch97, -&ch98, -&ch99, -&ch100, -&ch101, -&ch102, -&ch103, -&ch104, -&ch105, -&ch106, -&ch107, -&ch108, -&ch109, -&ch110, -&ch111, -&ch112, -&ch113, -&ch114, -&ch115, -&ch116, -&ch117, -&ch118, -&ch119, -&ch120, -&ch121, -&ch122, -&ch123, -&ch124, -&ch125, -&ch126, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -&ch160, -&ch161, -&ch162, -&ch163, -&ch164, -&ch165, -&ch166, -&ch167, -&ch168, -&ch169, -&ch170, -&ch171, -&ch172, -&ch173, -&ch174, -&ch175, -&ch176, -&ch177, -&ch178, -&ch179, -&ch180, -&ch181, -&ch182, -&ch183, -&ch184, -&ch185, -&ch186, -&ch187, -&ch188, -&ch189, -&ch190, -&ch191, -&ch192, -&ch193, -&ch194, -&ch195, -&ch196, -&ch197, -&ch198, -&ch199, -&ch200, -&ch201, -&ch202, -&ch203, -&ch204, -&ch205, -&ch206, -&ch207, -&ch208, -&ch209, -&ch210, -&ch211, -&ch212, -&ch213, -&ch214, -&ch215, -&ch216, -&ch217, -&ch218, -&ch219, -&ch220, -&ch221, -&ch222, -&ch223, -&ch224, -&ch225, -&ch226, -&ch227, -&ch228, -&ch229, -&ch230, -&ch231, -&ch232, -&ch233, -&ch234, -&ch235, -&ch236, -&ch237, -&ch238, -&ch239, -&ch240, -&ch241, -&ch242, -&ch243, -&ch244, -&ch245, -&ch246, -&ch247, -&ch248, -&ch249, -&ch250, -&ch251, -&ch252, -&ch253, -&ch254, -&ch255, -}; - -const BitmapFontRec glutBitmapHelvetica10 = { -"-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1", -224, -32, -chars -}; - diff --git a/lib/glut-3.7.6/lib/glut/glut_hel12.c b/lib/glut-3.7.6/lib/glut/glut_hel12.c deleted file mode 100644 index 1760c5b1158263f266883b01fde9a78e562d90e8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_hel12.c +++ /dev/null @@ -1,1788 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#define glutBitmapHelvetica12 XXX -#include "glutbitmap.h" -#undef glutBitmapHelvetica12 - -/* char: 0xff */ - -static const GLubyte ch255data[] = { -0xc0,0x20,0x20,0x20,0x30,0x50,0x50,0x48,0x88,0x88,0x0,0x50, -}; - -static const BitmapCharRec ch255 = {5,12,-1,3,7,ch255data}; - -/* char: 0xfe */ - -static const GLubyte ch254data[] = { -0x80,0x80,0x80,0xb0,0xc8,0x88,0x88,0x88,0xc8,0xb0,0x80,0x80, -}; - -static const BitmapCharRec ch254 = {5,12,-1,3,7,ch254data}; - -/* char: 0xfd */ - -static const GLubyte ch253data[] = { -0x80,0x40,0x20,0x20,0x50,0x50,0x90,0x88,0x88,0x88,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch253 = {5,13,-1,3,7,ch253data}; - -/* char: 0xfc */ - -static const GLubyte ch252data[] = { -0x68,0x98,0x88,0x88,0x88,0x88,0x88,0x0,0x50, -}; - -static const BitmapCharRec ch252 = {5,9,-1,0,7,ch252data}; - -/* char: 0xfb */ - -static const GLubyte ch251data[] = { -0x68,0x98,0x88,0x88,0x88,0x88,0x88,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch251 = {5,10,-1,0,7,ch251data}; - -/* char: 0xfa */ - -static const GLubyte ch250data[] = { -0x68,0x98,0x88,0x88,0x88,0x88,0x88,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch250 = {5,10,-1,0,7,ch250data}; - -/* char: 0xf9 */ - -static const GLubyte ch249data[] = { -0x68,0x98,0x88,0x88,0x88,0x88,0x88,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch249 = {5,10,-1,0,7,ch249data}; - -/* char: 0xf8 */ - -static const GLubyte ch248data[] = { -0xb8,0x44,0x64,0x54,0x4c,0x44,0x3a, -}; - -static const BitmapCharRec ch248 = {7,7,0,0,7,ch248data}; - -/* char: 0xf7 */ - -static const GLubyte ch247data[] = { -0x20,0x0,0xf8,0x0,0x20, -}; - -static const BitmapCharRec ch247 = {5,5,-1,-1,7,ch247data}; - -/* char: 0xf6 */ - -static const GLubyte ch246data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x0,0x50, -}; - -static const BitmapCharRec ch246 = {5,9,-1,0,7,ch246data}; - -/* char: 0xf5 */ - -static const GLubyte ch245data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch245 = {5,10,-1,0,7,ch245data}; - -/* char: 0xf4 */ - -static const GLubyte ch244data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch244 = {5,10,-1,0,7,ch244data}; - -/* char: 0xf3 */ - -static const GLubyte ch243data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch243 = {5,10,-1,0,7,ch243data}; - -/* char: 0xf2 */ - -static const GLubyte ch242data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch242 = {5,10,-1,0,7,ch242data}; - -/* char: 0xf1 */ - -static const GLubyte ch241data[] = { -0x88,0x88,0x88,0x88,0x88,0xc8,0xb0,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch241 = {5,10,-1,0,7,ch241data}; - -/* char: 0xf0 */ - -static const GLubyte ch240data[] = { -0x70,0x88,0x88,0x88,0x88,0x78,0x8,0x50,0x30,0x68, -}; - -static const BitmapCharRec ch240 = {5,10,-1,0,7,ch240data}; - -/* char: 0xef */ - -static const GLubyte ch239data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0, -}; - -static const BitmapCharRec ch239 = {3,9,0,0,3,ch239data}; - -/* char: 0xee */ - -static const GLubyte ch238data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch238 = {3,10,0,0,3,ch238data}; - -/* char: 0xed */ - -static const GLubyte ch237data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x40, -}; - -static const BitmapCharRec ch237 = {2,10,-1,0,3,ch237data}; - -/* char: 0xec */ - -static const GLubyte ch236data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch236 = {2,10,0,0,3,ch236data}; - -/* char: 0xeb */ - -static const GLubyte ch235data[] = { -0x70,0x88,0x80,0xf8,0x88,0x88,0x70,0x0,0x50, -}; - -static const BitmapCharRec ch235 = {5,9,-1,0,7,ch235data}; - -/* char: 0xea */ - -static const GLubyte ch234data[] = { -0x70,0x88,0x80,0xf8,0x88,0x88,0x70,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch234 = {5,10,-1,0,7,ch234data}; - -/* char: 0xe9 */ - -static const GLubyte ch233data[] = { -0x70,0x88,0x80,0xf8,0x88,0x88,0x70,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch233 = {5,10,-1,0,7,ch233data}; - -/* char: 0xe8 */ - -static const GLubyte ch232data[] = { -0x70,0x88,0x80,0xf8,0x88,0x88,0x70,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch232 = {5,10,-1,0,7,ch232data}; - -/* char: 0xe7 */ - -static const GLubyte ch231data[] = { -0x60,0x10,0x20,0x70,0x88,0x80,0x80,0x80,0x88,0x70, -}; - -static const BitmapCharRec ch231 = {5,10,-1,3,7,ch231data}; - -/* char: 0xe6 */ - -static const GLubyte ch230data[] = { -0x77,0x0,0x88,0x80,0x88,0x0,0x7f,0x80,0x8,0x80,0x88,0x80,0x77,0x0, -}; - -static const BitmapCharRec ch230 = {9,7,-1,0,11,ch230data}; - -/* char: 0xe5 */ - -static const GLubyte ch229data[] = { -0x74,0x88,0x88,0x78,0x8,0x88,0x70,0x30,0x48,0x30, -}; - -static const BitmapCharRec ch229 = {6,10,-1,0,7,ch229data}; - -/* char: 0xe4 */ - -static const GLubyte ch228data[] = { -0x74,0x88,0x88,0x78,0x8,0x88,0x70,0x0,0x50, -}; - -static const BitmapCharRec ch228 = {6,9,-1,0,7,ch228data}; - -/* char: 0xe3 */ - -static const GLubyte ch227data[] = { -0x74,0x88,0x88,0x78,0x8,0x88,0x70,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch227 = {6,10,-1,0,7,ch227data}; - -/* char: 0xe2 */ - -static const GLubyte ch226data[] = { -0x74,0x88,0x88,0x78,0x8,0x88,0x70,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch226 = {6,10,-1,0,7,ch226data}; - -/* char: 0xe1 */ - -static const GLubyte ch225data[] = { -0x74,0x88,0x88,0x78,0x8,0x88,0x70,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch225 = {6,10,-1,0,7,ch225data}; - -/* char: 0xe0 */ - -static const GLubyte ch224data[] = { -0x74,0x88,0x88,0x78,0x8,0x88,0x70,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch224 = {6,10,-1,0,7,ch224data}; - -/* char: 0xdf */ - -static const GLubyte ch223data[] = { -0xb0,0x88,0x88,0x88,0xb0,0x88,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch223 = {5,9,-1,0,7,ch223data}; - -/* char: 0xde */ - -static const GLubyte ch222data[] = { -0x80,0x80,0xf8,0x84,0x84,0x84,0xf8,0x80,0x80, -}; - -static const BitmapCharRec ch222 = {6,9,-1,0,8,ch222data}; - -/* char: 0xdd */ - -static const GLubyte ch221data[] = { -0x10,0x10,0x10,0x10,0x28,0x44,0x44,0x82,0x82,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch221 = {7,12,-1,0,9,ch221data}; - -/* char: 0xdc */ - -static const GLubyte ch220data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x48, -}; - -static const BitmapCharRec ch220 = {6,11,-1,0,8,ch220data}; - -/* char: 0xdb */ - -static const GLubyte ch219data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch219 = {6,12,-1,0,8,ch219data}; - -/* char: 0xda */ - -static const GLubyte ch218data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch218 = {6,12,-1,0,8,ch218data}; - -/* char: 0xd9 */ - -static const GLubyte ch217data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch217 = {6,12,-1,0,8,ch217data}; - -/* char: 0xd8 */ - -static const GLubyte ch216data[] = { -0x80,0x0,0x5e,0x0,0x21,0x0,0x50,0x80,0x48,0x80,0x44,0x80,0x44,0x80,0x42,0x80, -0x21,0x0,0x1e,0x80,0x0,0x40, -}; - -static const BitmapCharRec ch216 = {10,11,0,1,10,ch216data}; - -/* char: 0xd7 */ - -static const GLubyte ch215data[] = { -0x88,0x50,0x20,0x50,0x88, -}; - -static const BitmapCharRec ch215 = {5,5,-1,-1,7,ch215data}; - -/* char: 0xd6 */ - -static const GLubyte ch214data[] = { -0x3c,0x42,0x81,0x81,0x81,0x81,0x81,0x42,0x3c,0x0,0x24, -}; - -static const BitmapCharRec ch214 = {8,11,-1,0,10,ch214data}; - -/* char: 0xd5 */ - -static const GLubyte ch213data[] = { -0x3c,0x42,0x81,0x81,0x81,0x81,0x81,0x42,0x3c,0x0,0x28,0x14, -}; - -static const BitmapCharRec ch213 = {8,12,-1,0,10,ch213data}; - -/* char: 0xd4 */ - -static const GLubyte ch212data[] = { -0x3c,0x42,0x81,0x81,0x81,0x81,0x81,0x42,0x3c,0x0,0x14,0x8, -}; - -static const BitmapCharRec ch212 = {8,12,-1,0,10,ch212data}; - -/* char: 0xd3 */ - -static const GLubyte ch211data[] = { -0x3c,0x42,0x81,0x81,0x81,0x81,0x81,0x42,0x3c,0x0,0x8,0x4, -}; - -static const BitmapCharRec ch211 = {8,12,-1,0,10,ch211data}; - -/* char: 0xd2 */ - -static const GLubyte ch210data[] = { -0x3c,0x42,0x81,0x81,0x81,0x81,0x81,0x42,0x3c,0x0,0x8,0x10, -}; - -static const BitmapCharRec ch210 = {8,12,-1,0,10,ch210data}; - -/* char: 0xd1 */ - -static const GLubyte ch209data[] = { -0x82,0x86,0x8a,0x8a,0x92,0xa2,0xa2,0xc2,0x82,0x0,0x28,0x14, -}; - -static const BitmapCharRec ch209 = {7,12,-1,0,9,ch209data}; - -/* char: 0xd0 */ - -static const GLubyte ch208data[] = { -0x7c,0x42,0x41,0x41,0xf1,0x41,0x41,0x42,0x7c, -}; - -static const BitmapCharRec ch208 = {8,9,0,0,9,ch208data}; - -/* char: 0xcf */ - -static const GLubyte ch207data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0, -}; - -static const BitmapCharRec ch207 = {3,11,0,0,3,ch207data}; - -/* char: 0xce */ - -static const GLubyte ch206data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch206 = {3,12,0,0,3,ch206data}; - -/* char: 0xcd */ - -static const GLubyte ch205data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x40, -}; - -static const BitmapCharRec ch205 = {2,12,-1,0,3,ch205data}; - -/* char: 0xcc */ - -static const GLubyte ch204data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch204 = {2,12,0,0,3,ch204data}; - -/* char: 0xcb */ - -static const GLubyte ch203data[] = { -0xfc,0x80,0x80,0x80,0xfc,0x80,0x80,0x80,0xfc,0x0,0x28, -}; - -static const BitmapCharRec ch203 = {6,11,-1,0,8,ch203data}; - -/* char: 0xca */ - -static const GLubyte ch202data[] = { -0xfc,0x80,0x80,0x80,0xfc,0x80,0x80,0x80,0xfc,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch202 = {6,12,-1,0,8,ch202data}; - -/* char: 0xc9 */ - -static const GLubyte ch201data[] = { -0xfc,0x80,0x80,0x80,0xfc,0x80,0x80,0x80,0xfc,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch201 = {6,12,-1,0,8,ch201data}; - -/* char: 0xc8 */ - -static const GLubyte ch200data[] = { -0xfc,0x80,0x80,0x80,0xfc,0x80,0x80,0x80,0xfc,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch200 = {6,12,-1,0,8,ch200data}; - -/* char: 0xc7 */ - -static const GLubyte ch199data[] = { -0x30,0x8,0x8,0x3c,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x3c, -}; - -static const BitmapCharRec ch199 = {7,12,-1,3,9,ch199data}; - -/* char: 0xc6 */ - -static const GLubyte ch198data[] = { -0x8f,0x80,0x88,0x0,0x88,0x0,0x78,0x0,0x4f,0x80,0x48,0x0,0x28,0x0,0x28,0x0, -0x1f,0x80, -}; - -static const BitmapCharRec ch198 = {9,9,-1,0,11,ch198data}; - -/* char: 0xc5 */ - -static const GLubyte ch197data[] = { -0x82,0x82,0x82,0x7c,0x44,0x44,0x28,0x10,0x10,0x10,0x28,0x10, -}; - -static const BitmapCharRec ch197 = {7,12,-1,0,9,ch197data}; - -/* char: 0xc4 */ - -static const GLubyte ch196data[] = { -0x82,0x82,0x82,0x7c,0x44,0x44,0x28,0x10,0x10,0x0,0x28, -}; - -static const BitmapCharRec ch196 = {7,11,-1,0,9,ch196data}; - -/* char: 0xc3 */ - -static const GLubyte ch195data[] = { -0x82,0x82,0x82,0x7c,0x44,0x44,0x28,0x10,0x10,0x0,0x28,0x14, -}; - -static const BitmapCharRec ch195 = {7,12,-1,0,9,ch195data}; - -/* char: 0xc2 */ - -static const GLubyte ch194data[] = { -0x82,0x82,0x82,0x7c,0x44,0x44,0x28,0x10,0x10,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch194 = {7,12,-1,0,9,ch194data}; - -/* char: 0xc1 */ - -static const GLubyte ch193data[] = { -0x82,0x82,0x82,0x7c,0x44,0x44,0x28,0x10,0x10,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch193 = {7,12,-1,0,9,ch193data}; - -/* char: 0xc0 */ - -static const GLubyte ch192data[] = { -0x82,0x82,0x82,0x7c,0x44,0x44,0x28,0x10,0x10,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch192 = {7,12,-1,0,9,ch192data}; - -/* char: 0xbf */ - -static const GLubyte ch191data[] = { -0x70,0x88,0x88,0x40,0x40,0x20,0x20,0x0,0x20, -}; - -static const BitmapCharRec ch191 = {5,9,-1,3,7,ch191data}; - -/* char: 0xbe */ - -static const GLubyte ch190data[] = { -0x21,0x0,0x17,0x80,0x15,0x0,0xb,0x0,0xc9,0x0,0x24,0x0,0x44,0x0,0x22,0x0, -0xe1,0x0, -}; - -static const BitmapCharRec ch190 = {9,9,0,0,10,ch190data}; - -/* char: 0xbd */ - -static const GLubyte ch189data[] = { -0x47,0x80,0x22,0x0,0x11,0x0,0x14,0x80,0x4b,0x0,0x48,0x0,0x44,0x0,0xc2,0x0, -0x41,0x0, -}; - -static const BitmapCharRec ch189 = {9,9,0,0,10,ch189data}; - -/* char: 0xbc */ - -static const GLubyte ch188data[] = { -0x41,0x0,0x27,0x80,0x15,0x0,0x13,0x0,0x49,0x0,0x44,0x0,0x44,0x0,0xc2,0x0, -0x41,0x0, -}; - -static const BitmapCharRec ch188 = {9,9,0,0,10,ch188data}; - -/* char: 0xbb */ - -static const GLubyte ch187data[] = { -0xa0,0x50,0x28,0x50,0xa0, -}; - -static const BitmapCharRec ch187 = {5,5,-1,-1,7,ch187data}; - -/* char: 0xba */ - -static const GLubyte ch186data[] = { -0xe0,0x0,0xe0,0xa0,0xe0, -}; - -static const BitmapCharRec ch186 = {3,5,-1,-4,5,ch186data}; - -/* char: 0xb9 */ - -static const GLubyte ch185data[] = { -0x40,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch185 = {2,5,-1,-3,4,ch185data}; - -/* char: 0xb8 */ - -static const GLubyte ch184data[] = { -0xc0,0x20,0x20,0x40, -}; - -static const BitmapCharRec ch184 = {3,4,0,3,3,ch184data}; - -/* char: 0xb7 */ - -static const GLubyte ch183data[] = { -0x80, -}; - -static const BitmapCharRec ch183 = {1,1,-1,-3,3,ch183data}; - -/* char: 0xb6 */ - -static const GLubyte ch182data[] = { -0x28,0x28,0x28,0x28,0x28,0x28,0x68,0xe8,0xe8,0xe8,0x68,0x3c, -}; - -static const BitmapCharRec ch182 = {6,12,0,3,7,ch182data}; - -/* char: 0xb5 */ - -static const GLubyte ch181data[] = { -0x80,0x80,0x80,0xe8,0x98,0x88,0x88,0x88,0x88,0x88, -}; - -static const BitmapCharRec ch181 = {5,10,-1,3,7,ch181data}; - -/* char: 0xb4 */ - -static const GLubyte ch180data[] = { -0x80,0x40, -}; - -static const BitmapCharRec ch180 = {2,2,0,-8,2,ch180data}; - -/* char: 0xb3 */ - -static const GLubyte ch179data[] = { -0xc0,0x20,0x40,0x20,0xe0, -}; - -static const BitmapCharRec ch179 = {3,5,0,-3,4,ch179data}; - -/* char: 0xb2 */ - -static const GLubyte ch178data[] = { -0xf0,0x40,0x20,0x90,0x60, -}; - -static const BitmapCharRec ch178 = {4,5,0,-3,4,ch178data}; - -/* char: 0xb1 */ - -static const GLubyte ch177data[] = { -0xf8,0x0,0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch177 = {5,7,-1,0,7,ch177data}; - -/* char: 0xb0 */ - -static const GLubyte ch176data[] = { -0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch176 = {4,4,0,-4,5,ch176data}; - -/* char: 0xaf */ - -static const GLubyte ch175data[] = { -0xf0, -}; - -static const BitmapCharRec ch175 = {4,1,0,-8,4,ch175data}; - -/* char: 0xae */ - -static const GLubyte ch174data[] = { -0x3e,0x0,0x41,0x0,0x94,0x80,0x94,0x80,0x98,0x80,0x94,0x80,0x9c,0x80,0x41,0x0, -0x3e,0x0, -}; - -static const BitmapCharRec ch174 = {9,9,-1,0,11,ch174data}; - -/* char: 0xad */ - -static const GLubyte ch173data[] = { -0xf0, -}; - -static const BitmapCharRec ch173 = {4,1,0,-3,5,ch173data}; - -/* char: 0xac */ - -static const GLubyte ch172data[] = { -0x4,0x4,0x4,0xfc, -}; - -static const BitmapCharRec ch172 = {6,4,-1,-2,8,ch172data}; - -/* char: 0xab */ - -static const GLubyte ch171data[] = { -0x28,0x50,0xa0,0x50,0x28, -}; - -static const BitmapCharRec ch171 = {5,5,-1,-1,7,ch171data}; - -/* char: 0xaa */ - -static const GLubyte ch170data[] = { -0xe0,0x0,0xa0,0x20,0xe0, -}; - -static const BitmapCharRec ch170 = {3,5,-1,-4,5,ch170data}; - -/* char: 0xa9 */ - -static const GLubyte ch169data[] = { -0x3e,0x0,0x41,0x0,0x9c,0x80,0xa2,0x80,0xa0,0x80,0xa2,0x80,0x9c,0x80,0x41,0x0, -0x3e,0x0, -}; - -static const BitmapCharRec ch169 = {9,9,-1,0,11,ch169data}; - -/* char: 0xa8 */ - -static const GLubyte ch168data[] = { -0xa0, -}; - -static const BitmapCharRec ch168 = {3,1,0,-8,3,ch168data}; - -/* char: 0xa7 */ - -static const GLubyte ch167data[] = { -0x70,0x88,0x8,0x30,0x48,0x88,0x88,0x90,0x60,0x80,0x88,0x70, -}; - -static const BitmapCharRec ch167 = {5,12,0,3,6,ch167data}; - -/* char: 0xa6 */ - -static const GLubyte ch166data[] = { -0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch166 = {1,11,-1,2,3,ch166data}; - -/* char: 0xa5 */ - -static const GLubyte ch165data[] = { -0x20,0x20,0xf8,0x20,0xf8,0x20,0x50,0x88,0x88, -}; - -static const BitmapCharRec ch165 = {5,9,-1,0,7,ch165data}; - -/* char: 0xa4 */ - -static const GLubyte ch164data[] = { -0x84,0x78,0x48,0x48,0x78,0x84, -}; - -static const BitmapCharRec ch164 = {6,6,0,-1,7,ch164data}; - -/* char: 0xa3 */ - -static const GLubyte ch163data[] = { -0xb0,0x48,0x20,0x20,0xf0,0x40,0x40,0x48,0x30, -}; - -static const BitmapCharRec ch163 = {5,9,-1,0,7,ch163data}; - -/* char: 0xa2 */ - -static const GLubyte ch162data[] = { -0x40,0x70,0xc8,0xa0,0xa0,0xa0,0xa8,0x70,0x10, -}; - -static const BitmapCharRec ch162 = {5,9,-1,1,7,ch162data}; - -/* char: 0xa1 */ - -static const GLubyte ch161data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80, -}; - -static const BitmapCharRec ch161 = {1,10,-1,3,3,ch161data}; - -/* char: 0xa0 */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch160data[] = { 0x0 }; -static const BitmapCharRec ch160 = {1,1,0,0,4,ch160data}; -#else -static const BitmapCharRec ch160 = {0,0,0,0,4,0}; -#endif - -/* char: 0x7e '~' */ - -static const GLubyte ch126data[] = { -0x98,0x64, -}; - -static const BitmapCharRec ch126 = {6,2,0,-3,7,ch126data}; - -/* char: 0x7d '}' */ - -static const GLubyte ch125data[] = { -0xc0,0x20,0x20,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0xc0, -}; - -static const BitmapCharRec ch125 = {4,12,0,3,4,ch125data}; - -/* char: 0x7c '|' */ - -static const GLubyte ch124data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch124 = {1,12,-1,3,3,ch124data}; - -/* char: 0x7b '{' */ - -static const GLubyte ch123data[] = { -0x30,0x40,0x40,0x40,0x40,0x40,0x80,0x40,0x40,0x40,0x40,0x30, -}; - -static const BitmapCharRec ch123 = {4,12,0,3,4,ch123data}; - -/* char: 0x7a 'z' */ - -static const GLubyte ch122data[] = { -0xf0,0x80,0x40,0x40,0x20,0x10,0xf0, -}; - -static const BitmapCharRec ch122 = {4,7,-1,0,6,ch122data}; - -/* char: 0x79 'y' */ - -static const GLubyte ch121data[] = { -0x80,0x40,0x20,0x20,0x50,0x50,0x90,0x88,0x88,0x88, -}; - -static const BitmapCharRec ch121 = {5,10,-1,3,7,ch121data}; - -/* char: 0x78 'x' */ - -static const GLubyte ch120data[] = { -0x84,0x84,0x48,0x30,0x30,0x48,0x84, -}; - -static const BitmapCharRec ch120 = {6,7,0,0,6,ch120data}; - -/* char: 0x77 'w' */ - -static const GLubyte ch119data[] = { -0x22,0x0,0x22,0x0,0x55,0x0,0x49,0x0,0x49,0x0,0x88,0x80,0x88,0x80, -}; - -static const BitmapCharRec ch119 = {9,7,0,0,9,ch119data}; - -/* char: 0x76 'v' */ - -static const GLubyte ch118data[] = { -0x20,0x20,0x50,0x50,0x88,0x88,0x88, -}; - -static const BitmapCharRec ch118 = {5,7,-1,0,7,ch118data}; - -/* char: 0x75 'u' */ - -static const GLubyte ch117data[] = { -0x68,0x98,0x88,0x88,0x88,0x88,0x88, -}; - -static const BitmapCharRec ch117 = {5,7,-1,0,7,ch117data}; - -/* char: 0x74 't' */ - -static const GLubyte ch116data[] = { -0x60,0x40,0x40,0x40,0x40,0x40,0xe0,0x40,0x40, -}; - -static const BitmapCharRec ch116 = {3,9,0,0,3,ch116data}; - -/* char: 0x73 's' */ - -static const GLubyte ch115data[] = { -0x60,0x90,0x10,0x60,0x80,0x90,0x60, -}; - -static const BitmapCharRec ch115 = {4,7,-1,0,6,ch115data}; - -/* char: 0x72 'r' */ - -static const GLubyte ch114data[] = { -0x80,0x80,0x80,0x80,0x80,0xc0,0xa0, -}; - -static const BitmapCharRec ch114 = {3,7,-1,0,4,ch114data}; - -/* char: 0x71 'q' */ - -static const GLubyte ch113data[] = { -0x8,0x8,0x8,0x68,0x98,0x88,0x88,0x88,0x98,0x68, -}; - -static const BitmapCharRec ch113 = {5,10,-1,3,7,ch113data}; - -/* char: 0x70 'p' */ - -static const GLubyte ch112data[] = { -0x80,0x80,0x80,0xb0,0xc8,0x88,0x88,0x88,0xc8,0xb0, -}; - -static const BitmapCharRec ch112 = {5,10,-1,3,7,ch112data}; - -/* char: 0x6f 'o' */ - -static const GLubyte ch111data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch111 = {5,7,-1,0,7,ch111data}; - -/* char: 0x6e 'n' */ - -static const GLubyte ch110data[] = { -0x88,0x88,0x88,0x88,0x88,0xc8,0xb0, -}; - -static const BitmapCharRec ch110 = {5,7,-1,0,7,ch110data}; - -/* char: 0x6d 'm' */ - -static const GLubyte ch109data[] = { -0x92,0x92,0x92,0x92,0x92,0xda,0xa4, -}; - -static const BitmapCharRec ch109 = {7,7,-1,0,9,ch109data}; - -/* char: 0x6c 'l' */ - -static const GLubyte ch108data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch108 = {1,9,-1,0,3,ch108data}; - -/* char: 0x6b 'k' */ - -static const GLubyte ch107data[] = { -0x88,0x90,0xa0,0xc0,0xc0,0xa0,0x90,0x80,0x80, -}; - -static const BitmapCharRec ch107 = {5,9,-1,0,6,ch107data}; - -/* char: 0x6a 'j' */ - -static const GLubyte ch106data[] = { -0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x0,0x40, -}; - -static const BitmapCharRec ch106 = {2,12,0,3,3,ch106data}; - -/* char: 0x69 'i' */ - -static const GLubyte ch105data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80, -}; - -static const BitmapCharRec ch105 = {1,9,-1,0,3,ch105data}; - -/* char: 0x68 'h' */ - -static const GLubyte ch104data[] = { -0x88,0x88,0x88,0x88,0x88,0xc8,0xb0,0x80,0x80, -}; - -static const BitmapCharRec ch104 = {5,9,-1,0,7,ch104data}; - -/* char: 0x67 'g' */ - -static const GLubyte ch103data[] = { -0x70,0x88,0x8,0x68,0x98,0x88,0x88,0x88,0x98,0x68, -}; - -static const BitmapCharRec ch103 = {5,10,-1,3,7,ch103data}; - -/* char: 0x66 'f' */ - -static const GLubyte ch102data[] = { -0x40,0x40,0x40,0x40,0x40,0x40,0xe0,0x40,0x30, -}; - -static const BitmapCharRec ch102 = {4,9,0,0,3,ch102data}; - -/* char: 0x65 'e' */ - -static const GLubyte ch101data[] = { -0x70,0x88,0x80,0xf8,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch101 = {5,7,-1,0,7,ch101data}; - -/* char: 0x64 'd' */ - -static const GLubyte ch100data[] = { -0x68,0x98,0x88,0x88,0x88,0x98,0x68,0x8,0x8, -}; - -static const BitmapCharRec ch100 = {5,9,-1,0,7,ch100data}; - -/* char: 0x63 'c' */ - -static const GLubyte ch99data[] = { -0x70,0x88,0x80,0x80,0x80,0x88,0x70, -}; - -static const BitmapCharRec ch99 = {5,7,-1,0,7,ch99data}; - -/* char: 0x62 'b' */ - -static const GLubyte ch98data[] = { -0xb0,0xc8,0x88,0x88,0x88,0xc8,0xb0,0x80,0x80, -}; - -static const BitmapCharRec ch98 = {5,9,-1,0,7,ch98data}; - -/* char: 0x61 'a' */ - -static const GLubyte ch97data[] = { -0x74,0x88,0x88,0x78,0x8,0x88,0x70, -}; - -static const BitmapCharRec ch97 = {6,7,-1,0,7,ch97data}; - -/* char: 0x60 '`' */ - -static const GLubyte ch96data[] = { -0xc0,0x80,0x40, -}; - -static const BitmapCharRec ch96 = {2,3,0,-6,3,ch96data}; - -/* char: 0x5f '_' */ - -static const GLubyte ch95data[] = { -0xfe, -}; - -static const BitmapCharRec ch95 = {7,1,0,2,7,ch95data}; - -/* char: 0x5e '^' */ - -static const GLubyte ch94data[] = { -0x88,0x50,0x20, -}; - -static const BitmapCharRec ch94 = {5,3,0,-5,6,ch94data}; - -/* char: 0x5d ']' */ - -static const GLubyte ch93data[] = { -0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0, -}; - -static const BitmapCharRec ch93 = {2,12,0,3,3,ch93data}; - -/* char: 0x5c '\' */ - -static const GLubyte ch92data[] = { -0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x80,0x80, -}; - -static const BitmapCharRec ch92 = {4,9,0,0,4,ch92data}; - -/* char: 0x5b '[' */ - -static const GLubyte ch91data[] = { -0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xc0, -}; - -static const BitmapCharRec ch91 = {2,12,-1,3,3,ch91data}; - -/* char: 0x5a 'Z' */ - -static const GLubyte ch90data[] = { -0xfe,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0xfe, -}; - -static const BitmapCharRec ch90 = {7,9,-1,0,9,ch90data}; - -/* char: 0x59 'Y' */ - -static const GLubyte ch89data[] = { -0x10,0x10,0x10,0x10,0x28,0x44,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch89 = {7,9,-1,0,9,ch89data}; - -/* char: 0x58 'X' */ - -static const GLubyte ch88data[] = { -0x82,0x44,0x44,0x28,0x10,0x28,0x44,0x44,0x82, -}; - -static const BitmapCharRec ch88 = {7,9,-1,0,9,ch88data}; - -/* char: 0x57 'W' */ - -static const GLubyte ch87data[] = { -0x22,0x0,0x22,0x0,0x22,0x0,0x55,0x0,0x55,0x0,0x49,0x0,0x88,0x80,0x88,0x80, -0x88,0x80, -}; - -static const BitmapCharRec ch87 = {9,9,-1,0,11,ch87data}; - -/* char: 0x56 'V' */ - -static const GLubyte ch86data[] = { -0x10,0x10,0x28,0x28,0x44,0x44,0x44,0x82,0x82, -}; - -static const BitmapCharRec ch86 = {7,9,-1,0,9,ch86data}; - -/* char: 0x55 'U' */ - -static const GLubyte ch85data[] = { -0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, -}; - -static const BitmapCharRec ch85 = {6,9,-1,0,8,ch85data}; - -/* char: 0x54 'T' */ - -static const GLubyte ch84data[] = { -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xfe, -}; - -static const BitmapCharRec ch84 = {7,9,0,0,7,ch84data}; - -/* char: 0x53 'S' */ - -static const GLubyte ch83data[] = { -0x78,0x84,0x84,0x4,0x18,0x60,0x80,0x84,0x78, -}; - -static const BitmapCharRec ch83 = {6,9,-1,0,8,ch83data}; - -/* char: 0x52 'R' */ - -static const GLubyte ch82data[] = { -0x84,0x84,0x84,0x88,0xf8,0x84,0x84,0x84,0xf8, -}; - -static const BitmapCharRec ch82 = {6,9,-1,0,8,ch82data}; - -/* char: 0x51 'Q' */ - -static const GLubyte ch81data[] = { -0x3d,0x42,0x85,0x89,0x81,0x81,0x81,0x42,0x3c, -}; - -static const BitmapCharRec ch81 = {8,9,-1,0,10,ch81data}; - -/* char: 0x50 'P' */ - -static const GLubyte ch80data[] = { -0x80,0x80,0x80,0x80,0xf8,0x84,0x84,0x84,0xf8, -}; - -static const BitmapCharRec ch80 = {6,9,-1,0,8,ch80data}; - -/* char: 0x4f 'O' */ - -static const GLubyte ch79data[] = { -0x3c,0x42,0x81,0x81,0x81,0x81,0x81,0x42,0x3c, -}; - -static const BitmapCharRec ch79 = {8,9,-1,0,10,ch79data}; - -/* char: 0x4e 'N' */ - -static const GLubyte ch78data[] = { -0x82,0x86,0x8a,0x8a,0x92,0xa2,0xa2,0xc2,0x82, -}; - -static const BitmapCharRec ch78 = {7,9,-1,0,9,ch78data}; - -/* char: 0x4d 'M' */ - -static const GLubyte ch77data[] = { -0x88,0x80,0x88,0x80,0x94,0x80,0x94,0x80,0xa2,0x80,0xa2,0x80,0xc1,0x80,0xc1,0x80, -0x80,0x80, -}; - -static const BitmapCharRec ch77 = {9,9,-1,0,11,ch77data}; - -/* char: 0x4c 'L' */ - -static const GLubyte ch76data[] = { -0xf8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch76 = {5,9,-1,0,7,ch76data}; - -/* char: 0x4b 'K' */ - -static const GLubyte ch75data[] = { -0x82,0x84,0x88,0x90,0xe0,0xa0,0x90,0x88,0x84, -}; - -static const BitmapCharRec ch75 = {7,9,-1,0,8,ch75data}; - -/* char: 0x4a 'J' */ - -static const GLubyte ch74data[] = { -0x70,0x88,0x88,0x8,0x8,0x8,0x8,0x8,0x8, -}; - -static const BitmapCharRec ch74 = {5,9,-1,0,7,ch74data}; - -/* char: 0x49 'I' */ - -static const GLubyte ch73data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch73 = {1,9,-1,0,3,ch73data}; - -/* char: 0x48 'H' */ - -static const GLubyte ch72data[] = { -0x82,0x82,0x82,0x82,0xfe,0x82,0x82,0x82,0x82, -}; - -static const BitmapCharRec ch72 = {7,9,-1,0,9,ch72data}; - -/* char: 0x47 'G' */ - -static const GLubyte ch71data[] = { -0x3a,0x46,0x82,0x82,0x8e,0x80,0x80,0x42,0x3c, -}; - -static const BitmapCharRec ch71 = {7,9,-1,0,9,ch71data}; - -/* char: 0x46 'F' */ - -static const GLubyte ch70data[] = { -0x80,0x80,0x80,0x80,0xf8,0x80,0x80,0x80,0xfc, -}; - -static const BitmapCharRec ch70 = {6,9,-1,0,8,ch70data}; - -/* char: 0x45 'E' */ - -static const GLubyte ch69data[] = { -0xfc,0x80,0x80,0x80,0xfc,0x80,0x80,0x80,0xfc, -}; - -static const BitmapCharRec ch69 = {6,9,-1,0,8,ch69data}; - -/* char: 0x44 'D' */ - -static const GLubyte ch68data[] = { -0xf8,0x84,0x82,0x82,0x82,0x82,0x82,0x84,0xf8, -}; - -static const BitmapCharRec ch68 = {7,9,-1,0,9,ch68data}; - -/* char: 0x43 'C' */ - -static const GLubyte ch67data[] = { -0x3c,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x3c, -}; - -static const BitmapCharRec ch67 = {7,9,-1,0,9,ch67data}; - -/* char: 0x42 'B' */ - -static const GLubyte ch66data[] = { -0xf8,0x84,0x84,0x84,0xf8,0x84,0x84,0x84,0xf8, -}; - -static const BitmapCharRec ch66 = {6,9,-1,0,8,ch66data}; - -/* char: 0x41 'A' */ - -static const GLubyte ch65data[] = { -0x82,0x82,0x82,0x7c,0x44,0x44,0x28,0x28,0x10, -}; - -static const BitmapCharRec ch65 = {7,9,-1,0,9,ch65data}; - -/* char: 0x40 '@' */ - -static const GLubyte ch64data[] = { -0x3e,0x0,0x40,0x0,0x9b,0x0,0xa6,0x80,0xa2,0x40,0xa2,0x40,0x92,0x40,0x4d,0x40, -0x60,0x80,0x1f,0x0, -}; - -static const BitmapCharRec ch64 = {10,10,-1,1,12,ch64data}; - -/* char: 0x3f '?' */ - -static const GLubyte ch63data[] = { -0x20,0x0,0x20,0x20,0x10,0x10,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch63 = {5,9,-1,0,7,ch63data}; - -/* char: 0x3e '>' */ - -static const GLubyte ch62data[] = { -0xc0,0x30,0xc,0x30,0xc0, -}; - -static const BitmapCharRec ch62 = {6,5,-1,-1,7,ch62data}; - -/* char: 0x3d '=' */ - -static const GLubyte ch61data[] = { -0xf8,0x0,0xf8, -}; - -static const BitmapCharRec ch61 = {5,3,-1,-2,7,ch61data}; - -/* char: 0x3c '<' */ - -static const GLubyte ch60data[] = { -0xc,0x30,0xc0,0x30,0xc, -}; - -static const BitmapCharRec ch60 = {6,5,0,-1,7,ch60data}; - -/* char: 0x3b ';' */ - -static const GLubyte ch59data[] = { -0x80,0x40,0x40,0x0,0x0,0x0,0x0,0x40, -}; - -static const BitmapCharRec ch59 = {2,8,0,2,3,ch59data}; - -/* char: 0x3a ':' */ - -static const GLubyte ch58data[] = { -0x80,0x0,0x0,0x0,0x0,0x80, -}; - -static const BitmapCharRec ch58 = {1,6,-1,0,3,ch58data}; - -/* char: 0x39 '9' */ - -static const GLubyte ch57data[] = { -0x70,0x88,0x8,0x8,0x78,0x88,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch57 = {5,9,-1,0,7,ch57data}; - -/* char: 0x38 '8' */ - -static const GLubyte ch56data[] = { -0x70,0x88,0x88,0x88,0x88,0x70,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch56 = {5,9,-1,0,7,ch56data}; - -/* char: 0x37 '7' */ - -static const GLubyte ch55data[] = { -0x40,0x40,0x20,0x20,0x20,0x10,0x10,0x8,0xf8, -}; - -static const BitmapCharRec ch55 = {5,9,-1,0,7,ch55data}; - -/* char: 0x36 '6' */ - -static const GLubyte ch54data[] = { -0x70,0x88,0x88,0x88,0xc8,0xb0,0x80,0x88,0x70, -}; - -static const BitmapCharRec ch54 = {5,9,-1,0,7,ch54data}; - -/* char: 0x35 '5' */ - -static const GLubyte ch53data[] = { -0x70,0x88,0x88,0x8,0x8,0xf0,0x80,0x80,0xf8, -}; - -static const BitmapCharRec ch53 = {5,9,-1,0,7,ch53data}; - -/* char: 0x34 '4' */ - -static const GLubyte ch52data[] = { -0x8,0x8,0xfc,0x88,0x48,0x28,0x28,0x18,0x8, -}; - -static const BitmapCharRec ch52 = {6,9,0,0,7,ch52data}; - -/* char: 0x33 '3' */ - -static const GLubyte ch51data[] = { -0x70,0x88,0x88,0x8,0x8,0x30,0x8,0x88,0x70, -}; - -static const BitmapCharRec ch51 = {5,9,-1,0,7,ch51data}; - -/* char: 0x32 '2' */ - -static const GLubyte ch50data[] = { -0xf8,0x80,0x80,0x40,0x20,0x10,0x8,0x88,0x70, -}; - -static const BitmapCharRec ch50 = {5,9,-1,0,7,ch50data}; - -/* char: 0x31 '1' */ - -static const GLubyte ch49data[] = { -0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0,0x20, -}; - -static const BitmapCharRec ch49 = {3,9,-1,0,7,ch49data}; - -/* char: 0x30 '0' */ - -static const GLubyte ch48data[] = { -0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70, -}; - -static const BitmapCharRec ch48 = {5,9,-1,0,7,ch48data}; - -/* char: 0x2f '/' */ - -static const GLubyte ch47data[] = { -0x80,0x80,0x40,0x40,0x40,0x20,0x20,0x10,0x10, -}; - -static const BitmapCharRec ch47 = {4,9,0,0,4,ch47data}; - -/* char: 0x2e '.' */ - -static const GLubyte ch46data[] = { -0x80, -}; - -static const BitmapCharRec ch46 = {1,1,-1,0,3,ch46data}; - -/* char: 0x2d '-' */ - -static const GLubyte ch45data[] = { -0xf8, -}; - -static const BitmapCharRec ch45 = {5,1,-1,-3,8,ch45data}; - -/* char: 0x2c ',' */ - -static const GLubyte ch44data[] = { -0x80,0x40,0x40, -}; - -static const BitmapCharRec ch44 = {2,3,-1,2,4,ch44data}; - -/* char: 0x2b '+' */ - -static const GLubyte ch43data[] = { -0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch43 = {5,5,-1,-1,7,ch43data}; - -/* char: 0x2a '*' */ - -static const GLubyte ch42data[] = { -0xa0,0x40,0xa0, -}; - -static const BitmapCharRec ch42 = {3,3,-1,-6,5,ch42data}; - -/* char: 0x29 ')' */ - -static const GLubyte ch41data[] = { -0x80,0x40,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch41 = {3,12,0,3,4,ch41data}; - -/* char: 0x28 '(' */ - -static const GLubyte ch40data[] = { -0x20,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20, -}; - -static const BitmapCharRec ch40 = {3,12,-1,3,4,ch40data}; - -/* char: 0x27 ''' */ - -static const GLubyte ch39data[] = { -0x80,0x40,0xc0, -}; - -static const BitmapCharRec ch39 = {2,3,-1,-6,3,ch39data}; - -/* char: 0x26 '&' */ - -static const GLubyte ch38data[] = { -0x72,0x8c,0x84,0x8a,0x50,0x30,0x48,0x48,0x30, -}; - -static const BitmapCharRec ch38 = {7,9,-1,0,9,ch38data}; - -/* char: 0x25 '%' */ - -static const GLubyte ch37data[] = { -0x23,0x0,0x14,0x80,0x14,0x80,0x13,0x0,0x8,0x0,0x68,0x0,0x94,0x0,0x94,0x0, -0x62,0x0, -}; - -static const BitmapCharRec ch37 = {9,9,-1,0,11,ch37data}; - -/* char: 0x24 '$' */ - -static const GLubyte ch36data[] = { -0x20,0x70,0xa8,0xa8,0x28,0x70,0xa0,0xa8,0x70,0x20, -}; - -static const BitmapCharRec ch36 = {5,10,-1,1,7,ch36data}; - -/* char: 0x23 '#' */ - -static const GLubyte ch35data[] = { -0x50,0x50,0x50,0xfc,0x28,0xfc,0x28,0x28, -}; - -static const BitmapCharRec ch35 = {6,8,0,0,7,ch35data}; - -/* char: 0x22 '"' */ - -static const GLubyte ch34data[] = { -0xa0,0xa0,0xa0, -}; - -static const BitmapCharRec ch34 = {3,3,-1,-6,5,ch34data}; - -/* char: 0x21 '!' */ - -static const GLubyte ch33data[] = { -0x80,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch33 = {1,9,-1,0,3,ch33data}; - -/* char: 0x20 ' ' */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch32data[] = { 0x0 }; -static const BitmapCharRec ch32 = {1,1,0,0,4,ch32data}; -#else -static const BitmapCharRec ch32 = {0,0,0,0,4,0}; -#endif - -static const BitmapCharRec * const chars[] = { -&ch32, -&ch33, -&ch34, -&ch35, -&ch36, -&ch37, -&ch38, -&ch39, -&ch40, -&ch41, -&ch42, -&ch43, -&ch44, -&ch45, -&ch46, -&ch47, -&ch48, -&ch49, -&ch50, -&ch51, -&ch52, -&ch53, -&ch54, -&ch55, -&ch56, -&ch57, -&ch58, -&ch59, -&ch60, -&ch61, -&ch62, -&ch63, -&ch64, -&ch65, -&ch66, -&ch67, -&ch68, -&ch69, -&ch70, -&ch71, -&ch72, -&ch73, -&ch74, -&ch75, -&ch76, -&ch77, -&ch78, -&ch79, -&ch80, -&ch81, -&ch82, -&ch83, -&ch84, -&ch85, -&ch86, -&ch87, -&ch88, -&ch89, -&ch90, -&ch91, -&ch92, -&ch93, -&ch94, -&ch95, -&ch96, -&ch97, -&ch98, -&ch99, -&ch100, -&ch101, -&ch102, -&ch103, -&ch104, -&ch105, -&ch106, -&ch107, -&ch108, -&ch109, -&ch110, -&ch111, -&ch112, -&ch113, -&ch114, -&ch115, -&ch116, -&ch117, -&ch118, -&ch119, -&ch120, -&ch121, -&ch122, -&ch123, -&ch124, -&ch125, -&ch126, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -&ch160, -&ch161, -&ch162, -&ch163, -&ch164, -&ch165, -&ch166, -&ch167, -&ch168, -&ch169, -&ch170, -&ch171, -&ch172, -&ch173, -&ch174, -&ch175, -&ch176, -&ch177, -&ch178, -&ch179, -&ch180, -&ch181, -&ch182, -&ch183, -&ch184, -&ch185, -&ch186, -&ch187, -&ch188, -&ch189, -&ch190, -&ch191, -&ch192, -&ch193, -&ch194, -&ch195, -&ch196, -&ch197, -&ch198, -&ch199, -&ch200, -&ch201, -&ch202, -&ch203, -&ch204, -&ch205, -&ch206, -&ch207, -&ch208, -&ch209, -&ch210, -&ch211, -&ch212, -&ch213, -&ch214, -&ch215, -&ch216, -&ch217, -&ch218, -&ch219, -&ch220, -&ch221, -&ch222, -&ch223, -&ch224, -&ch225, -&ch226, -&ch227, -&ch228, -&ch229, -&ch230, -&ch231, -&ch232, -&ch233, -&ch234, -&ch235, -&ch236, -&ch237, -&ch238, -&ch239, -&ch240, -&ch241, -&ch242, -&ch243, -&ch244, -&ch245, -&ch246, -&ch247, -&ch248, -&ch249, -&ch250, -&ch251, -&ch252, -&ch253, -&ch254, -&ch255, -}; - -const BitmapFontRec glutBitmapHelvetica12 = { -"-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1", -224, -32, -chars -}; - diff --git a/lib/glut-3.7.6/lib/glut/glut_hel18.c b/lib/glut-3.7.6/lib/glut/glut_hel18.c deleted file mode 100644 index c0af0c7032087a905a9322cb7504fc3e73c3dc38..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_hel18.c +++ /dev/null @@ -1,1897 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#define glutBitmapHelvetica18 XXX -#include "glutbitmap.h" -#undef glutBitmapHelvetica18 - -/* char: 0xff */ - -static const GLubyte ch255data[] = { -0x70,0x70,0x18,0x18,0x18,0x18,0x3c,0x24,0x66,0x66,0x66,0xc3,0xc3,0xc3,0x0,0x66, -0x66, -}; - -static const BitmapCharRec ch255 = {8,17,-1,4,10,ch255data}; - -/* char: 0xfe */ - -static const GLubyte ch254data[] = { -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xde,0x0,0xff,0x0,0xe3,0x0,0xc1,0x80, -0xc1,0x80,0xc1,0x80,0xc1,0x80,0xe3,0x0,0xff,0x0,0xde,0x0,0xc0,0x0,0xc0,0x0, -0xc0,0x0,0xc0,0x0, -}; - -static const BitmapCharRec ch254 = {9,18,-1,4,11,ch254data}; - -/* char: 0xfd */ - -static const GLubyte ch253data[] = { -0x70,0x70,0x18,0x18,0x18,0x18,0x3c,0x24,0x66,0x66,0x66,0xc3,0xc3,0xc3,0x0,0x18, -0xc,0x6, -}; - -static const BitmapCharRec ch253 = {8,18,-1,4,10,ch253data}; - -/* char: 0xfc */ - -static const GLubyte ch252data[] = { -0x73,0xfb,0xc7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x0,0x66,0x66, -}; - -static const BitmapCharRec ch252 = {8,13,-1,0,10,ch252data}; - -/* char: 0xfb */ - -static const GLubyte ch251data[] = { -0x73,0xfb,0xc7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x0,0x66,0x3c,0x18, -}; - -static const BitmapCharRec ch251 = {8,14,-1,0,10,ch251data}; - -/* char: 0xfa */ - -static const GLubyte ch250data[] = { -0x73,0xfb,0xc7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x0,0x18,0xc,0x6, -}; - -static const BitmapCharRec ch250 = {8,14,-1,0,10,ch250data}; - -/* char: 0xf9 */ - -static const GLubyte ch249data[] = { -0x73,0xfb,0xc7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x0,0xc,0x18,0x30, -}; - -static const BitmapCharRec ch249 = {8,14,-1,0,10,ch249data}; - -/* char: 0xf8 */ - -static const GLubyte ch248data[] = { -0xce,0x0,0x7f,0x80,0x31,0x80,0x78,0xc0,0x6c,0xc0,0x66,0xc0,0x63,0xc0,0x31,0x80, -0x3f,0xc0,0xe,0x60, -}; - -static const BitmapCharRec ch248 = {11,10,0,0,11,ch248data}; - -/* char: 0xf7 */ - -static const GLubyte ch247data[] = { -0x18,0x18,0x0,0xff,0xff,0x0,0x18,0x18, -}; - -static const BitmapCharRec ch247 = {8,8,-1,-1,10,ch247data}; - -/* char: 0xf6 */ - -static const GLubyte ch246data[] = { -0x3e,0x0,0x7f,0x0,0x63,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x0, -0x7f,0x0,0x3e,0x0,0x0,0x0,0x36,0x0,0x36,0x0, -}; - -static const BitmapCharRec ch246 = {9,13,-1,0,11,ch246data}; - -/* char: 0xf5 */ - -static const GLubyte ch245data[] = { -0x3e,0x0,0x7f,0x0,0x63,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x0, -0x7f,0x0,0x3e,0x0,0x0,0x0,0x26,0x0,0x2d,0x0,0x19,0x0, -}; - -static const BitmapCharRec ch245 = {9,14,-1,0,11,ch245data}; - -/* char: 0xf4 */ - -static const GLubyte ch244data[] = { -0x3e,0x0,0x7f,0x0,0x63,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x0, -0x7f,0x0,0x3e,0x0,0x0,0x0,0x33,0x0,0x1e,0x0,0xc,0x0, -}; - -static const BitmapCharRec ch244 = {9,14,-1,0,11,ch244data}; - -/* char: 0xf3 */ - -static const GLubyte ch243data[] = { -0x3e,0x0,0x7f,0x0,0x63,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x0, -0x7f,0x0,0x3e,0x0,0x0,0x0,0x18,0x0,0xc,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch243 = {9,14,-1,0,11,ch243data}; - -/* char: 0xf2 */ - -static const GLubyte ch242data[] = { -0x3e,0x0,0x7f,0x0,0x63,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x0, -0x7f,0x0,0x3e,0x0,0x0,0x0,0xc,0x0,0x18,0x0,0x30,0x0, -}; - -static const BitmapCharRec ch242 = {9,14,-1,0,11,ch242data}; - -/* char: 0xf1 */ - -static const GLubyte ch241data[] = { -0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xe3,0xdf,0xce,0x0,0x4c,0x5a,0x32, -}; - -static const BitmapCharRec ch241 = {8,14,-1,0,10,ch241data}; - -/* char: 0xf0 */ - -static const GLubyte ch240data[] = { -0x3e,0x0,0x7f,0x0,0x63,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x0, -0x7f,0x0,0x3e,0x0,0x4c,0x0,0x38,0x0,0x36,0x0,0x60,0x0, -}; - -static const BitmapCharRec ch240 = {9,14,-1,0,11,ch240data}; - -/* char: 0xef */ - -static const GLubyte ch239data[] = { -0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x0,0xd8,0xd8, -}; - -static const BitmapCharRec ch239 = {5,13,0,0,4,ch239data}; - -/* char: 0xee */ - -static const GLubyte ch238data[] = { -0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x0,0xcc,0x78,0x30, -}; - -static const BitmapCharRec ch238 = {6,14,1,0,4,ch238data}; - -/* char: 0xed */ - -static const GLubyte ch237data[] = { -0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x0,0xc0,0x60,0x30, -}; - -static const BitmapCharRec ch237 = {4,14,0,0,4,ch237data}; - -/* char: 0xec */ - -static const GLubyte ch236data[] = { -0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x0,0x30,0x60,0xc0, -}; - -static const BitmapCharRec ch236 = {4,14,0,0,4,ch236data}; - -/* char: 0xeb */ - -static const GLubyte ch235data[] = { -0x3c,0x7f,0xe3,0xc0,0xc0,0xff,0xc3,0xc3,0x7e,0x3c,0x0,0x36,0x36, -}; - -static const BitmapCharRec ch235 = {8,13,-1,0,10,ch235data}; - -/* char: 0xea */ - -static const GLubyte ch234data[] = { -0x3c,0x7f,0xe3,0xc0,0xc0,0xff,0xc3,0xc3,0x7e,0x3c,0x0,0x66,0x3c,0x18, -}; - -static const BitmapCharRec ch234 = {8,14,-1,0,10,ch234data}; - -/* char: 0xe9 */ - -static const GLubyte ch233data[] = { -0x3c,0x7f,0xe3,0xc0,0xc0,0xff,0xc3,0xc3,0x7e,0x3c,0x0,0x18,0xc,0x6, -}; - -static const BitmapCharRec ch233 = {8,14,-1,0,10,ch233data}; - -/* char: 0xe8 */ - -static const GLubyte ch232data[] = { -0x3c,0x7f,0xe3,0xc0,0xc0,0xff,0xc3,0xc3,0x7e,0x3c,0x0,0x18,0x30,0x60, -}; - -static const BitmapCharRec ch232 = {8,14,-1,0,10,ch232data}; - -/* char: 0xe7 */ - -static const GLubyte ch231data[] = { -0x78,0x6c,0xc,0x38,0x3e,0x7f,0x63,0xc0,0xc0,0xc0,0xc0,0x63,0x7f,0x3e, -}; - -static const BitmapCharRec ch231 = {8,14,-1,4,10,ch231data}; - -/* char: 0xe6 */ - -static const GLubyte ch230data[] = { -0x75,0xe0,0xef,0xf8,0xc7,0x18,0xc6,0x0,0xe6,0x0,0x7f,0xf8,0xe,0x18,0xc6,0x18, -0xef,0xf0,0x7d,0xe0, -}; - -static const BitmapCharRec ch230 = {13,10,-1,0,15,ch230data}; - -/* char: 0xe5 */ - -static const GLubyte ch229data[] = { -0x76,0xee,0xc6,0xc6,0xe6,0x7e,0xe,0xc6,0xee,0x7c,0x38,0x6c,0x6c,0x38, -}; - -static const BitmapCharRec ch229 = {7,14,-1,0,9,ch229data}; - -/* char: 0xe4 */ - -static const GLubyte ch228data[] = { -0x76,0xee,0xc6,0xc6,0xe6,0x7e,0xe,0xc6,0xee,0x7c,0x0,0x6c,0x6c, -}; - -static const BitmapCharRec ch228 = {7,13,-1,0,9,ch228data}; - -/* char: 0xe3 */ - -static const GLubyte ch227data[] = { -0x76,0xee,0xc6,0xc6,0xe6,0x7e,0xe,0xc6,0xee,0x7c,0x0,0x4c,0x5a,0x32, -}; - -static const BitmapCharRec ch227 = {7,14,-1,0,9,ch227data}; - -/* char: 0xe2 */ - -static const GLubyte ch226data[] = { -0x76,0xee,0xc6,0xc6,0xe6,0x7e,0xe,0xc6,0xee,0x7c,0x0,0x66,0x3c,0x18, -}; - -static const BitmapCharRec ch226 = {7,14,-1,0,9,ch226data}; - -/* char: 0xe1 */ - -static const GLubyte ch225data[] = { -0x76,0xee,0xc6,0xc6,0xe6,0x7e,0xe,0xc6,0xee,0x7c,0x0,0x30,0x18,0xc, -}; - -static const BitmapCharRec ch225 = {7,14,-1,0,9,ch225data}; - -/* char: 0xe0 */ - -static const GLubyte ch224data[] = { -0x76,0xee,0xc6,0xc6,0xe6,0x7e,0xe,0xc6,0xee,0x7c,0x0,0x18,0x30,0x60, -}; - -static const BitmapCharRec ch224 = {7,14,-1,0,9,ch224data}; - -/* char: 0xdf */ - -static const GLubyte ch223data[] = { -0xdc,0xde,0xc6,0xc6,0xc6,0xc6,0xdc,0xdc,0xc6,0xc6,0xc6,0xc6,0x7c,0x38, -}; - -static const BitmapCharRec ch223 = {7,14,-1,0,9,ch223data}; - -/* char: 0xde */ - -static const GLubyte ch222data[] = { -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x80,0xc1,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc1,0xc0,0xff,0x80,0xff,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0, -}; - -static const BitmapCharRec ch222 = {10,14,-1,0,12,ch222data}; - -/* char: 0xdd */ - -static const GLubyte ch221data[] = { -0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0xf,0x0,0x19,0x80, -0x30,0xc0,0x30,0xc0,0x60,0x60,0x60,0x60,0xc0,0x30,0xc0,0x30,0x0,0x0,0x6,0x0, -0x3,0x0,0x1,0x80, -}; - -static const BitmapCharRec ch221 = {12,18,-1,0,14,ch221data}; - -/* char: 0xdc */ - -static const GLubyte ch220data[] = { -0x1f,0x0,0x7f,0xc0,0x60,0xc0,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0x0,0x0,0x19,0x80, -0x19,0x80, -}; - -static const BitmapCharRec ch220 = {11,17,-1,0,13,ch220data}; - -/* char: 0xdb */ - -static const GLubyte ch219data[] = { -0x1f,0x0,0x7f,0xc0,0x60,0xc0,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0x0,0x0,0x19,0x80, -0xf,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch219 = {11,18,-1,0,13,ch219data}; - -/* char: 0xda */ - -static const GLubyte ch218data[] = { -0x1f,0x0,0x7f,0xc0,0x60,0xc0,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0x0,0x0,0xc,0x0, -0x6,0x0,0x3,0x0, -}; - -static const BitmapCharRec ch218 = {11,18,-1,0,13,ch218data}; - -/* char: 0xd9 */ - -static const GLubyte ch217data[] = { -0x1f,0x0,0x7f,0xc0,0x60,0xc0,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0x0,0x0,0x6,0x0, -0xc,0x0,0x18,0x0, -}; - -static const BitmapCharRec ch217 = {11,18,-1,0,13,ch217data}; - -/* char: 0xd8 */ - -static const GLubyte ch216data[] = { -0xc7,0xc0,0xff,0xf0,0x78,0x38,0x38,0x18,0x6c,0x1c,0x6e,0xc,0x67,0xc,0x63,0x8c, -0x61,0xcc,0x70,0xdc,0x30,0x78,0x38,0x38,0x1f,0xfc,0x7,0xcc, -}; - -static const BitmapCharRec ch216 = {14,14,0,0,15,ch216data}; - -/* char: 0xd7 */ - -static const GLubyte ch215data[] = { -0xc0,0xc0,0x61,0x80,0x33,0x0,0x1e,0x0,0xc,0x0,0x1e,0x0,0x33,0x0,0x61,0x80, -0xc0,0xc0, -}; - -static const BitmapCharRec ch215 = {10,9,0,0,10,ch215data}; - -/* char: 0xd6 */ - -static const GLubyte ch214data[] = { -0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30,0xe0,0x38,0xc0,0x18,0xc0,0x18,0xc0,0x18, -0xc0,0x18,0xe0,0x38,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80,0x0,0x0,0xd,0x80, -0xd,0x80, -}; - -static const BitmapCharRec ch214 = {13,17,-1,0,15,ch214data}; - -/* char: 0xd5 */ - -static const GLubyte ch213data[] = { -0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30,0xe0,0x38,0xc0,0x18,0xc0,0x18,0xc0,0x18, -0xc0,0x18,0xe0,0x38,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80,0x0,0x0,0x9,0x80, -0xb,0x40,0x6,0x40, -}; - -static const BitmapCharRec ch213 = {13,18,-1,0,15,ch213data}; - -/* char: 0xd4 */ - -static const GLubyte ch212data[] = { -0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30,0xe0,0x38,0xc0,0x18,0xc0,0x18,0xc0,0x18, -0xc0,0x18,0xe0,0x38,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80,0x0,0x0,0xc,0xc0, -0x7,0x80,0x3,0x0, -}; - -static const BitmapCharRec ch212 = {13,18,-1,0,15,ch212data}; - -/* char: 0xd3 */ - -static const GLubyte ch211data[] = { -0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30,0xe0,0x38,0xc0,0x18,0xc0,0x18,0xc0,0x18, -0xc0,0x18,0xe0,0x38,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80,0x0,0x0,0x3,0x0, -0x1,0x80,0x0,0xc0, -}; - -static const BitmapCharRec ch211 = {13,18,-1,0,15,ch211data}; - -/* char: 0xd2 */ - -static const GLubyte ch210data[] = { -0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30,0xe0,0x38,0xc0,0x18,0xc0,0x18,0xc0,0x18, -0xc0,0x18,0xe0,0x38,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80,0x0,0x0,0x3,0x0, -0x6,0x0,0xc,0x0, -}; - -static const BitmapCharRec ch210 = {13,18,-1,0,15,ch210data}; - -/* char: 0xd1 */ - -static const GLubyte ch209data[] = { -0xc0,0x60,0xc0,0xe0,0xc1,0xe0,0xc1,0xe0,0xc3,0x60,0xc6,0x60,0xc6,0x60,0xcc,0x60, -0xcc,0x60,0xd8,0x60,0xd8,0x60,0xf0,0x60,0xe0,0x60,0xe0,0x60,0x0,0x0,0x13,0x0, -0x16,0x80,0xc,0x80, -}; - -static const BitmapCharRec ch209 = {11,18,-1,0,13,ch209data}; - -/* char: 0xd0 */ - -static const GLubyte ch208data[] = { -0x7f,0x80,0x7f,0xc0,0x60,0xe0,0x60,0x60,0x60,0x30,0x60,0x30,0xfc,0x30,0xfc,0x30, -0x60,0x30,0x60,0x30,0x60,0x60,0x60,0xe0,0x7f,0xc0,0x7f,0x80, -}; - -static const BitmapCharRec ch208 = {12,14,0,0,13,ch208data}; - -/* char: 0xcf */ - -static const GLubyte ch207data[] = { -0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x0,0xcc, -0xcc, -}; - -static const BitmapCharRec ch207 = {6,17,0,0,6,ch207data}; - -/* char: 0xce */ - -static const GLubyte ch206data[] = { -0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x0,0xcc, -0x78,0x30, -}; - -static const BitmapCharRec ch206 = {6,18,0,0,6,ch206data}; - -/* char: 0xcd */ - -static const GLubyte ch205data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0xc0, -0x60,0x30, -}; - -static const BitmapCharRec ch205 = {4,18,-2,0,6,ch205data}; - -/* char: 0xcc */ - -static const GLubyte ch204data[] = { -0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x0,0x30, -0x60,0xc0, -}; - -static const BitmapCharRec ch204 = {4,18,0,0,6,ch204data}; - -/* char: 0xcb */ - -static const GLubyte ch203data[] = { -0xff,0x80,0xff,0x80,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x0, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80,0xff,0x80,0x0,0x0,0x33,0x0, -0x33,0x0, -}; - -static const BitmapCharRec ch203 = {9,17,-1,0,11,ch203data}; - -/* char: 0xca */ - -static const GLubyte ch202data[] = { -0xff,0x80,0xff,0x80,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x0, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80,0xff,0x80,0x0,0x0,0x33,0x0, -0x1e,0x0,0xc,0x0, -}; - -static const BitmapCharRec ch202 = {9,18,-1,0,11,ch202data}; - -/* char: 0xc9 */ - -static const GLubyte ch201data[] = { -0xff,0x80,0xff,0x80,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x0, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80,0xff,0x80,0x0,0x0,0xc,0x0, -0x6,0x0,0x3,0x0, -}; - -static const BitmapCharRec ch201 = {9,18,-1,0,11,ch201data}; - -/* char: 0xc8 */ - -static const GLubyte ch200data[] = { -0xff,0x80,0xff,0x80,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x0, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80,0xff,0x80,0x0,0x0,0xc,0x0, -0x18,0x0,0x30,0x0, -}; - -static const BitmapCharRec ch200 = {9,18,-1,0,11,ch200data}; - -/* char: 0xc7 */ - -static const GLubyte ch199data[] = { -0x1e,0x0,0x1b,0x0,0x3,0x0,0xe,0x0,0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30, -0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xe0,0x0,0x60,0x30,0x70,0x70, -0x3f,0xe0,0xf,0x80, -}; - -static const BitmapCharRec ch199 = {12,18,-1,4,14,ch199data}; - -/* char: 0xc6 */ - -static const GLubyte ch198data[] = { -0xc1,0xff,0xc1,0xff,0x61,0x80,0x61,0x80,0x7f,0x80,0x3f,0x80,0x31,0xfe,0x31,0xfe, -0x19,0x80,0x19,0x80,0xd,0x80,0xd,0x80,0x7,0xff,0x7,0xff, -}; - -static const BitmapCharRec ch198 = {16,14,-1,0,18,ch198data}; - -/* char: 0xc5 */ - -static const GLubyte ch197data[] = { -0xc0,0x30,0xc0,0x30,0x60,0x60,0x60,0x60,0x7f,0xe0,0x3f,0xc0,0x30,0xc0,0x30,0xc0, -0x19,0x80,0x19,0x80,0xf,0x0,0xf,0x0,0x6,0x0,0x6,0x0,0xf,0x0,0x19,0x80, -0x19,0x80,0xf,0x0, -}; - -static const BitmapCharRec ch197 = {12,18,0,0,12,ch197data}; - -/* char: 0xc4 */ - -static const GLubyte ch196data[] = { -0xc0,0x30,0xc0,0x30,0x60,0x60,0x60,0x60,0x7f,0xe0,0x3f,0xc0,0x30,0xc0,0x30,0xc0, -0x19,0x80,0x19,0x80,0xf,0x0,0xf,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x19,0x80, -0x19,0x80, -}; - -static const BitmapCharRec ch196 = {12,17,0,0,12,ch196data}; - -/* char: 0xc3 */ - -static const GLubyte ch195data[] = { -0xc0,0x30,0xc0,0x30,0x60,0x60,0x60,0x60,0x7f,0xe0,0x3f,0xc0,0x30,0xc0,0x30,0xc0, -0x19,0x80,0x19,0x80,0xf,0x0,0xf,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x13,0x0, -0x16,0x80,0xc,0x80, -}; - -static const BitmapCharRec ch195 = {12,18,0,0,12,ch195data}; - -/* char: 0xc2 */ - -static const GLubyte ch194data[] = { -0xc0,0x30,0xc0,0x30,0x60,0x60,0x60,0x60,0x7f,0xe0,0x3f,0xc0,0x30,0xc0,0x30,0xc0, -0x19,0x80,0x19,0x80,0xf,0x0,0xf,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x19,0x80, -0xf,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch194 = {12,18,0,0,12,ch194data}; - -/* char: 0xc1 */ - -static const GLubyte ch193data[] = { -0xc0,0x30,0xc0,0x30,0x60,0x60,0x60,0x60,0x7f,0xe0,0x3f,0xc0,0x30,0xc0,0x30,0xc0, -0x19,0x80,0x19,0x80,0xf,0x0,0xf,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x6,0x0, -0x3,0x0,0x1,0x80, -}; - -static const BitmapCharRec ch193 = {12,18,0,0,12,ch193data}; - -/* char: 0xc0 */ - -static const GLubyte ch192data[] = { -0xc0,0x30,0xc0,0x30,0x60,0x60,0x60,0x60,0x7f,0xe0,0x3f,0xc0,0x30,0xc0,0x30,0xc0, -0x19,0x80,0x19,0x80,0xf,0x0,0xf,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x6,0x0, -0xc,0x0,0x18,0x0, -}; - -static const BitmapCharRec ch192 = {12,18,0,0,12,ch192data}; - -/* char: 0xbf */ - -static const GLubyte ch191data[] = { -0x7c,0xfe,0xc6,0xc6,0xe0,0x70,0x38,0x18,0x18,0x18,0x0,0x0,0x18,0x18, -}; - -static const BitmapCharRec ch191 = {7,14,-1,4,10,ch191data}; - -/* char: 0xbe */ - -static const GLubyte ch190data[] = { -0x18,0x18,0x18,0x18,0xc,0xfc,0x6,0xd8,0x6,0x78,0x73,0x38,0xf9,0x18,0x99,0x88, -0x30,0xc0,0x30,0xc0,0x98,0x60,0xf8,0x30,0x70,0x30, -}; - -static const BitmapCharRec ch190 = {14,13,0,0,15,ch190data}; - -/* char: 0xbd */ - -static const GLubyte ch189data[] = { -0x30,0xf8,0x30,0xf8,0x18,0x60,0xc,0x30,0xc,0x18,0x66,0x98,0x62,0xf8,0x63,0x70, -0x61,0x80,0x61,0x80,0xe0,0xc0,0xe0,0x60,0x60,0x60, -}; - -static const BitmapCharRec ch189 = {13,13,-1,0,15,ch189data}; - -/* char: 0xbc */ - -static const GLubyte ch188data[] = { -0x30,0x30,0x30,0x30,0x19,0xf8,0xd,0xb0,0xc,0xf0,0x66,0x70,0x62,0x30,0x63,0x10, -0x61,0x80,0x61,0x80,0xe0,0xc0,0xe0,0x60,0x60,0x60, -}; - -static const BitmapCharRec ch188 = {13,13,-1,0,15,ch188data}; - -/* char: 0xbb */ - -static const GLubyte ch187data[] = { -0x90,0xd8,0x6c,0x36,0x36,0x6c,0xd8,0x90, -}; - -static const BitmapCharRec ch187 = {7,8,-1,-1,9,ch187data}; - -/* char: 0xba */ - -static const GLubyte ch186data[] = { -0xf8,0x0,0x70,0xd8,0x88,0x88,0xd8,0x70, -}; - -static const BitmapCharRec ch186 = {5,8,-1,-6,7,ch186data}; - -/* char: 0xb9 */ - -static const GLubyte ch185data[] = { -0x60,0x60,0x60,0x60,0x60,0xe0,0xe0,0x60, -}; - -static const BitmapCharRec ch185 = {3,8,-1,-5,6,ch185data}; - -/* char: 0xb8 */ - -static const GLubyte ch184data[] = { -0xf0,0xd8,0x18,0x70,0x60, -}; - -static const BitmapCharRec ch184 = {5,5,0,4,5,ch184data}; - -/* char: 0xb7 */ - -static const GLubyte ch183data[] = { -0xc0,0xc0, -}; - -static const BitmapCharRec ch183 = {2,2,-1,-4,4,ch183data}; - -/* char: 0xb6 */ - -static const GLubyte ch182data[] = { -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x32,0x72,0xf2,0xf2,0xf2,0xf2, -0x72,0x3f, -}; - -static const BitmapCharRec ch182 = {8,18,-1,4,10,ch182data}; - -/* char: 0xb5 */ - -static const GLubyte ch181data[] = { -0xc0,0xc0,0xc0,0xc0,0xdb,0xff,0xe7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, -}; - -static const BitmapCharRec ch181 = {8,14,-1,4,10,ch181data}; - -/* char: 0xb4 */ - -static const GLubyte ch180data[] = { -0xc0,0x60,0x30, -}; - -static const BitmapCharRec ch180 = {4,3,0,-11,4,ch180data}; - -/* char: 0xb3 */ - -static const GLubyte ch179data[] = { -0x70,0xf8,0x98,0x30,0x30,0x98,0xf8,0x70, -}; - -static const BitmapCharRec ch179 = {5,8,0,-5,6,ch179data}; - -/* char: 0xb2 */ - -static const GLubyte ch178data[] = { -0xf8,0xf8,0x60,0x30,0x18,0x98,0xf8,0x70, -}; - -static const BitmapCharRec ch178 = {5,8,0,-5,6,ch178data}; - -/* char: 0xb1 */ - -static const GLubyte ch177data[] = { -0xff,0xff,0x0,0x18,0x18,0x18,0xff,0xff,0x18,0x18,0x18, -}; - -static const BitmapCharRec ch177 = {8,11,-1,0,10,ch177data}; - -/* char: 0xb0 */ - -static const GLubyte ch176data[] = { -0x70,0xd8,0x88,0xd8,0x70, -}; - -static const BitmapCharRec ch176 = {5,5,-1,-8,7,ch176data}; - -/* char: 0xaf */ - -static const GLubyte ch175data[] = { -0xf8, -}; - -static const BitmapCharRec ch175 = {5,1,0,-12,5,ch175data}; - -/* char: 0xae */ - -static const GLubyte ch174data[] = { -0xf,0x80,0x30,0x60,0x40,0x10,0x48,0x50,0x88,0x88,0x89,0x8,0x8f,0x88,0x88,0x48, -0x88,0x48,0x4f,0x90,0x40,0x10,0x30,0x60,0xf,0x80, -}; - -static const BitmapCharRec ch174 = {13,13,-1,0,14,ch174data}; - -/* char: 0xad */ - -static const GLubyte ch173data[] = { -0xf8,0xf8, -}; - -static const BitmapCharRec ch173 = {5,2,-1,-4,7,ch173data}; - -/* char: 0xac */ - -static const GLubyte ch172data[] = { -0x1,0x80,0x1,0x80,0x1,0x80,0xff,0x80,0xff,0x80, -}; - -static const BitmapCharRec ch172 = {9,5,-1,-3,11,ch172data}; - -/* char: 0xab */ - -static const GLubyte ch171data[] = { -0x12,0x36,0x6c,0xd8,0xd8,0x6c,0x36,0x12, -}; - -static const BitmapCharRec ch171 = {7,8,-1,-1,9,ch171data}; - -/* char: 0xaa */ - -static const GLubyte ch170data[] = { -0xf8,0x0,0x68,0xd8,0x48,0x38,0xc8,0x70, -}; - -static const BitmapCharRec ch170 = {5,8,-1,-6,7,ch170data}; - -/* char: 0xa9 */ - -static const GLubyte ch169data[] = { -0xf,0x80,0x30,0x60,0x40,0x10,0x47,0x10,0x88,0x88,0x90,0x8,0x90,0x8,0x90,0x8, -0x88,0x88,0x47,0x10,0x40,0x10,0x30,0x60,0xf,0x80, -}; - -static const BitmapCharRec ch169 = {13,13,-1,0,15,ch169data}; - -/* char: 0xa8 */ - -static const GLubyte ch168data[] = { -0xd8,0xd8, -}; - -static const BitmapCharRec ch168 = {5,2,0,-11,6,ch168data}; - -/* char: 0xa7 */ - -static const GLubyte ch167data[] = { -0x3c,0x7e,0xc3,0xc3,0x7,0xe,0x3e,0x73,0xe3,0xc3,0xc7,0x6e,0x7c,0xf0,0xc3,0xc3, -0x7e,0x3c, -}; - -static const BitmapCharRec ch167 = {8,18,-1,4,10,ch167data}; - -/* char: 0xa6 */ - -static const GLubyte ch166data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0x0,0x0,0x0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0, -}; - -static const BitmapCharRec ch166 = {2,17,-1,3,4,ch166data}; - -/* char: 0xa5 */ - -static const GLubyte ch165data[] = { -0x18,0x18,0x18,0x18,0xff,0x18,0xff,0x3c,0x66,0x66,0x66,0xc3,0xc3, -}; - -static const BitmapCharRec ch165 = {8,13,-1,0,10,ch165data}; - -/* char: 0xa4 */ - -static const GLubyte ch164data[] = { -0xc3,0xff,0x66,0x66,0x66,0xff,0xc3, -}; - -static const BitmapCharRec ch164 = {8,7,-1,-3,10,ch164data}; - -/* char: 0xa3 */ - -static const GLubyte ch163data[] = { -0xdf,0x0,0xff,0x80,0x60,0x80,0x30,0x0,0x18,0x0,0x18,0x0,0x7e,0x0,0x30,0x0, -0x60,0x0,0x61,0x80,0x61,0x80,0x3f,0x0,0x1e,0x0, -}; - -static const BitmapCharRec ch163 = {9,13,0,0,10,ch163data}; - -/* char: 0xa2 */ - -static const GLubyte ch162data[] = { -0x10,0x10,0x3e,0x7f,0x6b,0xc8,0xc8,0xc8,0xc8,0x6b,0x7f,0x3e,0x4,0x4, -}; - -static const BitmapCharRec ch162 = {8,14,-1,2,10,ch162data}; - -/* char: 0xa1 */ - -static const GLubyte ch161data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x40,0x40,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch161 = {2,14,-2,4,6,ch161data}; - -/* char: 0xa0 */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch160data[] = { 0x0 }; -static const BitmapCharRec ch160 = {1,1,0,0,5,ch160data}; -#else -static const BitmapCharRec ch160 = {0,0,0,0,5,0}; -#endif - -/* char: 0x7e '~' */ - -static const GLubyte ch126data[] = { -0xcc,0x7e,0x33, -}; - -static const BitmapCharRec ch126 = {8,3,-1,-4,10,ch126data}; - -/* char: 0x7d '}' */ - -static const GLubyte ch125data[] = { -0xc0,0x60,0x30,0x30,0x30,0x30,0x30,0x30,0x18,0xc,0x18,0x30,0x30,0x30,0x30,0x30, -0x60,0xc0, -}; - -static const BitmapCharRec ch125 = {6,18,0,4,6,ch125data}; - -/* char: 0x7c '|' */ - -static const GLubyte ch124data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0, -}; - -static const BitmapCharRec ch124 = {2,18,-1,4,4,ch124data}; - -/* char: 0x7b '{' */ - -static const GLubyte ch123data[] = { -0xc,0x18,0x30,0x30,0x30,0x30,0x30,0x30,0x60,0xc0,0x60,0x30,0x30,0x30,0x30,0x30, -0x18,0xc, -}; - -static const BitmapCharRec ch123 = {6,18,0,4,6,ch123data}; - -/* char: 0x7a 'z' */ - -static const GLubyte ch122data[] = { -0xfe,0xfe,0xc0,0x60,0x30,0x18,0xc,0x6,0xfe,0xfe, -}; - -static const BitmapCharRec ch122 = {7,10,-1,0,9,ch122data}; - -/* char: 0x79 'y' */ - -static const GLubyte ch121data[] = { -0x70,0x70,0x18,0x18,0x18,0x18,0x3c,0x24,0x66,0x66,0x66,0xc3,0xc3,0xc3, -}; - -static const BitmapCharRec ch121 = {8,14,-1,4,10,ch121data}; - -/* char: 0x78 'x' */ - -static const GLubyte ch120data[] = { -0xc3,0xe7,0x66,0x3c,0x18,0x18,0x3c,0x66,0xe7,0xc3, -}; - -static const BitmapCharRec ch120 = {8,10,-1,0,10,ch120data}; - -/* char: 0x77 'w' */ - -static const GLubyte ch119data[] = { -0x19,0x80,0x19,0x80,0x39,0xc0,0x29,0x40,0x69,0x60,0x66,0x60,0x66,0x60,0xc6,0x30, -0xc6,0x30,0xc6,0x30, -}; - -static const BitmapCharRec ch119 = {12,10,-1,0,14,ch119data}; - -/* char: 0x76 'v' */ - -static const GLubyte ch118data[] = { -0x18,0x18,0x3c,0x24,0x66,0x66,0x66,0xc3,0xc3,0xc3, -}; - -static const BitmapCharRec ch118 = {8,10,-1,0,10,ch118data}; - -/* char: 0x75 'u' */ - -static const GLubyte ch117data[] = { -0x73,0xfb,0xc7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, -}; - -static const BitmapCharRec ch117 = {8,10,-1,0,10,ch117data}; - -/* char: 0x74 't' */ - -static const GLubyte ch116data[] = { -0x18,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0xfc,0xfc,0x30,0x30,0x30, -}; - -static const BitmapCharRec ch116 = {6,13,0,0,6,ch116data}; - -/* char: 0x73 's' */ - -static const GLubyte ch115data[] = { -0x78,0xfc,0xc6,0x6,0x3e,0xfc,0xc0,0xc6,0x7e,0x3c, -}; - -static const BitmapCharRec ch115 = {7,10,-1,0,9,ch115data}; - -/* char: 0x72 'r' */ - -static const GLubyte ch114data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xe0,0xd8,0xd8, -}; - -static const BitmapCharRec ch114 = {5,10,-1,0,6,ch114data}; - -/* char: 0x71 'q' */ - -static const GLubyte ch113data[] = { -0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x3d,0x80,0x7f,0x80,0x63,0x80,0xc1,0x80, -0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x80,0x7f,0x80,0x3d,0x80, -}; - -static const BitmapCharRec ch113 = {9,14,-1,4,11,ch113data}; - -/* char: 0x70 'p' */ - -static const GLubyte ch112data[] = { -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xde,0x0,0xff,0x0,0xe3,0x0,0xc1,0x80, -0xc1,0x80,0xc1,0x80,0xc1,0x80,0xe3,0x0,0xff,0x0,0xde,0x0, -}; - -static const BitmapCharRec ch112 = {9,14,-1,4,11,ch112data}; - -/* char: 0x6f 'o' */ - -static const GLubyte ch111data[] = { -0x3e,0x0,0x7f,0x0,0x63,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x0, -0x7f,0x0,0x3e,0x0, -}; - -static const BitmapCharRec ch111 = {9,10,-1,0,11,ch111data}; - -/* char: 0x6e 'n' */ - -static const GLubyte ch110data[] = { -0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xe3,0xdf,0xce, -}; - -static const BitmapCharRec ch110 = {8,10,-1,0,10,ch110data}; - -/* char: 0x6d 'm' */ - -static const GLubyte ch109data[] = { -0xc6,0x30,0xc6,0x30,0xc6,0x30,0xc6,0x30,0xc6,0x30,0xc6,0x30,0xc6,0x30,0xe7,0x30, -0xde,0xf0,0xcc,0x60, -}; - -static const BitmapCharRec ch109 = {12,10,-1,0,14,ch109data}; - -/* char: 0x6c 'l' */ - -static const GLubyte ch108data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -}; - -static const BitmapCharRec ch108 = {2,14,-1,0,4,ch108data}; - -/* char: 0x6b 'k' */ - -static const GLubyte ch107data[] = { -0xc7,0xc6,0xce,0xcc,0xd8,0xf8,0xf0,0xd8,0xcc,0xc6,0xc0,0xc0,0xc0,0xc0, -}; - -static const BitmapCharRec ch107 = {8,14,-1,0,9,ch107data}; - -/* char: 0x6a 'j' */ - -static const GLubyte ch106data[] = { -0xe0,0xf0,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x0,0x0, -0x30,0x30, -}; - -static const BitmapCharRec ch106 = {4,18,1,4,4,ch106data}; - -/* char: 0x69 'i' */ - -static const GLubyte ch105data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch105 = {2,14,-1,0,4,ch105data}; - -/* char: 0x68 'h' */ - -static const GLubyte ch104data[] = { -0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xe3,0xdf,0xce,0xc0,0xc0,0xc0,0xc0, -}; - -static const BitmapCharRec ch104 = {8,14,-1,0,10,ch104data}; - -/* char: 0x67 'g' */ - -static const GLubyte ch103data[] = { -0x1c,0x0,0x7f,0x0,0x63,0x0,0x1,0x80,0x3d,0x80,0x7f,0x80,0x63,0x80,0xc1,0x80, -0xc1,0x80,0xc1,0x80,0xc1,0x80,0x61,0x80,0x7f,0x80,0x3d,0x80, -}; - -static const BitmapCharRec ch103 = {9,14,-1,4,11,ch103data}; - -/* char: 0x66 'f' */ - -static const GLubyte ch102data[] = { -0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xfc,0xfc,0x30,0x30,0x3c,0x1c, -}; - -static const BitmapCharRec ch102 = {6,14,0,0,6,ch102data}; - -/* char: 0x65 'e' */ - -static const GLubyte ch101data[] = { -0x3c,0x7f,0xe3,0xc0,0xc0,0xff,0xc3,0xc3,0x7e,0x3c, -}; - -static const BitmapCharRec ch101 = {8,10,-1,0,10,ch101data}; - -/* char: 0x64 'd' */ - -static const GLubyte ch100data[] = { -0x3d,0x80,0x7f,0x80,0x63,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x63,0x80, -0x7f,0x80,0x3d,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80, -}; - -static const BitmapCharRec ch100 = {9,14,-1,0,11,ch100data}; - -/* char: 0x63 'c' */ - -static const GLubyte ch99data[] = { -0x3e,0x7f,0x63,0xc0,0xc0,0xc0,0xc0,0x63,0x7f,0x3e, -}; - -static const BitmapCharRec ch99 = {8,10,-1,0,10,ch99data}; - -/* char: 0x62 'b' */ - -static const GLubyte ch98data[] = { -0xde,0x0,0xff,0x0,0xe3,0x0,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xe3,0x0, -0xff,0x0,0xde,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0, -}; - -static const BitmapCharRec ch98 = {9,14,-1,0,11,ch98data}; - -/* char: 0x61 'a' */ - -static const GLubyte ch97data[] = { -0x76,0xee,0xc6,0xc6,0xe6,0x7e,0xe,0xc6,0xee,0x7c, -}; - -static const BitmapCharRec ch97 = {7,10,-1,0,9,ch97data}; - -/* char: 0x60 '`' */ - -static const GLubyte ch96data[] = { -0xc0,0xc0,0x80,0x80,0x40, -}; - -static const BitmapCharRec ch96 = {2,5,-1,-9,4,ch96data}; - -/* char: 0x5f '_' */ - -static const GLubyte ch95data[] = { -0xff,0xc0,0xff,0xc0, -}; - -static const BitmapCharRec ch95 = {10,2,0,4,10,ch95data}; - -/* char: 0x5e '^' */ - -static const GLubyte ch94data[] = { -0x82,0xc6,0x6c,0x38,0x10, -}; - -static const BitmapCharRec ch94 = {7,5,-1,-8,9,ch94data}; - -/* char: 0x5d ']' */ - -static const GLubyte ch93data[] = { -0xf0,0xf0,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, -0xf0,0xf0, -}; - -static const BitmapCharRec ch93 = {4,18,0,4,5,ch93data}; - -/* char: 0x5c '\' */ - -static const GLubyte ch92data[] = { -0x18,0x18,0x10,0x10,0x30,0x30,0x20,0x20,0x60,0x60,0x40,0x40,0xc0,0xc0, -}; - -static const BitmapCharRec ch92 = {5,14,0,0,5,ch92data}; - -/* char: 0x5b '[' */ - -static const GLubyte ch91data[] = { -0xf0,0xf0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xf0,0xf0, -}; - -static const BitmapCharRec ch91 = {4,18,-1,4,5,ch91data}; - -/* char: 0x5a 'Z' */ - -static const GLubyte ch90data[] = { -0xff,0xc0,0xff,0xc0,0xc0,0x0,0x60,0x0,0x30,0x0,0x18,0x0,0x1c,0x0,0xc,0x0, -0x6,0x0,0x3,0x0,0x1,0x80,0x0,0xc0,0xff,0xc0,0xff,0xc0, -}; - -static const BitmapCharRec ch90 = {10,14,-1,0,12,ch90data}; - -/* char: 0x59 'Y' */ - -static const GLubyte ch89data[] = { -0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0xf,0x0,0x19,0x80, -0x30,0xc0,0x30,0xc0,0x60,0x60,0x60,0x60,0xc0,0x30,0xc0,0x30, -}; - -static const BitmapCharRec ch89 = {12,14,-1,0,14,ch89data}; - -/* char: 0x58 'X' */ - -static const GLubyte ch88data[] = { -0xc0,0x60,0xe0,0xe0,0x60,0xc0,0x71,0xc0,0x31,0x80,0x1b,0x0,0xe,0x0,0xe,0x0, -0x1b,0x0,0x31,0x80,0x71,0xc0,0x60,0xc0,0xe0,0xe0,0xc0,0x60, -}; - -static const BitmapCharRec ch88 = {11,14,-1,0,13,ch88data}; - -/* char: 0x57 'W' */ - -static const GLubyte ch87data[] = { -0x18,0x18,0x18,0x18,0x1c,0x38,0x34,0x2c,0x36,0x6c,0x36,0x6c,0x66,0x66,0x66,0x66, -0x62,0x46,0x63,0xc6,0xc3,0xc3,0xc1,0x83,0xc1,0x83,0xc1,0x83, -}; - -static const BitmapCharRec ch87 = {16,14,-1,0,18,ch87data}; - -/* char: 0x56 'V' */ - -static const GLubyte ch86data[] = { -0x6,0x0,0xf,0x0,0xf,0x0,0x19,0x80,0x19,0x80,0x19,0x80,0x30,0xc0,0x30,0xc0, -0x30,0xc0,0x60,0x60,0x60,0x60,0x60,0x60,0xc0,0x30,0xc0,0x30, -}; - -static const BitmapCharRec ch86 = {12,14,-1,0,14,ch86data}; - -/* char: 0x55 'U' */ - -static const GLubyte ch85data[] = { -0x1f,0x0,0x7f,0xc0,0x60,0xc0,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -}; - -static const BitmapCharRec ch85 = {11,14,-1,0,13,ch85data}; - -/* char: 0x54 'T' */ - -static const GLubyte ch84data[] = { -0xc,0x0,0xc,0x0,0xc,0x0,0xc,0x0,0xc,0x0,0xc,0x0,0xc,0x0,0xc,0x0, -0xc,0x0,0xc,0x0,0xc,0x0,0xc,0x0,0xff,0xc0,0xff,0xc0, -}; - -static const BitmapCharRec ch84 = {10,14,-1,0,12,ch84data}; - -/* char: 0x53 'S' */ - -static const GLubyte ch83data[] = { -0x3f,0x0,0x7f,0xc0,0xe0,0xe0,0xc0,0x60,0x0,0x60,0x0,0xe0,0x3,0xc0,0x1f,0x0, -0x7c,0x0,0xe0,0x0,0xc0,0x60,0xe0,0xe0,0x7f,0xc0,0x1f,0x0, -}; - -static const BitmapCharRec ch83 = {11,14,-1,0,13,ch83data}; - -/* char: 0x52 'R' */ - -static const GLubyte ch82data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc1,0x80,0xc1,0x80,0xff,0x0,0xff,0x80, -0xc1,0xc0,0xc0,0xc0,0xc0,0xc0,0xc1,0xc0,0xff,0x80,0xff,0x0, -}; - -static const BitmapCharRec ch82 = {10,14,-1,0,12,ch82data}; - -/* char: 0x51 'Q' */ - -static const GLubyte ch81data[] = { -0x0,0x30,0xf,0xb0,0x3f,0xe0,0x70,0xf0,0x61,0xb0,0xe1,0xb8,0xc0,0x18,0xc0,0x18, -0xc0,0x18,0xc0,0x18,0xe0,0x38,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80, -}; - -static const BitmapCharRec ch81 = {13,15,-1,1,15,ch81data}; - -/* char: 0x50 'P' */ - -static const GLubyte ch80data[] = { -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x80, -0xc1,0xc0,0xc0,0xc0,0xc0,0xc0,0xc1,0xc0,0xff,0x80,0xff,0x0, -}; - -static const BitmapCharRec ch80 = {10,14,-1,0,12,ch80data}; - -/* char: 0x4f 'O' */ - -static const GLubyte ch79data[] = { -0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30,0xe0,0x38,0xc0,0x18,0xc0,0x18,0xc0,0x18, -0xc0,0x18,0xe0,0x38,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80, -}; - -static const BitmapCharRec ch79 = {13,14,-1,0,15,ch79data}; - -/* char: 0x4e 'N' */ - -static const GLubyte ch78data[] = { -0xc0,0x60,0xc0,0xe0,0xc1,0xe0,0xc1,0xe0,0xc3,0x60,0xc6,0x60,0xc6,0x60,0xcc,0x60, -0xcc,0x60,0xd8,0x60,0xf0,0x60,0xf0,0x60,0xe0,0x60,0xc0,0x60, -}; - -static const BitmapCharRec ch78 = {11,14,-1,0,13,ch78data}; - -/* char: 0x4d 'M' */ - -static const GLubyte ch77data[] = { -0xc3,0xc,0xc3,0xc,0xc7,0x8c,0xc4,0x8c,0xcc,0xcc,0xcc,0xcc,0xd8,0x6c,0xd8,0x6c, -0xf0,0x3c,0xf0,0x3c,0xe0,0x1c,0xe0,0x1c,0xc0,0xc,0xc0,0xc, -}; - -static const BitmapCharRec ch77 = {14,14,-1,0,16,ch77data}; - -/* char: 0x4c 'L' */ - -static const GLubyte ch76data[] = { -0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -}; - -static const BitmapCharRec ch76 = {8,14,-1,0,10,ch76data}; - -/* char: 0x4b 'K' */ - -static const GLubyte ch75data[] = { -0xc0,0x70,0xc0,0xe0,0xc1,0xc0,0xc3,0x80,0xc7,0x0,0xce,0x0,0xfc,0x0,0xf8,0x0, -0xdc,0x0,0xce,0x0,0xc7,0x0,0xc3,0x80,0xc1,0xc0,0xc0,0xe0, -}; - -static const BitmapCharRec ch75 = {12,14,-1,0,13,ch75data}; - -/* char: 0x4a 'J' */ - -static const GLubyte ch74data[] = { -0x3c,0x7e,0xe7,0xc3,0xc3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3, -}; - -static const BitmapCharRec ch74 = {8,14,-1,0,10,ch74data}; - -/* char: 0x49 'I' */ - -static const GLubyte ch73data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -}; - -static const BitmapCharRec ch73 = {2,14,-2,0,6,ch73data}; - -/* char: 0x48 'H' */ - -static const GLubyte ch72data[] = { -0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xff,0xe0,0xff,0xe0, -0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -}; - -static const BitmapCharRec ch72 = {11,14,-1,0,13,ch72data}; - -/* char: 0x47 'G' */ - -static const GLubyte ch71data[] = { -0xf,0xb0,0x3f,0xf0,0x70,0x70,0x60,0x30,0xe0,0x30,0xc1,0xf0,0xc1,0xf0,0xc0,0x0, -0xc0,0x0,0xe0,0x30,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80, -}; - -static const BitmapCharRec ch71 = {12,14,-1,0,14,ch71data}; - -/* char: 0x46 'F' */ - -static const GLubyte ch70data[] = { -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x0, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80,0xff,0x80, -}; - -static const BitmapCharRec ch70 = {9,14,-1,0,11,ch70data}; - -/* char: 0x45 'E' */ - -static const GLubyte ch69data[] = { -0xff,0x80,0xff,0x80,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x0,0xff,0x0, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80,0xff,0x80, -}; - -static const BitmapCharRec ch69 = {9,14,-1,0,11,ch69data}; - -/* char: 0x44 'D' */ - -static const GLubyte ch68data[] = { -0xff,0x0,0xff,0x80,0xc1,0xc0,0xc0,0xc0,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60, -0xc0,0x60,0xc0,0x60,0xc0,0xc0,0xc1,0xc0,0xff,0x80,0xff,0x0, -}; - -static const BitmapCharRec ch68 = {11,14,-1,0,13,ch68data}; - -/* char: 0x43 'C' */ - -static const GLubyte ch67data[] = { -0xf,0x80,0x3f,0xe0,0x70,0x70,0x60,0x30,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0, -0xc0,0x0,0xe0,0x0,0x60,0x30,0x70,0x70,0x3f,0xe0,0xf,0x80, -}; - -static const BitmapCharRec ch67 = {12,14,-1,0,14,ch67data}; - -/* char: 0x42 'B' */ - -static const GLubyte ch66data[] = { -0xff,0x80,0xff,0xc0,0xc0,0xe0,0xc0,0x60,0xc0,0x60,0xc0,0xe0,0xff,0xc0,0xff,0x80, -0xc1,0x80,0xc0,0xc0,0xc0,0xc0,0xc1,0xc0,0xff,0x80,0xff,0x0, -}; - -static const BitmapCharRec ch66 = {11,14,-1,0,13,ch66data}; - -/* char: 0x41 'A' */ - -static const GLubyte ch65data[] = { -0xc0,0x30,0xc0,0x30,0x60,0x60,0x60,0x60,0x7f,0xe0,0x3f,0xc0,0x30,0xc0,0x30,0xc0, -0x19,0x80,0x19,0x80,0xf,0x0,0xf,0x0,0x6,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch65 = {12,14,0,0,12,ch65data}; - -/* char: 0x40 '@' */ - -static const GLubyte ch64data[] = { -0x7,0xe0,0x1f,0xf0,0x38,0x0,0x70,0x0,0x67,0x70,0xcf,0xf8,0xcc,0xcc,0xcc,0x66, -0xcc,0x66,0xcc,0x63,0xc6,0x33,0x67,0x73,0x63,0xb3,0x30,0x6,0x1c,0xe,0xf,0xfc, -0x3,0xf0, -}; - -static const BitmapCharRec ch64 = {16,17,-1,3,18,ch64data}; - -/* char: 0x3f '?' */ - -static const GLubyte ch63data[] = { -0x30,0x30,0x0,0x0,0x30,0x30,0x30,0x38,0x1c,0xe,0xc6,0xc6,0xfe,0x7c, -}; - -static const BitmapCharRec ch63 = {7,14,-1,0,10,ch63data}; - -/* char: 0x3e '>' */ - -static const GLubyte ch62data[] = { -0xc0,0xf0,0x3c,0xe,0x3,0xe,0x3c,0xf0,0xc0, -}; - -static const BitmapCharRec ch62 = {8,9,-1,0,10,ch62data}; - -/* char: 0x3d '=' */ - -static const GLubyte ch61data[] = { -0xfe,0xfe,0x0,0x0,0xfe,0xfe, -}; - -static const BitmapCharRec ch61 = {7,6,-2,-2,11,ch61data}; - -/* char: 0x3c '<' */ - -static const GLubyte ch60data[] = { -0x3,0xf,0x3c,0x70,0xc0,0x70,0x3c,0xf,0x3, -}; - -static const BitmapCharRec ch60 = {8,9,-1,0,10,ch60data}; - -/* char: 0x3b ';' */ - -static const GLubyte ch59data[] = { -0x80,0x40,0x40,0xc0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch59 = {2,13,-1,3,5,ch59data}; - -/* char: 0x3a ':' */ - -static const GLubyte ch58data[] = { -0xc0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch58 = {2,10,-1,0,5,ch58data}; - -/* char: 0x39 '9' */ - -static const GLubyte ch57data[] = { -0x7c,0xfe,0xc6,0x3,0x3,0x3b,0x7f,0xc3,0xc3,0xc3,0xc7,0x7e,0x3c, -}; - -static const BitmapCharRec ch57 = {8,13,-1,0,10,ch57data}; - -/* char: 0x38 '8' */ - -static const GLubyte ch56data[] = { -0x3c,0x7e,0xe7,0xc3,0xc3,0x66,0x7e,0x66,0xc3,0xc3,0xe7,0x7e,0x3c, -}; - -static const BitmapCharRec ch56 = {8,13,-1,0,10,ch56data}; - -/* char: 0x37 '7' */ - -static const GLubyte ch55data[] = { -0x60,0x60,0x30,0x30,0x30,0x18,0x18,0xc,0xc,0x6,0x3,0xff,0xff, -}; - -static const BitmapCharRec ch55 = {8,13,-1,0,10,ch55data}; - -/* char: 0x36 '6' */ - -static const GLubyte ch54data[] = { -0x3c,0x7e,0xe3,0xc3,0xc3,0xc3,0xfe,0xdc,0xc0,0xc0,0x63,0x7f,0x3c, -}; - -static const BitmapCharRec ch54 = {8,13,-1,0,10,ch54data}; - -/* char: 0x35 '5' */ - -static const GLubyte ch53data[] = { -0x7c,0xfe,0xc7,0xc3,0x3,0x3,0xc7,0xfe,0xfc,0xc0,0xc0,0xfe,0xfe, -}; - -static const BitmapCharRec ch53 = {8,13,-1,0,10,ch53data}; - -/* char: 0x34 '4' */ - -static const GLubyte ch52data[] = { -0x3,0x0,0x3,0x0,0x3,0x0,0xff,0x80,0xff,0x80,0xc3,0x0,0x63,0x0,0x33,0x0, -0x33,0x0,0x1b,0x0,0xf,0x0,0x7,0x0,0x3,0x0, -}; - -static const BitmapCharRec ch52 = {9,13,-1,0,10,ch52data}; - -/* char: 0x33 '3' */ - -static const GLubyte ch51data[] = { -0x3c,0x7e,0xc7,0xc3,0x3,0x7,0x1e,0x1c,0x6,0xc3,0xc3,0x7e,0x3c, -}; - -static const BitmapCharRec ch51 = {8,13,-1,0,10,ch51data}; - -/* char: 0x32 '2' */ - -static const GLubyte ch50data[] = { -0xff,0xff,0xc0,0xe0,0x70,0x38,0x1c,0xe,0x7,0x3,0xc3,0xfe,0x3c, -}; - -static const BitmapCharRec ch50 = {8,13,-1,0,10,ch50data}; - -/* char: 0x31 '1' */ - -static const GLubyte ch49data[] = { -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0xf8,0x18, -}; - -static const BitmapCharRec ch49 = {5,13,-2,0,10,ch49data}; - -/* char: 0x30 '0' */ - -static const GLubyte ch48data[] = { -0x3c,0x7e,0x66,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x7e,0x3c, -}; - -static const BitmapCharRec ch48 = {8,13,-1,0,10,ch48data}; - -/* char: 0x2f '/' */ - -static const GLubyte ch47data[] = { -0xc0,0xc0,0x40,0x40,0x60,0x60,0x20,0x20,0x30,0x30,0x10,0x10,0x18,0x18, -}; - -static const BitmapCharRec ch47 = {5,14,0,0,5,ch47data}; - -/* char: 0x2e '.' */ - -static const GLubyte ch46data[] = { -0xc0,0xc0, -}; - -static const BitmapCharRec ch46 = {2,2,-1,0,5,ch46data}; - -/* char: 0x2d '-' */ - -static const GLubyte ch45data[] = { -0xff,0xff, -}; - -static const BitmapCharRec ch45 = {8,2,-1,-4,11,ch45data}; - -/* char: 0x2c ',' */ - -static const GLubyte ch44data[] = { -0x80,0x40,0x40,0xc0,0xc0, -}; - -static const BitmapCharRec ch44 = {2,5,-1,3,5,ch44data}; - -/* char: 0x2b '+' */ - -static const GLubyte ch43data[] = { -0x18,0x18,0x18,0x18,0xff,0xff,0x18,0x18,0x18,0x18, -}; - -static const BitmapCharRec ch43 = {8,10,-1,0,10,ch43data}; - -/* char: 0x2a '*' */ - -static const GLubyte ch42data[] = { -0x88,0x70,0x70,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch42 = {5,6,-1,-8,7,ch42data}; - -/* char: 0x29 ')' */ - -static const GLubyte ch41data[] = { -0x80,0xc0,0x60,0x60,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x60,0x60, -0xc0,0x80, -}; - -static const BitmapCharRec ch41 = {4,18,-1,4,6,ch41data}; - -/* char: 0x28 '(' */ - -static const GLubyte ch40data[] = { -0x10,0x30,0x60,0x60,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x60,0x60, -0x30,0x10, -}; - -static const BitmapCharRec ch40 = {4,18,-1,4,6,ch40data}; - -/* char: 0x27 ''' */ - -static const GLubyte ch39data[] = { -0x80,0x40,0x40,0xc0,0xc0, -}; - -static const BitmapCharRec ch39 = {2,5,-1,-9,4,ch39data}; - -/* char: 0x26 '&' */ - -static const GLubyte ch38data[] = { -0x3c,0x70,0x7e,0xe0,0xe7,0xc0,0xc3,0x80,0xc3,0xc0,0xc6,0xc0,0xee,0xc0,0x7c,0x0, -0x3c,0x0,0x66,0x0,0x66,0x0,0x7e,0x0,0x3c,0x0, -}; - -static const BitmapCharRec ch38 = {12,13,-1,0,13,ch38data}; - -/* char: 0x25 '%' */ - -static const GLubyte ch37data[] = { -0x18,0x78,0x18,0xfc,0xc,0xcc,0xc,0xcc,0x6,0xfc,0x6,0x78,0x3,0x0,0x7b,0x0, -0xfd,0x80,0xcd,0x80,0xcc,0xc0,0xfc,0xc0,0x78,0x60, -}; - -static const BitmapCharRec ch37 = {14,13,-1,0,16,ch37data}; - -/* char: 0x24 '$' */ - -static const GLubyte ch36data[] = { -0x8,0x0,0x8,0x0,0x3e,0x0,0x7f,0x0,0xeb,0x80,0xc9,0x80,0x9,0x80,0xf,0x0, -0x3e,0x0,0x78,0x0,0xe8,0x0,0xc8,0x0,0xcb,0x0,0x7f,0x0,0x3e,0x0,0x8,0x0, -}; - -static const BitmapCharRec ch36 = {9,16,-1,2,10,ch36data}; - -/* char: 0x23 '#' */ - -static const GLubyte ch35data[] = { -0x24,0x0,0x24,0x0,0x24,0x0,0xff,0x80,0xff,0x80,0x12,0x0,0x12,0x0,0x12,0x0, -0x7f,0xc0,0x7f,0xc0,0x9,0x0,0x9,0x0,0x9,0x0, -}; - -static const BitmapCharRec ch35 = {10,13,0,0,10,ch35data}; - -/* char: 0x22 '"' */ - -static const GLubyte ch34data[] = { -0x90,0x90,0xd8,0xd8,0xd8, -}; - -static const BitmapCharRec ch34 = {5,5,0,-9,5,ch34data}; - -/* char: 0x21 '!' */ - -static const GLubyte ch33data[] = { -0xc0,0xc0,0x0,0x0,0x80,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -}; - -static const BitmapCharRec ch33 = {2,14,-2,0,6,ch33data}; - -/* char: 0x20 ' ' */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch32data[] = { 0x0 }; -static const BitmapCharRec ch32 = {1,1,0,0,5,ch32data}; -#else -static const BitmapCharRec ch32 = {0,0,0,0,5,0}; -#endif - -static const BitmapCharRec * const chars[] = { -&ch32, -&ch33, -&ch34, -&ch35, -&ch36, -&ch37, -&ch38, -&ch39, -&ch40, -&ch41, -&ch42, -&ch43, -&ch44, -&ch45, -&ch46, -&ch47, -&ch48, -&ch49, -&ch50, -&ch51, -&ch52, -&ch53, -&ch54, -&ch55, -&ch56, -&ch57, -&ch58, -&ch59, -&ch60, -&ch61, -&ch62, -&ch63, -&ch64, -&ch65, -&ch66, -&ch67, -&ch68, -&ch69, -&ch70, -&ch71, -&ch72, -&ch73, -&ch74, -&ch75, -&ch76, -&ch77, -&ch78, -&ch79, -&ch80, -&ch81, -&ch82, -&ch83, -&ch84, -&ch85, -&ch86, -&ch87, -&ch88, -&ch89, -&ch90, -&ch91, -&ch92, -&ch93, -&ch94, -&ch95, -&ch96, -&ch97, -&ch98, -&ch99, -&ch100, -&ch101, -&ch102, -&ch103, -&ch104, -&ch105, -&ch106, -&ch107, -&ch108, -&ch109, -&ch110, -&ch111, -&ch112, -&ch113, -&ch114, -&ch115, -&ch116, -&ch117, -&ch118, -&ch119, -&ch120, -&ch121, -&ch122, -&ch123, -&ch124, -&ch125, -&ch126, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -&ch160, -&ch161, -&ch162, -&ch163, -&ch164, -&ch165, -&ch166, -&ch167, -&ch168, -&ch169, -&ch170, -&ch171, -&ch172, -&ch173, -&ch174, -&ch175, -&ch176, -&ch177, -&ch178, -&ch179, -&ch180, -&ch181, -&ch182, -&ch183, -&ch184, -&ch185, -&ch186, -&ch187, -&ch188, -&ch189, -&ch190, -&ch191, -&ch192, -&ch193, -&ch194, -&ch195, -&ch196, -&ch197, -&ch198, -&ch199, -&ch200, -&ch201, -&ch202, -&ch203, -&ch204, -&ch205, -&ch206, -&ch207, -&ch208, -&ch209, -&ch210, -&ch211, -&ch212, -&ch213, -&ch214, -&ch215, -&ch216, -&ch217, -&ch218, -&ch219, -&ch220, -&ch221, -&ch222, -&ch223, -&ch224, -&ch225, -&ch226, -&ch227, -&ch228, -&ch229, -&ch230, -&ch231, -&ch232, -&ch233, -&ch234, -&ch235, -&ch236, -&ch237, -&ch238, -&ch239, -&ch240, -&ch241, -&ch242, -&ch243, -&ch244, -&ch245, -&ch246, -&ch247, -&ch248, -&ch249, -&ch250, -&ch251, -&ch252, -&ch253, -&ch254, -&ch255, -}; - -const BitmapFontRec glutBitmapHelvetica18 = { -"-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1", -224, -32, -chars -}; - diff --git a/lib/glut-3.7.6/lib/glut/glut_init.c b/lib/glut-3.7.6/lib/glut/glut_init.c deleted file mode 100644 index f91b5c1ed34e336f3cd15057d03746103fbe8a2f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_init.c +++ /dev/null @@ -1,370 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -#if !defined(_WIN32) -#include -#include -#endif - -/* SGI optimization introduced in IRIX 6.3 to avoid X server - round trips for interning common X atoms. */ -#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS) -#include -#else -#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how) -#endif - -#include "glutint.h" - -/* GLUT inter-file variables */ -/* *INDENT-OFF* */ -char *__glutProgramName = NULL; -int __glutArgc = 0; -char **__glutArgv = NULL; -char *__glutGeometry = NULL; -Display *__glutDisplay = NULL; -int __glutScreen; -Window __glutRoot; -int __glutScreenHeight; -int __glutScreenWidth; -GLboolean __glutIconic = GL_FALSE; -GLboolean __glutDebug = GL_FALSE; -unsigned int __glutDisplayMode = - GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH; -char *__glutDisplayString = NULL; -int __glutConnectionFD; -XSizeHints __glutSizeHints = {0}; -int __glutInitWidth = 300, __glutInitHeight = 300; -int __glutInitX = -1, __glutInitY = -1; -GLboolean __glutForceDirect = GL_FALSE, - __glutTryDirect = GL_TRUE; -Atom __glutWMDeleteWindow; -/* *INDENT-ON* */ - -#ifdef _WIN32 -void (__cdecl *__glutExitFunc)(int retval) = NULL; -#endif - -static Bool synchronize = False; - -#if defined(_WIN32) - -#ifdef __BORLANDC__ -#include /* For masking floating point exceptions. */ -#endif - -void -__glutOpenWin32Connection(char* display) -{ - static char *classname; - WNDCLASS wc; - HINSTANCE hInstance = GetModuleHandle(NULL); - - /* Make sure we register the window only once. */ - if(classname) - return; - -#ifdef __BORLANDC__ - /* Under certain conditions (e.g. while rendering solid surfaces with - lighting enabled) Microsoft OpenGL libraries cause some illegal - operations like floating point overflow or division by zero. The - default behaviour of Microsoft compilers is to mask (ignore) - floating point exceptions, while Borland compilers do not. The - following function of Borland RTL allows to mask exceptions. - Advice from Pier Giorgio Esposito (mc2172@mclink.it). */ - _control87(MCW_EM,MCW_EM); -#endif - - classname = "GLUT"; - - /* Clear (important!) and then fill in the window class structure. */ - memset(&wc, 0, sizeof(WNDCLASS)); - wc.style = CS_OWNDC; - wc.lpfnWndProc = (WNDPROC)__glutWindowProc; - wc.hInstance = hInstance; - wc.hIcon = LoadIcon(hInstance, "GLUT_ICON"); - wc.hCursor = LoadCursor(hInstance, IDC_ARROW); - wc.hbrBackground = NULL; - wc.lpszMenuName = NULL; - wc.lpszClassName = classname; - - if(wc.hIcon == NULL) { - HINSTANCE hDLLInstance = LoadLibrary("glut32.dll"); - if (hDLLInstance == NULL) { - /* Fill in a default icon if one isn't specified as a resource. */ - wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); - } else { - wc.hIcon = LoadIcon(hDLLInstance, "GLUT_ICON"); - } - } - - if(!RegisterClass(&wc)) { - __glutFatalError("RegisterClass() failed:" - "Cannot register GLUT window class."); - } - - __glutScreenWidth = GetSystemMetrics(SM_CXSCREEN); - __glutScreenHeight = GetSystemMetrics(SM_CYSCREEN); - - /* Set the root window to NULL because windows creates a top-level - window when the parent is NULL. X creates a top-level window - when the parent is the root window. */ - __glutRoot = NULL; - - /* Set the display to 1 -- we shouldn't be using this anywhere - (except as an argument to X calls). */ - __glutDisplay = (Display*)1; - - /* There isn't any concept of multiple screens in Win32, therefore, - we don't need to keep track of the screen we're on... it's always - the same one. */ - __glutScreen = 0; -} -#else /* !_WIN32 */ -void -__glutOpenXConnection(char *display) -{ - int errorBase, eventBase; - - __glutDisplay = XOpenDisplay(display); - if (!__glutDisplay) - __glutFatalError("could not open display: %s", - XDisplayName(display)); - if (synchronize) - XSynchronize(__glutDisplay, True); - if (!glXQueryExtension(__glutDisplay, &errorBase, &eventBase)) - __glutFatalError( - "OpenGL GLX extension not supported by display: %s", - XDisplayName(display)); - __glutScreen = DefaultScreen(__glutDisplay); - __glutRoot = RootWindow(__glutDisplay, __glutScreen); - __glutScreenWidth = DisplayWidth(__glutDisplay, __glutScreen); - __glutScreenHeight = DisplayHeight(__glutDisplay, - __glutScreen); - __glutConnectionFD = ConnectionNumber(__glutDisplay); - __glutWMDeleteWindow = XSGIFastInternAtom(__glutDisplay, - "WM_DELETE_WINDOW", SGI_XA_WM_DELETE_WINDOW, False); -} -#endif /* _WIN32 */ - -void -__glutInitTime(struct timeval *beginning) -{ - static int beenhere = 0; - static struct timeval genesis; - - if (!beenhere) { - GETTIMEOFDAY(&genesis); - beenhere = 1; - } - *beginning = genesis; -} - -static void -removeArgs(int *argcp, char **argv, int numToRemove) -{ - int i, j; - - for (i = 0, j = numToRemove; argv[j]; i++, j++) { - argv[i] = argv[j]; - } - argv[i] = NULL; - *argcp -= numToRemove; -} - -void APIENTRY -glutInit(int *argcp, char **argv) -{ - char *display = NULL; - char *str, *geometry = NULL; - struct timeval unused; - int i; - - if (__glutDisplay) { - __glutWarning("glutInit being called a second time."); - return; - } - /* Determine temporary program name. */ - str = strrchr(argv[0], '/'); - if (str == NULL) { - __glutProgramName = argv[0]; - } else { - __glutProgramName = str + 1; - } - - /* Make private copy of command line arguments. */ - __glutArgc = *argcp; - __glutArgv = (char **) malloc(__glutArgc * sizeof(char *)); - if (!__glutArgv) - __glutFatalError("out of memory."); - for (i = 0; i < __glutArgc; i++) { - __glutArgv[i] = __glutStrdup(argv[i]); - if (!__glutArgv[i]) - __glutFatalError("out of memory."); - } - - /* determine permanent program name */ - str = strrchr(__glutArgv[0], '/'); - if (str == NULL) { - __glutProgramName = __glutArgv[0]; - } else { - __glutProgramName = str + 1; - } - - /* parse arguments for standard options */ - for (i = 1; i < __glutArgc; i++) { - if (!strcmp(__glutArgv[i], "-display")) { -#if defined(_WIN32) - __glutWarning("-display option not supported by Win32 GLUT."); -#endif - if (++i >= __glutArgc) { - __glutFatalError( - "follow -display option with X display name."); - } - display = __glutArgv[i]; - removeArgs(argcp, &argv[1], 2); - } else if (!strcmp(__glutArgv[i], "-geometry")) { - if (++i >= __glutArgc) { - __glutFatalError( - "follow -geometry option with geometry parameter."); - } - geometry = __glutArgv[i]; - removeArgs(argcp, &argv[1], 2); - } else if (!strcmp(__glutArgv[i], "-direct")) { -#if defined(_WIN32) - __glutWarning("-direct option not supported by Win32 GLUT."); -#endif - if (!__glutTryDirect) - __glutFatalError( - "cannot force both direct and indirect rendering."); - __glutForceDirect = GL_TRUE; - removeArgs(argcp, &argv[1], 1); - } else if (!strcmp(__glutArgv[i], "-indirect")) { -#if defined(_WIN32) - __glutWarning("-indirect option not supported by Win32 GLUT."); -#endif - if (__glutForceDirect) - __glutFatalError( - "cannot force both direct and indirect rendering."); - __glutTryDirect = GL_FALSE; - removeArgs(argcp, &argv[1], 1); - } else if (!strcmp(__glutArgv[i], "-iconic")) { - __glutIconic = GL_TRUE; - removeArgs(argcp, &argv[1], 1); - } else if (!strcmp(__glutArgv[i], "-gldebug")) { - __glutDebug = GL_TRUE; - removeArgs(argcp, &argv[1], 1); - } else if (!strcmp(__glutArgv[i], "-sync")) { -#if defined(_WIN32) - __glutWarning("-sync option not supported by Win32 GLUT."); -#endif - synchronize = GL_TRUE; - removeArgs(argcp, &argv[1], 1); - } else { - /* Once unknown option encountered, stop command line - processing. */ - break; - } - } -#if defined(_WIN32) - __glutOpenWin32Connection(display); -#else - __glutOpenXConnection(display); -#endif - if (geometry) { - int flags, x, y, width, height; - - /* Fix bogus "{width|height} may be used before set" - warning */ - width = 0; - height = 0; - - flags = XParseGeometry(geometry, &x, &y, - (unsigned int *) &width, (unsigned int *) &height); - if (WidthValue & flags) { - /* Careful because X does not allow zero or negative - width windows */ - if (width > 0) - __glutInitWidth = width; - } - if (HeightValue & flags) { - /* Careful because X does not allow zero or negative - height windows */ - if (height > 0) - __glutInitHeight = height; - } - glutInitWindowSize(__glutInitWidth, __glutInitHeight); - if (XValue & flags) { - if (XNegative & flags) - x = DisplayWidth(__glutDisplay, __glutScreen) + - x - __glutSizeHints.width; - /* Play safe: reject negative X locations */ - if (x >= 0) - __glutInitX = x; - } - if (YValue & flags) { - if (YNegative & flags) - y = DisplayHeight(__glutDisplay, __glutScreen) + - y - __glutSizeHints.height; - /* Play safe: reject negative Y locations */ - if (y >= 0) - __glutInitY = y; - } - glutInitWindowPosition(__glutInitX, __glutInitY); - } - __glutInitTime(&unused); -} - -#ifdef _WIN32 -void APIENTRY -__glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)) -{ - __glutExitFunc = exitfunc; - glutInit(argcp, argv); -} -#endif - -/* CENTRY */ -void APIENTRY -glutInitWindowPosition(int x, int y) -{ - __glutInitX = x; - __glutInitY = y; - if (x >= 0 && y >= 0) { - __glutSizeHints.x = x; - __glutSizeHints.y = y; - __glutSizeHints.flags |= USPosition; - } else { - __glutSizeHints.flags &= ~USPosition; - } -} - -void APIENTRY -glutInitWindowSize(int width, int height) -{ - __glutInitWidth = width; - __glutInitHeight = height; - if (width > 0 && height > 0) { - __glutSizeHints.width = width; - __glutSizeHints.height = height; - __glutSizeHints.flags |= USSize; - } else { - __glutSizeHints.flags &= ~USSize; - } -} - -void APIENTRY -glutInitDisplayMode(unsigned int mask) -{ - __glutDisplayMode = mask; -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_input.c b/lib/glut-3.7.6/lib/glut/glut_input.c deleted file mode 100644 index 5c62dfbf62eee2dfccae5c6e427a6ec5bd143723..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_input.c +++ /dev/null @@ -1,645 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -#if !defined(_WIN32) -#include -#if defined(__vms) -#include -#else -#include -#endif -#include -#else -#include -#include /* Win32 Multimedia API header. */ -#endif /* !_WIN32 */ - -#include "glutint.h" - -int __glutNumDials = 0; -int __glutNumSpaceballButtons = 0; -int __glutNumButtonBoxButtons = 0; -int __glutNumTabletButtons = 0; -int __glutNumMouseButtons = 3; /* Good guess. */ -XDevice *__glutTablet = NULL; -XDevice *__glutDials = NULL; -XDevice *__glutSpaceball = NULL; - -int __glutHasJoystick = 0; -int __glutNumJoystickButtons = 0; -int __glutNumJoystickAxes = 0; - -#if !defined(_WIN32) -typedef struct _Range { - int min; - int range; -} Range; - -#define NUM_SPACEBALL_AXIS 6 -#define NUM_TABLET_AXIS 2 -#define NUM_DIALS_AXIS 8 - -Range __glutSpaceballRange[NUM_SPACEBALL_AXIS]; -Range __glutTabletRange[NUM_TABLET_AXIS]; -int *__glutDialsResolution; - -/* Safely assumes 0 is an illegal event type for X Input - extension events. */ -int __glutDeviceMotionNotify = 0; -int __glutDeviceButtonPress = 0; -int __glutDeviceButtonPressGrab = 0; -int __glutDeviceButtonRelease = 0; -int __glutDeviceStateNotify = 0; - -static int -normalizeTabletPos(int axis, int rawValue) -{ - assert(rawValue >= __glutTabletRange[axis].min); - assert(rawValue <= __glutTabletRange[axis].min - + __glutTabletRange[axis].range); - /* Normalize rawValue to between 0 and 4000. */ - return ((rawValue - __glutTabletRange[axis].min) * 4000) / - __glutTabletRange[axis].range; -} - -static int -normalizeDialAngle(int axis, int rawValue) -{ - /* XXX Assumption made that the resolution of the device is - number of clicks for one complete dial revolution. This - is true for SGI's dial & button box. */ - return (rawValue * 360.0) / __glutDialsResolution[axis]; -} - -static int -normalizeSpaceballAngle(int axis, int rawValue) -{ - assert(rawValue >= __glutSpaceballRange[axis].min); - assert(rawValue <= __glutSpaceballRange[axis].min + - __glutSpaceballRange[axis].range); - /* Normalize rawValue to between -1800 and 1800. */ - return ((rawValue - __glutSpaceballRange[axis].min) * 3600) / - __glutSpaceballRange[axis].range - 1800; -} - -static int -normalizeSpaceballDelta(int axis, int rawValue) -{ - assert(rawValue >= __glutSpaceballRange[axis].min); - assert(rawValue <= __glutSpaceballRange[axis].min + - __glutSpaceballRange[axis].range); - /* Normalize rawValue to between -1000 and 1000. */ - return ((rawValue - __glutSpaceballRange[axis].min) * 2000) / - __glutSpaceballRange[axis].range - 1000; -} - -static void -queryTabletPos(GLUTwindow * window) -{ - XDeviceState *state; - XInputClass *any; - XValuatorState *v; - int i; - - state = XQueryDeviceState(__glutDisplay, __glutTablet); - any = state->data; - for (i = 0; i < state->num_classes; i++) { -#if defined(__cplusplus) || defined(c_plusplus) - switch (any->c_class) { -#else - switch (any->class) { -#endif - case ValuatorClass: - v = (XValuatorState *) any; - if (v->num_valuators < 2) - goto end; - if (window->tabletPos[0] == -1) - window->tabletPos[0] = normalizeTabletPos(0, v->valuators[0]); - if (window->tabletPos[1] == -1) - window->tabletPos[1] = normalizeTabletPos(1, v->valuators[1]); - } - any = (XInputClass *) ((char *) any + any->length); - } -end: - XFreeDeviceState(state); -} - -static void -tabletPosChange(GLUTwindow * window, int first, int count, int *data) -{ - int i, value, genEvent = 0; - - for (i = first; i < first + count; i++) { - switch (i) { - case 0: /* X axis */ - case 1: /* Y axis */ - value = normalizeTabletPos(i, data[i - first]); - if (value != window->tabletPos[i]) { - window->tabletPos[i] = value; - genEvent = 1; - } - break; - } - } - if (window->tabletPos[0] == -1 || window->tabletPos[1] == -1) - queryTabletPos(window); - if (genEvent) - window->tabletMotion(window->tabletPos[0], window->tabletPos[1]); -} -#endif /* !_WIN32 */ - -int -__glutProcessDeviceEvents(XEvent * event) -{ -#if !defined(_WIN32) - GLUTwindow *window; - - /* XXX Ugly code fan out. */ - - /* Can't use switch/case since X Input event types are - dynamic. */ - - if (__glutDeviceMotionNotify && event->type == __glutDeviceMotionNotify) { - XDeviceMotionEvent *devmot = (XDeviceMotionEvent *) event; - - window = __glutGetWindow(devmot->window); - if (window) { - if (__glutTablet - && devmot->deviceid == __glutTablet->device_id - && window->tabletMotion) { - tabletPosChange(window, devmot->first_axis, devmot->axes_count, - devmot->axis_data); - } else if (__glutDials - && devmot->deviceid == __glutDials->device_id - && window->dials) { - int i, first = devmot->first_axis, count = devmot->axes_count; - - for (i = first; i < first + count; i++) - window->dials(i + 1, - normalizeDialAngle(i, devmot->axis_data[i - first])); - } else if (__glutSpaceball - && devmot->deviceid == __glutSpaceball->device_id) { - /* XXX Assume that space ball motion events come in as - all the first 6 axes. Assume first 3 axes are XYZ - translations; second 3 axes are XYZ rotations. */ - if (devmot->first_axis == 0 && devmot->axes_count == 6) { - if (window->spaceMotion) - window->spaceMotion( - normalizeSpaceballDelta(0, devmot->axis_data[0]), - normalizeSpaceballDelta(1, devmot->axis_data[1]), - normalizeSpaceballDelta(2, devmot->axis_data[2])); - if (window->spaceRotate) - window->spaceRotate( - normalizeSpaceballAngle(3, devmot->axis_data[3]), - normalizeSpaceballAngle(4, devmot->axis_data[4]), - normalizeSpaceballAngle(5, devmot->axis_data[5])); - } - } - return 1; - } - } else if (__glutDeviceButtonPress - && event->type == __glutDeviceButtonPress) { - XDeviceButtonEvent *devbtn = (XDeviceButtonEvent *) event; - - window = __glutGetWindow(devbtn->window); - if (window) { - if (__glutTablet - && devbtn->deviceid == __glutTablet->device_id - && window->tabletButton - && devbtn->first_axis == 0 - && devbtn->axes_count == 2) { - tabletPosChange(window, devbtn->first_axis, devbtn->axes_count, - devbtn->axis_data); - window->tabletButton(devbtn->button, GLUT_DOWN, - window->tabletPos[0], window->tabletPos[1]); - } else if (__glutDials - && devbtn->deviceid == __glutDials->device_id - && window->buttonBox) { - window->buttonBox(devbtn->button, GLUT_DOWN); - } else if (__glutSpaceball - && devbtn->deviceid == __glutSpaceball->device_id - && window->spaceButton) { - window->spaceButton(devbtn->button, GLUT_DOWN); - } - return 1; - } - } else if (__glutDeviceButtonRelease - && event->type == __glutDeviceButtonRelease) { - XDeviceButtonEvent *devbtn = (XDeviceButtonEvent *) event; - - window = __glutGetWindow(devbtn->window); - if (window) { - if (__glutTablet - && devbtn->deviceid == __glutTablet->device_id - && window->tabletButton - && devbtn->first_axis == 0 - && devbtn->axes_count == 2) { - tabletPosChange(window, devbtn->first_axis, devbtn->axes_count, - devbtn->axis_data); - window->tabletButton(devbtn->button, GLUT_UP, - window->tabletPos[0], window->tabletPos[1]); - } else if (__glutDials - && devbtn->deviceid == __glutDials->device_id - && window->buttonBox) { - window->buttonBox(devbtn->button, GLUT_UP); - } else if (__glutSpaceball - && devbtn->deviceid == __glutSpaceball->device_id - && window->spaceButton) { - window->spaceButton(devbtn->button, GLUT_UP); - } - return 1; - } - } -#else - { - JOYINFOEX info; - JOYCAPS joyCaps; - - if (joyGetPosEx(JOYSTICKID1,&info) != JOYERR_NOERROR) { - __glutHasJoystick = 1; - joyGetDevCaps(JOYSTICKID1, &joyCaps, sizeof(joyCaps)); - __glutNumJoystickButtons = joyCaps.wNumButtons; - __glutNumJoystickAxes = joyCaps.wNumAxes; - } else { - __glutHasJoystick = 0; - __glutNumJoystickButtons = 0; - __glutNumJoystickAxes = 0; - } -#if 0 - JOYINFOEX info; - int njoyId = 0; - int nConnected = 0; - MMRESULT result; - - /* Loop through all possible joystick IDs until we get the error - JOYERR_PARMS. Count the number of times we get JOYERR_NOERROR - indicating an installed joystick driver with a joystick currently - attached to the port. */ - while ((result = joyGetPosEx(njoyId++,&info)) != JOYERR_PARMS) { - if (result == JOYERR_NOERROR) { - ++nConnected; /* The count of connected joysticks. */ - } - } -#endif - } -#endif /* !_WIN32 */ - return 0; -} - -static GLUTeventParser eventParser = -{__glutProcessDeviceEvents, NULL}; - -static void -addDeviceEventParser(void) -{ - static Bool been_here = False; - - if (been_here) - return; - been_here = True; - __glutRegisterEventParser(&eventParser); -} - -static int -probeDevices(void) -{ - static Bool been_here = False; - static int support; -#if !defined(_WIN32) - XExtensionVersion *version; - XDeviceInfoPtr device_info, device; - XAnyClassPtr any; - XButtonInfoPtr b; - XValuatorInfoPtr v; - XAxisInfoPtr a; - int num_dev, btns, dials; - int i, j, k; -#endif /* !_WIN32 */ - - if (been_here) { - return support; - } - been_here = True; - -#if !defined(_WIN32) - version = XGetExtensionVersion(__glutDisplay, "XInputExtension"); - /* Ugh. XInput extension API forces annoying cast of a pointer - to a long so it can be compared with the NoSuchExtension - value (#defined to 1). */ - if (version == NULL || ((long) version) == NoSuchExtension) { - support = 0; - return support; - } - XFree(version); - device_info = XListInputDevices(__glutDisplay, &num_dev); - if (device_info) { - for (i = 0; i < num_dev; i++) { - /* XXX These are SGI names for these devices; - unfortunately, no good standard exists for standard - types of X input extension devices. */ - - device = &device_info[i]; - any = (XAnyClassPtr) device->inputclassinfo; - - if (!__glutSpaceball && !strcmp(device->name, "spaceball")) { - v = NULL; - b = NULL; - for (j = 0; j < device->num_classes; j++) { -#if defined(__cplusplus) || defined(c_plusplus) - switch (any->c_class) { -#else - switch (any->class) { -#endif - case ButtonClass: - b = (XButtonInfoPtr) any; - btns = b->num_buttons; - break; - case ValuatorClass: - v = (XValuatorInfoPtr) any; - /* Sanity check: at least 6 valuators? */ - if (v->num_axes < NUM_SPACEBALL_AXIS) - goto skip_device; - a = (XAxisInfoPtr) ((char *) v + sizeof(XValuatorInfo)); - for (k = 0; k < NUM_SPACEBALL_AXIS; k++, a++) { - __glutSpaceballRange[k].min = a->min_value; - __glutSpaceballRange[k].range = a->max_value - a->min_value; - } - break; - } - any = (XAnyClassPtr) ((char *) any + any->length); - } - if (v) { - __glutSpaceball = XOpenDevice(__glutDisplay, device->id); - if (__glutSpaceball) { - __glutNumSpaceballButtons = btns; - addDeviceEventParser(); - } - } - } else if (!__glutDials && !strcmp(device->name, "dial+buttons")) { - v = NULL; - b = NULL; - for (j = 0; j < device->num_classes; j++) { -#if defined(__cplusplus) || defined(c_plusplus) - switch (any->c_class) { -#else - switch (any->class) { -#endif - case ButtonClass: - b = (XButtonInfoPtr) any; - btns = b->num_buttons; - break; - case ValuatorClass: - v = (XValuatorInfoPtr) any; - /* Sanity check: at least 8 valuators? */ - if (v->num_axes < NUM_DIALS_AXIS) - goto skip_device; - dials = v->num_axes; - __glutDialsResolution = (int *) malloc(sizeof(int) * dials); - a = (XAxisInfoPtr) ((char *) v + sizeof(XValuatorInfo)); - for (k = 0; k < dials; k++, a++) { - __glutDialsResolution[k] = a->resolution; - } - break; - } - any = (XAnyClassPtr) ((char *) any + any->length); - } - if (v) { - __glutDials = XOpenDevice(__glutDisplay, device->id); - if (__glutDials) { - __glutNumButtonBoxButtons = btns; - __glutNumDials = dials; - addDeviceEventParser(); - } - } - } else if (!__glutTablet && !strcmp(device->name, "tablet")) { - v = NULL; - b = NULL; - for (j = 0; j < device->num_classes; j++) { -#if defined(__cplusplus) || defined(c_plusplus) - switch (any->c_class) { -#else - switch (any->class) { -#endif - case ButtonClass: - b = (XButtonInfoPtr) any; - btns = b->num_buttons; - break; - case ValuatorClass: - v = (XValuatorInfoPtr) any; - /* Sanity check: exactly 2 valuators? */ - if (v->num_axes != NUM_TABLET_AXIS) - goto skip_device; - a = (XAxisInfoPtr) ((char *) v + sizeof(XValuatorInfo)); - for (k = 0; k < NUM_TABLET_AXIS; k++, a++) { - __glutTabletRange[k].min = a->min_value; - __glutTabletRange[k].range = a->max_value - a->min_value; - } - break; - } - any = (XAnyClassPtr) ((char *) any + any->length); - } - if (v) { - __glutTablet = XOpenDevice(__glutDisplay, device->id); - if (__glutTablet) { - __glutNumTabletButtons = btns; - addDeviceEventParser(); - } - } - } else if (!strcmp(device->name, "mouse")) { - for (j = 0; j < device->num_classes; j++) { -#if defined(__cplusplus) || defined(c_plusplus) - if (any->c_class == ButtonClass) { -#else - if (any->class == ButtonClass) { -#endif - b = (XButtonInfoPtr) any; - __glutNumMouseButtons = b->num_buttons; - } - any = (XAnyClassPtr) ((char *) any + any->length); - } - } - skip_device:; - } - XFreeDeviceList(device_info); - } -#else /* _WIN32 */ - __glutNumMouseButtons = GetSystemMetrics(SM_CMOUSEBUTTONS); -#endif /* !_WIN32 */ - /* X Input extension might be supported, but only if there is - a tablet, dials, or spaceball do we claim devices are - supported. */ - support = __glutTablet || __glutDials || __glutSpaceball; - return support; -} - -void -__glutUpdateInputDeviceMask(GLUTwindow * window) -{ -#if !defined(_WIN32) - /* 5 (dial and buttons) + 5 (tablet locator and buttons) + 5 - (Spaceball buttons and axis) = 15 */ - XEventClass eventList[15]; - int rc, numEvents; - - rc = probeDevices(); - if (rc) { - numEvents = 0; - if (__glutTablet) { - if (window->tabletMotion) { - DeviceMotionNotify(__glutTablet, __glutDeviceMotionNotify, - eventList[numEvents]); - numEvents++; - } - if (window->tabletButton) { - DeviceButtonPress(__glutTablet, __glutDeviceButtonPress, - eventList[numEvents]); - numEvents++; - DeviceButtonPressGrab(__glutTablet, __glutDeviceButtonPressGrab, - eventList[numEvents]); - numEvents++; - DeviceButtonRelease(__glutTablet, __glutDeviceButtonRelease, - eventList[numEvents]); - numEvents++; - } - if (window->tabletMotion || window->tabletButton) { - DeviceStateNotify(__glutTablet, __glutDeviceStateNotify, - eventList[numEvents]); - numEvents++; - } - } - if (__glutDials) { - if (window->dials) { - DeviceMotionNotify(__glutDials, __glutDeviceMotionNotify, - eventList[numEvents]); - numEvents++; - } - if (window->buttonBox) { - DeviceButtonPress(__glutDials, __glutDeviceButtonPress, - eventList[numEvents]); - numEvents++; - DeviceButtonPressGrab(__glutDials, __glutDeviceButtonPressGrab, - eventList[numEvents]); - numEvents++; - DeviceButtonRelease(__glutDials, __glutDeviceButtonRelease, - eventList[numEvents]); - numEvents++; - } - if (window->dials || window->buttonBox) { - DeviceStateNotify(__glutDials, __glutDeviceStateNotify, - eventList[numEvents]); - numEvents++; - } - } - if (__glutSpaceball) { - if (window->spaceMotion || window->spaceRotate) { - DeviceMotionNotify(__glutSpaceball, __glutDeviceMotionNotify, - eventList[numEvents]); - numEvents++; - } - if (window->spaceButton) { - DeviceButtonPress(__glutSpaceball, __glutDeviceButtonPress, - eventList[numEvents]); - numEvents++; - DeviceButtonPressGrab(__glutSpaceball, __glutDeviceButtonPressGrab, - eventList[numEvents]); - numEvents++; - DeviceButtonRelease(__glutSpaceball, __glutDeviceButtonRelease, - eventList[numEvents]); - numEvents++; - } - if (window->spaceMotion || window->spaceRotate || window->spaceButton) { - DeviceStateNotify(__glutSpaceball, __glutDeviceStateNotify, - eventList[numEvents]); - numEvents++; - } - } -#if 0 - if (window->children) { - GLUTwindow *child = window->children; - - do { - XChangeDeviceDontPropagateList(__glutDisplay, child->win, - numEvents, eventList, AddToList); - child = child->siblings; - } while (child); - } -#endif - XSelectExtensionEvent(__glutDisplay, window->win, - eventList, numEvents); - if (window->overlay) { - XSelectExtensionEvent(__glutDisplay, window->overlay->win, - eventList, numEvents); - } - } else { - /* X Input extension not supported; no chance for exotic - input devices. */ - } -#endif /* !_WIN32 */ -} - -/* CENTRY */ -int APIENTRY -glutDeviceGet(GLenum param) -{ - probeDevices(); - switch (param) { - case GLUT_HAS_KEYBOARD: - case GLUT_HAS_MOUSE: - /* Assume window system always has mouse and keyboard. */ - return 1; - case GLUT_HAS_SPACEBALL: - return __glutSpaceball != NULL; - case GLUT_HAS_DIAL_AND_BUTTON_BOX: - return __glutDials != NULL; - case GLUT_HAS_TABLET: - return __glutTablet != NULL; - case GLUT_NUM_MOUSE_BUTTONS: - return __glutNumMouseButtons; - case GLUT_NUM_SPACEBALL_BUTTONS: - return __glutNumSpaceballButtons; - case GLUT_NUM_BUTTON_BOX_BUTTONS: - return __glutNumButtonBoxButtons; - case GLUT_NUM_DIALS: - return __glutNumDials; - case GLUT_NUM_TABLET_BUTTONS: - return __glutNumTabletButtons; - case GLUT_DEVICE_IGNORE_KEY_REPEAT: - return __glutCurrentWindow->ignoreKeyRepeat; -#ifndef _WIN32 - case GLUT_DEVICE_KEY_REPEAT: - { - XKeyboardState state; - - XGetKeyboardControl(__glutDisplay, &state); - return state.global_auto_repeat; - } - case GLUT_JOYSTICK_POLL_RATE: - return 0; -#else - case GLUT_DEVICE_KEY_REPEAT: - /* Win32 cannot globally disable key repeat. */ - return GLUT_KEY_REPEAT_ON; - case GLUT_JOYSTICK_POLL_RATE: - return __glutCurrentWindow->joyPollInterval; -#endif - case GLUT_HAS_JOYSTICK: - return __glutHasJoystick; - case GLUT_JOYSTICK_BUTTONS: - return __glutNumJoystickButtons; - case GLUT_JOYSTICK_AXES: - return __glutNumJoystickAxes; - default: - __glutWarning("invalid glutDeviceGet parameter: %d", param); - return -1; - } -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_joy.c b/lib/glut-3.7.6/lib/glut/glut_joy.c deleted file mode 100644 index 1d67df059445deb7db857a5c64e98ff975540ddc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_joy.c +++ /dev/null @@ -1,80 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#ifdef _WIN32 -#include -#include /* Win32 Multimedia API header. */ -#endif - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutJoystickFunc(GLUTjoystickCB joystickFunc, int pollInterval) -{ -#ifdef _WIN32 - if (joystickFunc && (pollInterval > 0)) { - if (__glutCurrentWindow->entryState == WM_SETFOCUS) { - MMRESULT result; - - /* Capture joystick focus if current window has - focus now. */ - result = joySetCapture(__glutCurrentWindow->win, - JOYSTICKID1, 0, TRUE); - if (result == JOYERR_NOERROR) { - (void) joySetThreshold(JOYSTICKID1, pollInterval); - } - } - __glutCurrentWindow->joyPollInterval = pollInterval; - } else { - /* Release joystick focus if current window has - focus now. */ - if (__glutCurrentWindow->joystick - && (__glutCurrentWindow->joyPollInterval > 0) - && (__glutCurrentWindow->entryState == WM_SETFOCUS)) { - (void) joyReleaseCapture(JOYSTICKID1); - } - __glutCurrentWindow->joyPollInterval = 0; - } - __glutCurrentWindow->joystick = joystickFunc; -#else - /* XXX No support currently for X11 joysticks. */ -#endif -} - -void APIENTRY -glutForceJoystickFunc(void) -{ -#ifdef _WIN32 - if (__glutCurrentWindow->joystick) { - JOYINFOEX jix; - MMRESULT res; - int x, y, z; - - /* Poll the joystick. */ - jix.dwSize = sizeof(jix); - jix.dwFlags = JOY_RETURNALL; - res = joyGetPosEx(JOYSTICKID1,&jix); - if (res == JOYERR_NOERROR) { - - /* Convert to int for scaling. */ - x = jix.dwXpos; - y = jix.dwYpos; - z = jix.dwZpos; - -#define SCALE(v) ((int) ((v - 32767)/32.768)) - - __glutCurrentWindow->joystick(jix.dwButtons, - SCALE(x), SCALE(y), SCALE(z)); - } - } -#else - /* XXX No support currently for X11 joysticks. */ -#endif -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_key.c b/lib/glut-3.7.6/lib/glut/glut_key.c deleted file mode 100644 index b608e3825edac55ce14466f97c2f2834e5e41e74..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_key.c +++ /dev/null @@ -1,29 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutKeyboardFunc(GLUTkeyboardCB keyboardFunc) -{ - __glutChangeWindowEventMask(KeyPressMask, - keyboardFunc != NULL || __glutCurrentWindow->special != NULL); - __glutCurrentWindow->keyboard = keyboardFunc; -} - -void APIENTRY -glutSpecialFunc(GLUTspecialCB specialFunc) -{ - __glutChangeWindowEventMask(KeyPressMask, - specialFunc != NULL || __glutCurrentWindow->keyboard != NULL); - __glutCurrentWindow->special = specialFunc; -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_keyctrl.c b/lib/glut-3.7.6/lib/glut/glut_keyctrl.c deleted file mode 100644 index af61b78c75e5390f9155d2029fc0f0a850842d88..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_keyctrl.c +++ /dev/null @@ -1,29 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutIgnoreKeyRepeat(int ignore) -{ - __glutCurrentWindow->ignoreKeyRepeat = ignore; -} - -void APIENTRY -glutSetKeyRepeat(int repeatMode) -{ -#if !defined(_WIN32) - XKeyboardControl values; - - /* GLUT's repeatMode #define's match the Xlib API values. */ - values.auto_repeat_mode = repeatMode; - XChangeKeyboardControl(__glutDisplay, KBAutoRepeatMode, &values); -#endif -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_keyup.c b/lib/glut-3.7.6/lib/glut/glut_keyup.c deleted file mode 100644 index c081a26f924b43df4cf50637db1caa7888e8607d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_keyup.c +++ /dev/null @@ -1,29 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutKeyboardUpFunc(GLUTkeyboardCB keyboardUpFunc) -{ - __glutChangeWindowEventMask(KeyReleaseMask, - keyboardUpFunc != NULL || __glutCurrentWindow->specialUp != NULL); - __glutCurrentWindow->keyboardUp = keyboardUpFunc; -} - -void APIENTRY -glutSpecialUpFunc(GLUTspecialCB specialUpFunc) -{ - __glutChangeWindowEventMask(KeyReleaseMask, - specialUpFunc != NULL || __glutCurrentWindow->keyboardUp != NULL); - __glutCurrentWindow->specialUp = specialUpFunc; -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_menu.c b/lib/glut-3.7.6/lib/glut/glut_menu.c deleted file mode 100644 index 5b5a65959d81c50bcdcebc17eb252ae848d8b90f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_menu.c +++ /dev/null @@ -1,1010 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* The Win32 GLUT file win32_menu.c completely re-implements all - the menuing functionality implemented. This file is used only by - the X Window System version of GLUT. */ - -#include -#include -#include -#include -#include - -#include -#include -#include /* for XC_arrow */ - -#include "glutint.h" -#include "layerutil.h" - -void (CDECL *__glutMenuStatusFunc) (int, int, int); -GLUTmenuItem *__glutItemSelected; -GLUTmenu **__glutMenuList = NULL; - -static int menuListSize = 0; -static XFontStruct *menuFont = NULL; -static Cursor menuCursor; -static Colormap menuColormap; -static Visual *menuVisual; -static int menuDepth; -static int fontHeight; -static GC blackGC, grayGC, whiteGC; -static unsigned long menuBlack, menuWhite, menuGray; -static unsigned long useSaveUnders; - -/* A replacement for XAllocColor (originally by Brian Paul). - This function should never fail to allocate a color. When - XAllocColor fails, we return the nearest matching color. If - we have to allocate many colors this function isn't a great - solution; the XQueryColors() could be done just once. */ -static void -noFaultXAllocColor(Display * dpy, Colormap cmap, int cmapSize, - XColor * color) -{ - XColor *ctable, subColor; - int i, bestmatch; - double mindist; /* 3*2^16^2 exceeds 32-bit long int - precision. */ - - for (;;) { - /* First try just using XAllocColor. */ - if (XAllocColor(dpy, cmap, color)) { - return; - } - - /* Retrieve color table entries. */ - /* XXX alloca canidate. */ - ctable = (XColor *) malloc(cmapSize * sizeof(XColor)); - for (i = 0; i < cmapSize; i++) - ctable[i].pixel = i; - XQueryColors(dpy, cmap, ctable, cmapSize); - - /* Find best match. */ - bestmatch = -1; - mindist = 0.0; - for (i = 0; i < cmapSize; i++) { - double dr = (double) color->red - (double) ctable[i].red; - double dg = (double) color->green - (double) ctable[i].green; - double db = (double) color->blue - (double) ctable[i].blue; - double dist = dr * dr + dg * dg + db * db; - if (bestmatch < 0 || dist < mindist) { - bestmatch = i; - mindist = dist; - } - } - - /* Return result. */ - subColor.red = ctable[bestmatch].red; - subColor.green = ctable[bestmatch].green; - subColor.blue = ctable[bestmatch].blue; - free(ctable); - if (XAllocColor(dpy, cmap, &subColor)) { - *color = subColor; - return; - } - /* Extremely unlikely, but possibly color was deallocated - and reallocated by someone else before we could - XAllocColor the color cell we located. If so, loop - again... */ - } -} - -static int -ifSunCreator(void) -{ - char *xvendor, *glvendor, *renderer; - int isSunCreator = 0; /* Until proven that it is. */ - int savedDisplayMode; - char *savedDisplayString; - GLUTwindow *window; - -#define VENDOR_SUN "Sun Microsystems" -#define RENDERER_CREATOR "Creator" - - /* Check the X vendor string first. It is easier to check - than the OpenGL vendor and renderer strings since it - doesn't require a valid OpenGL rendering context. Bail - early if not connected to a Sun. */ - xvendor = ServerVendor(__glutDisplay); - if (!strncmp(xvendor, VENDOR_SUN, sizeof(VENDOR_SUN) - 1)) { - - /* We need a valid current OpenGL rendering context to be - able to call glGetString successfully. If there is not - a current window, set up a temporary one just to call - glGetString with (gag, expensive). */ - if (__glutCurrentWindow) { - window = NULL; - } else { - savedDisplayMode = __glutDisplayMode; - savedDisplayString = __glutDisplayString; - __glutDisplayMode = GLUT_RGB | GLUT_SINGLE; - __glutDisplayString = NULL; - window = __glutCreateWindow(NULL, 0, 0, 1, 1, 0); - } - - glvendor = (char *) glGetString(GL_VENDOR); - if (!strncmp(glvendor, VENDOR_SUN, sizeof(VENDOR_SUN) - 1)) { - renderer = (char *) glGetString(GL_RENDERER); - if (!strncmp(renderer, RENDERER_CREATOR, sizeof(RENDERER_CREATOR) - 1)) { - isSunCreator = 1; - } - } - /* Destroy the temporary window for glGetString if one - needed to be created. */ - if (window) { - __glutDestroyWindow(window, window); - __glutDisplayMode = savedDisplayMode; - __glutDisplayString = savedDisplayString; - } - } - return isSunCreator; -} - -static void -menuVisualSetup(void) -{ - XLayerVisualInfo template, *visual, *overlayVisuals; - XColor color; - Status status; - Bool presumablyMesa; - int layer, nVisuals, i, dummy; - unsigned long *placeHolders = NULL; - int numPlaceHolders; - Bool allocateHigh; - - allocateHigh = ifSunCreator(); - - /* Start with the highest overlay layer and work down. I - don't think any hardware has more than 3 overlay layers. */ - for (layer = 3; layer > 0; layer--) { - template.layer = layer; - template.vinfo.screen = __glutScreen; - overlayVisuals = __glutXGetLayerVisualInfo(__glutDisplay, - VisualScreenMask | VisualLayerMask, &template, &nVisuals); - if (overlayVisuals) { - /* First, check if the default visual is in this layer. - If the default visual is in this layer, we try to use - it since it has pre-defined black and white pixels and - - using the default visual will probably minimize - colormap flashing problems. Suggested by Thomas Roell - (thomas@xig.com). */ - for (i = 0; i < nVisuals; i++) { - visual = &overlayVisuals[i]; - if (visual->vinfo.colormap_size >= 3) { - /* Compare visual IDs just to be safe. */ - if (visual->vinfo.visual->visualid == DefaultVisual(__glutDisplay, __glutScreen)->visualid) { - /* Settle for default visual. */ - menuVisual = DefaultVisual(__glutDisplay, __glutScreen); - menuDepth = DefaultDepth(__glutDisplay, __glutScreen); - menuColormap = DefaultColormap(__glutDisplay, __glutScreen); - menuBlack = BlackPixel(__glutDisplay, __glutScreen); - menuWhite = WhitePixel(__glutDisplay, __glutScreen); - color.red = color.green = color.blue = 0xaa00; - noFaultXAllocColor(__glutDisplay, menuColormap, - menuVisual->map_entries, &color); - menuGray = color.pixel; - useSaveUnders = 0; - XFree(overlayVisuals); - return; - } - } - } - for (i = 0; i < nVisuals; i++) { - visual = &overlayVisuals[i]; - if (visual->vinfo.colormap_size >= 3) { - if (allocateHigh) { - /* For Sun's Creator graphics, try to force the - read-only colors to the high end of the colormap - by first allocating read-write place-holder cells - for all but the last three cells. This helps - avoid colormap flashing problems. */ - numPlaceHolders = visual->vinfo.colormap_size - 3; - if (numPlaceHolders > 0) { - placeHolders = (unsigned long *) - malloc(numPlaceHolders * sizeof(unsigned long)); - /* A malloc failure would be harmless. */ - } - } - menuColormap = XCreateColormap(__glutDisplay, __glutRoot, - visual->vinfo.visual, AllocNone); - if (placeHolders) { - /* Again for Sun's Creator graphics, do the actual - read-write place-holder cell allocation. */ - status = XAllocColorCells(__glutDisplay, menuColormap, False, 0, 0, - placeHolders, numPlaceHolders); - if (!status) { - XFreeColormap(__glutDisplay, menuColormap); - free(placeHolders); - continue; - } - } - /* Allocate overlay colormap cells in defined order: - gray, black, white to match the IRIS GL allocation - scheme. Increases likelihood of less overlay - colormap flashing. */ - /* XXX Nice if these 3 AllocColor's could be done in - one protocol round-trip. */ - color.red = color.green = color.blue = 0xaa00; - status = XAllocColor(__glutDisplay, - menuColormap, &color); - if (!status) { - XFreeColormap(__glutDisplay, menuColormap); - if (placeHolders) { - free(placeHolders); - } - continue; - } - menuGray = color.pixel; - color.red = color.green = color.blue = 0x0000; - status = XAllocColor(__glutDisplay, - menuColormap, &color); - if (!status) { - XFreeColormap(__glutDisplay, menuColormap); - if (placeHolders) { - free(placeHolders); - } - continue; - } - menuBlack = color.pixel; - color.red = color.green = color.blue = 0xffff; - status = XAllocColor(__glutDisplay, - menuColormap, &color); - if (!status) { - XFreeColormap(__glutDisplay, menuColormap); - if (placeHolders) { - free(placeHolders); - } - continue; - } - if (placeHolders) { - /* Now free the placeholder cells. */ - XFreeColors(__glutDisplay, menuColormap, - placeHolders, numPlaceHolders, 0); - free(placeHolders); - } - menuWhite = color.pixel; - menuVisual = visual->vinfo.visual; - menuDepth = visual->vinfo.depth; - /* If using overlays, do not request "save unders". */ - useSaveUnders = 0; - XFree(overlayVisuals); - return; - } - } - XFree(overlayVisuals); - } - } - /* Settle for default visual. */ - menuVisual = DefaultVisual(__glutDisplay, __glutScreen); - menuDepth = DefaultDepth(__glutDisplay, __glutScreen); - menuColormap = DefaultColormap(__glutDisplay, __glutScreen); - menuBlack = BlackPixel(__glutDisplay, __glutScreen); - menuWhite = WhitePixel(__glutDisplay, __glutScreen); - color.red = color.green = color.blue = 0xaa00; - noFaultXAllocColor(__glutDisplay, menuColormap, - menuVisual->map_entries, &color); - menuGray = color.pixel; - - /* When no overlays are supported, we would like to use X - "save unders" to avoid exposes to windows obscured by - pop-up menus. However, OpenGL's direct rendering support - means OpenGL interacts poorly with X backing store and - save unders. X servers do not (in implementation - practice) redirect OpenGL rendering destined to obscured - window regions into backing store. - - Implementation solutions exist for this problem, but they - are expensive and high-end OpenGL implementations - typically provide fast rendering and/or overlays to - obviate the problem associated of user interfaces (pop-up - menus) forcing redraws of complex normal plane scenes. - (See support for overlays pop-up menus above.) - - Mesa 3D, however, does not support direct rendering. - Overlays are often unavailable to Mesa, and Mesa is also - relatively slow. For these reasons, Mesa-rendering GLUT - programs can and should use X save unders. - - Look for the GLX extension. If _not_ supported, we are - presumably using Mesa so enable save unders. */ - - presumablyMesa = !XQueryExtension(__glutDisplay, "GLX", - &dummy, &dummy, &dummy); - - if (presumablyMesa) { - useSaveUnders = CWSaveUnder; - } else { - useSaveUnders = 0; - } -} - -static void -menuSetup(void) -{ - if (menuFont) { - /* MenuFont overload to indicate menu initalization. */ - return; - } - menuFont = XLoadQueryFont(__glutDisplay, - "-*-helvetica-bold-o-normal--14-*-*-*-p-*-iso8859-1"); - if (!menuFont) { - /* Try back up font. */ - menuFont = XLoadQueryFont(__glutDisplay, "fixed"); - } - if (!menuFont) { - __glutFatalError("could not load font."); - } - menuVisualSetup(); - fontHeight = menuFont->ascent + menuFont->descent; - menuCursor = XCreateFontCursor(__glutDisplay, XC_arrow); -} - -static void -menuGraphicsContextSetup(Window win) -{ - XGCValues gcvals; - - if (blackGC != None) { - return; - } - gcvals.font = menuFont->fid; - gcvals.foreground = menuBlack; - blackGC = XCreateGC(__glutDisplay, win, - GCFont | GCForeground, &gcvals); - gcvals.foreground = menuGray; - grayGC = XCreateGC(__glutDisplay, win, GCForeground, &gcvals); - gcvals.foreground = menuWhite; - whiteGC = XCreateGC(__glutDisplay, win, GCForeground, &gcvals); -} - -void -__glutSetMenu(GLUTmenu * menu) -{ - __glutCurrentMenu = menu; -} - -static void -unmapMenu(GLUTmenu * menu) -{ - if (menu->cascade) { - unmapMenu(menu->cascade); - menu->cascade = NULL; - } - menu->anchor = NULL; - menu->highlighted = NULL; - XUnmapWindow(__glutDisplay, menu->win); -} - -static void -finishMenu(Window win, int x, int y) -{ - Window dummy; - int rc; - - unmapMenu(__glutMappedMenu); - XUngrabPointer(__glutDisplay, CurrentTime); - - /* Popping up an overlay popup menu will install its own - colormap. If the window associated with the menu has an - overlay, install that window's overlay colormap so the - overlay isn't left using the popup menu's colormap. */ - if (__glutMenuWindow->overlay) { - XInstallColormap(__glutDisplay, - __glutMenuWindow->overlay->colormap->cmap); - } - - /* This XFlush is needed to to make sure the pointer is - really ungrabbed when the application's menu callback is - called. Otherwise, a deadlock might happen because the - application may try to read from an terminal window, but - yet the ungrab hasn't really happened since it hasn't been - flushed out. */ - XFlush(__glutDisplay); - - if (__glutMenuStatusFunc) { - if (win != __glutMenuWindow->win) { - /* The button release may have occurred in a window other - than the window requesting the pop-up menu (for - example, one of the submenu windows). In this case, we - need to translate the coordinates into the coordinate - system of the window associated with the window. */ - rc = XTranslateCoordinates(__glutDisplay, win, __glutMenuWindow->win, - x, y, &x, &y, &dummy); - assert(rc != False); /* Will always be on same screen. */ - } - __glutSetWindow(__glutMenuWindow); - __glutSetMenu(__glutMappedMenu); - - /* Setting __glutMappedMenu to NULL permits operations that - change menus or destroy the menu window again. */ - __glutMappedMenu = NULL; - - __glutMenuStatusFunc(GLUT_MENU_NOT_IN_USE, x, y); - } - /* Setting __glutMappedMenu to NULL permits operations that - change menus or destroy the menu window again. */ - __glutMappedMenu = NULL; - - /* If an item is selected and it is not a submenu trigger, - generate menu callback. */ - if (__glutItemSelected && !__glutItemSelected->isTrigger) { - __glutSetWindow(__glutMenuWindow); - /* When menu callback is triggered, current menu should be - set to the callback menu. */ - __glutSetMenu(__glutItemSelected->menu); - __glutItemSelected->menu->select( - __glutItemSelected->value); - } - __glutMenuWindow = NULL; -} - -#define MENU_BORDER 1 -#define MENU_GAP 2 -#define MENU_ARROW_GAP 6 -#define MENU_ARROW_WIDTH 8 - -static void -mapMenu(GLUTmenu * menu, int x, int y) -{ - XWindowChanges changes; - unsigned int mask; - int subMenuExtension, num; - - /* If there are submenus, we need to provide extra space for - the submenu pull arrow. */ - if (menu->submenus > 0) { - subMenuExtension = MENU_ARROW_GAP + MENU_ARROW_WIDTH; - } else { - subMenuExtension = 0; - } - - changes.stack_mode = Above; - mask = CWStackMode | CWX | CWY; - /* If the menu isn't managed (ie, validated so all the - InputOnly subwindows are the right size), do so. */ - if (!menu->managed) { - GLUTmenuItem *item; - - item = menu->list; - num = menu->num; - while (item) { - XWindowChanges itemupdate; - - itemupdate.y = (num - 1) * fontHeight + MENU_GAP; - itemupdate.width = menu->pixwidth; - itemupdate.width += subMenuExtension; - XConfigureWindow(__glutDisplay, item->win, - CWWidth | CWY, &itemupdate); - item = item->next; - num--; - } - menu->pixheight = MENU_GAP + - fontHeight * menu->num + MENU_GAP; - changes.height = menu->pixheight; - changes.width = MENU_GAP + - menu->pixwidth + subMenuExtension + MENU_GAP; - mask |= CWWidth | CWHeight; - menu->managed = True; - } - /* Make sure menu appears fully on screen. */ - if (y + menu->pixheight >= __glutScreenHeight) { - changes.y = __glutScreenHeight - menu->pixheight; - } else { - changes.y = y; - } - if (x + menu->pixwidth + subMenuExtension >= - __glutScreenWidth) { - changes.x = __glutScreenWidth - - menu->pixwidth + subMenuExtension; - } else { - changes.x = x; - } - - /* Rember where the menu is placed so submenus can be - properly placed relative to it. */ - menu->x = changes.x; - menu->y = changes.y; - - XConfigureWindow(__glutDisplay, menu->win, mask, &changes); - XInstallColormap(__glutDisplay, menuColormap); - /* XXX The XRaiseWindow below should not be necessary because - the XConfigureWindow requests an Above stack mode (same as - XRaiseWindow), but some Sun users complained this was still - necessary. Probably some window manager or X server bug on - these machines?? */ - XRaiseWindow(__glutDisplay, menu->win); - XMapWindow(__glutDisplay, menu->win); -} - -static void -startMenu(GLUTmenu * menu, GLUTwindow * window, - int x, int y, int x_win, int y_win) -{ - int grab; - - assert(__glutMappedMenu == NULL); - grab = XGrabPointer(__glutDisplay, __glutRoot, True, - ButtonPressMask | ButtonReleaseMask, - GrabModeAsync, GrabModeAsync, - __glutRoot, menuCursor, CurrentTime); - if (grab != GrabSuccess) { - /* Somebody else has pointer grabbed, ignore menu - activation. */ - return; - } - __glutMappedMenu = menu; - __glutMenuWindow = window; - __glutItemSelected = NULL; - if (__glutMenuStatusFunc) { - __glutSetMenu(menu); - __glutSetWindow(window); - __glutMenuStatusFunc(GLUT_MENU_IN_USE, x_win, y_win); - } - mapMenu(menu, x, y); -} - -static void -paintSubMenuArrow(Window win, int x, int y) -{ - XPoint p[5]; - - p[0].x = p[4].x = x; - p[0].y = p[4].y = y - menuFont->ascent + 1; - p[1].x = p[0].x + MENU_ARROW_WIDTH - 1; - p[1].y = p[0].y + (menuFont->ascent / 2) - 1; - p[2].x = p[1].x; - p[2].y = p[1].y + 1; - p[3].x = p[0].x; - p[3].y = p[0].y + menuFont->ascent - 2; - XFillPolygon(__glutDisplay, win, - whiteGC, p, 4, Convex, CoordModeOrigin); - XDrawLines(__glutDisplay, win, blackGC, p, 5, CoordModeOrigin); -} - -static void -paintMenuItem(GLUTmenuItem * item, int num) -{ - Window win = item->menu->win; - GC gc; - int y; - int subMenuExtension; - - if (item->menu->submenus > 0) { - subMenuExtension = MENU_ARROW_GAP + MENU_ARROW_WIDTH; - } else { - subMenuExtension = 0; - } - if (item->menu->highlighted == item) { - gc = whiteGC; - } else { - gc = grayGC; - } - y = MENU_GAP + fontHeight * num - menuFont->descent; - XFillRectangle(__glutDisplay, win, gc, - MENU_GAP, y - fontHeight + menuFont->descent, - item->menu->pixwidth + subMenuExtension, fontHeight); - XDrawString(__glutDisplay, win, blackGC, - MENU_GAP, y, item->label, item->len); - if (item->isTrigger) { - paintSubMenuArrow(win, - item->menu->pixwidth + MENU_ARROW_GAP + 1, y); - } -} - -static void -paintMenu(GLUTmenu * menu) -{ - GLUTmenuItem *item; - int i = menu->num; - int y = MENU_GAP + fontHeight * i - menuFont->descent; - - item = menu->list; - while (item) { - if (item->menu->highlighted == item) { - paintMenuItem(item, i); - } else { - /* Quick render of the menu item; assume background - already cleared to gray. */ - XDrawString(__glutDisplay, menu->win, blackGC, - 2, y, item->label, item->len); - if (item->isTrigger) { - paintSubMenuArrow(menu->win, - menu->pixwidth + MENU_ARROW_GAP + 1, y); - } - } - i--; - y -= fontHeight; - item = item->next; - } -} - -static GLUTmenuItem * -getMenuItem(GLUTmenu * menu, Window win, int *which) -{ - GLUTmenuItem *item; - int i; - - if (menu->searched) { - __glutFatalError("submenu infinite loop detected"); - } - menu->searched = True; - i = menu->num; - item = menu->list; - while (item) { - if (item->win == win) { - *which = i; - menu->searched = False; - return item; - } - if (item->isTrigger) { - GLUTmenuItem *subitem; - - subitem = __glutGetMenuItem(__glutMenuList[item->value], - win, which); - if (subitem) { - menu->searched = False; - return subitem; - } - } - i--; - item = item->next; - } - menu->searched = False; - return NULL; -} - -static int -getMenuItemIndex(GLUTmenuItem * item) -{ - int count = 0; - - while (item) { - count++; - item = item->next; - } - return count; -} - -static GLUTmenu * -getMenu(Window win) -{ - GLUTmenu *menu; - - menu = __glutMappedMenu; - while (menu) { - if (win == menu->win) { - return menu; - } - menu = menu->cascade; - } - return NULL; -} - -static GLUTmenu * -getMenuByNum(int menunum) -{ - if (menunum < 1 || menunum > menuListSize) { - return NULL; - } - return __glutMenuList[menunum - 1]; -} - -static int -getUnusedMenuSlot(void) -{ - int i; - - /* Look for allocated, unused slot. */ - for (i = 0; i < menuListSize; i++) { - if (!__glutMenuList[i]) { - return i; - } - } - /* Allocate a new slot. */ - menuListSize++; - if (__glutMenuList) { - __glutMenuList = (GLUTmenu **) - realloc(__glutMenuList, menuListSize * sizeof(GLUTmenu *)); - } else { - /* XXX Some realloc's do not correctly perform a malloc - when asked to perform a realloc on a NULL pointer, - though the ANSI C library spec requires this. */ - __glutMenuList = (GLUTmenu **) malloc(sizeof(GLUTmenu *)); - } - if (!__glutMenuList) { - __glutFatalError("out of memory."); - } - __glutMenuList[menuListSize - 1] = NULL; - return menuListSize - 1; -} - -void -__glutMenuModificationError(void) -{ - /* XXX Remove the warning after GLUT 3.0. */ - __glutWarning("The following is a new check for GLUT 3.0; update your code."); - __glutFatalError("menu manipulation not allowed while menus in use."); -} - - -static void -menuItemEnterOrLeave(GLUTmenuItem * item, - int num, int type) -{ - int alreadyUp = 0; - - if (type == EnterNotify) { - GLUTmenuItem *prevItem = item->menu->highlighted; - - if (prevItem && prevItem != item) { - /* If there's an already higlighted item in this menu - that is different from this one (we could be - re-entering an item with an already cascaded - submenu!), unhighlight the previous item. */ - item->menu->highlighted = NULL; - paintMenuItem(prevItem, getMenuItemIndex(prevItem)); - } - item->menu->highlighted = item; - __glutItemSelected = item; - if (item->menu->cascade) { - if (!item->isTrigger) { - /* Entered a menu item that is not a submenu trigger, - so pop down the current submenu cascade of this - menu. */ - unmapMenu(item->menu->cascade); - item->menu->cascade = NULL; - } else { - GLUTmenu *submenu = __glutMenuList[item->value]; - - if (submenu->anchor == item) { - /* We entered the submenu trigger for the submenu - that is already up, so don't take down the - submenu. */ - alreadyUp = 1; - } else { - /* Submenu already popped up for some other submenu - item of this menu; need to pop down that other - submenu cascade. */ - unmapMenu(item->menu->cascade); - item->menu->cascade = NULL; - } - } - } - if (!alreadyUp) { - /* Make sure the menu item gets painted with - highlighting. */ - paintMenuItem(item, num); - } else { - /* If already up, should already be highlighted. */ - } - } else { - /* LeaveNotify: Handle leaving a menu item... */ - if (item->menu->cascade && - item->menu->cascade->anchor == item) { - /* If there is a submenu casacaded from this item, do not - change the highlighting on this item upon leaving. */ - } else { - /* Unhighlight this menu item. */ - item->menu->highlighted = NULL; - paintMenuItem(item, num); - } - __glutItemSelected = NULL; - } - if (item->isTrigger) { - if (type == EnterNotify && !alreadyUp) { - GLUTmenu *submenu = __glutMenuList[item->value]; - - mapMenu(submenu, - item->menu->x + item->menu->pixwidth + - MENU_ARROW_GAP + MENU_ARROW_WIDTH + - MENU_GAP + MENU_BORDER, - item->menu->y + fontHeight * (num - 1) + MENU_GAP); - item->menu->cascade = submenu; - submenu->anchor = item; - } - } -} - -/* Installs callback functions for use by glut_event.c The point - of this is so that GLUT's menu code only gets linked into - GLUT binaries (assuming a static library) if the GLUT menu - API is used. */ -static void -installMenuCallbacks(void) -{ - __glutMenuItemEnterOrLeave = menuItemEnterOrLeave; - __glutFinishMenu = finishMenu; - __glutPaintMenu = paintMenu; - __glutStartMenu = startMenu; - __glutGetMenuByNum = getMenuByNum; - __glutGetMenu = getMenu; - __glutGetMenuItem = getMenuItem; -} - -int APIENTRY -glutCreateMenu(GLUTselectCB selectFunc) -{ - XSetWindowAttributes wa; - GLUTmenu *menu; - int menuid; - - if (__glutMappedMenu) { - __glutMenuModificationError(); - } - if (!__glutDisplay) { - __glutOpenXConnection(NULL); - } - - installMenuCallbacks(); - - menuid = getUnusedMenuSlot(); - menu = (GLUTmenu *) malloc(sizeof(GLUTmenu)); - if (!menu) { - __glutFatalError("out of memory."); - } - menu->id = menuid; - menu->num = 0; - menu->submenus = 0; - menu->managed = False; - menu->searched = False; - menu->pixwidth = 0; - menu->select = selectFunc; - menu->list = NULL; - menu->cascade = NULL; - menu->highlighted = NULL; - menu->anchor = NULL; - menuSetup(); - wa.override_redirect = True; - wa.background_pixel = menuGray; - wa.border_pixel = menuBlack; - wa.colormap = menuColormap; - wa.event_mask = StructureNotifyMask | ExposureMask | - ButtonPressMask | ButtonReleaseMask | - EnterWindowMask | LeaveWindowMask; - /* Save unders really only enabled if useSaveUnders is set to - CWSaveUnder, ie. using Mesa 3D. See earlier comments. */ - wa.save_under = True; - menu->win = XCreateWindow(__glutDisplay, __glutRoot, - /* Real position determined when mapped. */ - 0, 0, - /* Real size will be determined when menu is manged. */ - 1, 1, - MENU_BORDER, menuDepth, InputOutput, menuVisual, - CWOverrideRedirect | CWBackPixel | CWBorderPixel | - CWEventMask | CWColormap | useSaveUnders, - &wa); - menuGraphicsContextSetup(menu->win); - __glutMenuList[menuid] = menu; - __glutSetMenu(menu); - return menuid + 1; -} - -/* CENTRY */ -int APIENTRY -glutGetMenu(void) -{ - if (__glutCurrentMenu) { - return __glutCurrentMenu->id + 1; - } else { - return 0; - } -} - -void APIENTRY -glutSetMenu(int menuid) -{ - GLUTmenu *menu; - - if (menuid < 1 || menuid > menuListSize) { - __glutWarning("glutSetMenu attempted on bogus menu."); - return; - } - menu = __glutMenuList[menuid - 1]; - if (!menu) { - __glutWarning("glutSetMenu attempted on bogus menu."); - return; - } - __glutSetMenu(menu); -} -/* ENDCENTRY */ - -void -__glutSetMenuItem(GLUTmenuItem * item, const char *label, - int value, Bool isTrigger) -{ - GLUTmenu *menu; - - menu = item->menu; - item->label = __glutStrdup(label); - if (!item->label) { - __glutFatalError("out of memory."); - } - item->isTrigger = isTrigger; - item->len = (int) strlen(label); - item->value = value; - item->pixwidth = XTextWidth(menuFont, label, item->len) + 4; - if (item->pixwidth > menu->pixwidth) { - menu->pixwidth = item->pixwidth; - } - menu->managed = False; -} - -/* CENTRY */ -void APIENTRY -glutAddMenuEntry(const char *label, int value) -{ - XSetWindowAttributes wa; - GLUTmenuItem *entry; - - if (__glutMappedMenu) { - __glutMenuModificationError(); - } - entry = (GLUTmenuItem *) malloc(sizeof(GLUTmenuItem)); - if (!entry) { - __glutFatalError("out of memory."); - } - entry->menu = __glutCurrentMenu; - __glutSetMenuItem(entry, label, value, False); - wa.event_mask = EnterWindowMask | LeaveWindowMask; - entry->win = XCreateWindow(__glutDisplay, - __glutCurrentMenu->win, MENU_GAP, - __glutCurrentMenu->num * fontHeight + MENU_GAP, /* x & y */ - entry->pixwidth, fontHeight, /* width & height */ - 0, CopyFromParent, InputOnly, CopyFromParent, - CWEventMask, &wa); - XMapWindow(__glutDisplay, entry->win); - __glutCurrentMenu->num++; - entry->next = __glutCurrentMenu->list; - __glutCurrentMenu->list = entry; -} - -void APIENTRY -glutAddSubMenu(const char *label, int menu) -{ - XSetWindowAttributes wa; - GLUTmenuItem *submenu; - - if (__glutMappedMenu) { - __glutMenuModificationError(); - } - submenu = (GLUTmenuItem *) malloc(sizeof(GLUTmenuItem)); - if (!submenu) { - __glutFatalError("out of memory."); - } - __glutCurrentMenu->submenus++; - submenu->menu = __glutCurrentMenu; - __glutSetMenuItem(submenu, label, /* base 0 */ menu - 1, True); - wa.event_mask = EnterWindowMask | LeaveWindowMask; - submenu->win = XCreateWindow(__glutDisplay, - __glutCurrentMenu->win, MENU_GAP, - __glutCurrentMenu->num * fontHeight + MENU_GAP, /* x & y */ - submenu->pixwidth, fontHeight, /* width & height */ - 0, CopyFromParent, InputOnly, CopyFromParent, - CWEventMask, &wa); - XMapWindow(__glutDisplay, submenu->win); - __glutCurrentMenu->num++; - submenu->next = __glutCurrentMenu->list; - __glutCurrentMenu->list = submenu; -} - -void APIENTRY -glutAttachMenu(int button) -{ - if (__glutMappedMenu) { - __glutMenuModificationError(); - } - installMenuCallbacks(); - if (__glutCurrentWindow->menu[button] < 1) { - __glutCurrentWindow->buttonUses++; - } - __glutChangeWindowEventMask( - ButtonPressMask | ButtonReleaseMask, True); - __glutCurrentWindow->menu[button] = __glutCurrentMenu->id + 1; -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_menu2.c b/lib/glut-3.7.6/lib/glut/glut_menu2.c deleted file mode 100644 index 3046f91f1b7c3e5568a17a87eb2091174d5ca0fe..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_menu2.c +++ /dev/null @@ -1,185 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* glut_menu2.c implements the little used GLUT menu calls in - a distinct file from glut_menu.c for slim static linking. */ - -/* The Win32 GLUT file win32_menu.c completely re-implements all - the menuing functionality implemented. This file is used only by - the X Window System version of GLUT. */ - -#include -#include -#include -#include -#include - -#include - -#include "glutint.h" -#include "layerutil.h" - -/* CENTRY */ -/* DEPRICATED, use glutMenuStatusFunc instead. */ -void APIENTRY -glutMenuStateFunc(GLUTmenuStateCB menuStateFunc) -{ - __glutMenuStatusFunc = (GLUTmenuStatusCB) menuStateFunc; -} - -void APIENTRY -glutMenuStatusFunc(GLUTmenuStatusCB menuStatusFunc) -{ - __glutMenuStatusFunc = menuStatusFunc; -} - -void APIENTRY -glutDestroyMenu(int menunum) -{ - GLUTmenu *menu = __glutGetMenuByNum(menunum); - GLUTmenuItem *item, *next; - - if (__glutMappedMenu) - __glutMenuModificationError(); - assert(menu->id == menunum - 1); - XDestroySubwindows(__glutDisplay, menu->win); - XDestroyWindow(__glutDisplay, menu->win); - __glutMenuList[menunum - 1] = NULL; - /* free all menu entries */ - item = menu->list; - while (item) { - assert(item->menu == menu); - next = item->next; - free(item->label); - free(item); - item = next; - } - if (__glutCurrentMenu == menu) { - __glutCurrentMenu = NULL; - } - free(menu); -} - -void APIENTRY -glutChangeToMenuEntry(int num, const char *label, int value) -{ - GLUTmenuItem *item; - int i; - - if (__glutMappedMenu) - __glutMenuModificationError(); - i = __glutCurrentMenu->num; - item = __glutCurrentMenu->list; - while (item) { - if (i == num) { - if (item->isTrigger) { - /* If changing a submenu trigger to a menu entry, we - need to account for submenus. */ - item->menu->submenus--; - } - free(item->label); - __glutSetMenuItem(item, label, value, False); - return; - } - i--; - item = item->next; - } - __glutWarning("Current menu has no %d item.", num); -} - -void APIENTRY -glutChangeToSubMenu(int num, const char *label, int menu) -{ - GLUTmenuItem *item; - int i; - - if (__glutMappedMenu) - __glutMenuModificationError(); - i = __glutCurrentMenu->num; - item = __glutCurrentMenu->list; - while (item) { - if (i == num) { - if (!item->isTrigger) { - /* If changing a menu entry to as submenu trigger, we - need to account for submenus. */ - item->menu->submenus++; - } - free(item->label); - __glutSetMenuItem(item, label, /* base 0 */ menu - 1, True); - return; - } - i--; - item = item->next; - } - __glutWarning("Current menu has no %d item.", num); -} - -void APIENTRY -glutRemoveMenuItem(int num) -{ - GLUTmenuItem *item, **prev, *remaining; - int pixwidth, i; - - if (__glutMappedMenu) - __glutMenuModificationError(); - i = __glutCurrentMenu->num; - prev = &__glutCurrentMenu->list; - item = __glutCurrentMenu->list; - /* If menu item is removed, the menu's pixwidth may need to - be recomputed. */ - pixwidth = 1; - while (item) { - if (i == num) { - /* If this menu item's pixwidth is as wide as the menu's - pixwidth, removing this menu item will necessitate - shrinking the menu's pixwidth. */ - if (item->pixwidth >= __glutCurrentMenu->pixwidth) { - /* Continue recalculating menu pixwidth, first skipping - the removed item. */ - remaining = item->next; - while (remaining) { - if (remaining->pixwidth > pixwidth) { - pixwidth = remaining->pixwidth; - } - remaining = remaining->next; - } - __glutCurrentMenu->pixwidth = pixwidth; - } - __glutCurrentMenu->num--; - __glutCurrentMenu->managed = False; - - /* Patch up menu's item list. */ - *prev = item->next; - - free(item->label); - free(item); - return; - } - if (item->pixwidth > pixwidth) { - pixwidth = item->pixwidth; - } - i--; - prev = &item->next; - item = item->next; - } - __glutWarning("Current menu has no %d item.", num); -} - -void APIENTRY -glutDetachMenu(int button) -{ - if (__glutMappedMenu) - __glutMenuModificationError(); - if (__glutCurrentWindow->menu[button] > 0) { - __glutCurrentWindow->buttonUses--; - __glutChangeWindowEventMask(ButtonPressMask | ButtonReleaseMask, - __glutCurrentWindow->buttonUses > 0); - __glutCurrentWindow->menu[button] = 0; - } -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_mesa.c b/lib/glut-3.7.6/lib/glut/glut_mesa.c deleted file mode 100644 index 73682a506728d9c478f089bafcd1033595bb4f05..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_mesa.c +++ /dev/null @@ -1,57 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include "glutint.h" - -int __glutMesaSwapHackSupport = 0; /* Not supported until - proven otherwise. */ - -/* Use the "Mesa swap hack" if reasonable if and only if - MESA_SWAP_HACK is set to something whose first character is - not "N" or "n" AND "Brian Paul" is the vendor string AND - "Mesa X11"* (or "Mesa" for backward compatibility) is the - renderer string. - - Anyone who modifies Mesa so that glXSwapBuffers does not - simply blit the previously rendered back buffer should - change either their vendor or renderer string to avoid - confusing GLUT. */ - -void -__glutDetermineMesaSwapHackSupport(void) -{ - static int doneAlready = 0; - char *env, *vendor, *renderer; - - if (doneAlready) - return; - env = getenv("MESA_SWAP_HACK"); - if (env) { - if ((env[0] != 'n') && (env[0] != 'N')) { - vendor = (char *) glGetString(GL_VENDOR); - renderer = (char *) glGetString(GL_RENDERER); - - /* Old versions of X11 Mesa uses the renderer string - "Mesa"; Brian plans to start using "Mesa X11" to - distinguish the X version of Mesa from other flavor - such as Windows or 3Dfx. */ - -#define MESA_X11 "Mesa X11" - - /* XXX At some point in the future, eliminate the - backward compatibility for the old "Mesa" renderer - string. */ - - if (!strcmp(vendor, "Brian Paul") && (!strcmp(renderer, "Mesa") || - !strncmp(renderer, MESA_X11, sizeof(MESA_X11) - 1))) - __glutMesaSwapHackSupport = 1; - } - } - doneAlready = 1; -} diff --git a/lib/glut-3.7.6/lib/glut/glut_modifier.c b/lib/glut-3.7.6/lib/glut/glut_modifier.c deleted file mode 100644 index deb9a0448419786264424d7a146f9f50d490613e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_modifier.c +++ /dev/null @@ -1,31 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -/* CENTRY */ -int APIENTRY -glutGetModifiers(void) -{ - int modifiers; - - if(__glutModifierMask == (unsigned int) ~0) { - __glutWarning( - "glutCurrentModifiers: do not call outside core input callback."); - return 0; - } - modifiers = 0; - if(__glutModifierMask & (ShiftMask|LockMask)) - modifiers |= GLUT_ACTIVE_SHIFT; - if(__glutModifierMask & ControlMask) - modifiers |= GLUT_ACTIVE_CTRL; - if(__glutModifierMask & Mod1Mask) - modifiers |= GLUT_ACTIVE_ALT; - return modifiers; -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_mroman.c b/lib/glut-3.7.6/lib/glut/glut_mroman.c deleted file mode 100644 index de93a9c341c770b13cc1fde32239a9c3d773dc18..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_mroman.c +++ /dev/null @@ -1,2451 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#include "glutstroke.h" - -/* char: 33 '!' */ - -static const CoordRec char33_stroke0[] = { - { 52.381, 100 }, - { 52.381, 33.3333 }, -}; - -static const CoordRec char33_stroke1[] = { - { 52.381, 9.5238 }, - { 47.6191, 4.7619 }, - { 52.381, 0 }, - { 57.1429, 4.7619 }, - { 52.381, 9.5238 }, -}; - -static const StrokeRec char33[] = { - { 2, char33_stroke0 }, - { 5, char33_stroke1 }, -}; - -/* char: 34 '"' */ - -static const CoordRec char34_stroke0[] = { - { 33.3334, 100 }, - { 33.3334, 66.6667 }, -}; - -static const CoordRec char34_stroke1[] = { - { 71.4286, 100 }, - { 71.4286, 66.6667 }, -}; - -static const StrokeRec char34[] = { - { 2, char34_stroke0 }, - { 2, char34_stroke1 }, -}; - -/* char: 35 '#' */ - -static const CoordRec char35_stroke0[] = { - { 54.7619, 119.048 }, - { 21.4286, -33.3333 }, -}; - -static const CoordRec char35_stroke1[] = { - { 83.3334, 119.048 }, - { 50, -33.3333 }, -}; - -static const CoordRec char35_stroke2[] = { - { 21.4286, 57.1429 }, - { 88.0952, 57.1429 }, -}; - -static const CoordRec char35_stroke3[] = { - { 16.6667, 28.5714 }, - { 83.3334, 28.5714 }, -}; - -static const StrokeRec char35[] = { - { 2, char35_stroke0 }, - { 2, char35_stroke1 }, - { 2, char35_stroke2 }, - { 2, char35_stroke3 }, -}; - -/* char: 36 '$' */ - -static const CoordRec char36_stroke0[] = { - { 42.8571, 119.048 }, - { 42.8571, -19.0476 }, -}; - -static const CoordRec char36_stroke1[] = { - { 61.9047, 119.048 }, - { 61.9047, -19.0476 }, -}; - -static const CoordRec char36_stroke2[] = { - { 85.7143, 85.7143 }, - { 76.1905, 95.2381 }, - { 61.9047, 100 }, - { 42.8571, 100 }, - { 28.5714, 95.2381 }, - { 19.0476, 85.7143 }, - { 19.0476, 76.1905 }, - { 23.8095, 66.6667 }, - { 28.5714, 61.9048 }, - { 38.0952, 57.1429 }, - { 66.6666, 47.619 }, - { 76.1905, 42.8571 }, - { 80.9524, 38.0952 }, - { 85.7143, 28.5714 }, - { 85.7143, 14.2857 }, - { 76.1905, 4.7619 }, - { 61.9047, 0 }, - { 42.8571, 0 }, - { 28.5714, 4.7619 }, - { 19.0476, 14.2857 }, -}; - -static const StrokeRec char36[] = { - { 2, char36_stroke0 }, - { 2, char36_stroke1 }, - { 20, char36_stroke2 }, -}; - -/* char: 37 '%' */ - -static const CoordRec char37_stroke0[] = { - { 95.2381, 100 }, - { 9.5238, 0 }, -}; - -static const CoordRec char37_stroke1[] = { - { 33.3333, 100 }, - { 42.8571, 90.4762 }, - { 42.8571, 80.9524 }, - { 38.0952, 71.4286 }, - { 28.5714, 66.6667 }, - { 19.0476, 66.6667 }, - { 9.5238, 76.1905 }, - { 9.5238, 85.7143 }, - { 14.2857, 95.2381 }, - { 23.8095, 100 }, - { 33.3333, 100 }, - { 42.8571, 95.2381 }, - { 57.1428, 90.4762 }, - { 71.4286, 90.4762 }, - { 85.7143, 95.2381 }, - { 95.2381, 100 }, -}; - -static const CoordRec char37_stroke2[] = { - { 76.1905, 33.3333 }, - { 66.6667, 28.5714 }, - { 61.9048, 19.0476 }, - { 61.9048, 9.5238 }, - { 71.4286, 0 }, - { 80.9524, 0 }, - { 90.4762, 4.7619 }, - { 95.2381, 14.2857 }, - { 95.2381, 23.8095 }, - { 85.7143, 33.3333 }, - { 76.1905, 33.3333 }, -}; - -static const StrokeRec char37[] = { - { 2, char37_stroke0 }, - { 16, char37_stroke1 }, - { 11, char37_stroke2 }, -}; - -/* char: 38 '&' */ - -static const CoordRec char38_stroke0[] = { - { 100, 57.1429 }, - { 100, 61.9048 }, - { 95.2381, 66.6667 }, - { 90.4762, 66.6667 }, - { 85.7143, 61.9048 }, - { 80.9524, 52.381 }, - { 71.4286, 28.5714 }, - { 61.9048, 14.2857 }, - { 52.3809, 4.7619 }, - { 42.8571, 0 }, - { 23.8095, 0 }, - { 14.2857, 4.7619 }, - { 9.5238, 9.5238 }, - { 4.7619, 19.0476 }, - { 4.7619, 28.5714 }, - { 9.5238, 38.0952 }, - { 14.2857, 42.8571 }, - { 47.619, 61.9048 }, - { 52.3809, 66.6667 }, - { 57.1429, 76.1905 }, - { 57.1429, 85.7143 }, - { 52.3809, 95.2381 }, - { 42.8571, 100 }, - { 33.3333, 95.2381 }, - { 28.5714, 85.7143 }, - { 28.5714, 76.1905 }, - { 33.3333, 61.9048 }, - { 42.8571, 47.619 }, - { 66.6667, 14.2857 }, - { 76.1905, 4.7619 }, - { 85.7143, 0 }, - { 95.2381, 0 }, - { 100, 4.7619 }, - { 100, 9.5238 }, -}; - -static const StrokeRec char38[] = { - { 34, char38_stroke0 }, -}; - -/* char: 39 ''' */ - -static const CoordRec char39_stroke0[] = { - { 52.381, 100 }, - { 52.381, 66.6667 }, -}; - -static const StrokeRec char39[] = { - { 2, char39_stroke0 }, -}; - -/* char: 40 '(' */ - -static const CoordRec char40_stroke0[] = { - { 69.0476, 119.048 }, - { 59.5238, 109.524 }, - { 50, 95.2381 }, - { 40.4762, 76.1905 }, - { 35.7143, 52.381 }, - { 35.7143, 33.3333 }, - { 40.4762, 9.5238 }, - { 50, -9.5238 }, - { 59.5238, -23.8095 }, - { 69.0476, -33.3333 }, -}; - -static const StrokeRec char40[] = { - { 10, char40_stroke0 }, -}; - -/* char: 41 ')' */ - -static const CoordRec char41_stroke0[] = { - { 35.7143, 119.048 }, - { 45.2381, 109.524 }, - { 54.7619, 95.2381 }, - { 64.2857, 76.1905 }, - { 69.0476, 52.381 }, - { 69.0476, 33.3333 }, - { 64.2857, 9.5238 }, - { 54.7619, -9.5238 }, - { 45.2381, -23.8095 }, - { 35.7143, -33.3333 }, -}; - -static const StrokeRec char41[] = { - { 10, char41_stroke0 }, -}; - -/* char: 42 '*' */ - -static const CoordRec char42_stroke0[] = { - { 52.381, 71.4286 }, - { 52.381, 14.2857 }, -}; - -static const CoordRec char42_stroke1[] = { - { 28.5715, 57.1429 }, - { 76.1905, 28.5714 }, -}; - -static const CoordRec char42_stroke2[] = { - { 76.1905, 57.1429 }, - { 28.5715, 28.5714 }, -}; - -static const StrokeRec char42[] = { - { 2, char42_stroke0 }, - { 2, char42_stroke1 }, - { 2, char42_stroke2 }, -}; - -/* char: 43 '+' */ - -static const CoordRec char43_stroke0[] = { - { 52.3809, 85.7143 }, - { 52.3809, 0 }, -}; - -static const CoordRec char43_stroke1[] = { - { 9.5238, 42.8571 }, - { 95.2381, 42.8571 }, -}; - -static const StrokeRec char43[] = { - { 2, char43_stroke0 }, - { 2, char43_stroke1 }, -}; - -/* char: 44 ',' */ - -static const CoordRec char44_stroke0[] = { - { 57.1429, 4.7619 }, - { 52.381, 0 }, - { 47.6191, 4.7619 }, - { 52.381, 9.5238 }, - { 57.1429, 4.7619 }, - { 57.1429, -4.7619 }, - { 52.381, -14.2857 }, - { 47.6191, -19.0476 }, -}; - -static const StrokeRec char44[] = { - { 8, char44_stroke0 }, -}; - -/* char: 45 '-' */ - -static const CoordRec char45_stroke0[] = { - { 9.5238, 42.8571 }, - { 95.2381, 42.8571 }, -}; - -static const StrokeRec char45[] = { - { 2, char45_stroke0 }, -}; - -/* char: 46 '.' */ - -static const CoordRec char46_stroke0[] = { - { 52.381, 9.5238 }, - { 47.6191, 4.7619 }, - { 52.381, 0 }, - { 57.1429, 4.7619 }, - { 52.381, 9.5238 }, -}; - -static const StrokeRec char46[] = { - { 5, char46_stroke0 }, -}; - -/* char: 47 '/' */ - -static const CoordRec char47_stroke0[] = { - { 19.0476, -14.2857 }, - { 85.7143, 100 }, -}; - -static const StrokeRec char47[] = { - { 2, char47_stroke0 }, -}; - -/* char: 48 '0' */ - -static const CoordRec char48_stroke0[] = { - { 47.619, 100 }, - { 33.3333, 95.2381 }, - { 23.8095, 80.9524 }, - { 19.0476, 57.1429 }, - { 19.0476, 42.8571 }, - { 23.8095, 19.0476 }, - { 33.3333, 4.7619 }, - { 47.619, 0 }, - { 57.1428, 0 }, - { 71.4286, 4.7619 }, - { 80.9524, 19.0476 }, - { 85.7143, 42.8571 }, - { 85.7143, 57.1429 }, - { 80.9524, 80.9524 }, - { 71.4286, 95.2381 }, - { 57.1428, 100 }, - { 47.619, 100 }, -}; - -static const StrokeRec char48[] = { - { 17, char48_stroke0 }, -}; - -/* char: 49 '1' */ - -static const CoordRec char49_stroke0[] = { - { 40.4762, 80.9524 }, - { 50, 85.7143 }, - { 64.2857, 100 }, - { 64.2857, 0 }, -}; - -static const StrokeRec char49[] = { - { 4, char49_stroke0 }, -}; - -/* char: 50 '2' */ - -static const CoordRec char50_stroke0[] = { - { 23.8095, 76.1905 }, - { 23.8095, 80.9524 }, - { 28.5714, 90.4762 }, - { 33.3333, 95.2381 }, - { 42.8571, 100 }, - { 61.9047, 100 }, - { 71.4286, 95.2381 }, - { 76.1905, 90.4762 }, - { 80.9524, 80.9524 }, - { 80.9524, 71.4286 }, - { 76.1905, 61.9048 }, - { 66.6666, 47.619 }, - { 19.0476, 0 }, - { 85.7143, 0 }, -}; - -static const StrokeRec char50[] = { - { 14, char50_stroke0 }, -}; - -/* char: 51 '3' */ - -static const CoordRec char51_stroke0[] = { - { 28.5714, 100 }, - { 80.9524, 100 }, - { 52.3809, 61.9048 }, - { 66.6666, 61.9048 }, - { 76.1905, 57.1429 }, - { 80.9524, 52.381 }, - { 85.7143, 38.0952 }, - { 85.7143, 28.5714 }, - { 80.9524, 14.2857 }, - { 71.4286, 4.7619 }, - { 57.1428, 0 }, - { 42.8571, 0 }, - { 28.5714, 4.7619 }, - { 23.8095, 9.5238 }, - { 19.0476, 19.0476 }, -}; - -static const StrokeRec char51[] = { - { 15, char51_stroke0 }, -}; - -/* char: 52 '4' */ - -static const CoordRec char52_stroke0[] = { - { 64.2857, 100 }, - { 16.6667, 33.3333 }, - { 88.0952, 33.3333 }, -}; - -static const CoordRec char52_stroke1[] = { - { 64.2857, 100 }, - { 64.2857, 0 }, -}; - -static const StrokeRec char52[] = { - { 3, char52_stroke0 }, - { 2, char52_stroke1 }, -}; - -/* char: 53 '5' */ - -static const CoordRec char53_stroke0[] = { - { 76.1905, 100 }, - { 28.5714, 100 }, - { 23.8095, 57.1429 }, - { 28.5714, 61.9048 }, - { 42.8571, 66.6667 }, - { 57.1428, 66.6667 }, - { 71.4286, 61.9048 }, - { 80.9524, 52.381 }, - { 85.7143, 38.0952 }, - { 85.7143, 28.5714 }, - { 80.9524, 14.2857 }, - { 71.4286, 4.7619 }, - { 57.1428, 0 }, - { 42.8571, 0 }, - { 28.5714, 4.7619 }, - { 23.8095, 9.5238 }, - { 19.0476, 19.0476 }, -}; - -static const StrokeRec char53[] = { - { 17, char53_stroke0 }, -}; - -/* char: 54 '6' */ - -static const CoordRec char54_stroke0[] = { - { 78.5714, 85.7143 }, - { 73.8096, 95.2381 }, - { 59.5238, 100 }, - { 50, 100 }, - { 35.7143, 95.2381 }, - { 26.1905, 80.9524 }, - { 21.4286, 57.1429 }, - { 21.4286, 33.3333 }, - { 26.1905, 14.2857 }, - { 35.7143, 4.7619 }, - { 50, 0 }, - { 54.7619, 0 }, - { 69.0476, 4.7619 }, - { 78.5714, 14.2857 }, - { 83.3334, 28.5714 }, - { 83.3334, 33.3333 }, - { 78.5714, 47.619 }, - { 69.0476, 57.1429 }, - { 54.7619, 61.9048 }, - { 50, 61.9048 }, - { 35.7143, 57.1429 }, - { 26.1905, 47.619 }, - { 21.4286, 33.3333 }, -}; - -static const StrokeRec char54[] = { - { 23, char54_stroke0 }, -}; - -/* char: 55 '7' */ - -static const CoordRec char55_stroke0[] = { - { 85.7143, 100 }, - { 38.0952, 0 }, -}; - -static const CoordRec char55_stroke1[] = { - { 19.0476, 100 }, - { 85.7143, 100 }, -}; - -static const StrokeRec char55[] = { - { 2, char55_stroke0 }, - { 2, char55_stroke1 }, -}; - -/* char: 56 '8' */ - -static const CoordRec char56_stroke0[] = { - { 42.8571, 100 }, - { 28.5714, 95.2381 }, - { 23.8095, 85.7143 }, - { 23.8095, 76.1905 }, - { 28.5714, 66.6667 }, - { 38.0952, 61.9048 }, - { 57.1428, 57.1429 }, - { 71.4286, 52.381 }, - { 80.9524, 42.8571 }, - { 85.7143, 33.3333 }, - { 85.7143, 19.0476 }, - { 80.9524, 9.5238 }, - { 76.1905, 4.7619 }, - { 61.9047, 0 }, - { 42.8571, 0 }, - { 28.5714, 4.7619 }, - { 23.8095, 9.5238 }, - { 19.0476, 19.0476 }, - { 19.0476, 33.3333 }, - { 23.8095, 42.8571 }, - { 33.3333, 52.381 }, - { 47.619, 57.1429 }, - { 66.6666, 61.9048 }, - { 76.1905, 66.6667 }, - { 80.9524, 76.1905 }, - { 80.9524, 85.7143 }, - { 76.1905, 95.2381 }, - { 61.9047, 100 }, - { 42.8571, 100 }, -}; - -static const StrokeRec char56[] = { - { 29, char56_stroke0 }, -}; - -/* char: 57 '9' */ - -static const CoordRec char57_stroke0[] = { - { 83.3334, 66.6667 }, - { 78.5714, 52.381 }, - { 69.0476, 42.8571 }, - { 54.7619, 38.0952 }, - { 50, 38.0952 }, - { 35.7143, 42.8571 }, - { 26.1905, 52.381 }, - { 21.4286, 66.6667 }, - { 21.4286, 71.4286 }, - { 26.1905, 85.7143 }, - { 35.7143, 95.2381 }, - { 50, 100 }, - { 54.7619, 100 }, - { 69.0476, 95.2381 }, - { 78.5714, 85.7143 }, - { 83.3334, 66.6667 }, - { 83.3334, 42.8571 }, - { 78.5714, 19.0476 }, - { 69.0476, 4.7619 }, - { 54.7619, 0 }, - { 45.2381, 0 }, - { 30.9524, 4.7619 }, - { 26.1905, 14.2857 }, -}; - -static const StrokeRec char57[] = { - { 23, char57_stroke0 }, -}; - -/* char: 58 ':' */ - -static const CoordRec char58_stroke0[] = { - { 52.381, 66.6667 }, - { 47.6191, 61.9048 }, - { 52.381, 57.1429 }, - { 57.1429, 61.9048 }, - { 52.381, 66.6667 }, -}; - -static const CoordRec char58_stroke1[] = { - { 52.381, 9.5238 }, - { 47.6191, 4.7619 }, - { 52.381, 0 }, - { 57.1429, 4.7619 }, - { 52.381, 9.5238 }, -}; - -static const StrokeRec char58[] = { - { 5, char58_stroke0 }, - { 5, char58_stroke1 }, -}; - -/* char: 59 ';' */ - -static const CoordRec char59_stroke0[] = { - { 52.381, 66.6667 }, - { 47.6191, 61.9048 }, - { 52.381, 57.1429 }, - { 57.1429, 61.9048 }, - { 52.381, 66.6667 }, -}; - -static const CoordRec char59_stroke1[] = { - { 57.1429, 4.7619 }, - { 52.381, 0 }, - { 47.6191, 4.7619 }, - { 52.381, 9.5238 }, - { 57.1429, 4.7619 }, - { 57.1429, -4.7619 }, - { 52.381, -14.2857 }, - { 47.6191, -19.0476 }, -}; - -static const StrokeRec char59[] = { - { 5, char59_stroke0 }, - { 8, char59_stroke1 }, -}; - -/* char: 60 '<' */ - -static const CoordRec char60_stroke0[] = { - { 90.4762, 85.7143 }, - { 14.2857, 42.8571 }, - { 90.4762, 0 }, -}; - -static const StrokeRec char60[] = { - { 3, char60_stroke0 }, -}; - -/* char: 61 '=' */ - -static const CoordRec char61_stroke0[] = { - { 9.5238, 57.1429 }, - { 95.2381, 57.1429 }, -}; - -static const CoordRec char61_stroke1[] = { - { 9.5238, 28.5714 }, - { 95.2381, 28.5714 }, -}; - -static const StrokeRec char61[] = { - { 2, char61_stroke0 }, - { 2, char61_stroke1 }, -}; - -/* char: 62 '>' */ - -static const CoordRec char62_stroke0[] = { - { 14.2857, 85.7143 }, - { 90.4762, 42.8571 }, - { 14.2857, 0 }, -}; - -static const StrokeRec char62[] = { - { 3, char62_stroke0 }, -}; - -/* char: 63 '?' */ - -static const CoordRec char63_stroke0[] = { - { 23.8095, 76.1905 }, - { 23.8095, 80.9524 }, - { 28.5714, 90.4762 }, - { 33.3333, 95.2381 }, - { 42.8571, 100 }, - { 61.9047, 100 }, - { 71.4285, 95.2381 }, - { 76.1905, 90.4762 }, - { 80.9524, 80.9524 }, - { 80.9524, 71.4286 }, - { 76.1905, 61.9048 }, - { 71.4285, 57.1429 }, - { 52.3809, 47.619 }, - { 52.3809, 33.3333 }, -}; - -static const CoordRec char63_stroke1[] = { - { 52.3809, 9.5238 }, - { 47.619, 4.7619 }, - { 52.3809, 0 }, - { 57.1428, 4.7619 }, - { 52.3809, 9.5238 }, -}; - -static const StrokeRec char63[] = { - { 14, char63_stroke0 }, - { 5, char63_stroke1 }, -}; - -/* char: 64 '@' */ - -static const CoordRec char64_stroke0[] = { - { 64.2857, 52.381 }, - { 54.7619, 57.1429 }, - { 45.2381, 57.1429 }, - { 40.4762, 47.619 }, - { 40.4762, 42.8571 }, - { 45.2381, 33.3333 }, - { 54.7619, 33.3333 }, - { 64.2857, 38.0952 }, -}; - -static const CoordRec char64_stroke1[] = { - { 64.2857, 57.1429 }, - { 64.2857, 38.0952 }, - { 69.0476, 33.3333 }, - { 78.5714, 33.3333 }, - { 83.3334, 42.8571 }, - { 83.3334, 47.619 }, - { 78.5714, 61.9048 }, - { 69.0476, 71.4286 }, - { 54.7619, 76.1905 }, - { 50, 76.1905 }, - { 35.7143, 71.4286 }, - { 26.1905, 61.9048 }, - { 21.4286, 47.619 }, - { 21.4286, 42.8571 }, - { 26.1905, 28.5714 }, - { 35.7143, 19.0476 }, - { 50, 14.2857 }, - { 54.7619, 14.2857 }, - { 69.0476, 19.0476 }, -}; - -static const StrokeRec char64[] = { - { 8, char64_stroke0 }, - { 19, char64_stroke1 }, -}; - -/* char: 65 'A' */ - -static const CoordRec char65_stroke0[] = { - { 52.3809, 100 }, - { 14.2857, 0 }, -}; - -static const CoordRec char65_stroke1[] = { - { 52.3809, 100 }, - { 90.4762, 0 }, -}; - -static const CoordRec char65_stroke2[] = { - { 28.5714, 33.3333 }, - { 76.1905, 33.3333 }, -}; - -static const StrokeRec char65[] = { - { 2, char65_stroke0 }, - { 2, char65_stroke1 }, - { 2, char65_stroke2 }, -}; - -/* char: 66 'B' */ - -static const CoordRec char66_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char66_stroke1[] = { - { 19.0476, 100 }, - { 61.9047, 100 }, - { 76.1905, 95.2381 }, - { 80.9524, 90.4762 }, - { 85.7143, 80.9524 }, - { 85.7143, 71.4286 }, - { 80.9524, 61.9048 }, - { 76.1905, 57.1429 }, - { 61.9047, 52.381 }, -}; - -static const CoordRec char66_stroke2[] = { - { 19.0476, 52.381 }, - { 61.9047, 52.381 }, - { 76.1905, 47.619 }, - { 80.9524, 42.8571 }, - { 85.7143, 33.3333 }, - { 85.7143, 19.0476 }, - { 80.9524, 9.5238 }, - { 76.1905, 4.7619 }, - { 61.9047, 0 }, - { 19.0476, 0 }, -}; - -static const StrokeRec char66[] = { - { 2, char66_stroke0 }, - { 9, char66_stroke1 }, - { 10, char66_stroke2 }, -}; - -/* char: 67 'C' */ - -static const CoordRec char67_stroke0[] = { - { 88.0952, 76.1905 }, - { 83.3334, 85.7143 }, - { 73.8096, 95.2381 }, - { 64.2857, 100 }, - { 45.2381, 100 }, - { 35.7143, 95.2381 }, - { 26.1905, 85.7143 }, - { 21.4286, 76.1905 }, - { 16.6667, 61.9048 }, - { 16.6667, 38.0952 }, - { 21.4286, 23.8095 }, - { 26.1905, 14.2857 }, - { 35.7143, 4.7619 }, - { 45.2381, 0 }, - { 64.2857, 0 }, - { 73.8096, 4.7619 }, - { 83.3334, 14.2857 }, - { 88.0952, 23.8095 }, -}; - -static const StrokeRec char67[] = { - { 18, char67_stroke0 }, -}; - -/* char: 68 'D' */ - -static const CoordRec char68_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char68_stroke1[] = { - { 19.0476, 100 }, - { 52.3809, 100 }, - { 66.6666, 95.2381 }, - { 76.1905, 85.7143 }, - { 80.9524, 76.1905 }, - { 85.7143, 61.9048 }, - { 85.7143, 38.0952 }, - { 80.9524, 23.8095 }, - { 76.1905, 14.2857 }, - { 66.6666, 4.7619 }, - { 52.3809, 0 }, - { 19.0476, 0 }, -}; - -static const StrokeRec char68[] = { - { 2, char68_stroke0 }, - { 12, char68_stroke1 }, -}; - -/* char: 69 'E' */ - -static const CoordRec char69_stroke0[] = { - { 21.4286, 100 }, - { 21.4286, 0 }, -}; - -static const CoordRec char69_stroke1[] = { - { 21.4286, 100 }, - { 83.3334, 100 }, -}; - -static const CoordRec char69_stroke2[] = { - { 21.4286, 52.381 }, - { 59.5238, 52.381 }, -}; - -static const CoordRec char69_stroke3[] = { - { 21.4286, 0 }, - { 83.3334, 0 }, -}; - -static const StrokeRec char69[] = { - { 2, char69_stroke0 }, - { 2, char69_stroke1 }, - { 2, char69_stroke2 }, - { 2, char69_stroke3 }, -}; - -/* char: 70 'F' */ - -static const CoordRec char70_stroke0[] = { - { 21.4286, 100 }, - { 21.4286, 0 }, -}; - -static const CoordRec char70_stroke1[] = { - { 21.4286, 100 }, - { 83.3334, 100 }, -}; - -static const CoordRec char70_stroke2[] = { - { 21.4286, 52.381 }, - { 59.5238, 52.381 }, -}; - -static const StrokeRec char70[] = { - { 2, char70_stroke0 }, - { 2, char70_stroke1 }, - { 2, char70_stroke2 }, -}; - -/* char: 71 'G' */ - -static const CoordRec char71_stroke0[] = { - { 88.0952, 76.1905 }, - { 83.3334, 85.7143 }, - { 73.8096, 95.2381 }, - { 64.2857, 100 }, - { 45.2381, 100 }, - { 35.7143, 95.2381 }, - { 26.1905, 85.7143 }, - { 21.4286, 76.1905 }, - { 16.6667, 61.9048 }, - { 16.6667, 38.0952 }, - { 21.4286, 23.8095 }, - { 26.1905, 14.2857 }, - { 35.7143, 4.7619 }, - { 45.2381, 0 }, - { 64.2857, 0 }, - { 73.8096, 4.7619 }, - { 83.3334, 14.2857 }, - { 88.0952, 23.8095 }, - { 88.0952, 38.0952 }, -}; - -static const CoordRec char71_stroke1[] = { - { 64.2857, 38.0952 }, - { 88.0952, 38.0952 }, -}; - -static const StrokeRec char71[] = { - { 19, char71_stroke0 }, - { 2, char71_stroke1 }, -}; - -/* char: 72 'H' */ - -static const CoordRec char72_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char72_stroke1[] = { - { 85.7143, 100 }, - { 85.7143, 0 }, -}; - -static const CoordRec char72_stroke2[] = { - { 19.0476, 52.381 }, - { 85.7143, 52.381 }, -}; - -static const StrokeRec char72[] = { - { 2, char72_stroke0 }, - { 2, char72_stroke1 }, - { 2, char72_stroke2 }, -}; - -/* char: 73 'I' */ - -static const CoordRec char73_stroke0[] = { - { 52.381, 100 }, - { 52.381, 0 }, -}; - -static const StrokeRec char73[] = { - { 2, char73_stroke0 }, -}; - -/* char: 74 'J' */ - -static const CoordRec char74_stroke0[] = { - { 76.1905, 100 }, - { 76.1905, 23.8095 }, - { 71.4286, 9.5238 }, - { 66.6667, 4.7619 }, - { 57.1429, 0 }, - { 47.6191, 0 }, - { 38.0953, 4.7619 }, - { 33.3334, 9.5238 }, - { 28.5715, 23.8095 }, - { 28.5715, 33.3333 }, -}; - -static const StrokeRec char74[] = { - { 10, char74_stroke0 }, -}; - -/* char: 75 'K' */ - -static const CoordRec char75_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char75_stroke1[] = { - { 85.7143, 100 }, - { 19.0476, 33.3333 }, -}; - -static const CoordRec char75_stroke2[] = { - { 42.8571, 57.1429 }, - { 85.7143, 0 }, -}; - -static const StrokeRec char75[] = { - { 2, char75_stroke0 }, - { 2, char75_stroke1 }, - { 2, char75_stroke2 }, -}; - -/* char: 76 'L' */ - -static const CoordRec char76_stroke0[] = { - { 23.8095, 100 }, - { 23.8095, 0 }, -}; - -static const CoordRec char76_stroke1[] = { - { 23.8095, 0 }, - { 80.9524, 0 }, -}; - -static const StrokeRec char76[] = { - { 2, char76_stroke0 }, - { 2, char76_stroke1 }, -}; - -/* char: 77 'M' */ - -static const CoordRec char77_stroke0[] = { - { 14.2857, 100 }, - { 14.2857, 0 }, -}; - -static const CoordRec char77_stroke1[] = { - { 14.2857, 100 }, - { 52.3809, 0 }, -}; - -static const CoordRec char77_stroke2[] = { - { 90.4762, 100 }, - { 52.3809, 0 }, -}; - -static const CoordRec char77_stroke3[] = { - { 90.4762, 100 }, - { 90.4762, 0 }, -}; - -static const StrokeRec char77[] = { - { 2, char77_stroke0 }, - { 2, char77_stroke1 }, - { 2, char77_stroke2 }, - { 2, char77_stroke3 }, -}; - -/* char: 78 'N' */ - -static const CoordRec char78_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char78_stroke1[] = { - { 19.0476, 100 }, - { 85.7143, 0 }, -}; - -static const CoordRec char78_stroke2[] = { - { 85.7143, 100 }, - { 85.7143, 0 }, -}; - -static const StrokeRec char78[] = { - { 2, char78_stroke0 }, - { 2, char78_stroke1 }, - { 2, char78_stroke2 }, -}; - -/* char: 79 'O' */ - -static const CoordRec char79_stroke0[] = { - { 42.8571, 100 }, - { 33.3333, 95.2381 }, - { 23.8095, 85.7143 }, - { 19.0476, 76.1905 }, - { 14.2857, 61.9048 }, - { 14.2857, 38.0952 }, - { 19.0476, 23.8095 }, - { 23.8095, 14.2857 }, - { 33.3333, 4.7619 }, - { 42.8571, 0 }, - { 61.9047, 0 }, - { 71.4286, 4.7619 }, - { 80.9524, 14.2857 }, - { 85.7143, 23.8095 }, - { 90.4762, 38.0952 }, - { 90.4762, 61.9048 }, - { 85.7143, 76.1905 }, - { 80.9524, 85.7143 }, - { 71.4286, 95.2381 }, - { 61.9047, 100 }, - { 42.8571, 100 }, -}; - -static const StrokeRec char79[] = { - { 21, char79_stroke0 }, -}; - -/* char: 80 'P' */ - -static const CoordRec char80_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char80_stroke1[] = { - { 19.0476, 100 }, - { 61.9047, 100 }, - { 76.1905, 95.2381 }, - { 80.9524, 90.4762 }, - { 85.7143, 80.9524 }, - { 85.7143, 66.6667 }, - { 80.9524, 57.1429 }, - { 76.1905, 52.381 }, - { 61.9047, 47.619 }, - { 19.0476, 47.619 }, -}; - -static const StrokeRec char80[] = { - { 2, char80_stroke0 }, - { 10, char80_stroke1 }, -}; - -/* char: 81 'Q' */ - -static const CoordRec char81_stroke0[] = { - { 42.8571, 100 }, - { 33.3333, 95.2381 }, - { 23.8095, 85.7143 }, - { 19.0476, 76.1905 }, - { 14.2857, 61.9048 }, - { 14.2857, 38.0952 }, - { 19.0476, 23.8095 }, - { 23.8095, 14.2857 }, - { 33.3333, 4.7619 }, - { 42.8571, 0 }, - { 61.9047, 0 }, - { 71.4286, 4.7619 }, - { 80.9524, 14.2857 }, - { 85.7143, 23.8095 }, - { 90.4762, 38.0952 }, - { 90.4762, 61.9048 }, - { 85.7143, 76.1905 }, - { 80.9524, 85.7143 }, - { 71.4286, 95.2381 }, - { 61.9047, 100 }, - { 42.8571, 100 }, -}; - -static const CoordRec char81_stroke1[] = { - { 57.1428, 19.0476 }, - { 85.7143, -9.5238 }, -}; - -static const StrokeRec char81[] = { - { 21, char81_stroke0 }, - { 2, char81_stroke1 }, -}; - -/* char: 82 'R' */ - -static const CoordRec char82_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char82_stroke1[] = { - { 19.0476, 100 }, - { 61.9047, 100 }, - { 76.1905, 95.2381 }, - { 80.9524, 90.4762 }, - { 85.7143, 80.9524 }, - { 85.7143, 71.4286 }, - { 80.9524, 61.9048 }, - { 76.1905, 57.1429 }, - { 61.9047, 52.381 }, - { 19.0476, 52.381 }, -}; - -static const CoordRec char82_stroke2[] = { - { 52.3809, 52.381 }, - { 85.7143, 0 }, -}; - -static const StrokeRec char82[] = { - { 2, char82_stroke0 }, - { 10, char82_stroke1 }, - { 2, char82_stroke2 }, -}; - -/* char: 83 'S' */ - -static const CoordRec char83_stroke0[] = { - { 85.7143, 85.7143 }, - { 76.1905, 95.2381 }, - { 61.9047, 100 }, - { 42.8571, 100 }, - { 28.5714, 95.2381 }, - { 19.0476, 85.7143 }, - { 19.0476, 76.1905 }, - { 23.8095, 66.6667 }, - { 28.5714, 61.9048 }, - { 38.0952, 57.1429 }, - { 66.6666, 47.619 }, - { 76.1905, 42.8571 }, - { 80.9524, 38.0952 }, - { 85.7143, 28.5714 }, - { 85.7143, 14.2857 }, - { 76.1905, 4.7619 }, - { 61.9047, 0 }, - { 42.8571, 0 }, - { 28.5714, 4.7619 }, - { 19.0476, 14.2857 }, -}; - -static const StrokeRec char83[] = { - { 20, char83_stroke0 }, -}; - -/* char: 84 'T' */ - -static const CoordRec char84_stroke0[] = { - { 52.3809, 100 }, - { 52.3809, 0 }, -}; - -static const CoordRec char84_stroke1[] = { - { 19.0476, 100 }, - { 85.7143, 100 }, -}; - -static const StrokeRec char84[] = { - { 2, char84_stroke0 }, - { 2, char84_stroke1 }, -}; - -/* char: 85 'U' */ - -static const CoordRec char85_stroke0[] = { - { 19.0476, 100 }, - { 19.0476, 28.5714 }, - { 23.8095, 14.2857 }, - { 33.3333, 4.7619 }, - { 47.619, 0 }, - { 57.1428, 0 }, - { 71.4286, 4.7619 }, - { 80.9524, 14.2857 }, - { 85.7143, 28.5714 }, - { 85.7143, 100 }, -}; - -static const StrokeRec char85[] = { - { 10, char85_stroke0 }, -}; - -/* char: 86 'V' */ - -static const CoordRec char86_stroke0[] = { - { 14.2857, 100 }, - { 52.3809, 0 }, -}; - -static const CoordRec char86_stroke1[] = { - { 90.4762, 100 }, - { 52.3809, 0 }, -}; - -static const StrokeRec char86[] = { - { 2, char86_stroke0 }, - { 2, char86_stroke1 }, -}; - -/* char: 87 'W' */ - -static const CoordRec char87_stroke0[] = { - { 4.7619, 100 }, - { 28.5714, 0 }, -}; - -static const CoordRec char87_stroke1[] = { - { 52.3809, 100 }, - { 28.5714, 0 }, -}; - -static const CoordRec char87_stroke2[] = { - { 52.3809, 100 }, - { 76.1905, 0 }, -}; - -static const CoordRec char87_stroke3[] = { - { 100, 100 }, - { 76.1905, 0 }, -}; - -static const StrokeRec char87[] = { - { 2, char87_stroke0 }, - { 2, char87_stroke1 }, - { 2, char87_stroke2 }, - { 2, char87_stroke3 }, -}; - -/* char: 88 'X' */ - -static const CoordRec char88_stroke0[] = { - { 19.0476, 100 }, - { 85.7143, 0 }, -}; - -static const CoordRec char88_stroke1[] = { - { 85.7143, 100 }, - { 19.0476, 0 }, -}; - -static const StrokeRec char88[] = { - { 2, char88_stroke0 }, - { 2, char88_stroke1 }, -}; - -/* char: 89 'Y' */ - -static const CoordRec char89_stroke0[] = { - { 14.2857, 100 }, - { 52.3809, 52.381 }, - { 52.3809, 0 }, -}; - -static const CoordRec char89_stroke1[] = { - { 90.4762, 100 }, - { 52.3809, 52.381 }, -}; - -static const StrokeRec char89[] = { - { 3, char89_stroke0 }, - { 2, char89_stroke1 }, -}; - -/* char: 90 'Z' */ - -static const CoordRec char90_stroke0[] = { - { 85.7143, 100 }, - { 19.0476, 0 }, -}; - -static const CoordRec char90_stroke1[] = { - { 19.0476, 100 }, - { 85.7143, 100 }, -}; - -static const CoordRec char90_stroke2[] = { - { 19.0476, 0 }, - { 85.7143, 0 }, -}; - -static const StrokeRec char90[] = { - { 2, char90_stroke0 }, - { 2, char90_stroke1 }, - { 2, char90_stroke2 }, -}; - -/* char: 91 '[' */ - -static const CoordRec char91_stroke0[] = { - { 35.7143, 119.048 }, - { 35.7143, -33.3333 }, -}; - -static const CoordRec char91_stroke1[] = { - { 40.4762, 119.048 }, - { 40.4762, -33.3333 }, -}; - -static const CoordRec char91_stroke2[] = { - { 35.7143, 119.048 }, - { 69.0476, 119.048 }, -}; - -static const CoordRec char91_stroke3[] = { - { 35.7143, -33.3333 }, - { 69.0476, -33.3333 }, -}; - -static const StrokeRec char91[] = { - { 2, char91_stroke0 }, - { 2, char91_stroke1 }, - { 2, char91_stroke2 }, - { 2, char91_stroke3 }, -}; - -/* char: 92 '\' */ - -static const CoordRec char92_stroke0[] = { - { 19.0476, 100 }, - { 85.7143, -14.2857 }, -}; - -static const StrokeRec char92[] = { - { 2, char92_stroke0 }, -}; - -/* char: 93 ']' */ - -static const CoordRec char93_stroke0[] = { - { 64.2857, 119.048 }, - { 64.2857, -33.3333 }, -}; - -static const CoordRec char93_stroke1[] = { - { 69.0476, 119.048 }, - { 69.0476, -33.3333 }, -}; - -static const CoordRec char93_stroke2[] = { - { 35.7143, 119.048 }, - { 69.0476, 119.048 }, -}; - -static const CoordRec char93_stroke3[] = { - { 35.7143, -33.3333 }, - { 69.0476, -33.3333 }, -}; - -static const StrokeRec char93[] = { - { 2, char93_stroke0 }, - { 2, char93_stroke1 }, - { 2, char93_stroke2 }, - { 2, char93_stroke3 }, -}; - -/* char: 94 '^' */ - -static const CoordRec char94_stroke0[] = { - { 52.3809, 109.524 }, - { 14.2857, 42.8571 }, -}; - -static const CoordRec char94_stroke1[] = { - { 52.3809, 109.524 }, - { 90.4762, 42.8571 }, -}; - -static const StrokeRec char94[] = { - { 2, char94_stroke0 }, - { 2, char94_stroke1 }, -}; - -/* char: 95 '_' */ - -static const CoordRec char95_stroke0[] = { - { 0, -33.3333 }, - { 104.762, -33.3333 }, - { 104.762, -28.5714 }, - { 0, -28.5714 }, - { 0, -33.3333 }, -}; - -static const StrokeRec char95[] = { - { 5, char95_stroke0 }, -}; - -/* char: 96 '`' */ - -static const CoordRec char96_stroke0[] = { - { 42.8572, 100 }, - { 66.6667, 71.4286 }, -}; - -static const CoordRec char96_stroke1[] = { - { 42.8572, 100 }, - { 38.0953, 95.2381 }, - { 66.6667, 71.4286 }, -}; - -static const StrokeRec char96[] = { - { 2, char96_stroke0 }, - { 3, char96_stroke1 }, -}; - -/* char: 97 'a' */ - -static const CoordRec char97_stroke0[] = { - { 80.9524, 66.6667 }, - { 80.9524, 0 }, -}; - -static const CoordRec char97_stroke1[] = { - { 80.9524, 52.381 }, - { 71.4285, 61.9048 }, - { 61.9047, 66.6667 }, - { 47.619, 66.6667 }, - { 38.0952, 61.9048 }, - { 28.5714, 52.381 }, - { 23.8095, 38.0952 }, - { 23.8095, 28.5714 }, - { 28.5714, 14.2857 }, - { 38.0952, 4.7619 }, - { 47.619, 0 }, - { 61.9047, 0 }, - { 71.4285, 4.7619 }, - { 80.9524, 14.2857 }, -}; - -static const StrokeRec char97[] = { - { 2, char97_stroke0 }, - { 14, char97_stroke1 }, -}; - -/* char: 98 'b' */ - -static const CoordRec char98_stroke0[] = { - { 23.8095, 100 }, - { 23.8095, 0 }, -}; - -static const CoordRec char98_stroke1[] = { - { 23.8095, 52.381 }, - { 33.3333, 61.9048 }, - { 42.8571, 66.6667 }, - { 57.1428, 66.6667 }, - { 66.6666, 61.9048 }, - { 76.1905, 52.381 }, - { 80.9524, 38.0952 }, - { 80.9524, 28.5714 }, - { 76.1905, 14.2857 }, - { 66.6666, 4.7619 }, - { 57.1428, 0 }, - { 42.8571, 0 }, - { 33.3333, 4.7619 }, - { 23.8095, 14.2857 }, -}; - -static const StrokeRec char98[] = { - { 2, char98_stroke0 }, - { 14, char98_stroke1 }, -}; - -/* char: 99 'c' */ - -static const CoordRec char99_stroke0[] = { - { 80.9524, 52.381 }, - { 71.4285, 61.9048 }, - { 61.9047, 66.6667 }, - { 47.619, 66.6667 }, - { 38.0952, 61.9048 }, - { 28.5714, 52.381 }, - { 23.8095, 38.0952 }, - { 23.8095, 28.5714 }, - { 28.5714, 14.2857 }, - { 38.0952, 4.7619 }, - { 47.619, 0 }, - { 61.9047, 0 }, - { 71.4285, 4.7619 }, - { 80.9524, 14.2857 }, -}; - -static const StrokeRec char99[] = { - { 14, char99_stroke0 }, -}; - -/* char: 100 'd' */ - -static const CoordRec char100_stroke0[] = { - { 80.9524, 100 }, - { 80.9524, 0 }, -}; - -static const CoordRec char100_stroke1[] = { - { 80.9524, 52.381 }, - { 71.4285, 61.9048 }, - { 61.9047, 66.6667 }, - { 47.619, 66.6667 }, - { 38.0952, 61.9048 }, - { 28.5714, 52.381 }, - { 23.8095, 38.0952 }, - { 23.8095, 28.5714 }, - { 28.5714, 14.2857 }, - { 38.0952, 4.7619 }, - { 47.619, 0 }, - { 61.9047, 0 }, - { 71.4285, 4.7619 }, - { 80.9524, 14.2857 }, -}; - -static const StrokeRec char100[] = { - { 2, char100_stroke0 }, - { 14, char100_stroke1 }, -}; - -/* char: 101 'e' */ - -static const CoordRec char101_stroke0[] = { - { 23.8095, 38.0952 }, - { 80.9524, 38.0952 }, - { 80.9524, 47.619 }, - { 76.1905, 57.1429 }, - { 71.4285, 61.9048 }, - { 61.9047, 66.6667 }, - { 47.619, 66.6667 }, - { 38.0952, 61.9048 }, - { 28.5714, 52.381 }, - { 23.8095, 38.0952 }, - { 23.8095, 28.5714 }, - { 28.5714, 14.2857 }, - { 38.0952, 4.7619 }, - { 47.619, 0 }, - { 61.9047, 0 }, - { 71.4285, 4.7619 }, - { 80.9524, 14.2857 }, -}; - -static const StrokeRec char101[] = { - { 17, char101_stroke0 }, -}; - -/* char: 102 'f' */ - -static const CoordRec char102_stroke0[] = { - { 71.4286, 100 }, - { 61.9048, 100 }, - { 52.381, 95.2381 }, - { 47.6191, 80.9524 }, - { 47.6191, 0 }, -}; - -static const CoordRec char102_stroke1[] = { - { 33.3334, 66.6667 }, - { 66.6667, 66.6667 }, -}; - -static const StrokeRec char102[] = { - { 5, char102_stroke0 }, - { 2, char102_stroke1 }, -}; - -/* char: 103 'g' */ - -static const CoordRec char103_stroke0[] = { - { 80.9524, 66.6667 }, - { 80.9524, -9.5238 }, - { 76.1905, -23.8095 }, - { 71.4285, -28.5714 }, - { 61.9047, -33.3333 }, - { 47.619, -33.3333 }, - { 38.0952, -28.5714 }, -}; - -static const CoordRec char103_stroke1[] = { - { 80.9524, 52.381 }, - { 71.4285, 61.9048 }, - { 61.9047, 66.6667 }, - { 47.619, 66.6667 }, - { 38.0952, 61.9048 }, - { 28.5714, 52.381 }, - { 23.8095, 38.0952 }, - { 23.8095, 28.5714 }, - { 28.5714, 14.2857 }, - { 38.0952, 4.7619 }, - { 47.619, 0 }, - { 61.9047, 0 }, - { 71.4285, 4.7619 }, - { 80.9524, 14.2857 }, -}; - -static const StrokeRec char103[] = { - { 7, char103_stroke0 }, - { 14, char103_stroke1 }, -}; - -/* char: 104 'h' */ - -static const CoordRec char104_stroke0[] = { - { 26.1905, 100 }, - { 26.1905, 0 }, -}; - -static const CoordRec char104_stroke1[] = { - { 26.1905, 47.619 }, - { 40.4762, 61.9048 }, - { 50, 66.6667 }, - { 64.2857, 66.6667 }, - { 73.8095, 61.9048 }, - { 78.5715, 47.619 }, - { 78.5715, 0 }, -}; - -static const StrokeRec char104[] = { - { 2, char104_stroke0 }, - { 7, char104_stroke1 }, -}; - -/* char: 105 'i' */ - -static const CoordRec char105_stroke0[] = { - { 47.6191, 100 }, - { 52.381, 95.2381 }, - { 57.1429, 100 }, - { 52.381, 104.762 }, - { 47.6191, 100 }, -}; - -static const CoordRec char105_stroke1[] = { - { 52.381, 66.6667 }, - { 52.381, 0 }, -}; - -static const StrokeRec char105[] = { - { 5, char105_stroke0 }, - { 2, char105_stroke1 }, -}; - -/* char: 106 'j' */ - -static const CoordRec char106_stroke0[] = { - { 57.1429, 100 }, - { 61.9048, 95.2381 }, - { 66.6667, 100 }, - { 61.9048, 104.762 }, - { 57.1429, 100 }, -}; - -static const CoordRec char106_stroke1[] = { - { 61.9048, 66.6667 }, - { 61.9048, -14.2857 }, - { 57.1429, -28.5714 }, - { 47.6191, -33.3333 }, - { 38.0953, -33.3333 }, -}; - -static const StrokeRec char106[] = { - { 5, char106_stroke0 }, - { 5, char106_stroke1 }, -}; - -/* char: 107 'k' */ - -static const CoordRec char107_stroke0[] = { - { 26.1905, 100 }, - { 26.1905, 0 }, -}; - -static const CoordRec char107_stroke1[] = { - { 73.8095, 66.6667 }, - { 26.1905, 19.0476 }, -}; - -static const CoordRec char107_stroke2[] = { - { 45.2381, 38.0952 }, - { 78.5715, 0 }, -}; - -static const StrokeRec char107[] = { - { 2, char107_stroke0 }, - { 2, char107_stroke1 }, - { 2, char107_stroke2 }, -}; - -/* char: 108 'l' */ - -static const CoordRec char108_stroke0[] = { - { 52.381, 100 }, - { 52.381, 0 }, -}; - -static const StrokeRec char108[] = { - { 2, char108_stroke0 }, -}; - -/* char: 109 'm' */ - -static const CoordRec char109_stroke0[] = { - { 0, 66.6667 }, - { 0, 0 }, -}; - -static const CoordRec char109_stroke1[] = { - { 0, 47.619 }, - { 14.2857, 61.9048 }, - { 23.8095, 66.6667 }, - { 38.0952, 66.6667 }, - { 47.619, 61.9048 }, - { 52.381, 47.619 }, - { 52.381, 0 }, -}; - -static const CoordRec char109_stroke2[] = { - { 52.381, 47.619 }, - { 66.6667, 61.9048 }, - { 76.1905, 66.6667 }, - { 90.4762, 66.6667 }, - { 100, 61.9048 }, - { 104.762, 47.619 }, - { 104.762, 0 }, -}; - -static const StrokeRec char109[] = { - { 2, char109_stroke0 }, - { 7, char109_stroke1 }, - { 7, char109_stroke2 }, -}; - -/* char: 110 'n' */ - -static const CoordRec char110_stroke0[] = { - { 26.1905, 66.6667 }, - { 26.1905, 0 }, -}; - -static const CoordRec char110_stroke1[] = { - { 26.1905, 47.619 }, - { 40.4762, 61.9048 }, - { 50, 66.6667 }, - { 64.2857, 66.6667 }, - { 73.8095, 61.9048 }, - { 78.5715, 47.619 }, - { 78.5715, 0 }, -}; - -static const StrokeRec char110[] = { - { 2, char110_stroke0 }, - { 7, char110_stroke1 }, -}; - -/* char: 111 'o' */ - -static const CoordRec char111_stroke0[] = { - { 45.2381, 66.6667 }, - { 35.7143, 61.9048 }, - { 26.1905, 52.381 }, - { 21.4286, 38.0952 }, - { 21.4286, 28.5714 }, - { 26.1905, 14.2857 }, - { 35.7143, 4.7619 }, - { 45.2381, 0 }, - { 59.5238, 0 }, - { 69.0476, 4.7619 }, - { 78.5714, 14.2857 }, - { 83.3334, 28.5714 }, - { 83.3334, 38.0952 }, - { 78.5714, 52.381 }, - { 69.0476, 61.9048 }, - { 59.5238, 66.6667 }, - { 45.2381, 66.6667 }, -}; - -static const StrokeRec char111[] = { - { 17, char111_stroke0 }, -}; - -/* char: 112 'p' */ - -static const CoordRec char112_stroke0[] = { - { 23.8095, 66.6667 }, - { 23.8095, -33.3333 }, -}; - -static const CoordRec char112_stroke1[] = { - { 23.8095, 52.381 }, - { 33.3333, 61.9048 }, - { 42.8571, 66.6667 }, - { 57.1428, 66.6667 }, - { 66.6666, 61.9048 }, - { 76.1905, 52.381 }, - { 80.9524, 38.0952 }, - { 80.9524, 28.5714 }, - { 76.1905, 14.2857 }, - { 66.6666, 4.7619 }, - { 57.1428, 0 }, - { 42.8571, 0 }, - { 33.3333, 4.7619 }, - { 23.8095, 14.2857 }, -}; - -static const StrokeRec char112[] = { - { 2, char112_stroke0 }, - { 14, char112_stroke1 }, -}; - -/* char: 113 'q' */ - -static const CoordRec char113_stroke0[] = { - { 80.9524, 66.6667 }, - { 80.9524, -33.3333 }, -}; - -static const CoordRec char113_stroke1[] = { - { 80.9524, 52.381 }, - { 71.4285, 61.9048 }, - { 61.9047, 66.6667 }, - { 47.619, 66.6667 }, - { 38.0952, 61.9048 }, - { 28.5714, 52.381 }, - { 23.8095, 38.0952 }, - { 23.8095, 28.5714 }, - { 28.5714, 14.2857 }, - { 38.0952, 4.7619 }, - { 47.619, 0 }, - { 61.9047, 0 }, - { 71.4285, 4.7619 }, - { 80.9524, 14.2857 }, -}; - -static const StrokeRec char113[] = { - { 2, char113_stroke0 }, - { 14, char113_stroke1 }, -}; - -/* char: 114 'r' */ - -static const CoordRec char114_stroke0[] = { - { 33.3334, 66.6667 }, - { 33.3334, 0 }, -}; - -static const CoordRec char114_stroke1[] = { - { 33.3334, 38.0952 }, - { 38.0953, 52.381 }, - { 47.6191, 61.9048 }, - { 57.1429, 66.6667 }, - { 71.4286, 66.6667 }, -}; - -static const StrokeRec char114[] = { - { 2, char114_stroke0 }, - { 5, char114_stroke1 }, -}; - -/* char: 115 's' */ - -static const CoordRec char115_stroke0[] = { - { 78.5715, 52.381 }, - { 73.8095, 61.9048 }, - { 59.5238, 66.6667 }, - { 45.2381, 66.6667 }, - { 30.9524, 61.9048 }, - { 26.1905, 52.381 }, - { 30.9524, 42.8571 }, - { 40.4762, 38.0952 }, - { 64.2857, 33.3333 }, - { 73.8095, 28.5714 }, - { 78.5715, 19.0476 }, - { 78.5715, 14.2857 }, - { 73.8095, 4.7619 }, - { 59.5238, 0 }, - { 45.2381, 0 }, - { 30.9524, 4.7619 }, - { 26.1905, 14.2857 }, -}; - -static const StrokeRec char115[] = { - { 17, char115_stroke0 }, -}; - -/* char: 116 't' */ - -static const CoordRec char116_stroke0[] = { - { 47.6191, 100 }, - { 47.6191, 19.0476 }, - { 52.381, 4.7619 }, - { 61.9048, 0 }, - { 71.4286, 0 }, -}; - -static const CoordRec char116_stroke1[] = { - { 33.3334, 66.6667 }, - { 66.6667, 66.6667 }, -}; - -static const StrokeRec char116[] = { - { 5, char116_stroke0 }, - { 2, char116_stroke1 }, -}; - -/* char: 117 'u' */ - -static const CoordRec char117_stroke0[] = { - { 26.1905, 66.6667 }, - { 26.1905, 19.0476 }, - { 30.9524, 4.7619 }, - { 40.4762, 0 }, - { 54.7619, 0 }, - { 64.2857, 4.7619 }, - { 78.5715, 19.0476 }, -}; - -static const CoordRec char117_stroke1[] = { - { 78.5715, 66.6667 }, - { 78.5715, 0 }, -}; - -static const StrokeRec char117[] = { - { 7, char117_stroke0 }, - { 2, char117_stroke1 }, -}; - -/* char: 118 'v' */ - -static const CoordRec char118_stroke0[] = { - { 23.8095, 66.6667 }, - { 52.3809, 0 }, -}; - -static const CoordRec char118_stroke1[] = { - { 80.9524, 66.6667 }, - { 52.3809, 0 }, -}; - -static const StrokeRec char118[] = { - { 2, char118_stroke0 }, - { 2, char118_stroke1 }, -}; - -/* char: 119 'w' */ - -static const CoordRec char119_stroke0[] = { - { 14.2857, 66.6667 }, - { 33.3333, 0 }, -}; - -static const CoordRec char119_stroke1[] = { - { 52.3809, 66.6667 }, - { 33.3333, 0 }, -}; - -static const CoordRec char119_stroke2[] = { - { 52.3809, 66.6667 }, - { 71.4286, 0 }, -}; - -static const CoordRec char119_stroke3[] = { - { 90.4762, 66.6667 }, - { 71.4286, 0 }, -}; - -static const StrokeRec char119[] = { - { 2, char119_stroke0 }, - { 2, char119_stroke1 }, - { 2, char119_stroke2 }, - { 2, char119_stroke3 }, -}; - -/* char: 120 'x' */ - -static const CoordRec char120_stroke0[] = { - { 26.1905, 66.6667 }, - { 78.5715, 0 }, -}; - -static const CoordRec char120_stroke1[] = { - { 78.5715, 66.6667 }, - { 26.1905, 0 }, -}; - -static const StrokeRec char120[] = { - { 2, char120_stroke0 }, - { 2, char120_stroke1 }, -}; - -/* char: 121 'y' */ - -static const CoordRec char121_stroke0[] = { - { 26.1905, 66.6667 }, - { 54.7619, 0 }, -}; - -static const CoordRec char121_stroke1[] = { - { 83.3334, 66.6667 }, - { 54.7619, 0 }, - { 45.2381, -19.0476 }, - { 35.7143, -28.5714 }, - { 26.1905, -33.3333 }, - { 21.4286, -33.3333 }, -}; - -static const StrokeRec char121[] = { - { 2, char121_stroke0 }, - { 6, char121_stroke1 }, -}; - -/* char: 122 'z' */ - -static const CoordRec char122_stroke0[] = { - { 78.5715, 66.6667 }, - { 26.1905, 0 }, -}; - -static const CoordRec char122_stroke1[] = { - { 26.1905, 66.6667 }, - { 78.5715, 66.6667 }, -}; - -static const CoordRec char122_stroke2[] = { - { 26.1905, 0 }, - { 78.5715, 0 }, -}; - -static const StrokeRec char122[] = { - { 2, char122_stroke0 }, - { 2, char122_stroke1 }, - { 2, char122_stroke2 }, -}; - -/* char: 123 '{' */ - -static const CoordRec char123_stroke0[] = { - { 64.2857, 119.048 }, - { 54.7619, 114.286 }, - { 50, 109.524 }, - { 45.2381, 100 }, - { 45.2381, 90.4762 }, - { 50, 80.9524 }, - { 54.7619, 76.1905 }, - { 59.5238, 66.6667 }, - { 59.5238, 57.1429 }, - { 50, 47.619 }, -}; - -static const CoordRec char123_stroke1[] = { - { 54.7619, 114.286 }, - { 50, 104.762 }, - { 50, 95.2381 }, - { 54.7619, 85.7143 }, - { 59.5238, 80.9524 }, - { 64.2857, 71.4286 }, - { 64.2857, 61.9048 }, - { 59.5238, 52.381 }, - { 40.4762, 42.8571 }, - { 59.5238, 33.3333 }, - { 64.2857, 23.8095 }, - { 64.2857, 14.2857 }, - { 59.5238, 4.7619 }, - { 54.7619, 0 }, - { 50, -9.5238 }, - { 50, -19.0476 }, - { 54.7619, -28.5714 }, -}; - -static const CoordRec char123_stroke2[] = { - { 50, 38.0952 }, - { 59.5238, 28.5714 }, - { 59.5238, 19.0476 }, - { 54.7619, 9.5238 }, - { 50, 4.7619 }, - { 45.2381, -4.7619 }, - { 45.2381, -14.2857 }, - { 50, -23.8095 }, - { 54.7619, -28.5714 }, - { 64.2857, -33.3333 }, -}; - -static const StrokeRec char123[] = { - { 10, char123_stroke0 }, - { 17, char123_stroke1 }, - { 10, char123_stroke2 }, -}; - -/* char: 124 '|' */ - -static const CoordRec char124_stroke0[] = { - { 52.381, 119.048 }, - { 52.381, -33.3333 }, -}; - -static const StrokeRec char124[] = { - { 2, char124_stroke0 }, -}; - -/* char: 125 '}' */ - -static const CoordRec char125_stroke0[] = { - { 40.4762, 119.048 }, - { 50, 114.286 }, - { 54.7619, 109.524 }, - { 59.5238, 100 }, - { 59.5238, 90.4762 }, - { 54.7619, 80.9524 }, - { 50, 76.1905 }, - { 45.2381, 66.6667 }, - { 45.2381, 57.1429 }, - { 54.7619, 47.619 }, -}; - -static const CoordRec char125_stroke1[] = { - { 50, 114.286 }, - { 54.7619, 104.762 }, - { 54.7619, 95.2381 }, - { 50, 85.7143 }, - { 45.2381, 80.9524 }, - { 40.4762, 71.4286 }, - { 40.4762, 61.9048 }, - { 45.2381, 52.381 }, - { 64.2857, 42.8571 }, - { 45.2381, 33.3333 }, - { 40.4762, 23.8095 }, - { 40.4762, 14.2857 }, - { 45.2381, 4.7619 }, - { 50, 0 }, - { 54.7619, -9.5238 }, - { 54.7619, -19.0476 }, - { 50, -28.5714 }, -}; - -static const CoordRec char125_stroke2[] = { - { 54.7619, 38.0952 }, - { 45.2381, 28.5714 }, - { 45.2381, 19.0476 }, - { 50, 9.5238 }, - { 54.7619, 4.7619 }, - { 59.5238, -4.7619 }, - { 59.5238, -14.2857 }, - { 54.7619, -23.8095 }, - { 50, -28.5714 }, - { 40.4762, -33.3333 }, -}; - -static const StrokeRec char125[] = { - { 10, char125_stroke0 }, - { 17, char125_stroke1 }, - { 10, char125_stroke2 }, -}; - -/* char: 126 '~' */ - -static const CoordRec char126_stroke0[] = { - { 9.5238, 28.5714 }, - { 9.5238, 38.0952 }, - { 14.2857, 52.381 }, - { 23.8095, 57.1429 }, - { 33.3333, 57.1429 }, - { 42.8571, 52.381 }, - { 61.9048, 38.0952 }, - { 71.4286, 33.3333 }, - { 80.9524, 33.3333 }, - { 90.4762, 38.0952 }, - { 95.2381, 47.619 }, -}; - -static const CoordRec char126_stroke1[] = { - { 9.5238, 38.0952 }, - { 14.2857, 47.619 }, - { 23.8095, 52.381 }, - { 33.3333, 52.381 }, - { 42.8571, 47.619 }, - { 61.9048, 33.3333 }, - { 71.4286, 28.5714 }, - { 80.9524, 28.5714 }, - { 90.4762, 33.3333 }, - { 95.2381, 47.619 }, - { 95.2381, 57.1429 }, -}; - -static const StrokeRec char126[] = { - { 11, char126_stroke0 }, - { 11, char126_stroke1 }, -}; - -/* char: 127 */ - -static const CoordRec char127_stroke0[] = { - { 71.4286, 100 }, - { 33.3333, -33.3333 }, -}; - -static const CoordRec char127_stroke1[] = { - { 47.619, 66.6667 }, - { 33.3333, 61.9048 }, - { 23.8095, 52.381 }, - { 19.0476, 38.0952 }, - { 19.0476, 23.8095 }, - { 23.8095, 14.2857 }, - { 33.3333, 4.7619 }, - { 47.619, 0 }, - { 57.1428, 0 }, - { 71.4286, 4.7619 }, - { 80.9524, 14.2857 }, - { 85.7143, 28.5714 }, - { 85.7143, 42.8571 }, - { 80.9524, 52.381 }, - { 71.4286, 61.9048 }, - { 57.1428, 66.6667 }, - { 47.619, 66.6667 }, -}; - -static const StrokeRec char127[] = { - { 2, char127_stroke0 }, - { 17, char127_stroke1 }, -}; - -static const StrokeCharRec chars[] = { - { 0, /* char0 */ 0, 0, 0 }, - { 0, /* char1 */ 0, 0, 0 }, - { 0, /* char2 */ 0, 0, 0 }, - { 0, /* char3 */ 0, 0, 0 }, - { 0, /* char4 */ 0, 0, 0 }, - { 0, /* char5 */ 0, 0, 0 }, - { 0, /* char6 */ 0, 0, 0 }, - { 0, /* char7 */ 0, 0, 0 }, - { 0, /* char8 */ 0, 0, 0 }, - { 0, /* char9 */ 0, 0, 0 }, - { 0, /* char10 */ 0, 0, 0 }, - { 0, /* char11 */ 0, 0, 0 }, - { 0, /* char12 */ 0, 0, 0 }, - { 0, /* char13 */ 0, 0, 0 }, - { 0, /* char14 */ 0, 0, 0 }, - { 0, /* char15 */ 0, 0, 0 }, - { 0, /* char16 */ 0, 0, 0 }, - { 0, /* char17 */ 0, 0, 0 }, - { 0, /* char18 */ 0, 0, 0 }, - { 0, /* char19 */ 0, 0, 0 }, - { 0, /* char20 */ 0, 0, 0 }, - { 0, /* char21 */ 0, 0, 0 }, - { 0, /* char22 */ 0, 0, 0 }, - { 0, /* char23 */ 0, 0, 0 }, - { 0, /* char24 */ 0, 0, 0 }, - { 0, /* char25 */ 0, 0, 0 }, - { 0, /* char26 */ 0, 0, 0 }, - { 0, /* char27 */ 0, 0, 0 }, - { 0, /* char28 */ 0, 0, 0 }, - { 0, /* char29 */ 0, 0, 0 }, - { 0, /* char30 */ 0, 0, 0 }, - { 0, /* char31 */ 0, 0, 0 }, - { 0, /* char32 */ 0, 52.381, 104.762 }, - { 2, char33, 52.381, 104.762 }, - { 2, char34, 52.381, 104.762 }, - { 4, char35, 52.381, 104.762 }, - { 3, char36, 52.381, 104.762 }, - { 3, char37, 52.381, 104.762 }, - { 1, char38, 52.381, 104.762 }, - { 1, char39, 52.381, 104.762 }, - { 1, char40, 52.381, 104.762 }, - { 1, char41, 52.381, 104.762 }, - { 3, char42, 52.381, 104.762 }, - { 2, char43, 52.381, 104.762 }, - { 1, char44, 52.381, 104.762 }, - { 1, char45, 52.381, 104.762 }, - { 1, char46, 52.381, 104.762 }, - { 1, char47, 52.381, 104.762 }, - { 1, char48, 52.381, 104.762 }, - { 1, char49, 52.381, 104.762 }, - { 1, char50, 52.381, 104.762 }, - { 1, char51, 52.381, 104.762 }, - { 2, char52, 52.381, 104.762 }, - { 1, char53, 52.381, 104.762 }, - { 1, char54, 52.381, 104.762 }, - { 2, char55, 52.381, 104.762 }, - { 1, char56, 52.381, 104.762 }, - { 1, char57, 52.381, 104.762 }, - { 2, char58, 52.381, 104.762 }, - { 2, char59, 52.381, 104.762 }, - { 1, char60, 52.381, 104.762 }, - { 2, char61, 52.381, 104.762 }, - { 1, char62, 52.381, 104.762 }, - { 2, char63, 52.381, 104.762 }, - { 2, char64, 52.381, 104.762 }, - { 3, char65, 52.381, 104.762 }, - { 3, char66, 52.381, 104.762 }, - { 1, char67, 52.381, 104.762 }, - { 2, char68, 52.381, 104.762 }, - { 4, char69, 52.381, 104.762 }, - { 3, char70, 52.381, 104.762 }, - { 2, char71, 52.381, 104.762 }, - { 3, char72, 52.381, 104.762 }, - { 1, char73, 52.381, 104.762 }, - { 1, char74, 52.381, 104.762 }, - { 3, char75, 52.381, 104.762 }, - { 2, char76, 52.381, 104.762 }, - { 4, char77, 52.381, 104.762 }, - { 3, char78, 52.381, 104.762 }, - { 1, char79, 52.381, 104.762 }, - { 2, char80, 52.381, 104.762 }, - { 2, char81, 52.381, 104.762 }, - { 3, char82, 52.381, 104.762 }, - { 1, char83, 52.381, 104.762 }, - { 2, char84, 52.381, 104.762 }, - { 1, char85, 52.381, 104.762 }, - { 2, char86, 52.381, 104.762 }, - { 4, char87, 52.381, 104.762 }, - { 2, char88, 52.381, 104.762 }, - { 2, char89, 52.381, 104.762 }, - { 3, char90, 52.381, 104.762 }, - { 4, char91, 52.381, 104.762 }, - { 1, char92, 52.381, 104.762 }, - { 4, char93, 52.381, 104.762 }, - { 2, char94, 52.381, 104.762 }, - { 1, char95, 52.381, 104.762 }, - { 2, char96, 52.381, 104.762 }, - { 2, char97, 52.381, 104.762 }, - { 2, char98, 52.381, 104.762 }, - { 1, char99, 52.381, 104.762 }, - { 2, char100, 52.381, 104.762 }, - { 1, char101, 52.381, 104.762 }, - { 2, char102, 52.381, 104.762 }, - { 2, char103, 52.381, 104.762 }, - { 2, char104, 52.381, 104.762 }, - { 2, char105, 52.381, 104.762 }, - { 2, char106, 52.381, 104.762 }, - { 3, char107, 52.381, 104.762 }, - { 1, char108, 52.381, 104.762 }, - { 3, char109, 52.381, 104.762 }, - { 2, char110, 52.381, 104.762 }, - { 1, char111, 52.381, 104.762 }, - { 2, char112, 52.381, 104.762 }, - { 2, char113, 52.381, 104.762 }, - { 2, char114, 52.381, 104.762 }, - { 1, char115, 52.381, 104.762 }, - { 2, char116, 52.381, 104.762 }, - { 2, char117, 52.381, 104.762 }, - { 2, char118, 52.381, 104.762 }, - { 4, char119, 52.381, 104.762 }, - { 2, char120, 52.381, 104.762 }, - { 2, char121, 52.381, 104.762 }, - { 3, char122, 52.381, 104.762 }, - { 3, char123, 52.381, 104.762 }, - { 1, char124, 52.381, 104.762 }, - { 3, char125, 52.381, 104.762 }, - { 2, char126, 52.381, 104.762 }, - { 2, char127, 52.381, 104.762 }, -}; - -StrokeFontRec glutStrokeMonoRoman = { "Roman", 128, chars, 119.048, -33.3333 }; - diff --git a/lib/glut-3.7.6/lib/glut/glut_overlay.c b/lib/glut-3.7.6/lib/glut/glut_overlay.c deleted file mode 100644 index 0d4d45707a71205d1d7499a9ea376d1048aa0c64..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_overlay.c +++ /dev/null @@ -1,607 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -#if !defined(_WIN32) -#include -#include -#include /* for XA_RGB_DEFAULT_MAP atom */ -#if defined (__vms) -#include /* for XmuLookupStandardColormap */ -#else -#include /* for XmuLookupStandardColormap */ -#endif -#endif /* !_WIN32 */ - -#include "glutint.h" -#include "layerutil.h" - -static Criterion requiredOverlayCriteria[] = -{ - {LEVEL, EQ, 1}, /* This entry gets poked in - determineOverlayVisual. */ - {TRANSPARENT, EQ, 1}, - {XPSEUDOCOLOR, EQ, 1}, - {RGBA, EQ, 0}, - {BUFFER_SIZE, GTE, 1} -}; -static int numRequiredOverlayCriteria = sizeof(requiredOverlayCriteria) / sizeof(Criterion); -static int requiredOverlayCriteriaMask = -(1 << LEVEL) | (1 << TRANSPARENT) | (1 << XSTATICGRAY) | (1 << RGBA) | (1 << CI_MODE); - -#if !defined(_WIN32) -static int -checkOverlayAcceptability(XVisualInfo * vi, unsigned int mode) -{ - int value; - - /* Must support OpenGL. */ - glXGetConfig(__glutDisplay, vi, GLX_USE_GL, &value); - if (!value) - return 1; - - /* Must be color index. */ - glXGetConfig(__glutDisplay, vi, GLX_RGBA, &value); - if (value) - return 1; - - /* Must match single/double buffering request. */ - glXGetConfig(__glutDisplay, vi, GLX_DOUBLEBUFFER, &value); - if (GLUT_WIND_IS_DOUBLE(mode) != (value != 0)) - return 1; - - /* Must match mono/stereo request. */ - glXGetConfig(__glutDisplay, vi, GLX_STEREO, &value); - if (GLUT_WIND_IS_STEREO(mode) != (value != 0)) - return 1; - - /* Alpha and accumulation buffers incompatible with color - index. */ - if (GLUT_WIND_HAS_ALPHA(mode) || GLUT_WIND_HAS_ACCUM(mode)) - return 1; - - /* Look for depth buffer if requested. */ - glXGetConfig(__glutDisplay, vi, GLX_DEPTH_SIZE, &value); - if (GLUT_WIND_HAS_DEPTH(mode) && (value <= 0)) - return 1; - - /* Look for stencil buffer if requested. */ - glXGetConfig(__glutDisplay, vi, GLX_STENCIL_SIZE, &value); - if (GLUT_WIND_HAS_STENCIL(mode) && (value <= 0)) - return 1; - -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - /* XXX Multisampled overlay color index?? Pretty unlikely. */ - /* Look for multisampling if requested. */ - if (__glutIsSupportedByGLX("GLX_SGIS_multisample")) - glXGetConfig(__glutDisplay, vi, GLX_SAMPLES_SGIS, &value); - else - value = 0; - if (GLUT_WIND_IS_MULTISAMPLE(mode) && (value <= 0)) - return 1; -#endif - - return 0; -} -#endif - -static XVisualInfo * -getOverlayVisualInfoCI(unsigned int mode) -{ -#if !defined(_WIN32) - XLayerVisualInfo *vi; - XLayerVisualInfo template; - XVisualInfo *goodVisual, *returnVisual; - int nitems, i, j, bad; - - /* The GLX 1.0 glXChooseVisual is does not permit queries - based on pixel transparency (and GLX_BUFFER_SIZE uses - "smallest that meets" its requirement instead of "largest - that meets" that GLUT wants. So, GLUT implements its own - visual selection routine for color index overlays. */ - - /* Try three overlay layers. */ - for (i = 1; i <= 3; i++) { - template.vinfo.screen = __glutScreen; - template.vinfo.class = PseudoColor; - template.layer = i; - template.type = TransparentPixel; - vi = __glutXGetLayerVisualInfo(__glutDisplay, - VisualTransparentType | VisualScreenMask | VisualClassMask | VisualLayerMask, - &template, &nitems); - if (vi) { - /* Check list for acceptable visual meeting requirements - of requested display mode. */ - for (j = 0; j < nitems; j++) { - bad = checkOverlayAcceptability(&vi[j].vinfo, mode); - if (bad) { - /* Set vi[j].vinfo.visual to mark it unacceptable. */ - vi[j].vinfo.visual = NULL; - } - } - - /* Look through list to find deepest acceptable visual. */ - goodVisual = NULL; - for (j = 0; j < nitems; j++) { - if (vi[j].vinfo.visual) { - if (goodVisual == NULL) { - goodVisual = &vi[j].vinfo; - } else { - if (goodVisual->depth < vi[j].vinfo.depth) { - goodVisual = &vi[j].vinfo; - } - } - } - } - - /* If a visual is found, clean up and return the visual. */ - if (goodVisual) { - returnVisual = (XVisualInfo *) malloc(sizeof(XVisualInfo)); - if (returnVisual) { - *returnVisual = *goodVisual; - } - XFree(vi); - return returnVisual; - } - XFree(vi); - } - } -#endif /* !_WIN32 */ - return NULL; -} - -/* ARGSUSED */ -static XVisualInfo * -getOverlayVisualInfoRGB(unsigned int mode) -{ - - /* XXX For now, transparent RGBA overlays are not supported - by GLUT. RGBA overlays raise difficult questions about - what the transparent pixel (really color) value should be. - - Color index overlay transparency is "easy" because the - transparent pixel value does not affect displayable colors - (except for stealing one color cell) since colors are - determined by indirection through a colormap, and because - it is uncommon for arbitrary pixel values in color index to - be "calculated" (as can occur with a host of RGBA operations - like lighting, blending, etc) so it is easy to avoid the - transparent pixel value. - - Since it is typically easy to avoid the transparent pixel - value in color index mode, if GLUT tells the programmer what - pixel is transparent, then most program can easily avoid - generating that pixel value except when they intend - transparency. GLUT returns whatever transparent pixel value - is provided by the system through glutGet( - GLUT_TRANSPARENT_INDEX). - - Theory versus practice for RGBA overlay transparency: In - theory, the reasonable thing is enabling overlay transparency - when an overlay pixel's destination alpha is 0 because this - allows overlay transparency to be controlled via alpha and all - visibile colors are permited, but no hardware I am aware of - supports this practice (and it requires destination alpha which - is typically optional and quite uncommon for overlay windows!). - - In practice, the choice of transparent pixel value is typically - "hardwired" into most graphics hardware to a single pixel value. - SGI hardware uses true black (0,0,0) without regard for the - destination alpha. This is far from ideal because true black (a - common color that is easy to accidently generate) can not be - generated in an RGBA overlay. I am not sure what other vendors - do. - - Pragmatically, most of the typical things you want to do in the - overlays can be done in color index (rubber banding, pop-up - menus, etc.). One solution for GLUT would be to simply - "advertise" what RGB triple (or possibly RGBA quadruple or simply - A alone) generates transparency. The problem with this approach - is that it forces programmers to avoid whatever arbitrary color - various systems decide is transparent. This is a difficult - burden to place on programmers that want to portably make use of - overlays. - - To actually support transparent RGBA overlays, there are really - two reaonsable options. ONE: Simply mandate that true black is - the RGBA overlay transparent color (what IRIS GL did). This is - nice for programmers since only one option, nice for existing SGI - hardware, bad for anyone (including SGI) who wants to improve - upon "true black" RGB transparency. - - Or TWO: Provide a set of queriable "transparency types" (like - "true black" or "alpha == 0" or "true white" or even a queriable - transparent color). This is harder for programmers, OK for - existing SGI hardware, and it leaves open the issue of what other - modes are reasonable. - - Option TWO seems the more general approach, but since hardware - designers will likely only implement a single mode (this is a - scan out issue where bandwidth is pressing issue), codifying - multiple speculative approaches nobody may ever implement seems - silly. And option ONE fiats a suboptimal solution. - - Therefore, I defer any decision of how GLUT should support RGBA - overlay transparency and leave support for it unimplemented. - Nobody has been pressing me for RGBA overlay transparency (though - people have requested color index overlay transparency - repeatedly). Geez, if you read this far you are either really - bored or maybe actually interested in this topic. Anyway, if - you have ideas (particularly if you plan on implementing a - hardware scheme for RGBA overlay transparency), I'd be - interested. - - For the record, SGI's expiremental Framebufer Configuration - experimental GLX extension uses option TWO. Transparency modes - for "none" and "RGB" are defined (others could be defined later). - What RGB value is the transparent one must be queried. - - I was hoping GLUT could have something that required less work - from the programmer to use portably. -mjk */ - - __glutWarning("RGBA overlays are not supported by GLUT (for now)."); - return NULL; -} - -static XVisualInfo * -getOverlayVisualInfo(unsigned int mode) -{ - /* XXX GLUT_LUMINANCE not implemented for GLUT 3.0. */ - if (GLUT_WIND_IS_LUMINANCE(mode)) - return NULL; - - if (GLUT_WIND_IS_RGB(mode)) - return getOverlayVisualInfoRGB(mode); - else - return getOverlayVisualInfoCI(mode); -} - -#if !defined(_WIN32) - -/* The GLUT overlay can come and go, and the overlay window has - a distinct X window ID. Logically though, GLUT treats the - normal and overlay windows as a unified window. In - particular, X input events typically go to the overlay window - since it is "on top of" the normal window. When an overlay - window ID is destroyed (due to glutRemoveOverlay or a call to - glutEstablishOverlay when an overlay already exists), we - still keep track of the overlay window ID until we get back a - DestroyNotify event for the overlay window. Otherwise, we - could lose track of X input events sent to a destroyed - overlay. To avoid this, we keep the destroyed overlay window - ID on a "stale window" list. This lets us properly route X - input events generated on destroyed overlay windows to the - proper GLUT window. */ -static void -addStaleWindow(GLUTwindow * window, Window win) -{ - GLUTstale *entry; - - entry = (GLUTstale *) malloc(sizeof(GLUTstale)); - if (!entry) - __glutFatalError("out of memory"); - entry->window = window; - entry->win = win; - entry->next = __glutStaleWindowList; - __glutStaleWindowList = entry; -} - -#endif - -void -__glutFreeOverlay(GLUToverlay * overlay) -{ - if (overlay->visAlloced) - XFree(overlay->vis); - XDestroyWindow(__glutDisplay, overlay->win); - glXDestroyContext(__glutDisplay, overlay->ctx); - if (overlay->colormap) { - /* Only color index overlays have colormap data structure. */ - __glutFreeColormap(overlay->colormap); - } - free(overlay); -} - -static XVisualInfo * -determineOverlayVisual(int *treatAsSingle, Bool * visAlloced, void **fbc) -{ - if (__glutDisplayString) { - XVisualInfo *vi; - int i; - - /* __glutDisplayString should be NULL except if - glutInitDisplayString has been called to register a - different display string. Calling glutInitDisplayString - means using a string instead of an integer mask determine - - the visual to use. Using the function pointer variable - __glutDetermineVisualFromString below avoids linking in - the code for implementing glutInitDisplayString (ie, - glut_dstr.o) unless glutInitDisplayString gets called by - the application. */ - - assert(__glutDetermineVisualFromString); - - /* Try three overlay layers. */ - *visAlloced = False; - *fbc = NULL; - for (i = 1; i <= 3; i++) { - requiredOverlayCriteria[0].value = i; - vi = __glutDetermineVisualFromString(__glutDisplayString, treatAsSingle, - requiredOverlayCriteria, numRequiredOverlayCriteria, - requiredOverlayCriteriaMask, fbc); - if (vi) { - return vi; - } - } - return NULL; - } else { - *visAlloced = True; - *fbc = NULL; - return __glutDetermineVisual(__glutDisplayMode, - treatAsSingle, getOverlayVisualInfo); - } -} - -/* CENTRY */ -void APIENTRY -glutEstablishOverlay(void) -{ - GLUToverlay *overlay; - GLUTwindow *window; - XSetWindowAttributes wa; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - GLXFBConfigSGIX fbc; -#else - void *fbc; -#endif - - /* Register a routine to free an overlay with glut_win.c; - this keeps glut_win.c from pulling in all of - glut_overlay.c when no overlay functionality is used by - the application. */ - __glutFreeOverlayFunc = __glutFreeOverlay; - - window = __glutCurrentWindow; - - /* Allow for an existant overlay to be re-established perhaps - if you wanted a different display mode. */ - if (window->overlay) { -#if !defined(_WIN32) - addStaleWindow(window, window->overlay->win); -#endif - __glutFreeOverlay(window->overlay); - } - overlay = (GLUToverlay *) malloc(sizeof(GLUToverlay)); - if (!overlay) - __glutFatalError("out of memory."); - - overlay->vis = determineOverlayVisual(&overlay->treatAsSingle, - &overlay->visAlloced, (void **) &fbc); - if (!overlay->vis) { - __glutFatalError("lacks overlay support."); - } -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - if (fbc) { - window->ctx = glXCreateContextWithConfigSGIX(__glutDisplay, fbc, - GLX_RGBA_TYPE_SGIX, None, __glutTryDirect); - } else -#endif - { - overlay->ctx = glXCreateContext(__glutDisplay, overlay->vis, - None, __glutTryDirect); - } - if (!overlay->ctx) { - __glutFatalError( - "failed to create overlay OpenGL rendering context."); - } -#if !defined(_WIN32) - overlay->isDirect = glXIsDirect(__glutDisplay, overlay->ctx); - if (__glutForceDirect) { - if (!overlay->isDirect) { - __glutFatalError("direct rendering not possible."); - } - } -#endif - __glutSetupColormap(overlay->vis, &overlay->colormap, &overlay->cmap); - overlay->transparentPixel = __glutGetTransparentPixel(__glutDisplay, - overlay->vis); - wa.colormap = overlay->cmap; - wa.background_pixel = overlay->transparentPixel; - wa.event_mask = window->eventMask & GLUT_OVERLAY_EVENT_FILTER_MASK; - wa.border_pixel = 0; -#if defined(_WIN32) - /* XXX Overlays not supported in Win32 yet. */ -#else - overlay->win = XCreateWindow(__glutDisplay, - window->win, - 0, 0, window->width, window->height, 0, - overlay->vis->depth, InputOutput, overlay->vis->visual, - CWBackPixel | CWBorderPixel | CWEventMask | CWColormap, - &wa); -#endif - if (window->children) { - /* Overlay window must be lowered below any GLUT - subwindows. */ - XLowerWindow(__glutDisplay, overlay->win); - } - XMapWindow(__glutDisplay, overlay->win); - overlay->shownState = 1; - - overlay->display = NULL; - - /* Make sure a reshape gets delivered. */ - window->forceReshape = True; - -#if !defined(_WIN32) - __glutPutOnWorkList(__glutToplevelOf(window), GLUT_COLORMAP_WORK); -#endif - - window->overlay = overlay; - glutUseLayer(GLUT_OVERLAY); - - if (overlay->treatAsSingle) { - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_FRONT); - } -} - -void APIENTRY -glutRemoveOverlay(void) -{ - GLUTwindow *window = __glutCurrentWindow; - GLUToverlay *overlay = __glutCurrentWindow->overlay; - - if (!window->overlay) - return; - - /* If using overlay, switch to the normal layer. */ - if (window->renderWin == overlay->win) { - glutUseLayer(GLUT_NORMAL); - } -#if !defined(_WIN32) - addStaleWindow(window, overlay->win); -#endif - __glutFreeOverlay(overlay); - window->overlay = NULL; -#if !defined(_WIN32) - __glutPutOnWorkList(__glutToplevelOf(window), GLUT_COLORMAP_WORK); -#endif -} - -void APIENTRY -glutUseLayer(GLenum layer) -{ - GLUTwindow *window = __glutCurrentWindow; - - switch (layer) { - case GLUT_NORMAL: -#ifdef _WIN32 - window->renderDc = window->hdc; -#endif - window->renderWin = window->win; - window->renderCtx = window->ctx; - break; - case GLUT_OVERLAY: - /* Did you crash here? Calling glutUseLayer(GLUT_OVERLAY) - without an overlay established is erroneous. Fix your - code. */ -#ifdef _WIN32 - window->renderDc = window->overlay->hdc; -#endif - window->renderWin = window->overlay->win; - window->renderCtx = window->overlay->ctx; - break; - default: - __glutWarning("glutUseLayer: unknown layer, %d.", layer); - break; - } - __glutSetWindow(window); -} - -void APIENTRY -glutPostOverlayRedisplay(void) -{ - __glutPostRedisplay(__glutCurrentWindow, GLUT_OVERLAY_REDISPLAY_WORK); -} - -/* The advantage of this routine is that it saves the cost of a - glutSetWindow call (entailing an expensive OpenGL context - switch), particularly useful when multiple windows need - redisplays posted at the same times. */ -void APIENTRY -glutPostWindowOverlayRedisplay(int win) -{ - __glutPostRedisplay(__glutWindowList[win - 1], GLUT_OVERLAY_REDISPLAY_WORK); -} - -void APIENTRY -glutOverlayDisplayFunc(GLUTdisplayCB displayFunc) -{ - if (!__glutCurrentWindow->overlay) { - __glutWarning("glutOverlayDisplayFunc: window has no overlay established"); - return; - } - __glutCurrentWindow->overlay->display = displayFunc; -} - -void APIENTRY -glutHideOverlay(void) -{ - if (!__glutCurrentWindow->overlay) { - __glutWarning("glutHideOverlay: window has no overlay established"); - return; - } - XUnmapWindow(__glutDisplay, __glutCurrentWindow->overlay->win); - __glutCurrentWindow->overlay->shownState = 0; -} - -void APIENTRY -glutShowOverlay(void) -{ - if (!__glutCurrentWindow->overlay) { - __glutWarning("glutShowOverlay: window has no overlay established"); - return; - } - XMapWindow(__glutDisplay, __glutCurrentWindow->overlay->win); - __glutCurrentWindow->overlay->shownState = 1; -} - -int APIENTRY -glutLayerGet(GLenum param) -{ - switch (param) { - case GLUT_OVERLAY_POSSIBLE: - { - XVisualInfo *vi; - Bool dummy, visAlloced; - void *fbc; - - vi = determineOverlayVisual(&dummy, &visAlloced, &fbc); - if (vi) { - if (visAlloced) - XFree(vi); - return 1; - } - return 0; - } - case GLUT_LAYER_IN_USE: - return __glutCurrentWindow->renderWin != __glutCurrentWindow->win; - case GLUT_HAS_OVERLAY: - return __glutCurrentWindow->overlay != NULL; - case GLUT_TRANSPARENT_INDEX: - if (__glutCurrentWindow->overlay) { - return __glutCurrentWindow->overlay->transparentPixel; - } else { - return -1; - } - case GLUT_NORMAL_DAMAGED: - /* __glutWindowDamaged is used so the damage state within - the window (or overlay belwo) can be cleared before - calling a display callback so on return, the state does - not have to be cleared (since upon return from the - callback the window could be destroyed (or layer - removed). */ - return (__glutCurrentWindow->workMask & GLUT_REPAIR_WORK) - || __glutWindowDamaged; - case GLUT_OVERLAY_DAMAGED: - if (__glutCurrentWindow->overlay) { - return (__glutCurrentWindow->workMask & GLUT_OVERLAY_REPAIR_WORK) - || __glutWindowDamaged; - } else { - return -1; - } - default: - __glutWarning("invalid glutLayerGet param: %d", param); - return -1; - } -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_roman.c b/lib/glut-3.7.6/lib/glut/glut_roman.c deleted file mode 100644 index 8e25de8ac1ad1e6f5be886c7e720c8c7a4ef9de2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_roman.c +++ /dev/null @@ -1,2451 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#include "glutstroke.h" - -/* char: 33 '!' */ - -static const CoordRec char33_stroke0[] = { - { 13.3819, 100 }, - { 13.3819, 33.3333 }, -}; - -static const CoordRec char33_stroke1[] = { - { 13.3819, 9.5238 }, - { 8.62, 4.7619 }, - { 13.3819, 0 }, - { 18.1438, 4.7619 }, - { 13.3819, 9.5238 }, -}; - -static const StrokeRec char33[] = { - { 2, char33_stroke0 }, - { 5, char33_stroke1 }, -}; - -/* char: 34 '"' */ - -static const CoordRec char34_stroke0[] = { - { 4.02, 100 }, - { 4.02, 66.6667 }, -}; - -static const CoordRec char34_stroke1[] = { - { 42.1152, 100 }, - { 42.1152, 66.6667 }, -}; - -static const StrokeRec char34[] = { - { 2, char34_stroke0 }, - { 2, char34_stroke1 }, -}; - -/* char: 35 '#' */ - -static const CoordRec char35_stroke0[] = { - { 41.2952, 119.048 }, - { 7.9619, -33.3333 }, -}; - -static const CoordRec char35_stroke1[] = { - { 69.8667, 119.048 }, - { 36.5333, -33.3333 }, -}; - -static const CoordRec char35_stroke2[] = { - { 7.9619, 57.1429 }, - { 74.6286, 57.1429 }, -}; - -static const CoordRec char35_stroke3[] = { - { 3.2, 28.5714 }, - { 69.8667, 28.5714 }, -}; - -static const StrokeRec char35[] = { - { 2, char35_stroke0 }, - { 2, char35_stroke1 }, - { 2, char35_stroke2 }, - { 2, char35_stroke3 }, -}; - -/* char: 36 '$' */ - -static const CoordRec char36_stroke0[] = { - { 28.6295, 119.048 }, - { 28.6295, -19.0476 }, -}; - -static const CoordRec char36_stroke1[] = { - { 47.6771, 119.048 }, - { 47.6771, -19.0476 }, -}; - -static const CoordRec char36_stroke2[] = { - { 71.4867, 85.7143 }, - { 61.9629, 95.2381 }, - { 47.6771, 100 }, - { 28.6295, 100 }, - { 14.3438, 95.2381 }, - { 4.82, 85.7143 }, - { 4.82, 76.1905 }, - { 9.5819, 66.6667 }, - { 14.3438, 61.9048 }, - { 23.8676, 57.1429 }, - { 52.439, 47.619 }, - { 61.9629, 42.8571 }, - { 66.7248, 38.0952 }, - { 71.4867, 28.5714 }, - { 71.4867, 14.2857 }, - { 61.9629, 4.7619 }, - { 47.6771, 0 }, - { 28.6295, 0 }, - { 14.3438, 4.7619 }, - { 4.82, 14.2857 }, -}; - -static const StrokeRec char36[] = { - { 2, char36_stroke0 }, - { 2, char36_stroke1 }, - { 20, char36_stroke2 }, -}; - -/* char: 37 '%' */ - -static const CoordRec char37_stroke0[] = { - { 92.0743, 100 }, - { 6.36, 0 }, -}; - -static const CoordRec char37_stroke1[] = { - { 30.1695, 100 }, - { 39.6933, 90.4762 }, - { 39.6933, 80.9524 }, - { 34.9314, 71.4286 }, - { 25.4076, 66.6667 }, - { 15.8838, 66.6667 }, - { 6.36, 76.1905 }, - { 6.36, 85.7143 }, - { 11.1219, 95.2381 }, - { 20.6457, 100 }, - { 30.1695, 100 }, - { 39.6933, 95.2381 }, - { 53.979, 90.4762 }, - { 68.2648, 90.4762 }, - { 82.5505, 95.2381 }, - { 92.0743, 100 }, -}; - -static const CoordRec char37_stroke2[] = { - { 73.0267, 33.3333 }, - { 63.5029, 28.5714 }, - { 58.741, 19.0476 }, - { 58.741, 9.5238 }, - { 68.2648, 0 }, - { 77.7886, 0 }, - { 87.3124, 4.7619 }, - { 92.0743, 14.2857 }, - { 92.0743, 23.8095 }, - { 82.5505, 33.3333 }, - { 73.0267, 33.3333 }, -}; - -static const StrokeRec char37[] = { - { 2, char37_stroke0 }, - { 16, char37_stroke1 }, - { 11, char37_stroke2 }, -}; - -/* char: 38 '&' */ - -static const CoordRec char38_stroke0[] = { - { 101.218, 57.1429 }, - { 101.218, 61.9048 }, - { 96.4562, 66.6667 }, - { 91.6943, 66.6667 }, - { 86.9324, 61.9048 }, - { 82.1705, 52.381 }, - { 72.6467, 28.5714 }, - { 63.1229, 14.2857 }, - { 53.599, 4.7619 }, - { 44.0752, 0 }, - { 25.0276, 0 }, - { 15.5038, 4.7619 }, - { 10.7419, 9.5238 }, - { 5.98, 19.0476 }, - { 5.98, 28.5714 }, - { 10.7419, 38.0952 }, - { 15.5038, 42.8571 }, - { 48.8371, 61.9048 }, - { 53.599, 66.6667 }, - { 58.361, 76.1905 }, - { 58.361, 85.7143 }, - { 53.599, 95.2381 }, - { 44.0752, 100 }, - { 34.5514, 95.2381 }, - { 29.7895, 85.7143 }, - { 29.7895, 76.1905 }, - { 34.5514, 61.9048 }, - { 44.0752, 47.619 }, - { 67.8848, 14.2857 }, - { 77.4086, 4.7619 }, - { 86.9324, 0 }, - { 96.4562, 0 }, - { 101.218, 4.7619 }, - { 101.218, 9.5238 }, -}; - -static const StrokeRec char38[] = { - { 34, char38_stroke0 }, -}; - -/* char: 39 ''' */ - -static const CoordRec char39_stroke0[] = { - { 4.44, 100 }, - { 4.44, 66.6667 }, -}; - -static const StrokeRec char39[] = { - { 2, char39_stroke0 }, -}; - -/* char: 40 '(' */ - -static const CoordRec char40_stroke0[] = { - { 40.9133, 119.048 }, - { 31.3895, 109.524 }, - { 21.8657, 95.2381 }, - { 12.3419, 76.1905 }, - { 7.58, 52.381 }, - { 7.58, 33.3333 }, - { 12.3419, 9.5238 }, - { 21.8657, -9.5238 }, - { 31.3895, -23.8095 }, - { 40.9133, -33.3333 }, -}; - -static const StrokeRec char40[] = { - { 10, char40_stroke0 }, -}; - -/* char: 41 ')' */ - -static const CoordRec char41_stroke0[] = { - { 5.28, 119.048 }, - { 14.8038, 109.524 }, - { 24.3276, 95.2381 }, - { 33.8514, 76.1905 }, - { 38.6133, 52.381 }, - { 38.6133, 33.3333 }, - { 33.8514, 9.5238 }, - { 24.3276, -9.5238 }, - { 14.8038, -23.8095 }, - { 5.28, -33.3333 }, -}; - -static const StrokeRec char41[] = { - { 10, char41_stroke0 }, -}; - -/* char: 42 '*' */ - -static const CoordRec char42_stroke0[] = { - { 30.7695, 71.4286 }, - { 30.7695, 14.2857 }, -}; - -static const CoordRec char42_stroke1[] = { - { 6.96, 57.1429 }, - { 54.579, 28.5714 }, -}; - -static const CoordRec char42_stroke2[] = { - { 54.579, 57.1429 }, - { 6.96, 28.5714 }, -}; - -static const StrokeRec char42[] = { - { 2, char42_stroke0 }, - { 2, char42_stroke1 }, - { 2, char42_stroke2 }, -}; - -/* char: 43 '+' */ - -static const CoordRec char43_stroke0[] = { - { 48.8371, 85.7143 }, - { 48.8371, 0 }, -}; - -static const CoordRec char43_stroke1[] = { - { 5.98, 42.8571 }, - { 91.6943, 42.8571 }, -}; - -static const StrokeRec char43[] = { - { 2, char43_stroke0 }, - { 2, char43_stroke1 }, -}; - -/* char: 44 ',' */ - -static const CoordRec char44_stroke0[] = { - { 18.2838, 4.7619 }, - { 13.5219, 0 }, - { 8.76, 4.7619 }, - { 13.5219, 9.5238 }, - { 18.2838, 4.7619 }, - { 18.2838, -4.7619 }, - { 13.5219, -14.2857 }, - { 8.76, -19.0476 }, -}; - -static const StrokeRec char44[] = { - { 8, char44_stroke0 }, -}; - -/* char: 45 '-' */ - -static const CoordRec char45_stroke0[] = { - { 7.38, 42.8571 }, - { 93.0943, 42.8571 }, -}; - -static const StrokeRec char45[] = { - { 2, char45_stroke0 }, -}; - -/* char: 46 '.' */ - -static const CoordRec char46_stroke0[] = { - { 13.1019, 9.5238 }, - { 8.34, 4.7619 }, - { 13.1019, 0 }, - { 17.8638, 4.7619 }, - { 13.1019, 9.5238 }, -}; - -static const StrokeRec char46[] = { - { 5, char46_stroke0 }, -}; - -/* char: 47 '/' */ - -static const CoordRec char47_stroke0[] = { - { 7.24, -14.2857 }, - { 73.9067, 100 }, -}; - -static const StrokeRec char47[] = { - { 2, char47_stroke0 }, -}; - -/* char: 48 '0' */ - -static const CoordRec char48_stroke0[] = { - { 33.5514, 100 }, - { 19.2657, 95.2381 }, - { 9.7419, 80.9524 }, - { 4.98, 57.1429 }, - { 4.98, 42.8571 }, - { 9.7419, 19.0476 }, - { 19.2657, 4.7619 }, - { 33.5514, 0 }, - { 43.0752, 0 }, - { 57.361, 4.7619 }, - { 66.8848, 19.0476 }, - { 71.6467, 42.8571 }, - { 71.6467, 57.1429 }, - { 66.8848, 80.9524 }, - { 57.361, 95.2381 }, - { 43.0752, 100 }, - { 33.5514, 100 }, -}; - -static const StrokeRec char48[] = { - { 17, char48_stroke0 }, -}; - -/* char: 49 '1' */ - -static const CoordRec char49_stroke0[] = { - { 11.82, 80.9524 }, - { 21.3438, 85.7143 }, - { 35.6295, 100 }, - { 35.6295, 0 }, -}; - -static const StrokeRec char49[] = { - { 4, char49_stroke0 }, -}; - -/* char: 50 '2' */ - -static const CoordRec char50_stroke0[] = { - { 10.1819, 76.1905 }, - { 10.1819, 80.9524 }, - { 14.9438, 90.4762 }, - { 19.7057, 95.2381 }, - { 29.2295, 100 }, - { 48.2771, 100 }, - { 57.801, 95.2381 }, - { 62.5629, 90.4762 }, - { 67.3248, 80.9524 }, - { 67.3248, 71.4286 }, - { 62.5629, 61.9048 }, - { 53.039, 47.619 }, - { 5.42, 0 }, - { 72.0867, 0 }, -}; - -static const StrokeRec char50[] = { - { 14, char50_stroke0 }, -}; - -/* char: 51 '3' */ - -static const CoordRec char51_stroke0[] = { - { 14.5238, 100 }, - { 66.9048, 100 }, - { 38.3333, 61.9048 }, - { 52.619, 61.9048 }, - { 62.1429, 57.1429 }, - { 66.9048, 52.381 }, - { 71.6667, 38.0952 }, - { 71.6667, 28.5714 }, - { 66.9048, 14.2857 }, - { 57.381, 4.7619 }, - { 43.0952, 0 }, - { 28.8095, 0 }, - { 14.5238, 4.7619 }, - { 9.7619, 9.5238 }, - { 5, 19.0476 }, -}; - -static const StrokeRec char51[] = { - { 15, char51_stroke0 }, -}; - -/* char: 52 '4' */ - -static const CoordRec char52_stroke0[] = { - { 51.499, 100 }, - { 3.88, 33.3333 }, - { 75.3086, 33.3333 }, -}; - -static const CoordRec char52_stroke1[] = { - { 51.499, 100 }, - { 51.499, 0 }, -}; - -static const StrokeRec char52[] = { - { 3, char52_stroke0 }, - { 2, char52_stroke1 }, -}; - -/* char: 53 '5' */ - -static const CoordRec char53_stroke0[] = { - { 62.0029, 100 }, - { 14.3838, 100 }, - { 9.6219, 57.1429 }, - { 14.3838, 61.9048 }, - { 28.6695, 66.6667 }, - { 42.9552, 66.6667 }, - { 57.241, 61.9048 }, - { 66.7648, 52.381 }, - { 71.5267, 38.0952 }, - { 71.5267, 28.5714 }, - { 66.7648, 14.2857 }, - { 57.241, 4.7619 }, - { 42.9552, 0 }, - { 28.6695, 0 }, - { 14.3838, 4.7619 }, - { 9.6219, 9.5238 }, - { 4.86, 19.0476 }, -}; - -static const StrokeRec char53[] = { - { 17, char53_stroke0 }, -}; - -/* char: 54 '6' */ - -static const CoordRec char54_stroke0[] = { - { 62.7229, 85.7143 }, - { 57.961, 95.2381 }, - { 43.6752, 100 }, - { 34.1514, 100 }, - { 19.8657, 95.2381 }, - { 10.3419, 80.9524 }, - { 5.58, 57.1429 }, - { 5.58, 33.3333 }, - { 10.3419, 14.2857 }, - { 19.8657, 4.7619 }, - { 34.1514, 0 }, - { 38.9133, 0 }, - { 53.199, 4.7619 }, - { 62.7229, 14.2857 }, - { 67.4848, 28.5714 }, - { 67.4848, 33.3333 }, - { 62.7229, 47.619 }, - { 53.199, 57.1429 }, - { 38.9133, 61.9048 }, - { 34.1514, 61.9048 }, - { 19.8657, 57.1429 }, - { 10.3419, 47.619 }, - { 5.58, 33.3333 }, -}; - -static const StrokeRec char54[] = { - { 23, char54_stroke0 }, -}; - -/* char: 55 '7' */ - -static const CoordRec char55_stroke0[] = { - { 72.2267, 100 }, - { 24.6076, 0 }, -}; - -static const CoordRec char55_stroke1[] = { - { 5.56, 100 }, - { 72.2267, 100 }, -}; - -static const StrokeRec char55[] = { - { 2, char55_stroke0 }, - { 2, char55_stroke1 }, -}; - -/* char: 56 '8' */ - -static const CoordRec char56_stroke0[] = { - { 29.4095, 100 }, - { 15.1238, 95.2381 }, - { 10.3619, 85.7143 }, - { 10.3619, 76.1905 }, - { 15.1238, 66.6667 }, - { 24.6476, 61.9048 }, - { 43.6952, 57.1429 }, - { 57.981, 52.381 }, - { 67.5048, 42.8571 }, - { 72.2667, 33.3333 }, - { 72.2667, 19.0476 }, - { 67.5048, 9.5238 }, - { 62.7429, 4.7619 }, - { 48.4571, 0 }, - { 29.4095, 0 }, - { 15.1238, 4.7619 }, - { 10.3619, 9.5238 }, - { 5.6, 19.0476 }, - { 5.6, 33.3333 }, - { 10.3619, 42.8571 }, - { 19.8857, 52.381 }, - { 34.1714, 57.1429 }, - { 53.219, 61.9048 }, - { 62.7429, 66.6667 }, - { 67.5048, 76.1905 }, - { 67.5048, 85.7143 }, - { 62.7429, 95.2381 }, - { 48.4571, 100 }, - { 29.4095, 100 }, -}; - -static const StrokeRec char56[] = { - { 29, char56_stroke0 }, -}; - -/* char: 57 '9' */ - -static const CoordRec char57_stroke0[] = { - { 68.5048, 66.6667 }, - { 63.7429, 52.381 }, - { 54.219, 42.8571 }, - { 39.9333, 38.0952 }, - { 35.1714, 38.0952 }, - { 20.8857, 42.8571 }, - { 11.3619, 52.381 }, - { 6.6, 66.6667 }, - { 6.6, 71.4286 }, - { 11.3619, 85.7143 }, - { 20.8857, 95.2381 }, - { 35.1714, 100 }, - { 39.9333, 100 }, - { 54.219, 95.2381 }, - { 63.7429, 85.7143 }, - { 68.5048, 66.6667 }, - { 68.5048, 42.8571 }, - { 63.7429, 19.0476 }, - { 54.219, 4.7619 }, - { 39.9333, 0 }, - { 30.4095, 0 }, - { 16.1238, 4.7619 }, - { 11.3619, 14.2857 }, -}; - -static const StrokeRec char57[] = { - { 23, char57_stroke0 }, -}; - -/* char: 58 ':' */ - -static const CoordRec char58_stroke0[] = { - { 14.0819, 66.6667 }, - { 9.32, 61.9048 }, - { 14.0819, 57.1429 }, - { 18.8438, 61.9048 }, - { 14.0819, 66.6667 }, -}; - -static const CoordRec char58_stroke1[] = { - { 14.0819, 9.5238 }, - { 9.32, 4.7619 }, - { 14.0819, 0 }, - { 18.8438, 4.7619 }, - { 14.0819, 9.5238 }, -}; - -static const StrokeRec char58[] = { - { 5, char58_stroke0 }, - { 5, char58_stroke1 }, -}; - -/* char: 59 ';' */ - -static const CoordRec char59_stroke0[] = { - { 12.9619, 66.6667 }, - { 8.2, 61.9048 }, - { 12.9619, 57.1429 }, - { 17.7238, 61.9048 }, - { 12.9619, 66.6667 }, -}; - -static const CoordRec char59_stroke1[] = { - { 17.7238, 4.7619 }, - { 12.9619, 0 }, - { 8.2, 4.7619 }, - { 12.9619, 9.5238 }, - { 17.7238, 4.7619 }, - { 17.7238, -4.7619 }, - { 12.9619, -14.2857 }, - { 8.2, -19.0476 }, -}; - -static const StrokeRec char59[] = { - { 5, char59_stroke0 }, - { 8, char59_stroke1 }, -}; - -/* char: 60 '<' */ - -static const CoordRec char60_stroke0[] = { - { 79.2505, 85.7143 }, - { 3.06, 42.8571 }, - { 79.2505, 0 }, -}; - -static const StrokeRec char60[] = { - { 3, char60_stroke0 }, -}; - -/* char: 61 '=' */ - -static const CoordRec char61_stroke0[] = { - { 5.7, 57.1429 }, - { 91.4143, 57.1429 }, -}; - -static const CoordRec char61_stroke1[] = { - { 5.7, 28.5714 }, - { 91.4143, 28.5714 }, -}; - -static const StrokeRec char61[] = { - { 2, char61_stroke0 }, - { 2, char61_stroke1 }, -}; - -/* char: 62 '>' */ - -static const CoordRec char62_stroke0[] = { - { 2.78, 85.7143 }, - { 78.9705, 42.8571 }, - { 2.78, 0 }, -}; - -static const StrokeRec char62[] = { - { 3, char62_stroke0 }, -}; - -/* char: 63 '?' */ - -static const CoordRec char63_stroke0[] = { - { 8.42, 76.1905 }, - { 8.42, 80.9524 }, - { 13.1819, 90.4762 }, - { 17.9438, 95.2381 }, - { 27.4676, 100 }, - { 46.5152, 100 }, - { 56.039, 95.2381 }, - { 60.801, 90.4762 }, - { 65.5629, 80.9524 }, - { 65.5629, 71.4286 }, - { 60.801, 61.9048 }, - { 56.039, 57.1429 }, - { 36.9914, 47.619 }, - { 36.9914, 33.3333 }, -}; - -static const CoordRec char63_stroke1[] = { - { 36.9914, 9.5238 }, - { 32.2295, 4.7619 }, - { 36.9914, 0 }, - { 41.7533, 4.7619 }, - { 36.9914, 9.5238 }, -}; - -static const StrokeRec char63[] = { - { 14, char63_stroke0 }, - { 5, char63_stroke1 }, -}; - -/* char: 64 '@' */ - -static const CoordRec char64_stroke0[] = { - { 49.2171, 52.381 }, - { 39.6933, 57.1429 }, - { 30.1695, 57.1429 }, - { 25.4076, 47.619 }, - { 25.4076, 42.8571 }, - { 30.1695, 33.3333 }, - { 39.6933, 33.3333 }, - { 49.2171, 38.0952 }, -}; - -static const CoordRec char64_stroke1[] = { - { 49.2171, 57.1429 }, - { 49.2171, 38.0952 }, - { 53.979, 33.3333 }, - { 63.5029, 33.3333 }, - { 68.2648, 42.8571 }, - { 68.2648, 47.619 }, - { 63.5029, 61.9048 }, - { 53.979, 71.4286 }, - { 39.6933, 76.1905 }, - { 34.9314, 76.1905 }, - { 20.6457, 71.4286 }, - { 11.1219, 61.9048 }, - { 6.36, 47.619 }, - { 6.36, 42.8571 }, - { 11.1219, 28.5714 }, - { 20.6457, 19.0476 }, - { 34.9314, 14.2857 }, - { 39.6933, 14.2857 }, - { 53.979, 19.0476 }, -}; - -static const StrokeRec char64[] = { - { 8, char64_stroke0 }, - { 19, char64_stroke1 }, -}; - -/* char: 65 'A' */ - -static const CoordRec char65_stroke0[] = { - { 40.5952, 100 }, - { 2.5, 0 }, -}; - -static const CoordRec char65_stroke1[] = { - { 40.5952, 100 }, - { 78.6905, 0 }, -}; - -static const CoordRec char65_stroke2[] = { - { 16.7857, 33.3333 }, - { 64.4048, 33.3333 }, -}; - -static const StrokeRec char65[] = { - { 2, char65_stroke0 }, - { 2, char65_stroke1 }, - { 2, char65_stroke2 }, -}; - -/* char: 66 'B' */ - -static const CoordRec char66_stroke0[] = { - { 11.42, 100 }, - { 11.42, 0 }, -}; - -static const CoordRec char66_stroke1[] = { - { 11.42, 100 }, - { 54.2771, 100 }, - { 68.5629, 95.2381 }, - { 73.3248, 90.4762 }, - { 78.0867, 80.9524 }, - { 78.0867, 71.4286 }, - { 73.3248, 61.9048 }, - { 68.5629, 57.1429 }, - { 54.2771, 52.381 }, -}; - -static const CoordRec char66_stroke2[] = { - { 11.42, 52.381 }, - { 54.2771, 52.381 }, - { 68.5629, 47.619 }, - { 73.3248, 42.8571 }, - { 78.0867, 33.3333 }, - { 78.0867, 19.0476 }, - { 73.3248, 9.5238 }, - { 68.5629, 4.7619 }, - { 54.2771, 0 }, - { 11.42, 0 }, -}; - -static const StrokeRec char66[] = { - { 2, char66_stroke0 }, - { 9, char66_stroke1 }, - { 10, char66_stroke2 }, -}; - -/* char: 67 'C' */ - -static const CoordRec char67_stroke0[] = { - { 78.0886, 76.1905 }, - { 73.3267, 85.7143 }, - { 63.8029, 95.2381 }, - { 54.279, 100 }, - { 35.2314, 100 }, - { 25.7076, 95.2381 }, - { 16.1838, 85.7143 }, - { 11.4219, 76.1905 }, - { 6.66, 61.9048 }, - { 6.66, 38.0952 }, - { 11.4219, 23.8095 }, - { 16.1838, 14.2857 }, - { 25.7076, 4.7619 }, - { 35.2314, 0 }, - { 54.279, 0 }, - { 63.8029, 4.7619 }, - { 73.3267, 14.2857 }, - { 78.0886, 23.8095 }, -}; - -static const StrokeRec char67[] = { - { 18, char67_stroke0 }, -}; - -/* char: 68 'D' */ - -static const CoordRec char68_stroke0[] = { - { 11.96, 100 }, - { 11.96, 0 }, -}; - -static const CoordRec char68_stroke1[] = { - { 11.96, 100 }, - { 45.2933, 100 }, - { 59.579, 95.2381 }, - { 69.1029, 85.7143 }, - { 73.8648, 76.1905 }, - { 78.6267, 61.9048 }, - { 78.6267, 38.0952 }, - { 73.8648, 23.8095 }, - { 69.1029, 14.2857 }, - { 59.579, 4.7619 }, - { 45.2933, 0 }, - { 11.96, 0 }, -}; - -static const StrokeRec char68[] = { - { 2, char68_stroke0 }, - { 12, char68_stroke1 }, -}; - -/* char: 69 'E' */ - -static const CoordRec char69_stroke0[] = { - { 11.42, 100 }, - { 11.42, 0 }, -}; - -static const CoordRec char69_stroke1[] = { - { 11.42, 100 }, - { 73.3248, 100 }, -}; - -static const CoordRec char69_stroke2[] = { - { 11.42, 52.381 }, - { 49.5152, 52.381 }, -}; - -static const CoordRec char69_stroke3[] = { - { 11.42, 0 }, - { 73.3248, 0 }, -}; - -static const StrokeRec char69[] = { - { 2, char69_stroke0 }, - { 2, char69_stroke1 }, - { 2, char69_stroke2 }, - { 2, char69_stroke3 }, -}; - -/* char: 70 'F' */ - -static const CoordRec char70_stroke0[] = { - { 11.42, 100 }, - { 11.42, 0 }, -}; - -static const CoordRec char70_stroke1[] = { - { 11.42, 100 }, - { 73.3248, 100 }, -}; - -static const CoordRec char70_stroke2[] = { - { 11.42, 52.381 }, - { 49.5152, 52.381 }, -}; - -static const StrokeRec char70[] = { - { 2, char70_stroke0 }, - { 2, char70_stroke1 }, - { 2, char70_stroke2 }, -}; - -/* char: 71 'G' */ - -static const CoordRec char71_stroke0[] = { - { 78.4886, 76.1905 }, - { 73.7267, 85.7143 }, - { 64.2029, 95.2381 }, - { 54.679, 100 }, - { 35.6314, 100 }, - { 26.1076, 95.2381 }, - { 16.5838, 85.7143 }, - { 11.8219, 76.1905 }, - { 7.06, 61.9048 }, - { 7.06, 38.0952 }, - { 11.8219, 23.8095 }, - { 16.5838, 14.2857 }, - { 26.1076, 4.7619 }, - { 35.6314, 0 }, - { 54.679, 0 }, - { 64.2029, 4.7619 }, - { 73.7267, 14.2857 }, - { 78.4886, 23.8095 }, - { 78.4886, 38.0952 }, -}; - -static const CoordRec char71_stroke1[] = { - { 54.679, 38.0952 }, - { 78.4886, 38.0952 }, -}; - -static const StrokeRec char71[] = { - { 19, char71_stroke0 }, - { 2, char71_stroke1 }, -}; - -/* char: 72 'H' */ - -static const CoordRec char72_stroke0[] = { - { 11.42, 100 }, - { 11.42, 0 }, -}; - -static const CoordRec char72_stroke1[] = { - { 78.0867, 100 }, - { 78.0867, 0 }, -}; - -static const CoordRec char72_stroke2[] = { - { 11.42, 52.381 }, - { 78.0867, 52.381 }, -}; - -static const StrokeRec char72[] = { - { 2, char72_stroke0 }, - { 2, char72_stroke1 }, - { 2, char72_stroke2 }, -}; - -/* char: 73 'I' */ - -static const CoordRec char73_stroke0[] = { - { 10.86, 100 }, - { 10.86, 0 }, -}; - -static const StrokeRec char73[] = { - { 2, char73_stroke0 }, -}; - -/* char: 74 'J' */ - -static const CoordRec char74_stroke0[] = { - { 50.119, 100 }, - { 50.119, 23.8095 }, - { 45.3571, 9.5238 }, - { 40.5952, 4.7619 }, - { 31.0714, 0 }, - { 21.5476, 0 }, - { 12.0238, 4.7619 }, - { 7.2619, 9.5238 }, - { 2.5, 23.8095 }, - { 2.5, 33.3333 }, -}; - -static const StrokeRec char74[] = { - { 10, char74_stroke0 }, -}; - -/* char: 75 'K' */ - -static const CoordRec char75_stroke0[] = { - { 11.28, 100 }, - { 11.28, 0 }, -}; - -static const CoordRec char75_stroke1[] = { - { 77.9467, 100 }, - { 11.28, 33.3333 }, -}; - -static const CoordRec char75_stroke2[] = { - { 35.0895, 57.1429 }, - { 77.9467, 0 }, -}; - -static const StrokeRec char75[] = { - { 2, char75_stroke0 }, - { 2, char75_stroke1 }, - { 2, char75_stroke2 }, -}; - -/* char: 76 'L' */ - -static const CoordRec char76_stroke0[] = { - { 11.68, 100 }, - { 11.68, 0 }, -}; - -static const CoordRec char76_stroke1[] = { - { 11.68, 0 }, - { 68.8229, 0 }, -}; - -static const StrokeRec char76[] = { - { 2, char76_stroke0 }, - { 2, char76_stroke1 }, -}; - -/* char: 77 'M' */ - -static const CoordRec char77_stroke0[] = { - { 10.86, 100 }, - { 10.86, 0 }, -}; - -static const CoordRec char77_stroke1[] = { - { 10.86, 100 }, - { 48.9552, 0 }, -}; - -static const CoordRec char77_stroke2[] = { - { 87.0505, 100 }, - { 48.9552, 0 }, -}; - -static const CoordRec char77_stroke3[] = { - { 87.0505, 100 }, - { 87.0505, 0 }, -}; - -static const StrokeRec char77[] = { - { 2, char77_stroke0 }, - { 2, char77_stroke1 }, - { 2, char77_stroke2 }, - { 2, char77_stroke3 }, -}; - -/* char: 78 'N' */ - -static const CoordRec char78_stroke0[] = { - { 11.14, 100 }, - { 11.14, 0 }, -}; - -static const CoordRec char78_stroke1[] = { - { 11.14, 100 }, - { 77.8067, 0 }, -}; - -static const CoordRec char78_stroke2[] = { - { 77.8067, 100 }, - { 77.8067, 0 }, -}; - -static const StrokeRec char78[] = { - { 2, char78_stroke0 }, - { 2, char78_stroke1 }, - { 2, char78_stroke2 }, -}; - -/* char: 79 'O' */ - -static const CoordRec char79_stroke0[] = { - { 34.8114, 100 }, - { 25.2876, 95.2381 }, - { 15.7638, 85.7143 }, - { 11.0019, 76.1905 }, - { 6.24, 61.9048 }, - { 6.24, 38.0952 }, - { 11.0019, 23.8095 }, - { 15.7638, 14.2857 }, - { 25.2876, 4.7619 }, - { 34.8114, 0 }, - { 53.859, 0 }, - { 63.3829, 4.7619 }, - { 72.9067, 14.2857 }, - { 77.6686, 23.8095 }, - { 82.4305, 38.0952 }, - { 82.4305, 61.9048 }, - { 77.6686, 76.1905 }, - { 72.9067, 85.7143 }, - { 63.3829, 95.2381 }, - { 53.859, 100 }, - { 34.8114, 100 }, -}; - -static const StrokeRec char79[] = { - { 21, char79_stroke0 }, -}; - -/* char: 80 'P' */ - -static const CoordRec char80_stroke0[] = { - { 12.1, 100 }, - { 12.1, 0 }, -}; - -static const CoordRec char80_stroke1[] = { - { 12.1, 100 }, - { 54.9571, 100 }, - { 69.2429, 95.2381 }, - { 74.0048, 90.4762 }, - { 78.7667, 80.9524 }, - { 78.7667, 66.6667 }, - { 74.0048, 57.1429 }, - { 69.2429, 52.381 }, - { 54.9571, 47.619 }, - { 12.1, 47.619 }, -}; - -static const StrokeRec char80[] = { - { 2, char80_stroke0 }, - { 10, char80_stroke1 }, -}; - -/* char: 81 'Q' */ - -static const CoordRec char81_stroke0[] = { - { 33.8714, 100 }, - { 24.3476, 95.2381 }, - { 14.8238, 85.7143 }, - { 10.0619, 76.1905 }, - { 5.3, 61.9048 }, - { 5.3, 38.0952 }, - { 10.0619, 23.8095 }, - { 14.8238, 14.2857 }, - { 24.3476, 4.7619 }, - { 33.8714, 0 }, - { 52.919, 0 }, - { 62.4429, 4.7619 }, - { 71.9667, 14.2857 }, - { 76.7286, 23.8095 }, - { 81.4905, 38.0952 }, - { 81.4905, 61.9048 }, - { 76.7286, 76.1905 }, - { 71.9667, 85.7143 }, - { 62.4429, 95.2381 }, - { 52.919, 100 }, - { 33.8714, 100 }, -}; - -static const CoordRec char81_stroke1[] = { - { 48.1571, 19.0476 }, - { 76.7286, -9.5238 }, -}; - -static const StrokeRec char81[] = { - { 21, char81_stroke0 }, - { 2, char81_stroke1 }, -}; - -/* char: 82 'R' */ - -static const CoordRec char82_stroke0[] = { - { 11.68, 100 }, - { 11.68, 0 }, -}; - -static const CoordRec char82_stroke1[] = { - { 11.68, 100 }, - { 54.5371, 100 }, - { 68.8229, 95.2381 }, - { 73.5848, 90.4762 }, - { 78.3467, 80.9524 }, - { 78.3467, 71.4286 }, - { 73.5848, 61.9048 }, - { 68.8229, 57.1429 }, - { 54.5371, 52.381 }, - { 11.68, 52.381 }, -}; - -static const CoordRec char82_stroke2[] = { - { 45.0133, 52.381 }, - { 78.3467, 0 }, -}; - -static const StrokeRec char82[] = { - { 2, char82_stroke0 }, - { 10, char82_stroke1 }, - { 2, char82_stroke2 }, -}; - -/* char: 83 'S' */ - -static const CoordRec char83_stroke0[] = { - { 74.6667, 85.7143 }, - { 65.1429, 95.2381 }, - { 50.8571, 100 }, - { 31.8095, 100 }, - { 17.5238, 95.2381 }, - { 8, 85.7143 }, - { 8, 76.1905 }, - { 12.7619, 66.6667 }, - { 17.5238, 61.9048 }, - { 27.0476, 57.1429 }, - { 55.619, 47.619 }, - { 65.1429, 42.8571 }, - { 69.9048, 38.0952 }, - { 74.6667, 28.5714 }, - { 74.6667, 14.2857 }, - { 65.1429, 4.7619 }, - { 50.8571, 0 }, - { 31.8095, 0 }, - { 17.5238, 4.7619 }, - { 8, 14.2857 }, -}; - -static const StrokeRec char83[] = { - { 20, char83_stroke0 }, -}; - -/* char: 84 'T' */ - -static const CoordRec char84_stroke0[] = { - { 35.6933, 100 }, - { 35.6933, 0 }, -}; - -static const CoordRec char84_stroke1[] = { - { 2.36, 100 }, - { 69.0267, 100 }, -}; - -static const StrokeRec char84[] = { - { 2, char84_stroke0 }, - { 2, char84_stroke1 }, -}; - -/* char: 85 'U' */ - -static const CoordRec char85_stroke0[] = { - { 11.54, 100 }, - { 11.54, 28.5714 }, - { 16.3019, 14.2857 }, - { 25.8257, 4.7619 }, - { 40.1114, 0 }, - { 49.6352, 0 }, - { 63.921, 4.7619 }, - { 73.4448, 14.2857 }, - { 78.2067, 28.5714 }, - { 78.2067, 100 }, -}; - -static const StrokeRec char85[] = { - { 10, char85_stroke0 }, -}; - -/* char: 86 'V' */ - -static const CoordRec char86_stroke0[] = { - { 2.36, 100 }, - { 40.4552, 0 }, -}; - -static const CoordRec char86_stroke1[] = { - { 78.5505, 100 }, - { 40.4552, 0 }, -}; - -static const StrokeRec char86[] = { - { 2, char86_stroke0 }, - { 2, char86_stroke1 }, -}; - -/* char: 87 'W' */ - -static const CoordRec char87_stroke0[] = { - { 2.22, 100 }, - { 26.0295, 0 }, -}; - -static const CoordRec char87_stroke1[] = { - { 49.839, 100 }, - { 26.0295, 0 }, -}; - -static const CoordRec char87_stroke2[] = { - { 49.839, 100 }, - { 73.6486, 0 }, -}; - -static const CoordRec char87_stroke3[] = { - { 97.4581, 100 }, - { 73.6486, 0 }, -}; - -static const StrokeRec char87[] = { - { 2, char87_stroke0 }, - { 2, char87_stroke1 }, - { 2, char87_stroke2 }, - { 2, char87_stroke3 }, -}; - -/* char: 88 'X' */ - -static const CoordRec char88_stroke0[] = { - { 2.5, 100 }, - { 69.1667, 0 }, -}; - -static const CoordRec char88_stroke1[] = { - { 69.1667, 100 }, - { 2.5, 0 }, -}; - -static const StrokeRec char88[] = { - { 2, char88_stroke0 }, - { 2, char88_stroke1 }, -}; - -/* char: 89 'Y' */ - -static const CoordRec char89_stroke0[] = { - { 1.52, 100 }, - { 39.6152, 52.381 }, - { 39.6152, 0 }, -}; - -static const CoordRec char89_stroke1[] = { - { 77.7105, 100 }, - { 39.6152, 52.381 }, -}; - -static const StrokeRec char89[] = { - { 3, char89_stroke0 }, - { 2, char89_stroke1 }, -}; - -/* char: 90 'Z' */ - -static const CoordRec char90_stroke0[] = { - { 69.1667, 100 }, - { 2.5, 0 }, -}; - -static const CoordRec char90_stroke1[] = { - { 2.5, 100 }, - { 69.1667, 100 }, -}; - -static const CoordRec char90_stroke2[] = { - { 2.5, 0 }, - { 69.1667, 0 }, -}; - -static const StrokeRec char90[] = { - { 2, char90_stroke0 }, - { 2, char90_stroke1 }, - { 2, char90_stroke2 }, -}; - -/* char: 91 '[' */ - -static const CoordRec char91_stroke0[] = { - { 7.78, 119.048 }, - { 7.78, -33.3333 }, -}; - -static const CoordRec char91_stroke1[] = { - { 12.5419, 119.048 }, - { 12.5419, -33.3333 }, -}; - -static const CoordRec char91_stroke2[] = { - { 7.78, 119.048 }, - { 41.1133, 119.048 }, -}; - -static const CoordRec char91_stroke3[] = { - { 7.78, -33.3333 }, - { 41.1133, -33.3333 }, -}; - -static const StrokeRec char91[] = { - { 2, char91_stroke0 }, - { 2, char91_stroke1 }, - { 2, char91_stroke2 }, - { 2, char91_stroke3 }, -}; - -/* char: 92 '\' */ - -static const CoordRec char92_stroke0[] = { - { 5.84, 100 }, - { 72.5067, -14.2857 }, -}; - -static const StrokeRec char92[] = { - { 2, char92_stroke0 }, -}; - -/* char: 93 ']' */ - -static const CoordRec char93_stroke0[] = { - { 33.0114, 119.048 }, - { 33.0114, -33.3333 }, -}; - -static const CoordRec char93_stroke1[] = { - { 37.7733, 119.048 }, - { 37.7733, -33.3333 }, -}; - -static const CoordRec char93_stroke2[] = { - { 4.44, 119.048 }, - { 37.7733, 119.048 }, -}; - -static const CoordRec char93_stroke3[] = { - { 4.44, -33.3333 }, - { 37.7733, -33.3333 }, -}; - -static const StrokeRec char93[] = { - { 2, char93_stroke0 }, - { 2, char93_stroke1 }, - { 2, char93_stroke2 }, - { 2, char93_stroke3 }, -}; - -/* char: 94 '^' */ - -static const CoordRec char94_stroke0[] = { - { 44.0752, 109.524 }, - { 5.98, 42.8571 }, -}; - -static const CoordRec char94_stroke1[] = { - { 44.0752, 109.524 }, - { 82.1705, 42.8571 }, -}; - -static const StrokeRec char94[] = { - { 2, char94_stroke0 }, - { 2, char94_stroke1 }, -}; - -/* char: 95 '_' */ - -static const CoordRec char95_stroke0[] = { - { -1.1, -33.3333 }, - { 103.662, -33.3333 }, - { 103.662, -28.5714 }, - { -1.1, -28.5714 }, - { -1.1, -33.3333 }, -}; - -static const StrokeRec char95[] = { - { 5, char95_stroke0 }, -}; - -/* char: 96 '`' */ - -static const CoordRec char96_stroke0[] = { - { 33.0219, 100 }, - { 56.8314, 71.4286 }, -}; - -static const CoordRec char96_stroke1[] = { - { 33.0219, 100 }, - { 28.26, 95.2381 }, - { 56.8314, 71.4286 }, -}; - -static const StrokeRec char96[] = { - { 2, char96_stroke0 }, - { 3, char96_stroke1 }, -}; - -/* char: 97 'a' */ - -static const CoordRec char97_stroke0[] = { - { 63.8229, 66.6667 }, - { 63.8229, 0 }, -}; - -static const CoordRec char97_stroke1[] = { - { 63.8229, 52.381 }, - { 54.299, 61.9048 }, - { 44.7752, 66.6667 }, - { 30.4895, 66.6667 }, - { 20.9657, 61.9048 }, - { 11.4419, 52.381 }, - { 6.68, 38.0952 }, - { 6.68, 28.5714 }, - { 11.4419, 14.2857 }, - { 20.9657, 4.7619 }, - { 30.4895, 0 }, - { 44.7752, 0 }, - { 54.299, 4.7619 }, - { 63.8229, 14.2857 }, -}; - -static const StrokeRec char97[] = { - { 2, char97_stroke0 }, - { 14, char97_stroke1 }, -}; - -/* char: 98 'b' */ - -static const CoordRec char98_stroke0[] = { - { 8.76, 100 }, - { 8.76, 0 }, -}; - -static const CoordRec char98_stroke1[] = { - { 8.76, 52.381 }, - { 18.2838, 61.9048 }, - { 27.8076, 66.6667 }, - { 42.0933, 66.6667 }, - { 51.6171, 61.9048 }, - { 61.141, 52.381 }, - { 65.9029, 38.0952 }, - { 65.9029, 28.5714 }, - { 61.141, 14.2857 }, - { 51.6171, 4.7619 }, - { 42.0933, 0 }, - { 27.8076, 0 }, - { 18.2838, 4.7619 }, - { 8.76, 14.2857 }, -}; - -static const StrokeRec char98[] = { - { 2, char98_stroke0 }, - { 14, char98_stroke1 }, -}; - -/* char: 99 'c' */ - -static const CoordRec char99_stroke0[] = { - { 62.6629, 52.381 }, - { 53.139, 61.9048 }, - { 43.6152, 66.6667 }, - { 29.3295, 66.6667 }, - { 19.8057, 61.9048 }, - { 10.2819, 52.381 }, - { 5.52, 38.0952 }, - { 5.52, 28.5714 }, - { 10.2819, 14.2857 }, - { 19.8057, 4.7619 }, - { 29.3295, 0 }, - { 43.6152, 0 }, - { 53.139, 4.7619 }, - { 62.6629, 14.2857 }, -}; - -static const StrokeRec char99[] = { - { 14, char99_stroke0 }, -}; - -/* char: 100 'd' */ - -static const CoordRec char100_stroke0[] = { - { 61.7829, 100 }, - { 61.7829, 0 }, -}; - -static const CoordRec char100_stroke1[] = { - { 61.7829, 52.381 }, - { 52.259, 61.9048 }, - { 42.7352, 66.6667 }, - { 28.4495, 66.6667 }, - { 18.9257, 61.9048 }, - { 9.4019, 52.381 }, - { 4.64, 38.0952 }, - { 4.64, 28.5714 }, - { 9.4019, 14.2857 }, - { 18.9257, 4.7619 }, - { 28.4495, 0 }, - { 42.7352, 0 }, - { 52.259, 4.7619 }, - { 61.7829, 14.2857 }, -}; - -static const StrokeRec char100[] = { - { 2, char100_stroke0 }, - { 14, char100_stroke1 }, -}; - -/* char: 101 'e' */ - -static const CoordRec char101_stroke0[] = { - { 5.72, 38.0952 }, - { 62.8629, 38.0952 }, - { 62.8629, 47.619 }, - { 58.101, 57.1429 }, - { 53.339, 61.9048 }, - { 43.8152, 66.6667 }, - { 29.5295, 66.6667 }, - { 20.0057, 61.9048 }, - { 10.4819, 52.381 }, - { 5.72, 38.0952 }, - { 5.72, 28.5714 }, - { 10.4819, 14.2857 }, - { 20.0057, 4.7619 }, - { 29.5295, 0 }, - { 43.8152, 0 }, - { 53.339, 4.7619 }, - { 62.8629, 14.2857 }, -}; - -static const StrokeRec char101[] = { - { 17, char101_stroke0 }, -}; - -/* char: 102 'f' */ - -static const CoordRec char102_stroke0[] = { - { 38.7752, 100 }, - { 29.2514, 100 }, - { 19.7276, 95.2381 }, - { 14.9657, 80.9524 }, - { 14.9657, 0 }, -}; - -static const CoordRec char102_stroke1[] = { - { 0.68, 66.6667 }, - { 34.0133, 66.6667 }, -}; - -static const StrokeRec char102[] = { - { 5, char102_stroke0 }, - { 2, char102_stroke1 }, -}; - -/* char: 103 'g' */ - -static const CoordRec char103_stroke0[] = { - { 62.5029, 66.6667 }, - { 62.5029, -9.5238 }, - { 57.741, -23.8095 }, - { 52.979, -28.5714 }, - { 43.4552, -33.3333 }, - { 29.1695, -33.3333 }, - { 19.6457, -28.5714 }, -}; - -static const CoordRec char103_stroke1[] = { - { 62.5029, 52.381 }, - { 52.979, 61.9048 }, - { 43.4552, 66.6667 }, - { 29.1695, 66.6667 }, - { 19.6457, 61.9048 }, - { 10.1219, 52.381 }, - { 5.36, 38.0952 }, - { 5.36, 28.5714 }, - { 10.1219, 14.2857 }, - { 19.6457, 4.7619 }, - { 29.1695, 0 }, - { 43.4552, 0 }, - { 52.979, 4.7619 }, - { 62.5029, 14.2857 }, -}; - -static const StrokeRec char103[] = { - { 7, char103_stroke0 }, - { 14, char103_stroke1 }, -}; - -/* char: 104 'h' */ - -static const CoordRec char104_stroke0[] = { - { 9.6, 100 }, - { 9.6, 0 }, -}; - -static const CoordRec char104_stroke1[] = { - { 9.6, 47.619 }, - { 23.8857, 61.9048 }, - { 33.4095, 66.6667 }, - { 47.6952, 66.6667 }, - { 57.219, 61.9048 }, - { 61.981, 47.619 }, - { 61.981, 0 }, -}; - -static const StrokeRec char104[] = { - { 2, char104_stroke0 }, - { 7, char104_stroke1 }, -}; - -/* char: 105 'i' */ - -static const CoordRec char105_stroke0[] = { - { 10.02, 100 }, - { 14.7819, 95.2381 }, - { 19.5438, 100 }, - { 14.7819, 104.762 }, - { 10.02, 100 }, -}; - -static const CoordRec char105_stroke1[] = { - { 14.7819, 66.6667 }, - { 14.7819, 0 }, -}; - -static const StrokeRec char105[] = { - { 5, char105_stroke0 }, - { 2, char105_stroke1 }, -}; - -/* char: 106 'j' */ - -static const CoordRec char106_stroke0[] = { - { 17.3876, 100 }, - { 22.1495, 95.2381 }, - { 26.9114, 100 }, - { 22.1495, 104.762 }, - { 17.3876, 100 }, -}; - -static const CoordRec char106_stroke1[] = { - { 22.1495, 66.6667 }, - { 22.1495, -14.2857 }, - { 17.3876, -28.5714 }, - { 7.8638, -33.3333 }, - { -1.66, -33.3333 }, -}; - -static const StrokeRec char106[] = { - { 5, char106_stroke0 }, - { 5, char106_stroke1 }, -}; - -/* char: 107 'k' */ - -static const CoordRec char107_stroke0[] = { - { 9.6, 100 }, - { 9.6, 0 }, -}; - -static const CoordRec char107_stroke1[] = { - { 57.219, 66.6667 }, - { 9.6, 19.0476 }, -}; - -static const CoordRec char107_stroke2[] = { - { 28.6476, 38.0952 }, - { 61.981, 0 }, -}; - -static const StrokeRec char107[] = { - { 2, char107_stroke0 }, - { 2, char107_stroke1 }, - { 2, char107_stroke2 }, -}; - -/* char: 108 'l' */ - -static const CoordRec char108_stroke0[] = { - { 10.02, 100 }, - { 10.02, 0 }, -}; - -static const StrokeRec char108[] = { - { 2, char108_stroke0 }, -}; - -/* char: 109 'm' */ - -static const CoordRec char109_stroke0[] = { - { 9.6, 66.6667 }, - { 9.6, 0 }, -}; - -static const CoordRec char109_stroke1[] = { - { 9.6, 47.619 }, - { 23.8857, 61.9048 }, - { 33.4095, 66.6667 }, - { 47.6952, 66.6667 }, - { 57.219, 61.9048 }, - { 61.981, 47.619 }, - { 61.981, 0 }, -}; - -static const CoordRec char109_stroke2[] = { - { 61.981, 47.619 }, - { 76.2667, 61.9048 }, - { 85.7905, 66.6667 }, - { 100.076, 66.6667 }, - { 109.6, 61.9048 }, - { 114.362, 47.619 }, - { 114.362, 0 }, -}; - -static const StrokeRec char109[] = { - { 2, char109_stroke0 }, - { 7, char109_stroke1 }, - { 7, char109_stroke2 }, -}; - -/* char: 110 'n' */ - -static const CoordRec char110_stroke0[] = { - { 9.18, 66.6667 }, - { 9.18, 0 }, -}; - -static const CoordRec char110_stroke1[] = { - { 9.18, 47.619 }, - { 23.4657, 61.9048 }, - { 32.9895, 66.6667 }, - { 47.2752, 66.6667 }, - { 56.799, 61.9048 }, - { 61.561, 47.619 }, - { 61.561, 0 }, -}; - -static const StrokeRec char110[] = { - { 2, char110_stroke0 }, - { 7, char110_stroke1 }, -}; - -/* char: 111 'o' */ - -static const CoordRec char111_stroke0[] = { - { 28.7895, 66.6667 }, - { 19.2657, 61.9048 }, - { 9.7419, 52.381 }, - { 4.98, 38.0952 }, - { 4.98, 28.5714 }, - { 9.7419, 14.2857 }, - { 19.2657, 4.7619 }, - { 28.7895, 0 }, - { 43.0752, 0 }, - { 52.599, 4.7619 }, - { 62.1229, 14.2857 }, - { 66.8848, 28.5714 }, - { 66.8848, 38.0952 }, - { 62.1229, 52.381 }, - { 52.599, 61.9048 }, - { 43.0752, 66.6667 }, - { 28.7895, 66.6667 }, -}; - -static const StrokeRec char111[] = { - { 17, char111_stroke0 }, -}; - -/* char: 112 'p' */ - -static const CoordRec char112_stroke0[] = { - { 9.46, 66.6667 }, - { 9.46, -33.3333 }, -}; - -static const CoordRec char112_stroke1[] = { - { 9.46, 52.381 }, - { 18.9838, 61.9048 }, - { 28.5076, 66.6667 }, - { 42.7933, 66.6667 }, - { 52.3171, 61.9048 }, - { 61.841, 52.381 }, - { 66.6029, 38.0952 }, - { 66.6029, 28.5714 }, - { 61.841, 14.2857 }, - { 52.3171, 4.7619 }, - { 42.7933, 0 }, - { 28.5076, 0 }, - { 18.9838, 4.7619 }, - { 9.46, 14.2857 }, -}; - -static const StrokeRec char112[] = { - { 2, char112_stroke0 }, - { 14, char112_stroke1 }, -}; - -/* char: 113 'q' */ - -static const CoordRec char113_stroke0[] = { - { 61.9829, 66.6667 }, - { 61.9829, -33.3333 }, -}; - -static const CoordRec char113_stroke1[] = { - { 61.9829, 52.381 }, - { 52.459, 61.9048 }, - { 42.9352, 66.6667 }, - { 28.6495, 66.6667 }, - { 19.1257, 61.9048 }, - { 9.6019, 52.381 }, - { 4.84, 38.0952 }, - { 4.84, 28.5714 }, - { 9.6019, 14.2857 }, - { 19.1257, 4.7619 }, - { 28.6495, 0 }, - { 42.9352, 0 }, - { 52.459, 4.7619 }, - { 61.9829, 14.2857 }, -}; - -static const StrokeRec char113[] = { - { 2, char113_stroke0 }, - { 14, char113_stroke1 }, -}; - -/* char: 114 'r' */ - -static const CoordRec char114_stroke0[] = { - { 9.46, 66.6667 }, - { 9.46, 0 }, -}; - -static const CoordRec char114_stroke1[] = { - { 9.46, 38.0952 }, - { 14.2219, 52.381 }, - { 23.7457, 61.9048 }, - { 33.2695, 66.6667 }, - { 47.5552, 66.6667 }, -}; - -static const StrokeRec char114[] = { - { 2, char114_stroke0 }, - { 5, char114_stroke1 }, -}; - -/* char: 115 's' */ - -static const CoordRec char115_stroke0[] = { - { 57.081, 52.381 }, - { 52.319, 61.9048 }, - { 38.0333, 66.6667 }, - { 23.7476, 66.6667 }, - { 9.4619, 61.9048 }, - { 4.7, 52.381 }, - { 9.4619, 42.8571 }, - { 18.9857, 38.0952 }, - { 42.7952, 33.3333 }, - { 52.319, 28.5714 }, - { 57.081, 19.0476 }, - { 57.081, 14.2857 }, - { 52.319, 4.7619 }, - { 38.0333, 0 }, - { 23.7476, 0 }, - { 9.4619, 4.7619 }, - { 4.7, 14.2857 }, -}; - -static const StrokeRec char115[] = { - { 17, char115_stroke0 }, -}; - -/* char: 116 't' */ - -static const CoordRec char116_stroke0[] = { - { 14.8257, 100 }, - { 14.8257, 19.0476 }, - { 19.5876, 4.7619 }, - { 29.1114, 0 }, - { 38.6352, 0 }, -}; - -static const CoordRec char116_stroke1[] = { - { 0.54, 66.6667 }, - { 33.8733, 66.6667 }, -}; - -static const StrokeRec char116[] = { - { 5, char116_stroke0 }, - { 2, char116_stroke1 }, -}; - -/* char: 117 'u' */ - -static const CoordRec char117_stroke0[] = { - { 9.46, 66.6667 }, - { 9.46, 19.0476 }, - { 14.2219, 4.7619 }, - { 23.7457, 0 }, - { 38.0314, 0 }, - { 47.5552, 4.7619 }, - { 61.841, 19.0476 }, -}; - -static const CoordRec char117_stroke1[] = { - { 61.841, 66.6667 }, - { 61.841, 0 }, -}; - -static const StrokeRec char117[] = { - { 7, char117_stroke0 }, - { 2, char117_stroke1 }, -}; - -/* char: 118 'v' */ - -static const CoordRec char118_stroke0[] = { - { 1.8, 66.6667 }, - { 30.3714, 0 }, -}; - -static const CoordRec char118_stroke1[] = { - { 58.9429, 66.6667 }, - { 30.3714, 0 }, -}; - -static const StrokeRec char118[] = { - { 2, char118_stroke0 }, - { 2, char118_stroke1 }, -}; - -/* char: 119 'w' */ - -static const CoordRec char119_stroke0[] = { - { 2.5, 66.6667 }, - { 21.5476, 0 }, -}; - -static const CoordRec char119_stroke1[] = { - { 40.5952, 66.6667 }, - { 21.5476, 0 }, -}; - -static const CoordRec char119_stroke2[] = { - { 40.5952, 66.6667 }, - { 59.6429, 0 }, -}; - -static const CoordRec char119_stroke3[] = { - { 78.6905, 66.6667 }, - { 59.6429, 0 }, -}; - -static const StrokeRec char119[] = { - { 2, char119_stroke0 }, - { 2, char119_stroke1 }, - { 2, char119_stroke2 }, - { 2, char119_stroke3 }, -}; - -/* char: 120 'x' */ - -static const CoordRec char120_stroke0[] = { - { 1.66, 66.6667 }, - { 54.041, 0 }, -}; - -static const CoordRec char120_stroke1[] = { - { 54.041, 66.6667 }, - { 1.66, 0 }, -}; - -static const StrokeRec char120[] = { - { 2, char120_stroke0 }, - { 2, char120_stroke1 }, -}; - -/* char: 121 'y' */ - -static const CoordRec char121_stroke0[] = { - { 6.5619, 66.6667 }, - { 35.1333, 0 }, -}; - -static const CoordRec char121_stroke1[] = { - { 63.7048, 66.6667 }, - { 35.1333, 0 }, - { 25.6095, -19.0476 }, - { 16.0857, -28.5714 }, - { 6.5619, -33.3333 }, - { 1.8, -33.3333 }, -}; - -static const StrokeRec char121[] = { - { 2, char121_stroke0 }, - { 6, char121_stroke1 }, -}; - -/* char: 122 'z' */ - -static const CoordRec char122_stroke0[] = { - { 56.821, 66.6667 }, - { 4.44, 0 }, -}; - -static const CoordRec char122_stroke1[] = { - { 4.44, 66.6667 }, - { 56.821, 66.6667 }, -}; - -static const CoordRec char122_stroke2[] = { - { 4.44, 0 }, - { 56.821, 0 }, -}; - -static const StrokeRec char122[] = { - { 2, char122_stroke0 }, - { 2, char122_stroke1 }, - { 2, char122_stroke2 }, -}; - -/* char: 123 '{' */ - -static const CoordRec char123_stroke0[] = { - { 31.1895, 119.048 }, - { 21.6657, 114.286 }, - { 16.9038, 109.524 }, - { 12.1419, 100 }, - { 12.1419, 90.4762 }, - { 16.9038, 80.9524 }, - { 21.6657, 76.1905 }, - { 26.4276, 66.6667 }, - { 26.4276, 57.1429 }, - { 16.9038, 47.619 }, -}; - -static const CoordRec char123_stroke1[] = { - { 21.6657, 114.286 }, - { 16.9038, 104.762 }, - { 16.9038, 95.2381 }, - { 21.6657, 85.7143 }, - { 26.4276, 80.9524 }, - { 31.1895, 71.4286 }, - { 31.1895, 61.9048 }, - { 26.4276, 52.381 }, - { 7.38, 42.8571 }, - { 26.4276, 33.3333 }, - { 31.1895, 23.8095 }, - { 31.1895, 14.2857 }, - { 26.4276, 4.7619 }, - { 21.6657, 0 }, - { 16.9038, -9.5238 }, - { 16.9038, -19.0476 }, - { 21.6657, -28.5714 }, -}; - -static const CoordRec char123_stroke2[] = { - { 16.9038, 38.0952 }, - { 26.4276, 28.5714 }, - { 26.4276, 19.0476 }, - { 21.6657, 9.5238 }, - { 16.9038, 4.7619 }, - { 12.1419, -4.7619 }, - { 12.1419, -14.2857 }, - { 16.9038, -23.8095 }, - { 21.6657, -28.5714 }, - { 31.1895, -33.3333 }, -}; - -static const StrokeRec char123[] = { - { 10, char123_stroke0 }, - { 17, char123_stroke1 }, - { 10, char123_stroke2 }, -}; - -/* char: 124 '|' */ - -static const CoordRec char124_stroke0[] = { - { 11.54, 119.048 }, - { 11.54, -33.3333 }, -}; - -static const StrokeRec char124[] = { - { 2, char124_stroke0 }, -}; - -/* char: 125 '}' */ - -static const CoordRec char125_stroke0[] = { - { 9.18, 119.048 }, - { 18.7038, 114.286 }, - { 23.4657, 109.524 }, - { 28.2276, 100 }, - { 28.2276, 90.4762 }, - { 23.4657, 80.9524 }, - { 18.7038, 76.1905 }, - { 13.9419, 66.6667 }, - { 13.9419, 57.1429 }, - { 23.4657, 47.619 }, -}; - -static const CoordRec char125_stroke1[] = { - { 18.7038, 114.286 }, - { 23.4657, 104.762 }, - { 23.4657, 95.2381 }, - { 18.7038, 85.7143 }, - { 13.9419, 80.9524 }, - { 9.18, 71.4286 }, - { 9.18, 61.9048 }, - { 13.9419, 52.381 }, - { 32.9895, 42.8571 }, - { 13.9419, 33.3333 }, - { 9.18, 23.8095 }, - { 9.18, 14.2857 }, - { 13.9419, 4.7619 }, - { 18.7038, 0 }, - { 23.4657, -9.5238 }, - { 23.4657, -19.0476 }, - { 18.7038, -28.5714 }, -}; - -static const CoordRec char125_stroke2[] = { - { 23.4657, 38.0952 }, - { 13.9419, 28.5714 }, - { 13.9419, 19.0476 }, - { 18.7038, 9.5238 }, - { 23.4657, 4.7619 }, - { 28.2276, -4.7619 }, - { 28.2276, -14.2857 }, - { 23.4657, -23.8095 }, - { 18.7038, -28.5714 }, - { 9.18, -33.3333 }, -}; - -static const StrokeRec char125[] = { - { 10, char125_stroke0 }, - { 17, char125_stroke1 }, - { 10, char125_stroke2 }, -}; - -/* char: 126 '~' */ - -static const CoordRec char126_stroke0[] = { - { 2.92, 28.5714 }, - { 2.92, 38.0952 }, - { 7.6819, 52.381 }, - { 17.2057, 57.1429 }, - { 26.7295, 57.1429 }, - { 36.2533, 52.381 }, - { 55.301, 38.0952 }, - { 64.8248, 33.3333 }, - { 74.3486, 33.3333 }, - { 83.8724, 38.0952 }, - { 88.6343, 47.619 }, -}; - -static const CoordRec char126_stroke1[] = { - { 2.92, 38.0952 }, - { 7.6819, 47.619 }, - { 17.2057, 52.381 }, - { 26.7295, 52.381 }, - { 36.2533, 47.619 }, - { 55.301, 33.3333 }, - { 64.8248, 28.5714 }, - { 74.3486, 28.5714 }, - { 83.8724, 33.3333 }, - { 88.6343, 47.619 }, - { 88.6343, 57.1429 }, -}; - -static const StrokeRec char126[] = { - { 11, char126_stroke0 }, - { 11, char126_stroke1 }, -}; - -/* char: 127 */ - -static const CoordRec char127_stroke0[] = { - { 52.381, 100 }, - { 14.2857, -33.3333 }, -}; - -static const CoordRec char127_stroke1[] = { - { 28.5714, 66.6667 }, - { 14.2857, 61.9048 }, - { 4.7619, 52.381 }, - { 0, 38.0952 }, - { 0, 23.8095 }, - { 4.7619, 14.2857 }, - { 14.2857, 4.7619 }, - { 28.5714, 0 }, - { 38.0952, 0 }, - { 52.381, 4.7619 }, - { 61.9048, 14.2857 }, - { 66.6667, 28.5714 }, - { 66.6667, 42.8571 }, - { 61.9048, 52.381 }, - { 52.381, 61.9048 }, - { 38.0952, 66.6667 }, - { 28.5714, 66.6667 }, -}; - -static const StrokeRec char127[] = { - { 2, char127_stroke0 }, - { 17, char127_stroke1 }, -}; - -static const StrokeCharRec chars[] = { - { 0, /* char0 */ 0, 0, 0 }, - { 0, /* char1 */ 0, 0, 0 }, - { 0, /* char2 */ 0, 0, 0 }, - { 0, /* char3 */ 0, 0, 0 }, - { 0, /* char4 */ 0, 0, 0 }, - { 0, /* char5 */ 0, 0, 0 }, - { 0, /* char6 */ 0, 0, 0 }, - { 0, /* char7 */ 0, 0, 0 }, - { 0, /* char8 */ 0, 0, 0 }, - { 0, /* char9 */ 0, 0, 0 }, - { 0, /* char10 */ 0, 0, 0 }, - { 0, /* char11 */ 0, 0, 0 }, - { 0, /* char12 */ 0, 0, 0 }, - { 0, /* char13 */ 0, 0, 0 }, - { 0, /* char14 */ 0, 0, 0 }, - { 0, /* char15 */ 0, 0, 0 }, - { 0, /* char16 */ 0, 0, 0 }, - { 0, /* char17 */ 0, 0, 0 }, - { 0, /* char18 */ 0, 0, 0 }, - { 0, /* char19 */ 0, 0, 0 }, - { 0, /* char20 */ 0, 0, 0 }, - { 0, /* char21 */ 0, 0, 0 }, - { 0, /* char22 */ 0, 0, 0 }, - { 0, /* char23 */ 0, 0, 0 }, - { 0, /* char24 */ 0, 0, 0 }, - { 0, /* char25 */ 0, 0, 0 }, - { 0, /* char26 */ 0, 0, 0 }, - { 0, /* char27 */ 0, 0, 0 }, - { 0, /* char28 */ 0, 0, 0 }, - { 0, /* char29 */ 0, 0, 0 }, - { 0, /* char30 */ 0, 0, 0 }, - { 0, /* char31 */ 0, 0, 0 }, - { 0, /* char32 */ 0, 52.381, 104.762 }, - { 2, char33, 13.3819, 26.6238 }, - { 2, char34, 23.0676, 51.4352 }, - { 4, char35, 36.5333, 79.4886 }, - { 3, char36, 38.1533, 76.2067 }, - { 3, char37, 49.2171, 96.5743 }, - { 1, char38, 53.599, 101.758 }, - { 1, char39, 4.44, 13.62 }, - { 1, char40, 21.8657, 47.1733 }, - { 1, char41, 24.3276, 47.5333 }, - { 3, char42, 30.7695, 59.439 }, - { 2, char43, 48.8371, 97.2543 }, - { 1, char44, 13.5219, 26.0638 }, - { 1, char45, 50.2371, 100.754 }, - { 1, char46, 13.1019, 26.4838 }, - { 1, char47, 40.5733, 82.1067 }, - { 1, char48, 38.3133, 77.0667 }, - { 1, char49, 30.8676, 66.5295 }, - { 1, char50, 38.7533, 77.6467 }, - { 1, char51, 38.3333, 77.0467 }, - { 2, char52, 37.2133, 80.1686 }, - { 1, char53, 38.1933, 77.6867 }, - { 1, char54, 34.1514, 73.8048 }, - { 2, char55, 38.8933, 77.2267 }, - { 1, char56, 38.9333, 77.6667 }, - { 1, char57, 39.9333, 74.0648 }, - { 2, char58, 14.0819, 26.2238 }, - { 2, char59, 12.9619, 26.3038 }, - { 1, char60, 41.1552, 81.6105 }, - { 2, char61, 48.5571, 97.2543 }, - { 1, char62, 40.8752, 81.6105 }, - { 2, char63, 36.9914, 73.9029 }, - { 2, char64, 34.9314, 74.3648 }, - { 3, char65, 40.5952, 80.4905 }, - { 3, char66, 44.7533, 83.6267 }, - { 1, char67, 39.9933, 84.4886 }, - { 2, char68, 45.2933, 85.2867 }, - { 4, char69, 39.9914, 78.1848 }, - { 3, char70, 39.9914, 78.7448 }, - { 2, char71, 40.3933, 89.7686 }, - { 3, char72, 44.7533, 89.0867 }, - { 1, char73, 10.86, 21.3 }, - { 1, char74, 31.0714, 59.999 }, - { 3, char75, 44.6133, 79.3267 }, - { 2, char76, 40.2514, 71.3229 }, - { 4, char77, 48.9552, 97.2105 }, - { 3, char78, 44.4733, 88.8067 }, - { 1, char79, 44.3352, 88.8305 }, - { 2, char80, 45.4333, 85.6667 }, - { 2, char81, 43.3952, 88.0905 }, - { 3, char82, 45.0133, 82.3667 }, - { 1, char83, 41.3333, 80.8267 }, - { 2, char84, 35.6933, 71.9467 }, - { 1, char85, 44.8733, 89.4867 }, - { 2, char86, 40.4552, 81.6105 }, - { 4, char87, 49.839, 100.518 }, - { 2, char88, 35.8333, 72.3667 }, - { 2, char89, 39.6152, 79.6505 }, - { 3, char90, 35.8333, 73.7467 }, - { 4, char91, 22.0657, 46.1133 }, - { 1, char92, 39.1733, 78.2067 }, - { 4, char93, 23.4876, 46.3933 }, - { 2, char94, 44.0752, 90.2305 }, - { 1, char95, 51.281, 104.062 }, - { 2, char96, 42.5457, 83.5714 }, - { 2, char97, 35.2514, 66.6029 }, - { 2, char98, 37.3314, 70.4629 }, - { 1, char99, 34.0914, 68.9229 }, - { 2, char100, 33.2114, 70.2629 }, - { 1, char101, 34.2914, 68.5229 }, - { 2, char102, 14.9657, 38.6552 }, - { 2, char103, 33.9314, 70.9829 }, - { 2, char104, 33.4095, 71.021 }, - { 2, char105, 14.7819, 28.8638 }, - { 2, char106, 17.3876, 36.2314 }, - { 3, char107, 33.4095, 62.521 }, - { 1, char108, 10.02, 19.34 }, - { 3, char109, 61.981, 123.962 }, - { 2, char110, 32.9895, 70.881 }, - { 1, char111, 33.5514, 71.7448 }, - { 2, char112, 38.0314, 70.8029 }, - { 2, char113, 33.4114, 70.7429 }, - { 2, char114, 23.7457, 49.4952 }, - { 1, char115, 28.5095, 62.321 }, - { 2, char116, 14.8257, 39.3152 }, - { 2, char117, 33.2695, 71.161 }, - { 2, char118, 30.3714, 60.6029 }, - { 4, char119, 40.5952, 80.4905 }, - { 2, char120, 25.4695, 56.401 }, - { 2, char121, 35.1333, 66.0648 }, - { 3, char122, 28.2495, 61.821 }, - { 3, char123, 21.6657, 41.6295 }, - { 1, char124, 11.54, 23.78 }, - { 3, char125, 18.7038, 41.4695 }, - { 2, char126, 45.7771, 91.2743 }, - { 2, char127, 33.3333, 66.6667 }, -}; - -StrokeFontRec glutStrokeRoman = { "Roman", 128, chars, 119.048, -33.3333 }; - diff --git a/lib/glut-3.7.6/lib/glut/glut_shapes.c b/lib/glut-3.7.6/lib/glut/glut_shapes.c deleted file mode 100644 index 3d9dce1d972f7e466f1b8f105f34292cb0f39e9c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_shapes.c +++ /dev/null @@ -1,596 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/** -(c) Copyright 1993, Silicon Graphics, Inc. - -ALL RIGHTS RESERVED - -Permission to use, copy, modify, and distribute this software -for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that -both the copyright notice and this permission notice appear in -supporting documentation, and that the name of Silicon -Graphics, Inc. not be used in advertising or publicity -pertaining to distribution of the software without specific, -written prior permission. - -THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU -"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR -OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF -MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO -EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE -ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, -INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, -SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR -NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY -OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR -PERFORMANCE OF THIS SOFTWARE. - -US Government Users Restricted Rights - -Use, duplication, or disclosure by the Government is subject to -restrictions set forth in FAR 52.227.19(c)(2) or subparagraph -(c)(1)(ii) of the Rights in Technical Data and Computer -Software clause at DFARS 252.227-7013 and/or in similar or -successor clauses in the FAR or the DOD or NASA FAR -Supplement. Unpublished-- rights reserved under the copyright -laws of the United States. Contractor/manufacturer is Silicon -Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA -94039-7311. - -OpenGL(TM) is a trademark of Silicon Graphics, Inc. -*/ - -#include -#include "glutint.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -static GLUquadricObj *quadObj; - -#define QUAD_OBJ_INIT() { if(!quadObj) initQuadObj(); } - -static void -initQuadObj(void) -{ - quadObj = gluNewQuadric(); - if (!quadObj) - __glutFatalError("out of memory."); -} - -/* CENTRY */ -void APIENTRY -glutWireSphere(GLdouble radius, GLint slices, GLint stacks) -{ - QUAD_OBJ_INIT(); - gluQuadricDrawStyle(quadObj, GLU_LINE); - gluQuadricNormals(quadObj, GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - gluSphere(quadObj, radius, slices, stacks); -} - -void APIENTRY -glutSolidSphere(GLdouble radius, GLint slices, GLint stacks) -{ - QUAD_OBJ_INIT(); - gluQuadricDrawStyle(quadObj, GLU_FILL); - gluQuadricNormals(quadObj, GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - gluSphere(quadObj, radius, slices, stacks); -} - -void APIENTRY -glutWireCone(GLdouble base, GLdouble height, - GLint slices, GLint stacks) -{ - QUAD_OBJ_INIT(); - gluQuadricDrawStyle(quadObj, GLU_LINE); - gluQuadricNormals(quadObj, GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - gluCylinder(quadObj, base, 0.0, height, slices, stacks); -} - -void APIENTRY -glutSolidCone(GLdouble base, GLdouble height, - GLint slices, GLint stacks) -{ - QUAD_OBJ_INIT(); - gluQuadricDrawStyle(quadObj, GLU_FILL); - gluQuadricNormals(quadObj, GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - gluCylinder(quadObj, base, 0.0, height, slices, stacks); -} - -/* ENDCENTRY */ - -static void -drawBox(GLfloat size, GLenum type) -{ - static GLfloat n[6][3] = - { - {-1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {1.0, 0.0, 0.0}, - {0.0, -1.0, 0.0}, - {0.0, 0.0, 1.0}, - {0.0, 0.0, -1.0} - }; - static GLint faces[6][4] = - { - {0, 1, 2, 3}, - {3, 2, 6, 7}, - {7, 6, 5, 4}, - {4, 5, 1, 0}, - {5, 6, 2, 1}, - {7, 4, 0, 3} - }; - GLfloat v[8][3]; - GLint i; - - v[0][0] = v[1][0] = v[2][0] = v[3][0] = -size / 2; - v[4][0] = v[5][0] = v[6][0] = v[7][0] = size / 2; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = -size / 2; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = size / 2; - v[0][2] = v[3][2] = v[4][2] = v[7][2] = -size / 2; - v[1][2] = v[2][2] = v[5][2] = v[6][2] = size / 2; - - for (i = 5; i >= 0; i--) { - glBegin(type); - glNormal3fv(&n[i][0]); - glVertex3fv(&v[faces[i][0]][0]); - glVertex3fv(&v[faces[i][1]][0]); - glVertex3fv(&v[faces[i][2]][0]); - glVertex3fv(&v[faces[i][3]][0]); - glEnd(); - } -} - -/* CENTRY */ -void APIENTRY -glutWireCube(GLdouble size) -{ - drawBox(size, GL_LINE_LOOP); -} - -void APIENTRY -glutSolidCube(GLdouble size) -{ - drawBox(size, GL_QUADS); -} - -/* ENDCENTRY */ - -static void -doughnut(GLfloat r, GLfloat R, GLint nsides, GLint rings) -{ - int i, j; - GLfloat theta, phi, theta1; - GLfloat cosTheta, sinTheta; - GLfloat cosTheta1, sinTheta1; - GLfloat ringDelta, sideDelta; - - ringDelta = 2.0 * M_PI / rings; - sideDelta = 2.0 * M_PI / nsides; - - theta = 0.0; - cosTheta = 1.0; - sinTheta = 0.0; - for (i = rings - 1; i >= 0; i--) { - theta1 = theta + ringDelta; - cosTheta1 = cos(theta1); - sinTheta1 = sin(theta1); - glBegin(GL_QUAD_STRIP); - phi = 0.0; - for (j = nsides; j >= 0; j--) { - GLfloat cosPhi, sinPhi, dist; - - phi += sideDelta; - cosPhi = cos(phi); - sinPhi = sin(phi); - dist = R + r * cosPhi; - - glNormal3f(cosTheta1 * cosPhi, -sinTheta1 * cosPhi, sinPhi); - glVertex3f(cosTheta1 * dist, -sinTheta1 * dist, r * sinPhi); - glNormal3f(cosTheta * cosPhi, -sinTheta * cosPhi, sinPhi); - glVertex3f(cosTheta * dist, -sinTheta * dist, r * sinPhi); - } - glEnd(); - theta = theta1; - cosTheta = cosTheta1; - sinTheta = sinTheta1; - } -} - -/* CENTRY */ -void APIENTRY -glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, - GLint nsides, GLint rings) -{ - glPushAttrib(GL_POLYGON_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - doughnut(innerRadius, outerRadius, nsides, rings); - glPopAttrib(); -} - -void APIENTRY -glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, - GLint nsides, GLint rings) -{ - doughnut(innerRadius, outerRadius, nsides, rings); -} - -/* ENDCENTRY */ - -static GLfloat dodec[20][3]; - -static void -initDodecahedron(void) -{ - GLfloat alpha, beta; - - alpha = sqrt(2.0 / (3.0 + sqrt(5.0))); - beta = 1.0 + sqrt(6.0 / (3.0 + sqrt(5.0)) - - 2.0 + 2.0 * sqrt(2.0 / (3.0 + sqrt(5.0)))); - /* *INDENT-OFF* */ - dodec[0][0] = -alpha; dodec[0][1] = 0; dodec[0][2] = beta; - dodec[1][0] = alpha; dodec[1][1] = 0; dodec[1][2] = beta; - dodec[2][0] = -1; dodec[2][1] = -1; dodec[2][2] = -1; - dodec[3][0] = -1; dodec[3][1] = -1; dodec[3][2] = 1; - dodec[4][0] = -1; dodec[4][1] = 1; dodec[4][2] = -1; - dodec[5][0] = -1; dodec[5][1] = 1; dodec[5][2] = 1; - dodec[6][0] = 1; dodec[6][1] = -1; dodec[6][2] = -1; - dodec[7][0] = 1; dodec[7][1] = -1; dodec[7][2] = 1; - dodec[8][0] = 1; dodec[8][1] = 1; dodec[8][2] = -1; - dodec[9][0] = 1; dodec[9][1] = 1; dodec[9][2] = 1; - dodec[10][0] = beta; dodec[10][1] = alpha; dodec[10][2] = 0; - dodec[11][0] = beta; dodec[11][1] = -alpha; dodec[11][2] = 0; - dodec[12][0] = -beta; dodec[12][1] = alpha; dodec[12][2] = 0; - dodec[13][0] = -beta; dodec[13][1] = -alpha; dodec[13][2] = 0; - dodec[14][0] = -alpha; dodec[14][1] = 0; dodec[14][2] = -beta; - dodec[15][0] = alpha; dodec[15][1] = 0; dodec[15][2] = -beta; - dodec[16][0] = 0; dodec[16][1] = beta; dodec[16][2] = alpha; - dodec[17][0] = 0; dodec[17][1] = beta; dodec[17][2] = -alpha; - dodec[18][0] = 0; dodec[18][1] = -beta; dodec[18][2] = alpha; - dodec[19][0] = 0; dodec[19][1] = -beta; dodec[19][2] = -alpha; - /* *INDENT-ON* */ - -} - -#define DIFF3(_a,_b,_c) { \ - (_c)[0] = (_a)[0] - (_b)[0]; \ - (_c)[1] = (_a)[1] - (_b)[1]; \ - (_c)[2] = (_a)[2] - (_b)[2]; \ -} - -static void -crossprod(GLfloat v1[3], GLfloat v2[3], GLfloat prod[3]) -{ - GLfloat p[3]; /* in case prod == v1 or v2 */ - - p[0] = v1[1] * v2[2] - v2[1] * v1[2]; - p[1] = v1[2] * v2[0] - v2[2] * v1[0]; - p[2] = v1[0] * v2[1] - v2[0] * v1[1]; - prod[0] = p[0]; - prod[1] = p[1]; - prod[2] = p[2]; -} - -static void -normalize(GLfloat v[3]) -{ - GLfloat d; - - d = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - if (d == 0.0) { - __glutWarning("normalize: zero length vector"); - v[0] = d = 1.0; - } - d = 1 / d; - v[0] *= d; - v[1] *= d; - v[2] *= d; -} - -static void -pentagon(int a, int b, int c, int d, int e, GLenum shadeType) -{ - GLfloat n0[3], d1[3], d2[3]; - - DIFF3(dodec[a], dodec[b], d1); - DIFF3(dodec[b], dodec[c], d2); - crossprod(d1, d2, n0); - normalize(n0); - - glBegin(shadeType); - glNormal3fv(n0); - glVertex3fv(&dodec[a][0]); - glVertex3fv(&dodec[b][0]); - glVertex3fv(&dodec[c][0]); - glVertex3fv(&dodec[d][0]); - glVertex3fv(&dodec[e][0]); - glEnd(); -} - -static void -dodecahedron(GLenum type) -{ - static int inited = 0; - - if (inited == 0) { - inited = 1; - initDodecahedron(); - } - pentagon(0, 1, 9, 16, 5, type); - pentagon(1, 0, 3, 18, 7, type); - pentagon(1, 7, 11, 10, 9, type); - pentagon(11, 7, 18, 19, 6, type); - pentagon(8, 17, 16, 9, 10, type); - pentagon(2, 14, 15, 6, 19, type); - pentagon(2, 13, 12, 4, 14, type); - pentagon(2, 19, 18, 3, 13, type); - pentagon(3, 0, 5, 12, 13, type); - pentagon(6, 15, 8, 10, 11, type); - pentagon(4, 17, 8, 15, 14, type); - pentagon(4, 12, 5, 16, 17, type); -} - -/* CENTRY */ -void APIENTRY -glutWireDodecahedron(void) -{ - dodecahedron(GL_LINE_LOOP); -} - -void APIENTRY -glutSolidDodecahedron(void) -{ - dodecahedron(GL_TRIANGLE_FAN); -} - -/* ENDCENTRY */ - -static void -recorditem(GLfloat * n1, GLfloat * n2, GLfloat * n3, - GLenum shadeType) -{ - GLfloat q0[3], q1[3]; - - DIFF3(n1, n2, q0); - DIFF3(n2, n3, q1); - crossprod(q0, q1, q1); - normalize(q1); - - glBegin(shadeType); - glNormal3fv(q1); - glVertex3fv(n1); - glVertex3fv(n2); - glVertex3fv(n3); - glEnd(); -} - -static void -subdivide(GLfloat * v0, GLfloat * v1, GLfloat * v2, - GLenum shadeType) -{ - int depth; - GLfloat w0[3], w1[3], w2[3]; - GLfloat l; - int i, j, k, n; - - depth = 1; - for (i = 0; i < depth; i++) { - for (j = 0; i + j < depth; j++) { - k = depth - i - j; - for (n = 0; n < 3; n++) { - w0[n] = (i * v0[n] + j * v1[n] + k * v2[n]) / depth; - w1[n] = ((i + 1) * v0[n] + j * v1[n] + (k - 1) * v2[n]) - / depth; - w2[n] = (i * v0[n] + (j + 1) * v1[n] + (k - 1) * v2[n]) - / depth; - } - l = sqrt(w0[0] * w0[0] + w0[1] * w0[1] + w0[2] * w0[2]); - w0[0] /= l; - w0[1] /= l; - w0[2] /= l; - l = sqrt(w1[0] * w1[0] + w1[1] * w1[1] + w1[2] * w1[2]); - w1[0] /= l; - w1[1] /= l; - w1[2] /= l; - l = sqrt(w2[0] * w2[0] + w2[1] * w2[1] + w2[2] * w2[2]); - w2[0] /= l; - w2[1] /= l; - w2[2] /= l; - recorditem(w1, w0, w2, shadeType); - } - } -} - -static void -drawtriangle(int i, GLfloat data[][3], int ndx[][3], - GLenum shadeType) -{ - GLfloat *x0, *x1, *x2; - - x0 = data[ndx[i][0]]; - x1 = data[ndx[i][1]]; - x2 = data[ndx[i][2]]; - subdivide(x0, x1, x2, shadeType); -} - -/* octahedron data: The octahedron produced is centered at the - origin and has radius 1.0 */ -static GLfloat odata[6][3] = -{ - {1.0, 0.0, 0.0}, - {-1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {0.0, -1.0, 0.0}, - {0.0, 0.0, 1.0}, - {0.0, 0.0, -1.0} -}; - -static int ondex[8][3] = -{ - {0, 4, 2}, - {1, 2, 4}, - {0, 3, 4}, - {1, 4, 3}, - {0, 2, 5}, - {1, 5, 2}, - {0, 5, 3}, - {1, 3, 5} -}; - -static void -octahedron(GLenum shadeType) -{ - int i; - - for (i = 7; i >= 0; i--) { - drawtriangle(i, odata, ondex, shadeType); - } -} - -/* CENTRY */ -void APIENTRY -glutWireOctahedron(void) -{ - octahedron(GL_LINE_LOOP); -} - -void APIENTRY -glutSolidOctahedron(void) -{ - octahedron(GL_TRIANGLES); -} - -/* ENDCENTRY */ - -/* icosahedron data: These numbers are rigged to make an - icosahedron of radius 1.0 */ - -#define X .525731112119133606 -#define Z .850650808352039932 - -static GLfloat idata[12][3] = -{ - {-X, 0, Z}, - {X, 0, Z}, - {-X, 0, -Z}, - {X, 0, -Z}, - {0, Z, X}, - {0, Z, -X}, - {0, -Z, X}, - {0, -Z, -X}, - {Z, X, 0}, - {-Z, X, 0}, - {Z, -X, 0}, - {-Z, -X, 0} -}; - -static int index[20][3] = -{ - {0, 4, 1}, - {0, 9, 4}, - {9, 5, 4}, - {4, 5, 8}, - {4, 8, 1}, - {8, 10, 1}, - {8, 3, 10}, - {5, 3, 8}, - {5, 2, 3}, - {2, 7, 3}, - {7, 10, 3}, - {7, 6, 10}, - {7, 11, 6}, - {11, 0, 6}, - {0, 1, 6}, - {6, 1, 10}, - {9, 0, 11}, - {9, 11, 2}, - {9, 2, 5}, - {7, 2, 11}, -}; - -static void -icosahedron(GLenum shadeType) -{ - int i; - - for (i = 19; i >= 0; i--) { - drawtriangle(i, idata, index, shadeType); - } -} - -/* CENTRY */ -void APIENTRY -glutWireIcosahedron(void) -{ - icosahedron(GL_LINE_LOOP); -} - -void APIENTRY -glutSolidIcosahedron(void) -{ - icosahedron(GL_TRIANGLES); -} - -/* ENDCENTRY */ - -/* tetrahedron data: */ - -#define T 1.73205080756887729 - -static GLfloat tdata[4][3] = -{ - {T, T, T}, - {T, -T, -T}, - {-T, T, -T}, - {-T, -T, T} -}; - -static int tndex[4][3] = -{ - {0, 1, 3}, - {2, 1, 0}, - {3, 2, 0}, - {1, 2, 3} -}; - -static void -tetrahedron(GLenum shadeType) -{ - int i; - - for (i = 3; i >= 0; i--) - drawtriangle(i, tdata, tndex, shadeType); -} - -/* CENTRY */ -void APIENTRY -glutWireTetrahedron(void) -{ - tetrahedron(GL_LINE_LOOP); -} - -void APIENTRY -glutSolidTetrahedron(void) -{ - tetrahedron(GL_TRIANGLES); -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_space.c b/lib/glut-3.7.6/lib/glut/glut_space.c deleted file mode 100644 index 7d43a271d6b6434f7c76c337fbd08013b0712c5e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_space.c +++ /dev/null @@ -1,35 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -void APIENTRY -glutSpaceballMotionFunc(GLUTspaceMotionCB spaceMotionFunc) -{ - __glutCurrentWindow->spaceMotion = spaceMotionFunc; - __glutUpdateInputDeviceMaskFunc = __glutUpdateInputDeviceMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_DEVICE_MASK_WORK); -} - -void APIENTRY -glutSpaceballRotateFunc(GLUTspaceRotateCB spaceRotateFunc) -{ - __glutCurrentWindow->spaceRotate = spaceRotateFunc; - __glutUpdateInputDeviceMaskFunc = __glutUpdateInputDeviceMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_DEVICE_MASK_WORK); -} - -void APIENTRY -glutSpaceballButtonFunc(GLUTspaceButtonCB spaceButtonFunc) -{ - __glutCurrentWindow->spaceButton = spaceButtonFunc; - __glutUpdateInputDeviceMaskFunc = __glutUpdateInputDeviceMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_DEVICE_MASK_WORK); -} diff --git a/lib/glut-3.7.6/lib/glut/glut_stroke.c b/lib/glut-3.7.6/lib/glut/glut_stroke.c deleted file mode 100644 index 735f4f899955821896511436efb9300a040e2db0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_stroke.c +++ /dev/null @@ -1,42 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" -#include "glutstroke.h" - -void APIENTRY -glutStrokeCharacter(GLUTstrokeFont font, int c) -{ - const StrokeCharRec *ch; - const StrokeRec *stroke; - const CoordRec *coord; - StrokeFontPtr fontinfo; - int i, j; - - -#if defined(_WIN32) - fontinfo = (StrokeFontPtr) __glutFont(font); -#else - fontinfo = (StrokeFontPtr) font; -#endif - - if (c < 0 || c >= fontinfo->num_chars) - return; - ch = &(fontinfo->ch[c]); - if (ch) { - for (i = ch->num_strokes, stroke = ch->stroke; - i > 0; i--, stroke++) { - glBegin(GL_LINE_STRIP); - for (j = stroke->num_coords, coord = stroke->coord; - j > 0; j--, coord++) { - glVertex2f(coord->x, coord->y); - } - glEnd(); - } - glTranslatef(ch->right, 0.0, 0.0); - } -} diff --git a/lib/glut-3.7.6/lib/glut/glut_swap.c b/lib/glut-3.7.6/lib/glut/glut_swap.c deleted file mode 100644 index 9e0ff004f6a44619aa00f42b0eae834856b9b0c6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_swap.c +++ /dev/null @@ -1,47 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutSwapBuffers(void) -{ - GLUTwindow *window = __glutCurrentWindow; - - if (window->renderWin == window->win) { - if (__glutCurrentWindow->treatAsSingle) { - /* Pretend the double buffered window is single buffered, - so treat glutSwapBuffers as a no-op. */ - return; - } - } else { - if (__glutCurrentWindow->overlay->treatAsSingle) { - /* Pretend the double buffered overlay is single - buffered, so treat glutSwapBuffers as a no-op. */ - return; - } - } - - /* For the MESA_SWAP_HACK. */ - window->usedSwapBuffers = 1; - - SWAP_BUFFERS_LAYER(__glutCurrentWindow); - - /* I considered putting the window being swapped on the - GLUT_FINISH_WORK work list because you could call - glutSwapBuffers from an idle callback which doesn't call - __glutSetWindow which normally adds indirect rendering - windows to the GLUT_FINISH_WORK work list. Not being put - on the list could lead to the buffering up of multiple - redisplays and buffer swaps and hamper interactivity. I - consider this an application bug due to not using - glutPostRedisplay to trigger redraws. If - glutPostRedisplay were used, __glutSetWindow would be - called and a glFinish to throttle buffering would occur. */ -} -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_swidth.c b/lib/glut-3.7.6/lib/glut/glut_swidth.c deleted file mode 100644 index db2488b751c666d94240fff126d9a3c3e236f024..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_swidth.c +++ /dev/null @@ -1,58 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1995. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" -#include "glutstroke.h" - -/* CENTRY */ -int APIENTRY -glutStrokeWidth(GLUTstrokeFont font, int c) -{ - StrokeFontPtr fontinfo; - const StrokeCharRec *ch; - -#if defined(_WIN32) - fontinfo = (StrokeFontPtr) __glutFont(font); -#else - fontinfo = (StrokeFontPtr) font; -#endif - - if (c < 0 || c >= fontinfo->num_chars) - return 0; - ch = &(fontinfo->ch[c]); - if (ch) - return ch->right; - else - return 0; -} - -int APIENTRY -glutStrokeLength(GLUTstrokeFont font, const unsigned char *string) -{ - int c, length; - StrokeFontPtr fontinfo; - const StrokeCharRec *ch; - -#if defined(_WIN32) - fontinfo = (StrokeFontPtr) __glutFont(font); -#else - fontinfo = (StrokeFontPtr) font; -#endif - - length = 0; - for (; *string != '\0'; string++) { - c = *string; - if (c >= 0 && c < fontinfo->num_chars) { - ch = &(fontinfo->ch[c]); - if (ch) - length += ch->right; - } - } - return length; -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_tablet.c b/lib/glut-3.7.6/lib/glut/glut_tablet.c deleted file mode 100644 index ae94e840f7db1484054b11d317d7ddcb3a3f9d81..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_tablet.c +++ /dev/null @@ -1,33 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -#include "glutint.h" - -void APIENTRY -glutTabletMotionFunc(GLUTtabletMotionCB tabletMotionFunc) -{ - __glutCurrentWindow->tabletMotion = tabletMotionFunc; - __glutUpdateInputDeviceMaskFunc = __glutUpdateInputDeviceMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_DEVICE_MASK_WORK); - /* If deinstalling callback, invalidate tablet position. */ - if (tabletMotionFunc == NULL) { - __glutCurrentWindow->tabletPos[0] = -1; - __glutCurrentWindow->tabletPos[1] = -1; - } -} - -void APIENTRY -glutTabletButtonFunc(GLUTtabletButtonCB tabletButtonFunc) -{ - __glutCurrentWindow->tabletButton = tabletButtonFunc; - __glutUpdateInputDeviceMaskFunc = __glutUpdateInputDeviceMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_DEVICE_MASK_WORK); -} diff --git a/lib/glut-3.7.6/lib/glut/glut_teapot.c b/lib/glut-3.7.6/lib/glut/glut_teapot.c deleted file mode 100644 index f1d2a7e5867d35a0772e4aab13ffb3572018a5d6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_teapot.c +++ /dev/null @@ -1,210 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** -(c) Copyright 1993, Silicon Graphics, Inc. - -ALL RIGHTS RESERVED - -Permission to use, copy, modify, and distribute this software -for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that -both the copyright notice and this permission notice appear in -supporting documentation, and that the name of Silicon -Graphics, Inc. not be used in advertising or publicity -pertaining to distribution of the software without specific, -written prior permission. - -THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU -"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR -OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF -MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO -EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE -ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, -INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, -SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR -NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY -OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR -PERFORMANCE OF THIS SOFTWARE. - -US Government Users Restricted Rights - -Use, duplication, or disclosure by the Government is subject to -restrictions set forth in FAR 52.227.19(c)(2) or subparagraph -(c)(1)(ii) of the Rights in Technical Data and Computer -Software clause at DFARS 252.227-7013 and/or in similar or -successor clauses in the FAR or the DOD or NASA FAR -Supplement. Unpublished-- rights reserved under the copyright -laws of the United States. Contractor/manufacturer is Silicon -Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA -94039-7311. - -OpenGL(TM) is a trademark of Silicon Graphics, Inc. -*/ - -#include "glutint.h" - -/* Rim, body, lid, and bottom data must be reflected in x and - y; handle and spout data across the y axis only. */ - -static int patchdata[][16] = -{ - /* rim */ - {102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15}, - /* body */ - {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27}, - {24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40}, - /* lid */ - {96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101, - 101, 0, 1, 2, 3,}, - {0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117}, - /* bottom */ - {118, 118, 118, 118, 124, 122, 119, 121, 123, 126, - 125, 120, 40, 39, 38, 37}, - /* handle */ - {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56}, - {53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 28, 65, 66, 67}, - /* spout */ - {68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83}, - {80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95} -}; -/* *INDENT-OFF* */ - -static float cpdata[][3] = -{ - {0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0, - -0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125}, - {0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375, - 0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375, - 2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84, - 2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875}, - {1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75, - 1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35}, - {0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2, - 0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12, - 0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225}, - {1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225}, - {1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0, - -1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5, - -0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3, - 2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0, - 2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0, - 2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8}, - {-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3, - -0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3, - 1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2, - -0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0, - 1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0, - 0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66, - 0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1}, - {2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7, - -0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0, - 2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375}, - {3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475}, - {3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4}, - {2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0, - 3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8, - 3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4, - -0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0, - 2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4, - 2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3, - 2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4}, - {0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425, - -0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425, - 0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075}, - {0.84, -1.5, 0.075} -}; - -static float tex[2][2][2] = -{ - { {0, 0}, - {1, 0}}, - { {0, 1}, - {1, 1}} -}; - -/* *INDENT-ON* */ - -static void -teapot(GLint grid, GLdouble scale, GLenum type) -{ - float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3]; - long i, j, k, l; - - glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glEnable(GL_MAP2_VERTEX_3); - glEnable(GL_MAP2_TEXTURE_COORD_2); - glPushMatrix(); - glRotatef(270.0, 1.0, 0.0, 0.0); - glScalef(0.5 * scale, 0.5 * scale, 0.5 * scale); - glTranslatef(0.0, 0.0, -1.5); - for (i = 0; i < 10; i++) { - for (j = 0; j < 4; j++) { - for (k = 0; k < 4; k++) { - for (l = 0; l < 3; l++) { - p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; - q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l]; - if (l == 1) - q[j][k][l] *= -1.0; - if (i < 6) { - r[j][k][l] = - cpdata[patchdata[i][j * 4 + (3 - k)]][l]; - if (l == 0) - r[j][k][l] *= -1.0; - s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; - if (l == 0) - s[j][k][l] *= -1.0; - if (l == 1) - s[j][k][l] *= -1.0; - } - } - } - } - glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2, - &tex[0][0][0]); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &p[0][0][0]); - glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0); - glEvalMesh2(type, 0, grid, 0, grid); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &q[0][0][0]); - glEvalMesh2(type, 0, grid, 0, grid); - if (i < 6) { - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &r[0][0][0]); - glEvalMesh2(type, 0, grid, 0, grid); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &s[0][0][0]); - glEvalMesh2(type, 0, grid, 0, grid); - } - } - glPopMatrix(); - glPopAttrib(); -} - -/* CENTRY */ -void APIENTRY -glutSolidTeapot(GLdouble scale) -{ - teapot(7, scale, GL_FILL); -} - -void APIENTRY -glutWireTeapot(GLdouble scale) -{ - teapot(10, scale, GL_LINE); -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_tr10.c b/lib/glut-3.7.6/lib/glut/glut_tr10.c deleted file mode 100644 index ec40e697655f84fdcfdff1fa7b87b82f0054b383..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_tr10.c +++ /dev/null @@ -1,1777 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#define glutBitmapTimesRoman10 XXX -#include "glutbitmap.h" -#undef glutBitmapTimesRoman10 - -/* char: 0xff */ - -static const GLubyte ch255data[] = { -0x80,0xc0,0x40,0x60,0xa0,0x90,0xb8,0x0,0xa0, -}; - -static const BitmapCharRec ch255 = {5,9,0,2,5,ch255data}; - -/* char: 0xfe */ - -static const GLubyte ch254data[] = { -0xc0,0x80,0xe0,0x90,0x90,0x90,0xe0,0x80,0x80, -}; - -static const BitmapCharRec ch254 = {4,9,0,2,5,ch254data}; - -/* char: 0xfd */ - -static const GLubyte ch253data[] = { -0x80,0xc0,0x40,0x60,0xa0,0x90,0xb8,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch253 = {5,10,0,2,5,ch253data}; - -/* char: 0xfc */ - -static const GLubyte ch252data[] = { -0x68,0x90,0x90,0x90,0x90,0x0,0x50, -}; - -static const BitmapCharRec ch252 = {5,7,0,0,5,ch252data}; - -/* char: 0xfb */ - -static const GLubyte ch251data[] = { -0x68,0x90,0x90,0x90,0x90,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch251 = {5,8,0,0,5,ch251data}; - -/* char: 0xfa */ - -static const GLubyte ch250data[] = { -0x68,0x90,0x90,0x90,0x90,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch250 = {5,8,0,0,5,ch250data}; - -/* char: 0xf9 */ - -static const GLubyte ch249data[] = { -0x68,0x90,0x90,0x90,0x90,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch249 = {5,8,0,0,5,ch249data}; - -/* char: 0xf8 */ - -static const GLubyte ch248data[] = { -0x80,0x70,0x48,0x48,0x48,0x38,0x4, -}; - -static const BitmapCharRec ch248 = {6,7,1,1,5,ch248data}; - -/* char: 0xf7 */ - -static const GLubyte ch247data[] = { -0x20,0x0,0xf8,0x0,0x20, -}; - -static const BitmapCharRec ch247 = {5,5,0,0,6,ch247data}; - -/* char: 0xf6 */ - -static const GLubyte ch246data[] = { -0x60,0x90,0x90,0x90,0x60,0x0,0xa0, -}; - -static const BitmapCharRec ch246 = {4,7,0,0,5,ch246data}; - -/* char: 0xf5 */ - -static const GLubyte ch245data[] = { -0x60,0x90,0x90,0x90,0x60,0x0,0xa0,0x50, -}; - -static const BitmapCharRec ch245 = {4,8,0,0,5,ch245data}; - -/* char: 0xf4 */ - -static const GLubyte ch244data[] = { -0x60,0x90,0x90,0x90,0x60,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch244 = {4,8,0,0,5,ch244data}; - -/* char: 0xf3 */ - -static const GLubyte ch243data[] = { -0x60,0x90,0x90,0x90,0x60,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch243 = {4,8,0,0,5,ch243data}; - -/* char: 0xf2 */ - -static const GLubyte ch242data[] = { -0x60,0x90,0x90,0x90,0x60,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch242 = {4,8,0,0,5,ch242data}; - -/* char: 0xf1 */ - -static const GLubyte ch241data[] = { -0xd8,0x90,0x90,0x90,0xe0,0x0,0xa0,0x50, -}; - -static const BitmapCharRec ch241 = {5,8,0,0,5,ch241data}; - -/* char: 0xf0 */ - -static const GLubyte ch240data[] = { -0x60,0x90,0x90,0x90,0x70,0xa0,0x70,0x40, -}; - -static const BitmapCharRec ch240 = {4,8,0,0,5,ch240data}; - -/* char: 0xef */ - -static const GLubyte ch239data[] = { -0xe0,0x40,0x40,0x40,0xc0,0x0,0xa0, -}; - -static const BitmapCharRec ch239 = {3,7,0,0,4,ch239data}; - -/* char: 0xee */ - -static const GLubyte ch238data[] = { -0xe0,0x40,0x40,0x40,0xc0,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch238 = {3,8,0,0,4,ch238data}; - -/* char: 0xed */ - -static const GLubyte ch237data[] = { -0xe0,0x40,0x40,0x40,0xc0,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch237 = {3,8,0,0,4,ch237data}; - -/* char: 0xec */ - -static const GLubyte ch236data[] = { -0xe0,0x40,0x40,0x40,0xc0,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch236 = {3,8,0,0,4,ch236data}; - -/* char: 0xeb */ - -static const GLubyte ch235data[] = { -0x60,0x80,0xc0,0xa0,0x60,0x0,0xa0, -}; - -static const BitmapCharRec ch235 = {3,7,0,0,4,ch235data}; - -/* char: 0xea */ - -static const GLubyte ch234data[] = { -0x60,0x80,0xc0,0xa0,0x60,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch234 = {3,8,0,0,4,ch234data}; - -/* char: 0xe9 */ - -static const GLubyte ch233data[] = { -0x60,0x80,0xc0,0xa0,0x60,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch233 = {3,8,0,0,4,ch233data}; - -/* char: 0xe8 */ - -static const GLubyte ch232data[] = { -0x60,0x80,0xc0,0xa0,0x60,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch232 = {3,8,0,0,4,ch232data}; - -/* char: 0xe7 */ - -static const GLubyte ch231data[] = { -0xc0,0x20,0x40,0x60,0x80,0x80,0x80,0x60, -}; - -static const BitmapCharRec ch231 = {3,8,0,3,4,ch231data}; - -/* char: 0xe6 */ - -static const GLubyte ch230data[] = { -0xd8,0xa0,0x70,0x28,0xd8, -}; - -static const BitmapCharRec ch230 = {5,5,0,0,6,ch230data}; - -/* char: 0xe5 */ - -static const GLubyte ch229data[] = { -0xe0,0xa0,0x60,0x20,0xc0,0x40,0xa0,0x40, -}; - -static const BitmapCharRec ch229 = {3,8,0,0,4,ch229data}; - -/* char: 0xe4 */ - -static const GLubyte ch228data[] = { -0xe0,0xa0,0x60,0x20,0xc0,0x0,0xa0, -}; - -static const BitmapCharRec ch228 = {3,7,0,0,4,ch228data}; - -/* char: 0xe3 */ - -static const GLubyte ch227data[] = { -0xe0,0xa0,0x60,0x20,0xc0,0x0,0xa0,0x50, -}; - -static const BitmapCharRec ch227 = {4,8,0,0,4,ch227data}; - -/* char: 0xe2 */ - -static const GLubyte ch226data[] = { -0xe0,0xa0,0x60,0x20,0xc0,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch226 = {3,8,0,0,4,ch226data}; - -/* char: 0xe1 */ - -static const GLubyte ch225data[] = { -0xe0,0xa0,0x60,0x20,0xc0,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch225 = {3,8,0,0,4,ch225data}; - -/* char: 0xe0 */ - -static const GLubyte ch224data[] = { -0xe0,0xa0,0x60,0x20,0xc0,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch224 = {3,8,0,0,4,ch224data}; - -/* char: 0xdf */ - -static const GLubyte ch223data[] = { -0xe0,0x50,0x50,0x60,0x50,0x50,0x20, -}; - -static const BitmapCharRec ch223 = {4,7,0,0,5,ch223data}; - -/* char: 0xde */ - -static const GLubyte ch222data[] = { -0xe0,0x40,0x70,0x48,0x70,0x40,0xe0, -}; - -static const BitmapCharRec ch222 = {5,7,0,0,6,ch222data}; - -/* char: 0xdd */ - -static const GLubyte ch221data[] = { -0x38,0x10,0x10,0x28,0x28,0x44,0xee,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch221 = {7,10,0,0,8,ch221data}; - -/* char: 0xdc */ - -static const GLubyte ch220data[] = { -0x38,0x6c,0x44,0x44,0x44,0x44,0xee,0x0,0x28, -}; - -static const BitmapCharRec ch220 = {7,9,0,0,8,ch220data}; - -/* char: 0xdb */ - -static const GLubyte ch219data[] = { -0x38,0x6c,0x44,0x44,0x44,0x44,0xee,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch219 = {7,10,0,0,8,ch219data}; - -/* char: 0xda */ - -static const GLubyte ch218data[] = { -0x38,0x6c,0x44,0x44,0x44,0x44,0xee,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch218 = {7,10,0,0,8,ch218data}; - -/* char: 0xd9 */ - -static const GLubyte ch217data[] = { -0x38,0x6c,0x44,0x44,0x44,0x44,0xee,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch217 = {7,10,0,0,8,ch217data}; - -/* char: 0xd8 */ - -static const GLubyte ch216data[] = { -0x80,0x7c,0x66,0x52,0x52,0x4a,0x66,0x3e,0x1, -}; - -static const BitmapCharRec ch216 = {8,9,0,1,8,ch216data}; - -/* char: 0xd7 */ - -static const GLubyte ch215data[] = { -0x88,0x50,0x20,0x50,0x88, -}; - -static const BitmapCharRec ch215 = {5,5,0,0,6,ch215data}; - -/* char: 0xd6 */ - -static const GLubyte ch214data[] = { -0x78,0xcc,0x84,0x84,0x84,0xcc,0x78,0x0,0x50, -}; - -static const BitmapCharRec ch214 = {6,9,0,0,7,ch214data}; - -/* char: 0xd5 */ - -static const GLubyte ch213data[] = { -0x78,0xcc,0x84,0x84,0x84,0xcc,0x78,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch213 = {6,10,0,0,7,ch213data}; - -/* char: 0xd4 */ - -static const GLubyte ch212data[] = { -0x78,0xcc,0x84,0x84,0x84,0xcc,0x78,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch212 = {6,10,0,0,7,ch212data}; - -/* char: 0xd3 */ - -static const GLubyte ch211data[] = { -0x78,0xcc,0x84,0x84,0x84,0xcc,0x78,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch211 = {6,10,0,0,7,ch211data}; - -/* char: 0xd2 */ - -static const GLubyte ch210data[] = { -0x78,0xcc,0x84,0x84,0x84,0xcc,0x78,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch210 = {6,10,0,0,7,ch210data}; - -/* char: 0xd1 */ - -static const GLubyte ch209data[] = { -0xe4,0x4c,0x4c,0x54,0x54,0x64,0xee,0x0,0x50,0x28, -}; - -static const BitmapCharRec ch209 = {7,10,0,0,8,ch209data}; - -/* char: 0xd0 */ - -static const GLubyte ch208data[] = { -0xf8,0x4c,0x44,0xe4,0x44,0x4c,0xf8, -}; - -static const BitmapCharRec ch208 = {6,7,0,0,7,ch208data}; - -/* char: 0xcf */ - -static const GLubyte ch207data[] = { -0xe0,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,0xa0, -}; - -static const BitmapCharRec ch207 = {3,9,0,0,4,ch207data}; - -/* char: 0xce */ - -static const GLubyte ch206data[] = { -0xe0,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,0xa0,0x40, -}; - -static const BitmapCharRec ch206 = {3,10,0,0,4,ch206data}; - -/* char: 0xcd */ - -static const GLubyte ch205data[] = { -0xe0,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,0x40,0x20, -}; - -static const BitmapCharRec ch205 = {3,10,0,0,4,ch205data}; - -/* char: 0xcc */ - -static const GLubyte ch204data[] = { -0xe0,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,0x40,0x80, -}; - -static const BitmapCharRec ch204 = {3,10,0,0,4,ch204data}; - -/* char: 0xcb */ - -static const GLubyte ch203data[] = { -0xf8,0x48,0x40,0x70,0x40,0x48,0xf8,0x0,0x50, -}; - -static const BitmapCharRec ch203 = {5,9,0,0,6,ch203data}; - -/* char: 0xca */ - -static const GLubyte ch202data[] = { -0xf8,0x48,0x40,0x70,0x40,0x48,0xf8,0x0,0x50,0x20, -}; - -static const BitmapCharRec ch202 = {5,10,0,0,6,ch202data}; - -/* char: 0xc9 */ - -static const GLubyte ch201data[] = { -0xf8,0x48,0x40,0x70,0x40,0x48,0xf8,0x0,0x20,0x10, -}; - -static const BitmapCharRec ch201 = {5,10,0,0,6,ch201data}; - -/* char: 0xc8 */ - -static const GLubyte ch200data[] = { -0xf8,0x48,0x40,0x70,0x40,0x48,0xf8,0x0,0x20,0x40, -}; - -static const BitmapCharRec ch200 = {5,10,0,0,6,ch200data}; - -/* char: 0xc7 */ - -static const GLubyte ch199data[] = { -0x60,0x10,0x20,0x78,0xc4,0x80,0x80,0x80,0xc4,0x7c, -}; - -static const BitmapCharRec ch199 = {6,10,0,3,7,ch199data}; - -/* char: 0xc6 */ - -static const GLubyte ch198data[] = { -0xef,0x49,0x78,0x2e,0x28,0x39,0x1f, -}; - -static const BitmapCharRec ch198 = {8,7,0,0,9,ch198data}; - -/* char: 0xc5 */ - -static const GLubyte ch197data[] = { -0xee,0x44,0x7c,0x28,0x28,0x38,0x10,0x10,0x28,0x10, -}; - -static const BitmapCharRec ch197 = {7,10,0,0,8,ch197data}; - -/* char: 0xc4 */ - -static const GLubyte ch196data[] = { -0xee,0x44,0x7c,0x28,0x28,0x38,0x10,0x0,0x28, -}; - -static const BitmapCharRec ch196 = {7,9,0,0,8,ch196data}; - -/* char: 0xc3 */ - -static const GLubyte ch195data[] = { -0xee,0x44,0x7c,0x28,0x28,0x38,0x10,0x0,0x28,0x14, -}; - -static const BitmapCharRec ch195 = {7,10,0,0,8,ch195data}; - -/* char: 0xc2 */ - -static const GLubyte ch194data[] = { -0xee,0x44,0x7c,0x28,0x28,0x38,0x10,0x0,0x28,0x10, -}; - -static const BitmapCharRec ch194 = {7,10,0,0,8,ch194data}; - -/* char: 0xc1 */ - -static const GLubyte ch193data[] = { -0xee,0x44,0x7c,0x28,0x28,0x38,0x10,0x0,0x10,0x8, -}; - -static const BitmapCharRec ch193 = {7,10,0,0,8,ch193data}; - -/* char: 0xc0 */ - -static const GLubyte ch192data[] = { -0xee,0x44,0x7c,0x28,0x28,0x38,0x10,0x0,0x10,0x20, -}; - -static const BitmapCharRec ch192 = {7,10,0,0,8,ch192data}; - -/* char: 0xbf */ - -static const GLubyte ch191data[] = { -0xe0,0xa0,0x80,0x40,0x40,0x0,0x40, -}; - -static const BitmapCharRec ch191 = {3,7,0,2,4,ch191data}; - -/* char: 0xbe */ - -static const GLubyte ch190data[] = { -0x44,0x3e,0x2c,0xd4,0x28,0x48,0xe4, -}; - -static const BitmapCharRec ch190 = {7,7,0,0,8,ch190data}; - -/* char: 0xbd */ - -static const GLubyte ch189data[] = { -0x4e,0x24,0x2a,0xf6,0x48,0xc8,0x44, -}; - -static const BitmapCharRec ch189 = {7,7,0,0,8,ch189data}; - -/* char: 0xbc */ - -static const GLubyte ch188data[] = { -0x44,0x3e,0x2c,0xf4,0x48,0xc8,0x44, -}; - -static const BitmapCharRec ch188 = {7,7,0,0,8,ch188data}; - -/* char: 0xbb */ - -static const GLubyte ch187data[] = { -0xa0,0x50,0x50,0xa0, -}; - -static const BitmapCharRec ch187 = {4,4,0,-1,5,ch187data}; - -/* char: 0xba */ - -static const GLubyte ch186data[] = { -0xe0,0x0,0x40,0xa0,0x40, -}; - -static const BitmapCharRec ch186 = {3,5,0,-2,4,ch186data}; - -/* char: 0xb9 */ - -static const GLubyte ch185data[] = { -0xe0,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch185 = {3,4,0,-3,3,ch185data}; - -/* char: 0xb8 */ - -static const GLubyte ch184data[] = { -0xc0,0x20,0x40, -}; - -static const BitmapCharRec ch184 = {3,3,0,3,4,ch184data}; - -/* char: 0xb7 */ - -static const GLubyte ch183data[] = { -0x80, -}; - -static const BitmapCharRec ch183 = {1,1,0,-2,2,ch183data}; - -/* char: 0xb6 */ - -static const GLubyte ch182data[] = { -0x28,0x28,0x28,0x28,0x68,0xe8,0xe8,0xe8,0x7c, -}; - -static const BitmapCharRec ch182 = {6,9,0,2,6,ch182data}; - -/* char: 0xb5 */ - -static const GLubyte ch181data[] = { -0x80,0x80,0xe8,0x90,0x90,0x90,0x90, -}; - -static const BitmapCharRec ch181 = {5,7,0,2,5,ch181data}; - -/* char: 0xb4 */ - -static const GLubyte ch180data[] = { -0x80,0x40, -}; - -static const BitmapCharRec ch180 = {2,2,0,-5,3,ch180data}; - -/* char: 0xb3 */ - -static const GLubyte ch179data[] = { -0xc0,0x20,0x40,0xe0, -}; - -static const BitmapCharRec ch179 = {3,4,0,-3,3,ch179data}; - -/* char: 0xb2 */ - -static const GLubyte ch178data[] = { -0xe0,0x40,0xa0,0x60, -}; - -static const BitmapCharRec ch178 = {3,4,0,-3,3,ch178data}; - -/* char: 0xb1 */ - -static const GLubyte ch177data[] = { -0xf8,0x0,0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch177 = {5,7,0,0,6,ch177data}; - -/* char: 0xb0 */ - -static const GLubyte ch176data[] = { -0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch176 = {4,4,0,-3,4,ch176data}; - -/* char: 0xaf */ - -static const GLubyte ch175data[] = { -0xe0, -}; - -static const BitmapCharRec ch175 = {3,1,0,-6,4,ch175data}; - -/* char: 0xae */ - -static const GLubyte ch174data[] = { -0x38,0x44,0xaa,0xb2,0xba,0x44,0x38, -}; - -static const BitmapCharRec ch174 = {7,7,-1,0,9,ch174data}; - -/* char: 0xad */ - -static const GLubyte ch173data[] = { -0xe0, -}; - -static const BitmapCharRec ch173 = {3,1,0,-2,4,ch173data}; - -/* char: 0xac */ - -static const GLubyte ch172data[] = { -0x8,0x8,0xf8, -}; - -static const BitmapCharRec ch172 = {5,3,-1,-1,7,ch172data}; - -/* char: 0xab */ - -static const GLubyte ch171data[] = { -0x50,0xa0,0xa0,0x50, -}; - -static const BitmapCharRec ch171 = {4,4,0,-1,5,ch171data}; - -/* char: 0xaa */ - -static const GLubyte ch170data[] = { -0xe0,0x0,0xa0,0x20,0xc0, -}; - -static const BitmapCharRec ch170 = {3,5,0,-2,4,ch170data}; - -/* char: 0xa9 */ - -static const GLubyte ch169data[] = { -0x38,0x44,0x9a,0xa2,0x9a,0x44,0x38, -}; - -static const BitmapCharRec ch169 = {7,7,-1,0,9,ch169data}; - -/* char: 0xa8 */ - -static const GLubyte ch168data[] = { -0xa0, -}; - -static const BitmapCharRec ch168 = {3,1,-1,-6,5,ch168data}; - -/* char: 0xa7 */ - -static const GLubyte ch167data[] = { -0xe0,0x90,0x20,0x50,0x90,0xa0,0x40,0x90,0x70, -}; - -static const BitmapCharRec ch167 = {4,9,0,1,5,ch167data}; - -/* char: 0xa6 */ - -static const GLubyte ch166data[] = { -0x80,0x80,0x80,0x0,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch166 = {1,7,0,0,2,ch166data}; - -/* char: 0xa5 */ - -static const GLubyte ch165data[] = { -0x70,0x20,0xf8,0x20,0xd8,0x50,0x88, -}; - -static const BitmapCharRec ch165 = {5,7,0,0,5,ch165data}; - -/* char: 0xa4 */ - -static const GLubyte ch164data[] = { -0x88,0x70,0x50,0x50,0x70,0x88, -}; - -static const BitmapCharRec ch164 = {5,6,0,-1,5,ch164data}; - -/* char: 0xa3 */ - -static const GLubyte ch163data[] = { -0xf0,0xc8,0x40,0xe0,0x40,0x50,0x30, -}; - -static const BitmapCharRec ch163 = {5,7,0,0,5,ch163data}; - -/* char: 0xa2 */ - -static const GLubyte ch162data[] = { -0x80,0xe0,0x90,0x80,0x90,0x70,0x10, -}; - -static const BitmapCharRec ch162 = {4,7,0,1,5,ch162data}; - -/* char: 0xa1 */ - -static const GLubyte ch161data[] = { -0x80,0x80,0x80,0x80,0x80,0x0,0x80, -}; - -static const BitmapCharRec ch161 = {1,7,-1,2,3,ch161data}; - -/* char: 0xa0 */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch160data[] = { 0x0 }; -static const BitmapCharRec ch160 = {1,1,0,0,2,ch160data}; -#else -static const BitmapCharRec ch160 = {0,0,0,0,2,0}; -#endif - -/* char: 0x7e '~' */ - -static const GLubyte ch126data[] = { -0x98,0x64, -}; - -static const BitmapCharRec ch126 = {6,2,0,-2,7,ch126data}; - -/* char: 0x7d '}' */ - -static const GLubyte ch125data[] = { -0x80,0x40,0x40,0x40,0x20,0x40,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch125 = {3,9,0,2,4,ch125data}; - -/* char: 0x7c '|' */ - -static const GLubyte ch124data[] = { -0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch124 = {1,9,0,2,2,ch124data}; - -/* char: 0x7b '{' */ - -static const GLubyte ch123data[] = { -0x20,0x40,0x40,0x40,0x80,0x40,0x40,0x40,0x20, -}; - -static const BitmapCharRec ch123 = {3,9,0,2,4,ch123data}; - -/* char: 0x7a 'z' */ - -static const GLubyte ch122data[] = { -0xf0,0x90,0x40,0x20,0xf0, -}; - -static const BitmapCharRec ch122 = {4,5,0,0,5,ch122data}; - -/* char: 0x79 'y' */ - -static const GLubyte ch121data[] = { -0x40,0x40,0x20,0x30,0x50,0x48,0xdc, -}; - -static const BitmapCharRec ch121 = {6,7,1,2,5,ch121data}; - -/* char: 0x78 'x' */ - -static const GLubyte ch120data[] = { -0xd8,0x50,0x20,0x50,0xd8, -}; - -static const BitmapCharRec ch120 = {5,5,0,0,6,ch120data}; - -/* char: 0x77 'w' */ - -static const GLubyte ch119data[] = { -0x28,0x6c,0x54,0x92,0xdb, -}; - -static const BitmapCharRec ch119 = {8,5,0,0,8,ch119data}; - -/* char: 0x76 'v' */ - -static const GLubyte ch118data[] = { -0x20,0x60,0x50,0x90,0xd8, -}; - -static const BitmapCharRec ch118 = {5,5,0,0,5,ch118data}; - -/* char: 0x75 'u' */ - -static const GLubyte ch117data[] = { -0x68,0x90,0x90,0x90,0x90, -}; - -static const BitmapCharRec ch117 = {5,5,0,0,5,ch117data}; - -/* char: 0x74 't' */ - -static const GLubyte ch116data[] = { -0x30,0x40,0x40,0x40,0xe0,0x40, -}; - -static const BitmapCharRec ch116 = {4,6,0,0,4,ch116data}; - -/* char: 0x73 's' */ - -static const GLubyte ch115data[] = { -0xe0,0x20,0x60,0x80,0xe0, -}; - -static const BitmapCharRec ch115 = {3,5,0,0,4,ch115data}; - -/* char: 0x72 'r' */ - -static const GLubyte ch114data[] = { -0xe0,0x40,0x40,0x60,0xa0, -}; - -static const BitmapCharRec ch114 = {3,5,0,0,4,ch114data}; - -/* char: 0x71 'q' */ - -static const GLubyte ch113data[] = { -0x38,0x10,0x70,0x90,0x90,0x90,0x70, -}; - -static const BitmapCharRec ch113 = {5,7,0,2,5,ch113data}; - -/* char: 0x70 'p' */ - -static const GLubyte ch112data[] = { -0xc0,0x80,0xe0,0x90,0x90,0x90,0xe0, -}; - -static const BitmapCharRec ch112 = {4,7,0,2,5,ch112data}; - -/* char: 0x6f 'o' */ - -static const GLubyte ch111data[] = { -0x60,0x90,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch111 = {4,5,0,0,5,ch111data}; - -/* char: 0x6e 'n' */ - -static const GLubyte ch110data[] = { -0xd8,0x90,0x90,0x90,0xe0, -}; - -static const BitmapCharRec ch110 = {5,5,0,0,5,ch110data}; - -/* char: 0x6d 'm' */ - -static const GLubyte ch109data[] = { -0xdb,0x92,0x92,0x92,0xec, -}; - -static const BitmapCharRec ch109 = {8,5,0,0,8,ch109data}; - -/* char: 0x6c 'l' */ - -static const GLubyte ch108data[] = { -0xe0,0x40,0x40,0x40,0x40,0x40,0xc0, -}; - -static const BitmapCharRec ch108 = {3,7,0,0,4,ch108data}; - -/* char: 0x6b 'k' */ - -static const GLubyte ch107data[] = { -0x98,0x90,0xe0,0xa0,0x90,0x80,0x80, -}; - -static const BitmapCharRec ch107 = {5,7,0,0,5,ch107data}; - -/* char: 0x6a 'j' */ - -static const GLubyte ch106data[] = { -0x80,0x40,0x40,0x40,0x40,0x40,0xc0,0x0,0x40, -}; - -static const BitmapCharRec ch106 = {2,9,0,2,3,ch106data}; - -/* char: 0x69 'i' */ - -static const GLubyte ch105data[] = { -0x40,0x40,0x40,0x40,0xc0,0x0,0x40, -}; - -static const BitmapCharRec ch105 = {2,7,0,0,3,ch105data}; - -/* char: 0x68 'h' */ - -static const GLubyte ch104data[] = { -0xd8,0x90,0x90,0x90,0xe0,0x80,0x80, -}; - -static const BitmapCharRec ch104 = {5,7,0,0,5,ch104data}; - -/* char: 0x67 'g' */ - -static const GLubyte ch103data[] = { -0xe0,0x90,0x60,0x40,0xa0,0xa0,0x70, -}; - -static const BitmapCharRec ch103 = {4,7,0,2,5,ch103data}; - -/* char: 0x66 'f' */ - -static const GLubyte ch102data[] = { -0xe0,0x40,0x40,0x40,0xe0,0x40,0x30, -}; - -static const BitmapCharRec ch102 = {4,7,0,0,4,ch102data}; - -/* char: 0x65 'e' */ - -static const GLubyte ch101data[] = { -0x60,0x80,0xc0,0xa0,0x60, -}; - -static const BitmapCharRec ch101 = {3,5,0,0,4,ch101data}; - -/* char: 0x64 'd' */ - -static const GLubyte ch100data[] = { -0x68,0x90,0x90,0x90,0x70,0x10,0x30, -}; - -static const BitmapCharRec ch100 = {5,7,0,0,5,ch100data}; - -/* char: 0x63 'c' */ - -static const GLubyte ch99data[] = { -0x60,0x80,0x80,0x80,0x60, -}; - -static const BitmapCharRec ch99 = {3,5,0,0,4,ch99data}; - -/* char: 0x62 'b' */ - -static const GLubyte ch98data[] = { -0xe0,0x90,0x90,0x90,0xe0,0x80,0x80, -}; - -static const BitmapCharRec ch98 = {4,7,0,0,5,ch98data}; - -/* char: 0x61 'a' */ - -static const GLubyte ch97data[] = { -0xe0,0xa0,0x60,0x20,0xc0, -}; - -static const BitmapCharRec ch97 = {3,5,0,0,4,ch97data}; - -/* char: 0x60 '`' */ - -static const GLubyte ch96data[] = { -0xc0,0x80, -}; - -static const BitmapCharRec ch96 = {2,2,0,-5,3,ch96data}; - -/* char: 0x5f '_' */ - -static const GLubyte ch95data[] = { -0xf8, -}; - -static const BitmapCharRec ch95 = {5,1,0,3,5,ch95data}; - -/* char: 0x5e '^' */ - -static const GLubyte ch94data[] = { -0xa0,0xa0,0x40, -}; - -static const BitmapCharRec ch94 = {3,3,-1,-4,5,ch94data}; - -/* char: 0x5d ']' */ - -static const GLubyte ch93data[] = { -0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0, -}; - -static const BitmapCharRec ch93 = {2,9,0,2,3,ch93data}; - -/* char: 0x5c '\' */ - -static const GLubyte ch92data[] = { -0x20,0x20,0x40,0x40,0x40,0x80,0x80, -}; - -static const BitmapCharRec ch92 = {3,7,0,0,3,ch92data}; - -/* char: 0x5b '[' */ - -static const GLubyte ch91data[] = { -0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xc0, -}; - -static const BitmapCharRec ch91 = {2,9,0,2,3,ch91data}; - -/* char: 0x5a 'Z' */ - -static const GLubyte ch90data[] = { -0xf8,0x88,0x40,0x20,0x10,0x88,0xf8, -}; - -static const BitmapCharRec ch90 = {5,7,0,0,6,ch90data}; - -/* char: 0x59 'Y' */ - -static const GLubyte ch89data[] = { -0x38,0x10,0x10,0x28,0x28,0x44,0xee, -}; - -static const BitmapCharRec ch89 = {7,7,0,0,8,ch89data}; - -/* char: 0x58 'X' */ - -static const GLubyte ch88data[] = { -0xee,0x44,0x28,0x10,0x28,0x44,0xee, -}; - -static const BitmapCharRec ch88 = {7,7,0,0,8,ch88data}; - -/* char: 0x57 'W' */ - -static const GLubyte ch87data[] = { -0x22,0x0,0x22,0x0,0x55,0x0,0x55,0x0,0xc9,0x80,0x88,0x80,0xdd,0xc0, -}; - -static const BitmapCharRec ch87 = {10,7,0,0,10,ch87data}; - -/* char: 0x56 'V' */ - -static const GLubyte ch86data[] = { -0x10,0x10,0x28,0x28,0x6c,0x44,0xee, -}; - -static const BitmapCharRec ch86 = {7,7,0,0,8,ch86data}; - -/* char: 0x55 'U' */ - -static const GLubyte ch85data[] = { -0x38,0x6c,0x44,0x44,0x44,0x44,0xee, -}; - -static const BitmapCharRec ch85 = {7,7,0,0,8,ch85data}; - -/* char: 0x54 'T' */ - -static const GLubyte ch84data[] = { -0x70,0x20,0x20,0x20,0x20,0xa8,0xf8, -}; - -static const BitmapCharRec ch84 = {5,7,0,0,6,ch84data}; - -/* char: 0x53 'S' */ - -static const GLubyte ch83data[] = { -0xe0,0x90,0x10,0x60,0xc0,0x90,0x70, -}; - -static const BitmapCharRec ch83 = {4,7,0,0,5,ch83data}; - -/* char: 0x52 'R' */ - -static const GLubyte ch82data[] = { -0xec,0x48,0x50,0x70,0x48,0x48,0xf0, -}; - -static const BitmapCharRec ch82 = {6,7,0,0,7,ch82data}; - -/* char: 0x51 'Q' */ - -static const GLubyte ch81data[] = { -0xc,0x18,0x70,0xcc,0x84,0x84,0x84,0xcc,0x78, -}; - -static const BitmapCharRec ch81 = {6,9,0,2,7,ch81data}; - -/* char: 0x50 'P' */ - -static const GLubyte ch80data[] = { -0xe0,0x40,0x40,0x70,0x48,0x48,0xf0, -}; - -static const BitmapCharRec ch80 = {5,7,0,0,6,ch80data}; - -/* char: 0x4f 'O' */ - -static const GLubyte ch79data[] = { -0x78,0xcc,0x84,0x84,0x84,0xcc,0x78, -}; - -static const BitmapCharRec ch79 = {6,7,0,0,7,ch79data}; - -/* char: 0x4e 'N' */ - -static const GLubyte ch78data[] = { -0xe4,0x4c,0x4c,0x54,0x54,0x64,0xee, -}; - -static const BitmapCharRec ch78 = {7,7,0,0,8,ch78data}; - -/* char: 0x4d 'M' */ - -static const GLubyte ch77data[] = { -0xeb,0x80,0x49,0x0,0x55,0x0,0x55,0x0,0x63,0x0,0x63,0x0,0xe3,0x80, -}; - -static const BitmapCharRec ch77 = {9,7,0,0,10,ch77data}; - -/* char: 0x4c 'L' */ - -static const GLubyte ch76data[] = { -0xf8,0x48,0x40,0x40,0x40,0x40,0xe0, -}; - -static const BitmapCharRec ch76 = {5,7,0,0,6,ch76data}; - -/* char: 0x4b 'K' */ - -static const GLubyte ch75data[] = { -0xec,0x48,0x50,0x60,0x50,0x48,0xec, -}; - -static const BitmapCharRec ch75 = {6,7,0,0,7,ch75data}; - -/* char: 0x4a 'J' */ - -static const GLubyte ch74data[] = { -0xc0,0xa0,0x20,0x20,0x20,0x20,0x70, -}; - -static const BitmapCharRec ch74 = {4,7,0,0,4,ch74data}; - -/* char: 0x49 'I' */ - -static const GLubyte ch73data[] = { -0xe0,0x40,0x40,0x40,0x40,0x40,0xe0, -}; - -static const BitmapCharRec ch73 = {3,7,0,0,4,ch73data}; - -/* char: 0x48 'H' */ - -static const GLubyte ch72data[] = { -0xee,0x44,0x44,0x7c,0x44,0x44,0xee, -}; - -static const BitmapCharRec ch72 = {7,7,0,0,8,ch72data}; - -/* char: 0x47 'G' */ - -static const GLubyte ch71data[] = { -0x78,0xc4,0x84,0x9c,0x80,0xc4,0x7c, -}; - -static const BitmapCharRec ch71 = {6,7,0,0,7,ch71data}; - -/* char: 0x46 'F' */ - -static const GLubyte ch70data[] = { -0xe0,0x40,0x40,0x70,0x40,0x48,0xf8, -}; - -static const BitmapCharRec ch70 = {5,7,0,0,6,ch70data}; - -/* char: 0x45 'E' */ - -static const GLubyte ch69data[] = { -0xf8,0x48,0x40,0x70,0x40,0x48,0xf8, -}; - -static const BitmapCharRec ch69 = {5,7,0,0,6,ch69data}; - -/* char: 0x44 'D' */ - -static const GLubyte ch68data[] = { -0xf8,0x4c,0x44,0x44,0x44,0x4c,0xf8, -}; - -static const BitmapCharRec ch68 = {6,7,0,0,7,ch68data}; - -/* char: 0x43 'C' */ - -static const GLubyte ch67data[] = { -0x78,0xc4,0x80,0x80,0x80,0xc4,0x7c, -}; - -static const BitmapCharRec ch67 = {6,7,0,0,7,ch67data}; - -/* char: 0x42 'B' */ - -static const GLubyte ch66data[] = { -0xf0,0x48,0x48,0x70,0x48,0x48,0xf0, -}; - -static const BitmapCharRec ch66 = {5,7,0,0,6,ch66data}; - -/* char: 0x41 'A' */ - -static const GLubyte ch65data[] = { -0xee,0x44,0x7c,0x28,0x28,0x38,0x10, -}; - -static const BitmapCharRec ch65 = {7,7,0,0,8,ch65data}; - -/* char: 0x40 '@' */ - -static const GLubyte ch64data[] = { -0x3e,0x40,0x92,0xad,0xa5,0xa5,0x9d,0x42,0x3c, -}; - -static const BitmapCharRec ch64 = {8,9,0,2,9,ch64data}; - -/* char: 0x3f '?' */ - -static const GLubyte ch63data[] = { -0x40,0x0,0x40,0x40,0x20,0xa0,0xe0, -}; - -static const BitmapCharRec ch63 = {3,7,0,0,4,ch63data}; - -/* char: 0x3e '>' */ - -static const GLubyte ch62data[] = { -0x80,0x40,0x20,0x40,0x80, -}; - -static const BitmapCharRec ch62 = {3,5,0,0,5,ch62data}; - -/* char: 0x3d '=' */ - -static const GLubyte ch61data[] = { -0xf8,0x0,0xf8, -}; - -static const BitmapCharRec ch61 = {5,3,0,-1,6,ch61data}; - -/* char: 0x3c '<' */ - -static const GLubyte ch60data[] = { -0x20,0x40,0x80,0x40,0x20, -}; - -static const BitmapCharRec ch60 = {3,5,-1,0,5,ch60data}; - -/* char: 0x3b ';' */ - -static const GLubyte ch59data[] = { -0x80,0x80,0x80,0x0,0x0,0x0,0x80, -}; - -static const BitmapCharRec ch59 = {1,7,-1,2,3,ch59data}; - -/* char: 0x3a ':' */ - -static const GLubyte ch58data[] = { -0x80,0x0,0x0,0x0,0x80, -}; - -static const BitmapCharRec ch58 = {1,5,-1,0,3,ch58data}; - -/* char: 0x39 '9' */ - -static const GLubyte ch57data[] = { -0xc0,0x20,0x70,0x90,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch57 = {4,7,0,0,5,ch57data}; - -/* char: 0x38 '8' */ - -static const GLubyte ch56data[] = { -0x60,0x90,0x90,0x60,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch56 = {4,7,0,0,5,ch56data}; - -/* char: 0x37 '7' */ - -static const GLubyte ch55data[] = { -0x40,0x40,0x40,0x20,0x20,0x90,0xf0, -}; - -static const BitmapCharRec ch55 = {4,7,0,0,5,ch55data}; - -/* char: 0x36 '6' */ - -static const GLubyte ch54data[] = { -0x60,0x90,0x90,0x90,0xe0,0x40,0x30, -}; - -static const BitmapCharRec ch54 = {4,7,0,0,5,ch54data}; - -/* char: 0x35 '5' */ - -static const GLubyte ch53data[] = { -0xe0,0x90,0x10,0x10,0xe0,0x40,0x70, -}; - -static const BitmapCharRec ch53 = {4,7,0,0,5,ch53data}; - -/* char: 0x34 '4' */ - -static const GLubyte ch52data[] = { -0x10,0x10,0xf8,0x90,0x50,0x30,0x10, -}; - -static const BitmapCharRec ch52 = {5,7,0,0,5,ch52data}; - -/* char: 0x33 '3' */ - -static const GLubyte ch51data[] = { -0xe0,0x10,0x10,0x60,0x10,0x90,0x60, -}; - -static const BitmapCharRec ch51 = {4,7,0,0,5,ch51data}; - -/* char: 0x32 '2' */ - -static const GLubyte ch50data[] = { -0xf0,0x40,0x20,0x20,0x10,0x90,0x60, -}; - -static const BitmapCharRec ch50 = {4,7,0,0,5,ch50data}; - -/* char: 0x31 '1' */ - -static const GLubyte ch49data[] = { -0xe0,0x40,0x40,0x40,0x40,0xc0,0x40, -}; - -static const BitmapCharRec ch49 = {3,7,-1,0,5,ch49data}; - -/* char: 0x30 '0' */ - -static const GLubyte ch48data[] = { -0x60,0x90,0x90,0x90,0x90,0x90,0x60, -}; - -static const BitmapCharRec ch48 = {4,7,0,0,5,ch48data}; - -/* char: 0x2f '/' */ - -static const GLubyte ch47data[] = { -0x80,0x80,0x40,0x40,0x40,0x20,0x20, -}; - -static const BitmapCharRec ch47 = {3,7,0,0,3,ch47data}; - -/* char: 0x2e '.' */ - -static const GLubyte ch46data[] = { -0x80, -}; - -static const BitmapCharRec ch46 = {1,1,-1,0,3,ch46data}; - -/* char: 0x2d '-' */ - -static const GLubyte ch45data[] = { -0xf0, -}; - -static const BitmapCharRec ch45 = {4,1,-1,-2,7,ch45data}; - -/* char: 0x2c ',' */ - -static const GLubyte ch44data[] = { -0x80,0x80,0x80, -}; - -static const BitmapCharRec ch44 = {1,3,-1,2,3,ch44data}; - -/* char: 0x2b '+' */ - -static const GLubyte ch43data[] = { -0x20,0x20,0xf8,0x20,0x20, -}; - -static const BitmapCharRec ch43 = {5,5,0,0,6,ch43data}; - -/* char: 0x2a '*' */ - -static const GLubyte ch42data[] = { -0xa0,0x40,0xa0, -}; - -static const BitmapCharRec ch42 = {3,3,0,-4,5,ch42data}; - -/* char: 0x29 ')' */ - -static const GLubyte ch41data[] = { -0x80,0x40,0x40,0x20,0x20,0x20,0x40,0x40,0x80, -}; - -static const BitmapCharRec ch41 = {3,9,0,2,4,ch41data}; - -/* char: 0x28 '(' */ - -static const GLubyte ch40data[] = { -0x20,0x40,0x40,0x80,0x80,0x80,0x40,0x40,0x20, -}; - -static const BitmapCharRec ch40 = {3,9,0,2,4,ch40data}; - -/* char: 0x27 ''' */ - -static const GLubyte ch39data[] = { -0x40,0xc0, -}; - -static const BitmapCharRec ch39 = {2,2,0,-5,3,ch39data}; - -/* char: 0x26 '&' */ - -static const GLubyte ch38data[] = { -0x76,0x8d,0x98,0x74,0x6e,0x50,0x30, -}; - -static const BitmapCharRec ch38 = {8,7,0,0,8,ch38data}; - -/* char: 0x25 '%' */ - -static const GLubyte ch37data[] = { -0x44,0x2a,0x2a,0x56,0xa8,0xa4,0x7e, -}; - -static const BitmapCharRec ch37 = {7,7,0,0,8,ch37data}; - -/* char: 0x24 '$' */ - -static const GLubyte ch36data[] = { -0x20,0xe0,0x90,0x10,0x60,0x80,0x90,0x70,0x20, -}; - -static const BitmapCharRec ch36 = {4,9,0,1,5,ch36data}; - -/* char: 0x23 '#' */ - -static const GLubyte ch35data[] = { -0x50,0x50,0xf8,0x50,0xf8,0x50,0x50, -}; - -static const BitmapCharRec ch35 = {5,7,0,0,5,ch35data}; - -/* char: 0x22 '"' */ - -static const GLubyte ch34data[] = { -0xa0,0xa0, -}; - -static const BitmapCharRec ch34 = {3,2,0,-5,4,ch34data}; - -/* char: 0x21 '!' */ - -static const GLubyte ch33data[] = { -0x80,0x0,0x80,0x80,0x80,0x80,0x80, -}; - -static const BitmapCharRec ch33 = {1,7,-1,0,3,ch33data}; - -/* char: 0x20 ' ' */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch32data[] = { 0x0 }; -static const BitmapCharRec ch32 = {1,1,0,0,2,ch32data}; -#else -static const BitmapCharRec ch32 = {0,0,0,0,2,0}; -#endif - -static const BitmapCharRec * const chars[] = { -&ch32, -&ch33, -&ch34, -&ch35, -&ch36, -&ch37, -&ch38, -&ch39, -&ch40, -&ch41, -&ch42, -&ch43, -&ch44, -&ch45, -&ch46, -&ch47, -&ch48, -&ch49, -&ch50, -&ch51, -&ch52, -&ch53, -&ch54, -&ch55, -&ch56, -&ch57, -&ch58, -&ch59, -&ch60, -&ch61, -&ch62, -&ch63, -&ch64, -&ch65, -&ch66, -&ch67, -&ch68, -&ch69, -&ch70, -&ch71, -&ch72, -&ch73, -&ch74, -&ch75, -&ch76, -&ch77, -&ch78, -&ch79, -&ch80, -&ch81, -&ch82, -&ch83, -&ch84, -&ch85, -&ch86, -&ch87, -&ch88, -&ch89, -&ch90, -&ch91, -&ch92, -&ch93, -&ch94, -&ch95, -&ch96, -&ch97, -&ch98, -&ch99, -&ch100, -&ch101, -&ch102, -&ch103, -&ch104, -&ch105, -&ch106, -&ch107, -&ch108, -&ch109, -&ch110, -&ch111, -&ch112, -&ch113, -&ch114, -&ch115, -&ch116, -&ch117, -&ch118, -&ch119, -&ch120, -&ch121, -&ch122, -&ch123, -&ch124, -&ch125, -&ch126, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -&ch160, -&ch161, -&ch162, -&ch163, -&ch164, -&ch165, -&ch166, -&ch167, -&ch168, -&ch169, -&ch170, -&ch171, -&ch172, -&ch173, -&ch174, -&ch175, -&ch176, -&ch177, -&ch178, -&ch179, -&ch180, -&ch181, -&ch182, -&ch183, -&ch184, -&ch185, -&ch186, -&ch187, -&ch188, -&ch189, -&ch190, -&ch191, -&ch192, -&ch193, -&ch194, -&ch195, -&ch196, -&ch197, -&ch198, -&ch199, -&ch200, -&ch201, -&ch202, -&ch203, -&ch204, -&ch205, -&ch206, -&ch207, -&ch208, -&ch209, -&ch210, -&ch211, -&ch212, -&ch213, -&ch214, -&ch215, -&ch216, -&ch217, -&ch218, -&ch219, -&ch220, -&ch221, -&ch222, -&ch223, -&ch224, -&ch225, -&ch226, -&ch227, -&ch228, -&ch229, -&ch230, -&ch231, -&ch232, -&ch233, -&ch234, -&ch235, -&ch236, -&ch237, -&ch238, -&ch239, -&ch240, -&ch241, -&ch242, -&ch243, -&ch244, -&ch245, -&ch246, -&ch247, -&ch248, -&ch249, -&ch250, -&ch251, -&ch252, -&ch253, -&ch254, -&ch255, -}; - -const BitmapFontRec glutBitmapTimesRoman10 = { -"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1", -224, -32, -chars -}; - diff --git a/lib/glut-3.7.6/lib/glut/glut_tr24.c b/lib/glut-3.7.6/lib/glut/glut_tr24.c deleted file mode 100644 index 8476636d74e180aae4bab7b898573cd908ff6c86..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_tr24.c +++ /dev/null @@ -1,2060 +0,0 @@ - -/* GENERATED FILE -- DO NOT MODIFY */ - -#define glutBitmapTimesRoman24 XXX -#include "glutbitmap.h" -#undef glutBitmapTimesRoman24 - -/* char: 0xff */ - -static const GLubyte ch255data[] = { -0xe0,0x0,0xf0,0x0,0x18,0x0,0x8,0x0,0xc,0x0,0x4,0x0,0xe,0x0,0xe,0x0, -0x1a,0x0,0x19,0x0,0x19,0x0,0x31,0x0,0x30,0x80,0x30,0x80,0x60,0x80,0x60,0xc0, -0xf1,0xe0,0x0,0x0,0x0,0x0,0x33,0x0,0x33,0x0, -}; - -static const BitmapCharRec ch255 = {11,21,0,5,11,ch255data}; - -/* char: 0xfe */ - -static const GLubyte ch254data[] = { -0xf0,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0x6e,0x0,0x73,0x80,0x61,0x80, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x61,0x80,0x73,0x80, -0x6e,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0xe0,0x0, -}; - -static const BitmapCharRec ch254 = {10,22,-1,5,12,ch254data}; - -/* char: 0xfd */ - -static const GLubyte ch253data[] = { -0xe0,0x0,0xf0,0x0,0x18,0x0,0x8,0x0,0xc,0x0,0x4,0x0,0xe,0x0,0xe,0x0, -0x1a,0x0,0x19,0x0,0x19,0x0,0x31,0x0,0x30,0x80,0x30,0x80,0x60,0x80,0x60,0xc0, -0xf1,0xe0,0x0,0x0,0x8,0x0,0x6,0x0,0x3,0x80,0x1,0x80, -}; - -static const BitmapCharRec ch253 = {11,22,0,5,11,ch253data}; - -/* char: 0xfc */ - -static const GLubyte ch252data[] = { -0x1c,0xe0,0x3e,0xc0,0x71,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0xe1,0xc0,0x0,0x0,0x0,0x0,0x33,0x0,0x33,0x0, -}; - -static const BitmapCharRec ch252 = {11,16,-1,0,13,ch252data}; - -/* char: 0xfb */ - -static const GLubyte ch251data[] = { -0x1c,0xe0,0x3e,0xc0,0x71,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0xe1,0xc0,0x0,0x0,0x21,0x0,0x12,0x0,0x1e,0x0, -0xc,0x0, -}; - -static const BitmapCharRec ch251 = {11,17,-1,0,13,ch251data}; - -/* char: 0xfa */ - -static const GLubyte ch250data[] = { -0x1c,0xe0,0x3e,0xc0,0x71,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0xe1,0xc0,0x0,0x0,0x8,0x0,0x6,0x0,0x3,0x80, -0x1,0x80, -}; - -static const BitmapCharRec ch250 = {11,17,-1,0,13,ch250data}; - -/* char: 0xf9 */ - -static const GLubyte ch249data[] = { -0x1c,0xe0,0x3e,0xc0,0x71,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0xe1,0xc0,0x0,0x0,0x2,0x0,0xc,0x0,0x38,0x0, -0x30,0x0, -}; - -static const BitmapCharRec ch249 = {11,17,-1,0,13,ch249data}; - -/* char: 0xf8 */ - -static const GLubyte ch248data[] = { -0xc0,0x0,0xde,0x0,0x73,0x80,0x71,0x80,0xd0,0xc0,0xd8,0xc0,0xc8,0xc0,0xcc,0xc0, -0xc4,0xc0,0xc6,0xc0,0x63,0x80,0x73,0x80,0x1e,0xc0,0x0,0xc0, -}; - -static const BitmapCharRec ch248 = {10,14,-1,1,12,ch248data}; - -/* char: 0xf7 */ - -static const GLubyte ch247data[] = { -0x6,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0xff,0xf0,0xff,0xf0,0x0,0x0,0x0,0x0, -0x6,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch247 = {12,10,-1,-2,14,ch247data}; - -/* char: 0xf6 */ - -static const GLubyte ch246data[] = { -0x1e,0x0,0x73,0x80,0x61,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0x61,0x80,0x73,0x80,0x1e,0x0,0x0,0x0,0x0,0x0,0x33,0x0,0x33,0x0, -}; - -static const BitmapCharRec ch246 = {10,16,-1,0,12,ch246data}; - -/* char: 0xf5 */ - -static const GLubyte ch245data[] = { -0x1e,0x0,0x73,0x80,0x61,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0x61,0x80,0x73,0x80,0x1e,0x0,0x0,0x0,0x0,0x0,0x27,0x0,0x1c,0x80, -}; - -static const BitmapCharRec ch245 = {10,16,-1,0,12,ch245data}; - -/* char: 0xf4 */ - -static const GLubyte ch244data[] = { -0x1e,0x0,0x73,0x80,0x61,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0x61,0x80,0x73,0x80,0x1e,0x0,0x0,0x0,0x21,0x0,0x12,0x0,0x1e,0x0, -0xc,0x0, -}; - -static const BitmapCharRec ch244 = {10,17,-1,0,12,ch244data}; - -/* char: 0xf3 */ - -static const GLubyte ch243data[] = { -0x1e,0x0,0x73,0x80,0x61,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0x61,0x80,0x73,0x80,0x1e,0x0,0x0,0x0,0x8,0x0,0x6,0x0,0x3,0x80, -0x1,0x80, -}; - -static const BitmapCharRec ch243 = {10,17,-1,0,12,ch243data}; - -/* char: 0xf2 */ - -static const GLubyte ch242data[] = { -0x1e,0x0,0x73,0x80,0x61,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0x61,0x80,0x73,0x80,0x1e,0x0,0x0,0x0,0x2,0x0,0xc,0x0,0x38,0x0, -0x30,0x0, -}; - -static const BitmapCharRec ch242 = {10,17,-1,0,12,ch242data}; - -/* char: 0xf1 */ - -static const GLubyte ch241data[] = { -0xf1,0xe0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x71,0xc0,0x6f,0x80,0xe7,0x0,0x0,0x0,0x0,0x0,0x27,0x0,0x1c,0x80, -}; - -static const BitmapCharRec ch241 = {11,16,-1,0,13,ch241data}; - -/* char: 0xf0 */ - -static const GLubyte ch240data[] = { -0x1e,0x0,0x73,0x80,0x61,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0x61,0x80,0x73,0x80,0x1f,0x0,0xc6,0x0,0x3c,0x0,0x1e,0x0,0x71,0x80, -0xc0,0x0, -}; - -static const BitmapCharRec ch240 = {10,17,-1,0,12,ch240data}; - -/* char: 0xef */ - -static const GLubyte ch239data[] = { -0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x70,0x0,0x0,0xcc,0xcc, -}; - -static const BitmapCharRec ch239 = {6,16,0,0,6,ch239data}; - -/* char: 0xee */ - -static const GLubyte ch238data[] = { -0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x70,0x0,0x84,0x48,0x78, -0x30, -}; - -static const BitmapCharRec ch238 = {6,17,0,0,6,ch238data}; - -/* char: 0xed */ - -static const GLubyte ch237data[] = { -0xf0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x0,0x80,0x60,0x38, -0x18, -}; - -static const BitmapCharRec ch237 = {5,17,-1,0,6,ch237data}; - -/* char: 0xec */ - -static const GLubyte ch236data[] = { -0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x70,0x0,0x8,0x30,0xe0, -0xc0, -}; - -static const BitmapCharRec ch236 = {5,17,0,0,6,ch236data}; - -/* char: 0xeb */ - -static const GLubyte ch235data[] = { -0x1e,0x0,0x7f,0x0,0x70,0x80,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80, -0xc1,0x80,0x41,0x80,0x63,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x33,0x0,0x33,0x0, -}; - -static const BitmapCharRec ch235 = {9,16,-1,0,11,ch235data}; - -/* char: 0xea */ - -static const GLubyte ch234data[] = { -0x1e,0x0,0x7f,0x0,0x70,0x80,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80, -0xc1,0x80,0x41,0x80,0x63,0x0,0x1e,0x0,0x0,0x0,0x21,0x0,0x12,0x0,0x1e,0x0, -0xc,0x0, -}; - -static const BitmapCharRec ch234 = {9,17,-1,0,11,ch234data}; - -/* char: 0xe9 */ - -static const GLubyte ch233data[] = { -0x1e,0x0,0x7f,0x0,0x70,0x80,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80, -0xc1,0x80,0x41,0x80,0x63,0x0,0x1e,0x0,0x0,0x0,0x10,0x0,0xc,0x0,0x7,0x0, -0x3,0x0, -}; - -static const BitmapCharRec ch233 = {9,17,-1,0,11,ch233data}; - -/* char: 0xe8 */ - -static const GLubyte ch232data[] = { -0x1e,0x0,0x7f,0x0,0x70,0x80,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80, -0xc1,0x80,0x41,0x80,0x63,0x0,0x1e,0x0,0x0,0x0,0x4,0x0,0x18,0x0,0x70,0x0, -0x60,0x0, -}; - -static const BitmapCharRec ch232 = {9,17,-1,0,11,ch232data}; - -/* char: 0xe7 */ - -static const GLubyte ch231data[] = { -0x3c,0x0,0x66,0x0,0x6,0x0,0x1e,0x0,0x18,0x0,0x8,0x0,0x1e,0x0,0x7f,0x0, -0x70,0x80,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0x41,0x80, -0x63,0x80,0x1f,0x0, -}; - -static const BitmapCharRec ch231 = {9,18,-1,6,11,ch231data}; - -/* char: 0xe6 */ - -static const GLubyte ch230data[] = { -0x70,0xf0,0xfb,0xf8,0xc7,0x84,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0xfc, -0x3,0xc,0x63,0xc,0x67,0x98,0x3c,0xf0, -}; - -static const BitmapCharRec ch230 = {14,12,-1,0,16,ch230data}; - -/* char: 0xe5 */ - -static const GLubyte ch229data[] = { -0x71,0x80,0xfb,0x0,0xc7,0x0,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0x0, -0x3,0x0,0x63,0x0,0x67,0x0,0x3e,0x0,0x0,0x0,0x1c,0x0,0x22,0x0,0x22,0x0, -0x1c,0x0, -}; - -static const BitmapCharRec ch229 = {9,17,-1,0,11,ch229data}; - -/* char: 0xe4 */ - -static const GLubyte ch228data[] = { -0x71,0x80,0xfb,0x0,0xc7,0x0,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0x0, -0x3,0x0,0x63,0x0,0x67,0x0,0x3e,0x0,0x0,0x0,0x0,0x0,0x66,0x0,0x66,0x0, -}; - -static const BitmapCharRec ch228 = {9,16,-1,0,11,ch228data}; - -/* char: 0xe3 */ - -static const GLubyte ch227data[] = { -0x71,0x80,0xfb,0x0,0xc7,0x0,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0x0, -0x3,0x0,0x63,0x0,0x67,0x0,0x3e,0x0,0x0,0x0,0x0,0x0,0x5c,0x0,0x3a,0x0, -}; - -static const BitmapCharRec ch227 = {9,16,-1,0,11,ch227data}; - -/* char: 0xe2 */ - -static const GLubyte ch226data[] = { -0x71,0x80,0xfb,0x0,0xc7,0x0,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0x0, -0x3,0x0,0x63,0x0,0x67,0x0,0x3e,0x0,0x0,0x0,0x42,0x0,0x24,0x0,0x3c,0x0, -0x18,0x0, -}; - -static const BitmapCharRec ch226 = {9,17,-1,0,11,ch226data}; - -/* char: 0xe1 */ - -static const GLubyte ch225data[] = { -0x71,0x80,0xfb,0x0,0xc7,0x0,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0x0, -0x3,0x0,0x63,0x0,0x67,0x0,0x3e,0x0,0x0,0x0,0x10,0x0,0xc,0x0,0x7,0x0, -0x3,0x0, -}; - -static const BitmapCharRec ch225 = {9,17,-1,0,11,ch225data}; - -/* char: 0xe0 */ - -static const GLubyte ch224data[] = { -0x71,0x80,0xfb,0x0,0xc7,0x0,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0x0, -0x3,0x0,0x63,0x0,0x67,0x0,0x3e,0x0,0x0,0x0,0x4,0x0,0x18,0x0,0x70,0x0, -0x60,0x0, -}; - -static const BitmapCharRec ch224 = {9,17,-1,0,11,ch224data}; - -/* char: 0xdf */ - -static const GLubyte ch223data[] = { -0xe7,0x0,0x6c,0x80,0x6c,0xc0,0x60,0xc0,0x60,0xc0,0x61,0xc0,0x61,0x80,0x63,0x80, -0x67,0x0,0x6c,0x0,0x63,0x0,0x61,0x80,0x61,0x80,0x61,0x80,0x61,0x80,0x33,0x0, -0x1e,0x0, -}; - -static const BitmapCharRec ch223 = {10,17,-1,0,12,ch223data}; - -/* char: 0xde */ - -static const GLubyte ch222data[] = { -0xfc,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x3f,0xc0,0x30,0x70,0x30,0x30,0x30,0x18, -0x30,0x18,0x30,0x18,0x30,0x30,0x30,0x70,0x3f,0xc0,0x30,0x0,0x30,0x0,0x30,0x0, -0xfc,0x0, -}; - -static const BitmapCharRec ch222 = {13,17,-1,0,15,ch222data}; - -/* char: 0xdd */ - -static const GLubyte ch221data[] = { -0x7,0xe0,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x3,0xc0, -0x3,0x40,0x6,0x60,0x6,0x20,0xc,0x30,0x1c,0x10,0x18,0x18,0x38,0x8,0x30,0xc, -0xfc,0x3f,0x0,0x0,0x1,0x0,0x0,0xc0,0x0,0x70,0x0,0x30, -}; - -static const BitmapCharRec ch221 = {16,22,0,0,16,ch221data}; - -/* char: 0xdc */ - -static const GLubyte ch220data[] = { -0x7,0xe0,0x1c,0x30,0x18,0x8,0x30,0x8,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0xfc,0x1f,0x0,0x0,0x0,0x0,0x6,0x30,0x6,0x30, -}; - -static const BitmapCharRec ch220 = {16,21,-1,0,18,ch220data}; - -/* char: 0xdb */ - -static const GLubyte ch219data[] = { -0x7,0xe0,0x1c,0x30,0x18,0x8,0x30,0x8,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0xfc,0x1f,0x0,0x0,0x8,0x10,0x6,0x60,0x3,0xc0,0x1,0x80, -}; - -static const BitmapCharRec ch219 = {16,22,-1,0,18,ch219data}; - -/* char: 0xda */ - -static const GLubyte ch218data[] = { -0x7,0xe0,0x1c,0x30,0x18,0x8,0x30,0x8,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0xfc,0x1f,0x0,0x0,0x1,0x0,0x0,0xc0,0x0,0x70,0x0,0x30, -}; - -static const BitmapCharRec ch218 = {16,22,-1,0,18,ch218data}; - -/* char: 0xd9 */ - -static const GLubyte ch217data[] = { -0x7,0xe0,0x1c,0x30,0x18,0x8,0x30,0x8,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0xfc,0x1f,0x0,0x0,0x0,0x40,0x1,0x80,0x7,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch217 = {16,22,-1,0,18,ch217data}; - -/* char: 0xd8 */ - -static const GLubyte ch216data[] = { -0x20,0x0,0x27,0xe0,0x1c,0x38,0x38,0x1c,0x68,0x6,0x64,0x6,0xc2,0x3,0xc2,0x3, -0xc1,0x3,0xc1,0x3,0xc0,0x83,0xc0,0x83,0xc0,0x43,0x60,0x46,0x60,0x26,0x38,0x1c, -0x1c,0x38,0x7,0xe4,0x0,0x4, -}; - -static const BitmapCharRec ch216 = {16,19,-1,1,18,ch216data}; - -/* char: 0xd7 */ - -static const GLubyte ch215data[] = { -0x80,0x40,0xc0,0xc0,0x61,0x80,0x33,0x0,0x1e,0x0,0xc,0x0,0x1e,0x0,0x33,0x0, -0x61,0x80,0xc0,0xc0,0x80,0x40, -}; - -static const BitmapCharRec ch215 = {10,11,-2,-1,14,ch215data}; - -/* char: 0xd6 */ - -static const GLubyte ch214data[] = { -0x7,0xe0,0x1c,0x38,0x38,0x1c,0x60,0x6,0x60,0x6,0xc0,0x3,0xc0,0x3,0xc0,0x3, -0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0x60,0x6,0x60,0x6,0x38,0x1c,0x1c,0x38, -0x7,0xe0,0x0,0x0,0x0,0x0,0x6,0x60,0x6,0x60, -}; - -static const BitmapCharRec ch214 = {16,21,-1,0,18,ch214data}; - -/* char: 0xd5 */ - -static const GLubyte ch213data[] = { -0x7,0xe0,0x1c,0x38,0x38,0x1c,0x60,0x6,0x60,0x6,0xc0,0x3,0xc0,0x3,0xc0,0x3, -0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0x60,0x6,0x60,0x6,0x38,0x1c,0x1c,0x38, -0x7,0xe0,0x0,0x0,0x0,0x0,0x4,0xe0,0x3,0x90, -}; - -static const BitmapCharRec ch213 = {16,21,-1,0,18,ch213data}; - -/* char: 0xd4 */ - -static const GLubyte ch212data[] = { -0x7,0xe0,0x1c,0x38,0x38,0x1c,0x60,0x6,0x60,0x6,0xc0,0x3,0xc0,0x3,0xc0,0x3, -0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0x60,0x6,0x60,0x6,0x38,0x1c,0x1c,0x38, -0x7,0xe0,0x0,0x0,0x8,0x10,0x6,0x60,0x3,0xc0,0x1,0x80, -}; - -static const BitmapCharRec ch212 = {16,22,-1,0,18,ch212data}; - -/* char: 0xd3 */ - -static const GLubyte ch211data[] = { -0x7,0xe0,0x1c,0x38,0x38,0x1c,0x60,0x6,0x60,0x6,0xc0,0x3,0xc0,0x3,0xc0,0x3, -0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0x60,0x6,0x60,0x6,0x38,0x1c,0x1c,0x38, -0x7,0xe0,0x0,0x0,0x1,0x0,0x0,0xc0,0x0,0x70,0x0,0x30, -}; - -static const BitmapCharRec ch211 = {16,22,-1,0,18,ch211data}; - -/* char: 0xd2 */ - -static const GLubyte ch210data[] = { -0x7,0xe0,0x1c,0x38,0x38,0x1c,0x60,0x6,0x60,0x6,0xc0,0x3,0xc0,0x3,0xc0,0x3, -0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0x60,0x6,0x60,0x6,0x38,0x1c,0x1c,0x38, -0x7,0xe0,0x0,0x0,0x0,0x40,0x1,0x80,0x7,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch210 = {16,22,-1,0,18,ch210data}; - -/* char: 0xd1 */ - -static const GLubyte ch209data[] = { -0xf8,0xc,0x20,0x1c,0x20,0x1c,0x20,0x34,0x20,0x64,0x20,0x64,0x20,0xc4,0x21,0x84, -0x21,0x84,0x23,0x4,0x26,0x4,0x26,0x4,0x2c,0x4,0x38,0x4,0x38,0x4,0x30,0x4, -0xf0,0x1f,0x0,0x0,0x0,0x0,0x4,0xe0,0x3,0x90, -}; - -static const BitmapCharRec ch209 = {16,21,-1,0,18,ch209data}; - -/* char: 0xd0 */ - -static const GLubyte ch208data[] = { -0x7f,0xe0,0x18,0x38,0x18,0x1c,0x18,0x6,0x18,0x6,0x18,0x3,0x18,0x3,0x18,0x3, -0xff,0x3,0x18,0x3,0x18,0x3,0x18,0x3,0x18,0x6,0x18,0x6,0x18,0x1c,0x18,0x38, -0x7f,0xe0, -}; - -static const BitmapCharRec ch208 = {16,17,0,0,17,ch208data}; - -/* char: 0xcf */ - -static const GLubyte ch207data[] = { -0xfc,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, -0xfc,0x0,0x0,0xcc,0xcc, -}; - -static const BitmapCharRec ch207 = {6,21,-1,0,8,ch207data}; - -/* char: 0xce */ - -static const GLubyte ch206data[] = { -0x7e,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x7e,0x0,0x81,0x66,0x3c,0x18, -}; - -static const BitmapCharRec ch206 = {8,22,-1,0,8,ch206data}; - -/* char: 0xcd */ - -static const GLubyte ch205data[] = { -0xfc,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, -0xfc,0x0,0x40,0x30,0x1c,0xc, -}; - -static const BitmapCharRec ch205 = {6,22,-1,0,8,ch205data}; - -/* char: 0xcc */ - -static const GLubyte ch204data[] = { -0xfc,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, -0xfc,0x0,0x8,0x30,0xe0,0xc0, -}; - -static const BitmapCharRec ch204 = {6,22,-1,0,8,ch204data}; - -/* char: 0xcb */ - -static const GLubyte ch203data[] = { -0xff,0xf8,0x30,0x18,0x30,0x8,0x30,0x8,0x30,0x0,0x30,0x0,0x30,0x40,0x30,0x40, -0x3f,0xc0,0x30,0x40,0x30,0x40,0x30,0x0,0x30,0x0,0x30,0x10,0x30,0x10,0x30,0x30, -0xff,0xf0,0x0,0x0,0x0,0x0,0x19,0x80,0x19,0x80, -}; - -static const BitmapCharRec ch203 = {13,21,-1,0,15,ch203data}; - -/* char: 0xca */ - -static const GLubyte ch202data[] = { -0xff,0xf8,0x30,0x18,0x30,0x8,0x30,0x8,0x30,0x0,0x30,0x0,0x30,0x40,0x30,0x40, -0x3f,0xc0,0x30,0x40,0x30,0x40,0x30,0x0,0x30,0x0,0x30,0x10,0x30,0x10,0x30,0x30, -0xff,0xf0,0x0,0x0,0x10,0x20,0xc,0xc0,0x7,0x80,0x3,0x0, -}; - -static const BitmapCharRec ch202 = {13,22,-1,0,15,ch202data}; - -/* char: 0xc9 */ - -static const GLubyte ch201data[] = { -0xff,0xf8,0x30,0x18,0x30,0x8,0x30,0x8,0x30,0x0,0x30,0x0,0x30,0x40,0x30,0x40, -0x3f,0xc0,0x30,0x40,0x30,0x40,0x30,0x0,0x30,0x0,0x30,0x10,0x30,0x10,0x30,0x30, -0xff,0xf0,0x0,0x0,0x4,0x0,0x3,0x0,0x1,0xc0,0x0,0xc0, -}; - -static const BitmapCharRec ch201 = {13,22,-1,0,15,ch201data}; - -/* char: 0xc8 */ - -static const GLubyte ch200data[] = { -0xff,0xf8,0x30,0x18,0x30,0x8,0x30,0x8,0x30,0x0,0x30,0x0,0x30,0x40,0x30,0x40, -0x3f,0xc0,0x30,0x40,0x30,0x40,0x30,0x0,0x30,0x0,0x30,0x10,0x30,0x10,0x30,0x30, -0xff,0xf0,0x0,0x0,0x1,0x0,0x6,0x0,0x1c,0x0,0x18,0x0, -}; - -static const BitmapCharRec ch200 = {13,22,-1,0,15,ch200data}; - -/* char: 0xc7 */ - -static const GLubyte ch199data[] = { -0x7,0x80,0xc,0xc0,0x0,0xc0,0x3,0xc0,0x3,0x0,0x1,0x0,0x7,0xe0,0x1e,0x38, -0x38,0x8,0x60,0x4,0x60,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0, -0xc0,0x0,0xc0,0x0,0x60,0x4,0x60,0x4,0x38,0xc,0x1c,0x3c,0x7,0xe4, -}; - -static const BitmapCharRec ch199 = {14,23,-1,6,16,ch199data}; - -/* char: 0xc6 */ - -static const GLubyte ch198data[] = { -0xf9,0xff,0xf0,0x30,0x60,0x30,0x10,0x60,0x10,0x10,0x60,0x10,0x18,0x60,0x0,0x8, -0x60,0x0,0xf,0xe0,0x80,0xc,0x60,0x80,0x4,0x7f,0x80,0x4,0x60,0x80,0x6,0x60, -0x80,0x2,0x60,0x0,0x2,0x60,0x0,0x1,0x60,0x20,0x1,0x60,0x20,0x1,0xe0,0x60, -0x3,0xff,0xe0, -}; - -static const BitmapCharRec ch198 = {20,17,0,0,21,ch198data}; - -/* char: 0xc5 */ - -static const GLubyte ch197data[] = { -0xfc,0x1f,0x80,0x30,0x6,0x0,0x10,0x6,0x0,0x10,0xc,0x0,0x18,0xc,0x0,0x8, -0xc,0x0,0xf,0xf8,0x0,0xc,0x18,0x0,0x4,0x18,0x0,0x4,0x30,0x0,0x6,0x30, -0x0,0x2,0x30,0x0,0x2,0x60,0x0,0x1,0x60,0x0,0x1,0xc0,0x0,0x1,0xc0,0x0, -0x0,0x80,0x0,0x1,0xc0,0x0,0x2,0x20,0x0,0x2,0x20,0x0,0x1,0xc0,0x0, -}; - -static const BitmapCharRec ch197 = {17,21,0,0,17,ch197data}; - -/* char: 0xc4 */ - -static const GLubyte ch196data[] = { -0xfc,0x1f,0x80,0x30,0x6,0x0,0x10,0x6,0x0,0x10,0xc,0x0,0x18,0xc,0x0,0x8, -0xc,0x0,0xf,0xf8,0x0,0xc,0x18,0x0,0x4,0x18,0x0,0x4,0x30,0x0,0x6,0x30, -0x0,0x2,0x30,0x0,0x2,0x60,0x0,0x1,0x60,0x0,0x1,0xc0,0x0,0x1,0xc0,0x0, -0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x30,0x0,0x6,0x30,0x0, -}; - -static const BitmapCharRec ch196 = {17,21,0,0,17,ch196data}; - -/* char: 0xc3 */ - -static const GLubyte ch195data[] = { -0xfc,0x1f,0x80,0x30,0x7,0x0,0x10,0x6,0x0,0x10,0xc,0x0,0x18,0xc,0x0,0x8, -0xc,0x0,0xf,0xf8,0x0,0xc,0x18,0x0,0x4,0x18,0x0,0x4,0x30,0x0,0x6,0x30, -0x0,0x2,0x30,0x0,0x2,0x60,0x0,0x1,0x60,0x0,0x1,0xc0,0x0,0x1,0xc0,0x0, -0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xe0,0x0,0x3,0x90,0x0, -}; - -static const BitmapCharRec ch195 = {17,21,0,0,17,ch195data}; - -/* char: 0xc2 */ - -static const GLubyte ch194data[] = { -0xfc,0x1f,0x80,0x30,0x6,0x0,0x10,0x6,0x0,0x10,0xc,0x0,0x18,0xc,0x0,0x8, -0xc,0x0,0xf,0xf8,0x0,0xc,0x18,0x0,0x4,0x18,0x0,0x4,0x30,0x0,0x6,0x30, -0x0,0x2,0x30,0x0,0x2,0x60,0x0,0x1,0x60,0x0,0x1,0xc0,0x0,0x1,0xc0,0x0, -0x0,0x80,0x0,0x0,0x0,0x0,0x8,0x10,0x0,0x6,0x60,0x0,0x3,0xc0,0x0,0x1, -0x80,0x0, -}; - -static const BitmapCharRec ch194 = {17,22,0,0,17,ch194data}; - -/* char: 0xc1 */ - -static const GLubyte ch193data[] = { -0xfc,0x1f,0x80,0x30,0x6,0x0,0x10,0x6,0x0,0x10,0xc,0x0,0x18,0xc,0x0,0x8, -0xc,0x0,0xf,0xf8,0x0,0xc,0x18,0x0,0x4,0x18,0x0,0x4,0x30,0x0,0x6,0x30, -0x0,0x2,0x30,0x0,0x2,0x60,0x0,0x1,0x60,0x0,0x1,0xc0,0x0,0x1,0xc0,0x0, -0x0,0x80,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc0,0x0,0x0,0x70,0x0,0x0, -0x30,0x0, -}; - -static const BitmapCharRec ch193 = {17,22,0,0,17,ch193data}; - -/* char: 0xc0 */ - -static const GLubyte ch192data[] = { -0xfc,0x1f,0x80,0x30,0x6,0x0,0x10,0x6,0x0,0x10,0xc,0x0,0x18,0xc,0x0,0x8, -0xc,0x0,0xf,0xf8,0x0,0xc,0x18,0x0,0x4,0x18,0x0,0x4,0x30,0x0,0x6,0x30, -0x0,0x2,0x30,0x0,0x2,0x60,0x0,0x1,0x60,0x0,0x1,0xc0,0x0,0x1,0xc0,0x0, -0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0xc0,0x0,0x3,0x80,0x0,0x3, -0x0,0x0, -}; - -static const BitmapCharRec ch192 = {17,22,0,0,17,ch192data}; - -/* char: 0xbf */ - -static const GLubyte ch191data[] = { -0x3e,0x63,0xc1,0xc3,0xc3,0xe0,0x70,0x30,0x38,0x18,0x18,0x8,0x8,0x0,0x0,0xc, -0xc, -}; - -static const BitmapCharRec ch191 = {8,17,-1,5,11,ch191data}; - -/* char: 0xbe */ - -static const GLubyte ch190data[] = { -0x18,0x2,0x0,0x8,0x2,0x0,0xc,0x7f,0x80,0x4,0x22,0x0,0x6,0x32,0x0,0x3, -0x12,0x0,0x1,0xa,0x0,0x71,0x8e,0x0,0x88,0x86,0x0,0x8c,0xc2,0x0,0xc,0x60, -0x0,0x8,0x20,0x0,0x30,0x30,0x0,0x8,0x10,0x0,0x8c,0x18,0x0,0x4c,0xc,0x0, -0x38,0x4,0x0, -}; - -static const BitmapCharRec ch190 = {17,17,0,0,18,ch190data}; - -/* char: 0xbd */ - -static const GLubyte ch189data[] = { -0x30,0x7e,0x10,0x22,0x18,0x10,0x8,0x18,0xc,0x8,0x6,0x4,0x2,0x6,0xfb,0x46, -0x21,0x26,0x21,0x9c,0x20,0xc0,0x20,0x40,0x20,0x60,0x20,0x20,0xa0,0x30,0x60,0x18, -0x20,0x8, -}; - -static const BitmapCharRec ch189 = {15,17,-1,0,18,ch189data}; - -/* char: 0xbc */ - -static const GLubyte ch188data[] = { -0x30,0x4,0x10,0x4,0x18,0xff,0x8,0x44,0xc,0x64,0x6,0x24,0x2,0x14,0xfb,0x1c, -0x21,0xc,0x21,0x84,0x20,0xc0,0x20,0x40,0x20,0x60,0x20,0x20,0xa0,0x30,0x60,0x18, -0x20,0x8, -}; - -static const BitmapCharRec ch188 = {16,17,-1,0,18,ch188data}; - -/* char: 0xbb */ - -static const GLubyte ch187data[] = { -0x88,0x0,0xcc,0x0,0x66,0x0,0x33,0x0,0x19,0x80,0x19,0x80,0x33,0x0,0x66,0x0, -0xcc,0x0,0x88,0x0, -}; - -static const BitmapCharRec ch187 = {9,10,-2,-1,12,ch187data}; - -/* char: 0xba */ - -static const GLubyte ch186data[] = { -0xfc,0x0,0x78,0xcc,0xcc,0xcc,0xcc,0xcc,0x78, -}; - -static const BitmapCharRec ch186 = {6,9,-1,-8,8,ch186data}; - -/* char: 0xb9 */ - -static const GLubyte ch185data[] = { -0xf8,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x60,0x20, -}; - -static const BitmapCharRec ch185 = {5,10,-1,-7,7,ch185data}; - -/* char: 0xb8 */ - -static const GLubyte ch184data[] = { -0x78,0xcc,0xc,0x3c,0x30,0x10, -}; - -static const BitmapCharRec ch184 = {6,6,-1,6,8,ch184data}; - -/* char: 0xb7 */ - -static const GLubyte ch183data[] = { -0xc0,0xc0, -}; - -static const BitmapCharRec ch183 = {2,2,-2,-6,6,ch183data}; - -/* char: 0xb6 */ - -static const GLubyte ch182data[] = { -0x9,0x0,0x9,0x0,0x9,0x0,0x9,0x0,0x9,0x0,0x9,0x0,0x9,0x0,0x9,0x0, -0x9,0x0,0x9,0x0,0x9,0x0,0x19,0x0,0x39,0x0,0x79,0x0,0x79,0x0,0xf9,0x0, -0xf9,0x0,0xf9,0x0,0x79,0x0,0x79,0x0,0x39,0x0,0x1f,0x80, -}; - -static const BitmapCharRec ch182 = {9,22,-1,5,11,ch182data}; - -/* char: 0xb5 */ - -static const GLubyte ch181data[] = { -0x40,0x0,0xe0,0x0,0xc0,0x0,0x40,0x0,0x40,0x0,0x5c,0xe0,0x7e,0xc0,0x71,0xc0, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0xe1,0xc0, -}; - -static const BitmapCharRec ch181 = {11,17,-1,5,13,ch181data}; - -/* char: 0xb4 */ - -static const GLubyte ch180data[] = { -0x80,0x60,0x38,0x18, -}; - -static const BitmapCharRec ch180 = {5,4,-2,-13,8,ch180data}; - -/* char: 0xb3 */ - -static const GLubyte ch179data[] = { -0x70,0x88,0x8c,0xc,0x8,0x30,0x8,0x8c,0x4c,0x38, -}; - -static const BitmapCharRec ch179 = {6,10,0,-7,7,ch179data}; - -/* char: 0xb2 */ - -static const GLubyte ch178data[] = { -0xfc,0x44,0x20,0x30,0x10,0x8,0xc,0x8c,0x4c,0x38, -}; - -static const BitmapCharRec ch178 = {6,10,0,-7,7,ch178data}; - -/* char: 0xb1 */ - -static const GLubyte ch177data[] = { -0xff,0xf0,0xff,0xf0,0x0,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0, -0xff,0xf0,0xff,0xf0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch177 = {12,15,-1,0,14,ch177data}; - -/* char: 0xb0 */ - -static const GLubyte ch176data[] = { -0x38,0x44,0x82,0x82,0x82,0x44,0x38, -}; - -static const BitmapCharRec ch176 = {7,7,-1,-10,9,ch176data}; - -/* char: 0xaf */ - -static const GLubyte ch175data[] = { -0xfc,0xfc, -}; - -static const BitmapCharRec ch175 = {6,2,-1,-14,8,ch175data}; - -/* char: 0xae */ - -static const GLubyte ch174data[] = { -0x7,0xf0,0x0,0x1c,0x1c,0x0,0x30,0x6,0x0,0x60,0x3,0x0,0x47,0x19,0x0,0xc2, -0x31,0x80,0x82,0x20,0x80,0x82,0x40,0x80,0x83,0xe0,0x80,0x82,0x30,0x80,0x82,0x10, -0x80,0xc2,0x11,0x80,0x42,0x31,0x0,0x67,0xe3,0x0,0x30,0x6,0x0,0x1c,0x1c,0x0, -0x7,0xf0,0x0, -}; - -static const BitmapCharRec ch174 = {17,17,-1,0,19,ch174data}; - -/* char: 0xad */ - -static const GLubyte ch173data[] = { -0xfe,0xfe, -}; - -static const BitmapCharRec ch173 = {7,2,-1,-5,9,ch173data}; - -/* char: 0xac */ - -static const GLubyte ch172data[] = { -0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0xff,0xf0,0xff,0xf0, -}; - -static const BitmapCharRec ch172 = {12,7,-1,-3,14,ch172data}; - -/* char: 0xab */ - -static const GLubyte ch171data[] = { -0x8,0x80,0x19,0x80,0x33,0x0,0x66,0x0,0xcc,0x0,0xcc,0x0,0x66,0x0,0x33,0x0, -0x19,0x80,0x8,0x80, -}; - -static const BitmapCharRec ch171 = {9,10,-2,-1,13,ch171data}; - -/* char: 0xaa */ - -static const GLubyte ch170data[] = { -0x7e,0x0,0x76,0xcc,0xcc,0x7c,0xc,0xcc,0x78, -}; - -static const BitmapCharRec ch170 = {7,9,0,-8,8,ch170data}; - -/* char: 0xa9 */ - -static const GLubyte ch169data[] = { -0x7,0xf0,0x0,0x1c,0x1c,0x0,0x30,0x6,0x0,0x61,0xc3,0x0,0x47,0x71,0x0,0xc4, -0x19,0x80,0x8c,0x0,0x80,0x88,0x0,0x80,0x88,0x0,0x80,0x88,0x0,0x80,0x8c,0x0, -0x80,0xc4,0x19,0x80,0x47,0x31,0x0,0x61,0xe3,0x0,0x30,0x6,0x0,0x1c,0x1c,0x0, -0x7,0xf0,0x0, -}; - -static const BitmapCharRec ch169 = {17,17,-1,0,19,ch169data}; - -/* char: 0xa8 */ - -static const GLubyte ch168data[] = { -0xcc,0xcc, -}; - -static const BitmapCharRec ch168 = {6,2,-1,-14,8,ch168data}; - -/* char: 0xa7 */ - -static const GLubyte ch167data[] = { -0x38,0x64,0x62,0x6,0xe,0x1c,0x38,0x74,0xe2,0xc3,0x83,0x87,0x4e,0x3c,0x38,0x70, -0x60,0x46,0x26,0x1c, -}; - -static const BitmapCharRec ch167 = {8,20,-2,2,12,ch167data}; - -/* char: 0xa6 */ - -static const GLubyte ch166data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0x0,0x0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0, -}; - -static const BitmapCharRec ch166 = {2,17,-2,0,6,ch166data}; - -/* char: 0xa5 */ - -static const GLubyte ch165data[] = { -0xf,0xc0,0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0,0x1f,0xe0,0x3,0x0,0x1f,0xe0, -0x3,0x0,0x7,0x80,0xc,0x80,0xc,0xc0,0x18,0x40,0x18,0x60,0x30,0x20,0x70,0x30, -0xf8,0x7c, -}; - -static const BitmapCharRec ch165 = {14,17,0,0,14,ch165data}; - -/* char: 0xa4 */ - -static const GLubyte ch164data[] = { -0xc0,0x60,0xee,0xe0,0x7f,0xc0,0x31,0x80,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x31,0x80,0x7f,0xc0,0xee,0xe0,0xc0,0x60, -}; - -static const BitmapCharRec ch164 = {11,12,-1,-3,13,ch164data}; - -/* char: 0xa3 */ - -static const GLubyte ch163data[] = { -0xe7,0x80,0xbe,0xc0,0x78,0x40,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0, -0x30,0x0,0xfc,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x31,0x80,0x19,0x80, -0xf,0x0, -}; - -static const BitmapCharRec ch163 = {10,17,-1,0,12,ch163data}; - -/* char: 0xa2 */ - -static const GLubyte ch162data[] = { -0x40,0x0,0x40,0x0,0x3e,0x0,0x7f,0x0,0x70,0x80,0xd0,0x0,0xc8,0x0,0xc8,0x0, -0xc8,0x0,0xc4,0x0,0xc4,0x0,0x43,0x80,0x63,0x80,0x1f,0x0,0x1,0x0,0x1,0x0, -}; - -static const BitmapCharRec ch162 = {9,16,-1,2,12,ch162data}; - -/* char: 0xa1 */ - -static const GLubyte ch161data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0x0,0x0,0xc0, -0xc0, -}; - -static const BitmapCharRec ch161 = {2,17,-4,5,8,ch161data}; - -/* char: 0xa0 */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch160data[] = { 0x0 }; -static const BitmapCharRec ch160 = {1,1,0,0,6,ch160data}; -#else -static const BitmapCharRec ch160 = {0,0,0,0,6,0}; -#endif - -/* char: 0x7e '~' */ - -static const GLubyte ch126data[] = { -0x83,0x80,0xc7,0xc0,0x7c,0x60,0x38,0x20, -}; - -static const BitmapCharRec ch126 = {11,4,-1,-5,13,ch126data}; - -/* char: 0x7d '}' */ - -static const GLubyte ch125data[] = { -0xe0,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x8,0xc,0x4,0x3,0x4,0xc,0x8,0x18, -0x18,0x18,0x18,0x18,0x30,0xe0, -}; - -static const BitmapCharRec ch125 = {8,22,-1,5,10,ch125data}; - -/* char: 0x7c '|' */ - -static const GLubyte ch124data[] = { -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0, -}; - -static const BitmapCharRec ch124 = {2,17,-2,0,6,ch124data}; - -/* char: 0x7b '{' */ - -static const GLubyte ch123data[] = { -0x7,0xc,0x18,0x18,0x18,0x18,0x18,0x18,0x10,0x30,0x20,0xc0,0x20,0x30,0x10,0x18, -0x18,0x18,0x18,0x18,0xc,0x7, -}; - -static const BitmapCharRec ch123 = {8,22,-1,5,10,ch123data}; - -/* char: 0x7a 'z' */ - -static const GLubyte ch122data[] = { -0xff,0xc3,0x61,0x70,0x30,0x38,0x18,0x1c,0xe,0x86,0xc3,0xff, -}; - -static const BitmapCharRec ch122 = {8,12,-1,0,10,ch122data}; - -/* char: 0x79 'y' */ - -static const GLubyte ch121data[] = { -0xe0,0x0,0xf0,0x0,0x18,0x0,0x8,0x0,0xc,0x0,0x4,0x0,0xe,0x0,0xe,0x0, -0x1a,0x0,0x19,0x0,0x19,0x0,0x31,0x0,0x30,0x80,0x30,0x80,0x60,0x80,0x60,0xc0, -0xf1,0xe0, -}; - -static const BitmapCharRec ch121 = {11,17,0,5,11,ch121data}; - -/* char: 0x78 'x' */ - -static const GLubyte ch120data[] = { -0xf1,0xe0,0x60,0xc0,0x21,0x80,0x33,0x80,0x1b,0x0,0xe,0x0,0xc,0x0,0x1a,0x0, -0x39,0x0,0x31,0x80,0x60,0xc0,0xf1,0xe0, -}; - -static const BitmapCharRec ch120 = {11,12,-1,0,13,ch120data}; - -/* char: 0x77 'w' */ - -static const GLubyte ch119data[] = { -0x4,0x10,0x0,0xe,0x38,0x0,0xe,0x38,0x0,0x1a,0x28,0x0,0x1a,0x64,0x0,0x19, -0x64,0x0,0x31,0x64,0x0,0x30,0xc2,0x0,0x30,0xc2,0x0,0x60,0xc2,0x0,0x60,0xc3, -0x0,0xf1,0xe7,0x80, -}; - -static const BitmapCharRec ch119 = {17,12,0,0,17,ch119data}; - -/* char: 0x76 'v' */ - -static const GLubyte ch118data[] = { -0x4,0x0,0xe,0x0,0xe,0x0,0x1a,0x0,0x19,0x0,0x19,0x0,0x31,0x0,0x30,0x80, -0x30,0x80,0x60,0x80,0x60,0xc0,0xf1,0xe0, -}; - -static const BitmapCharRec ch118 = {11,12,0,0,11,ch118data}; - -/* char: 0x75 'u' */ - -static const GLubyte ch117data[] = { -0x1c,0xe0,0x3e,0xc0,0x71,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0xe1,0xc0, -}; - -static const BitmapCharRec ch117 = {11,12,-1,0,13,ch117data}; - -/* char: 0x74 't' */ - -static const GLubyte ch116data[] = { -0x1c,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xfe,0x70,0x30,0x10, -}; - -static const BitmapCharRec ch116 = {7,15,0,0,7,ch116data}; - -/* char: 0x73 's' */ - -static const GLubyte ch115data[] = { -0xf8,0xc6,0x83,0x3,0x7,0x1e,0x7c,0x70,0xe0,0xc2,0x66,0x3e, -}; - -static const BitmapCharRec ch115 = {8,12,-1,0,10,ch115data}; - -/* char: 0x72 'r' */ - -static const GLubyte ch114data[] = { -0xf0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x76,0x6e,0xe6, -}; - -static const BitmapCharRec ch114 = {7,12,-1,0,8,ch114data}; - -/* char: 0x71 'q' */ - -static const GLubyte ch113data[] = { -0x3,0xc0,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x1d,0x80,0x73,0x80,0x61,0x80, -0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0x61,0x80,0x73,0x80, -0x1d,0x80, -}; - -static const BitmapCharRec ch113 = {10,17,-1,5,12,ch113data}; - -/* char: 0x70 'p' */ - -static const GLubyte ch112data[] = { -0xf0,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0x6e,0x0,0x73,0x80,0x61,0x80, -0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x61,0x80,0x73,0x80, -0xee,0x0, -}; - -static const BitmapCharRec ch112 = {10,17,-1,5,12,ch112data}; - -/* char: 0x6f 'o' */ - -static const GLubyte ch111data[] = { -0x1e,0x0,0x73,0x80,0x61,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0x61,0x80,0x73,0x80,0x1e,0x0, -}; - -static const BitmapCharRec ch111 = {10,12,-1,0,12,ch111data}; - -/* char: 0x6e 'n' */ - -static const GLubyte ch110data[] = { -0xf1,0xe0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x71,0xc0,0x6f,0x80,0xe7,0x0, -}; - -static const BitmapCharRec ch110 = {11,12,-1,0,13,ch110data}; - -/* char: 0x6d 'm' */ - -static const GLubyte ch109data[] = { -0xf1,0xe3,0xc0,0x60,0xc1,0x80,0x60,0xc1,0x80,0x60,0xc1,0x80,0x60,0xc1,0x80,0x60, -0xc1,0x80,0x60,0xc1,0x80,0x60,0xc1,0x80,0x60,0xc1,0x80,0x71,0xe3,0x80,0x6f,0x9f, -0x0,0xe7,0xe,0x0, -}; - -static const BitmapCharRec ch109 = {18,12,-1,0,20,ch109data}; - -/* char: 0x6c 'l' */ - -static const GLubyte ch108data[] = { -0xf0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, -0xe0, -}; - -static const BitmapCharRec ch108 = {4,17,-1,0,6,ch108data}; - -/* char: 0x6b 'k' */ - -static const GLubyte ch107data[] = { -0xf3,0xe0,0x61,0xc0,0x63,0x80,0x67,0x0,0x6e,0x0,0x6c,0x0,0x78,0x0,0x68,0x0, -0x64,0x0,0x66,0x0,0x63,0x0,0x67,0xc0,0x60,0x0,0x60,0x0,0x60,0x0,0x60,0x0, -0xe0,0x0, -}; - -static const BitmapCharRec ch107 = {11,17,-1,0,12,ch107data}; - -/* char: 0x6a 'j' */ - -static const GLubyte ch106data[] = { -0xc0,0xe0,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, -0x70,0x0,0x0,0x0,0x30,0x30, -}; - -static const BitmapCharRec ch106 = {4,22,0,5,6,ch106data}; - -/* char: 0x69 'i' */ - -static const GLubyte ch105data[] = { -0xf0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x0,0x0,0x0,0x60, -0x60, -}; - -static const BitmapCharRec ch105 = {4,17,-1,0,6,ch105data}; - -/* char: 0x68 'h' */ - -static const GLubyte ch104data[] = { -0xf1,0xe0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x71,0xc0,0x6f,0x80,0x67,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0x60,0x0, -0xe0,0x0, -}; - -static const BitmapCharRec ch104 = {11,17,-1,0,13,ch104data}; - -/* char: 0x67 'g' */ - -static const GLubyte ch103data[] = { -0x3f,0x0,0xf1,0xc0,0xc0,0x60,0xc0,0x20,0x60,0x60,0x3f,0xc0,0x7f,0x0,0x60,0x0, -0x30,0x0,0x3e,0x0,0x33,0x0,0x61,0x80,0x61,0x80,0x61,0x80,0x61,0x80,0x33,0x0, -0x1f,0xc0, -}; - -static const BitmapCharRec ch103 = {11,17,-1,5,12,ch103data}; - -/* char: 0x66 'f' */ - -static const GLubyte ch102data[] = { -0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xfe,0x30,0x30,0x30,0x16, -0xe, -}; - -static const BitmapCharRec ch102 = {7,17,0,0,7,ch102data}; - -/* char: 0x65 'e' */ - -static const GLubyte ch101data[] = { -0x1e,0x0,0x7f,0x0,0x70,0x80,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xff,0x80, -0xc1,0x80,0x41,0x80,0x63,0x0,0x1e,0x0, -}; - -static const BitmapCharRec ch101 = {9,12,-1,0,11,ch101data}; - -/* char: 0x64 'd' */ - -static const GLubyte ch100data[] = { -0x1e,0xc0,0x73,0x80,0x61,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80,0xc1,0x80, -0xc1,0x80,0x61,0x80,0x73,0x80,0x1d,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80, -0x3,0x80, -}; - -static const BitmapCharRec ch100 = {10,17,-1,0,12,ch100data}; - -/* char: 0x63 'c' */ - -static const GLubyte ch99data[] = { -0x1e,0x0,0x7f,0x0,0x70,0x80,0xe0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0, -0xc0,0x0,0x41,0x80,0x63,0x80,0x1f,0x0, -}; - -static const BitmapCharRec ch99 = {9,12,-1,0,11,ch99data}; - -/* char: 0x62 'b' */ - -static const GLubyte ch98data[] = { -0x5e,0x0,0x73,0x80,0x61,0x80,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0,0x60,0xc0, -0x60,0xc0,0x61,0x80,0x73,0x80,0x6e,0x0,0x60,0x0,0x60,0x0,0x60,0x0,0x60,0x0, -0xe0,0x0, -}; - -static const BitmapCharRec ch98 = {10,17,-1,0,12,ch98data}; - -/* char: 0x61 'a' */ - -static const GLubyte ch97data[] = { -0x71,0x80,0xfb,0x0,0xc7,0x0,0xc3,0x0,0xc3,0x0,0x63,0x0,0x3b,0x0,0xf,0x0, -0x3,0x0,0x63,0x0,0x67,0x0,0x3e,0x0, -}; - -static const BitmapCharRec ch97 = {9,12,-1,0,11,ch97data}; - -/* char: 0x60 '`' */ - -static const GLubyte ch96data[] = { -0x60,0xe0,0x80,0xc0,0x60, -}; - -static const BitmapCharRec ch96 = {3,5,-2,-12,7,ch96data}; - -/* char: 0x5f '_' */ - -static const GLubyte ch95data[] = { -0xff,0xf8,0xff,0xf8, -}; - -static const BitmapCharRec ch95 = {13,2,0,5,13,ch95data}; - -/* char: 0x5e '^' */ - -static const GLubyte ch94data[] = { -0x80,0x80,0xc1,0x80,0x41,0x0,0x63,0x0,0x22,0x0,0x36,0x0,0x14,0x0,0x1c,0x0, -0x8,0x0, -}; - -static const BitmapCharRec ch94 = {9,9,-1,-8,11,ch94data}; - -/* char: 0x5d ']' */ - -static const GLubyte ch93data[] = { -0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0xf8, -}; - -static const BitmapCharRec ch93 = {5,21,-1,4,8,ch93data}; - -/* char: 0x5c '\' */ - -static const GLubyte ch92data[] = { -0x6,0x6,0x4,0xc,0xc,0x8,0x18,0x18,0x10,0x30,0x30,0x20,0x60,0x60,0x40,0xc0, -0xc0, -}; - -static const BitmapCharRec ch92 = {7,17,0,0,7,ch92data}; - -/* char: 0x5b '[' */ - -static const GLubyte ch91data[] = { -0xf8,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0xc0,0xc0,0xf8, -}; - -static const BitmapCharRec ch91 = {5,21,-2,4,8,ch91data}; - -/* char: 0x5a 'Z' */ - -static const GLubyte ch90data[] = { -0xff,0xf8,0xe0,0x18,0x70,0x8,0x30,0x8,0x38,0x0,0x18,0x0,0x1c,0x0,0xe,0x0, -0x6,0x0,0x7,0x0,0x3,0x0,0x3,0x80,0x1,0xc0,0x80,0xc0,0x80,0xe0,0xc0,0x70, -0xff,0xf0, -}; - -static const BitmapCharRec ch90 = {13,17,-1,0,15,ch90data}; - -/* char: 0x59 'Y' */ - -static const GLubyte ch89data[] = { -0x7,0xe0,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x1,0x80,0x3,0xc0, -0x3,0x40,0x6,0x60,0x6,0x20,0xc,0x30,0x1c,0x10,0x18,0x18,0x38,0x8,0x30,0xc, -0xfc,0x3f, -}; - -static const BitmapCharRec ch89 = {16,17,0,0,16,ch89data}; - -/* char: 0x58 'X' */ - -static const GLubyte ch88data[] = { -0xfc,0xf,0xc0,0x30,0x3,0x80,0x18,0x7,0x0,0x8,0xe,0x0,0x4,0xc,0x0,0x6, -0x18,0x0,0x2,0x38,0x0,0x1,0x70,0x0,0x0,0xe0,0x0,0x0,0xc0,0x0,0x1,0xc0, -0x0,0x3,0xa0,0x0,0x3,0x10,0x0,0x6,0x8,0x0,0xe,0xc,0x0,0x1c,0x6,0x0, -0x7e,0xf,0x80, -}; - -static const BitmapCharRec ch88 = {18,17,0,0,18,ch88data}; - -/* char: 0x57 'W' */ - -static const GLubyte ch87data[] = { -0x1,0x83,0x0,0x1,0x83,0x0,0x1,0x83,0x80,0x3,0x87,0x80,0x3,0x46,0x80,0x3, -0x46,0xc0,0x6,0x46,0x40,0x6,0x4c,0x40,0x6,0x4c,0x60,0xc,0x2c,0x60,0xc,0x2c, -0x20,0x18,0x2c,0x20,0x18,0x18,0x30,0x18,0x18,0x10,0x30,0x18,0x10,0x30,0x18,0x18, -0xfc,0x7e,0x7e, -}; - -static const BitmapCharRec ch87 = {23,17,0,0,23,ch87data}; - -/* char: 0x56 'V' */ - -static const GLubyte ch86data[] = { -0x1,0x80,0x0,0x1,0x80,0x0,0x1,0x80,0x0,0x3,0xc0,0x0,0x3,0x40,0x0,0x3, -0x60,0x0,0x6,0x20,0x0,0x6,0x20,0x0,0x6,0x30,0x0,0xc,0x10,0x0,0xc,0x18, -0x0,0x18,0x8,0x0,0x18,0x8,0x0,0x18,0xc,0x0,0x30,0x4,0x0,0x30,0x6,0x0, -0xfc,0x1f,0x80, -}; - -static const BitmapCharRec ch86 = {17,17,0,0,17,ch86data}; - -/* char: 0x55 'U' */ - -static const GLubyte ch85data[] = { -0x7,0xe0,0x1c,0x30,0x18,0x8,0x30,0x8,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4,0x30,0x4, -0xfc,0x1f, -}; - -static const BitmapCharRec ch85 = {16,17,-1,0,18,ch85data}; - -/* char: 0x54 'T' */ - -static const GLubyte ch84data[] = { -0xf,0xc0,0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0, -0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0,0x83,0x4,0x83,0x4,0xc3,0xc, -0xff,0xfc, -}; - -static const BitmapCharRec ch84 = {14,17,-1,0,16,ch84data}; - -/* char: 0x53 'S' */ - -static const GLubyte ch83data[] = { -0x9e,0x0,0xf1,0x80,0xc0,0xc0,0x80,0x60,0x80,0x60,0x0,0x60,0x0,0xe0,0x3,0xc0, -0xf,0x80,0x1e,0x0,0x78,0x0,0xe0,0x0,0xc0,0x40,0xc0,0x40,0xc0,0xc0,0x63,0xc0, -0x1e,0x40, -}; - -static const BitmapCharRec ch83 = {11,17,-1,0,13,ch83data}; - -/* char: 0x52 'R' */ - -static const GLubyte ch82data[] = { -0xfc,0x1e,0x30,0x1c,0x30,0x38,0x30,0x70,0x30,0x60,0x30,0xc0,0x31,0xc0,0x33,0x80, -0x3f,0xc0,0x30,0x70,0x30,0x30,0x30,0x38,0x30,0x18,0x30,0x38,0x30,0x30,0x30,0x70, -0xff,0xc0, -}; - -static const BitmapCharRec ch82 = {15,17,-1,0,16,ch82data}; - -/* char: 0x51 'Q' */ - -static const GLubyte ch81data[] = { -0x0,0xf,0x0,0x38,0x0,0x70,0x0,0xe0,0x1,0xc0,0x7,0xe0,0x1c,0x38,0x38,0x1c, -0x60,0x6,0x60,0x6,0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3, -0xc0,0x3,0x60,0x6,0x60,0x6,0x38,0x1c,0x1c,0x38,0x7,0xe0, -}; - -static const BitmapCharRec ch81 = {16,22,-1,5,18,ch81data}; - -/* char: 0x50 'P' */ - -static const GLubyte ch80data[] = { -0xfc,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0, -0x3f,0xc0,0x30,0x70,0x30,0x30,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x30,0x30,0x70, -0xff,0xc0, -}; - -static const BitmapCharRec ch80 = {13,17,-1,0,15,ch80data}; - -/* char: 0x4f 'O' */ - -static const GLubyte ch79data[] = { -0x7,0xe0,0x1c,0x38,0x38,0x1c,0x60,0x6,0x60,0x6,0xc0,0x3,0xc0,0x3,0xc0,0x3, -0xc0,0x3,0xc0,0x3,0xc0,0x3,0xc0,0x3,0x60,0x6,0x60,0x6,0x38,0x1c,0x1c,0x38, -0x7,0xe0, -}; - -static const BitmapCharRec ch79 = {16,17,-1,0,18,ch79data}; - -/* char: 0x4e 'N' */ - -static const GLubyte ch78data[] = { -0xf8,0xc,0x20,0x1c,0x20,0x1c,0x20,0x34,0x20,0x64,0x20,0x64,0x20,0xc4,0x21,0x84, -0x21,0x84,0x23,0x4,0x26,0x4,0x26,0x4,0x2c,0x4,0x38,0x4,0x38,0x4,0x30,0x4, -0xf0,0x1f, -}; - -static const BitmapCharRec ch78 = {16,17,-1,0,18,ch78data}; - -/* char: 0x4d 'M' */ - -static const GLubyte ch77data[] = { -0xf8,0x21,0xf8,0x20,0x60,0x60,0x20,0x60,0x60,0x20,0xd0,0x60,0x20,0xd0,0x60,0x21, -0x88,0x60,0x21,0x88,0x60,0x23,0x8,0x60,0x23,0x4,0x60,0x26,0x4,0x60,0x26,0x2, -0x60,0x2c,0x2,0x60,0x2c,0x2,0x60,0x38,0x1,0x60,0x38,0x1,0x60,0x30,0x0,0xe0, -0xf0,0x0,0xf8, -}; - -static const BitmapCharRec ch77 = {21,17,-1,0,22,ch77data}; - -/* char: 0x4c 'L' */ - -static const GLubyte ch76data[] = { -0xff,0xf8,0x30,0x18,0x30,0x8,0x30,0x8,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0, -0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0, -0xfc,0x0, -}; - -static const BitmapCharRec ch76 = {13,17,-1,0,14,ch76data}; - -/* char: 0x4b 'K' */ - -static const GLubyte ch75data[] = { -0xfc,0x1f,0x30,0xe,0x30,0x1c,0x30,0x38,0x30,0x70,0x30,0xe0,0x31,0xc0,0x33,0x80, -0x3f,0x0,0x3e,0x0,0x33,0x0,0x31,0x80,0x30,0xc0,0x30,0x60,0x30,0x30,0x30,0x18, -0xfc,0x7e, -}; - -static const BitmapCharRec ch75 = {16,17,-1,0,17,ch75data}; - -/* char: 0x4a 'J' */ - -static const GLubyte ch74data[] = { -0x78,0x0,0xcc,0x0,0xc6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0, -0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0, -0x1f,0x80, -}; - -static const BitmapCharRec ch74 = {9,17,-1,0,11,ch74data}; - -/* char: 0x49 'I' */ - -static const GLubyte ch73data[] = { -0xfc,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, -0xfc, -}; - -static const BitmapCharRec ch73 = {6,17,-1,0,8,ch73data}; - -/* char: 0x48 'H' */ - -static const GLubyte ch72data[] = { -0xfc,0x1f,0x80,0x30,0x6,0x0,0x30,0x6,0x0,0x30,0x6,0x0,0x30,0x6,0x0,0x30, -0x6,0x0,0x30,0x6,0x0,0x30,0x6,0x0,0x3f,0xfe,0x0,0x30,0x6,0x0,0x30,0x6, -0x0,0x30,0x6,0x0,0x30,0x6,0x0,0x30,0x6,0x0,0x30,0x6,0x0,0x30,0x6,0x0, -0xfc,0x1f,0x80, -}; - -static const BitmapCharRec ch72 = {17,17,-1,0,19,ch72data}; - -/* char: 0x47 'G' */ - -static const GLubyte ch71data[] = { -0x7,0xe0,0x1e,0x38,0x38,0x1c,0x60,0xc,0x60,0xc,0xc0,0xc,0xc0,0xc,0xc0,0x3f, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0x60,0x4,0x60,0x4,0x38,0xc,0x1c,0x3c, -0x7,0xe4, -}; - -static const BitmapCharRec ch71 = {16,17,-1,0,18,ch71data}; - -/* char: 0x46 'F' */ - -static const GLubyte ch70data[] = { -0xfc,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x0,0x30,0x20,0x30,0x20, -0x3f,0xe0,0x30,0x20,0x30,0x20,0x30,0x0,0x30,0x0,0x30,0x10,0x30,0x10,0x30,0x30, -0xff,0xf0, -}; - -static const BitmapCharRec ch70 = {12,17,-1,0,14,ch70data}; - -/* char: 0x45 'E' */ - -static const GLubyte ch69data[] = { -0xff,0xf8,0x30,0x18,0x30,0x8,0x30,0x8,0x30,0x0,0x30,0x0,0x30,0x40,0x30,0x40, -0x3f,0xc0,0x30,0x40,0x30,0x40,0x30,0x0,0x30,0x0,0x30,0x10,0x30,0x10,0x30,0x30, -0xff,0xf0, -}; - -static const BitmapCharRec ch69 = {13,17,-1,0,15,ch69data}; - -/* char: 0x44 'D' */ - -static const GLubyte ch68data[] = { -0xff,0xc0,0x30,0x70,0x30,0x38,0x30,0xc,0x30,0xc,0x30,0x6,0x30,0x6,0x30,0x6, -0x30,0x6,0x30,0x6,0x30,0x6,0x30,0x6,0x30,0xc,0x30,0xc,0x30,0x38,0x30,0x70, -0xff,0xc0, -}; - -static const BitmapCharRec ch68 = {15,17,-1,0,17,ch68data}; - -/* char: 0x43 'C' */ - -static const GLubyte ch67data[] = { -0x7,0xe0,0x1e,0x38,0x38,0x8,0x60,0x4,0x60,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0, -0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0x60,0x4,0x60,0x4,0x38,0xc,0x1c,0x3c, -0x7,0xe4, -}; - -static const BitmapCharRec ch67 = {14,17,-1,0,16,ch67data}; - -/* char: 0x42 'B' */ - -static const GLubyte ch66data[] = { -0xff,0xe0,0x30,0x78,0x30,0x18,0x30,0xc,0x30,0xc,0x30,0xc,0x30,0x18,0x30,0x38, -0x3f,0xe0,0x30,0x40,0x30,0x30,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x30,0x30,0x70, -0xff,0xc0, -}; - -static const BitmapCharRec ch66 = {14,17,-1,0,16,ch66data}; - -/* char: 0x41 'A' */ - -static const GLubyte ch65data[] = { -0xfc,0x1f,0x80,0x30,0x6,0x0,0x10,0x6,0x0,0x10,0xc,0x0,0x18,0xc,0x0,0x8, -0xc,0x0,0xf,0xf8,0x0,0xc,0x18,0x0,0x4,0x18,0x0,0x4,0x30,0x0,0x6,0x30, -0x0,0x2,0x30,0x0,0x2,0x60,0x0,0x1,0x60,0x0,0x1,0xc0,0x0,0x1,0xc0,0x0, -0x0,0x80,0x0, -}; - -static const BitmapCharRec ch65 = {17,17,0,0,17,ch65data}; - -/* char: 0x40 '@' */ - -static const GLubyte ch64data[] = { -0x3,0xf0,0x0,0xe,0xc,0x0,0x18,0x0,0x0,0x30,0x0,0x0,0x61,0xde,0x0,0x63, -0x7b,0x0,0xc6,0x39,0x80,0xc6,0x18,0x80,0xc6,0x18,0xc0,0xc6,0x18,0x40,0xc6,0xc, -0x40,0xc3,0xc,0x40,0xc3,0x8c,0x40,0xe1,0xfc,0x40,0x60,0xec,0xc0,0x70,0x0,0x80, -0x38,0x1,0x80,0x1c,0x3,0x0,0xf,0xe,0x0,0x3,0xf8,0x0, -}; - -static const BitmapCharRec ch64 = {18,20,-2,3,22,ch64data}; - -/* char: 0x3f '?' */ - -static const GLubyte ch63data[] = { -0x30,0x30,0x0,0x0,0x10,0x10,0x10,0x18,0x18,0xc,0xe,0x7,0xc3,0xc3,0x83,0xc6, -0x7c, -}; - -static const BitmapCharRec ch63 = {8,17,-2,0,11,ch63data}; - -/* char: 0x3e '>' */ - -static const GLubyte ch62data[] = { -0xc0,0x0,0x70,0x0,0x1c,0x0,0x7,0x0,0x1,0xc0,0x0,0x60,0x1,0xc0,0x7,0x0, -0x1c,0x0,0x70,0x0,0xc0,0x0, -}; - -static const BitmapCharRec ch62 = {11,11,-1,-1,13,ch62data}; - -/* char: 0x3d '=' */ - -static const GLubyte ch61data[] = { -0xff,0xf0,0xff,0xf0,0x0,0x0,0x0,0x0,0xff,0xf0,0xff,0xf0, -}; - -static const BitmapCharRec ch61 = {12,6,-1,-4,14,ch61data}; - -/* char: 0x3c '<' */ - -static const GLubyte ch60data[] = { -0x0,0x60,0x1,0xc0,0x7,0x0,0x1c,0x0,0x70,0x0,0xc0,0x0,0x70,0x0,0x1c,0x0, -0x7,0x0,0x1,0xc0,0x0,0x60, -}; - -static const BitmapCharRec ch60 = {11,11,-1,-1,13,ch60data}; - -/* char: 0x3b ';' */ - -static const GLubyte ch59data[] = { -0xc0,0x60,0x20,0xe0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch59 = {3,14,-2,3,7,ch59data}; - -/* char: 0x3a ':' */ - -static const GLubyte ch58data[] = { -0xc0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0xc0, -}; - -static const BitmapCharRec ch58 = {2,11,-2,0,6,ch58data}; - -/* char: 0x39 '9' */ - -static const GLubyte ch57data[] = { -0xf0,0x0,0x1c,0x0,0x6,0x0,0x3,0x0,0x3,0x80,0x1,0x80,0x1d,0x80,0x73,0xc0, -0x61,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc1,0xc0,0x61,0x80,0x77,0x80, -0x1e,0x0, -}; - -static const BitmapCharRec ch57 = {10,17,-1,0,12,ch57data}; - -/* char: 0x38 '8' */ - -static const GLubyte ch56data[] = { -0x1e,0x0,0x73,0x80,0xe1,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x41,0xc0,0x61,0x80, -0x37,0x0,0x1e,0x0,0x1e,0x0,0x33,0x0,0x61,0x80,0x61,0x80,0x61,0x80,0x33,0x0, -0x1e,0x0, -}; - -static const BitmapCharRec ch56 = {10,17,-1,0,12,ch56data}; - -/* char: 0x37 '7' */ - -static const GLubyte ch55data[] = { -0x18,0x0,0x18,0x0,0xc,0x0,0xc,0x0,0xc,0x0,0x4,0x0,0x6,0x0,0x6,0x0, -0x2,0x0,0x3,0x0,0x3,0x0,0x1,0x0,0x1,0x80,0x81,0x80,0xc0,0xc0,0xff,0xc0, -0x7f,0xc0, -}; - -static const BitmapCharRec ch55 = {10,17,-1,0,12,ch55data}; - -/* char: 0x36 '6' */ - -static const GLubyte ch54data[] = { -0x1e,0x0,0x7b,0x80,0x61,0x80,0xe0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc1,0x80,0xf3,0x80,0xee,0x0,0x60,0x0,0x70,0x0,0x30,0x0,0x18,0x0,0xe,0x0, -0x3,0xc0, -}; - -static const BitmapCharRec ch54 = {10,17,-1,0,12,ch54data}; - -/* char: 0x35 '5' */ - -static const GLubyte ch53data[] = { -0x7e,0x0,0xe3,0x80,0xc1,0x80,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x0,0xc0,0x1,0xc0, -0x3,0x80,0xf,0x80,0x7e,0x0,0x78,0x0,0x60,0x0,0x20,0x0,0x20,0x0,0x1f,0x80, -0x1f,0xc0, -}; - -static const BitmapCharRec ch53 = {10,17,-1,0,12,ch53data}; - -/* char: 0x34 '4' */ - -static const GLubyte ch52data[] = { -0x3,0x0,0x3,0x0,0x3,0x0,0x3,0x0,0xff,0xc0,0xff,0xc0,0xc3,0x0,0x43,0x0, -0x63,0x0,0x23,0x0,0x33,0x0,0x13,0x0,0x1b,0x0,0xb,0x0,0x7,0x0,0x7,0x0, -0x3,0x0, -}; - -static const BitmapCharRec ch52 = {10,17,-1,0,12,ch52data}; - -/* char: 0x33 '3' */ - -static const GLubyte ch51data[] = { -0x78,0x0,0xe6,0x0,0xc3,0x0,0x1,0x0,0x1,0x80,0x1,0x80,0x1,0x80,0x3,0x80, -0x7,0x0,0x1e,0x0,0xc,0x0,0x6,0x0,0x83,0x0,0x83,0x0,0x47,0x0,0x7e,0x0, -0x1c,0x0, -}; - -static const BitmapCharRec ch51 = {9,17,-1,0,12,ch51data}; - -/* char: 0x32 '2' */ - -static const GLubyte ch50data[] = { -0xff,0x80,0xff,0xc0,0x60,0x40,0x30,0x0,0x18,0x0,0xc,0x0,0x4,0x0,0x6,0x0, -0x3,0x0,0x3,0x0,0x1,0x80,0x1,0x80,0x81,0x80,0x81,0x80,0x43,0x80,0x7f,0x0, -0x1c,0x0, -}; - -static const BitmapCharRec ch50 = {10,17,-1,0,12,ch50data}; - -/* char: 0x31 '1' */ - -static const GLubyte ch49data[] = { -0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x78,0x18, -0x8, -}; - -static const BitmapCharRec ch49 = {8,17,-2,0,12,ch49data}; - -/* char: 0x30 '0' */ - -static const GLubyte ch48data[] = { -0x1e,0x0,0x33,0x0,0x61,0x80,0x61,0x80,0xe1,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x61,0x80,0x61,0x80,0x33,0x0, -0x1e,0x0, -}; - -static const BitmapCharRec ch48 = {10,17,-1,0,12,ch48data}; - -/* char: 0x2f '/' */ - -static const GLubyte ch47data[] = { -0xc0,0xc0,0xc0,0x60,0x60,0x20,0x30,0x30,0x10,0x18,0x18,0x8,0xc,0xc,0x4,0x6, -0x6,0x3,0x3,0x3, -}; - -static const BitmapCharRec ch47 = {8,20,1,3,7,ch47data}; - -/* char: 0x2e '.' */ - -static const GLubyte ch46data[] = { -0xc0,0xc0, -}; - -static const BitmapCharRec ch46 = {2,2,-2,0,6,ch46data}; - -/* char: 0x2d '-' */ - -static const GLubyte ch45data[] = { -0xff,0xf0,0xff,0xf0, -}; - -static const BitmapCharRec ch45 = {12,2,-1,-6,14,ch45data}; - -/* char: 0x2c ',' */ - -static const GLubyte ch44data[] = { -0xc0,0x60,0x20,0xe0,0xc0, -}; - -static const BitmapCharRec ch44 = {3,5,-2,3,7,ch44data}; - -/* char: 0x2b '+' */ - -static const GLubyte ch43data[] = { -0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0,0xff,0xf0,0xff,0xf0,0x6,0x0, -0x6,0x0,0x6,0x0,0x6,0x0,0x6,0x0, -}; - -static const BitmapCharRec ch43 = {12,12,-1,-1,14,ch43data}; - -/* char: 0x2a '*' */ - -static const GLubyte ch42data[] = { -0x8,0x0,0x1c,0x0,0xc9,0x80,0xeb,0x80,0x1c,0x0,0xeb,0x80,0xc9,0x80,0x1c,0x0, -0x8,0x0, -}; - -static const BitmapCharRec ch42 = {9,9,-2,-8,12,ch42data}; - -/* char: 0x29 ')' */ - -static const GLubyte ch41data[] = { -0x80,0x40,0x20,0x30,0x10,0x18,0x18,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x18, -0x18,0x10,0x30,0x20,0x40,0x80, -}; - -static const BitmapCharRec ch41 = {6,22,-1,5,8,ch41data}; - -/* char: 0x28 '(' */ - -static const GLubyte ch40data[] = { -0x4,0x8,0x10,0x30,0x20,0x60,0x60,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x60, -0x60,0x20,0x30,0x10,0x8,0x4, -}; - -static const BitmapCharRec ch40 = {6,22,-1,5,8,ch40data}; - -/* char: 0x27 ''' */ - -static const GLubyte ch39data[] = { -0xc0,0x60,0x20,0xe0,0xc0, -}; - -static const BitmapCharRec ch39 = {3,5,-3,-12,8,ch39data}; - -/* char: 0x26 '&' */ - -static const GLubyte ch38data[] = { -0x3c,0x3c,0x7f,0x7e,0xe1,0xe1,0xc0,0xc0,0xc1,0xc0,0xc1,0xa0,0x63,0x20,0x37,0x10, -0x1e,0x18,0xe,0x3e,0xf,0x0,0x1d,0x80,0x18,0xc0,0x18,0x40,0x18,0x40,0xc,0xc0, -0x7,0x80, -}; - -static const BitmapCharRec ch38 = {16,17,-1,0,18,ch38data}; - -/* char: 0x25 '%' */ - -static const GLubyte ch37data[] = { -0x30,0x3c,0x0,0x18,0x72,0x0,0xc,0x61,0x0,0x4,0x60,0x80,0x6,0x60,0x80,0x3, -0x30,0x80,0x1,0x19,0x80,0x1,0x8f,0x0,0x78,0xc0,0x0,0xe4,0x40,0x0,0xc2,0x60, -0x0,0xc1,0x30,0x0,0xc1,0x10,0x0,0x61,0x18,0x0,0x33,0xfc,0x0,0x1e,0xc,0x0, -}; - -static const BitmapCharRec ch37 = {17,16,-1,0,19,ch37data}; - -/* char: 0x24 '$' */ - -static const GLubyte ch36data[] = { -0x4,0x0,0x4,0x0,0x3f,0x0,0xe5,0xc0,0xc4,0xc0,0x84,0x60,0x84,0x60,0x4,0x60, -0x4,0xe0,0x7,0xc0,0x7,0x80,0x1e,0x0,0x3c,0x0,0x74,0x0,0x64,0x0,0x64,0x20, -0x64,0x60,0x34,0xe0,0x1f,0x80,0x4,0x0,0x4,0x0, -}; - -static const BitmapCharRec ch36 = {11,21,0,2,12,ch36data}; - -/* char: 0x23 '#' */ - -static const GLubyte ch35data[] = { -0x22,0x0,0x22,0x0,0x22,0x0,0x22,0x0,0x22,0x0,0xff,0xc0,0xff,0xc0,0x11,0x0, -0x11,0x0,0x11,0x0,0x7f,0xe0,0x7f,0xe0,0x8,0x80,0x8,0x80,0x8,0x80,0x8,0x80, -0x8,0x80, -}; - -static const BitmapCharRec ch35 = {11,17,-1,0,13,ch35data}; - -/* char: 0x22 '"' */ - -static const GLubyte ch34data[] = { -0x88,0xcc,0xcc,0xcc,0xcc, -}; - -static const BitmapCharRec ch34 = {6,5,-1,-12,10,ch34data}; - -/* char: 0x21 '!' */ - -static const GLubyte ch33data[] = { -0xc0,0xc0,0x0,0x0,0x0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, -0xc0, -}; - -static const BitmapCharRec ch33 = {2,17,-3,0,8,ch33data}; - -/* char: 0x20 ' ' */ - -#ifdef _WIN32 -/* XXX Work around Microsoft OpenGL 1.1 bug where glBitmap with - a height or width of zero does not advance the raster position - as specified by OpenGL. (Cosmo OpenGL does not have this bug.) */ -static const GLubyte ch32data[] = { 0x0 }; -static const BitmapCharRec ch32 = {1,1,0,0,6,ch32data}; -#else -static const BitmapCharRec ch32 = {0,0,0,0,6,0}; -#endif - -static const BitmapCharRec * const chars[] = { -&ch32, -&ch33, -&ch34, -&ch35, -&ch36, -&ch37, -&ch38, -&ch39, -&ch40, -&ch41, -&ch42, -&ch43, -&ch44, -&ch45, -&ch46, -&ch47, -&ch48, -&ch49, -&ch50, -&ch51, -&ch52, -&ch53, -&ch54, -&ch55, -&ch56, -&ch57, -&ch58, -&ch59, -&ch60, -&ch61, -&ch62, -&ch63, -&ch64, -&ch65, -&ch66, -&ch67, -&ch68, -&ch69, -&ch70, -&ch71, -&ch72, -&ch73, -&ch74, -&ch75, -&ch76, -&ch77, -&ch78, -&ch79, -&ch80, -&ch81, -&ch82, -&ch83, -&ch84, -&ch85, -&ch86, -&ch87, -&ch88, -&ch89, -&ch90, -&ch91, -&ch92, -&ch93, -&ch94, -&ch95, -&ch96, -&ch97, -&ch98, -&ch99, -&ch100, -&ch101, -&ch102, -&ch103, -&ch104, -&ch105, -&ch106, -&ch107, -&ch108, -&ch109, -&ch110, -&ch111, -&ch112, -&ch113, -&ch114, -&ch115, -&ch116, -&ch117, -&ch118, -&ch119, -&ch120, -&ch121, -&ch122, -&ch123, -&ch124, -&ch125, -&ch126, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -&ch160, -&ch161, -&ch162, -&ch163, -&ch164, -&ch165, -&ch166, -&ch167, -&ch168, -&ch169, -&ch170, -&ch171, -&ch172, -&ch173, -&ch174, -&ch175, -&ch176, -&ch177, -&ch178, -&ch179, -&ch180, -&ch181, -&ch182, -&ch183, -&ch184, -&ch185, -&ch186, -&ch187, -&ch188, -&ch189, -&ch190, -&ch191, -&ch192, -&ch193, -&ch194, -&ch195, -&ch196, -&ch197, -&ch198, -&ch199, -&ch200, -&ch201, -&ch202, -&ch203, -&ch204, -&ch205, -&ch206, -&ch207, -&ch208, -&ch209, -&ch210, -&ch211, -&ch212, -&ch213, -&ch214, -&ch215, -&ch216, -&ch217, -&ch218, -&ch219, -&ch220, -&ch221, -&ch222, -&ch223, -&ch224, -&ch225, -&ch226, -&ch227, -&ch228, -&ch229, -&ch230, -&ch231, -&ch232, -&ch233, -&ch234, -&ch235, -&ch236, -&ch237, -&ch238, -&ch239, -&ch240, -&ch241, -&ch242, -&ch243, -&ch244, -&ch245, -&ch246, -&ch247, -&ch248, -&ch249, -&ch250, -&ch251, -&ch252, -&ch253, -&ch254, -&ch255, -}; - -const BitmapFontRec glutBitmapTimesRoman24 = { -"-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1", -224, -32, -chars -}; - diff --git a/lib/glut-3.7.6/lib/glut/glut_util.c b/lib/glut-3.7.6/lib/glut/glut_util.c deleted file mode 100644 index ae1a232cec78681b5e13198a7faca331cd650154..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_util.c +++ /dev/null @@ -1,86 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -#include "glutint.h" - -/* strdup is actually not a standard ANSI C or POSIX routine - so implement a private one for GLUT. OpenVMS does not have a - strdup; Linux's standard libc doesn't declare strdup by default - (unless BSD or SVID interfaces are requested). */ -char * -__glutStrdup(const char *string) -{ - char *copy; - - copy = (char*) malloc(strlen(string) + 1); - if (copy == NULL) - return NULL; - strcpy(copy, string); - return copy; -} - -void -__glutWarning(char *format,...) -{ - va_list args; - - va_start(args, format); - fprintf(stderr, "GLUT: Warning in %s: ", - __glutProgramName ? __glutProgramName : "(unamed)"); - vfprintf(stderr, format, args); - va_end(args); - putc('\n', stderr); -} - -/* CENTRY */ -void APIENTRY -glutReportErrors(void) -{ - GLenum error; - - while ((error = glGetError()) != GL_NO_ERROR) - __glutWarning("GL error: %s", gluErrorString(error)); -} -/* ENDCENTRY */ - -void -__glutFatalError(char *format,...) -{ - va_list args; - - va_start(args, format); - fprintf(stderr, "GLUT: Fatal Error in %s: ", - __glutProgramName ? __glutProgramName : "(unamed)"); - vfprintf(stderr, format, args); - va_end(args); - putc('\n', stderr); -#ifdef _WIN32 - if (__glutExitFunc) { - __glutExitFunc(1); - } -#endif - exit(1); -} - -void -__glutFatalUsage(char *format,...) -{ - va_list args; - - va_start(args, format); - fprintf(stderr, "GLUT: Fatal API Usage in %s: ", - __glutProgramName ? __glutProgramName : "(unamed)"); - vfprintf(stderr, format, args); - va_end(args); - putc('\n', stderr); - abort(); -} diff --git a/lib/glut-3.7.6/lib/glut/glut_vidresize.c b/lib/glut-3.7.6/lib/glut/glut_vidresize.c deleted file mode 100644 index e07db8f37ae994053b1632bf9834874c91cbcf18..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_vidresize.c +++ /dev/null @@ -1,230 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -#if !defined(_WIN32) -#include -#endif - -#ifdef __sgi -#include -#endif - -#include "glutint.h" - -/* Grumble. The IRIX 6.3 and early IRIX 6.4 OpenGL headers - support the video resize extension, but failed to define - GLX_SGIX_video_resize. */ -#ifdef GLX_SYNC_FRAME_SGIX -#define GLX_SGIX_video_resize 1 -#endif - -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) -static int canVideoResize = -1; -static int videoResizeChannel; -#else -static int canVideoResize = 0; -#endif -static int videoResizeInUse = 0; -static int dx = -1, dy = -1, dw = -1, dh = -1; - -/* XXX Note that IRIX 6.2, 6.3, and some 6.4 versions have a - bug where programs seg-fault when they attempt video - resizing from an indirect OpenGL context (either local or - over a network). */ - -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) - -static volatile int errorCaught; - -/* ARGSUSED */ -static -catchXSGIvcErrors(Display * dpy, XErrorEvent * event) -{ - errorCaught = 1; - return 0; -} -#endif - -/* CENTRY */ -int APIENTRY -glutVideoResizeGet(GLenum param) -{ -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) - if (canVideoResize < 0) { - canVideoResize = __glutIsSupportedByGLX("GLX_SGIX_video_resize"); - if (canVideoResize) { -#if __sgi - /* This is a hack because IRIX 6.2, 6.3, and some 6.4 - versions were released with GLX_SGIX_video_resize - being advertised by the X server though the video - resize extension is not actually supported. We try to - determine if the libGL.so we are using actually has a - video resize entrypoint before we try to use the - feature. */ - void (*func) (void); - void *glxDso = dlopen("libGL.so", RTLD_LAZY); - - func = (void (*)(void)) dlsym(glxDso, "glXQueryChannelDeltasSGIX"); - if (!func) { - canVideoResize = 0; - } else -#endif - { - char *channelString; - int (*handler) (Display *, XErrorEvent *); - - channelString = getenv("GLUT_VIDEO_RESIZE_CHANNEL"); - videoResizeChannel = channelString ? atoi(channelString) : 0; - - /* Work around another annoying problem with SGI's - GLX_SGIX_video_resize implementation. Early IRIX - 6.4 OpenGL's advertise the extension and have the - video resize API, but an XSGIvc X protocol errors - result trying to use the API. Set up an error - handler to intercept what would otherwise be a fatal - error. If an error was recieved, do not report that - video resize is possible. */ - handler = XSetErrorHandler(catchXSGIvcErrors); - - errorCaught = 0; - - glXQueryChannelDeltasSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, &dx, &dy, &dw, &dh); - - /* glXQueryChannelDeltasSGIX is an inherent X server - round-trip so we know we will have gotten either the - correct reply or and error by this time. */ - XSetErrorHandler(handler); - - /* Still yet another work around. In IRIX 6.4 betas, - glXQueryChannelDeltasSGIX will return as if it - succeeded, but the values are filled with junk. - Watch to make sure the delta variables really make - sense. */ - if (errorCaught || - dx < 0 || dy < 0 || dw < 0 || dh < 0 || - dx > 2048 || dy > 2048 || dw > 2048 || dh > 2048) { - canVideoResize = 0; - } - } - } - } -#endif /* GLX_SGIX_video_resize */ - - switch (param) { - case GLUT_VIDEO_RESIZE_POSSIBLE: - return canVideoResize; - case GLUT_VIDEO_RESIZE_IN_USE: - return videoResizeInUse; - case GLUT_VIDEO_RESIZE_X_DELTA: - return dx; - case GLUT_VIDEO_RESIZE_Y_DELTA: - return dy; - case GLUT_VIDEO_RESIZE_WIDTH_DELTA: - return dw; - case GLUT_VIDEO_RESIZE_HEIGHT_DELTA: - return dh; - case GLUT_VIDEO_RESIZE_X: - case GLUT_VIDEO_RESIZE_Y: - case GLUT_VIDEO_RESIZE_WIDTH: - case GLUT_VIDEO_RESIZE_HEIGHT: -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) - if (videoResizeInUse) { - int x, y, width, height; - - glXQueryChannelRectSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, &x, &y, &width, &height); - switch (param) { - case GLUT_VIDEO_RESIZE_X: - return x; - case GLUT_VIDEO_RESIZE_Y: - return y; - case GLUT_VIDEO_RESIZE_WIDTH: - return width; - case GLUT_VIDEO_RESIZE_HEIGHT: - return height; - } - } -#endif - return -1; - default: - __glutWarning("invalid glutVideoResizeGet parameter: %d", param); - return -1; - } -} - -void APIENTRY -glutSetupVideoResizing(void) -{ -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) - if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) { - glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, __glutCurrentWindow->win); - videoResizeInUse = 1; - } else -#endif - __glutFatalError("glutEstablishVideoResizing: video resizing not possible.\n"); -} - -void APIENTRY -glutStopVideoResizing(void) -{ -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) - if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) { - if (videoResizeInUse) { - glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, None); - videoResizeInUse = 0; - } - } -#endif -} - -/* ARGSUSED */ -void APIENTRY -glutVideoResize(int x, int y, int width, int height) -{ -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) - if (videoResizeInUse) { -#ifdef GLX_SYNC_SWAP_SGIX - /* glXChannelRectSyncSGIX introduced in a patch to IRIX - 6.2; the original unpatched IRIX 6.2 behavior is always - GLX_SYNC_SWAP_SGIX. */ - glXChannelRectSyncSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, GLX_SYNC_SWAP_SGIX); -#endif - glXChannelRectSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, x, y, width, height); - } -#endif -} - -/* ARGSUSED */ -void APIENTRY -glutVideoPan(int x, int y, int width, int height) -{ -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize) - if (videoResizeInUse) { -#ifdef GLX_SYNC_FRAME_SGIX - /* glXChannelRectSyncSGIX introduced in a patch to IRIX - 6.2; the original unpatched IRIX 6.2 behavior is always - GLX_SYNC_SWAP_SGIX. We just ignore that we cannot - accomplish GLX_SYNC_FRAME_SGIX on IRIX unpatched 6.2; - this means you'd need a glutSwapBuffers to actually - realize the video resize. */ - glXChannelRectSyncSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, GLX_SYNC_FRAME_SGIX); -#endif - glXChannelRectSGIX(__glutDisplay, __glutScreen, - videoResizeChannel, x, y, width, height); - } -#endif -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_warp.c b/lib/glut-3.7.6/lib/glut/glut_warp.c deleted file mode 100644 index a24ef2359342e0a5b5a556bffc857d320fddfdc1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_warp.c +++ /dev/null @@ -1,23 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutWarpPointer(int x, int y) -{ - XWarpPointer(__glutDisplay, None, __glutCurrentWindow->win, - 0, 0, 0, 0, x, y); - XFlush(__glutDisplay); -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glut_win.c b/lib/glut-3.7.6/lib/glut/glut_win.c deleted file mode 100644 index 74576504e2c3b7315c1e541c25157b8b99b01a8d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_win.c +++ /dev/null @@ -1,1014 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include -#if !defined(_WIN32) -#include -#include -#endif - -#include "glutint.h" - -GLUTwindow *__glutCurrentWindow = NULL; -GLUTwindow **__glutWindowList = NULL; -int __glutWindowListSize = 0; -#if !defined(_WIN32) -GLUTstale *__glutStaleWindowList = NULL; -#endif -GLUTwindow *__glutMenuWindow = NULL; - -void (*__glutFreeOverlayFunc) (GLUToverlay *); -XVisualInfo *(*__glutDetermineVisualFromString) (char *string, Bool * treatAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask, void** fbc) = NULL; - -static Criterion requiredWindowCriteria[] = -{ - {LEVEL, EQ, 0}, - {TRANSPARENT, EQ, 0} -}; -static int numRequiredWindowCriteria = sizeof(requiredWindowCriteria) / sizeof(Criterion); -static int requiredWindowCriteriaMask = (1 << LEVEL) | (1 << TRANSPARENT); - -static void -cleanWindowWorkList(GLUTwindow * window) -{ - GLUTwindow **pEntry = &__glutWindowWorkList; - GLUTwindow *entry = __glutWindowWorkList; - - /* Tranverse singly-linked window work list look for the - window. */ - while (entry) { - if (entry == window) { - /* Found it; delete it. */ - *pEntry = entry->prevWorkWin; - return; - } else { - pEntry = &entry->prevWorkWin; - entry = *pEntry; - } - } -} - -#if !defined(_WIN32) - -static void -cleanStaleWindowList(GLUTwindow * window) -{ - GLUTstale **pEntry = &__glutStaleWindowList; - GLUTstale *entry = __glutStaleWindowList; - - /* Tranverse singly-linked stale window list look for the - window ID. */ - while (entry) { - if (entry->window == window) { - /* Found it; delete it. */ - *pEntry = entry->next; - free(entry); - return; - } else { - pEntry = &entry->next; - entry = *pEntry; - } - } -} - -#endif - -static GLUTwindow *__glutWindowCache = NULL; - -GLUTwindow * -__glutGetWindow(Window win) -{ - int i; - - /* Does win belong to the last window ID looked up? */ - if (__glutWindowCache && (win == __glutWindowCache->win || - (__glutWindowCache->overlay && win == - __glutWindowCache->overlay->win))) { - return - __glutWindowCache; - } - /* Otherwise scan the window list looking for the window ID. */ - for (i = 0; i < __glutWindowListSize; i++) { - if (__glutWindowList[i]) { - if (win == __glutWindowList[i]->win) { - __glutWindowCache = __glutWindowList[i]; - return __glutWindowCache; - } - if (__glutWindowList[i]->overlay) { - if (win == __glutWindowList[i]->overlay->win) { - __glutWindowCache = __glutWindowList[i]; - return __glutWindowCache; - } - } - } - } -#if !defined(_WIN32) - { - GLUTstale *entry; - - /* Scan through destroyed overlay window IDs for which no - DestroyNotify has yet been received. */ - for (entry = __glutStaleWindowList; entry; entry = entry->next) { - if (entry->win == win) - return entry->window; - } - } -#endif - return NULL; -} - -/* CENTRY */ -int APIENTRY -glutGetWindow(void) -{ - if (__glutCurrentWindow) { - return __glutCurrentWindow->num + 1; - } else { - return 0; - } -} -/* ENDCENTRY */ - -void -__glutSetWindow(GLUTwindow * window) -{ - /* It is tempting to try to short-circuit the call to - glXMakeCurrent if we "know" we are going to make current - to a window we are already current to. In fact, this - assumption breaks when GLUT is expected to integrated with - other OpenGL windowing APIs that also make current to - OpenGL contexts. Since glXMakeCurrent short-circuits the - "already bound" case, GLUT avoids the temptation to do so - too. */ - __glutCurrentWindow = window; - - MAKE_CURRENT_LAYER(__glutCurrentWindow); - -#if !defined(_WIN32) - /* We should be careful to force a finish between each - iteration through the GLUT main loop if indirect OpenGL - contexts are in use; indirect contexts tend to have much - longer latency because lots of OpenGL extension requests - can queue up in the X protocol stream. We accomplish this - by posting GLUT_FINISH_WORK to be done. */ - if (!__glutCurrentWindow->isDirect) - __glutPutOnWorkList(__glutCurrentWindow, GLUT_FINISH_WORK); -#endif - - /* If debugging is enabled, we'll want to check this window - for any OpenGL errors every iteration through the GLUT - main loop. To accomplish this, we post the - GLUT_DEBUG_WORK to be done on this window. */ - if (__glutDebug) { - __glutPutOnWorkList(__glutCurrentWindow, GLUT_DEBUG_WORK); - } -} - -/* CENTRY */ -void APIENTRY -glutSetWindow(int win) -{ - GLUTwindow *window; - - if (win < 1 || win > __glutWindowListSize) { - __glutWarning("glutSetWindow attempted on bogus window."); - return; - } - window = __glutWindowList[win - 1]; - if (!window) { - __glutWarning("glutSetWindow attempted on bogus window."); - return; - } - __glutSetWindow(window); -} -/* ENDCENTRY */ - -static int -getUnusedWindowSlot(void) -{ - int i; - - /* Look for allocated, unused slot. */ - for (i = 0; i < __glutWindowListSize; i++) { - if (!__glutWindowList[i]) { - return i; - } - } - /* Allocate a new slot. */ - __glutWindowListSize++; - if (__glutWindowList) { - __glutWindowList = (GLUTwindow **) - realloc(__glutWindowList, - __glutWindowListSize * sizeof(GLUTwindow *)); - } else { - /* XXX Some realloc's do not correctly perform a malloc - when asked to perform a realloc on a NULL pointer, - though the ANSI C library spec requires this. */ - __glutWindowList = (GLUTwindow **) - malloc(sizeof(GLUTwindow *)); - } - if (!__glutWindowList) - __glutFatalError("out of memory."); - __glutWindowList[__glutWindowListSize - 1] = NULL; - return __glutWindowListSize - 1; -} - -static XVisualInfo * -getVisualInfoCI(unsigned int mode) -{ - static int bufSizeList[] = - {16, 12, 8, 4, 2, 1, 0}; - XVisualInfo *vi; - int list[32]; - int i, n = 0; - - /* Should not be looking at display mode mask if - __glutDisplayString is non-NULL. */ - assert(!__glutDisplayString); - - list[n++] = GLX_BUFFER_SIZE; - list[n++] = 1; - if (GLUT_WIND_IS_DOUBLE(mode)) { - list[n++] = GLX_DOUBLEBUFFER; - } - if (GLUT_WIND_IS_STEREO(mode)) { - list[n++] = GLX_STEREO; - } - if (GLUT_WIND_HAS_DEPTH(mode)) { - list[n++] = GLX_DEPTH_SIZE; - list[n++] = 1; - } - if (GLUT_WIND_HAS_STENCIL(mode)) { - list[n++] = GLX_STENCIL_SIZE; - list[n++] = 1; - } - list[n] = (int) None; /* terminate list */ - - /* glXChooseVisual specify GLX_BUFFER_SIZE prefers the - "smallest index buffer of at least the specified size". - This would be reasonable if GLUT allowed the user to - specify the required buffe size, but GLUT's display mode - is too simplistic (easy to use?). GLUT should try to find - the "largest". So start with a large buffer size and - shrink until we find a matching one that exists. */ - - for (i = 0; bufSizeList[i]; i++) { - /* XXX Assumes list[1] is where GLX_BUFFER_SIZE parameter - is. */ - list[1] = bufSizeList[i]; - vi = glXChooseVisual(__glutDisplay, - __glutScreen, list); - if (vi) - return vi; - } - return NULL; -} - -static XVisualInfo * -getVisualInfoRGB(unsigned int mode) -{ - int list[32]; - int n = 0; - - /* Should not be looking at display mode mask if - __glutDisplayString is non-NULL. */ - assert(!__glutDisplayString); - - /* XXX Would a caching mechanism to minize the calls to - glXChooseVisual? You'd have to reference count - XVisualInfo* pointers. Would also have to properly - interact with glutInitDisplayString. */ - - list[n++] = GLX_RGBA; - list[n++] = GLX_RED_SIZE; - list[n++] = 1; - list[n++] = GLX_GREEN_SIZE; - list[n++] = 1; - list[n++] = GLX_BLUE_SIZE; - list[n++] = 1; - if (GLUT_WIND_HAS_ALPHA(mode)) { - list[n++] = GLX_ALPHA_SIZE; - list[n++] = 1; - } - if (GLUT_WIND_IS_DOUBLE(mode)) { - list[n++] = GLX_DOUBLEBUFFER; - } - if (GLUT_WIND_IS_STEREO(mode)) { - list[n++] = GLX_STEREO; - } - if (GLUT_WIND_HAS_DEPTH(mode)) { - list[n++] = GLX_DEPTH_SIZE; - list[n++] = 1; - } - if (GLUT_WIND_HAS_STENCIL(mode)) { - list[n++] = GLX_STENCIL_SIZE; - list[n++] = 1; - } - if (GLUT_WIND_HAS_ACCUM(mode)) { - list[n++] = GLX_ACCUM_RED_SIZE; - list[n++] = 1; - list[n++] = GLX_ACCUM_GREEN_SIZE; - list[n++] = 1; - list[n++] = GLX_ACCUM_BLUE_SIZE; - list[n++] = 1; - if (GLUT_WIND_HAS_ALPHA(mode)) { - list[n++] = GLX_ACCUM_ALPHA_SIZE; - list[n++] = 1; - } - } -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample) - if (GLUT_WIND_IS_MULTISAMPLE(mode)) { - if (!__glutIsSupportedByGLX("GLX_SGIS_multisample")) - return NULL; - list[n++] = GLX_SAMPLES_SGIS; - /* XXX Is 4 a reasonable minimum acceptable number of - samples? */ - list[n++] = 4; - } -#endif - list[n] = (int) None; /* terminate list */ - - return glXChooseVisual(__glutDisplay, - __glutScreen, list); -} - -XVisualInfo * -__glutGetVisualInfo(unsigned int mode) -{ - /* XXX GLUT_LUMINANCE not implemented for GLUT 3.0. */ - if (GLUT_WIND_IS_LUMINANCE(mode)) - return NULL; - - if (GLUT_WIND_IS_RGB(mode)) - return getVisualInfoRGB(mode); - else - return getVisualInfoCI(mode); -} - -XVisualInfo * -__glutDetermineVisual( - unsigned int displayMode, - Bool * treatAsSingle, - XVisualInfo * (getVisualInfo) (unsigned int)) -{ - XVisualInfo *vis; - - /* Should not be looking at display mode mask if - __glutDisplayString is non-NULL. */ - assert(!__glutDisplayString); - - *treatAsSingle = GLUT_WIND_IS_SINGLE(displayMode); - vis = getVisualInfo(displayMode); - if (!vis) { - /* Fallback cases when can't get exactly what was asked - for... */ - if (GLUT_WIND_IS_SINGLE(displayMode)) { - /* If we can't find a single buffered visual, try looking - for a double buffered visual. We can treat a double - buffered visual as a single buffer visual by changing - the draw buffer to GL_FRONT and treating any swap - buffers as no-ops. */ - displayMode |= GLUT_DOUBLE; - vis = getVisualInfo(displayMode); - *treatAsSingle = True; - } - if (!vis && GLUT_WIND_IS_MULTISAMPLE(displayMode)) { - /* If we can't seem to get multisampling (ie, not Reality - Engine class graphics!), go without multisampling. It - is up to the application to query how many multisamples - were allocated (0 equals no multisampling) if the - application is going to use multisampling for more than - just antialiasing. */ - displayMode &= ~GLUT_MULTISAMPLE; - vis = getVisualInfo(displayMode); - } - } - return vis; -} - -void GLUTCALLBACK -__glutDefaultDisplay(void) -{ - /* XXX Remove the warning after GLUT 3.0. */ - __glutWarning("The following is a new check for GLUT 3.0; update your code."); - __glutFatalError( - "redisplay needed for window %d, but no display callback.", - __glutCurrentWindow->num + 1); -} - -void GLUTCALLBACK -__glutDefaultReshape(int width, int height) -{ - GLUToverlay *overlay; - - /* Adjust the viewport of the window (and overlay if one - exists). */ - MAKE_CURRENT_WINDOW(__glutCurrentWindow); - glViewport(0, 0, (GLsizei) width, (GLsizei) height); - overlay = __glutCurrentWindow->overlay; - if (overlay) { - MAKE_CURRENT_OVERLAY(overlay); - glViewport(0, 0, (GLsizei) width, (GLsizei) height); - } - /* Make sure we are current to the current layer (application - should be able to count on the current layer not changing - unless the application explicitly calls glutUseLayer). */ - MAKE_CURRENT_LAYER(__glutCurrentWindow); -} - -XVisualInfo * -__glutDetermineWindowVisual(Bool * treatAsSingle, Bool * visAlloced, void **fbc) -{ - if (__glutDisplayString) { - - /* __glutDisplayString should be NULL except if - glutInitDisplayString has been called to register a - different display string. Calling glutInitDisplayString - means using a string instead of an integer mask determine - the visual to use. Using the function pointer variable - __glutDetermineVisualFromString below avoids linking in - the code for implementing glutInitDisplayString (ie, - glut_dstr.o) unless glutInitDisplayString gets called by - the application. */ - - assert(__glutDetermineVisualFromString); - *visAlloced = False; - *fbc = NULL; - return __glutDetermineVisualFromString(__glutDisplayString, treatAsSingle, - requiredWindowCriteria, numRequiredWindowCriteria, requiredWindowCriteriaMask, fbc); - } else { - *visAlloced = True; - *fbc = NULL; - return __glutDetermineVisual(__glutDisplayMode, - treatAsSingle, __glutGetVisualInfo); - } -} - -/* ARGSUSED5 */ /* Only Win32 uses gameMode parameter. */ -GLUTwindow * -__glutCreateWindow(GLUTwindow * parent, - int x, int y, int width, int height, int gameMode) -{ - GLUTwindow *window; - XSetWindowAttributes wa; - unsigned long attribMask; - int winnum; - int i; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - GLXFBConfigSGIX fbc; -#else - void *fbc; -#endif - -#if defined(_WIN32) - WNDCLASS wc; - int style; - - if (!GetClassInfo(GetModuleHandle(NULL), "GLUT", &wc)) { - __glutOpenWin32Connection(NULL); - } -#else - if (!__glutDisplay) { - __glutOpenXConnection(NULL); - } -#endif - if (__glutGameModeWindow) { - __glutFatalError("cannot create windows in game mode."); - } - winnum = getUnusedWindowSlot(); - window = (GLUTwindow *) malloc(sizeof(GLUTwindow)); - if (!window) { - __glutFatalError("out of memory."); - } - window->num = winnum; - -#if !defined(_WIN32) - window->vis = __glutDetermineWindowVisual(&window->treatAsSingle, - &window->visAlloced, (void**) &fbc); - if (!window->vis) { - __glutFatalError( - "visual with necessary capabilities not found."); - } - __glutSetupColormap(window->vis, &window->colormap, &window->cmap); -#else - window->cmap = 0; -#endif - window->eventMask = StructureNotifyMask | ExposureMask; - - attribMask = CWBackPixmap | CWBorderPixel | CWColormap | CWEventMask; - wa.background_pixmap = None; - wa.border_pixel = 0; - wa.colormap = window->cmap; - wa.event_mask = window->eventMask; - if (parent) { - if (parent->eventMask & GLUT_HACK_STOP_PROPAGATE_MASK) - wa.event_mask |= GLUT_HACK_STOP_PROPAGATE_MASK; - attribMask |= CWDontPropagate; - wa.do_not_propagate_mask = parent->eventMask & GLUT_DONT_PROPAGATE_FILTER_MASK; - } else { - wa.do_not_propagate_mask = 0; - } - - /* Stash width and height before Win32's __glutAdjustCoords - possibly overwrites the values. */ - window->width = width; - window->height = height; - window->forceReshape = True; - window->ignoreKeyRepeat = False; - -#if defined(_WIN32) - __glutAdjustCoords(parent ? parent->win : NULL, - &x, &y, &width, &height); - if (parent) { - style = WS_CHILD; - } else { - if (gameMode) { - /* Game mode window should be a WS_POPUP window to - ensure that the taskbar is hidden by it. A standard - WS_OVERLAPPEDWINDOW does not hide the task bar. */ - style = WS_POPUP | WS_MAXIMIZE; - } else { - /* A standard toplevel window with borders and such. */ - style = WS_OVERLAPPEDWINDOW; - } - } - window->win = CreateWindow("GLUT", "GLUT", - WS_CLIPSIBLINGS | WS_CLIPCHILDREN | style, - x, y, width, height, parent ? parent->win : __glutRoot, - NULL, GetModuleHandle(NULL), 0); - window->hdc = GetDC(window->win); - /* Must set the XHDC for fake glXChooseVisual & fake - glXCreateContext & fake XAllocColorCells. */ - XHDC = window->hdc; - window->vis = __glutDetermineWindowVisual(&window->treatAsSingle, - &window->visAlloced, &fbc); - if (!window->vis) { - __glutFatalError( - "pixel format with necessary capabilities not found."); - } - if (!SetPixelFormat(window->hdc, - ChoosePixelFormat(window->hdc, window->vis), - window->vis)) { - __glutFatalError("SetPixelFormat failed during window create."); - } - __glutSetupColormap(window->vis, &window->colormap, &window->cmap); - /* Make sure subwindows get a windowStatus callback. */ - if (parent) { - PostMessage(parent->win, WM_ACTIVATE, 0, 0); - } - window->renderDc = window->hdc; -#else - window->win = XCreateWindow(__glutDisplay, - parent == NULL ? __glutRoot : parent->win, - x, y, width, height, 0, - window->vis->depth, InputOutput, window->vis->visual, - attribMask, &wa); -#endif - window->renderWin = window->win; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - if (fbc) { - window->ctx = glXCreateContextWithConfigSGIX(__glutDisplay, fbc, - GLX_RGBA_TYPE_SGIX, None, __glutTryDirect); - } else -#endif - { - window->ctx = glXCreateContext(__glutDisplay, window->vis, - None, __glutTryDirect); - } - if (!window->ctx) { - __glutFatalError( - "failed to create OpenGL rendering context."); - } - window->renderCtx = window->ctx; -#if !defined(_WIN32) - window->isDirect = glXIsDirect(__glutDisplay, window->ctx); - if (__glutForceDirect) { - if (!window->isDirect) - __glutFatalError("direct rendering not possible."); - } -#endif - - window->parent = parent; - if (parent) { - window->siblings = parent->children; - parent->children = window; - } else { - window->siblings = NULL; - } - window->overlay = NULL; - window->children = NULL; - window->display = __glutDefaultDisplay; - window->reshape = __glutDefaultReshape; - window->mouse = NULL; - window->motion = NULL; - window->passive = NULL; - window->entry = NULL; - window->keyboard = NULL; - window->keyboardUp = NULL; - window->windowStatus = NULL; - window->visibility = NULL; - window->special = NULL; - window->specialUp = NULL; - window->buttonBox = NULL; - window->dials = NULL; - window->spaceMotion = NULL; - window->spaceRotate = NULL; - window->spaceButton = NULL; - window->tabletMotion = NULL; - window->tabletButton = NULL; -#ifdef _WIN32 - window->joystick = NULL; - window->joyPollInterval = 0; -#endif - window->tabletPos[0] = -1; - window->tabletPos[1] = -1; - window->shownState = 0; - window->visState = -1; /* not VisibilityUnobscured, - VisibilityPartiallyObscured, or - VisibilityFullyObscured */ - window->entryState = -1; /* not EnterNotify or LeaveNotify */ - - window->desiredConfMask = 0; - window->buttonUses = 0; - window->cursor = GLUT_CURSOR_INHERIT; - - /* Setup window to be mapped when glutMainLoop starts. */ - window->workMask = GLUT_MAP_WORK; -#ifdef _WIN32 - if (gameMode) { - /* When mapping a game mode window, just show - the window. We have already created the game - mode window with a maximize flag at creation - time. Doing a ShowWindow(window->win, SW_SHOWNORMAL) - would be wrong for a game mode window since it - would unmaximize the window. */ - window->desiredMapState = GameModeState; - } else { - window->desiredMapState = NormalState; - } -#else - window->desiredMapState = NormalState; -#endif - window->prevWorkWin = __glutWindowWorkList; - __glutWindowWorkList = window; - - /* Initially, no menus attached. */ - for (i = 0; i < GLUT_MAX_MENUS; i++) { - window->menu[i] = 0; - } - - /* Add this new window to the window list. */ - __glutWindowList[winnum] = window; - - /* Make the new window the current window. */ - __glutSetWindow(window); - - __glutDetermineMesaSwapHackSupport(); - - if (window->treatAsSingle) { - /* We do this because either the window really is single - buffered (in which case this is redundant, but harmless, - because this is the initial single-buffered context - state); or we are treating a double buffered window as a - single-buffered window because the system does not appear - to export any suitable single- buffered visuals (in which - the following are necessary). */ - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_FRONT); - } - #ifdef WIN32 - if (gameMode) { - glutFullScreen(); - } - #endif - return window; -} - -/* CENTRY */ -int APIENTRY -glutCreateWindow(const char *title) -{ - static int firstWindow = 1; - GLUTwindow *window; -#if !defined(_WIN32) - XWMHints *wmHints; -#endif - Window win; - XTextProperty textprop; - - if (__glutGameModeWindow) { - __glutFatalError("cannot create windows in game mode."); - } - window = __glutCreateWindow(NULL, - __glutSizeHints.x, __glutSizeHints.y, - __glutInitWidth, __glutInitHeight, - /* not game mode */ 0); - win = window->win; - /* Setup ICCCM properties. */ - textprop.value = (unsigned char *) title; - textprop.encoding = XA_STRING; - textprop.format = 8; - textprop.nitems = strlen(title); -#if defined(_WIN32) - SetWindowText(win, title); - if (__glutIconic) { - window->desiredMapState = IconicState; - } -#else - wmHints = XAllocWMHints(); - wmHints->initial_state = - __glutIconic ? IconicState : NormalState; - wmHints->flags = StateHint; - XSetWMProperties(__glutDisplay, win, &textprop, &textprop, - /* Only put WM_COMMAND property on first window. */ - firstWindow ? __glutArgv : NULL, - firstWindow ? __glutArgc : 0, - &__glutSizeHints, wmHints, NULL); - XFree(wmHints); - XSetWMProtocols(__glutDisplay, win, &__glutWMDeleteWindow, 1); -#endif - firstWindow = 0; - return window->num + 1; -} - -#ifdef _WIN32 -int APIENTRY -__glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)) -{ - __glutExitFunc = exitfunc; - return glutCreateWindow(title); -} -#endif - -int APIENTRY -glutCreateSubWindow(int win, int x, int y, int width, int height) -{ - GLUTwindow *window; - - window = __glutCreateWindow(__glutWindowList[win - 1], - x, y, width, height, /* not game mode */ 0); -#if !defined(_WIN32) - { - GLUTwindow *toplevel; - - toplevel = __glutToplevelOf(window); - if (toplevel->cmap != window->cmap) { - __glutPutOnWorkList(toplevel, GLUT_COLORMAP_WORK); - } - } -#endif - return window->num + 1; -} -/* ENDCENTRY */ - -void -__glutDestroyWindow(GLUTwindow * window, - GLUTwindow * initialWindow) -{ - GLUTwindow **prev, *cur, *parent, *siblings; - - /* Recursively destroy any children. */ - cur = window->children; - while (cur) { - siblings = cur->siblings; - __glutDestroyWindow(cur, initialWindow); - cur = siblings; - } - /* Remove from parent's children list (only necessary for - non-initial windows and subwindows!). */ - parent = window->parent; - if (parent && parent == initialWindow->parent) { - prev = &parent->children; - cur = parent->children; - while (cur) { - if (cur == window) { - *prev = cur->siblings; - break; - } - prev = &(cur->siblings); - cur = cur->siblings; - } - } - /* Unbind if bound to this window. */ - if (window == __glutCurrentWindow) { - UNMAKE_CURRENT(); - __glutCurrentWindow = NULL; - } - /* Begin tearing down window itself. */ - if (window->overlay) { - __glutFreeOverlayFunc(window->overlay); - } - XDestroyWindow(__glutDisplay, window->win); - glXDestroyContext(__glutDisplay, window->ctx); - if (window->colormap) { - /* Only color index windows have colormap data structure. */ - __glutFreeColormap(window->colormap); - } - /* NULLing the __glutWindowList helps detect is a window - instance has been destroyed, given a window number. */ - __glutWindowList[window->num] = NULL; - - /* Cleanup data structures that might contain window. */ - cleanWindowWorkList(window); -#if !defined(_WIN32) - cleanStaleWindowList(window); -#endif - /* Remove window from the "get window cache" if it is there. */ - if (__glutWindowCache == window) - __glutWindowCache = NULL; - - if (window->visAlloced) { - /* Only free XVisualInfo* gotten from glXChooseVisual. */ - XFree(window->vis); - } - - if (window == __glutGameModeWindow) { - /* Destroying the game mode window should implicitly - have GLUT leave game mode. */ - __glutCloseDownGameMode(); - } - - free(window); -} - -/* CENTRY */ -void APIENTRY -glutDestroyWindow(int win) -{ - GLUTwindow *window = __glutWindowList[win - 1]; - - if (__glutMappedMenu && __glutMenuWindow == window) { - __glutFatalUsage("destroying menu window not allowed while menus in use"); - } -#if !defined(_WIN32) - /* If not a toplevel window... */ - if (window->parent) { - /* Destroying subwindows may change colormap requirements; - recalculate toplevel window's WM_COLORMAP_WINDOWS - property. */ - __glutPutOnWorkList(__glutToplevelOf(window->parent), - GLUT_COLORMAP_WORK); - } -#endif - __glutDestroyWindow(window, window); - XFlush(__glutDisplay); -} -/* ENDCENTRY */ - -void -__glutChangeWindowEventMask(long eventMask, Bool add) -{ - if (add) { - /* Add eventMask to window's event mask. */ - if ((__glutCurrentWindow->eventMask & eventMask) != - eventMask) { - __glutCurrentWindow->eventMask |= eventMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_EVENT_MASK_WORK); - } - } else { - /* Remove eventMask from window's event mask. */ - if (__glutCurrentWindow->eventMask & eventMask) { - __glutCurrentWindow->eventMask &= ~eventMask; - __glutPutOnWorkList(__glutCurrentWindow, - GLUT_EVENT_MASK_WORK); - } - } -} - -void APIENTRY -glutDisplayFunc(GLUTdisplayCB displayFunc) -{ - /* XXX Remove the warning after GLUT 3.0. */ - if (!displayFunc) - __glutFatalError("NULL display callback not allowed in GLUT 3.0; update your code."); - __glutCurrentWindow->display = displayFunc; -} - -void APIENTRY -glutMouseFunc(GLUTmouseCB mouseFunc) -{ - if (__glutCurrentWindow->mouse) { - if (!mouseFunc) { - /* Previous mouseFunc being disabled. */ - __glutCurrentWindow->buttonUses--; - __glutChangeWindowEventMask( - ButtonPressMask | ButtonReleaseMask, - __glutCurrentWindow->buttonUses > 0); - } - } else { - if (mouseFunc) { - /* Previously no mouseFunc, new one being installed. */ - __glutCurrentWindow->buttonUses++; - __glutChangeWindowEventMask( - ButtonPressMask | ButtonReleaseMask, True); - } - } - __glutCurrentWindow->mouse = mouseFunc; -} - -void APIENTRY -glutMotionFunc(GLUTmotionCB motionFunc) -{ - /* Hack. Some window managers (4Dwm by default) will mask - motion events if the client is not selecting for button - press and release events. So we select for press and - release events too (being careful to use reference - counting). */ - if (__glutCurrentWindow->motion) { - if (!motionFunc) { - /* previous mouseFunc being disabled */ - __glutCurrentWindow->buttonUses--; - __glutChangeWindowEventMask( - ButtonPressMask | ButtonReleaseMask, - __glutCurrentWindow->buttonUses > 0); - } - } else { - if (motionFunc) { - /* Previously no mouseFunc, new one being installed. */ - __glutCurrentWindow->buttonUses++; - __glutChangeWindowEventMask( - ButtonPressMask | ButtonReleaseMask, True); - } - } - /* Real work of selecting for passive mouse motion. */ - __glutChangeWindowEventMask( - Button1MotionMask | Button2MotionMask | Button3MotionMask, - motionFunc != NULL); - __glutCurrentWindow->motion = motionFunc; -} - -void APIENTRY -glutPassiveMotionFunc(GLUTpassiveCB passiveMotionFunc) -{ - __glutChangeWindowEventMask(PointerMotionMask, - passiveMotionFunc != NULL); - - /* Passive motion also requires watching enters and leaves so - that a fake passive motion event can be generated on an - enter. */ - __glutChangeWindowEventMask(EnterWindowMask | LeaveWindowMask, - __glutCurrentWindow->entry != NULL || passiveMotionFunc != NULL); - - __glutCurrentWindow->passive = passiveMotionFunc; -} - -void APIENTRY -glutEntryFunc(GLUTentryCB entryFunc) -{ - __glutChangeWindowEventMask(EnterWindowMask | LeaveWindowMask, - entryFunc != NULL || __glutCurrentWindow->passive); - __glutCurrentWindow->entry = entryFunc; - if (!entryFunc) { - __glutCurrentWindow->entryState = -1; - } -} - -void APIENTRY -glutWindowStatusFunc(GLUTwindowStatusCB windowStatusFunc) -{ - __glutChangeWindowEventMask(VisibilityChangeMask, - windowStatusFunc != NULL); - __glutCurrentWindow->windowStatus = windowStatusFunc; - if (!windowStatusFunc) { - /* Make state invalid. */ - __glutCurrentWindow->visState = -1; - } -} - -static void GLUTCALLBACK -visibilityHelper(int status) -{ - if (status == GLUT_HIDDEN || status == GLUT_FULLY_COVERED) - __glutCurrentWindow->visibility(GLUT_NOT_VISIBLE); - else - __glutCurrentWindow->visibility(GLUT_VISIBLE); -} - -void APIENTRY -glutVisibilityFunc(GLUTvisibilityCB visibilityFunc) -{ - __glutCurrentWindow->visibility = visibilityFunc; - if (visibilityFunc) - glutWindowStatusFunc(visibilityHelper); - else - glutWindowStatusFunc(NULL); -} - -void APIENTRY -glutReshapeFunc(GLUTreshapeCB reshapeFunc) -{ - if (reshapeFunc) { - __glutCurrentWindow->reshape = reshapeFunc; - } else { - __glutCurrentWindow->reshape = __glutDefaultReshape; - } -} diff --git a/lib/glut-3.7.6/lib/glut/glut_winmisc.c b/lib/glut-3.7.6/lib/glut/glut_winmisc.c deleted file mode 100644 index 1331885792d0c978ee6e34cb54f4a7216fff481d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glut_winmisc.c +++ /dev/null @@ -1,122 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -#if !defined(_WIN32) -#include -#include -#include /* for XA_STRING atom */ -#endif - -#include "glutint.h" - -/* CENTRY */ -void APIENTRY -glutSetWindowTitle(const char *title) -{ - XTextProperty textprop; - - assert(!__glutCurrentWindow->parent); - IGNORE_IN_GAME_MODE(); - textprop.value = (unsigned char *) title; - textprop.encoding = XA_STRING; - textprop.format = 8; - textprop.nitems = strlen(title); - XSetWMName(__glutDisplay, - __glutCurrentWindow->win, &textprop); - XFlush(__glutDisplay); -} - -void APIENTRY -glutSetIconTitle(const char *title) -{ -#if !defined(_WIN32) - XTextProperty textprop; - - assert(!__glutCurrentWindow->parent); - IGNORE_IN_GAME_MODE(); - textprop.value = (unsigned char *) title; - textprop.encoding = XA_STRING; - textprop.format = 8; - textprop.nitems = strlen(title); - XSetWMIconName(__glutDisplay, - __glutCurrentWindow->win, &textprop); - XFlush(__glutDisplay); -#endif -} - -void APIENTRY -glutPositionWindow(int x, int y) -{ - IGNORE_IN_GAME_MODE(); - __glutCurrentWindow->desiredX = x; - __glutCurrentWindow->desiredY = y; - __glutCurrentWindow->desiredConfMask |= CWX | CWY; - __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK); -} - -void APIENTRY -glutReshapeWindow(int w, int h) -{ - IGNORE_IN_GAME_MODE(); - if (w <= 0 || h <= 0) - __glutWarning("glutReshapeWindow: non-positive width or height not allowed"); - - __glutCurrentWindow->desiredWidth = w; - __glutCurrentWindow->desiredHeight = h; - __glutCurrentWindow->desiredConfMask |= CWWidth | CWHeight; - __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK); -} - -void APIENTRY -glutPopWindow(void) -{ - IGNORE_IN_GAME_MODE(); - __glutCurrentWindow->desiredStack = Above; - __glutCurrentWindow->desiredConfMask |= CWStackMode; - __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK); -} - -void APIENTRY -glutPushWindow(void) -{ - IGNORE_IN_GAME_MODE(); - __glutCurrentWindow->desiredStack = Below; - __glutCurrentWindow->desiredConfMask |= CWStackMode; - __glutPutOnWorkList(__glutCurrentWindow, GLUT_CONFIGURE_WORK); -} - -void APIENTRY -glutIconifyWindow(void) -{ - IGNORE_IN_GAME_MODE(); - assert(!__glutCurrentWindow->parent); - __glutCurrentWindow->desiredMapState = IconicState; - __glutPutOnWorkList(__glutCurrentWindow, GLUT_MAP_WORK); -} - -void APIENTRY -glutShowWindow(void) -{ - IGNORE_IN_GAME_MODE(); - __glutCurrentWindow->desiredMapState = NormalState; - __glutPutOnWorkList(__glutCurrentWindow, GLUT_MAP_WORK); -} - -void APIENTRY -glutHideWindow(void) -{ - IGNORE_IN_GAME_MODE(); - __glutCurrentWindow->desiredMapState = WithdrawnState; - __glutPutOnWorkList(__glutCurrentWindow, GLUT_MAP_WORK); -} - -/* ENDCENTRY */ diff --git a/lib/glut-3.7.6/lib/glut/glutbitmap.h b/lib/glut-3.7.6/lib/glut/glutbitmap.h deleted file mode 100644 index dc1b61af195581d6833856243ab8aaa1c5110e95..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glutbitmap.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef __glutbitmap_h__ -#define __glutbitmap_h__ - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#define GLUT_NO_LIB_PRAGMA /* Avoid auto library linking when building - the GLUT library itself. */ -#include - -typedef struct { - const GLsizei width; - const GLsizei height; - const GLfloat xorig; - const GLfloat yorig; - const GLfloat advance; - const GLubyte *bitmap; -} BitmapCharRec, *BitmapCharPtr; - -typedef struct { - const char *name; - const int num_chars; - const int first; - const BitmapCharRec * const *ch; -} BitmapFontRec, *BitmapFontPtr; - -typedef void *GLUTbitmapFont; - -#endif /* __glutbitmap_h__ */ diff --git a/lib/glut-3.7.6/lib/glut/glutint.h b/lib/glut-3.7.6/lib/glut/glutint.h deleted file mode 100644 index 3f9a8cb1db68d95fec839f3595b2e7178322fcd8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glutint.h +++ /dev/null @@ -1,779 +0,0 @@ -#ifndef __glutint_h__ -#define __glutint_h__ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#if defined(__CYGWIN32__) -#include -#endif - -#define SUPPORT_FORTRAN /* With GLUT 3.7, everyone supports Fortran. */ - -#if defined(_WIN32) -#include "glutwin32.h" -#else -#include -#include -#include -#endif - -#define GLUT_BUILDING_LIB /* Building the GLUT library itself. */ - -/* GLUT_BUILDING_LIB is used by to 1) not #pragma link - with the GLUT library, and 2) avoid the Win32 atexit hack. */ - -#include - -#ifndef CDECL -# if defined(_WIN32) && defined(_MSC_VER) -# define CDECL __cdecl -# else -# define CDECL -# endif -#endif - -/* This must be done after is included. MESA is defined - if the is supplied by Brian Paul's Mesa library. */ -#if defined(MESA) && defined(_WIN32) -/* Mesa implements "wgl" versions of GDI entry points needed for - using OpenGL. Map these "wgl" versions to the GDI names via - macros. */ -WINGDIAPI int WINAPI wglChoosePixelFormat(HDC hdc, CONST PIXELFORMATDESCRIPTOR *ppfd); -WINGDIAPI int WINAPI wglDescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes, LPPIXELFORMATDESCRIPTOR ppfd); -WINGDIAPI int WINAPI wglGetPixelFormat(HDC hdc); -WINGDIAPI BOOL WINAPI wglSetPixelFormat(HDC hdc, int iPixelFormat, PIXELFORMATDESCRIPTOR *ppfd); -WINGDIAPI BOOL WINAPI wglSwapBuffers(HDC hdc); -#define ChoosePixelFormat wglChoosePixelFormat -#define DescribePixelFormat wglDescribePixelFormat -#define GetPixelFormat wglGetPixelFormat -#define SetPixelFormat wglSetPixelFormat -#define SwapBuffers wglSwapBuffers -#endif - -/* Non-Win32 platforms need APIENTRY defined to nothing - because all the GLUT routines have the APIENTRY prefix - to make Win32 happy. */ -#ifndef APIENTRY -#define APIENTRY -#endif - -#ifdef SUPPORT_FORTRAN -#include -#endif - -#ifdef __vms -#if ( __VMS_VER < 70000000 ) -struct timeval { - __int64 val; -}; -extern int sys$gettim(struct timeval *); -#else -#include -#endif -#else -#include -#if !defined(_WIN32) -#include -#else -#include -#endif -#endif -#if defined(__vms) && ( __VMS_VER < 70000000 ) - -/* For VMS6.2 or lower : - One TICK on VMS is 100 nanoseconds; 0.1 microseconds or - 0.0001 milliseconds. This means that there are 0.01 - ticks/ns, 10 ticks/us, 10,000 ticks/ms and 10,000,000 - ticks/second. */ - -#define TICKS_PER_MILLISECOND 10000 -#define TICKS_PER_SECOND 10000000 - -#define GETTIMEOFDAY(_x) (void) sys$gettim (_x); - -#define ADD_TIME(dest, src1, src2) { \ - (dest).val = (src1).val + (src2).val; \ -} - -#define TIMEDELTA(dest, src1, src2) { \ - (dest).val = (src1).val - (src2).val; \ -} - -#define IS_AFTER(t1, t2) ((t2).val > (t1).val) - -#define IS_AT_OR_AFTER(t1, t2) ((t2).val >= (t1).val) - -#else -#if defined(SVR4) && !defined(sun) /* Sun claims SVR4, but - wants 2 args. */ -#define GETTIMEOFDAY(_x) gettimeofday(_x) -#else -#define GETTIMEOFDAY(_x) gettimeofday(_x, NULL) -#endif -#define ADD_TIME(dest, src1, src2) { \ - if(((dest).tv_usec = \ - (src1).tv_usec + (src2).tv_usec) >= 1000000) { \ - (dest).tv_usec -= 1000000; \ - (dest).tv_sec = (src1).tv_sec + (src2).tv_sec + 1; \ - } else { \ - (dest).tv_sec = (src1).tv_sec + (src2).tv_sec; \ - if(((dest).tv_sec >= 1) && (((dest).tv_usec <0))) { \ - (dest).tv_sec --;(dest).tv_usec += 1000000; \ - } \ - } \ -} -#define TIMEDELTA(dest, src1, src2) { \ - if(((dest).tv_usec = (src1).tv_usec - (src2).tv_usec) < 0) { \ - (dest).tv_usec += 1000000; \ - (dest).tv_sec = (src1).tv_sec - (src2).tv_sec - 1; \ - } else { \ - (dest).tv_sec = (src1).tv_sec - (src2).tv_sec; \ - } \ -} -#define IS_AFTER(t1, t2) \ - (((t2).tv_sec > (t1).tv_sec) || \ - (((t2).tv_sec == (t1).tv_sec) && \ - ((t2).tv_usec > (t1).tv_usec))) -#define IS_AT_OR_AFTER(t1, t2) \ - (((t2).tv_sec > (t1).tv_sec) || \ - (((t2).tv_sec == (t1).tv_sec) && \ - ((t2).tv_usec >= (t1).tv_usec))) -#endif - -#define IGNORE_IN_GAME_MODE() \ - { if (__glutGameModeWindow) return; } - -#define GLUT_WIND_IS_RGB(x) (((x) & GLUT_INDEX) == 0) -#define GLUT_WIND_IS_INDEX(x) (((x) & GLUT_INDEX) != 0) -#define GLUT_WIND_IS_SINGLE(x) (((x) & GLUT_DOUBLE) == 0) -#define GLUT_WIND_IS_DOUBLE(x) (((x) & GLUT_DOUBLE) != 0) -#define GLUT_WIND_HAS_ACCUM(x) (((x) & GLUT_ACCUM) != 0) -#define GLUT_WIND_HAS_ALPHA(x) (((x) & GLUT_ALPHA) != 0) -#define GLUT_WIND_HAS_DEPTH(x) (((x) & GLUT_DEPTH) != 0) -#define GLUT_WIND_HAS_STENCIL(x) (((x) & GLUT_STENCIL) != 0) -#define GLUT_WIND_IS_MULTISAMPLE(x) (((x) & GLUT_MULTISAMPLE) != 0) -#define GLUT_WIND_IS_STEREO(x) (((x) & GLUT_STEREO) != 0) -#define GLUT_WIND_IS_LUMINANCE(x) (((x) & GLUT_LUMINANCE) != 0) -#define GLUT_MAP_WORK (1 << 0) -#define GLUT_EVENT_MASK_WORK (1 << 1) -#define GLUT_REDISPLAY_WORK (1 << 2) -#define GLUT_CONFIGURE_WORK (1 << 3) -#define GLUT_COLORMAP_WORK (1 << 4) -#define GLUT_DEVICE_MASK_WORK (1 << 5) -#define GLUT_FINISH_WORK (1 << 6) -#define GLUT_DEBUG_WORK (1 << 7) -#define GLUT_DUMMY_WORK (1 << 8) -#define GLUT_FULL_SCREEN_WORK (1 << 9) -#define GLUT_OVERLAY_REDISPLAY_WORK (1 << 10) -#define GLUT_REPAIR_WORK (1 << 11) -#define GLUT_OVERLAY_REPAIR_WORK (1 << 12) - -/* Frame buffer capability macros and types. */ -#define RGBA 0 -#define BUFFER_SIZE 1 -#define DOUBLEBUFFER 2 -#define STEREO 3 -#define AUX_BUFFERS 4 -#define RED_SIZE 5 /* Used as mask bit for - "color selected". */ -#define GREEN_SIZE 6 -#define BLUE_SIZE 7 -#define ALPHA_SIZE 8 -#define DEPTH_SIZE 9 -#define STENCIL_SIZE 10 -#define ACCUM_RED_SIZE 11 /* Used as mask bit for - "acc selected". */ -#define ACCUM_GREEN_SIZE 12 -#define ACCUM_BLUE_SIZE 13 -#define ACCUM_ALPHA_SIZE 14 -#define LEVEL 15 - -#define NUM_GLXCAPS (LEVEL + 1) - -#define XVISUAL (NUM_GLXCAPS + 0) -#define TRANSPARENT (NUM_GLXCAPS + 1) -#define SAMPLES (NUM_GLXCAPS + 2) -#define XSTATICGRAY (NUM_GLXCAPS + 3) /* Used as - mask bit - for "any - visual type - selected". */ -#define XGRAYSCALE (NUM_GLXCAPS + 4) -#define XSTATICCOLOR (NUM_GLXCAPS + 5) -#define XPSEUDOCOLOR (NUM_GLXCAPS + 6) -#define XTRUECOLOR (NUM_GLXCAPS + 7) -#define XDIRECTCOLOR (NUM_GLXCAPS + 8) -#define SLOW (NUM_GLXCAPS + 9) -#define CONFORMANT (NUM_GLXCAPS + 10) - -#define NUM_CAPS (NUM_GLXCAPS + 11) - -/* Frame buffer capablities that don't have a corresponding - FrameBufferMode entry. These get used as mask bits. */ -#define NUM (NUM_CAPS + 0) -#define RGBA_MODE (NUM_CAPS + 1) -#define CI_MODE (NUM_CAPS + 2) -#define LUMINANCE_MODE (NUM_CAPS + 3) - -#define NONE 0 -#define EQ 1 -#define NEQ 2 -#define LTE 3 -#define GTE 4 -#define GT 5 -#define LT 6 -#define MIN 7 - -typedef struct _Criterion { - int capability; - int comparison; - int value; -} Criterion; - -typedef struct _FrameBufferMode { - XVisualInfo *vi; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - - /* fbc is non-NULL when the XVisualInfo* is not OpenGL-capable - (ie, GLX_USE_GL is false), but the SGIX_fbconfig extension shows - the visual's fbconfig is OpenGL-capable. The reason for this is typically - an RGBA luminance fbconfig such as 16-bit StaticGray that could - not be advertised as a GLX visual since StaticGray visuals are - required (by the GLX specification) to be color index. The - SGIX_fbconfig allows StaticGray visuals to instead advertised as - fbconfigs that can provide RGBA luminance support. */ - - GLXFBConfigSGIX fbc; -#endif - int valid; - int cap[NUM_CAPS]; -} FrameBufferMode; - -/* DisplayMode capability macros for game mode. */ -#define DM_WIDTH 0 /* "width" */ -#define DM_HEIGHT 1 /* "height" */ -#define DM_PIXEL_DEPTH 2 /* "bpp" (bits per pixel) */ -#define DM_HERTZ 3 /* "hertz" */ -#define DM_NUM 4 /* "num" */ - -#define NUM_DM_CAPS (DM_NUM+1) - -typedef struct _DisplayMode { -#ifdef _WIN32 - DEVMODE devmode; -#else - /* XXX The X Window System does not have a standard - mechanism for display setting changes. On SGI - systems, GLUT could use the XSGIvc (SGI X video - control extension). Perhaps this can be done in - a future release of GLUT. */ -#endif - int valid; - int cap[NUM_DM_CAPS]; -} DisplayMode; - -/* GLUT function types */ -typedef void (GLUTCALLBACK *GLUTdisplayCB) (void); -typedef void (GLUTCALLBACK *GLUTreshapeCB) (int, int); -typedef void (GLUTCALLBACK *GLUTkeyboardCB) (unsigned char, int, int); -typedef void (GLUTCALLBACK *GLUTmouseCB) (int, int, int, int); -typedef void (GLUTCALLBACK *GLUTmotionCB) (int, int); -typedef void (GLUTCALLBACK *GLUTpassiveCB) (int, int); -typedef void (GLUTCALLBACK *GLUTentryCB) (int); -typedef void (GLUTCALLBACK *GLUTvisibilityCB) (int); -typedef void (GLUTCALLBACK *GLUTwindowStatusCB) (int); -typedef void (GLUTCALLBACK *GLUTidleCB) (void); -typedef void (GLUTCALLBACK *GLUTtimerCB) (int); -typedef void (GLUTCALLBACK *GLUTmenuStateCB) (int); /* DEPRICATED. */ -typedef void (GLUTCALLBACK *GLUTmenuStatusCB) (int, int, int); -typedef void (GLUTCALLBACK *GLUTselectCB) (int); -typedef void (GLUTCALLBACK *GLUTspecialCB) (int, int, int); -typedef void (GLUTCALLBACK *GLUTspaceMotionCB) (int, int, int); -typedef void (GLUTCALLBACK *GLUTspaceRotateCB) (int, int, int); -typedef void (GLUTCALLBACK *GLUTspaceButtonCB) (int, int); -typedef void (GLUTCALLBACK *GLUTdialsCB) (int, int); -typedef void (GLUTCALLBACK *GLUTbuttonBoxCB) (int, int); -typedef void (GLUTCALLBACK *GLUTtabletMotionCB) (int, int); -typedef void (GLUTCALLBACK *GLUTtabletButtonCB) (int, int, int, int); -typedef void (GLUTCALLBACK *GLUTjoystickCB) (unsigned int buttonMask, int x, int y, int z); - -typedef struct _GLUTcolorcell GLUTcolorcell; -struct _GLUTcolorcell { - /* GLUT_RED, GLUT_GREEN, GLUT_BLUE */ - GLfloat component[3]; -}; - -typedef struct _GLUTcolormap GLUTcolormap; -struct _GLUTcolormap { - Visual *visual; /* visual of the colormap */ - Colormap cmap; /* X colormap ID */ - int refcnt; /* number of windows using colormap */ - int size; /* number of cells in colormap */ - int transparent; /* transparent pixel, or -1 if opaque */ - GLUTcolorcell *cells; /* array of cells */ - GLUTcolormap *next; /* next colormap in list */ -}; - -typedef struct _GLUTwindow GLUTwindow; -typedef struct _GLUToverlay GLUToverlay; -struct _GLUTwindow { - int num; /* Small integer window id (0-based). */ - - /* Window system related state. */ -#if defined(_WIN32) - int pf; /* Pixel format. */ - HDC hdc; /* Window's Win32 device context. */ -#endif - Window win; /* X window for GLUT window */ - GLXContext ctx; /* OpenGL context GLUT glut window */ - XVisualInfo *vis; /* visual for window */ - Bool visAlloced; /* if vis needs deallocate on destroy */ - Colormap cmap; /* RGB colormap for window; None if CI */ - GLUTcolormap *colormap; /* colormap; NULL if RGBA */ - GLUToverlay *overlay; /* overlay; NULL if no overlay */ -#if defined(_WIN32) - HDC renderDc; /* Win32's device context for rendering. */ -#endif - Window renderWin; /* X window for rendering (might be - overlay) */ - GLXContext renderCtx; /* OpenGL context for rendering (might - be overlay) */ - /* GLUT settable or visible window state. */ - int width; /* window width in pixels */ - int height; /* window height in pixels */ - int cursor; /* cursor name */ - int visState; /* visibility state (-1 is unknown) */ - int shownState; /* if window mapped */ - int entryState; /* entry state (-1 is unknown) */ -#define GLUT_MAX_MENUS 3 - - int menu[GLUT_MAX_MENUS]; /* attatched menu nums */ - /* Window relationship state. */ - GLUTwindow *parent; /* parent window */ - GLUTwindow *children; /* list of children */ - GLUTwindow *siblings; /* list of siblings */ - /* Misc. non-API visible (hidden) state. */ - Bool treatAsSingle; /* treat this window as single-buffered - (it might be "fake" though) */ - Bool forceReshape; /* force reshape before display */ -#if !defined(_WIN32) - Bool isDirect; /* if direct context (X11 only) */ -#endif - Bool usedSwapBuffers; /* if swap buffers used last display */ - long eventMask; /* mask of X events selected for */ - int buttonUses; /* number of button uses, ref cnt */ - int tabletPos[2]; /* tablet position (-1 is invalid) */ - /* Work list related state. */ - unsigned int workMask; /* mask of window work to be done */ - GLUTwindow *prevWorkWin; /* link list of windows to work on */ - Bool desiredMapState; /* how to mapped window if on map work - list */ - Bool ignoreKeyRepeat; /* if window ignores autorepeat */ - int desiredConfMask; /* mask of desired window configuration - */ - int desiredX; /* desired X location */ - int desiredY; /* desired Y location */ - int desiredWidth; /* desired window width */ - int desiredHeight; /* desired window height */ - int desiredStack; /* desired window stack */ - /* Per-window callbacks. */ - GLUTdisplayCB display; /* redraw */ - GLUTreshapeCB reshape; /* resize (width,height) */ - GLUTmouseCB mouse; /* mouse (button,state,x,y) */ - GLUTmotionCB motion; /* motion (x,y) */ - GLUTpassiveCB passive; /* passive motion (x,y) */ - GLUTentryCB entry; /* window entry/exit (state) */ - GLUTkeyboardCB keyboard; /* keyboard (ASCII,x,y) */ - GLUTkeyboardCB keyboardUp; /* keyboard up (ASCII,x,y) */ - GLUTwindowStatusCB windowStatus; /* window status */ - GLUTvisibilityCB visibility; /* visibility */ - GLUTspecialCB special; /* special key */ - GLUTspecialCB specialUp; /* special up key */ - GLUTbuttonBoxCB buttonBox; /* button box */ - GLUTdialsCB dials; /* dials */ - GLUTspaceMotionCB spaceMotion; /* Spaceball motion */ - GLUTspaceRotateCB spaceRotate; /* Spaceball rotate */ - GLUTspaceButtonCB spaceButton; /* Spaceball button */ - GLUTtabletMotionCB tabletMotion; /* tablet motion */ - GLUTtabletButtonCB tabletButton; /* tablet button */ -#ifdef _WIN32 - GLUTjoystickCB joystick; /* joystick */ - int joyPollInterval; /* joystick polling interval */ -#endif -#ifdef SUPPORT_FORTRAN - GLUTdisplayFCB fdisplay; /* Fortran display */ - GLUTreshapeFCB freshape; /* Fortran reshape */ - GLUTmouseFCB fmouse; /* Fortran mouse */ - GLUTmotionFCB fmotion; /* Fortran motion */ - GLUTpassiveFCB fpassive; /* Fortran passive */ - GLUTentryFCB fentry; /* Fortran entry */ - GLUTkeyboardFCB fkeyboard; /* Fortran keyboard */ - GLUTkeyboardFCB fkeyboardUp; /* Fortran keyboard up */ - GLUTwindowStatusFCB fwindowStatus; /* Fortran window status */ - GLUTvisibilityFCB fvisibility; /* Fortran visibility */ - GLUTspecialFCB fspecial; /* special key */ - GLUTspecialFCB fspecialUp; /* special key up */ - GLUTbuttonBoxFCB fbuttonBox; /* button box */ - GLUTdialsFCB fdials; /* dials */ - GLUTspaceMotionFCB fspaceMotion; /* Spaceball motion */ - GLUTspaceRotateFCB fspaceRotate; /* Spaceball rotate */ - GLUTspaceButtonFCB fspaceButton; /* Spaceball button */ - GLUTtabletMotionFCB ftabletMotion; /* tablet motion */ - GLUTtabletButtonFCB ftabletButton; /* tablet button */ -#ifdef _WIN32 - GLUTjoystickFCB fjoystick; /* joystick */ -#endif -#endif -}; - -struct _GLUToverlay { -#if defined(_WIN32) - int pf; - HDC hdc; -#endif - Window win; - GLXContext ctx; - XVisualInfo *vis; /* visual for window */ - Bool visAlloced; /* if vis needs deallocate on destroy */ - Colormap cmap; /* RGB colormap for window; None if CI */ - GLUTcolormap *colormap; /* colormap; NULL if RGBA */ - int shownState; /* if overlay window mapped */ - Bool treatAsSingle; /* treat as single-buffered */ -#if !defined(_WIN32) - Bool isDirect; /* if direct context */ -#endif - int transparentPixel; /* transparent pixel value */ - GLUTdisplayCB display; /* redraw */ -#ifdef SUPPORT_FORTRAN - GLUTdisplayFCB fdisplay; /* redraw */ -#endif -}; - -typedef struct _GLUTstale GLUTstale; -struct _GLUTstale { - GLUTwindow *window; - Window win; - GLUTstale *next; -}; - -extern GLUTstale *__glutStaleWindowList; - -#define GLUT_OVERLAY_EVENT_FILTER_MASK \ - (ExposureMask | \ - StructureNotifyMask | \ - EnterWindowMask | \ - LeaveWindowMask) -#define GLUT_DONT_PROPAGATE_FILTER_MASK \ - (ButtonReleaseMask | \ - ButtonPressMask | \ - KeyPressMask | \ - KeyReleaseMask | \ - PointerMotionMask | \ - Button1MotionMask | \ - Button2MotionMask | \ - Button3MotionMask) -#define GLUT_HACK_STOP_PROPAGATE_MASK \ - (KeyPressMask | \ - KeyReleaseMask) - -typedef struct _GLUTmenu GLUTmenu; -typedef struct _GLUTmenuItem GLUTmenuItem; -struct _GLUTmenu { - int id; /* small integer menu id (0-based) */ -#if defined(_WIN32) - HMENU win; /* Win32 menu */ -#else - Window win; /* X window for the menu */ -#endif - GLUTselectCB select; /* function of menu */ - GLUTmenuItem *list; /* list of menu entries */ - int num; /* number of entries */ -#if !defined(_WIN32) - Bool managed; /* are the InputOnly windows size - validated? */ - Bool searched; /* help detect menu loops */ - int pixheight; /* height of menu in pixels */ - int pixwidth; /* width of menu in pixels */ -#endif - int submenus; /* number of submenu entries */ - GLUTmenuItem *highlighted; /* pointer to highlighted menu - entry, NULL not highlighted */ - GLUTmenu *cascade; /* currently cascading this menu */ - GLUTmenuItem *anchor; /* currently anchored to this entry */ - int x; /* current x origin relative to the - root window */ - int y; /* current y origin relative to the - root window */ -#ifdef SUPPORT_FORTRAN - GLUTselectFCB fselect; /* function of menu */ -#endif -}; - -struct _GLUTmenuItem { -#if defined(_WIN32) - HMENU win; /* Win32 window for entry */ -#else - Window win; /* InputOnly X window for entry */ -#endif - GLUTmenu *menu; /* menu entry belongs to */ - Bool isTrigger; /* is a submenu trigger? */ - int value; /* value to return for selecting this - entry; doubles as submenu id - (0-base) if submenu trigger */ -#if defined(_WIN32) - UINT unique; /* unique menu item id (Win32 only) */ -#endif - char *label; /* __glutStrdup'ed label string */ - int len; /* length of label string */ - int pixwidth; /* width of X window in pixels */ - GLUTmenuItem *next; /* next menu entry on list for menu */ -}; - -typedef struct _GLUTtimer GLUTtimer; -struct _GLUTtimer { - GLUTtimer *next; /* list of timers */ - struct timeval timeout; /* time to be called */ - GLUTtimerCB func; /* timer (value) */ - int value; /* return value */ -#ifdef SUPPORT_FORTRAN - GLUTtimerFCB ffunc; /* Fortran timer */ -#endif -}; - -typedef struct _GLUTeventParser GLUTeventParser; -struct _GLUTeventParser { - int (*func) (XEvent *); - GLUTeventParser *next; -}; - -/* Declarations to implement glutFullScreen support with - mwm/4Dwm. */ - -/* The following X property format is defined in Motif 1.1's - Xm/MwmUtils.h, but GLUT should not depend on that header - file. Note: Motif 1.2 expanded this structure with - uninteresting fields (to GLUT) so just stick with the - smaller Motif 1.1 structure. */ -typedef struct { -#define MWM_HINTS_DECORATIONS 2 - long flags; - long functions; - long decorations; - long input_mode; -} MotifWmHints; - -/* Make current and buffer swap macros. */ -#ifdef _WIN32 -#define MAKE_CURRENT_LAYER(window) \ - { \ - HGLRC currentContext = wglGetCurrentContext(); \ - HDC currentDc = wglGetCurrentDC(); \ - \ - if (currentContext != window->renderCtx \ - || currentDc != window->renderDc) { \ - wglMakeCurrent(window->renderDc, window->renderCtx); \ - } \ - } -#define MAKE_CURRENT_WINDOW(window) \ - { \ - HGLRC currentContext = wglGetCurrentContext(); \ - HDC currentDc = wglGetCurrentDC(); \ - \ - if (currentContext != window->ctx || currentDc != window->hdc) { \ - wglMakeCurrent(window->hdc, window->ctx); \ - } \ - } -#define MAKE_CURRENT_OVERLAY(overlay) \ - wglMakeCurrent(overlay->hdc, overlay->ctx) -#define UNMAKE_CURRENT() \ - wglMakeCurrent(NULL, NULL) -#define SWAP_BUFFERS_WINDOW(window) \ - SwapBuffers(window->hdc) -#define SWAP_BUFFERS_LAYER(window) \ - SwapBuffers(window->renderDc) -#else -#define MAKE_CURRENT_LAYER(window) \ - glXMakeCurrent(__glutDisplay, window->renderWin, window->renderCtx) -#define MAKE_CURRENT_WINDOW(window) \ - glXMakeCurrent(__glutDisplay, window->win, window->ctx) -#define MAKE_CURRENT_OVERLAY(overlay) \ - glXMakeCurrent(__glutDisplay, overlay->win, overlay->ctx) -#define UNMAKE_CURRENT() \ - glXMakeCurrent(__glutDisplay, None, NULL) -#define SWAP_BUFFERS_WINDOW(window) \ - glXSwapBuffers(__glutDisplay, window->win) -#define SWAP_BUFFERS_LAYER(window) \ - glXSwapBuffers(__glutDisplay, window->renderWin) -#endif - -/* private variables from glut_event.c */ -extern GLUTwindow *__glutWindowWorkList; -extern int __glutWindowDamaged; -#ifdef SUPPORT_FORTRAN -extern GLUTtimer *__glutTimerList; -extern GLUTtimer *__glutNewTimer; -#endif -extern GLUTmenu *__glutMappedMenu; - -extern void (*__glutUpdateInputDeviceMaskFunc) (GLUTwindow *); -#if !defined(_WIN32) -extern void (*__glutMenuItemEnterOrLeave)(GLUTmenuItem * item, - int num, int type); -extern void (*__glutFinishMenu)(Window win, int x, int y); -extern void (*__glutPaintMenu)(GLUTmenu * menu); -extern void (*__glutStartMenu)(GLUTmenu * menu, - GLUTwindow * window, int x, int y, int x_win, int y_win); -extern GLUTmenu * (*__glutGetMenuByNum)(int menunum); -extern GLUTmenuItem * (*__glutGetMenuItem)(GLUTmenu * menu, - Window win, int *which); -extern GLUTmenu * (*__glutGetMenu)(Window win); -#endif - -/* private variables from glut_init.c */ -extern Atom __glutWMDeleteWindow; -extern Display *__glutDisplay; -extern unsigned int __glutDisplayMode; -extern char *__glutDisplayString; -extern XVisualInfo *(*__glutDetermineVisualFromString) (char *string, Bool * treatAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask, void **fbc); -extern GLboolean __glutDebug; -extern GLboolean __glutForceDirect; -extern GLboolean __glutIconic; -extern GLboolean __glutTryDirect; -extern Window __glutRoot; -extern XSizeHints __glutSizeHints; -extern char **__glutArgv; -extern char *__glutProgramName; -extern int __glutArgc; -extern int __glutConnectionFD; -extern int __glutInitHeight; -extern int __glutInitWidth; -extern int __glutInitX; -extern int __glutInitY; -extern int __glutScreen; -extern int __glutScreenHeight; -extern int __glutScreenWidth; -extern Atom __glutMotifHints; -extern unsigned int __glutModifierMask; -#ifdef _WIN32 -extern void (__cdecl *__glutExitFunc)(int retval); -#endif - -/* private variables from glut_menu.c */ -extern GLUTmenuItem *__glutItemSelected; -extern GLUTmenu **__glutMenuList; -extern void (GLUTCALLBACK *__glutMenuStatusFunc) (int, int, int); -extern void __glutMenuModificationError(void); -extern void __glutSetMenuItem(GLUTmenuItem * item, - const char *label, int value, Bool isTrigger); - -/* private variables from glut_win.c */ -extern GLUTwindow **__glutWindowList; -extern GLUTwindow *__glutCurrentWindow; -extern GLUTwindow *__glutMenuWindow; -extern GLUTmenu *__glutCurrentMenu; -extern int __glutWindowListSize; -extern void (*__glutFreeOverlayFunc) (GLUToverlay *); -extern XVisualInfo *__glutDetermineWindowVisual(Bool * treatAsSingle, - Bool * visAlloced, void **fbc); - -/* private variables from glut_mesa.c */ -extern int __glutMesaSwapHackSupport; - -/* private variables from glut_gamemode.c */ -extern GLUTwindow *__glutGameModeWindow; - -/* private routines from glut_cindex.c */ -extern GLUTcolormap * __glutAssociateNewColormap(XVisualInfo * vis); -extern void __glutFreeColormap(GLUTcolormap *); - -/* private routines from glut_cmap.c */ -extern void __glutSetupColormap( - XVisualInfo * vi, - GLUTcolormap ** colormap, - Colormap * cmap); -#if !defined(_WIN32) -extern void __glutEstablishColormapsProperty( - GLUTwindow * window); -extern GLUTwindow *__glutToplevelOf(GLUTwindow * window); -#endif - -/* private routines from glut_cursor.c */ -extern void __glutSetCursor(GLUTwindow *window); - -/* private routines from glut_event.c */ -extern void __glutPutOnWorkList(GLUTwindow * window, - int work_mask); -extern void __glutRegisterEventParser(GLUTeventParser * parser); -extern void __glutPostRedisplay(GLUTwindow * window, int layerMask); - -/* private routines from glut_init.c */ -#if !defined(_WIN32) -extern void __glutOpenXConnection(char *display); -#else -extern void __glutOpenWin32Connection(char *display); -#endif -extern void __glutInitTime(struct timeval *beginning); - -/* private routines for glut_menu.c (or win32_menu.c) */ -#if defined(_WIN32) -extern GLUTmenu *__glutGetMenu(HMENU win); -extern GLUTmenu *__glutGetMenuByNum(int menunum); -extern GLUTmenuItem *__glutGetMenuItem(GLUTmenu * menu, - HMENU win, int *which); -extern void __glutStartMenu(GLUTmenu * menu, - GLUTwindow * window, int x, int y, int x_win, int y_win); -extern void __glutFinishMenu(Window win, int x, int y); -#endif -extern void __glutSetMenu(GLUTmenu * menu); - -/* private routines from glut_util.c */ -extern char * __glutStrdup(const char *string); -extern void __glutWarning(char *format,...); -extern void __glutFatalError(char *format,...); -extern void __glutFatalUsage(char *format,...); - -/* private routines from glut_win.c */ -extern GLUTwindow *__glutGetWindow(Window win); -extern void __glutChangeWindowEventMask(long mask, Bool add); -extern XVisualInfo *__glutDetermineVisual( - unsigned int mode, - Bool * fakeSingle, - XVisualInfo * (getVisualInfo) (unsigned int)); -extern XVisualInfo *__glutGetVisualInfo(unsigned int mode); -extern void __glutSetWindow(GLUTwindow * window); -extern void __glutReshapeFunc(GLUTreshapeCB reshapeFunc, - int callingConvention); -extern void GLUTCALLBACK __glutDefaultReshape(int, int); -extern GLUTwindow *__glutCreateWindow( - GLUTwindow * parent, - int x, int y, int width, int height, int gamemode); -extern void __glutDestroyWindow( - GLUTwindow * window, - GLUTwindow * initialWindow); - -#if !defined(_WIN32) -/* private routines from glut_glxext.c */ -extern int __glutIsSupportedByGLX(char *); -#endif - -/* private routines from glut_input.c */ -extern void __glutUpdateInputDeviceMask(GLUTwindow * window); - -/* private routines from glut_mesa.c */ -extern void __glutDetermineMesaSwapHackSupport(void); - -/* private routines from glut_gameglut.c */ -extern void CDECL __glutCloseDownGameMode(void); - -#if defined(_WIN32) -/* private routines from win32_*.c */ -extern LONG WINAPI __glutWindowProc(HWND win, UINT msg, WPARAM w, LPARAM l); -extern HDC XHDC; -#endif - -#endif /* __glutint_h__ */ diff --git a/lib/glut-3.7.6/lib/glut/glutstroke.h b/lib/glut-3.7.6/lib/glut/glutstroke.h deleted file mode 100644 index fbbc70d6cc09a812633b447268694beec02ef8ad..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glutstroke.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef __glutstroke_h__ -#define __glutstroke_h__ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -#endif - -typedef struct { - float x; - float y; -} CoordRec, *CoordPtr; - -typedef struct { - int num_coords; - const CoordRec *coord; -} StrokeRec, *StrokePtr; - -typedef struct { - int num_strokes; - const StrokeRec *stroke; - float center; - float right; -} StrokeCharRec, *StrokeCharPtr; - -typedef struct { - const char *name; - int num_chars; - const StrokeCharRec *ch; - float top; - float bottom; -} StrokeFontRec, *StrokeFontPtr; - -typedef void *GLUTstrokeFont; - -#endif /* __glutstroke_h__ */ diff --git a/lib/glut-3.7.6/lib/glut/glutwin32.h b/lib/glut-3.7.6/lib/glut/glutwin32.h deleted file mode 100644 index 15ba945e65b6943835ab0ccc049be5ff753586b5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/glutwin32.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef __glutwin32_h__ -#define __glutwin32_h__ - -/* Copyright (c) Nate Robins, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "win32_x11.h" -#include "win32_glx.h" - -/* We have to undef some things because Microsoft likes to pollute the - global namespace. */ -#undef TRANSPARENT - -/* Win32 "equivalent" cursors - eventually, the X glyphs should be - converted to Win32 cursors -- then they will look the same */ -#define XC_arrow IDC_ARROW -#define XC_top_left_arrow IDC_ARROW -#define XC_hand1 IDC_SIZEALL -#define XC_pirate IDC_NO -#define XC_question_arrow IDC_HELP -#define XC_exchange IDC_NO -#define XC_spraycan IDC_SIZEALL -#define XC_watch IDC_WAIT -#define XC_xterm IDC_IBEAM -#define XC_crosshair IDC_CROSS -#define XC_sb_v_double_arrow IDC_SIZENS -#define XC_sb_h_double_arrow IDC_SIZEWE -#define XC_top_side IDC_UPARROW -#define XC_bottom_side IDC_SIZENS -#define XC_left_side IDC_SIZEWE -#define XC_right_side IDC_SIZEWE -#define XC_top_left_corner IDC_SIZENWSE -#define XC_top_right_corner IDC_SIZENESW -#define XC_bottom_right_corner IDC_SIZENWSE -#define XC_bottom_left_corner IDC_SIZENESW - -#define XA_STRING 0 - -/* Private routines from win32_util.c */ -extern int gettimeofday(struct timeval* tp, void* tzp); -extern void *__glutFont(void *font); -extern int __glutGetTransparentPixel(Display *dpy, XVisualInfo *vinfo); -extern void __glutAdjustCoords(Window parent, int *x, int *y, int *width, int *height); - -#endif /* __glutwin32_h__ */ diff --git a/lib/glut-3.7.6/lib/glut/layerutil.c b/lib/glut-3.7.6/lib/glut/layerutil.c deleted file mode 100644 index 70a9ed9db85b6ea9cd0ca1a1451a3048858a0bf8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/layerutil.c +++ /dev/null @@ -1,201 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1993, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Based on XLayerUtil.c: Revision: 1.5 */ - -#include -#include -#include "layerutil.h" - -/* SGI optimization introduced in IRIX 6.3 to avoid X server - round trips for interning common X atoms. */ -#include -#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS) -#include -#else -#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how) -#endif - -static Bool layersRead = False; -static OverlayInfo **overlayInfoPerScreen; -static unsigned long *numOverlaysPerScreen; - -static void -findServerOverlayVisualsInfo(Display * dpy) -{ - static Atom overlayVisualsAtom; - Atom actualType; - Status status; - unsigned long sizeData, bytesLeft; - Window root; - int actualFormat, numScreens, i; - - if (layersRead == False) { - overlayVisualsAtom = XSGIFastInternAtom(dpy, - "SERVER_OVERLAY_VISUALS", SGI_XA_SERVER_OVERLAY_VISUALS, True); - if (overlayVisualsAtom != None) { - numScreens = ScreenCount(dpy); - overlayInfoPerScreen = (OverlayInfo **) - malloc(numScreens * sizeof(OverlayInfo *)); - numOverlaysPerScreen = (unsigned long *) - malloc(numScreens * sizeof(unsigned long)); - if (overlayInfoPerScreen != NULL && - numOverlaysPerScreen != NULL) { - for (i = 0; i < numScreens; i++) { - root = RootWindow(dpy, i); - status = XGetWindowProperty(dpy, root, - overlayVisualsAtom, 0L, (long) 10000, False, - overlayVisualsAtom, &actualType, &actualFormat, - &sizeData, &bytesLeft, - (unsigned char **) &overlayInfoPerScreen[i]); - if (status != Success || - actualType != overlayVisualsAtom || - actualFormat != 32 || sizeData < 4) - numOverlaysPerScreen[i] = 0; - else - /* Four 32-bit quantities per - SERVER_OVERLAY_VISUALS entry. */ - numOverlaysPerScreen[i] = sizeData / 4; - } - layersRead = True; - } else { - if (overlayInfoPerScreen != NULL) - free(overlayInfoPerScreen); - if (numOverlaysPerScreen != NULL) - free(numOverlaysPerScreen); - } - } - } -} - -int -__glutGetTransparentPixel(Display * dpy, XVisualInfo * vinfo) -{ - int i, screen = vinfo->screen; - OverlayInfo *overlayInfo; - - findServerOverlayVisualsInfo(dpy); - if (layersRead) { - for (i = 0; i < numOverlaysPerScreen[screen]; i++) { - overlayInfo = &overlayInfoPerScreen[screen][i]; - if (vinfo->visualid == overlayInfo->overlay_visual) { - if (overlayInfo->transparent_type == TransparentPixel) { - return (int) overlayInfo->value; - } else { - return -1; - } - } - } - } - return -1; -} - -XLayerVisualInfo * -__glutXGetLayerVisualInfo(Display * dpy, long lvinfo_mask, - XLayerVisualInfo * lvinfo_template, int *nitems_return) -{ - XVisualInfo *vinfo; - XLayerVisualInfo *layerInfo; - int numVisuals, count, i, j; - - vinfo = XGetVisualInfo(dpy, lvinfo_mask & VisualAllMask, - &lvinfo_template->vinfo, nitems_return); - if (vinfo == NULL) - return NULL; - numVisuals = *nitems_return; - findServerOverlayVisualsInfo(dpy); - layerInfo = (XLayerVisualInfo *) - malloc(numVisuals * sizeof(XLayerVisualInfo)); - if (layerInfo == NULL) { - XFree(vinfo); - return NULL; - } - count = 0; - for (i = 0; i < numVisuals; i++) { - XVisualInfo *pVinfo = &vinfo[i]; - int screen = pVinfo->screen; - OverlayInfo *overlayInfo = NULL; - - overlayInfo = NULL; - if (layersRead) { - for (j = 0; j < numOverlaysPerScreen[screen]; j++) - if (pVinfo->visualid == - overlayInfoPerScreen[screen][j].overlay_visual) { - overlayInfo = &overlayInfoPerScreen[screen][j]; - break; - } - } - if (lvinfo_mask & VisualLayerMask) - if (overlayInfo == NULL) { - if (lvinfo_template->layer != 0) - continue; - } else if (lvinfo_template->layer != overlayInfo->layer) - continue; - if (lvinfo_mask & VisualTransparentType) - if (overlayInfo == NULL) { - if (lvinfo_template->type != None) - continue; - } else if (lvinfo_template->type != - overlayInfo->transparent_type) - continue; - if (lvinfo_mask & VisualTransparentValue) - if (overlayInfo == NULL) - /* Non-overlay visuals have no sense of - TransparentValue. */ - continue; - else if (lvinfo_template->value != overlayInfo->value) - continue; - layerInfo[count].vinfo = *pVinfo; - if (overlayInfo == NULL) { - layerInfo[count].layer = 0; - layerInfo[count].type = None; - layerInfo[count].value = 0; /* meaningless */ - } else { - layerInfo[count].layer = overlayInfo->layer; - layerInfo[count].type = overlayInfo->transparent_type; - layerInfo[count].value = overlayInfo->value; - } - count++; - } - XFree(vinfo); - *nitems_return = count; - if (count == 0) { - XFree(layerInfo); - return NULL; - } else - return layerInfo; -} - -#if 0 /* Unused by GLUT. */ -Status -__glutXMatchLayerVisualInfo(Display * dpy, int screen, - int depth, int visualClass, int layer, - XLayerVisualInfo * lvinfo_return) -{ - XLayerVisualInfo *lvinfo; - XLayerVisualInfo lvinfoTemplate; - int nitems; - - lvinfoTemplate.vinfo.screen = screen; - lvinfoTemplate.vinfo.depth = depth; -#if defined(__cplusplus) || defined(c_plusplus) - lvinfoTemplate.vinfo.c_class = visualClass; -#else - lvinfoTemplate.vinfo.class = visualClass; -#endif - lvinfoTemplate.layer = layer; - lvinfo = __glutXGetLayerVisualInfo(dpy, - VisualScreenMask | VisualDepthMask | - VisualClassMask | VisualLayerMask, - &lvinfoTemplate, &nitems); - if (lvinfo != NULL && nitems > 0) { - *lvinfo_return = *lvinfo; - return 1; - } else - return 0; -} -#endif diff --git a/lib/glut-3.7.6/lib/glut/layerutil.h b/lib/glut-3.7.6/lib/glut/layerutil.h deleted file mode 100644 index b65ebde72c8868ccce4adcc8d0410a0a83875e02..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/layerutil.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef __layerutil_h__ -#define __layerutil_h__ - -/* Copyright (c) Mark J. Kilgard, 1993, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Based on XLayerUtil.h: Revision: 1.3 */ - -#if !defined(_WIN32) -#include -#include -#include -#endif /* !_WIN32 */ - -/* Transparent type values */ -/* None 0 */ -#define TransparentPixel 1 -#define TransparentMask 2 - -/* layered visual info template flags */ -#define VisualLayerMask 0x200 -#define VisualTransparentType 0x400 -#define VisualTransparentValue 0x800 -#define VisualAllLayerMask 0xFFF - -/* layered visual info structure */ -typedef struct _XLayerVisualInfo { - XVisualInfo vinfo; - long layer; - long type; - unsigned long value; -} XLayerVisualInfo; - -/* SERVER_OVERLAY_VISUALS property element */ -typedef struct _OverlayInfo { - /* Avoid 64-bit portability problems by being careful to use - longs due to the way XGetWindowProperty is specified. Note - that these parameters are passed as CARD32s over X - protocol. */ - long overlay_visual; - long transparent_type; - long value; - long layer; -} OverlayInfo; - -extern int __glutGetTransparentPixel(Display *, XVisualInfo *); -extern XLayerVisualInfo *__glutXGetLayerVisualInfo(Display *, - long, XLayerVisualInfo *, int *); -extern Status __glutXMatchLayerVisualInfo(Display *, - int, int, int, int, XLayerVisualInfo *); - -#endif /* __layerutil_h__ */ diff --git a/lib/glut-3.7.6/lib/glut/mesa.patch2 b/lib/glut-3.7.6/lib/glut/mesa.patch2 deleted file mode 100644 index d323234ccaff4afb1d02cad0582ccad0dfa8f068..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/mesa.patch2 +++ /dev/null @@ -1,38 +0,0 @@ -==== //sw/main/apps/OpenGL/glut/lib/glut/win32_x11.c#6 - d:\src\sw\main\apps\OpenGL\glut\lib\glut\win32_x11.c ==== -*************** -*** 6,13 **** - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -! #include -! #include "win32_x11.h" - - /* global variable that must be set for some functions to operate - correctly. */ ---- 6,12 ---- - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -! #include "glutint.h" - - /* global variable that must be set for some functions to operate - correctly. */ -==== //sw/main/apps/OpenGL/glut/lib/glut/win32_glx.c#8 - d:\src\sw\main\apps\OpenGL\glut\lib\glut\win32_glx.c ==== -*************** -*** 5,12 **** - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -! #include -! #include "win32_glx.h" - - /* global current HDC */ - extern HDC XHDC; ---- 5,11 ---- - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -! #include "glutint.h" - - /* global current HDC */ - extern HDC XHDC; diff --git a/lib/glut-3.7.6/lib/glut/stroke.h b/lib/glut-3.7.6/lib/glut/stroke.h deleted file mode 100644 index bd5e058c5e64e7fc760df627176eabda091755e3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/stroke.h +++ /dev/null @@ -1,134 +0,0 @@ -/* $XConsortium: wfont.h,v 5.1 91/02/16 09:46:37 rws Exp $ */ - -/***************************************************************** -Copyright (c) 1989,1990, 1991 by Sun Microsystems, Inc. and the X Consortium. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Sun Microsystems, -the X Consortium, and MIT not be used in advertising or publicity -pertaining to distribution of the software without specific, written -prior permission. - -SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT -SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -#ifndef WFONT_INCLUDED -#define WFONT_INCLUDED - -#define WFONT_MAGIC 0x813 -#define WFONT_MAGIC_PLUS 0x715 -#define WFONT_MAGIC_PEX 0x70686e74 -#define START_PROPS 0x100 -#define START_DISPATCH(_num_props) (START_PROPS + 160 * _num_props) -#define START_PATH(_num_ch_, _num_props) (START_DISPATCH(_num_props) + sizeof(Dispatch) * _num_ch_) -#define NUM_DISPATCH 128 - -typedef struct { - unsigned short x; - unsigned short y; -} Path_point2dpx; - -typedef struct { - float x; - float y; -} Path_point2df; - -typedef struct { - int x; - int y; - int z; -} Path_point3di; - -typedef struct { - float x; - float y; - float z; -} Path_point3df; - -typedef struct { - float x; - float y; - float z; - float w; -} Path_point4df; - -typedef union { - Path_point2dpx *pt2dpx; - Path_point2df *pt2df; - Path_point3di *pt3di; - Path_point3df *pt3df; - Path_point4df *pt4df; -} Path_pt_ptr; - -typedef enum { - PATH_2DF, - PATH_2DPX, - PATH_3DF, - PATH_3DI, - PATH_4DF -} Path_type; - -typedef struct { - int n_pts; /* number of points in the subpath */ - Path_pt_ptr pts; /* pointer to them */ - int closed; /* true if the subpath is closed */ - int dcmp_flag; /* flag for pgon dcmp, pgon type - * and dcmped triangle type */ -} Path_subpath; - -typedef struct { - Path_type type; /* type of vertices in this path */ - int n_subpaths; /* number of subpaths */ - int n_vertices; /* total number of vertices */ - Path_subpath *subpaths; /* array of subpaths */ -} Path; - -typedef Path *Path_handle; - -typedef struct { - char propname[80]; /* font property name */ - char propvalue[80]; /* font property value */ -} Property; - -typedef struct { - int magic; /* magic number */ - char name[80]; /* name of this font */ - float top, /* extreme values */ - bottom, max_width; - int num_ch; /* no. of fonts in the set */ - int num_props; /* no. of font properties */ - Property *properties; /* array of properties */ -} Font_header; - -typedef struct { - float center, /* center of the character */ - right; /* right edge */ - long offset; /* offset in the file of the character - * * description */ -} Dispatch; - -typedef struct { - float center, right; - Path strokes; -} Ch_font; - -typedef struct { - char name[80]; - float top, bottom, max_width; - int num_ch; /* # characters in the font */ - Ch_font **ch_data; -} Phg_font; - -#endif /*WFONT_INCLUDED */ diff --git a/lib/glut-3.7.6/lib/glut/strokegen.y b/lib/glut-3.7.6/lib/glut/strokegen.y deleted file mode 100644 index dd44d2d3a3d1d46e442ac99843fc66c61cc1242e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/strokegen.y +++ /dev/null @@ -1,649 +0,0 @@ -%{ -/* $XConsortium: to_wfont.y,v 5.7 94/04/17 20:10:08 rws Exp $ */ - -/***************************************************************** - -Copyright (c) 1989,1990, 1991 X Consortium - -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 and this permission notice 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 THE -X CONSORTIUM 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 the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -Copyright (c) 1989,1990, 1991 by Sun Microsystems, Inc. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Sun Microsystems, -and the X Consortium, not be used in advertising or publicity -pertaining to distribution of the software without specific, written -prior permission. - -SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT -SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - - -#define YYMAXDEPTH 10000 - -#include -#include -#include -#ifndef L_SET -#define L_SET SEEK_SET -#endif -#include "stroke.h" - -#ifdef X_NOT_STDC_ENV -FILE *fopen(); -#endif - -typedef struct { - - float std_left, /* NCGA standard left spacing */ - std_wide, /* character width */ - std_rght; /* Right spacing */ -} Standard; - - -char fname[80]; -char symname[80] = "FONT"; -Dispatch *Table; /* dispatch table */ -Standard *sp_table; /* NCGA font spacings */ -Path *strokes; /* strokes of each character */ -Property *property; /* property list */ - -struct { - int path, point, props; -} count, expect; - -Path_subpath *current_path; - -Font_header head; /* font header */ -int tableindex; /* which character */ -int yyerrno; /* error number */ - -%} - -%union { - int nil; /* void is reserved */ - int ival; - float dval; - char *cval; -} - -%start font - -%token REAL -%token INTEGER -%token STRING - -%token BOTTOM -%token CENTER -%token CLOSE -%token FONTNAME -%token PROPERTIES -%token NUM_CH -%token INDEX -%token L_SPACE -%token MAGIC -%token OPEN -%token RIGHT -%token R_SPACE -%token STROKE -%token TOP -%token VERTICES -%token BEARING -%token WIDTH - -%type fontname -%type properties -%type top bottom center right -%type nstroke nvertice n_pts index num_ch -%type closeflag -%type counter -%type sp_left wide sp_right - -%% - -font : fontheader num_ch fontprops fontbody spacing { fini(); }| - fontheader fontbody { fini(); }; - -fontheader : fontname top bottom - { wf_header($1, $2, $3); }; - -fontname : FONTNAME STRING - { $$ = $2; }; - -top : TOP REAL { $$ = $2;}; - -bottom : BOTTOM REAL { $$ = $2;}; - -num_ch: NUM_CH INTEGER { set_num_ch($2);}; - -fontprops : /* empty */ | properties; - -properties : PROPERTIES INTEGER { init_properties ($2); } property_list - { check_num_props (); } - -property_list : /* empty */ | single_property property_list - -single_property : STRING STRING { add_property($1, $2); }; - -fontbody : /* empty */ - | glyph fontbody; - -glyph : glyph_header strokes - { check_nstroke(); }; - -glyph_header : index { tableindex = $1; } sym_headinfo; - -sym_headinfo : nstroke center right nvertice - { glyph_header($1, $2, $3, $4); }; - -index : INDEX INTEGER { check_num_ch(); $$ = $2; }; - -nstroke : STROKE INTEGER { $$ = $2; expect.path = $2; }; - -nvertice: {$$ = 0;} | VERTICES INTEGER { $$ = $2; } ; - -center : CENTER REAL{ $$ = $2; }; - -right : RIGHT REAL{ $$ = $2; }; - -strokes : /* empty */ | path strokes; - -path : closeflag n_pts { init_path($1, $2); } points - { check_npts(); } - -points : /* empty */ | coord points; - -closeflag : CLOSE { $$ = $1 == CLOSE; } | OPEN { $$ = $1 == CLOSE; } ; - -n_pts : INTEGER { $$ = $1; }; - -coord : REAL REAL { add_point($1, $2); }; - -spacing : /* empty */ - | item spacing; - -item : counter {tableindex = $1;} sp_left wide sp_right - { std_space($3, $4, $5); }; - -counter : BEARING INTEGER {$$ = $2;}; - -sp_left: L_SPACE REAL {$$ = $2;}; - -wide : WIDTH REAL {$$ = $2;}; - -sp_right: R_SPACE REAL {$$ = $2;}; - -%% - -#define BYE(err) yyerrno = (err), yyerror() - -#define ERR_BASE 1000 -#define OPEN_ERROR 1001 -#define WRITE_ERROR 1002 -#define WRONG_NAME 1003 -#define NO_MEMORY 1004 -#define EXCEED_PATH 1005 -#define EXCEED_POINT 1006 -#define PATH_MISMATCH 1007 -#define POINT_MISMATCH 1008 -#define PROP_MISMATCH 1009 -#define EXCEED_PROPS 1010 - -char *prog; - -main(argc, argv) - int argc; - char *argv[]; - -{ - /* Usage : to_wfont [-o outfile] [infile] */ - char *s; - - fname[0] = 0; - tableindex = 0; - head.num_ch = -1; - - prog = *argv; - while (--argc > 0 && *++argv != NULL) { - s = *argv; - if (*s++ == '-') - switch (*s) { - case 's': - if (*++argv != NULL) - { - --argc; - (void) strcpy(symname, *argv); - } - break; - case 'o': - if (*++argv != NULL) - { - --argc; - (void) strcpy(fname, *argv); - } - break; - default: /* ignore other options */ - ; - } - else { - FILE *fp; - - /* standard input redirection */ - fp = fopen(*argv, "r"); - if (fp != NULL) { - if (close(fileno(stdin)) < 0) - { - perror(prog); - return; - } - if (dup(fileno(fp)) < 0) - { - perror(prog); - return; - } - (void) fclose(fp); - } - } - } - return (yyparse()); -} - -/* set number of characters */ -set_num_ch(num_ch) -int num_ch; -{ - yyerrno = 0; - head.num_ch = num_ch; - if (num_ch > 0) { - Table = (Dispatch *) malloc(num_ch * sizeof(Dispatch)); - sp_table = (Standard *) malloc(num_ch * sizeof(Standard)); - strokes = (Path *) malloc(num_ch * sizeof(Path)); - } - - for (tableindex = 0; tableindex < num_ch; tableindex++) { - Table[tableindex].center = 0.0; - Table[tableindex].right = 0.0; - Table[tableindex].offset = 0; - - sp_table[tableindex].std_left = 0.0; - sp_table[tableindex].std_wide = 0.0; - sp_table[tableindex].std_rght = 0.0; - - strokes[tableindex].n_subpaths = 0; - strokes[tableindex].n_vertices = 0; - strokes[tableindex].subpaths = NULL; - } -} - -/* initialize the property info in the header */ -init_properties(num_props) - int num_props; -{ - if (num_props > 0) { - head.properties = (Property *) - malloc (num_props * sizeof (Property)); - head.num_props = expect.props = num_props; - } - else { - head.properties = NULL; - head.num_props = expect.props = 0; - } - count.props = -1; - property = head.properties; /* initialize the list pointer */ -} - -check_num_props() -{ - count.props++; - if (count.props != expect.props) - BYE (PROP_MISMATCH); -} - -/* add individual property info into the buffer */ -add_property(name, value) - char *name, - *value; -{ - /* check if the property exceeds allocated space */ - - if (++count.props >= head.num_props) - BYE(EXCEED_PROPS); - - /* copy the strings into the buffer */ - - (void) strcpy (property->propname, name); - (void) strcpy (property->propvalue, value); - - /* increment the property pointer */ - - property++; -} - -check_num_ch() -{ - - if (head.num_ch == -1) - set_num_ch(128); - -} - -yyerror() -{ -#ifndef __bsdi__ - extern int yylineno; -#endif -# define ERR_SIZE (sizeof(err_string) / sizeof(char *)) - static char *err_string[] = { - "Cannot open file", - "Write fails", - "Illegal font name", - "Memory allocation failure", - "Specified number of strokes exceeded", - "Specified number of points exceeded", - "Number of strokes do not match", - "Number of points do not match", - "Number of properties do not match", - "Specified number of properties exceeded", - 0}; - char *str; - - yyerrno -= ERR_BASE; - if (yyerrno > 0 && yyerrno < ERR_SIZE) - str = err_string[yyerrno-1]; - else - str = "Syntax error"; -#ifdef __bsdi__ - fprintf(stderr, "%s.\n", str); -#else - fprintf(stderr, "line %d: %s.\n", yylineno, str); -#endif - freeall(); - (void) unlink(fname); - exit(1); -} - -/* create wfont header */ -wf_header(name, top, bottom) - char *name; - float top, - bottom; -{ - - if (name == NULL) - BYE(WRONG_NAME); - head.top = (float) top; - head.bottom = (float) bottom; - head.magic = WFONT_MAGIC_PEX; - (void) strcpy(head.name, name); - free(name); -} - -/* create header for each glyph */ -glyph_header(npath, center, right, npts) - int npath, - npts; - float center, - right; -{ - { - register Path *strk = strokes + tableindex; - - if (npath > 0) /* Don't allocate space unless the character - has strokes associated with it. */ - { - strk->subpaths = (Path_subpath *) - malloc(npath * sizeof (Path_subpath)); - - if (strk->subpaths == NULL) - BYE(NO_MEMORY); - - strk->type = PATH_2DF; - strk->n_subpaths = npath; - strk->n_vertices = npts; - } - else { /* Just initialize the entry */ - strk->subpaths = NULL; - strk->type = PATH_2DF; - strk->n_subpaths = 0; - strk->n_vertices = 0; - } - } - { - register Dispatch *tbl = Table + tableindex; - - tbl->offset = 0; - tbl->center = center; - tbl->right = right; - } - count.path = -1; /* initialize path counter, not to - * exceed n_subpath */ -} - -/* create standard spacing info for each glyph */ -std_space(l_bear, wide, r_bear) - - float l_bear, - wide, - r_bear; -{ - register Standard *tbl = sp_table +tableindex; - tbl->std_left = l_bear; - tbl->std_wide = wide; - tbl->std_rght = r_bear; -} - -/* initialize each sub_path */ -init_path(close, n) - int close, - n; -{ - register Path_subpath *path; - - if (++count.path >= strokes[tableindex].n_subpaths) - BYE(EXCEED_PATH); - path = current_path = strokes[tableindex].subpaths + count.path; - path->n_pts = n; - path->closed = close; - if (n > 0) - path->pts.pt2df = (Path_point2df *) - malloc(n * sizeof (Path_point2df)); - if (path->pts.pt2df == NULL) - BYE(NO_MEMORY); - expect.point = path->n_pts; - count.point = -1; /* initialize point counter, not to - * exceed n_pts */ -} - -/* accumulating points for each sub_path */ -add_point(x, y) - float x, - y; -{ - register Path_subpath *path; - register Path_point2df *pt_ptr; - - path = current_path; - if (++count.point >= path->n_pts) - BYE(EXCEED_POINT); - pt_ptr = path->pts.pt2df + count.point; - pt_ptr->x = x; - pt_ptr->y = y; -} - -/* Path_type + n_subpaths + n_vertices */ -#define STROKE_HEAD (sizeof (Path_type) + sizeof (int) + sizeof (int)) - -/* write out file, close everything, free everything */ -fini() -{ - static long zero = 0; - - /* pointers used to walk the arrays */ - register Path_subpath *spath; - register Dispatch *tbl_ptr; - register Path *strptr; - register Property *prop_ptr; - - FILE *fp; - int npath; - register int i, - j, - k; - Standard *sp_ptr; - Path_point2df *pt; - - printf("\n/* GENERATED FILE -- DO NOT MODIFY */\n\n"); - printf("#include \"glutstroke.h\"\n\n"); - -# define BY_BYE(err) fclose(fp), BYE(err) - - /* adjust the characters for spacing, note max char width */ - head.max_width = 0.0; - for (i = 0, tbl_ptr = Table, strptr = strokes, sp_ptr = sp_table; - i < head.num_ch; i++, tbl_ptr++, strptr++, sp_ptr++) { - tbl_ptr->center += sp_ptr->std_left; - tbl_ptr->right += sp_ptr->std_left + sp_ptr->std_rght; - if (tbl_ptr->right > head.max_width) - head.max_width = tbl_ptr->right; - npath = strptr->n_subpaths; - if (npath > 0 || tbl_ptr->center != 0.0 || - tbl_ptr->right != 0.0) { - for (j = 0, spath = strptr->subpaths; - j < npath; j++, spath++) { - for(k=0, pt = spath->pts.pt2df; - kn_pts; k++, pt++) { - pt->x += sp_ptr->std_left; - } - } - } - } - - /* write the stroke table */ - for (i = 0, tbl_ptr = Table, strptr = strokes; - i < head.num_ch; i++, tbl_ptr++, strptr++) { - if (strptr->n_subpaths > 0 && - tbl_ptr->center != 0.0 && - tbl_ptr->right != 0.0) { - if(isprint(i)) { - printf("/* char: %d '%c' */\n\n", i, i); - } else { - printf("/* char: %d */\n\n", i); - } - - for (j = 0, spath = strptr->subpaths; - j < strptr->n_subpaths; j++, spath++) { - int z; - - printf("static const CoordRec char%d_stroke%d[] = {\n", i, j); - for(z = 0; z < spath->n_pts; z++) { - printf(" { %g, %g },\n", - spath->pts.pt2df[z].x, spath->pts.pt2df[z].y); - } - printf("};\n\n"); - } - - printf("static const StrokeRec char%d[] = {\n", i); - for (j = 0, spath = strptr->subpaths; - j < strptr->n_subpaths; j++, spath++) { - printf(" { %d, char%d_stroke%d },\n", - spath->n_pts, i, j); - } - printf("};\n\n"); - } - } - printf("static const StrokeCharRec chars[] = {\n"); - for (i = 0, tbl_ptr = Table, strptr = strokes; - i < head.num_ch; i++, tbl_ptr++, strptr++) { - if (strptr->n_subpaths > 0 && - tbl_ptr->center != 0.0 && - tbl_ptr->right != 0.0) { - printf(" { %d, char%d, %g, %g },\n", - strptr->n_subpaths, i, tbl_ptr->center, tbl_ptr->right); - } else { - printf(" { 0, /* char%d */ 0, %g, %g },\n", - i, tbl_ptr->center, tbl_ptr->right); - } - } - printf("};\n\n"); - - printf("StrokeFontRec %s = { \"%s\", %d, chars, %.6g, %.6g };\n\n", - symname, head.name, head.num_ch, - (double) head.top, (double) head.bottom); - - fflush(stdout); - - freeall(); -# undef BY_BYE -} - -freeall() -{ - register Path *path; - register Path_subpath *spath; - register int i, - j, - n; - - path = strokes; - for (i = 0; i < head.num_ch; i++, path++) { - n = path->n_subpaths; - if (n <= 0) - continue; - spath = path->subpaths; - for (j = 0; j < n; j++, spath++) - if (spath->pts.pt2df != NULL) - free((char *) spath->pts.pt2df); - if (path->subpaths != NULL) - free((char *) path->subpaths); - } - free(Table); - free(sp_table); - free(strokes); - if (head.properties != NULL) - free((char *) head.properties); -} - -check_nstroke() -{ - count.path++; - if (expect.path != count.path) - BYE(PATH_MISMATCH); -} - -check_npts() -{ - count.point++; - if (expect.point != count.point) - BYE(POINT_MISMATCH); -} diff --git a/lib/glut-3.7.6/lib/glut/strokelex.l b/lib/glut-3.7.6/lib/glut/strokelex.l deleted file mode 100644 index 82b5989562113b705109055cab56257f67babe66..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/strokelex.l +++ /dev/null @@ -1,131 +0,0 @@ -%{ -/* $XConsortium: lex.l,v 5.4 91/08/26 10:55:26 gildea Exp $ */ - -/***************************************************************** -Copyright (c) 1989,1990, 1991 by Sun Microsystems, Inc. and the X Consortium. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Sun Microsystems, -the X Consortium, and MIT not be used in advertising or publicity -pertaining to distribution of the software without specific, written -prior permission. - -SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT -SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - - -#include -#include -#include -#include "strokegen.h" - -#if defined(ISC) && defined(SYSV) && defined(SYSV386) && __STDC__ -extern double atof(char *); -#endif - -#ifdef FLEX_SCANNER -int yylineno; -#endif - -%} -%% -\'[^']*\' | -\"[^"]*\" return string(yytext, yyleng); -#.* ; -[ ,;\t\n]* /* natural dilimters */ ; - -[a-zA-Z][a-zA-Z0-9_.]* { - int token; - if (token = res_words(yytext)) - return token; - return string(yytext, yyleng); - } - -[+-]?[0-9]+\.?[0-9]*[eE][+-]?[0-9]+ | -[+-]?[0-9]+\.[0-9]* | -\.[0-9]+ { - yylval.dval = atof(yytext); - return REAL; - } -[+-]?[0-9]+#[0-9]+ { - return INTEGER; - } -[+-]?[0-9]+ { - yylval.ival = atoi(yytext); - return INTEGER; - } -[()] ; -%% - -int -res_words(str) -char str[]; -{ - static struct res_strct { - char *word; - int token; - } res_table[] = { - {"BOTTOM", BOTTOM}, - {"CENTER", CENTER}, - {"PROPERTIES", PROPERTIES}, - {"CLOSE", CLOSE}, - {"FONTNAME", FONTNAME}, - {"INDEX", INDEX}, - {"MAGIC", MAGIC}, - {"OPEN", OPEN}, - {"RIGHT", RIGHT}, - {"STROKE", STROKE}, - {"TOP", TOP}, - {"VERTICES", VERTICES}, - {"BEARING", BEARING}, - {"L_SPACE", L_SPACE}, - {"WIDTH", WIDTH}, - {"R_SPACE", R_SPACE}, - {"NUM_CH", NUM_CH}, - {0, 0} - }; - - { - register struct res_strct *reserved; - - reserved = res_table; - - do - if (!strcmp(str, reserved->word)) - break; - while ((++reserved)->word != 0); - return reserved->token; - } -} - -int -string(str, n) -char *str; -int n; -{ - if (*str == '\"' || *str == '\'') - { - str++; - n -= 2; /* one for EOL, one for end quote */ - } - if ((yylval.cval = (char *)malloc(n+1)) != NULL) - { - strncpy(yylval.cval, str, n); - yylval.cval[n] = '\0'; - return STRING; - } - else - return 0; -} diff --git a/lib/glut-3.7.6/lib/glut/win32_glx.c b/lib/glut-3.7.6/lib/glut/win32_glx.c deleted file mode 100644 index 47b84f5bae3b54d59fe96a5152815ea3cdbc0709..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/win32_glx.c +++ /dev/null @@ -1,254 +0,0 @@ - -/* Copyright (c) Nate Robins, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -/* global current HDC */ -extern HDC XHDC; - -GLXContext -glXCreateContext(Display * display, XVisualInfo * visinfo, - GLXContext share, Bool direct) -{ - /* KLUDGE: GLX really expects a display pointer to be passed - in as the first parameter, but Win32 needs an HDC instead, - so BE SURE that the global XHDC is set before calling this - routine. */ - HGLRC context; - - context = wglCreateContext(XHDC); - -#if 0 - /* XXX GLUT doesn't support it now, so don't worry about display list - and texture object sharing. */ - if (share) { - wglShareLists(share, context); - } -#endif - - /* Since direct rendering is implicit, the direct flag is - ignored. */ - - return context; -} - -int -glXGetConfig(Display * display, XVisualInfo * visual, int attrib, int *value) -{ - if (!visual) - return GLX_BAD_VISUAL; - - switch (attrib) { - case GLX_USE_GL: - if ((visual->dwFlags & PFD_SUPPORT_OPENGL ) && (visual->dwFlags & PFD_DRAW_TO_WINDOW)) { - /* XXX Brad's Matrix Millenium II has problems creating - color index windows in 24-bit mode (lead to GDI crash) - and 32-bit mode (lead to black window). The cColorBits - filed of the PIXELFORMATDESCRIPTOR returned claims to - have 24 and 32 bits respectively of color indices. 2^24 - and 2^32 are ridiculously huge writable colormaps. - Assume that if we get back a color index - PIXELFORMATDESCRIPTOR with 24 or more bits, the - PIXELFORMATDESCRIPTOR doesn't really work and skip it. - -mjk */ - if (visual->iPixelType == PFD_TYPE_COLORINDEX - && visual->cColorBits >= 24) { - *value = 0; - } else { - *value = 1; - } - } else { - *value = 0; - } - break; - case GLX_BUFFER_SIZE: - /* KLUDGE: if we're RGBA, return the number of bits/pixel, - otherwise, return 8 (we guessed at 256 colors in CI - mode). */ - if (visual->iPixelType == PFD_TYPE_RGBA) - *value = visual->cColorBits; - else - *value = 8; - break; - case GLX_LEVEL: - /* The bReserved flag of the pfd contains the - overlay/underlay info. */ - *value = visual->bReserved; - break; - case GLX_RGBA: - *value = visual->iPixelType == PFD_TYPE_RGBA; - break; - case GLX_DOUBLEBUFFER: - *value = visual->dwFlags & PFD_DOUBLEBUFFER; - break; - case GLX_STEREO: - *value = visual->dwFlags & PFD_STEREO; - break; - case GLX_AUX_BUFFERS: - *value = visual->cAuxBuffers; - break; - case GLX_RED_SIZE: - *value = visual->cRedBits; - break; - case GLX_GREEN_SIZE: - *value = visual->cGreenBits; - break; - case GLX_BLUE_SIZE: - *value = visual->cBlueBits; - break; - case GLX_ALPHA_SIZE: - *value = visual->cAlphaBits; - break; - case GLX_DEPTH_SIZE: - *value = visual->cDepthBits; - break; - case GLX_STENCIL_SIZE: - *value = visual->cStencilBits; - break; - case GLX_ACCUM_RED_SIZE: - *value = visual->cAccumRedBits; - break; - case GLX_ACCUM_GREEN_SIZE: - *value = visual->cAccumGreenBits; - break; - case GLX_ACCUM_BLUE_SIZE: - *value = visual->cAccumBlueBits; - break; - case GLX_ACCUM_ALPHA_SIZE: - *value = visual->cAccumAlphaBits; - break; - default: - return GLX_BAD_ATTRIB; - } - return 0; -} - -XVisualInfo * -glXChooseVisual(Display * display, int screen, int *attribList) -{ - /* KLUDGE: since we need the HDC, MAKE SURE to set XHDC - before calling this routine. */ - - int *p = attribList; - int pf; - PIXELFORMATDESCRIPTOR pfd; - PIXELFORMATDESCRIPTOR *match = NULL; - int stereo = 0; - - /* Avoid seg-faults. */ - if (!p) - return NULL; - - memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); - pfd.nSize = (sizeof(PIXELFORMATDESCRIPTOR)); - pfd.nVersion = 1; - - /* Defaults. */ - pfd.dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW; - pfd.iPixelType = PFD_TYPE_COLORINDEX; - pfd.cColorBits = 32; - pfd.cDepthBits = 0; - - while (*p) { - switch (*p) { - case GLX_USE_GL: - pfd.dwFlags |= PFD_SUPPORT_OPENGL; - break; - case GLX_BUFFER_SIZE: - pfd.cColorBits = *(++p); - break; - case GLX_LEVEL: - /* the bReserved flag of the pfd contains the - overlay/underlay info. */ - pfd.bReserved = *(++p); - break; - case GLX_RGBA: - pfd.iPixelType = PFD_TYPE_RGBA; - break; - case GLX_DOUBLEBUFFER: - pfd.dwFlags |= PFD_DOUBLEBUFFER; - break; - case GLX_STEREO: - stereo = 1; - pfd.dwFlags |= PFD_STEREO; - break; - case GLX_AUX_BUFFERS: - pfd.cAuxBuffers = *(++p); - break; - case GLX_RED_SIZE: - pfd.cRedBits = 8; /* Try to get the maximum. */ - ++p; - break; - case GLX_GREEN_SIZE: - pfd.cGreenBits = 8; - ++p; - break; - case GLX_BLUE_SIZE: - pfd.cBlueBits = 8; - ++p; - break; - case GLX_ALPHA_SIZE: - pfd.cAlphaBits = 8; - ++p; - break; - case GLX_DEPTH_SIZE: - pfd.cDepthBits = 32; - ++p; - break; - case GLX_STENCIL_SIZE: - pfd.cStencilBits = *(++p); - break; - case GLX_ACCUM_RED_SIZE: - case GLX_ACCUM_GREEN_SIZE: - case GLX_ACCUM_BLUE_SIZE: - case GLX_ACCUM_ALPHA_SIZE: - /* I believe that WGL only used the cAccumRedBits, - cAccumBlueBits, cAccumGreenBits, and cAccumAlphaBits fields - when returning info about the accumulation buffer precision. - Only cAccumBits is used for requesting an accumulation - buffer. */ - pfd.cAccumBits = 1; - ++p; - break; - } - ++p; - } - - /* Let Win32 choose one for us. */ - pf = ChoosePixelFormat(XHDC, &pfd); - if (pf > 0) { - match = (PIXELFORMATDESCRIPTOR *) malloc(sizeof(PIXELFORMATDESCRIPTOR)); - DescribePixelFormat(XHDC, pf, sizeof(PIXELFORMATDESCRIPTOR), match); - - /* ChoosePixelFormat is dumb in that it will return a pixel - format that doesn't have stereo even if it was requested - so we need to make sure that if stereo was selected, we - got it. */ - if (stereo) { - if (!(match->dwFlags & PFD_STEREO)) { - free(match); - return NULL; - } - } - /* XXX Brad's Matrix Millenium II has problems creating - color index windows in 24-bit mode (lead to GDI crash) - and 32-bit mode (lead to black window). The cColorBits - filed of the PIXELFORMATDESCRIPTOR returned claims to - have 24 and 32 bits respectively of color indices. 2^24 - and 2^32 are ridiculously huge writable colormaps. - Assume that if we get back a color index - PIXELFORMATDESCRIPTOR with 24 or more bits, the - PIXELFORMATDESCRIPTOR doesn't really work and skip it. - -mjk */ - if (match->iPixelType == PFD_TYPE_COLORINDEX - && match->cColorBits >= 24) { - free(match); - return NULL; - } - } - return match; -} diff --git a/lib/glut-3.7.6/lib/glut/win32_glx.h b/lib/glut-3.7.6/lib/glut/win32_glx.h deleted file mode 100644 index fd3c5035508b69a8be22b3fc8ba016cbf55ad402..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/win32_glx.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef __win32_glx_h__ -#define __win32_glx_h__ - -/* Copyright (c) Nate Robins, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "win32_x11.h" - -/* Type definitions (conversions). */ -typedef HGLRC GLXContext; - -#define GLX_USE_GL 1 /* support GLX rendering */ -#define GLX_BUFFER_SIZE 2 /* depth of the color buffer */ -#define GLX_LEVEL 3 /* level in plane stacking */ -#define GLX_RGBA 4 /* true if RGBA mode */ -#define GLX_DOUBLEBUFFER 5 /* double buffering supported */ -#define GLX_STEREO 6 /* stereo buffering supported */ -#define GLX_AUX_BUFFERS 7 /* number of aux buffers */ -#define GLX_RED_SIZE 8 /* number of red component bits */ -#define GLX_GREEN_SIZE 9 /* number of green component bits */ -#define GLX_BLUE_SIZE 10 /* number of blue component bits */ -#define GLX_ALPHA_SIZE 11 /* number of alpha component bits */ -#define GLX_DEPTH_SIZE 12 /* number of depth bits */ -#define GLX_STENCIL_SIZE 13 /* number of stencil bits */ -#define GLX_ACCUM_RED_SIZE 14 /* number of red accum bits */ -#define GLX_ACCUM_GREEN_SIZE 15 /* number of green accum bits */ -#define GLX_ACCUM_BLUE_SIZE 16 /* number of blue accum bits */ -#define GLX_ACCUM_ALPHA_SIZE 17 /* number of alpha accum bits */ - -#define GLX_BAD_ATTRIB 2 -#define GLX_BAD_VISUAL 4 - -/* Functions emulated by macros. */ - -#define glXDestroyContext(display, context) \ - wglDeleteContext(context) - -/* Function prototypes. */ - -extern GLXContext glXCreateContext( - Display* display, - XVisualInfo* visinfo, - GLXContext share, - Bool direct); -extern int glXGetConfig( - Display* display, - XVisualInfo* visual, - int attrib, - int* value); -extern XVisualInfo* glXChooseVisual( - Display* display, - int screen, - int* attribList); - -#endif /* __win32_glx_h__ */ diff --git a/lib/glut-3.7.6/lib/glut/win32_menu.c b/lib/glut-3.7.6/lib/glut/win32_menu.c deleted file mode 100644 index f7c7c8215807dc2e5fda3a8ef2e6e55a177b6037..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/win32_menu.c +++ /dev/null @@ -1,531 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. */ -/* Copyright (c) Nate Robins, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This file completely re-implements glut_menu.c and glut_menu2.c - for Win32. Note that neither glut_menu.c nor glut_menu2.c are - compiled into Win32 GLUT. */ - -#include -#include -#include -#include -#include - -#include "glutint.h" - -void (GLUTCALLBACK *__glutMenuStatusFunc) (int, int, int); -GLUTmenu *__glutMappedMenu; -GLUTwindow *__glutMenuWindow; -GLUTmenuItem *__glutItemSelected; -unsigned __glutMenuButton; - -static GLUTmenu **menuList = NULL; -static int menuListSize = 0; -static UINT uniqueMenuHandler = 1; - -/* DEPRICATED, use glutMenuStatusFunc instead. */ -void APIENTRY -glutMenuStateFunc(GLUTmenuStateCB menuStateFunc) -{ - __glutMenuStatusFunc = (GLUTmenuStatusCB) menuStateFunc; -} - -void APIENTRY -glutMenuStatusFunc(GLUTmenuStatusCB menuStatusFunc) -{ - __glutMenuStatusFunc = menuStatusFunc; -} - -void -__glutSetMenu(GLUTmenu * menu) -{ - __glutCurrentMenu = menu; -} - -static void -unmapMenu(GLUTmenu * menu) -{ - if (menu->cascade) { - unmapMenu(menu->cascade); - menu->cascade = NULL; - } - menu->anchor = NULL; - menu->highlighted = NULL; -} - -void -__glutFinishMenu(Window win, int x, int y) -{ - - unmapMenu(__glutMappedMenu); - - /* XXX Put in a GdiFlush just in case. Probably unnecessary. -mjk */ - GdiFlush(); - - if (__glutMenuStatusFunc) { - __glutSetWindow(__glutMenuWindow); - __glutSetMenu(__glutMappedMenu); - - /* Setting __glutMappedMenu to NULL permits operations that - change menus or destroy the menu window again. */ - __glutMappedMenu = NULL; - - __glutMenuStatusFunc(GLUT_MENU_NOT_IN_USE, x, y); - } - /* Setting __glutMappedMenu to NULL permits operations that - change menus or destroy the menu window again. */ - __glutMappedMenu = NULL; - - /* If an item is selected and it is not a submenu trigger, - generate menu callback. */ - if (__glutItemSelected && !__glutItemSelected->isTrigger) { - __glutSetWindow(__glutMenuWindow); - /* When menu callback is triggered, current menu should be - set to the callback menu. */ - __glutSetMenu(__glutItemSelected->menu); - __glutItemSelected->menu->select(__glutItemSelected->value); - } - __glutMenuWindow = NULL; -} - -static void -mapMenu(GLUTmenu * menu, int x, int y) -{ - TrackPopupMenu(menu->win, TPM_LEFTALIGN | - (__glutMenuButton == TPM_RIGHTBUTTON) ? - TPM_RIGHTBUTTON : TPM_LEFTBUTTON, - x, y, 0, __glutCurrentWindow->win, NULL); -} - -void -__glutStartMenu(GLUTmenu * menu, GLUTwindow * window, - int x, int y, int x_win, int y_win) -{ - assert(__glutMappedMenu == NULL); - __glutMappedMenu = menu; - __glutMenuWindow = window; - __glutItemSelected = NULL; - if (__glutMenuStatusFunc) { - __glutSetMenu(menu); - __glutSetWindow(window); - __glutMenuStatusFunc(GLUT_MENU_IN_USE, x_win, y_win); - } - mapMenu(menu, x, y); -} - -GLUTmenuItem * -__glutGetUniqueMenuItem(GLUTmenu * menu, UINT unique) -{ - GLUTmenuItem *item; - int i; - - i = menu->num; - item = menu->list; - while (item) { - if (item->unique == unique) { - return item; - } - if (item->isTrigger) { - GLUTmenuItem *subitem; - subitem = __glutGetUniqueMenuItem(menuList[item->value], unique); - if (subitem) { - return subitem; - } - } - i--; - item = item->next; - } - return NULL; -} - -GLUTmenuItem * -__glutGetMenuItem(GLUTmenu * menu, HMENU win, int *which) -{ - GLUTmenuItem *item; - int i; - - i = menu->num; - item = menu->list; - while (item) { - if (item->win == win) { - *which = i; - return item; - } - if (item->isTrigger) { - GLUTmenuItem *subitem; - - subitem = __glutGetMenuItem(menuList[item->value], - win, which); - if (subitem) { - return subitem; - } - } - i--; - item = item->next; - } - return NULL; -} - -GLUTmenu * -__glutGetMenu(HMENU win) -{ - GLUTmenu *menu; - - menu = __glutMappedMenu; - while (menu) { - if (win == menu->win) { - return menu; - } - menu = menu->cascade; - } - return NULL; -} - -GLUTmenu * -__glutGetMenuByNum(int menunum) -{ - if (menunum < 1 || menunum > menuListSize) { - return NULL; - } - return menuList[menunum - 1]; -} - -static int -getUnusedMenuSlot(void) -{ - int i; - - /* Look for allocated, unused slot. */ - for (i = 0; i < menuListSize; i++) { - if (!menuList[i]) { - return i; - } - } - /* Allocate a new slot. */ - menuListSize++; - if (menuList) { - menuList = (GLUTmenu **) - realloc(menuList, menuListSize * sizeof(GLUTmenu *)); - } else { - /* XXX Some realloc's do not correctly perform a malloc - when asked to perform a realloc on a NULL pointer, - though the ANSI C library spec requires this. */ - menuList = (GLUTmenu **) malloc(sizeof(GLUTmenu *)); - } - if (!menuList) { - __glutFatalError("out of memory."); - } - menuList[menuListSize - 1] = NULL; - return menuListSize - 1; -} - -static void -menuModificationError(void) -{ - /* XXX Remove the warning after GLUT 3.0. */ - __glutWarning("The following is a new check for GLUT 3.0; update your code."); - __glutFatalError("menu manipulation not allowed while menus in use."); -} - -int APIENTRY -glutCreateMenu(GLUTselectCB selectFunc) -{ - GLUTmenu *menu; - int menuid; - - if (__glutMappedMenu) { - menuModificationError(); - } - menuid = getUnusedMenuSlot(); - menu = (GLUTmenu *) malloc(sizeof(GLUTmenu)); - if (!menu) { - __glutFatalError("out of memory."); - } - menu->id = menuid; - menu->num = 0; - menu->submenus = 0; - menu->select = selectFunc; - menu->list = NULL; - menu->cascade = NULL; - menu->highlighted = NULL; - menu->anchor = NULL; - menu->win = CreatePopupMenu(); - menuList[menuid] = menu; - __glutSetMenu(menu); - return menuid + 1; -} - -int APIENTRY -__glutCreateMenuWithExit(GLUTselectCB selectFunc, void (__cdecl *exitfunc)(int)) -{ - __glutExitFunc = exitfunc; - return glutCreateMenu(selectFunc); -} - -void APIENTRY -glutDestroyMenu(int menunum) -{ - GLUTmenu *menu = __glutGetMenuByNum(menunum); - GLUTmenuItem *item, *next; - - if (__glutMappedMenu) { - menuModificationError(); - } - assert(menu->id == menunum - 1); - DestroyMenu(menu->win); - menuList[menunum - 1] = NULL; - /* free all menu entries */ - item = menu->list; - while (item) { - assert(item->menu == menu); - next = item->next; - free(item->label); - free(item); - item = next; - } - if (__glutCurrentMenu == menu) { - __glutCurrentMenu = NULL; - } - free(menu); -} - -int APIENTRY -glutGetMenu(void) -{ - if (__glutCurrentMenu) { - return __glutCurrentMenu->id + 1; - } else { - return 0; - } -} - -void APIENTRY -glutSetMenu(int menuid) -{ - GLUTmenu *menu; - - if (menuid < 1 || menuid > menuListSize) { - __glutWarning("glutSetMenu attempted on bogus menu."); - return; - } - menu = menuList[menuid - 1]; - if (!menu) { - __glutWarning("glutSetMenu attempted on bogus menu."); - return; - } - __glutSetMenu(menu); -} - -static void -setMenuItem(GLUTmenuItem * item, const char *label, - int value, Bool isTrigger) -{ - GLUTmenu *menu; - - menu = item->menu; - item->label = __glutStrdup(label); - if (!item->label) { - __glutFatalError("out of memory."); - } - item->isTrigger = isTrigger; - item->len = (int) strlen(label); - item->value = value; - item->unique = uniqueMenuHandler++; - if (isTrigger) { - AppendMenu(menu->win, MF_POPUP, (UINT)item->win, label); - } else { - AppendMenu(menu->win, MF_STRING, item->unique, label); - } -} - -void APIENTRY -glutAddMenuEntry(const char *label, int value) -{ - GLUTmenuItem *entry; - - if (__glutMappedMenu) { - menuModificationError(); - } - entry = (GLUTmenuItem *) malloc(sizeof(GLUTmenuItem)); - if (!entry) { - __glutFatalError("out of memory."); - } - entry->menu = __glutCurrentMenu; - setMenuItem(entry, label, value, FALSE); - __glutCurrentMenu->num++; - entry->next = __glutCurrentMenu->list; - __glutCurrentMenu->list = entry; -} - -void APIENTRY -glutAddSubMenu(const char *label, int menu) -{ - GLUTmenuItem *submenu; - GLUTmenu *popupmenu; - - if (__glutMappedMenu) { - menuModificationError(); - } - submenu = (GLUTmenuItem *) malloc(sizeof(GLUTmenuItem)); - if (!submenu) { - __glutFatalError("out of memory."); - } - __glutCurrentMenu->submenus++; - submenu->menu = __glutCurrentMenu; - popupmenu = __glutGetMenuByNum(menu); - if (popupmenu) { - submenu->win = popupmenu->win; - } - setMenuItem(submenu, label, /* base 0 */ menu - 1, TRUE); - __glutCurrentMenu->num++; - submenu->next = __glutCurrentMenu->list; - __glutCurrentMenu->list = submenu; -} - -void APIENTRY -glutChangeToMenuEntry(int num, const char *label, int value) -{ - GLUTmenuItem *item; - int i; - - if (__glutMappedMenu) { - menuModificationError(); - } - i = __glutCurrentMenu->num; - item = __glutCurrentMenu->list; - while (item) { - if (i == num) { - if (item->isTrigger) { - /* If changing a submenu trigger to a menu entry, we - need to account for submenus. */ - item->menu->submenus--; - } - - free(item->label); - item->label = strdup(label); - if (!item->label) __glutFatalError("out of memory"); - item->isTrigger = FALSE; - item->len = (int) strlen(label); - item->value = value; - item->unique = uniqueMenuHandler++; - - RemoveMenu(__glutCurrentMenu->win, (UINT) i - 1, MF_BYPOSITION); - InsertMenu(__glutCurrentMenu->win, (UINT) i - 1, MF_BYPOSITION | MFT_STRING, item->unique, label); - - return; - } - i--; - item = item->next; - } - __glutWarning("Current menu has no %d item.", num); -} - -void APIENTRY -glutChangeToSubMenu(int num, const char *label, int menu) -{ - GLUTmenu *popupmenu; - GLUTmenuItem *item; - int i; - - if (__glutMappedMenu) { - menuModificationError(); - } - i = __glutCurrentMenu->num; - item = __glutCurrentMenu->list; - while (item) { - if (i == num) { - if (!item->isTrigger) { - /* If changing a menu entry to as submenu trigger, we - need to account for submenus. */ - item->menu->submenus++; - } - free(item->label); - - item->label = strdup(label); - if (!item->label) - __glutFatalError("out of memory"); - item->isTrigger = TRUE; - item->len = (int) strlen(label); - item->value = menu - 1; - item->unique = uniqueMenuHandler++; - popupmenu = __glutGetMenuByNum(menu); - if (popupmenu) - item->win = popupmenu->win; - - RemoveMenu(__glutCurrentMenu->win, (UINT) i - 1, MF_BYPOSITION); - InsertMenu(__glutCurrentMenu->win, (UINT) i - 1, MF_BYPOSITION | MFT_STRING | MF_POPUP, (UINT)item->win, label); - - return; - } - i--; - item = item->next; - } - __glutWarning("Current menu has no %d item.", num); -} - -void APIENTRY -glutRemoveMenuItem(int num) -{ - GLUTmenuItem *item, **prev; - int i; - - if (__glutMappedMenu) { - menuModificationError(); - } - i = __glutCurrentMenu->num; - prev = &__glutCurrentMenu->list; - item = __glutCurrentMenu->list; - while (item) { - if (i == num) { - /* Found the menu item in list to remove. */ - __glutCurrentMenu->num--; - - /* Patch up menu's item list. */ - *prev = item->next; - - RemoveMenu(__glutCurrentMenu->win, (UINT) i - 1, MF_BYPOSITION); - - free(item->label); - free(item); - return; - } - i--; - prev = &item->next; - item = item->next; - } - __glutWarning("Current menu has no %d item.", num); -} - -void APIENTRY -glutAttachMenu(int button) -{ - if (__glutCurrentWindow == __glutGameModeWindow) { - __glutWarning("cannot attach menus in game mode."); - return; - } - if (__glutMappedMenu) { - menuModificationError(); - } - if (__glutCurrentWindow->menu[button] < 1) { - __glutCurrentWindow->buttonUses++; - } - __glutCurrentWindow->menu[button] = __glutCurrentMenu->id + 1; -} - -void APIENTRY -glutDetachMenu(int button) -{ - if (__glutMappedMenu) { - menuModificationError(); - } - if (__glutCurrentWindow->menu[button] > 0) { - __glutCurrentWindow->buttonUses--; - __glutCurrentWindow->menu[button] = 0; - } -} - diff --git a/lib/glut-3.7.6/lib/glut/win32_util.c b/lib/glut-3.7.6/lib/glut/win32_util.c deleted file mode 100644 index 253e795814d34277b753d886213fe960e565ed45..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/win32_util.c +++ /dev/null @@ -1,134 +0,0 @@ - -/* Copyright (c) Nate Robins, 1997. */ - -/* portions Copyright (c) Mark Kilgard, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - - -#include "glutint.h" -#include "glutstroke.h" -#include "glutbitmap.h" -#if defined(__CYGWIN32__) -typedef MINMAXINFO* LPMINMAXINFO; -#else -#include -#endif - -/* The following added by Paul Garceau */ -#if defined(__MINGW32__) -#include -#include -struct timeval; -#endif - -extern StrokeFontRec glutStrokeRoman, glutStrokeMonoRoman; -extern BitmapFontRec glutBitmap8By13, glutBitmap9By15, glutBitmapTimesRoman10, glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12, glutBitmapHelvetica18; - -int -gettimeofday(struct timeval* tp, void* tzp) -{ - LARGE_INTEGER t; - - if(QueryPerformanceCounter(&t)) { - /* hardware supports a performance counter */ - LARGE_INTEGER f; - QueryPerformanceFrequency(&f); - tp->tv_sec = t.QuadPart/f.QuadPart; - tp->tv_usec = ((float)t.QuadPart/f.QuadPart*1000*1000) - (tp->tv_sec*1000*1000); - } else { - /* hardware doesn't support a performance counter, - so get the time in a more traditional way. */ - DWORD t; - t = timeGetTime(); - tp->tv_sec = t / 1000; - tp->tv_usec = t % 1000; - } - - /* 0 indicates that the call succeeded. */ - return 0; -} - -/* To get around the fact that Microsoft DLLs only allow functions - to be exported and now data addresses (as Unix DSOs support), the - GLUT API constants such as GLUT_STROKE_ROMAN have to get passed - through a case statement to get mapped to the actual data structure - address. */ -void* -__glutFont(void *font) -{ - switch((int)font) { - case (int)GLUT_STROKE_ROMAN: - return &glutStrokeRoman; - case (int)GLUT_STROKE_MONO_ROMAN: - return &glutStrokeMonoRoman; - case (int)GLUT_BITMAP_9_BY_15: - return &glutBitmap9By15; - case (int)GLUT_BITMAP_8_BY_13: - return &glutBitmap8By13; - case (int)GLUT_BITMAP_TIMES_ROMAN_10: - return &glutBitmapTimesRoman10; - case (int)GLUT_BITMAP_TIMES_ROMAN_24: - return &glutBitmapTimesRoman24; - case (int)GLUT_BITMAP_HELVETICA_10: - return &glutBitmapHelvetica10; - case (int)GLUT_BITMAP_HELVETICA_12: - return &glutBitmapHelvetica12; - case (int)GLUT_BITMAP_HELVETICA_18: - return &glutBitmapHelvetica18; - } - __glutFatalError("out of memory."); - /* NOTREACHED */ - - return NULL; /* keep MSVC compiler happy */ -} - -int -__glutGetTransparentPixel(Display * dpy, XVisualInfo * vinfo) -{ - /* the transparent pixel on Win32 is always index number 0. So if - we put this routine in this file, we can avoid compiling the - whole of layerutil.c which is where this routine normally comes - from. */ - return 0; -} - -void -__glutAdjustCoords(Window parent, int* x, int* y, int* width, int* height) -{ - RECT rect; - - /* adjust the window rectangle because Win32 thinks that the x, y, - width & height are the WHOLE window (including decorations), - whereas GLUT treats the x, y, width & height as only the CLIENT - area of the window. */ - rect.left = *x; rect.top = *y; - rect.right = *x + *width; rect.bottom = *y + *height; - - /* must adjust the coordinates according to the correct style - because depending on the style, there may or may not be - borders. */ - AdjustWindowRect(&rect, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | - (parent ? WS_CHILD : WS_OVERLAPPEDWINDOW), - FALSE); - /* FALSE in the third parameter = window has no menu bar */ - - /* readjust if the x and y are offscreen */ - if(rect.left < 0) { - *x = 0; - } else { - *x = rect.left; - } - - if(rect.top < 0) { - *y = 0; - } else { - *y = rect.top; - } - - *width = rect.right - rect.left; /* adjusted width */ - *height = rect.bottom - rect.top; /* adjusted height */ -} - diff --git a/lib/glut-3.7.6/lib/glut/win32_winproc.c b/lib/glut-3.7.6/lib/glut/win32_winproc.c deleted file mode 100644 index a03e318042c691122a9dabe1de34302dfbe6b46c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/win32_winproc.c +++ /dev/null @@ -1,763 +0,0 @@ - -/* Copyright (c) Nate Robins, 1997, 2001. */ -/* portions Copyright (c) Mark Kilgard, 1997, 1998. */ - -/* -This program is freely distributable without licensing fees -and is provided without guarantee or warrantee expressed or -implied. This program is -not- in the public domain. -*/ - - -#include "glutint.h" -#if defined(__CYGWIN32__) -typedef MINMAXINFO* LPMINMAXINFO; -#else -#include -#endif - -#ifdef _WIN32 -#include -#include -#include -#include /* Win32 Multimedia API header. */ -#endif - -extern unsigned __glutMenuButton; -extern GLUTidleCB __glutIdleFunc; -extern GLUTtimer *__glutTimerList; -extern void handleTimeouts(void); -extern GLUTmenuItem *__glutGetUniqueMenuItem(GLUTmenu * menu, int unique); -static HMENU __glutHMenu; - -static int __glutOnCreate( HWND hwnd, LPCREATESTRUCT createStruct ) -{ - return TRUE; -} - -static void __glutOnClose( HWND hwnd ) -{ - if ( __glutExitFunc ) - { - __glutExitFunc( 0 ); - } - - DestroyWindow( hwnd ); -} - -static void __glutOnDestroy( HWND hwnd ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - if ( window->ctx ) - { - wglMakeCurrent( NULL, NULL ); - wglDeleteContext( window->ctx ); - } - } -} - -static void __glutOnPaint( HWND hwnd ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - - PAINTSTRUCT ps; - BeginPaint( hwnd, &ps ); - EndPaint( hwnd, &ps ); - - if ( window ) - { - if ( window->win == hwnd ) - { - __glutPostRedisplay(window, GLUT_REPAIR_WORK); - } - } -} - -static void __glutOnSize( HWND hwnd, UINT state, int width, int height ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - if ( window->width != width || window->height != height ) - { - window->width = width; - window->height = height; - - __glutSetWindow( window ); - - /* Do not execute OpenGL out of sequence with respect to the - SetWindowPos request! */ - GdiFlush(); - - window->reshape( width, height ); - window->forceReshape = FALSE; - - /* A reshape should be considered like posting a repair request. */ - __glutPostRedisplay( window, GLUT_REPAIR_WORK ); - } - } -} - -static void updateWindowState( GLUTwindow *window, int visState ) -{ - GLUTwindow* child; - - /* XXX shownState and visState are the same in Win32. */ - window->shownState = visState; - if ( visState != window->visState ) - { - if ( window->windowStatus ) - { - window->visState = visState; - __glutSetWindow( window ); - window->windowStatus( visState ); - } - } - /* Since Win32 only sends an activate for the toplevel window, - update the visibility for all the child windows. */ - child = window->children; - while ( child ) - { - updateWindowState( child, visState ); - child = child->siblings; - } -} - -static void __glutOnActivate( HWND hwnd, UINT state, HWND hWndPrev, BOOL minimized ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - int visState = ! minimized; - updateWindowState( window, visState ); - } - - /* Just in case there is a palette, make sure we re-select it if the - window is being activated. */ - if ( state != WA_INACTIVE ) - { - PostMessage( hwnd, WM_PALETTECHANGED, 0, 0 ); - } -} - -static void __glutOnSetFocus( HWND hwnd, HWND hwndOldFocus ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - window->entryState = WM_SETFOCUS; - if ( window->entry ) - { - __glutSetWindow( window ); - window->entry( GLUT_ENTERED ); - /* XXX Generation of fake passive notify? See how much - work the X11 code does to support fake passive notify - callbacks. */ - } - - if ( window->joystick && __glutCurrentWindow ) - { - if ( __glutCurrentWindow->joyPollInterval > 0 ) - { - /* Because Win32 will only let one window capture the - joystick at a time, we must capture it when we get the - focus and release it when we lose the focus. */ - MMRESULT result = joySetCapture( __glutCurrentWindow->win, JOYSTICKID1, 0, TRUE ); - if ( result == JOYERR_NOERROR ) - { - joySetThreshold( JOYSTICKID1, __glutCurrentWindow->joyPollInterval ); - } - } - } - } -} - -static void __glutOnKillFocus( HWND hwnd, HWND hwndNewFocus ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - window->entryState = WM_KILLFOCUS; - if ( window->entry ) - { - __glutSetWindow( window ); - window->entry( GLUT_LEFT ); - } - - if ( window->joystick && __glutCurrentWindow ) - { - if ( __glutCurrentWindow->joyPollInterval > 0 ) - { - joyReleaseCapture( JOYSTICKID1 ); - } - } - } -} - -static void __glutOnGetMinMaxInfo( HWND hwnd, LPMINMAXINFO mmi ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - RECT r; - - /* set it to as small as possible, although it doesn't seem to allow - the decorations to be munged. */ - r.top = 0; - r.left = 0; - r.bottom = 1; - r.right = 1; - - /* get window coordinates from the client coordinates. */ - AdjustWindowRect( &r, GetWindowLong( hwnd, GWL_STYLE ), FALSE ); - mmi->ptMinTrackSize.x = r.right - r.left; - mmi->ptMinTrackSize.y = r.bottom - r.top; - mmi->ptMaxTrackSize.x = __glutScreenWidth; - mmi->ptMaxTrackSize.y = __glutScreenHeight; - } -} - -static GLUTwindow* getWindowUnderCursor( HWND hwndParent, GLUTwindow* windowParent ) -{ - /* It seems that some messages are sent to the parent window only. Since - GLUT wants to send information to the "current" window, descend the - heirarchy until the window with the cursor in it is found. */ - - assert( windowParent ); - - if ( windowParent->children ) - { - HWND hwndChild; - - POINT p; - GetCursorPos( &p ); - ScreenToClient( hwndParent, &p ); - - hwndChild = ChildWindowFromPoint( hwndParent, p ); - if ( hwndChild && hwndChild != hwndParent ) - { - GLUTwindow* windowChild = __glutGetWindow( hwndChild ); - if ( windowChild ) - { - windowParent = getWindowUnderCursor( hwndChild, windowChild ); - } - } - } - - return windowParent; -} - -static unsigned int getModifierMask( void ) -{ - unsigned int mask = 0; - - if ( ( GetKeyState( VK_SHIFT ) & 0xFF00 ) ) - { - mask |= ShiftMask; - } - if ( ( GetKeyState( VK_CONTROL ) & 0xFF00 ) ) - { - mask |= ControlMask; - } - if ( ( GetKeyState( VK_MENU ) & 0xFF00 ) ) - { - mask |= Mod1Mask; - } - - return mask; -} - -static int vkToSpecial( UINT vk ) -{ - switch ( vk ) - { - case VK_F1: return -GLUT_KEY_F1; - case VK_F2: return -GLUT_KEY_F2; - case VK_F3: return -GLUT_KEY_F3; - case VK_F4: return -GLUT_KEY_F4; - case VK_F5: return -GLUT_KEY_F5; - case VK_F6: return -GLUT_KEY_F6; - case VK_F7: return -GLUT_KEY_F7; - case VK_F8: return -GLUT_KEY_F8; - case VK_F9: return -GLUT_KEY_F9; - case VK_F10: return -GLUT_KEY_F10; - case VK_F11: return -GLUT_KEY_F11; - case VK_F12: return -GLUT_KEY_F12; - case VK_LEFT: return -GLUT_KEY_LEFT; - case VK_UP: return -GLUT_KEY_UP; - case VK_RIGHT: return -GLUT_KEY_RIGHT; - case VK_DOWN: return -GLUT_KEY_DOWN; - case VK_PRIOR: return -GLUT_KEY_PAGE_UP; - case VK_NEXT: return -GLUT_KEY_PAGE_DOWN; - case VK_HOME: return -GLUT_KEY_HOME; - case VK_END: return -GLUT_KEY_END; - case VK_INSERT: return -GLUT_KEY_INSERT; - default: return 0; - } -} - -static int getKey( UINT vk ) -{ - BYTE keyState[ 256 ]; - WORD c[ 2 ]; - - GetKeyboardState( keyState ); - - if ( ToAscii( vk, 0, keyState, c, 0 ) == 1 ) - { - return c[ 0 ]; - } - else - { - if ( vk == VK_DELETE ) - { - return 127; /* 127 = DEL in ascii */ - } - else - { - return vkToSpecial( vk ); - } - } -} - -static void __glutOnKey( HWND hwnd, UINT vk, BOOL down, int repeats, UINT flags ) -{ - int key; - POINT point; - - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - window = getWindowUnderCursor( hwnd, window ); - - /* If we are ignoring auto repeated key strokes for the window, - and this keystroke is an autorepeat generated one, bail. */ - if ( down ) - { - BOOL autorepeat = ( ( flags >> 14 ) & 0x1 ) == 1; - - if ( window->ignoreKeyRepeat && autorepeat ) - { - return; - } - } - - GetCursorPos( &point ); - ScreenToClient( window->win, &point ); - - __glutModifierMask = getModifierMask(); - - key = getKey( vk ); - if ( key < 0 ) - { - /* special */ - - if ( down ) - { - if ( window->special ) - { - __glutSetWindow( window ); - window->special( -key, point.x, point.y ); - } - } - else - { - if ( window->specialUp ) - { - __glutSetWindow( window ); - window->specialUp( -key, point.x, point.y ); - } - } - } - else if ( key > 0 ) - { - /* ascii */ - - if ( down ) - { - if ( window->keyboard ) - { - __glutSetWindow( window ); - window->keyboard( ( unsigned char )key, point.x, point.y ); - } - } - else - { - if ( window->keyboardUp ) - { - __glutSetWindow( window ); - window->keyboardUp( ( unsigned char )key, point.x, point.y ); - } - } - } - - __glutModifierMask = ( unsigned int )~0; - } -} - -static void __glutOnButtonDn( HWND hwnd, int x, int y, int button ) -{ - GLUTmenu* menu; - GLUTwindow* window = __glutGetWindow( hwnd ); - - // !!! - look at this more closely sometime - // !!! - look at this more closely sometime - // !!! - look at this more closely sometime - - /* finish the menu if we get a button down message (user must have - cancelled the menu). */ - if ( __glutMappedMenu ) - { - POINT point; - - /* TODO: take this out once the menu on middle mouse stuff works - properly. */ - if (button == GLUT_MIDDLE_BUTTON) - return; - GetCursorPos(&point); - ScreenToClient(hwnd, &point); - __glutItemSelected = NULL; - __glutFinishMenu(hwnd, point.x, point.y); - return; - } - - // !!! - // !!! - // !!! - - /* Set the capture so we can get mouse events outside the window. */ - SetCapture( hwnd ); - - if ( window ) - { - menu = __glutGetMenuByNum( window->menu[ button ] ); - if ( menu ) - { - POINT point; - point.x = x; point.y = y; - ClientToScreen(window->win, &point); - __glutMenuButton = button == GLUT_RIGHT_BUTTON ? TPM_RIGHTBUTTON : - button == GLUT_LEFT_BUTTON ? TPM_LEFTBUTTON : - 0x0001; - __glutStartMenu(menu, window, point.x, point.y, x, y); - } - else if ( window->mouse ) - { - __glutModifierMask = getModifierMask(); - - __glutSetWindow( window ); - window->mouse( button, GLUT_DOWN, x, y ); - - __glutModifierMask = ( unsigned int )~0; - } - } -} - -static void __glutOnButtonUp( HWND hwnd, int x, int y, int button ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - - // !!! - look at this more closely sometime - // !!! - look at this more closely sometime - // !!! - look at this more closely sometime - - /* Bail out if we're processing a menu. */ - if (__glutMappedMenu) { - POINT point; - GetCursorPos(&point); - ScreenToClient(hwnd, &point); - /* if we're getting the middle button up signal, then something - on the menu was selected. */ - if (button == GLUT_MIDDLE_BUTTON) { - return; - - /* For some reason, the code below always returns -1 even - though the point IS IN THE ITEM! Therefore, just bail out if - we get a middle mouse up. The user must select using the - left mouse button. Stupid Win32. */ - #if 0 - int item = MenuItemFromPoint(hwnd, __glutHMenu, point); - if (item != -1) - __glutItemSelected = (GLUTmenuItem*)GetMenuItemID(__glutHMenu, item); - else - __glutItemSelected = NULL; - __glutFinishMenu(hwnd, point.x, point.y); - #endif - - } else { - __glutItemSelected = NULL; - __glutFinishMenu(hwnd, point.x, point.y); - } - return; - } - - // !!! - // !!! - // !!! - - /* Release the mouse capture. */ - ReleaseCapture(); - - if ( window ) - { - if ( window->mouse ) - { - __glutModifierMask = getModifierMask(); - - __glutSetWindow( window ); - window->mouse( button, GLUT_UP, x, y ); - - __glutModifierMask = ( unsigned int )~0; - } - } -} - -static void __glutOnLButtonDn( HWND hwnd, BOOL doubleClick, int x, int y, UINT flags ) -{ - __glutOnButtonDn( hwnd, x, y, GLUT_LEFT_BUTTON ); -} - -static void __glutOnRButtonDn( HWND hwnd, BOOL doubleClick, int x, int y, UINT flags ) -{ - __glutOnButtonDn( hwnd, x, y, GLUT_RIGHT_BUTTON ); -} - -static void __glutOnMButtonDn( HWND hwnd, BOOL doubleClick, int x, int y, UINT flags ) -{ - __glutOnButtonDn( hwnd, x, y, GLUT_MIDDLE_BUTTON ); -} - -static void __glutOnLButtonUp( HWND hwnd, int x, int y, UINT flags ) -{ - __glutOnButtonUp( hwnd, x, y, GLUT_LEFT_BUTTON ); -} - -static void __glutOnRButtonUp( HWND hwnd, int x, int y, UINT flags ) -{ - __glutOnButtonUp( hwnd, x, y, GLUT_RIGHT_BUTTON ); -} - -static void __glutOnMButtonUp( HWND hwnd, int x, int y, UINT flags ) -{ - __glutOnButtonUp( hwnd, x, y, GLUT_MIDDLE_BUTTON ); -} - -static void __glutOnMouseMove( HWND hwnd, int x, int y, UINT flags ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - - if ( __glutMappedMenu ) - { - return; - } - - if ( window ) - { - BOOL down = ( flags & MK_LBUTTON ) || ( flags & MK_RBUTTON ) || ( flags & MK_MBUTTON ); - - if ( window->motion && down ) - { - __glutSetWindow( window ); - window->motion( x, y ); - } - if ( window->passive && ! down ) - { - __glutSetWindow( window ); - window->passive( x, y ); - } - } -} - -static BOOL __glutOnEnterMenuLoop( HWND hwnd ) -{ - /* KLUDGE: create a timer that fires every 100 ms when we start a - menu so that we can still process the idle & timer events (that - way, the timers will fire during a menu pick and so will the - idle func. */ - SetTimer( hwnd, 'MENU', 1, NULL ); - - return FALSE; -} - -static BOOL __glutOnExitMenuLoop( HWND hwnd ) -{ - /* nuke the above created timer...we don't need it anymore, since - the menu is gone now. */ - KillTimer( hwnd, 'MENU' ); - - return FALSE; -} - -static void __glutOnMenuSelect( HWND hwnd, HMENU hmenu, int item, HMENU hmenuPopup, UINT flags ) -{ - if ( hmenu != 0 ) - { - __glutHMenu = hmenu; - } -} - -static void __glutOnCommand( HWND hwnd, int id, HWND hwndCtl, UINT codeNotify ) -{ - if ( __glutMappedMenu ) - { - POINT point; - - #if 0 - if ( GetSubMenu( __glutHMenu, id ) ) - { - __glutItemSelected = NULL; - } - else - #endif - { - __glutItemSelected = __glutGetUniqueMenuItem( __glutMappedMenu, id ); - } - - GetCursorPos( &point ); - ScreenToClient( hwnd, &point ); - - __glutFinishMenu( hwnd, point.x, point.y ); - } -} - -static void __glutOnTimer( HWND hwnd, UINT id ) -{ - /* only worry about the idle function and the timeouts, since - these are the only events we expect to process during - processing of a menu. */ - /* we no longer process the idle functions (as outlined in the - README), since drawing can't be done until the menu has - finished...it's pretty lame when the animation goes on, but - doesn't update, so you get this weird jerkiness. */ - #if 0 - if ( __glutIdleFunc ) - { - __glutIdleFunc(); - } - #endif - - if ( __glutTimerList ) - { - handleTimeouts(); - } -} - -static BOOL __glutOnSetCursor( HWND hwnd, HWND hWndCursor, UINT codeHitTest, UINT msg ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window ) - { - __glutSetCursor( window ); - } - - return FALSE; -} - -static BOOL __glutOnPalette( HWND hwnd ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window && window->colormap ) - { - UnrealizeObject( window->colormap->cmap ); - SelectPalette( window->hdc, window->colormap->cmap, FALSE ); - RealizePalette( window->hdc ); - - return TRUE; - } - - return FALSE; -} - -static BOOL __glutOnJoystick( HWND hwnd ) -{ - GLUTwindow* window = __glutGetWindow( hwnd ); - if ( window->joystick ) - { - JOYINFOEX jix; - int x, y, z; - - /* Because WIN32 only supports messages for X, Y, and Z - translations, we must poll for the rest */ - jix.dwSize = sizeof( jix ); - jix.dwFlags = JOY_RETURNALL; - joyGetPosEx( JOYSTICKID1, &jix ); - - #define SCALE( v ) ( ( int )( ( v - 32767 ) / 32.768 ) ) - - /* Convert to integer for scaling. */ - x = jix.dwXpos; - y = jix.dwYpos; - z = jix.dwZpos; - window->joystick( jix.dwButtons, SCALE( x ), SCALE( y ), SCALE( z ) ); - - return TRUE; - } - - return FALSE; -} - -LONG WINAPI __glutWindowProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) -{ - switch ( msg ) - { - case WM_CREATE: return HANDLE_WM_CREATE ( hwnd, wparam, lparam, __glutOnCreate ); - case WM_CLOSE: return HANDLE_WM_CLOSE ( hwnd, wparam, lparam, __glutOnClose ); - case WM_DESTROY: return HANDLE_WM_DESTROY ( hwnd, wparam, lparam, __glutOnDestroy ); - case WM_PAINT: return HANDLE_WM_PAINT ( hwnd, wparam, lparam, __glutOnPaint ); - case WM_SIZE: return HANDLE_WM_SIZE ( hwnd, wparam, lparam, __glutOnSize ); - case WM_ACTIVATE: return HANDLE_WM_ACTIVATE ( hwnd, wparam, lparam, __glutOnActivate ); - case WM_SETFOCUS: return HANDLE_WM_SETFOCUS ( hwnd, wparam, lparam, __glutOnSetFocus ); - case WM_KILLFOCUS: return HANDLE_WM_KILLFOCUS ( hwnd, wparam, lparam, __glutOnKillFocus ); - case WM_GETMINMAXINFO: return HANDLE_WM_GETMINMAXINFO ( hwnd, wparam, lparam, __glutOnGetMinMaxInfo ); - case WM_KEYDOWN: return HANDLE_WM_KEYDOWN ( hwnd, wparam, lparam, __glutOnKey ); - case WM_KEYUP: return HANDLE_WM_KEYUP ( hwnd, wparam, lparam, __glutOnKey ); - case WM_SYSKEYDOWN: return HANDLE_WM_KEYDOWN ( hwnd, wparam, lparam, __glutOnKey ); - case WM_SYSKEYUP: return HANDLE_WM_KEYUP ( hwnd, wparam, lparam, __glutOnKey ); - case WM_LBUTTONDOWN: return HANDLE_WM_LBUTTONDOWN ( hwnd, wparam, lparam, __glutOnLButtonDn ); - case WM_RBUTTONDOWN: return HANDLE_WM_RBUTTONDOWN ( hwnd, wparam, lparam, __glutOnRButtonDn ); - case WM_MBUTTONDOWN: return HANDLE_WM_MBUTTONDOWN ( hwnd, wparam, lparam, __glutOnMButtonDn ); - case WM_LBUTTONUP: return HANDLE_WM_LBUTTONUP ( hwnd, wparam, lparam, __glutOnLButtonUp ); - case WM_RBUTTONUP: return HANDLE_WM_RBUTTONUP ( hwnd, wparam, lparam, __glutOnRButtonUp ); - case WM_MBUTTONUP: return HANDLE_WM_MBUTTONUP ( hwnd, wparam, lparam, __glutOnMButtonUp ); - case WM_MOUSEMOVE: return HANDLE_WM_MOUSEMOVE ( hwnd, wparam, lparam, __glutOnMouseMove ); - case WM_ENTERMENULOOP: return __glutOnEnterMenuLoop( hwnd ); - case WM_EXITMENULOOP: return __glutOnExitMenuLoop( hwnd ); - case WM_COMMAND: return HANDLE_WM_COMMAND ( hwnd, wparam, lparam, __glutOnCommand ); - case WM_TIMER: return HANDLE_WM_TIMER ( hwnd, wparam, lparam, __glutOnTimer ); - - case WM_SETCURSOR: - if ( LOWORD( lparam ) != HTCLIENT ) - { - /* Let the default window proc handle cursors outside the client area */ - break; - } - else - { - return HANDLE_WM_SETCURSOR( hwnd, wparam, lparam, __glutOnSetCursor ); - } - - case WM_PALETTECHANGED: - if ( ( HWND )wparam == hwnd ) - { - /* Don't respond to the message that we sent! */ - break; - } - /* Fall through to WM_QUERYNEWPALETTE */ - - case WM_QUERYNEWPALETTE: - return __glutOnPalette( hwnd ); - - case MM_JOY1MOVE: - case MM_JOY1ZMOVE: - case MM_JOY1BUTTONDOWN: - case MM_JOY1BUTTONUP: - return __glutOnJoystick( hwnd ); - - default: - break; - } - - return DefWindowProc( hwnd, msg, wparam, lparam ); -} diff --git a/lib/glut-3.7.6/lib/glut/win32_x11.c b/lib/glut-3.7.6/lib/glut/win32_x11.c deleted file mode 100644 index decca9c0b044961a146ab28b8e7fc8a5b2be45db..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/win32_x11.c +++ /dev/null @@ -1,403 +0,0 @@ - -/* Copyright (c) Nate Robins, 1997. */ -/* portions Copyright (c) Mark Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include "glutint.h" - -/* global variable that must be set for some functions to operate - correctly. */ -HDC XHDC; - -XVisualInfo* -XGetVisualInfo(Display* display, long mask, XVisualInfo* template, int* nitems) -{ - /* KLUDGE: this function needs XHDC to be set to the HDC currently - being operated on before it is invoked! */ - - PIXELFORMATDESCRIPTOR* pfds = NULL; - int i, n; - - n = DescribePixelFormat(XHDC, 1, 0, NULL); - - if (n > 0) { - pfds = (PIXELFORMATDESCRIPTOR*)malloc(sizeof(PIXELFORMATDESCRIPTOR) * n); - memset(pfds, 0, sizeof(PIXELFORMATDESCRIPTOR) * n); - } - - for (i = 0; i < n; i++) { - DescribePixelFormat(XHDC, i + 1, sizeof(PIXELFORMATDESCRIPTOR), &pfds[i]); - } - - *nitems = n; - return pfds; -} - -Colormap -XCreateColormap(Display* display, Window root, Visual* visual, int alloc) -{ - /* KLUDGE: this function needs XHDC to be set to the HDC currently - being operated on before it is invoked! */ - - PIXELFORMATDESCRIPTOR pfd; - LOGPALETTE *logical; - HPALETTE palette; - int n; - - /* grab the pixel format */ - memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); - DescribePixelFormat(XHDC, GetPixelFormat(XHDC), - sizeof(PIXELFORMATDESCRIPTOR), &pfd); - - if (!(pfd.dwFlags & PFD_NEED_PALETTE || - pfd.iPixelType == PFD_TYPE_COLORINDEX)) - { - return 0; - } - - n = 1 << pfd.cColorBits; - - /* allocate a bunch of memory for the logical palette (assume 256 - colors in a Win32 palette */ - logical = (LOGPALETTE*)malloc(sizeof(LOGPALETTE) + - sizeof(PALETTEENTRY) * n); - memset(logical, 0, sizeof(LOGPALETTE) + sizeof(PALETTEENTRY) * n); - - /* set the entries in the logical palette */ - logical->palVersion = 0x300; - logical->palNumEntries = n; - - /* start with a copy of the current system palette */ - GetSystemPaletteEntries(XHDC, 0, 256, &logical->palPalEntry[0]); - - if (pfd.iPixelType == PFD_TYPE_RGBA) { - int redMask = (1 << pfd.cRedBits) - 1; - int greenMask = (1 << pfd.cGreenBits) - 1; - int blueMask = (1 << pfd.cBlueBits) - 1; - int i; - - /* fill in an RGBA color palette */ - for (i = 0; i < n; ++i) { - logical->palPalEntry[i].peRed = - (((i >> pfd.cRedShift) & redMask) * 255) / redMask; - logical->palPalEntry[i].peGreen = - (((i >> pfd.cGreenShift) & greenMask) * 255) / greenMask; - logical->palPalEntry[i].peBlue = - (((i >> pfd.cBlueShift) & blueMask) * 255) / blueMask; - logical->palPalEntry[i].peFlags = 0; - } - } - - palette = CreatePalette(logical); - free(logical); - - SelectPalette(XHDC, palette, FALSE); - RealizePalette(XHDC); - - return palette; -} - -void -XAllocColorCells(Display* display, Colormap colormap, Bool contig, - unsigned long plane_masks_return[], unsigned int nplanes, - unsigned long pixels_return[], unsigned int npixels) -{ - /* NOP -- we did all the allocating in XCreateColormap! */ -} - -void -XStoreColor(Display* display, Colormap colormap, XColor* color) -{ - /* KLUDGE: set XHDC to 0 if the palette should NOT be realized after - setting the color. set XHDC to the correct HDC if it should. */ - - PALETTEENTRY pe; - - /* X11 stores color from 0-65535, Win32 expects them to be 0-256, so - twiddle the bits ( / 256). */ - pe.peRed = color->red / 256; - pe.peGreen = color->green / 256; - pe.peBlue = color->blue / 256; - - /* make sure we use this flag, otherwise the colors might get mapped - to another place in the colormap, and when we glIndex() that - color, it may have moved (argh!!) */ - pe.peFlags = PC_NOCOLLAPSE; - - /* the pixel field of the XColor structure is the index into the - colormap */ - SetPaletteEntries(colormap, color->pixel, 1, &pe); - - if (XHDC) { - UnrealizeObject(colormap); - SelectPalette(XHDC, colormap, FALSE); - RealizePalette(XHDC); - } -} - -void -XSetWindowColormap(Display* display, Window window, Colormap colormap) -{ - HDC hdc = GetDC(window); - - /* if the third parameter is FALSE, the logical colormap is copied - into the device palette when the application is in the - foreground, if it is TRUE, the colors are mapped into the current - palette in the best possible way. */ - SelectPalette(hdc, colormap, FALSE); - RealizePalette(hdc); - - /* note that we don't have to release the DC, since our window class - uses the WC_OWNDC flag! */ -} - -Bool -XTranslateCoordinates(Display *display, Window src, Window dst, - int src_x, int src_y, - int* dest_x_return, int* dest_y_return, - Window* child_return) -{ - /* KLUDGE: this isn't really a translate coordinates into some other - windows coordinate system...it only translates coordinates into the - root window (screen) coordinate system. */ - - POINT point; - - point.x = src_x; - point.y = src_y; - - ClientToScreen(src, &point); - - *dest_x_return = point.x; - *dest_y_return = point.y; - - /* just to make compilers happy...we don't use the return value. */ - return True; -} - -Status -XGetGeometry(Display* display, Window window, Window* root_return, - int* x_return, int* y_return, - unsigned int* width_return, unsigned int* height_return, - unsigned int *border_width_return, unsigned int* depth_return) -{ - /* KLUDGE: doesn't return the border_width or depth or root, x & y - are in screen coordinates. */ - - RECT rect; - POINT point; - - GetClientRect(window, &rect); - - point.x = 0; - point.y = 0; - ClientToScreen(window, &point); - - *x_return = point.x; - *y_return = point.y; - *width_return = rect.right; - *height_return = rect.bottom; - - /* just to make compilers happy...we don't use the return value. */ - return 1; -} - -int -DisplayWidthMM(Display* display, int screen) -{ - int width; - HWND hwnd = GetDesktopWindow(); - HDC hdc = GetDC(hwnd); - - width = GetDeviceCaps(hdc, HORZSIZE); - - /* make sure to release this DC (it's the desktops, not ours) */ - ReleaseDC(hwnd, hdc); - - return width; -} - -int -DisplayHeightMM(Display* display, int screen) -{ - int height; - HWND hwnd = GetDesktopWindow(); - HDC hdc = GetDC(hwnd); - - height = GetDeviceCaps(hdc, VERTSIZE); - - /* make sure to release this DC (it's the desktops, not ours) */ - ReleaseDC(hwnd, hdc); - - return height; -} - -void -XWarpPointer(Display* display, Window src, Window dst, - int src_x, int src_y, int src_width, int src_height, - int dst_x, int dst_y) -{ - /* KLUDGE: this isn't really a warp pointer into some other windows - coordinate system...it only warps the pointer into the root window - (screen) coordinate system. */ - - POINT point; - - point.x = dst_x; - point.y = dst_y; - ClientToScreen(dst, &point); - - SetCursorPos(point.x, point.y); -} - -int -XPending(Display* display) -{ - /* similar functionality...I don't think that it is exact, but this - will have to do. */ - MSG msg; - - return PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE); -} - -/* the following function was stolen from the X sources as indicated. */ - -/* Copyright Massachusetts Institute of Technology 1985, 1986, 1987 */ -/* $XConsortium: XParseGeom.c,v 11.18 91/02/21 17:23:05 rws Exp $ */ - -/* -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of M.I.T. not be used in advertising or -publicity pertaining to distribution of the software without specific, -written prior permission. M.I.T. makes no representations about the -suitability of this software for any purpose. It is provided "as is" -without express or implied warranty. -*/ - -/* - * XParseGeometry parses strings of the form - * "=x{+-}{+-}", where - * width, height, xoffset, and yoffset are unsigned integers. - * Example: "=80x24+300-49" - * The equal sign is optional. - * It returns a bitmask that indicates which of the four values - * were actually found in the string. For each value found, - * the corresponding argument is updated; for each value - * not found, the corresponding argument is left unchanged. - */ - -static int -ReadInteger(char *string, char **NextString) -{ - register int Result = 0; - int Sign = 1; - - if (*string == '+') - string++; - else if (*string == '-') - { - string++; - Sign = -1; - } - for (; (*string >= '0') && (*string <= '9'); string++) - { - Result = (Result * 10) + (*string - '0'); - } - *NextString = string; - if (Sign >= 0) - return (Result); - else - return (-Result); -} - -int XParseGeometry(char *string, int *x, int *y, unsigned int *width, unsigned int *height) -{ - int mask = NoValue; - register char *strind; - unsigned int tempWidth, tempHeight; - int tempX, tempY; - char *nextCharacter; - - if ( (string == NULL) || (*string == '\0')) return(mask); - if (*string == '=') - string++; /* ignore possible '=' at beg of geometry spec */ - - strind = (char *)string; - if (*strind != '+' && *strind != '-' && *strind != 'x') { - tempWidth = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return (0); - strind = nextCharacter; - mask |= WidthValue; - } - - if (*strind == 'x' || *strind == 'X') { - strind++; - tempHeight = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return (0); - strind = nextCharacter; - mask |= HeightValue; - } - - if ((*strind == '+') || (*strind == '-')) { - if (*strind == '-') { - strind++; - tempX = -ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return (0); - strind = nextCharacter; - mask |= XNegative; - - } - else - { strind++; - tempX = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return(0); - strind = nextCharacter; - } - mask |= XValue; - if ((*strind == '+') || (*strind == '-')) { - if (*strind == '-') { - strind++; - tempY = -ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return(0); - strind = nextCharacter; - mask |= YNegative; - - } - else - { - strind++; - tempY = ReadInteger(strind, &nextCharacter); - if (strind == nextCharacter) - return(0); - strind = nextCharacter; - } - mask |= YValue; - } - } - - /* If strind isn't at the end of the string the it's an invalid - geometry specification. */ - - if (*strind != '\0') return (0); - - if (mask & XValue) - *x = tempX; - if (mask & YValue) - *y = tempY; - if (mask & WidthValue) - *width = tempWidth; - if (mask & HeightValue) - *height = tempHeight; - return (mask); -} diff --git a/lib/glut-3.7.6/lib/glut/win32_x11.h b/lib/glut-3.7.6/lib/glut/win32_x11.h deleted file mode 100644 index 5aed5b89dea5efa66a96a7a99c6019c6169a478a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/glut/win32_x11.h +++ /dev/null @@ -1,319 +0,0 @@ -#ifndef __win32_x11_h__ -#define __win32_x11_h__ - -/* Copyright (c) Nate Robins, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -/* Type definitions (conversions) */ -typedef int Visual; /* Win32 equivalent of X11 type */ -typedef HWND Window; -typedef HPALETTE Colormap; -typedef PIXELFORMATDESCRIPTOR XVisualInfo; -typedef BOOL Bool; -typedef MSG XEvent; -typedef HDC Display; -typedef HCURSOR Cursor; - -typedef int Atom; /* dummies */ -typedef int XDevice; -typedef int Status; - -#define True TRUE /* Win32 equivalents of X11 booleans */ -#define False FALSE - -#define None 0L /* universal null resource or null atom */ - -/* Input Event Masks. Used as event-mask window attribute and as arguments - to Grab requests. Not to be confused with event names. */ - -#define NoEventMask 0L -#define KeyPressMask (1L<<0) -#define KeyReleaseMask (1L<<1) -#define ButtonPressMask (1L<<2) -#define ButtonReleaseMask (1L<<3) -#define EnterWindowMask (1L<<4) -#define LeaveWindowMask (1L<<5) -#define PointerMotionMask (1L<<6) -#define PointerMotionHintMask (1L<<7) -#define Button1MotionMask (1L<<8) -#define Button2MotionMask (1L<<9) -#define Button3MotionMask (1L<<10) -#define Button4MotionMask (1L<<11) -#define Button5MotionMask (1L<<12) -#define ButtonMotionMask (1L<<13) -#define KeymapStateMask (1L<<14) -#define ExposureMask (1L<<15) -#define VisibilityChangeMask (1L<<16) -#define StructureNotifyMask (1L<<17) -#define ResizeRedirectMask (1L<<18) -#define SubstructureNotifyMask (1L<<19) -#define SubstructureRedirectMask (1L<<20) -#define FocusChangeMask (1L<<21) -#define PropertyChangeMask (1L<<22) -#define ColormapChangeMask (1L<<23) -#define OwnerGrabButtonMask (1L<<24) - -/* Key masks. Used as modifiers to GrabButton and GrabKey, results of - QueryPointer, state in various key-, mouse-, and button-related - events. */ - -#define ShiftMask (1<<0) -#define LockMask (1<<1) -#define ControlMask (1<<2) -#define Mod1Mask (1<<3) -#define Mod2Mask (1<<4) -#define Mod3Mask (1<<5) -#define Mod4Mask (1<<6) -#define Mod5Mask (1<<7) - -/* Window classes used by CreateWindow */ -/* Note that CopyFromParent is already defined as 0 above */ - -#define InputOutput 1 -#define InputOnly 2 - -/* Window attributes for CreateWindow and ChangeWindowAttributes */ - -#define CWBackPixmap (1L<<0) -#define CWBackPixel (1L<<1) -#define CWBorderPixmap (1L<<2) -#define CWBorderPixel (1L<<3) -#define CWBitGravity (1L<<4) -#define CWWinGravity (1L<<5) -#define CWBackingStore (1L<<6) -#define CWBackingPlanes (1L<<7) -#define CWBackingPixel (1L<<8) -#define CWOverrideRedirect (1L<<9) -#define CWSaveUnder (1L<<10) -#define CWEventMask (1L<<11) -#define CWDontPropagate (1L<<12) -#define CWColormap (1L<<13) -#define CWCursor (1L<<14) - -/* ConfigureWindow structure */ - -#define CWX (1<<0) -#define CWY (1<<1) -#define CWWidth (1<<2) -#define CWHeight (1<<3) -#define CWBorderWidth (1<<4) -#define CWSibling (1<<5) -#define CWStackMode (1<<6) - - -/* Used in GetWindowAttributes reply */ - -#define IsUnmapped 0 -#define IsUnviewable 1 -#define IsViewable 2 - -/* Window stacking method (in configureWindow) */ - -#define Above 0 -#define Below 1 -#define TopIf 2 -#define BottomIf 3 -#define Opposite 4 - -/* For CreateColormap */ - -#define AllocNone 0 /* create map with no entries */ -#define AllocAll 1 /* allocate entire map writeable */ - - -/* Flags used in StoreNamedColor, StoreColors */ - -#define DoRed (1<<0) -#define DoGreen (1<<1) -#define DoBlue (1<<2) - -/* - * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding - * value (x, y, width, height) was found in the parsed string. - */ -#define NoValue 0x0000 -#define XValue 0x0001 -#define YValue 0x0002 -#define WidthValue 0x0004 -#define HeightValue 0x0008 -#define AllValues 0x000F -#define XNegative 0x0010 -#define YNegative 0x0020 - -/* flags argument in size hints */ -#define USPosition (1L << 0) /* user specified x, y */ -#define USSize (1L << 1) /* user specified width, height */ - -/* definitions for initial window state */ -#define WithdrawnState 0 /* for windows that are not mapped */ -#define NormalState 1 /* most applications want to start this way */ -#define IconicState 3 /* application wants to start as an icon */ -#define GameModeState 4 /* Win32 GLUT only (not in Xlib!). */ - -/* Type definitions */ - -typedef struct { - unsigned int background_pixmap; /* background pixmap */ - unsigned long background_pixel; /* background pixel */ - unsigned long border_pixel; /* border pixel value */ - long event_mask; /* set of events that should be saved */ - long do_not_propagate_mask; /* set of events that should not propagate */ - Bool override_redirect; /* boolean value for override-redirect */ - Colormap colormap; /* color map to be associated with window */ -} XSetWindowAttributes; - -typedef struct { - unsigned long pixel; - unsigned short red, green, blue; - char flags; /* do_red, do_green, do_blue */ -} XColor; - -typedef struct { - unsigned char *value; /* same as Property routines */ - Atom encoding; /* prop type */ - int format; /* prop data format: 8, 16, or 32 */ - unsigned long nitems; /* number of data items in value */ -} XTextProperty; - -typedef struct { - long flags; /* marks which fields in this structure are defined */ - int x, y; /* obsolete for new window mgrs, but clients */ - int width, height; /* should set so old wm's don't mess up */ -} XSizeHints; - -/* Functions emulated by macros. */ - -#define XFreeColormap(display, colormap) \ - DeleteObject(colormap) - -#define XCreateFontCursor(display, shape) \ - LoadCursor(NULL, shape) - -#define XDefineCursor(display, window, cursor) \ - SetCursor(cursor) - -#define XFlush(display) \ - /* Nothing. */ - -#define DisplayWidth(display, screen) \ - GetSystemMetrics(SM_CXSCREEN) - -#define DisplayHeight(display, screen) \ - GetSystemMetrics(SM_CYSCREEN) - -#define XMapWindow(display, window) \ - ShowWindow(window, SW_SHOWNORMAL) - -#define XUnmapWindow(display, window) \ - ShowWindow(window, SW_HIDE) - -#define XIconifyWindow(display, window, screen) \ - ShowWindow(window, SW_MINIMIZE) - -#define XWithdrawWindow(display, window, screen) \ - ShowWindow(window, SW_HIDE) - -#define XLowerWindow(display, window) \ - SetWindowPos(window, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE) - -#define XSetWMName(display, window, tp) \ - SetWindowText(window, (tp)->value) - -/* There really isn't a way to set the icon name separate from the - windows name in Win32, so, just set the windows name. */ -#define XSetWMIconName(display, window, tp) \ - XSetWMName(display, window, tp) - -#define XDestroyWindow(display, window) \ - DestroyWindow(window) - -/* Anything that needs to be freed was allocated with malloc in our - fake X windows library for Win32, so free it with plain old - free(). */ -#define XFree(data) \ - free(data) - -/* Nothing to be done for this...the pointer is always 'ungrabbed' - in Win32. */ -#define XUngrabPointer(display, time) \ - /* Nothing. */ - -/* Function prototypes. */ - -extern XVisualInfo* XGetVisualInfo( - Display* display, - long mask, - XVisualInfo* ttemplate, /* Avoid class with C++ keyword. */ - int*nitems); - -extern Colormap XCreateColormap( - Display* display, - Window root, - Visual* visual, - int alloc); - -extern void XAllocColorCells( - Display* display, - Colormap colormap, - Bool contig, - unsigned long plane_masks_return[], - unsigned int nplanes, - unsigned long pixels_return[], - unsigned int npixels); - -extern void XStoreColor( - Display* display, - Colormap colormap, - XColor* color); - -extern void XSetWindowColormap( - Display* display, - Window window, - Colormap colormap); - -extern Bool XTranslateCoordinates( - Display *display, - Window src, Window dst, - int src_x, int src_y, - int* dest_x_return, int* dest_y_return, - Window* child_return); - -extern Status XGetGeometry( - Display* display, - Window window, - Window* root_return, - int* x_return, int* y_return, - unsigned int* width_return, unsigned int* height_return, - unsigned int *border_width_return, - unsigned int* depth_return); - -extern int DisplayWidthMM( - Display* display, - int screen); - -extern int DisplayHeightMM( - Display* display, - int screen); - -extern void XWarpPointer( - Display* display, - Window src, Window dst, - int src_x, int src_y, - int src_width, int src_height, - int dst_x, int dst_y); - -extern int XParseGeometry( - char* string, - int* x, int* y, - unsigned int* width, unsigned int* height); - -extern int XPending( - Display* display); - -#endif /* __win32_x11_h__ */ diff --git a/lib/glut-3.7.6/lib/lib.dsw b/lib/glut-3.7.6/lib/lib.dsw deleted file mode 100644 index 0174a8f8805f773c60c41e121b305895347d1aea..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/lib.dsw +++ /dev/null @@ -1,89 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency - Begin Project Dependency - Project_Dep_Name glsmap - End Project Dependency - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency - Begin Project Dependency - Project_Dep_Name mui - End Project Dependency -}}} - -############################################################################### - -Project: "gle"=".\gle\gle.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glsmap"=".\glsmap\glsmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glut32"=".\glut\glut32.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mui"=".\mui\mui.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/lib/mui.n32/ObjectType.mk b/lib/glut-3.7.6/lib/mui.n32/ObjectType.mk deleted file mode 100644 index 6116ff97ebaddd2e7bb0e9da92b07312322653c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui.n32/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_N32) -CSTYLE = $(CSTYLE_N32) diff --git a/lib/glut-3.7.6/lib/mui.n64/ObjectType.mk b/lib/glut-3.7.6/lib/mui.n64/ObjectType.mk deleted file mode 100644 index 55d0f47555f040b45d0f60e02988ecfaa47da627..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui.n64/ObjectType.mk +++ /dev/null @@ -1,3 +0,0 @@ -LDOPTS = $(LDOPTS_64) -#OPTIMIZER = -O0 -CSTYLE = $(CSTYLE_64) diff --git a/lib/glut-3.7.6/lib/mui/Imakefile b/lib/glut-3.7.6/lib/mui/Imakefile deleted file mode 100644 index 84e069c7db94def1edd3f540407280d4cb307742..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/Imakefile +++ /dev/null @@ -1,26 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#define DoNormalLib YES - -#include - -#include "../../Glut.cf" - -SRCS = button.c displaylist.c gizmo.c glutmui.c \ - hslider.c miscui.c mui.c pulldown.c textlist.c uicolor.c vslider.c - -OBJS = button.o displaylist.o gizmo.o glutmui.o \ - hslider.o miscui.o mui.o pulldown.o textlist.o uicolor.o vslider.o - -#ifdef LibraryObjectRule -LibraryObjectRule() -#else -/* XXX Very lame, you must be using pre-R5 config files! This - will probably do essentially what LibraryObjectRule does. */ -NormalLibraryObjectRule() -#endif - -NormalLibraryTarget(mui,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/lib/mui/ObjectType.mk b/lib/glut-3.7.6/lib/mui/ObjectType.mk deleted file mode 100644 index f94dc77f5ffbe482ca1434d44eb74d83595a8ffc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/ObjectType.mk +++ /dev/null @@ -1,2 +0,0 @@ -LDOPTS = $(LDOPTS_32) -CSTYLE = $(CSTYLE_32) diff --git a/lib/glut-3.7.6/lib/mui/browseparse.c b/lib/glut-3.7.6/lib/mui/browseparse.c deleted file mode 100644 index e7280bb1a14043450026392649f85195c929f9c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/browseparse.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include - -char currentdirectoryname[200]; -char currentfilename[200]; -char browseprompt[200]; - -int xcenter = 300, ycenter = 300; - -void nukecr(char *s) -{ - while (*s && *s != '\n') s++; - *s = 0; -} - -void parsebrowsefile(FILE *f) -{ - char buffer[300]; - - while (0 != fgets(buffer, 299, f)) - switch(buffer[0]) { - case 'D': - strcpy(currentdirectoryname, &buffer[2]); - nukecr(currentdirectoryname); - break; - case 'F': - strcpy(currentfilename, &buffer[2]); - nukecr(currentfilename); - break; - case 'P': - strcpy(browseprompt, &buffer[2]); - nukecr(browseprompt); - break; - case 'X': - xcenter = atoi(&buffer[2]); - break; - case 'Y': - ycenter = atoi(&buffer[2]); - break; - } -} - -void setcurrentfilename(char *s) -{ - int len = strlen(s); - char *sptr; - - sptr = &s[len-1]; - while (sptr != s) { - if (*sptr == '/') { - strcpy(currentfilename, sptr+1); - *sptr = 0; - strcpy(currentdirectoryname, s); - return; - } - sptr--; - } - strcpy(currentfilename, s); -} - diff --git a/lib/glut-3.7.6/lib/mui/browser.c b/lib/glut-3.7.6/lib/mui/browser.c deleted file mode 100644 index 7b71d82ebca755fa9e970c3096b8cba56024e2b6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/browser.c +++ /dev/null @@ -1,419 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define MAXFILES 400 -char *filelist[MAXFILES]; -char err[80]; -char *dot = "."; -char *dotdot = ".."; -char directory[300], originaldir[300]; -struct stat d, dd; -struct dirent *dir; - -DIR *file; -int off; - -extern int mui_singlebuffered; -int selectedfile = -1; -int cd(char *s); -void pwd(void); -void ls(void); - -extern void settlstrings(muiObject *obj, char **s); -void settltop(muiObject *obj, int top); - -muiObject *tl, *vs, *l4; - -void writeoutputfile(char *dir, char *file) -{ - FILE *f; - f = fopen(BROWSEFILE, "w"); - fprintf(f, "D:%s\n", dir); - if (file) - fprintf(f, "F:%s\n", file); - fclose(f); -} - -void controltltop(muiObject *obj, enum muiReturnValue value) -{ - float sliderval; - - if ((value != MUI_SLIDER_RETURN) && (value != MUI_SLIDER_THUMB)) return; - sliderval = muiGetVSVal(obj); - muiSetTLTop(tl, sliderval); -} - -void handlefileselection(muiObject *obj, enum muiReturnValue value) -{ - char *fname; - int len; - - if (value == MUI_TEXTLIST_RETURN_CONFIRM) { - selectedfile = muiGetTLSelectedItem(obj); - fname = filelist[selectedfile]; - len = strlen(fname); - if (fname[len-1] == '/') { - fname[len-1] = 0; - cd(fname); - return; - } else { - writeoutputfile(directory, fname); - exit(0); - } - } - if (value != MUI_TEXTLIST_RETURN) return; - selectedfile = muiGetTLSelectedItem(obj); - muiSetVSValue(vs, 1.0); -} - -void handleaccept(muiObject *obj, enum muiReturnValue value) -{ - char *fname; - int len; - - if (value != MUI_BUTTON_PRESS) return; - if (selectedfile == -1) return; - fname = filelist[selectedfile]; - len = strlen(fname); - if (fname[len-1] == '/') { - fname[len-1] = 0; - cd(fname); - return; - } else { - writeoutputfile(directory, fname); - exit(0); - } - obj = 0; /* for lint's sake */ -} - -void handleoriginal(muiObject *obj, enum muiReturnValue value) -{ - if (value != MUI_BUTTON_PRESS) return; - cd(originaldir); - obj = 0; /* for lint's sake */ -} - -void handleupdir(muiObject *obj, enum muiReturnValue value) -{ - if (value != MUI_BUTTON_PRESS) return; - cd(".."); - obj = 0; /* for lint's sake */ -} - -void handlecancel(muiObject *obj, enum muiReturnValue value) -{ - if (value != MUI_BUTTON_PRESS) return; - writeoutputfile(directory, 0); - exit(0); - obj = 0; /* for lint's sake */ -} - -void handletextbox(muiObject *obj, enum muiReturnValue value) -{ - char *s, *slash; - - if (value != MUI_TEXTBOX_RETURN) return; - s = muiGetTBString(obj); - if (0 == chdir(s)) { - pwd(); - ls(); - settlstrings(tl, filelist); - selectedfile = 0; - muiChangeLabel(l4, directory); - muiClearTBString(obj); - return; - } - /* hack up the path, if any */ - slash = strrchr(s, '/'); - if (slash == 0) { - slash = s-1; /* to make filename == slash+1 */ - } else { - if (*s == '/') { /* absolute path */ - strncpy(directory, s, slash-s); - directory[slash-s] = 0; - } else { - strcat(directory, "/"); - strncat(directory, s, slash-s); - } - } - /* now filename == slash+1 */ - writeoutputfile(directory, slash+1); - exit(0); -} - -#define THUMBHEIGHT 20 -#define ARROWSPACE 40 - -void maketestui(void) -{ - muiObject *l1, *l2, *l3, *b1, *b2, *b3, *b4, *t; - int xmin, ymin, xmax, ymax; - - muiNewUIList(1); - l1 = muiNewBoldLabel(10, 475, "Directory:"); - muiAddToUIList(1, l1); - l4 = muiNewLabel(80, 475, "./"); - muiAddToUIList(1, l4); - l2 = muiNewBoldLabel(10, 430, "Set directory:"); - muiAddToUIList(1, l2); - b1 = muiNewButton(10, 100, 390, 415); - muiLoadButton(b1, "Up"); - muiAddToUIList(1, b1); - muiSetCallback(b1, handleupdir); - b2 = muiNewButton(10, 100, 355, 380); - muiLoadButton(b2, "Original"); - muiAddToUIList(1, b2); - muiSetCallback(b2, handleoriginal); - tl = muiNewTextList(120, 80, 370, 22); - muiAddToUIList(1, tl); - muiGetObjectSize(tl, &xmin, &ymin, &xmax, &ymax); - vs = muiNewVSlider(xmax, ymin+2, ymax, 0, THUMBHEIGHT); - muiSetVSValue(vs, 1.0); - muiSetVSArrowDelta(vs, 10); - muiAddToUIList(1, vs); - t = muiNewTextbox(120, 390, 40); - muiSetActive(t, 1); - muiAddToUIList(1, t); - muiSetCallback(t, handletextbox); - l3 = muiNewBoldLabel(40, 50, "Open File:"); - muiAddToUIList(1, l3); - b3 = muiNewButton(130, 230, 9, 34); - muiLoadButton(b3, "Accept"); - muiSetCallback(b3, handleaccept); - muiAddToUIList(1, b3); - b4 = muiNewButton(250, 350, 9, 34); - muiLoadButton(b4, "Cancel"); - muiSetCallback(b4, handlecancel); - muiAddToUIList(1, b4); - muiSetCallback(vs, controltltop); - muiSetCallback(tl, handlefileselection); - - cd(directory); - strcpy(originaldir, directory); -} - -void main(int argc, char **argv) -{ - FILE *f; - - f = fopen(BROWSEFILE, "r"); - parsebrowsefile(f); - fclose(f); - strcpy(directory, currentdirectoryname); - maketestui(); - glutInit(&argc, argv); - if (argc > 1) mui_singlebuffered = 1; - glutInitWindowPosition(xcenter-200, ycenter-250); - glutInitWindowSize(400, 500); - if (mui_singlebuffered) - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE ); - else - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow("browser"); - muiInit(); - glutMainLoop(); -} - -void errormsg(char *s) -{ - fprintf(stderr, "%s\n", s); -} - -void prname(void) -{ - directory[0] = '/'; - if (off == 0) - off = 1; - directory[off] = 0; -} - -int dirlevels(char *s) -{ - int levels; - - for (levels = 0; *s; s++) - if (*s == '/') - levels++; - return(levels); -} - -int cat(void) -{ - register i, j; - char *name = directory + 1; /* I love C */ - - i = -1; - while (dir->d_name[++i] != 0) - if ((off+i+2) > MAXNAMLEN - 1) { - prname(); - return 1; - } - for(j=off+1; j>=0; --j) - name[j+i+1] = name[j]; - off=i+off+1; - name[i] = '/'; - for(--i; i>=0; --i) - name[i] = dir->d_name[i]; - return 0; -} - -/* get the current working directory (the following 3 routines are from pwd.c) */ -void pwd(void) -{ - for(off = 0;;) { - if(stat(dot, &d) < 0) { - fprintf(stderr, "pwd: cannot stat .!\n"); - exit(2); - } - if ((file = opendir(dotdot)) == NULL) { - fprintf(stderr,"pwd: cannot open ..\n"); - exit(2); - } - if(fstat(file->dd_fd, &dd) < 0) { - fprintf(stderr, "pwd: cannot stat ..!\n"); - exit(2); - } - if(chdir(dotdot) < 0) { - fprintf(stderr, "pwd: cannot chdir to ..\n"); - exit(2); - } - if(d.st_dev == dd.st_dev) { - if(d.st_ino == dd.st_ino) { - prname(); - chdir(directory); - return; - } - do - if ((dir = readdir(file)) == NULL) { - fprintf(stderr, "pwd: read error in ..\n"); - exit(2); - } - while (dir->d_ino != d.st_ino); - } - else do { - if((dir = readdir(file)) == NULL) { - fprintf(stderr, "pwd: read error in ..\n"); - exit(2); - } - stat(dir->d_name, &dd); - } while(dd.st_ino != d.st_ino || dd.st_dev != d.st_dev); - (void)closedir(file); - if (cat()) { - chdir(directory); - return; - } - } -} - -void freels(void) -{ - char **p; - - p = filelist; - while (*p != 0) { - free(*p); - *p = 0; - p++; - } -} - -int mystrcmp(char **s1, char **s2) -{ - return strcmp(*s1,*s2); -} - -void ls(void) -{ - DIR *dirp; - int i = 0; - int len; - struct dirent *dir; - struct stat statbuf; - - - if ((dirp = opendir(directory)) == NULL) { - errormsg("bad directory\n"); - return; - } - freels(); - chdir(directory); - while ((dir = readdir(dirp)) != NULL) { - if (dir->d_name[0] == '.') - continue; - /*f = open(dir->d_name, O_RDONLY); - if (!f) - continue; - if (!okfiletype(getfiletype(f))) - continue; - close(f);*/ - stat(dir->d_name,&statbuf); - len = strlen(dir->d_name) + 1 + (statbuf.st_mode & S_IFDIR? 1 : 0); - filelist[i] = (char *)malloc(len); - strcpy(filelist[i], dir->d_name); - if (statbuf.st_mode & S_IFDIR) { - filelist[i][len-2] = '/'; filelist[i][len-1] = 0; - } - i++; - } - filelist[i] = 0; - qsort(&filelist[0], i, sizeof (char *), (int (*)(const void *, const void *))mystrcmp); - closedir(dirp); -} - -int cd(char *s) -{ - if(chdir(s) < 0) { - fprintf(stderr,"cannot open %s\n",s); - return -1; - } - pwd(); - ls(); - settlstrings(tl, filelist); - muiChangeLabel(l4, directory); - selectedfile = 0; - return 0; -} diff --git a/lib/glut-3.7.6/lib/mui/button.c b/lib/glut-3.7.6/lib/mui/button.c deleted file mode 100644 index 40e4e87f17859cf408690573bf4f9de7de03b4a0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/button.c +++ /dev/null @@ -1,508 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include - -void muiLinkButtons(muiObject *obj1, muiObject *obj2) -{ - Button *b1, *b2, *tmp; - - if ((obj1->type != MUI_RADIOBUTTON || obj2->type != MUI_RADIOBUTTON) && - (obj1->type != MUI_TINYRADIOBUTTON || obj2->type != MUI_TINYRADIOBUTTON)) { - muiError("muiLinkButtons: attempt to link non radio buttons"); - } - b1 = (Button *)obj1->object; - b2 = (Button *)obj2->object; - if (b1->link == 0 && b2->link == 0) { - b1->link = b2; - b2->link = b1; - return; - } - if (b1->link == 0) { - b1->link = b2->link; - b2->link = b1; - return; - } - if (b2->link == 0) { - b2->link = b1->link; - b1->link = b2; - return; - } - tmp = b1->link; - b1->link = b2->link; - b2->link = tmp; - return; -} - -void muiClearRadio(muiObject *rad) -{ - Button *b1, *b2; - b2 = b1 = (Button *)rad->object; - muiSetActive(b1->object, 0); - if (b1->link == 0) return; - b1 = b1->link; - while (b1 != b2) { - muiSetActive(b1->object, 0); - b1 = b1->link; - } -} - - -static void drawbuttonlabel(muiObject *obj) -{ - int xmin, ymin; - Button *b = (Button *)obj->object; - - if (!b->str) - return; - - switch (obj->type) { -/* - case TINYTOGGLE: - xmin = obj->xmin+16; - ymin = obj->ymin+4; - break; - case GENERICBUTTON: - xmin = obj->xmin+ (obj->xmax - obj->xmin - strwidth(obj->str))/2 + 1; - ymin = obj->ymin+9; - break; - case PUSHBUTTON: - if (getdefaultbut(b)) { - xmin = obj->xmin+ (obj->xmax - 15 - obj->xmin - strwidth(obj->str))/2 + 1; - ymin = obj->ymin+9; - } else { - xmin = obj->xmin+ (obj->xmax - obj->xmin - strwidth(obj->str))/2 + 1; - ymin = obj->ymin+9; - } - break; - case BED: - xmin = obj->xmin+ (obj->xmax - obj->xmin - strwidth(obj->str))/2 + 1; - ymin = obj->ymin+8; - break; - case CHECKBUTTON: - xmin = obj->xmin+27; - ymin = obj->ymin+6; - break; -*/ - case MUI_TINYRADIOBUTTON: - xmin = obj->xmin+19; - ymin = obj->ymin+4; - break; - case MUI_RADIOBUTTON: - xmin = obj->xmin+30; - ymin = obj->ymin+8; - break; -/* - case INDICATOR: - xmin = obj->xmin+20; - ymin = obj->ymin+8; - break; -*/ - default: - xmin = obj->xmin+20; - ymin = obj->ymin+9; - break; - } - { - if (muiGetEnable(obj)) - uiBlack(); - else - uiDkGray(); - uicmov2i(xmin, ymin); - uicharstr(b->str, UI_FONT_NORMAL); - - } -} - -void drawradiobutton(muiObject *obj) -{ - int xmin = obj->xmin, xmax = obj->xmax, ymin = obj->ymin, ymax = obj->ymax; - - if (!muiGetVisible(obj)) { -/* - int sl = 0; - font(BUTTONFONT1); - if (b->str) sl = strwidth(b->str); - backgrounddraw(b->xmin,b->ymin,b->xmin+30+sl,b->ymax); -*/ - return; - } - - if (muiGetEnable(obj)) { - if (obj->locate) { - if (obj->select) { - if (obj->active) { - uiDkGray(); - uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); - uipdr2i(xmin+10,ymax); - uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13); uipdr2i(xmax,ymin+10); - uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos(); - - uiVyLtGray(); - uipmv2i(xmin+1,ymin+11); uipdr2i(xmin+1,ymin+13); - uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); - uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+11); - uipdr2i(xmin+13,ymin+2); uipdr2i(xmin+10,ymin+2); - uipclos(); - - uiWhite(); - uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1); - uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12); - uiendline(); - uimove2i(xmin+1,ymin+13); uidraw2i(xmin+10,ymax-1); - uidraw2i(xmin+13,ymax-1); uidraw2i(xmax-1,ymin+13); - uiendline(); - - } else { - - uiDkGray(); - uimove2i(xmin,ymin+13); uidraw2i(xmin+10,ymax); - uidraw2i(xmin+13,ymax); uidraw2i(xmax,ymin+13); - uiendline(); - uimove2i(xmin,ymin+12); uidraw2i(xmin+10,ymax-1); - uidraw2i(xmin+13,ymax-1); uidraw2i(xmax,ymin+12); - uiendline(); - - uiLtGray(); - uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1); - uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12); - uiendline(); - - uiWhite(); - uimove2i(xmin+2,ymin+12); uidraw2i(xmin+11,ymax-2); - uidraw2i(xmin+12,ymax-2); uidraw2i(xmax-2,ymin+12); - uiendline(); - uimove2i(xmin+3,ymin+12); uidraw2i(xmin+11,ymax-3); - uidraw2i(xmin+12,ymax-3); uidraw2i(xmax-3,ymin+12); - uiendline(); - - uiVyLtGray(); - uipmv2i(xmin+4,ymin+12); uipdr2i(xmin+11,ymax-4); - uipdr2i(xmin+12,ymax-4); uipdr2i(xmax-4,ymin+12); - uipdr2i(xmin+12,ymin+5); uipdr2i(xmin+11,ymin+5); - uipclos(); - - uiLtGray(); - uimove2i(xmin+3,ymin+11); uidraw2i(xmin+11,ymin+3); - uidraw2i(xmin+12,ymin+3); uidraw2i(xmax-3,ymin+11); - uiendline(); - uimove2i(xmin+4,ymin+11); uidraw2i(xmin+11,ymin+4); - uidraw2i(xmin+12,ymin+4); uidraw2i(xmax-4,ymin+11); - uiendline(); - - uiBlack(); - uimove2i(xmin+2,ymin+11); uidraw2i(xmin+11,ymin+2); - uidraw2i(xmin+12,ymin+2); uidraw2i(xmax-2,ymin+11); - uiendline(); - - uiWhite(); - uimove2i(xmin,ymin+10); uidraw2i(xmin+10,ymin); - uidraw2i(xmin+13,ymin); uidraw2i(xmax,ymin+10); - uiendline(); - uimove2i(xmin,ymin+11); uidraw2i(xmin+10,ymin+1); - uidraw2i(xmin+13,ymin+1);uidraw2i(xmax,ymin+11); - uiendline(); - uimove2i(xmin+1,ymin+11);uidraw2i(xmin+10,ymin+2); - uimove2i(xmin+13,ymin+2);uidraw2i(xmax-1,ymin+11); - uiendline(); - } - - } else { /* not selected */ - - if (obj->active) { - - uiDkGray(); - uimove2i(xmin,ymin+13); uidraw2i(xmin+10,ymax); - uidraw2i(xmin+13,ymax); uidraw2i(xmax,ymin+13); - uiendline(); - uimove2i(xmin,ymin+12); uidraw2i(xmin+10,ymax-1); - uidraw2i(xmin+13,ymax-1); uidraw2i(xmax,ymin+12); - uiendline(); - - uiLtGray(); - uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1); - uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12); - uiendline(); - - uiWhite(); - uimove2i(xmin+2,ymin+12); uidraw2i(xmin+11,ymax-2); - uidraw2i(xmin+12,ymax-2); uidraw2i(xmax-2,ymin+12); - uiendline(); - uimove2i(xmin+3,ymin+12); uidraw2i(xmin+11,ymax-3); - uidraw2i(xmin+12,ymax-3); uidraw2i(xmax-3,ymin+12); - uiendline(); - - uiVyLtGray(); - uipmv2i(xmin+4,ymin+12); uipdr2i(xmin+11,ymax-4); - uipdr2i(xmin+12,ymax-4); uipdr2i(xmax-4,ymin+12); - uipdr2i(xmin+12,ymin+5); uipdr2i(xmin+11,ymin+5); - uipclos(); - - uiLtGray(); - uimove2i(xmin+3,ymin+11); uidraw2i(xmin+11,ymin+3); - uidraw2i(xmin+12,ymin+3); uidraw2i(xmax-3,ymin+11); - uiendline(); - uimove2i(xmin+4,ymin+11); uidraw2i(xmin+11,ymin+4); - uidraw2i(xmin+12,ymin+4); uidraw2i(xmax-4,ymin+11); - uiendline(); - - uiBlack(); - uimove2i(xmin+2,ymin+11); uidraw2i(xmin+11,ymin+2); - uidraw2i(xmin+12,ymin+2); uidraw2i(xmax-2,ymin+11); - uiendline(); - - uiWhite(); - uimove2i(xmin,ymin+10); uidraw2i(xmin+10,ymin); - uidraw2i(xmin+13,ymin); uidraw2i(xmax,ymin+10); - uiendline(); - uimove2i(xmin,ymin+11); uidraw2i(xmin+10,ymin+1); - uidraw2i(xmin+13,ymin+1);uidraw2i(xmax,ymin+11); - uiendline(); - uimove2i(xmin+1,ymin+11);uidraw2i(xmin+10,ymin+2); - uimove2i(xmin+13,ymin+2);uidraw2i(xmax-1,ymin+11); - uiendline(); - - } else { /* not active */ - - uiDkGray(); - uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); - uipdr2i(xmin+10,ymax); - uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13); uipdr2i(xmax,ymin+10); - uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos(); - - uiVyLtGray(); - uipmv2i(xmin+1,ymin+11); uipdr2i(xmin+1,ymin+13); - uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); - uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+11); - uipdr2i(xmin+13,ymin+2); uipdr2i(xmin+10,ymin+2); - uipclos(); - - uiWhite(); - uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1); - uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12); - uiendline(); - uimove2i(xmin+1,ymin+13); uidraw2i(xmin+10,ymax-1); - uidraw2i(xmin+13,ymax-1); uidraw2i(xmax-1,ymin+13); - uiendline(); - } - } - - } else { /* not located */ - - if (obj->active) { - - uiDkGray(); - uimove2i(xmin,ymin+13); uidraw2i(xmin+10,ymax); - uidraw2i(xmin+13,ymax); uidraw2i(xmax,ymin+13); - uiendline(); - uimove2i(xmin,ymin+12); uidraw2i(xmin+10,ymax-1); - uidraw2i(xmin+13,ymax-1); uidraw2i(xmax,ymin+12); - uiendline(); - - uiLtGray(); - uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1); - uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12); - uiendline(); - - uiWhite(); - uimove2i(xmin+2,ymin+12); uidraw2i(xmin+11,ymax-2); - uidraw2i(xmin+12,ymax-2); uidraw2i(xmax-2,ymin+12); - uiendline(); - uimove2i(xmin+3,ymin+12); uidraw2i(xmin+11,ymax-3); - uidraw2i(xmin+12,ymax-3); uidraw2i(xmax-3,ymin+12); - uiendline(); - - uiLtGray(); - uipmv2i(xmin+4,ymin+12); uipdr2i(xmin+11,ymax-4); - uipdr2i(xmin+12,ymax-4); uipdr2i(xmax-4,ymin+12); - uipdr2i(xmin+12,ymin+5); uipdr2i(xmin+11,ymin+5); uipclos(); - - uiLtGray(); - uimove2i(xmin+3,ymin+11); uidraw2i(xmin+11,ymin+3); - uidraw2i(xmin+12,ymin+3); uidraw2i(xmax-3,ymin+11); - uiendline(); - uimove2i(xmin+4,ymin+11); uidraw2i(xmin+11,ymin+4); - uidraw2i(xmin+12,ymin+4); uidraw2i(xmax-4,ymin+11); - uiendline(); - - uiBlack(); - uimove2i(xmin+2,ymin+11); uidraw2i(xmin+11,ymin+2); - uidraw2i(xmin+12,ymin+2); uidraw2i(xmax-2,ymin+11); - uiendline(); - - uiWhite(); - uimove2i(xmin,ymin+10); uidraw2i(xmin+10,ymin); - uidraw2i(xmin+13,ymin); uidraw2i(xmax,ymin+10); - uiendline(); - uimove2i(xmin,ymin+11); uidraw2i(xmin+10,ymin+1); - uidraw2i(xmin+13,ymin+1);uidraw2i(xmax,ymin+11); - uiendline(); - uimove2i(xmin+1,ymin+11);uidraw2i(xmin+10,ymin+2); - uimove2i(xmin+13,ymin+2);uidraw2i(xmax-1,ymin+11); - uiendline(); - - } else { - - uiDkGray(); - uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); - uipdr2i(xmin+10,ymax); - uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13); - uipdr2i(xmax,ymin+10); - uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos(); - - uiLtGray(); - uipmv2i(xmin+1,ymin+11); uipdr2i(xmin+1,ymin+13); - uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); - uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+11); - uipdr2i(xmin+13,ymin+2); uipdr2i(xmin+10,ymin+2); uipclos(); - - uiWhite(); - uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1); - uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12); - uiendline(); - } - } - - } else { /* not enabled */ - uiDkGray(); - uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); uipdr2i(xmin+10,ymax); - uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13); uipdr2i(xmax,ymin+10); - uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos(); - - uiLtGray(); - uipmv2i(xmin+1,ymin+10); uipdr2i(xmin+1,ymin+13); - uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); - uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+10); - uipdr2i(xmin+13,ymin+1); uipdr2i(xmin+10,ymin+1); uipclos(); - } - - if (obj->active) { - if (muiGetEnable(obj)) { - uiSlateBlue(); - uipmv2i(xmin+12,ymax-5); uipdr2i(xmax-6,ymin+13); - uipdr2i(xmax-8,ymin+13); uipdr2i(xmin+12,ymax-7); uipclos(); - - uiBlue(); - uipmv2i(xmin+12,ymax-8); uipdr2i(xmax-9,ymin+13); - uipdr2i(xmax-9,ymin+12); uipdr2i(xmin+12,ymin+10); uipclos(); - - uiBlack(); - uipmv2i(xmin+12,ymin+9); uipdr2i(xmin+15,ymin+12); - uipdr2i(xmax-6,ymin+12); uipdr2i(xmin+13,ymin+8); - uipdr2i(xmin+12,ymin+8); uipclos(); - - uiDkGray(); - uimove2i(xmin+13,ymin+7); uidraw2i(xmax-5,ymin+12); - uiendline(); - } else { - uiSlateBlue(); - uipmv2i(xmin+12,ymax-5); uipdr2i(xmax-6,ymin+13); - uipdr2i(xmax-6,ymin+12); uipdr2i(xmin+13,ymin+8); - uipdr2i(xmin+12,ymin+8); uipclos(); - - uiBlack(); - uimove2i(xmin+13,ymin+7); uidraw2i(xmax-5,ymin+12); - uiendline(); - } - } - drawbuttonlabel(obj); -} - -void drawtinyradio(muiObject *obj) -{ - int xmin = obj->xmin, xmax = obj->xmax, - ymin = obj->ymin, ymax = obj->ymax; - int sxmin = obj->xmin+4, sxmax = obj->xmin+13, sxmid = obj->xmin+8, - symin = obj->ymin+3, symax = obj->ymin+12, symid = obj->ymin+7; - - if (!muiGetVisible(obj)) { - backgrounddraw(obj->xmin,obj->ymin,obj->xmax,obj->ymax); - return; - } - - if (muiGetEnable(obj) && obj->locate) { - if (obj->select) { - drawedges(xmin++,xmax--,ymin++,ymax--,uiBlack,uiWhite); - drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiBlack); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiMmGray); - - uiVyLtGray(); - uirectfi(xmin,ymin,xmax,ymax); - } else { - uiWhite(); - uirectfi(xmin,ymin,xmax,ymax); - } - } else { - uiBackground(); - uirectfi(xmin,ymin,xmax,ymax); - } - - - uiBlack(); - uipmv2i(sxmin, symid); uipdr2i(sxmin++, symid+1); - uipdr2i(sxmid, symax); uipdr2i(sxmid+1, symax--); uipdr2i(sxmax, symid+1); - uipclos(); - - uiLtGray(); - uipmv2i(sxmax--, symid); uipdr2i(sxmid+1, symin); - uipdr2i(sxmid, symin++); uipdr2i(sxmin, symid-1); - uipclos(); - - if (obj->active) { - if (!muiGetEnable(obj)) - uiLtYellow(); - else - uiYellow(); - } else { - if (!muiGetEnable(obj)) - uiMmGray(); - else if (obj->locate) - uiMmYellow(); - else - uiDkYellow(); - } - uipmv2i(sxmin, symid); uipdr2i(sxmin, symid+1); - uipdr2i(sxmid, symax); uipdr2i(sxmid+1, symax); uipdr2i(sxmax, symid+1); - uipdr2i(sxmax, symid); uipdr2i(sxmid+1, symin); uipdr2i(sxmid, symin); - uipclos(); - - drawbuttonlabel(obj); -} - diff --git a/lib/glut-3.7.6/lib/mui/dirent32.h b/lib/glut-3.7.6/lib/mui/dirent32.h deleted file mode 100644 index 02608c4b32ca3933da61f4a29210a20b2997f015..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/dirent32.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - - Win32 lacks unix dirent support. But, we can fake it. Many - thanks to Dave Lubrik (lubrik@jaka.ece.uiuc.edu) who found and - fixed many bugs in the original code. - - */ - - -#ifndef _WIN32 -#include -#else - -#include - - - -struct dirent { - char d_name[MAX_PATH]; -}; - -typedef struct { - WIN32_FIND_DATA wfd; - HANDLE hFind; - struct dirent de; -} DIR; - - -static DIR * -opendir(char *pSpec) -{ - DIR *pDir = malloc(sizeof(DIR)); - char pathnamespec[MAX_PATH]; - int l; /* length of directory specifier */ - char c; /* last char of directory specifier */ - - /* Given a directory pathname in pSpec, add \ (if necessary) and * - to yield a globbable expression describing all the files in that - directory */ - strcpy(pathnamespec, pSpec); - - /* Add a \ to separate the directory name from the filename-wildcard - "*", unless it already ends in a \ (don't create \\ sequences), - or it is a drivespec (since "C:*" differs in meaning from "C:\*") */ - if (((l = strlen(pSpec)) > 0) && ((c = pSpec[l-1]) != '\\') && (c != ':')) - strcat(pathnamespec, "\\"); - - /* Add the filename wildcard "*" */ - strcat(pathnamespec,"*"); - - /* Find files matching that expression (all the files in that - directory) */ - pDir->hFind = FindFirstFile(pathnamespec, &pDir->wfd); - - return pDir; -} - - -/* closedir takes a pointer to a DIR structure created by opendir, and - frees up resources allocated by opendir. Call it when done with a - directory. */ -static void -closedir(DIR * pDir) -{ - FindClose(pDir->hFind); /* Release system resources */ - free(pDir); /* release memory */ -} - -/* readdir is used to iterate through the files in a directory. It - takes a pointer to a DIR structure created by opendir, and each - time it is called it returns the name of another file in the - directory passed to opendir. Returns: a pointer to a dirent - structure, containing the file name. NULL if there are no more - files in the directory. */ -static struct dirent * -readdir(DIR *pDir) -{ - /* The previous call to opendir or readdir has already found the next - file (using FindFirstFile or FindNextFile respectively). Return - that file name to the caller, and silently find the next one. */ - - if (*(pDir->wfd.cFileName)) { /* If we haven't exhausted the files */ - strcpy(pDir->de.d_name, pDir->wfd.cFileName); /* copy name */ - - if (!FindNextFile(pDir->hFind, &pDir->wfd)) /* get next */ - *(pDir->wfd.cFileName) = 0; - /* if no more, zero next filename, so that next time through, - we don't even try. */ - - return &pDir->de; /* return dirent struct w/filename */ - } - - return NULL; /* No more files to find. */ -} - -#endif diff --git a/lib/glut-3.7.6/lib/mui/displaylist.c b/lib/glut-3.7.6/lib/mui/displaylist.c deleted file mode 100644 index 64cf3edb0dc89621c8c5adb88139fff4c9d3f57a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/displaylist.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include - -#define MOVE2I 1 -#define DRAW2I 2 -#define RECTFI 3 -#define CMOV2I 4 -#define CHARSTR 5 -#define PMV2I 6 -#define PDR2I 7 -#define PCLOS 8 -#define RECTI 9 -#define CLEAR 10 -#define ENDLINE 11 -#define PUSHVP 12 -#define POPVP 13 -#define VP 14 - -extern short ditherflag; - -void charstr(char *s, int font) -{ - int len = (int) strlen(s); - int i; - void **f; - switch(font) { - case UI_FONT_BOLD: - case UI_FONT_NORMAL: - f = GLUT_BITMAP_HELVETICA_12; - break; - case UI_FONT_FIXED_PITCH: - f = GLUT_BITMAP_9_BY_15; - break; - } - for (i = 0; i < len; i++) - glutBitmapCharacter(f, s[i]); -} - -void uipushviewport(void) -{ -} - -void uipopviewport(void) -{ - glDisable(GL_SCISSOR_TEST); -} - -void uiviewport(int x, int y, int width, int height) -{ - glScissor(x, y, width, height); - glEnable(GL_SCISSOR_TEST); -} - -void uicharstr(char *s, int font) -{ - charstr(s, font); -} - -void uirecti(int x, int y, int z, int w) -{ - glBegin(GL_LINE_LOOP); - glVertex2i(x, y); - glVertex2i(x, w); - glVertex2i(z, w); - glVertex2i(z, y); - glEnd(); -} - -void uirectfi(int x, int y, int x1, int y1) -{ - glRecti(x, y, x1, y1); -} - -void uipclos(void) -{ - glEnd(); -} - -void uiclear(void) -{ - glClearColor(214.0/255.0, 214.0/255.0, 214.0/255.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); -} - -void uipdr2i(int x, int y) -{ - glVertex2i(x, y); -} - -void uipmv2i(int x, int y) -{ - glBegin(GL_POLYGON); - glVertex2i(x, y); -} - -void uicmov2i(int x, int y) -{ - glRasterPos2i(x, y); -} - -void uidraw2i(int x, int y) -{ - glVertex2i(x, y); -} - -void uiendline(void) -{ - glEnd(); -} - -void uimove2i(int x, int y) -{ - glBegin(GL_LINE_STRIP); - glVertex2i(x, y); -} - diff --git a/lib/glut-3.7.6/lib/mui/gizmo.c b/lib/glut-3.7.6/lib/mui/gizmo.c deleted file mode 100644 index 14ee1cd121cbea023d6bd34cdcb8c3119d865f85..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/gizmo.c +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Copyright (c) 1992, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - - /* jot text editor source code. */ - /* Tom Davis */ - /* February 7, 1992 */ - -#include -#include -#include -#include -#include -#include - -#define BUTTONUP 0 -#define BUTTONDOWN 1 -#define BUTTONCLICK 2 -#define BUTTONDOUBLE 3 - -void drawtb(muiObject *); - -int definescaledfont = 0; -char *tmpfilename; - -/* NEW BUTTON PROCEDURES */ - -int strwidth(char *s) -{ - int len = 0; - while (*s) { - len += glutBitmapWidth(GLUT_BITMAP_HELVETICA_12, *s++); - } - return len; -} - -Button *newbut(void) -{ - Button *b; - b = newbed(); - b->type = BUTTON; - b->link = 0; - return b; -} - -Button *newradiobut(void) -{ - Button *b; - b = newbed(); - b->type = RADIOBUTTON; - b->link = 0; - return b; -} - -Button *newbed(void) -{ - Button *b; - - b = (Button *)malloc(sizeof(Button)); - b->str[0] = 0; - b->type = BED; - return b; -} - -void muiLoadButton(muiObject *b, char *s) -{ - int temp; - Button *but = (Button *)b->object; - - strcpy(but->str, s); - switch (but->type) { - case PUSHBUTTON: - temp = b->xmin + strwidth(but->str) + 20; - if (temp > b->xmax) - b->xmax = temp; - break; - default: - break; - } -} - -void drawbuttonbackground(muiObject *b) -{ - int xmin = b->xmin, xmax = b->xmax, ymin = b->ymin, ymax = b->ymax; - - if (b->locate) { - if (b->select) { - drawedges(xmin++,xmax--,ymin++,ymax--,uiVyDkGray,uiWhite); - drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiWhite); - drawedges(xmin++,xmax--,ymin++,ymax--,uiLtGray,uiBlack); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiLtGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiVyLtGray); - } else { - drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiVyDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiLtGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiLtGray); - } - } else { - drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiVyDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiVyLtGray,uiMmGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiVyLtGray,uiMmGray); - } - (b->locate)?uiVyLtGray():uiLtGray(); - uirectfi(xmin,ymin,xmax+1,ymax+1); -} - -void drawpushbut(muiObject *b) -{ - Button *but = (Button *)b->object; - - drawbuttonbackground(b); - uiBlack(); - uicmov2i(b->xmin+ (b->xmax - b->xmin - strwidth(but->str))/2 + 1, b->ymin+9); - uicharstr(but->str, UI_FONT_NORMAL); -} - -void drawbut(muiObject *b) -{ - switch(b->type) { - case BUTTON: - case PUSHBUTTON: - drawpushbut(b); - break; - case BED: - break; - default: - drawpushbut(b); - break; - } -} - -void muiChangeLabel(muiObject *obj, char *s) -{ - Label *l; - - if (obj->type != MUI_LABEL && obj->type != MUI_BOLDLABEL) - muiError("muiChangeLabel: not a label"); - l = (Label *)obj->object; - strncpy(l->str, s, LABELSTRLEN); - l->str[LABELSTRLEN] = 0; - return; -} - -Label *newlabel(char *s) -{ - Label *l = (Label *)malloc(sizeof(Label)); - strncpy(l->str, s, LABELSTRLEN); - l->str[LABELSTRLEN] = 0; - return l; -} - -TextBox *activetb = 0; - -TextBox *newtb(int xmin, int xmax) -{ - TextBox *tb; - static int inited = 0; - - if (!inited) { - inited = 1; - } - - tb = (TextBox *)malloc(sizeof(TextBox)); - tb->charWidth = (xmax - xmin - 9)/FONTWIDTH; - tb->tp1 = tb->tp2 = 0; - *tb->str = 0; - *tb->label = 0; - return tb; -} - -char *muiGetTBString(muiObject *obj) -{ - TextBox *tb = (TextBox *)obj->object; - return tb->str; -} - -void muiClearTBString(muiObject *obj) -{ - TextBox *tb = (TextBox *)obj->object; - *tb->str = 0; - tb->tp1 = tb->tp2 = 0; -} - -void loadtb(TextBox *tb, char *s) -{ - if (s == 0) - *tb->str = 0; - else - strcpy(tb->str, s); - tb->tp1 = tb->tp2 = (int) strlen(s); -} - -void muiSetTBString(muiObject *obj, char *s) -{ - TextBox *tb = (TextBox *)obj->object; - loadtb(tb, s); -} - -void backspacetb(TextBox *tb) -{ - char *s1, *s2, *stemp; - - if ((tb->tp1 == tb->tp2) && tb->tp1 > 0) { - s1 = &tb->str[tb->tp1-1]; - while (*s1) { - *s1 = *(s1+1); - s1++; - } - tb->tp1--; tb->tp2--; - return; - } - s1 = &tb->str[tb->tp1]; - s2 = &tb->str[tb->tp2]; - if (s1 > s2) { stemp = s1; s1 = s2; s2 = stemp; } - stemp = s1; - while (*s2) {*s1++ = *s2++;} - *s1 = 0; - tb->tp1 = tb->tp2 = (int) (stemp - tb->str); -} - -void inserttbchar(TextBox *tb, char c) -{ - char *s1, *s2; - int len; - - if (tb->tp1 != tb->tp2) backspacetb(tb); - len = (int) strlen(tb->str); - if (len == TBSTRLEN) return; - s1 = &tb->str[tb->tp1]; - s2 = &tb->str[len+1]; - while (s2 != s1) { - *s2 = *(s2 - 1); - s2--; - } - *s1 = c; - tb->tp1++; tb->tp2++; -} - -int findtp(muiObject *obj, int x) -{ - TextBox *tb = (TextBox *)obj->object; - int tp, sl = (int) strlen(tb->str); - - tp = (x - obj->xmin)/FONTWIDTH; - if (tp < 0) tp = 0; - if (tp > tb->charWidth) tp = tb->charWidth; - if (tp > sl) tp = sl; - return tp; -} - -void drawtbcontents(muiObject *obj) -{ - int xmin = obj->xmin, ymin = obj->ymin; - int ymax = ymin+TEXTBOXHEIGHT; - int s1, s2; - char str[160], *s; - TextBox *tb = (TextBox *)obj->object; - - strncpy(str, tb->str, (unsigned int)tb->charWidth); - for (s = str; *s; s++) - if (*s < ' ' || *s >= '\177') *s = '*'; - str[tb->charWidth] = 0; - s1 = tb->tp1; s2 = tb->tp2; - if (s1 > tb->charWidth) s1 = tb->charWidth; - if (s2 > tb->charWidth) s2 = tb->charWidth; - - /* selected area */ - if (obj->active && (s1 != s2)) { - uiVyLtGray(); - uirectfi(xmin+6+FONTWIDTH*s1, ymin+7, xmin+6+FONTWIDTH*s2, ymax-6); - } - - /* contents of text box */ - if (muiGetEnable(obj)) uiBlack(); else uiDkGray(); - uicmov2i(xmin+6, ymin+9); - uicharstr(str, UI_FONT_FIXED_PITCH); - - /* Blue bar */ - if ((obj->active == 0) || (obj->enable == 0) || (s1 != s2)) return; - uiBlue(); - uimove2i(xmin+4+FONTWIDTH*s1, ymin+7); uidraw2i(xmin+4+FONTWIDTH*s1, ymax-6); uiendline(); - uimove2i(xmin+5+FONTWIDTH*s1, ymin+7); uidraw2i(xmin+5+FONTWIDTH*s1, ymax-6); uiendline(); -} - -void drawtb(muiObject *tb) -{ - int xmin = tb->xmin, xmax = tb->xmax, ymin = tb->ymin; - int ymax = ymin+TEXTBOXHEIGHT; - - if(!muiGetVisible(tb)) return; - - if( muiGetEnable(tb) ) { - drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiWhite); - drawedges(xmin++,xmax--,ymin++,ymax--,uiBlack,uiVyLtGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiLtGray,uiDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiTerraCotta,uiTerraCotta); - uiTerraCotta(); - } - else { - drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiWhite); - drawedges(xmin++,xmax--,ymin++,ymax--,uiMmGray,uiVyLtGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiLtGray,uiDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiLtGray,uiDkGray); - uiLtGray(); - } - uirectfi(xmin, ymin, xmax+1, ymax+1); - - drawtbcontents(tb); -} - -void muiActivateTB(muiObject *obj) -{ - muiCons *mcons; - - if ((mcons = muiGetListCons(muiGetUIList(obj))) == (muiCons *)0) return; - muiSetActive(obj, 1); - while (mcons) { - if (mcons->object != obj && mcons->object->type == MUI_TEXTBOX) - muiSetActive(mcons->object, 0); - mcons = mcons->next; - } -} - -muiObject *muiGetActiveTB(void) -{ - muiCons *mcons; - int list = muiGetActiveUIList(); - - if (list == 0) return 0; - if ((mcons = muiGetListCons(list)) == (muiCons *)0) return 0; - while (mcons) { - if (mcons->object->type == MUI_TEXTBOX && muiGetActive(mcons->object)) - return mcons->object; - mcons = mcons->next; - } - return 0; -} - -enum muiReturnValue textboxhandler(muiObject *obj, int event, int value, int x, int y) -{ - int tp; - TextBox *tb = (TextBox *)obj->object; - - if( !muiGetEnable(obj) || !muiGetVisible(obj) ) return MUI_NO_ACTION; - - switch (event) { - case MUI_DEVICE_DOWN: - tp = findtp(obj, x); - tb->tp2 = tp; - break; - case MUI_DEVICE_UP: - break; - case MUI_DEVICE_PRESS: - muiActivateTB(obj); - tp = findtp(obj, x); - tb->tp1 = tb->tp2 = tp; - break; - case MUI_DEVICE_RELEASE: - break; - case MUI_DEVICE_CLICK: - case MUI_DEVICE_DOUBLE_CLICK: - muiActivateTB(obj); - tp = findtp(obj, x); - tb->tp1 = tb->tp2 = tp; - break; - case MUI_KEYSTROKE: - if (value == '\n' || value == '\r') /* carriage return */ - return MUI_TEXTBOX_RETURN; - if (value == '\025') { muiClearTBString(obj); } - else if (value == '\b') { backspacetb((TextBox *)obj->object); } - else inserttbchar((TextBox *)obj->object, (char)value); - break; - } - x = y; /* for lint's sake */ - return MUI_NO_ACTION; -} - -void helpdrawlabel(char *s, int x, int y) -{ - uiBlack(); - uicmov2i(x, y); - uicharstr(s, UI_FONT_NORMAL); -} - -void helpdrawboldlabel(char *s, int x, int y) -{ - uiBlack(); /* XXX Hack! -- no bold font in GLUT */ - uicmov2i(x, y); - uicharstr(s, UI_FONT_NORMAL); - uicmov2i(x+1, y); - uicharstr(s, UI_FONT_NORMAL); -} - -void drawlabel(muiObject *lab) -{ - Label *l = (Label *)lab->object; - if(!muiGetVisible(lab)) return; - if(muiGetEnable(lab)) uiBlack(); else uiDkGray(); - uicmov2i(lab->xmin, lab->ymin); - uicharstr(l->str, UI_FONT_NORMAL); -} - -void drawboldlabel(muiObject *lab) -{ - Label *l = (Label *)lab->object; - if(!muiGetVisible(lab)) return; - if(muiGetEnable(lab)) uiBlack(); else uiDkGray(); - uicmov2i(lab->xmin, lab->ymin); /* XXX Hack! -- no bold font in GLUT */ - uicharstr(l->str, UI_FONT_NORMAL); - uicmov2i(lab->xmin+1, lab->ymin); - uicharstr(l->str, UI_FONT_NORMAL); -} diff --git a/lib/glut-3.7.6/lib/mui/glutmui.c b/lib/glut-3.7.6/lib/mui/glutmui.c deleted file mode 100644 index e6db10842ee0ef718e77da25d460ec4709ffc5b6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/glutmui.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include - -typedef struct _Window { - int mui_xorg, mui_yorg, mui_xsize, mui_ysize; - int uilist; - int mbleft; -} WindowRec, *Window; - -static Window winList = NULL; -static int numWins = 0; - -int mui_singlebuffered = 0; - -int menuinuse = 0; - -static int mbmiddle = 0, mbright = 0; /* XXX unused currently */ - -void setmousebuttons(int b, int s) -{ - Window win = &winList[glutGetWindow()-1]; - - switch (b) { - case GLUT_LEFT_BUTTON: - win->mbleft = (s == GLUT_DOWN); - break; - case GLUT_MIDDLE_BUTTON: - mbmiddle =(s == GLUT_DOWN); - break; - case GLUT_RIGHT_BUTTON: - mbright =(s == GLUT_DOWN); - break; - } -} - -void mui_drawgeom(void) -{ - Window win = &winList[glutGetWindow()-1]; - - glViewport(0, 0, win->mui_xsize, win->mui_ysize); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, win->mui_xsize, 0, win->mui_ysize); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - muiDrawUIList(win->uilist); - if (mui_singlebuffered == 0) - glutSwapBuffers(); - else - glFlush(); -} - -void mui_keyboard(unsigned char c, int x, int y) -{ - Window win = &winList[glutGetWindow()-1]; - - muiSetActiveUIList(win->uilist); - muiHandleEvent(MUI_KEYSTROKE, c, x, win->mui_ysize-y); - glutPostRedisplay(); -} - -void mui_mouse(int b, int s, int x, int y) -{ - Window win = &winList[glutGetWindow()-1]; - - muiSetActiveUIList(win->uilist); - setmousebuttons(b, s); - if (b == GLUT_MIDDLE_BUTTON && s == GLUT_DOWN) { - muiHandleEvent(MUI_DEVICE_DOUBLE_CLICK, 0, x, win->mui_ysize-y); - glutPostRedisplay(); - } - if (b != GLUT_LEFT_BUTTON) { return; } - muiHandleEvent((s==GLUT_DOWN)?MUI_DEVICE_PRESS:MUI_DEVICE_RELEASE, 0, x, win->mui_ysize-y); - glutPostRedisplay(); -} - -static void mui_Reshape(int width, int height) -{ - Window win = &winList[glutGetWindow()-1]; - - win->mui_xorg = glutGet(GLUT_WINDOW_X); - win->mui_yorg = glutGet(GLUT_WINDOW_Y); - win->mui_xsize = width; - win->mui_ysize = height; - glViewport(0, 0, win->mui_xsize, win->mui_ysize); -} - -void mui_glutmotion(int x, int y) -{ - Window win = &winList[glutGetWindow()-1]; - - muiSetActiveUIList(win->uilist); - if (win->mbleft == 0) return; - muiHandleEvent(MUI_DEVICE_DOWN, 0, x, win->mui_ysize-y); - glutPostRedisplay(); -} - -void mui_glutpassivemotion(int x, int y) -{ - Window win = &winList[glutGetWindow()-1]; - - muiSetActiveUIList(win->uilist); - muiHandleEvent(MUI_DEVICE_UP, 0, x, win->mui_ysize-y); - glutPostRedisplay(); -} - -void mui_menufunc(int state) -{ - menuinuse = state; -} - -void muiInit(void) -{ - int winNum = glutGetWindow(); - Window win; - - if (winNum >= numWins) { - numWins = winNum; - winList = (Window) realloc(winList, numWins * sizeof(WindowRec)); - } - win = &winList[glutGetWindow()-1]; - win->mui_xorg = glutGet(GLUT_WINDOW_X); - win->mui_yorg = glutGet(GLUT_WINDOW_Y); - win->mui_xsize = glutGet(GLUT_WINDOW_WIDTH); - win->mui_ysize = glutGet(GLUT_WINDOW_HEIGHT);; - win->mbleft = 0; - /* The "uilist = 1" is for compatibility with GLUT 3.5's MUI - implementation that was hardwired to support a single window - only with UI list 1. */ - win->uilist = 1; - - glutKeyboardFunc(mui_keyboard); - glutMouseFunc(mui_mouse); - glutReshapeFunc(mui_Reshape); - glutMotionFunc(mui_glutmotion); - glutPassiveMotionFunc(mui_glutpassivemotion); - glutDisplayFunc(mui_drawgeom); - glutMenuStateFunc(mui_menufunc); -} - -void muiAttachUIList(int uilist) -{ - Window win = &winList[glutGetWindow()-1]; - - win->uilist = uilist; -} diff --git a/lib/glut-3.7.6/lib/mui/hslider.c b/lib/glut-3.7.6/lib/mui/hslider.c deleted file mode 100644 index 24db16a5c9b87edce65a7a0dcae14cd0236ce49a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/hslider.c +++ /dev/null @@ -1,488 +0,0 @@ -/* - * Copyright (c) 1990,1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include -#include - -extern HSlider *locatedhs; - -int gethstrough(muiObject *obj) -{ - return obj->xmax - obj->xmin - 2*ARROWHEIGHT; -} - -void sethscenter(muiObject *obj, int scenter) -{ - HSlider *hs = (HSlider *)obj->object; - if ((scenter - hs->shalf) < (obj->xmin+ARROWHEIGHT)) - hs->scenter = gethstrough(obj)/2 + obj->xmin+ARROWHEIGHT; - else - hs->scenter = scenter; -} - -void muiSetHSArrowDelta(muiObject *obj, int newd) -{ - HSlider *hs = (HSlider *)obj->object; - hs->arrowdelta = newd; -} - -HSlider *newhs(muiObject *obj, int xmin, int xmax, int scenter, int shalf) -{ - HSlider *hs; - - hs = (HSlider *)malloc(sizeof(HSlider)); - obj->object = (HSlider *)hs; - if (shalf == 0) { - hs->shalf = 0; - } else if (shalf < MINSHALF) - hs->shalf = MINSHALF; - else - hs->shalf = shalf; - - if ((xmax - xmin + 1) <= (2*ARROWHEIGHT+2*MINSHALF)) - hs->thumb = 0; - else - hs->thumb = 1; - - sethscenter(obj, scenter); - hs->oldpos = hs->scenter; - - muiSetHSArrowDelta(obj, 1); - return hs; -} - -void freehs(HSlider *hs) -{ - if (hs) { - free(hs); - } -} - -void drawhsarrows(muiObject *obj) -{ - int ymin = obj->ymin, ymax = obj->ymin+ARROWHEIGHT, - xmin = obj->xmin, xmax = obj->xmax; - - if (!muiGetVisible(obj)) - return; - - /* Draw the arrows: */ - - /* down arrow */ - uiDkGray(); - uirecti(xmin,ymin,xmin+20,ymax); - - if (muiGetVisible(obj)) { - if (obj->locate == SCROLLDOWN) { - if (obj->select == SCROLLDOWN) { - drawedges(xmin+1,xmin+19,ymin+1,ymax-1,uiMmGray,uiWhite); - drawedges(xmin+2,xmin+18,ymin+2,ymax-2,uiLtGray,uiWhite); - } else { - drawedges(xmin+1,xmin+19,ymin+1,ymax-1,uiWhite,uiMmGray); - drawedges(xmin+2,xmin+18,ymin+2,ymax-2,uiWhite,uiLtGray); - } - uiVyLtGray(); - uirectfi(xmin+3,ymin+3,xmin+17,ymax-3); - } else { - if (obj->select == SCROLLDOWN) { - drawedges(xmin+1,xmin+19,ymin+1,ymax-1,uiMmGray,uiVyLtGray); - drawedges(xmin+2,xmin+18,ymin+2,ymax-2,uiMmGray,uiVyLtGray); - } else { - drawedges(xmin+1,xmin+19,ymin+1,ymax-1,uiWhite,uiMmGray); - drawedges(xmin+2,xmin+18,ymin+2,ymax-2,uiVyLtGray,uiMmGray); - } - uiLtGray(); - uirectfi(xmin+3,ymin+3,xmin+17,ymax-3); - } - } else { - drawedges(xmin+1,xmin+19,ymin+1,ymax-1,uiVyLtGray,uiMmGray); - uiLtGray(); - uirectfi(xmin+2,ymin+2,xmin+18,ymax-2); - } - - /* arrow XXX probably wrong for hsliders XXX */ - if (muiGetEnable(obj)) - uiDkGray(); - else - uiMmGray(); - uimove2i(xmin+14, ymin+5); - uidraw2i(xmin+14, ymin+14); - uiendline(); - uirectfi(xmin+13,ymin+6,xmin+12,ymin+13); - uirectfi(xmin+11,ymin+7,xmin+10,ymin+12); - uirectfi(xmin+8,ymin+8,xmin+9,ymin+11); - uirectfi(xmin+6,ymin+9,xmin+7,ymin+10); - - /* up arrow */ - uiDkGray(); - uirecti(xmax-20,ymin,xmax,ymax); - - if (muiGetEnable(obj)) { - if (obj->locate == SCROLLUP) { - if (obj->select == SCROLLUP) { - drawedges(xmax-19,xmax-1,ymin+1,ymax-1,uiMmGray,uiWhite); - drawedges(xmax-18,xmax-2,ymin+2,ymax-2,uiLtGray,uiWhite); - } else { - drawedges(xmax-19,xmax-1,ymin+1,ymax-1,uiWhite,uiMmGray); - drawedges(xmax-18,xmax-2,ymin+2,ymax-2,uiWhite,uiLtGray); - } - uiVyLtGray(); - uirectfi(xmax-17,ymin+3,xmax-3,ymax-3); - } else { - if (obj->select == SCROLLUP) { - drawedges(xmax-19,xmax-1,ymin+1,ymax-1,uiMmGray,uiVyLtGray); - drawedges(xmax-18,xmax-2,ymin+2,ymax-2,uiMmGray,uiVyLtGray); - } else { - drawedges(xmax-19,xmax-1,ymin+1,ymax-1,uiWhite,uiMmGray); - drawedges(xmax-18,xmax-2,ymin+2,ymax-2,uiVyLtGray,uiMmGray); - } - uiLtGray(); - uirectfi(xmax-17,ymin+3,xmax-3,ymax-3); - } - } else { - drawedges(xmin+1,xmax-1,ymin+1,ymax-1,uiVyLtGray,uiMmGray); - uiLtGray(); - uirectfi(xmax-18,ymin+2,xmax-2,ymax-2); - } - - /* arrow XXX probably wrong for hslider XXX */ - if (muiGetEnable(obj)) - uiDkGray(); - else - uiMmGray(); - uirectfi(xmax-6,ymin+9,xmax-7,ymin+10); - uirectfi(xmax-8,ymin+8,xmax-9,ymin+11); - uirectfi(xmax-10,ymin+7,xmax-11,ymin+12); - uirectfi(xmax-12,ymin+6,xmax-13,ymin+13); - uimove2i(xmax-14, ymin+5); - uidraw2i(xmax-14, ymin+14); - uiendline(); -} - -void drawhs(muiObject *obj) -{ - HSlider *hs = (HSlider *)obj->object; - - int ymin = obj->ymin, xmax = obj->xmax-ARROWHEIGHT, - xmin = obj->xmin+ARROWHEIGHT; - int ymax = ymin+SLIDERWIDTH; - int sxmin = hs->scenter - hs->shalf; - int sxmax = hs->scenter + hs->shalf; - int oldsxmin = hs->oldpos - hs->shalf; - int oldsxmax = hs->oldpos + hs->shalf; - - drawsetup(); - - if (!muiGetVisible(obj)) { - backgrounddraw(xmin,ymin,xmax,ymax); - drawrestore(); - return; - } - - /* trough */ - - uiDkGray(); - uirecti(xmin, ymin, xmax, ymax); - - drawedges(xmin+1,xmax-1,ymin+1,ymax-1,uiVyLtGray,uiMmGray); - - uiLtGray(); - uirectfi(xmin+2, ymin+2, xmax-2, ymax-2); - - if (hs->thumb) { - /* last thumb position */ - if ((hs->oldpos != hs->scenter) && (obj->enable)) { - - uiDkGray(); - uimove2i(oldsxmax, ymax-2); - uidraw2i(oldsxmax, ymin+1); - uiendline(); - - uiMmGray(); - uimove2i(oldsxmax, ymin+1); - uidraw2i(oldsxmin, ymin+1); - uiendline(); - - uiVyLtGray(); - uimove2i(oldsxmin, ymin+2); - uidraw2i(oldsxmin, ymax-1); - uiendline(); - - uiLtGray(); - uimove2i(oldsxmin, ymax-1); - uidraw2i(oldsxmax, ymax-1); - uiendline(); - - uiVyLtGray(); - uimove2i(--oldsxmax, ymax-2); - uidraw2i(++oldsxmin, ymax-2); - uidraw2i(oldsxmin, ymin+2); - uiendline(); - - uiVyDkGray(); - uimove2i(oldsxmin, ymin+2); - uidraw2i(oldsxmax, ymin+2); - uidraw2i(oldsxmax, ymax-3); - uiendline(); - - uiDkGray(); - uimove2i(--oldsxmax, ymin+3); - uidraw2i(oldsxmax, ymax-3); - uiendline(); - - uiLtGray(); - uimove2i(oldsxmax, ymax-3); - uidraw2i(++oldsxmin, ymax-3); - uidraw2i(oldsxmin, ymin+3); - uiendline(); - - uiMmGray(); - uirectfi(++oldsxmin, ymin+3, --oldsxmax, ymax-4); - - } - - if (obj->enable) { - - /* thumb */ - uiDkGray(); - uirecti(sxmin,ymin,sxmax,ymax); - if (obj->locate == THUMB) { - drawedges(sxmin+1,sxmax-1,ymin+1,ymax-1,uiWhite,uiDkGray); - drawedges(sxmin+2,sxmax-2,ymin+2,ymax-2,uiWhite,uiLtGray); - drawedges(sxmin+3,sxmax-3,ymin+3,ymax-3,uiWhite,uiLtGray); - - uiVyLtGray(); - uirectfi(sxmin+4, ymin+4, sxmax-4, ymax-4); - - /* ridges on thumb */ - uiDkGray(); - uimove2i(hs->scenter, ymin+3); - uidraw2i(hs->scenter, ymax-3); - uiendline(); - uimove2i(hs->scenter-4, ymin+3); - uidraw2i(hs->scenter-4, ymax-3); - uiendline(); - uimove2i(hs->scenter+4, ymin+3); - uidraw2i(hs->scenter+4, ymax-3); - uiendline(); - - uiWhite(); - uirectfi(hs->scenter+1,ymin+3,hs->scenter+2,ymax-3); - uirectfi(hs->scenter+5,ymin+3,hs->scenter+6,ymax-3); - uirectfi(hs->scenter-2,ymin+3,hs->scenter-3,ymax-3); - } else { - drawedges(sxmin+1,sxmax-1,ymin+1,ymax-1,uiWhite,uiDkGray); - drawedges(sxmin+2,sxmax-2,ymin+2,ymax-2,uiVyLtGray,uiMmGray); - drawedges(sxmin+3,sxmax-3,ymin+3,ymax-3,uiVyLtGray,uiMmGray); - - uiLtGray(); - uirectfi(sxmin+4, ymin+4, sxmax-4, ymax-4); - - /* ridges on thumb */ - uiBlack(); - uimove2i(hs->scenter, ymin+3); - uidraw2i(hs->scenter, ymax-3); - uiendline(); - uimove2i(hs->scenter-4, ymin+3); - uidraw2i(hs->scenter-4, ymax-3); - uiendline(); - uimove2i(hs->scenter+4, ymin+3); - uidraw2i(hs->scenter+4, ymax-3); - uiendline(); - - uiWhite(); - uimove2i(hs->scenter+1, ymin+3); - uidraw2i(hs->scenter+1, ymax-3); - uiendline(); - uimove2i(hs->scenter-3, ymin+3); - uidraw2i(hs->scenter-3, ymax-3); - uiendline(); - uimove2i(hs->scenter+5, ymin+3); - uidraw2i(hs->scenter+5, ymax-3); - uiendline(); - } - } - } - drawhsarrows(obj); - - drawrestore(); -} - -enum muiReturnValue hshandler(muiObject *obj, int event, int value, int x, int y) -{ - int my = x; - static int mfudge=0; - static enum muiReturnValue retval = MUI_NO_ACTION; - HSlider *hs = (HSlider *)obj->object; - - if (!muiGetEnable(obj) || !muiGetVisible(obj)) - return MUI_NO_ACTION; - switch (event) { - case MUI_DEVICE_RELEASE: - if (value == 0) { - hs->oldpos = hs->scenter; - muiSetSelect(obj, 0); - return MUI_SLIDER_RETURN; - } - case MUI_DEVICE_PRESS: - case MUI_DEVICE_CLICK: - /* in the arrows */ - if (my >= obj->xmin && my <= obj->xmax && - (my < obj->xmin+ARROWHEIGHT || my > obj->xmax-ARROWHEIGHT)) { - mfudge = -10000; - if (my < obj->xmin+ARROWHEIGHT) { /* boink down */ - my = hs->scenter - hs->arrowdelta; - retval = MUI_SLIDER_SCROLLDOWN; - } else { /* boink up */ - my = hs->scenter + hs->arrowdelta; - retval = MUI_SLIDER_SCROLLUP; - } - if (event == MUI_DEVICE_CLICK) { - muiSetSelect(obj, 0); - retval = MUI_SLIDER_RETURN; - } - if (my - hs->shalf < obj->xmin+1+ARROWHEIGHT) - my = obj->xmin+1+hs->shalf+ARROWHEIGHT; - if (my + hs->shalf > obj->xmax-1-ARROWHEIGHT) - my = obj->xmax-1-hs->shalf-ARROWHEIGHT; - hs->scenter = my; - break; - } else if (my >= obj->xmin && my <= obj->xmax) - retval = MUI_SLIDER_THUMB; - hs->oldpos = hs->scenter; - if (my >= hs->scenter-hs->shalf && my <= hs->scenter+hs->shalf) - mfudge = hs->scenter - my; - else - mfudge = 0; - break; - case MUI_DEVICE_DOWN: - if (mfudge == -10000) { /* auto - repeat the arrow keys */ - if (retval == MUI_SLIDER_SCROLLDOWN) { - my = hs->scenter - hs->arrowdelta; - if (my - hs->shalf < obj->xmin+1+ARROWHEIGHT) - my = obj->xmin+1+hs->shalf+ARROWHEIGHT; - } else { - my = hs->scenter + hs->arrowdelta; - if (my + hs->shalf > obj->xmax-1-ARROWHEIGHT) - my = obj->xmax-1-hs->shalf-ARROWHEIGHT; - } - hs->scenter = my; - break; - } - my = x+mfudge; - if (my - hs->shalf < obj->xmin+1+ARROWHEIGHT) - my = obj->xmin+1+hs->shalf+ARROWHEIGHT; - if (my + hs->shalf > obj->xmax-1-ARROWHEIGHT) - my = obj->xmax-1-hs->shalf-ARROWHEIGHT; - - /* adjust thumb */ - hs->scenter = my; - break; - } - y = y; /* for lint's sake */ - return retval; -} - -float muiGetHSVal(muiObject *obj) -{ - HSlider *hs = (HSlider *)obj->object; - - return (hs->scenter-obj->xmin-1.0-hs->shalf-ARROWHEIGHT)/ - (obj->xmax - obj->xmin - 2.0*hs->shalf - 2.0-2*ARROWHEIGHT); -} - -void sethshalf(muiObject *obj, int shalf) -{ - HSlider *hs = (HSlider *)obj->object; - hs->shalf = shalf; - if (hs->shalf==0) - muiSetEnable(obj, 0); - else if (hs->shalf < MINSHALF) { - hs->shalf = MINSHALF; - muiSetEnable(obj, 1); - } else if (2*hs->shalf >= gethstrough(obj)) { - hs->shalf = gethstrough(obj)/2; - muiSetEnable(obj, 0); - } -} - -void movehsval(muiObject *obj, float val) -{ - float f; - HSlider *hs = (HSlider *)obj->object; - - if (val < 0.0) val = 0.0; - if (val > 1.0) val = 1.0; - f = val*(obj->xmax - obj->xmin - 2.0*hs->shalf - 2.0-2*ARROWHEIGHT); - hs->scenter = f + hs->shalf + obj->xmin + 1.0+ARROWHEIGHT; - - if ((hs->scenter + hs->shalf) > (obj->xmax - ARROWHEIGHT)) - hs->scenter = obj->xmax - ARROWHEIGHT - hs->shalf; - if ((hs->scenter - hs->shalf) < (obj->xmin+ ARROWHEIGHT)) - hs->scenter = obj->xmin + ARROWHEIGHT + hs->shalf; -} - -void muiSetHSValue(muiObject *obj, float val) -{ - HSlider *hs = (HSlider *)obj->object; - movehsval(obj, (float) val); - hs->oldpos = hs->scenter; -} - -/* - * visible is windowheight/dataheight - * top is top/dataheight - */ - -void -adjusthsthumb(muiObject *obj, double visible, double top) -{ - int size; - - if (visible >= 1.0) { - size = gethstrough(obj) + 1; - } else { - size = visible*gethstrough(obj); - } - muiSetEnable(obj, 1); - sethshalf(obj, size/2); - muiSetHSValue(obj, (float) (1.0 - top)); -} diff --git a/lib/glut-3.7.6/lib/mui/miscui.c b/lib/glut-3.7.6/lib/mui/miscui.c deleted file mode 100644 index 4042512c7d55b7ca2e7ee004394fe59552978d55..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/miscui.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 1990,1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include - -extern int mui_xsize, mui_ysize; - -short sharefont1 = 0; -short sharefont2 = 0; - -void drawedges(int xmin,int xmax,int ymin,int ymax, - void (*topleft)(void), void (*bottomright)(void)) -{ - (*topleft)(); - uimove2i(xmin,ymin); - uidraw2i(xmin,ymax); - uidraw2i(xmax,ymax); - uiendline(); - - (*bottomright)(); - uimove2i(xmax,ymax-1); - uidraw2i(xmax,ymin); - uidraw2i(xmin+1,ymin); - uiendline(); -} - -static short called = 0; - -void drawsetup(void) -{ - if (called) return; - else called = 1; -} - -void drawrestore(void) -{ - called = 0; -} - -void backgrounddraw(int xmin, int ymin, int xmax, int ymax) -{ - drawsetup(); - - uiBackground(); - uirectfi(xmin, ymin, xmax, ymax); - - drawrestore(); -} - -void muiBackgroundClear(void) -{ - drawsetup(); - - uiBackground(); - uiclear(); - - drawrestore(); -} - -#if 0 -void windowborderdraw(void) -{ - int sxsize, sysize; - - sxsize = mui_xsize-1; sysize = mui_ysize-1; - - drawsetup(); - - uiBlack(); - uirecti(0,0,sxsize,sysize); - - uiWhite(); - uirecti(0+1,0+1,sxsize-1,sysize-1); - uirecti(0+2,0+2,sxsize-2,sysize-2); - - uiLtGray(); - uirecti(0+3,0+3,sxsize-3,sysize-3); - uirecti(0+4,0+4,sxsize-4,sysize-4); - uirecti(0+5,0+5,sxsize-5,sysize-5); - uirecti(0+6,0+6,sxsize-6,sysize-6); - - uiBlack(); - uirecti(0+7,0+7,sxsize-7,sysize-7); - - uiDkGray(); - uimove2i(0+1,0+1); uidraw2i(sxsize-1,0+1); uiendline(); - uimove2i(0+2,0+2); uidraw2i(sxsize-2,0+2); uiendline(); - uimove2i(0+3,0+3); uidraw2i(sxsize-3,0+3); uiendline(); - - drawrestore(); -} -#endif diff --git a/lib/glut-3.7.6/lib/mui/mui.c b/lib/glut-3.7.6/lib/mui/mui.c deleted file mode 100644 index 3d6afb44bdbffa333569e923de9db21891170103..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/mui.c +++ /dev/null @@ -1,638 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include - -extern int activemenu; -extern int menuinuse; - -static muiObject *newmuiobj(void) -{ - muiObject *newobj = (muiObject *)malloc(sizeof(muiObject)); - newobj->active = 0; - newobj->enable = 1; - newobj->select = 0; - newobj->locate = 0; - newobj->visible = 1; - newobj->callback = 0; - muiSetUIList(newobj, muiGetActiveUIList()); - muiAddToUIList(muiGetActiveUIList(), newobj); - newobj->id = 0; - return newobj; -} - -muiObject *muiNewPulldown(void) -{ - muiObject *newPD = newmuiobj(); - newPD->type = MUI_PULLDOWN; - newPD->xmin = 0; - newPD->ymin = glutGet(GLUT_WINDOW_HEIGHT) - PULLDOWN_HEIGHT; - newPD->xmax = glutGet(GLUT_WINDOW_WIDTH); - newPD->ymax = glutGet(GLUT_WINDOW_HEIGHT); - newPD->object = (void *)newpd(); - newPD->handler = pdhandler; - return newPD; -} - -muiObject *muiNewButton(int xmin, int xmax, int ymin, int ymax) -{ - muiObject *newb = newmuiobj(); - newb->type = MUI_BUTTON; - newb->xmin = xmin; - newb->ymin = ymin; - newb->xmax = xmax; - newb->ymax = ymax; - newb->object = (void *)newbut(); - ((Button *)(newb->object))->object = newb; - newb->handler = buttonhandler; - return newb; -} - -muiObject *muiNewRadioButton(int xmin, int ymin) -{ - muiObject *newb = newmuiobj(); - newb->type = MUI_RADIOBUTTON; - newb->xmin = xmin; - newb->ymin = ymin; - newb->xmax = xmin+ RADIOWIDTH-1; - newb->ymax = ymin+RADIOHEIGHT-1; - newb->object = (void *)newradiobut(); - ((Button *)(newb->object))->object = newb; - newb->handler = buttonhandler; - return newb; -} - -muiObject *muiNewTinyRadioButton(int xmin, int ymin) -{ - muiObject *newb = newmuiobj(); - newb->type = MUI_TINYRADIOBUTTON; - newb->xmin = xmin; - newb->ymin = ymin; - newb->xmax = xmin+ TINYRADIOWIDTH-1; - newb->ymax = ymin+ TINYRADIOHEIGHT-1; - newb->object = (void *)newradiobut(); - ((Button *)(newb->object))->object = newb; - newb->handler = buttonhandler; - return newb; -} - -muiObject *muiNewVSlider(int xmin, int ymin, int ymax, int scenter, int shalf) -{ - muiObject *newvsl = newmuiobj(); - newvsl->type = MUI_VSLIDER; - newvsl->xmin = xmin; - newvsl->ymin = ymin; - newvsl->xmax = xmin+SLIDERWIDTH-1; - newvsl->ymax = ymax; - newvsl->object = (void *)newvs(newvsl, ymin, ymax, scenter, shalf); - newvsl->handler = vshandler; - return newvsl; -} - -muiObject *muiNewHSlider(int xmin, int ymin, int xmax, int scenter, int shalf) -{ - muiObject *newhsl = newmuiobj(); - newhsl->type = MUI_HSLIDER; - newhsl->xmin = xmin; - newhsl->ymin = ymin; - newhsl->xmax = xmax; - newhsl->ymax = ymin+SLIDERWIDTH-1; - newhsl->object = (void *)newhs(newhsl, xmin, xmax, scenter, shalf); - newhsl->handler = hshandler; - return newhsl; -} - -muiObject *muiNewTextList(int xmin, int ymin, int xmax, int listheight) -{ - muiObject *newtlo = newmuiobj(); - newtlo->type = MUI_TEXTLIST; - newtlo->xmin = xmin; - newtlo->ymin = ymin; - newtlo->xmax = xmax; - newtlo->object = (void *)newtl(newtlo, listheight); - newtlo->handler = tlhandler; - return newtlo; -} - -muiObject *muiNewLabel(int xmin, int ymin, char *label) -{ - muiObject *newlbl = newmuiobj(); - newlbl->type = MUI_LABEL; - newlbl->xmin = xmin; - newlbl->ymin = ymin; - /* XXX maximums */ - newlbl->object = (void *)newlabel(label); - newlbl->handler = nullhandler; - return newlbl; -} - -muiObject *muiNewBoldLabel(int xmin, int ymin, char *label) -{ - muiObject *newlbl = newmuiobj(); - newlbl->type = MUI_BOLDLABEL; - newlbl->xmin = xmin; - newlbl->ymin = ymin; - /* XXX maximums */ - newlbl->object = (void *)newlabel(label); - newlbl->handler = nullhandler; - return newlbl; -} - -muiObject *muiNewTextbox(int xmin, int xmax, int ymin) -{ - muiObject *newtextbox = newmuiobj(); - newtextbox->type = MUI_TEXTBOX; - newtextbox->xmin = xmin; - newtextbox->ymin = ymin; - newtextbox->xmax = xmax; - newtextbox->ymax = ymin + TEXTBOXHEIGHT - 1; - newtextbox->object = (void *)newtb(xmin, xmax); - newtextbox->handler = textboxhandler; - return newtextbox; -} - -void muiGetObjectSize(muiObject *obj, int *xmin, int *ymin, int *xmax, int *ymax) -{ - *xmin = obj->xmin; - *xmax = obj->xmax; - *ymin = obj->ymin; - *ymax = obj->ymax; -} - -void muiFreeObject(muiObject *obj) -{ - switch (obj->type) { - case MUI_BUTTON: - case MUI_RADIOBUTTON: - case MUI_TINYRADIOBUTTON: - case MUI_VSLIDER: - case MUI_HSLIDER: - case MUI_TEXTBOX: - case MUI_TEXTLIST: - case MUI_PULLDOWN: - free(obj->object); - break; - case MUI_LABEL: - case MUI_BOLDLABEL: - break; - } - free(obj); -} - -void muiSetID(muiObject *obj, int id) -{ - obj->id = id; -} - -int muiGetID(muiObject *obj) -{ - return obj->id; -} - -void muiSetCallback(muiObject *obj, void (*callback)(muiObject *, enum muiReturnValue)) -{ - obj->callback = callback; -} - -int muiInObject(muiObject *obj, int x, int y) -{ - if (obj->xmin <= x && x <= obj->xmax && obj->ymin <= y && y <= obj->ymax) - return 1; - return 0; -} - -int muiGetLocate(muiObject *obj) -{ - return obj->locate; -} - -void muiSetLocate(muiObject *obj, int state) -{ - obj->locate = (short) state; -} - -int muiGetSelect(muiObject *obj) -{ - return obj->select; -} - -void muiSetUIList(muiObject *obj, int list) -{ - obj->uilist = list; -} - -int muiGetUIList(muiObject *obj) -{ - return obj->uilist; -} - -void muiSetSelect(muiObject *obj, int state) -{ - obj->select = (short) state; -} - -int muiGetVisible(muiObject *obj) -{ - return obj->visible; -} - -void muiSetVisible(muiObject *obj, int state) -{ - obj->visible = (short) state; -} - -int muiGetActive(muiObject *obj) -{ - return obj->active; -} - -void muiSetActive(muiObject *obj, int state) -{ - obj->active = (short) state; -} - -int muiGetEnable(muiObject *obj) -{ - return obj->enable; -} - -void muiSetEnable(muiObject *obj, int state) -{ - obj->enable = (short) state; -} - -void muiDrawObject(muiObject *obj) -{ - switch (obj->type) { - case MUI_BUTTON: - drawbut(obj); - break; - case MUI_RADIOBUTTON: - drawradiobutton(obj); - break; - case MUI_TINYRADIOBUTTON: - drawtinyradio(obj); - break; - case MUI_LABEL: - drawlabel(obj); - break; - case MUI_BOLDLABEL: - drawboldlabel(obj); - break; - case MUI_TEXTBOX: - drawtb(obj); - break; - case MUI_VSLIDER: - drawvs(obj); - break; - case MUI_HSLIDER: - drawhs(obj); - break; - case MUI_TEXTLIST: - drawtl(obj); - break; - case MUI_PULLDOWN: - drawpulldown(obj); - break; - } -} - -void muiError(char *s) -{ - fprintf(stderr, "%s\n", s); - exit(0); -} - -#define MAX_UI_LISTS 50 -static muiCons *muilist[MAX_UI_LISTS]; -static int muilistindex[MAX_UI_LISTS]; - -void muiNewUIList(int listid) -{ - static int inited = 0; - int i; - - if (inited == 0) { - inited = 1; - for (i = 1; i < MAX_UI_LISTS; i++) - muilistindex[i] = -1; - muilistindex[0] = listid; - muiSetActiveUIList(listid); - return; - } - for (i = 0; i < MAX_UI_LISTS; i++) - if (muilistindex[i] == -1) { - muilistindex[i] = listid; - muiSetActiveUIList(listid); - return; - } - muiError("muiNewUIList: No more UI lists available"); -} - -int muiGetListId(int uilist) -{ - int i; - - for (i = 0; i < MAX_UI_LISTS; i++) { - if (muilistindex[i] == uilist) return i; - } - muiError("muiAddToUIList: illegal UI list identifier"); - return -1; -} - -muiCons *muiGetListCons(int uilist) -{ - int i; - - for (i = 0; i < MAX_UI_LISTS; i++) { - if (muilistindex[i] == uilist) return muilist[i]; - } - muiError("muiGetListCons: illegal UI list identifier"); - return (muiCons *)0; -} - -void muiAddToUIList(int uilist, muiObject *obj) -{ - int i; - muiCons *mcons; - - if (uilist == 0) { - muiError("muiAddToUIList: no active UI list"); - } - if ((i = muiGetListId(uilist)) == -1) return; - mcons = (muiCons *)malloc(sizeof(muiCons)); - mcons->next = muilist[i]; - muilist[i] = mcons; - mcons->object = obj; -} - -static muiObject *muiFastHitInList(muiCons *mcons, int x, int y) -{ - while (mcons) { - if (muiInObject(mcons->object, x, y)) - switch (mcons->object->type) { - case MUI_BUTTON: - case MUI_TEXTBOX: - case MUI_VSLIDER: - case MUI_HSLIDER: - case MUI_TEXTLIST: - case MUI_RADIOBUTTON: - case MUI_TINYRADIOBUTTON: - case MUI_PULLDOWN: - return mcons->object; - case MUI_LABEL: - case MUI_BOLDLABEL: - return 0; - } - mcons = mcons->next; - } - return (muiObject *)0; /* not found */ -} - -muiObject *muiHitInList(int uilist, int x, int y) -{ - muiCons *mcons; - - if ((mcons = muiGetListCons(uilist)) == (muiCons *)0) return (muiObject *)0; - return muiFastHitInList(mcons, x, y); -} - -void muiDrawUIList(int uilist) -{ - muiCons *mcons; - - if ((mcons = muiGetListCons(uilist)) == (muiCons *)0) return; - muiBackgroundClear(); - while (mcons) { - muiDrawObject(mcons->object); - mcons = mcons->next; - } -} - -static muiObject *SelectedObj, *LocatedObj; -static muiCons *ActiveCons; -static int ActiveUIList = 0; -static muiObject *ActiveSlider = 0; - -void muiSetActiveUIList(int i) -{ - ActiveUIList = i; -} - -int muiGetActiveUIList(void) -{ - return ActiveUIList; -} - -static void muiInitInteraction(int uilist) -{ - muiCons *mcons; - muiObject *obj; - - if ((mcons = muiGetListCons(uilist)) == (muiCons *)0) return; - SelectedObj = LocatedObj = (muiObject *)0; - ActiveCons = mcons; - ActiveUIList = uilist; - while (mcons) { - obj = mcons->object; - muiSetSelect(obj, 0); - muiSetLocate(obj, 0); - mcons = mcons->next; - } -} - -static void (*noncallback)(int, int) = 0; - -static void nonmuicallback(int x, int y) -{ - if (noncallback == 0) return; - noncallback(x, y); -} - -void muiSetNonMUIcallback(void (*nc)(int, int)) -{ - noncallback = nc; -} - -void muiHandleEvent(int event, int value, int x, int y) -{ - muiObject *obj; - static int lastactive = 0; - enum muiReturnValue retval; - - if (ActiveUIList == 0) { - muiError("muiHandleEvent: no active UI list"); - } - if (lastactive != ActiveUIList) { - muiInitInteraction(lastactive = ActiveUIList); - } - if ((event == MUI_KEYSTROKE)) { - if (obj = muiGetActiveTB()) { - retval = (obj->handler)(obj, event, value, x, y); - if (retval && obj->callback) - (obj->callback)(obj, retval); - return; - } - /* may have to add text editors, et cetera */ - return; - } - if (event == MUI_DEVICE_RELEASE && ActiveSlider) { - retval = (ActiveSlider->handler)(ActiveSlider, event, value, x, y); - if (retval && ActiveSlider->callback) - (ActiveSlider->callback)(ActiveSlider, retval); - ActiveSlider = 0; - return; - } - ActiveCons = muiGetListCons(ActiveUIList); - obj = muiFastHitInList(ActiveCons, x, y); - if (obj == 0 && event == MUI_DEVICE_PRESS) { - nonmuicallback(x, y); - return; - } - if (event == MUI_DEVICE_UP && (!menuinuse) && (activemenu != -1) && (obj == 0 || obj->type != MUI_PULLDOWN)) { - activemenu = -1; - glutDetachMenu(GLUT_LEFT_BUTTON); - } - if (obj && (obj->type == MUI_VSLIDER || obj->type == MUI_HSLIDER) - && event == MUI_DEVICE_PRESS) - ActiveSlider = obj; - if (obj == 0) { - if (ActiveSlider) { - retval = (ActiveSlider->handler)(ActiveSlider, event, value, x, y); - if (retval && ActiveSlider->callback) - (ActiveSlider->callback)(ActiveSlider, retval); - return; - } - if (LocatedObj) { - muiSetLocate(LocatedObj, 0); - muiDrawObject(LocatedObj); - LocatedObj = 0; - } - if ((event == MUI_DEVICE_RELEASE) && SelectedObj) { - muiSetSelect(SelectedObj, 0); - muiSetLocate(SelectedObj, 0); - muiDrawObject(SelectedObj); - LocatedObj = SelectedObj = 0; - } - return; - } - retval = (obj->handler)(obj, event, value, x, y); - if (retval && obj->callback) - (obj->callback)(obj, retval); - return; -} - -/* ARGSUSED2 */ -enum muiReturnValue buttonhandler(muiObject *obj, int event, int value, int x, int y) -{ - if (!muiGetEnable(obj) || !muiGetVisible(obj)) return MUI_NO_ACTION; - - switch (event) { - case MUI_DEVICE_DOWN: - return MUI_NO_ACTION; - case MUI_DEVICE_UP: - if (LocatedObj != obj) { - if (LocatedObj) { - muiSetLocate(LocatedObj, 0); - muiDrawObject(LocatedObj); - } - muiSetLocate(obj, 1); - muiDrawObject(obj); - LocatedObj = obj; - } - return MUI_NO_ACTION; - case MUI_DEVICE_PRESS: - muiSetSelect(obj, 1); - muiSetLocate(obj, 1); - SelectedObj = LocatedObj = obj; - muiDrawObject(obj); - return MUI_NO_ACTION; - case MUI_DEVICE_RELEASE: - if (SelectedObj != obj) { - muiSetSelect(SelectedObj, 0); - muiSetLocate(SelectedObj, 0); - muiDrawObject(SelectedObj); - muiSetLocate(obj, 1); - LocatedObj = obj; - muiDrawObject(obj); - return MUI_NO_ACTION; - } - if (obj->type == MUI_RADIOBUTTON || obj->type == MUI_TINYRADIOBUTTON) { - Button *b = (Button *)obj->object, *b1; - if (b->link) { - muiSetActive(obj, 1); - b1 = b->link; - while (b1 != b) { - muiSetActive(b1->object, 0); - b1 = b1->link; - } - } else { - muiSetActive(obj, ( muiGetActive(obj) ? 0 : 1 ) ); - } - } - muiSetSelect(obj, 0); - muiDrawObject(obj); - return MUI_BUTTON_PRESS; - case MUI_DEVICE_CLICK: - muiSetSelect(obj, 0); - muiSetLocate(obj, 1); - LocatedObj = obj; - muiDrawObject(obj); - return MUI_BUTTON_PRESS; - case MUI_DEVICE_DOUBLE_CLICK: - muiSetSelect(obj, 0); - muiSetLocate(obj, 1); - LocatedObj = obj; - muiDrawObject(obj); - return MUI_BUTTON_PRESS; /* XXX this may not be right; */ - case MUI_KEYSTROKE: - return MUI_NO_ACTION; - default: - muiError("buttonhandler: wacko event"); - return MUI_NO_ACTION; - } -} - -/* ARGSUSED */ -enum muiReturnValue nullhandler(muiObject *obj, int event, int value, int x, int y) -{ - return MUI_NO_ACTION; -} - diff --git a/lib/glut-3.7.6/lib/mui/mui.dsp b/lib/glut-3.7.6/lib/mui/mui.dsp deleted file mode 100644 index 9d4032770493ac94f8615a605836fee3d27b9220..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/mui.dsp +++ /dev/null @@ -1,137 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mui" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mui - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mui.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mui.mak" CFG="mui - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mui - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mui - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mui - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "mui - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "mui - Win32 Release" -# Name "mui - Win32 Debug" -# Begin Source File - -SOURCE=.\browseparse.c -# End Source File -# Begin Source File - -SOURCE=.\browser.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=.\button.c -# End Source File -# Begin Source File - -SOURCE=.\displaylist.c -# End Source File -# Begin Source File - -SOURCE=.\gizmo.c -# End Source File -# Begin Source File - -SOURCE=.\glutmui.c -# End Source File -# Begin Source File - -SOURCE=.\hslider.c -# End Source File -# Begin Source File - -SOURCE=.\miscui.c -# End Source File -# Begin Source File - -SOURCE=.\mui.c -# End Source File -# Begin Source File - -SOURCE=.\pulldown.c -# End Source File -# Begin Source File - -SOURCE=.\textlist.c -# End Source File -# Begin Source File - -SOURCE=.\uicolor.c -# End Source File -# Begin Source File - -SOURCE=.\vslider.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/lib/mui/pulldown.c b/lib/glut-3.7.6/lib/mui/pulldown.c deleted file mode 100644 index 6ae8489d301e59b9e9462e0526df106d044ef947..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/pulldown.c +++ /dev/null @@ -1,469 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include -#include -#include - -/* M E N U B A R F U N C T I O N S */ - -Pulldown *newpd(void) -{ - Pulldown *pd = (Pulldown *)malloc(sizeof(Pulldown)); - pd->count = 0; - return pd; -} - -void muiAddPulldownEntry(muiObject *obj, char *title, int menu, int ishelp) -{ - Pulldown *pd = (Pulldown *)obj->object; - int space = obj->xmax - obj->xmin - 66; - int i, delta; - - if (ishelp) { - strcpy(pd->helpmenu.title, title); - pd->ishelp = 1; - pd->helpmenu.xoffset = obj->xmax - 58; - pd->helpmenu.menu = menu; - return; - } - if (pd->count == 29) muiError("muiAddPulldownEntry: more than 29 entries"); - strcpy(pd->menus[pd->count].title, title); - pd->menus[pd->count].menu = menu; - pd->count++; - /* now recalculate spacings */ - if (space > 50*pd->count) { - for (i = 0; i <= pd->count; i++) - pd->menus[i].xoffset = 8 + i*50; - } else { - delta = space/pd->count; - for (i = 0; i <= pd->count; i++) - pd->menus[i].xoffset = 8 + i*delta; - } -} - -int activemenu = -1; -extern int menuinuse; - -/* ARGSUSED2 */ -enum muiReturnValue pdhandler(muiObject *obj, int event, int value, int x, int y) -{ - int i; - Pulldown *pd = (Pulldown *)obj->object; - - if( !muiGetEnable(obj) || !muiGetVisible(obj) ) return MUI_NO_ACTION; - - if (event == MUI_DEVICE_UP) { - for (i = 0; i < pd->count; i++) - if (pd->menus[i].xoffset-8 < x && x < pd->menus[i+1].xoffset-8) { - if (activemenu != pd->menus[i].menu && !menuinuse) { - glutSetMenu(activemenu = pd->menus[i].menu); - glutAttachMenu(GLUT_LEFT_BUTTON); - } - return MUI_NO_ACTION; - } - if (pd->ishelp && (x > pd->helpmenu.xoffset-8)) { - if ((activemenu != pd->helpmenu.menu) && !menuinuse) { - glutSetMenu(activemenu = pd->helpmenu.menu); - glutAttachMenu(GLUT_LEFT_BUTTON); - } - return MUI_NO_ACTION; - } - if (activemenu && !menuinuse) { - glutDetachMenu(GLUT_LEFT_BUTTON); - activemenu = -1; - } - } - return MUI_NO_ACTION; -} - -void drawpulldown(muiObject *obj) -{ - int i; - int xmin, xmax, ymin, ymax; - - if (!muiGetVisible(obj)) - return; - - drawsetup(); - - xmin = obj->xmin; - ymin = obj->ymin; - xmax = obj->xmax; - ymax = obj->ymax; - - drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiVyDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiDkGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiVyLtGray,uiMmGray); - drawedges(xmin++,xmax--,ymin++,ymax--,uiVyLtGray,uiMmGray); - - uiLtGray(); - uirectfi(xmin,ymin,xmax,ymax); - - if (obj->object) { - Pulldown *pd = (Pulldown *)obj->object; - - for (i = 0; i < pd->count; i++) { - if (muiGetEnable(obj)) uiBlack(); else uiDkGray(); - uicmov2i(obj->xmin + pd->menus[i].xoffset, obj->ymin + 8); - uicharstr(pd->menus[i].title, UI_FONT_NORMAL); - } - if (pd->ishelp) { - if(muiGetEnable(obj)) uiBlack(); else uiDkGray(); - uicmov2i(obj->xmin + pd->helpmenu.xoffset, obj->ymin + 8); - uicharstr(pd->helpmenu.title, UI_FONT_NORMAL); - } - } - - drawrestore(); -} - -#ifdef NOTDEF - -/* static variables */ -static int offrightside; -static PullDown *basepd; -static int menubut; -static int menuretval; -static int inpdmode = 0; -static int indopd = 0; -static int savep; -static short savedev[SAVELEN]; -static short saveval[SAVELEN]; - -extern MenuBar *locatedmb; - -static short pdinit = 0; - -void movemenubar(muiObject *obj) -{ - int i, tx = MENUXENDGAP-9, totaltwidth = 0; - int xsize, ysize, width; - - mb->xmin = mb->xorg; - mb->xmax = mb->xorg+xsize-1; - mb->ymin = mb->yorg+ysize-MENUBARHEIGHT; - mb->ymax = mb->yorg+ysize-1; - - width = mb->xmax - mb->xmin + 1; - - font(PULLDOWNFONT); /* for correct strwidths */ - for (i = 0; i < mb->count; i++) - totaltwidth += strwidth(mb->pds[i]->title) + 2*MENUXENDGAP; - - for (i = 0; i < mb->count; i++) { - if (mb->pds[i]->title) - mb->pds[i]->twidth = strwidth(mb->pds[i]->title); - if ((mb->pds[i]->title) && (!strcmp(mb->pds[i]->title,"Help"))) - mb->pds[i]->txorg = mb->xmax-MENUXENDGAP-mb->pds[i]->twidth-MENUXGAP; - else - mb->pds[i]->txorg = mb->xmin + tx; - mb->pds[i]->xorg = mb->pds[i]->txorg; - mb->pds[i]->yorg = mb->ymin-TITLESEP; - mb->pds[i]->orglocked = 1; - mb->pds[i]->mb = mb; - - if (totaltwidth > width) - tx += (width-2*MENUXENDGAP)/mb->count-2; - else - tx += mb->pds[i]->twidth+24; - } -} - -MenuBar *newmenubar(void) -{ - MenuBar *mb; - - mb = (MenuBar *)calloc(1,sizeof(MenuBar)); - mb->count = 0; - mb->pds = 0; - mb->locate = -1; - mb->enable = 1; - mb->invisible = 0; - - return mb; -} - -/* ENABLE STATE FUNCTIONS FOR MENU BARS */ - -void enablemb(MenuBar *mb) -{ - if (mb->enable) - return; - mb->enable = 1; -} - -void disablemb(MenuBar *mb) -{ - if (!mb->enable) - return; - mb->enable = 0; -} - -short getenablemb(MenuBar *mb) -{ - return mb->enable; -} - -/* LOCATE STATE FUNCTIONS FOR MENU BARS */ - -short gethighlightmb(MenuBar *mb) -{ - return mb->locate; -} - -void highlightmb(MenuBar *mb, int pdnum) -{ - short oldpdnum = mb->locate; - - if (mb->locate == pdnum) - return; - mb->locate = pdnum; - locatedmb = mb; - if (!mb->invisible) { - if (pdnum != -1) - drawmenubartext(mb,pdnum); - if (oldpdnum != -1) - drawmenubartext(mb,oldpdnum); - } -} - -void unhighlightmb(MenuBar *mb) -{ - short oldpdnum = mb->locate; - - if (mb->locate == -1) - return; - mb->locate = -1; - if (locatedmb == mb) - locatedmb = 0; - if (!mb->invisible) - if (oldpdnum != -1) - drawmenubartext(mb,oldpdnum); -} - -/* VISIBLE STATE FUNCTIONS */ - -void makevisiblemb(MenuBar *mb) -{ - if (!mb->invisible) - return; - mb->invisible = 0; -} - -void makeinvisiblemb(MenuBar *mb) -{ - if (mb->invisible) - return; - mb->invisible = 1; -} - -short getvisiblemb(MenuBar *mb) -{ - return 1-mb->invisible; -} - -void loadmenubar(MenuBar *mb, int menucount, PullDown **pdarray) -{ - int i; - - drawsetup(); - - mb->count = menucount; - mb->pds = (PullDown **)calloc(menucount,sizeof(PullDown)); - mb->locate = -1; - mb->enable = 1; - mb->invisible = 0; - - for (i = 0; i < mb->count; i++){ - mb->pds[i] = pdarray[i]; - } - movemenubar(mb); - - drawrestore(); -} - -void addtomenubar(MenuBar *mb, PullDown *pd) -{ - PullDown **pds; - int i; - - mb->count++; - pds = (PullDown **)calloc(mb->count,sizeof(PullDown)); - - for (i = 0; i < mb->count-1; i++){ - pds[i] = mb->pds[i]; - } - pds[i] = pd; - - free(mb->pds); - mb->pds = pds; -} - -void addtopd(PullDown *pd, MenuItem *mi) -{ - MenuItem *m, *tail; - - tail = pd->entries; - - if (tail) { - while (tail->next) - tail = tail->next; - tail->next = mi; - } else - tail = pd->entries = mi; - - m = pd->entries; - - while (m) { - pd->nentries++; - m->no = pd->nentries; - m = m->next; - } - - fixuppd(pd); -} - -void removefrommenubar(MenuBar *mb, PullDown *pd) -{ - PullDown **pds; - int i, j; - - mb->count--; - pds = (PullDown **)calloc(mb->count,sizeof(PullDown)); - - for (i = 0,j = 0; i <= mb->count; i++) { - if (mb->pds[i] != pd) { - pds[j] = mb->pds[i]; - j++; - } - } - - free(mb->pds); - mb->pds = pds; -} - -void movemenubar(MenuBar *mb) -{ - int i, tx = MENUXENDGAP-9, totaltwidth = 0; - int xsize, ysize, width; - - getorigin(&mb->xorg, &mb->yorg); - getsize(&xsize, &ysize); - mb->xmin = mb->xorg; - mb->xmax = mb->xorg+xsize-1; - mb->ymin = mb->yorg+ysize-MENUBARHEIGHT; - mb->ymax = mb->yorg+ysize-1; - - width = mb->xmax - mb->xmin + 1; - - font(PULLDOWNFONT); /* for correct strwidths */ - for (i = 0; i < mb->count; i++) - totaltwidth += strwidth(mb->pds[i]->title) + 2*MENUXENDGAP; - - for (i = 0; i < mb->count; i++) { - if (mb->pds[i]->title) - mb->pds[i]->twidth = strwidth(mb->pds[i]->title); - if ((mb->pds[i]->title) && (!strcmp(mb->pds[i]->title,"Help"))) - mb->pds[i]->txorg = mb->xmax-MENUXENDGAP-mb->pds[i]->twidth-MENUXGAP; - else - mb->pds[i]->txorg = mb->xmin + tx; - mb->pds[i]->xorg = mb->pds[i]->txorg; - mb->pds[i]->yorg = mb->ymin-TITLESEP; - mb->pds[i]->orglocked = 1; - mb->pds[i]->mb = mb; - - if (totaltwidth > width) - tx += (width-2*MENUXENDGAP)/mb->count-2; - else - tx += mb->pds[i]->twidth+24; - } -} - -int inmenubar(MenuBar *mb, int mx, int my) /* Window coordinates */ -{ - int i; - - if (!getenablemb(mb)) - return -1; - - if (getdrawmode() == NORMALDRAW) { - mx += mb->xorg; - my += mb->yorg; - } - if (mb->xmin <= mx && mx <= mb->xmax && - mb->ymin+2 <= my && my <= mb->ymax-2) /* +-2 for locate highlight*/ - for (i = 0; i < mb->count; i++) { - if ((mx >= mb->pds[i]->txorg) && - (mx <= mb->pds[i]->txorg+mb->pds[i]->twidth+MENUXGAP*2)) - return i; - } - return -1; -} - -short locatemenubar(MenuBar *mb, int mx, int my) /* window coordinates */ -{ - int highlight = gethighlightmb(mb); - int inmb = inmenubar(mb,mx,my); - - if (!getenablemb(mb) || !getvisiblemb(mb) || (highlight == inmb)) - return 0; - if (inmb != -1) { - unlocateall(); - highlightmb(mb,inmb); - return 1; - } else { - unhighlightmb(mb); - return 0; - } -} - -/* DRAWING MENUBAR FUNCTIONS */ - -void drawmenubarnow(MenuBar *mb) -{ - uifrontbuffer(1); - drawmenubar(mb); - uifrontbuffer(0); -} - - -#endif /* NOTDEF */ diff --git a/lib/glut-3.7.6/lib/mui/textlist.c b/lib/glut-3.7.6/lib/mui/textlist.c deleted file mode 100644 index 929e85ec795fdc65873b7143a17cd392ac05d2a2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/textlist.c +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Copyright (c) 1990,1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -extern short sharefont1; - -extern TextList *locatedtl; - -int gettlheightcount(int ymin, int ymax) -{ - if (ymin > ymax) { - int tmp = ymin; - ymin = ymax; - ymax = tmp; - } - return ((ymax-ymin+1-7)/TEXTHEIGHT); -} - -void movetl(TextList *tl, int ymin, int ymax) -{ - tl->listheight = gettlheightcount(ymin, ymax); -} - -int gettextlistheight(int count) -{ - return (count*TEXTHEIGHT+7); -} - -TextList *newtl(muiObject *obj, int listheight) -{ - TextList *tl; - - tl = (TextList *)malloc(sizeof(TextList)); - - tl->strs = 0; - tl->top = 0; - tl->selecteditem = -1; - tl->locateditem = -1; - tl->listheight = listheight; - - movetl(tl, obj->ymin, obj->ymax = obj->ymin+gettextlistheight(listheight)); - - return tl; -} - -void resettl(TextList *tl) -{ - tl->selecteditem = -1; - tl->top = 0; -} - -void drawtl(muiObject *obj) -{ - TextList *tl = (TextList *)obj->object; - int xmin = obj->xmin, xmax = obj->xmax, - ymin = obj->ymin, ymax = obj->ymax; - int item = 0, ybot, xright; - char **s = &tl->strs[tl->top]; - - if (!muiGetVisible(obj)) - return; - - drawsetup(); - - drawedges(xmin++, xmax--, ymin++, ymax--, uiMmGray, uiWhite); - drawedges(xmin++, xmax--, ymin++, ymax--, uiDkGray, uiVyLtGray); - drawedges(xmin++, xmax--, ymin++, ymax--, uiVyDkGray, uiDkGray); - - drawedges(xmin++, xmax--, ymin++, ymax--, uiVyLtGray, uiMmGray); - - uiLtGray(); - uirectfi(xmin, ymin, xmax, ymax); - - uiBlack(); - uipushviewport(); - uiviewport(xmin+3, ymin-1, xmax-xmin-6, ymax-ymin); - if (s) while (*s && item < tl->listheight) { - if (item == tl->selecteditem - tl->top && muiGetEnable(obj)) { - ybot = ymin + 1 + (tl->listheight - item - 1)*TEXTHEIGHT; - xright = xmin + 11 + FONTWIDTH*(int)strlen(*s); - uiWhite(); - uirectfi(xmin+4, ybot, xright, ybot + TEXTHEIGHT - 3); - } - - /* locate highlight */ - if (item == tl->locateditem - tl->top && muiGetEnable(obj)) { - ybot = ymin + 1 + (tl->listheight - item - 1)*TEXTHEIGHT; - xright = xmin + 11 + FONTWIDTH*(int)strlen(*s); - uiWhite(); - uirecti(xmin+3, ybot-1, xright+1, ybot + TEXTHEIGHT - 2); - uirecti(xmin+4, ybot, xright, ybot + TEXTHEIGHT - 3); - } - if (muiGetEnable(obj)) uiBlack(); else uiDkGray(); - uicmov2i(xmin+8, ymin + 6 + (tl->listheight - item - 1)*TEXTHEIGHT); - uicharstr(*s, UI_FONT_NORMAL); - item++; s++; - } - uiBlack(); - uipopviewport(); - drawrestore(); -} - -int muiGetTLSelectedItem(muiObject *obj) -{ - TextList *tl = (TextList *)obj->object; - return tl->selecteditem; -} - -void muiSetTLStrings(muiObject *obj, char **s) -{ - TextList *tl = (TextList *)obj->object; - tl->strs = s; - - tl->count = 0; - while(*s) { - tl->count++; - s++; - } - resettl(tl); - tl->selecteditem = 0; -} - -/* ARGSUSED3 */ -enum muiReturnValue tlhandler(muiObject *obj, int event, int value, int x, int y) -{ - int i; - TextList *tl = (TextList *)obj->object; - - if( !muiGetEnable(obj) || !muiGetVisible(obj) ) return MUI_NO_ACTION; - - if (event == MUI_DEVICE_DOUBLE_CLICK) { - i = (y - obj->ymin - 3)/TEXTHEIGHT; - tl->selecteditem = (tl->listheight - i - 1) + tl->top; - return MUI_TEXTLIST_RETURN_CONFIRM; - } - if (event == MUI_DEVICE_RELEASE) { - i = (y - obj->ymin - 3)/TEXTHEIGHT; - tl->selecteditem = (tl->listheight - i - 1) + tl->top; - return MUI_TEXTLIST_RETURN; - } - if (event == MUI_DEVICE_PRESS || event == MUI_DEVICE_DOWN) { - i = (y - obj->ymin - 3)/TEXTHEIGHT; - tl->selecteditem = (tl->listheight - i - 1) + tl->top; - return MUI_NO_ACTION; - } - return MUI_NO_ACTION; -} - -void muiSetTLTopInt(muiObject *obj, int top) -{ - TextList *tl = (TextList *)obj->object; - if (top < 0) top = 0; - if (top >= tl->count) top = tl->count - 1; - tl->top = top; -} - -void muiSetTLTop(muiObject *obj, float p) -{ - TextList *tl = (TextList *)obj->object; - if (tl->count <= tl->listheight) { tl->top = 0; return; } - tl->top = (1.0-p)*(tl->count + 1 - tl->listheight); -} - - -void settlstrings(TextList *tl, char **s) -{ - tl->strs = s; - - tl->count = 0; - while(*s) { - tl->count++; - s++; - } -} - -#ifdef NOTDEF - -/* SELECT STATE FUNCTIONS */ - -void unselecttl(TextList *tl) -{ - int oldselect = tl->selecteditem; - - if (tl->selecteditem == -1) - return; - tl->selecteditem = -1; - if (!tl->invisible) - if (oldselect != -1) - drawparttl(tl,oldselect); -} - -void selecttlitem(TextList *tl, int item) -{ - int oldselect = tl->selecteditem; - - if (tl->selecteditem == item) - return; - tl->selecteditem = item; - if (!tl->invisible) { - if (tl->selecteditem != -1) - drawparttl(tl,tl->selecteditem); - if (oldselect != -1) - drawparttl(tl,oldselect); - } -} - -short getselectedtlitem(TextList *tl) -{ - return tl->selecteditem; /* returns -1 if none selected */ -} - -void highlighttl(TextList *tl, int item) -{ - int oldhighlight = tl->locateditem; - - if (tl->locateditem == item) - return; - tl->locateditem = item; - locatedtl = tl; - if (!tl->invisible) { - if (tl->locateditem != -1) - drawparttl(tl,tl->locateditem); - if (oldhighlight != -1) - drawparttl(tl,oldhighlight); - } -} - -void unhighlighttl(TextList *tl) -{ - int oldhighlight = tl->locateditem; - - if (tl->locateditem == -1) - return; - tl->locateditem = -1; - if (locatedtl == tl) - locatedtl = 0; - if (!tl->invisible) { - if (oldhighlight != -1) - drawparttl(tl,oldhighlight); - } -} - -short gethighlighttl(TextList *tl) -{ - return tl->locateditem; -} - -void makevisibletl(TextList *tl) -{ - if (!tl->invisible) - return; - tl->invisible = 0; -} - -void makeinvisibletl(TextList *tl) -{ - if (tl->invisible) - return; - tl->invisible = 1; -} - -/* whether or not the text list is showing */ -short getvisibletl(TextList *tl) -{ - return 1-tl->invisible; -} - -/* whether or not the item is showing */ -short getitemvisibletl(TextList *tl, int item) -{ - if ((item < tl->top) || (item >= (tl->top+tl->listheight)) || - (item >= tl->count) || (item == -1)) - return 0; - else - return 1; -} - -short locatetl(TextList *tl, int x, int y) -{ - int highlight = gethighlighttl(tl); - int intextlist = intl(tl,x,y); - - if ((intextlist == highlight) || !getvisibletl(tl)) - return 0; - if (intextlist != -1) { - unlocateall(); - highlighttl(tl,intextlist); - return 1; - } else { - unhighlighttl(tl); - return 0; - } -} - -char *selectedstring(TextList *tl) -{ - if (tl->selecteditem == -1) return 0; - return tl->strs[tl->selecteditem]; -} - -void drawtlnow(TextList *tl) -{ - uifrontbuffer(1); - drawtl(tl); - uifrontbuffer(0); -} - -void drawparttl(TextList *tl,int item) -{ - int xmin = tl->xmin+8, xmax = tl->xmax-8-SLIDERWIDTH; - int ymin = - tl->ymin+5+(tl->listheight - item + tl->top - 1)*TEXTHEIGHT; - int ymax = ymin + TEXTHEIGHT - 3; - char **s; - - if (!getvisibletl(tl) || !getitemvisibletl(tl,item)) - return; - - s = &tl->strs[item]; - drawsetup(); - - uifrontbuffer(1); - - uiLtGray(); - uirectfi(xmin-1, ymin-1, xmax+1, ymax+1); - - font(TEXTLISTFONT); - pushviewport(); - scrmask(xmin-1, xmax+1, ymin-1, ymax+1); - if (s) { - xmax = xmin + 7 + strwidth(*s); - if (item == tl->selecteditem) { - uiWhite(); - uirectfi(xmin, ymin, xmax, ymax); - } - if (item == tl->locateditem) { - uiWhite(); - uirecti(xmin-1, ymin-1, xmax+1, ymax+1); - uirecti(xmin, ymin, xmax, ymax); - } - uiBlack(); - uicmov2i(xmin+4, ymin + 5); - uicharstr(*s); - } - popviewport(); - - uifrontbuffer(0); - - drawrestore(); -} - -void settlstrslinkhandle(char **l, TextList *tl) -{ - int vshalf, d; - float p; - - settlstrings(tl, l); - - if (tl->count <= tl->listheight) { - vshalf = ((tl->listheight*TEXTHEIGHT - 36)/2) - 2; - d = 0; - p = 1.0; - disablevs(tl->vs); - } else { - enablevs(tl->vs); - p = getvsval(tl->vs); - vshalf = tl->listheight*(tl->listheight*TEXTHEIGHT-36)/(2*tl->count); - d = (tl->listheight*TEXTHEIGHT - 2*vshalf)/(tl->count - tl->listheight); - if (d == 0) d = 1; - } - setvsarrowdelta(tl->vs, d); - setvshalf(tl->vs, vshalf); - movevsval(tl->vs, p); -} - -void adjustslider(TextList *tl, VSlider *sl) -{ - setvsval(sl, (float) (1.0 - (float) tl->top/ (float) tl->count)); -} - -short selectedtl(TextList *tl, int x, int y, int val) -{ - if (intl(tl, x, y) == -1) { - if (intlboundaries(tl, x, y)) { - tl->selecteditem = -1; - drawtlnow(tl); - } - } else { - if (val == UIBUTTONUP) return 0; - return handletl(tl, LEFTMOUSE, val); - } - return 0; -} - -#endif /* NOTDEF */ diff --git a/lib/glut-3.7.6/lib/mui/uicolor.c b/lib/glut-3.7.6/lib/mui/uicolor.c deleted file mode 100644 index 83c4afcee863a409dfcea776b51cf7130b8de027..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/uicolor.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1990,1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include - -#define MKRGB(r, g, b) ((((r)&0xff)<<0) | (((g)&0xff)<<8) | (((b)&0xff)<<16)) -extern short ditherflag; - -void uiBlack(void) -{ - glColor3f(0.0, 0.0, 0.0); -} - -void uiWhite(void) -{ - glColor3f(1.0, 1.0, 1.0); -} - -void uiLtGray(void) -{ - glColor3f(170.0/255.0, 170.0/255.0, 170.0/255.0); -} - -void uiDkGray(void) -{ - glColor3f(85.0/255.0, 85.0/255.0, 85.0/255.0); -} - -void uiSlateBlue(void) -{ - glColor3f(113.0/255.0, 113.0/255.0, 198.0/255.0); -} - -void uiBlue(void) -{ - glColor3f(0.0, 0.0, 1.0); -} - -void uiBackground(void) -{ - uiVyLtGray(); -} - -void uiVyDkGray(void) -{ - glColor3f(40.0/255.0, 40.0/255.0, 40.0/255.0); -} - -void uiMmGray(void) -{ - glColor3f(132.0/255.0, 132.0/255.0, 132.0/255.0); -} - -void uiVyLtGray(void) -{ - glColor3f(214.0/255.0, 214.0/255.0, 214.0/255.0); -} - -void uiTerraCotta(void) -{ - glColor3f(198.0/255.0, 113.0/255.0, 113.0/255.0); -} - -void uiYellow(void) -{ - glColor3f(1.0, 1.0, 0.0); -} - -void uiDkYellow(void) -{ - glColor3f(0x47/255.0, 0x72/255.0, 0x72/255.0); -} - -void uiMmYellow(void) -{ - glColor3f(0x38/255.0, 0xc7/255.0, 0xc7/255.0); -} - -void uiLtYellow(void) -{ - glColor3f(0x80/255.0, 0xff/255.0, 0xff/255.0); -} - -/* -void uiPupBlack(void) -{ - color(PUP_BLACK); -} - -void uiPupWhite(void) -{ - color(PUP_WHITE); -} - -void uiPupGray(void) -{ - color(PUP_COLOR); -} - -void uiPupClear(void) -{ - color(PUP_CLEAR); -} -*/ diff --git a/lib/glut-3.7.6/lib/mui/vslider.c b/lib/glut-3.7.6/lib/mui/vslider.c deleted file mode 100644 index 1b08b69e9f0674fe18bccf28b75f1a35b0601c7f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/lib/mui/vslider.c +++ /dev/null @@ -1,490 +0,0 @@ -/* - * Copyright (c) 1990,1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include -#include - -extern VSlider *locatedvs; - -int getvstrough(muiObject *obj) -{ - return obj->ymax - obj->ymin - 2*ARROWHEIGHT; -} - -void setvscenter(muiObject *obj, int scenter) -{ - VSlider *vs = (VSlider *)obj->object; - if ((scenter - vs->shalf) < (obj->ymin+ARROWHEIGHT)) - vs->scenter = getvstrough(obj)/2 + obj->ymin+ARROWHEIGHT; - else - vs->scenter = scenter; -} - -void muiSetVSArrowDelta(muiObject *obj, int newd) -{ - VSlider *vs = (VSlider *)obj->object; - vs->arrowdelta = newd; -} - -VSlider *newvs(muiObject *obj, int ymin, int ymax, int scenter, int shalf) -{ - VSlider *vs; - - vs = (VSlider *)malloc(sizeof(VSlider)); - obj->object = (VSlider *)vs; - if (shalf == 0) { - vs->shalf = 0; - } else if (shalf < MINSHALF) - vs->shalf = MINSHALF; - else - vs->shalf = shalf; - - if ((ymax - ymin + 1) <= (2*ARROWHEIGHT+2*MINSHALF)) - vs->thumb = 0; - else - vs->thumb = 1; - - setvscenter(obj, scenter); - vs->oldpos = vs->scenter; - - muiSetVSArrowDelta(obj, 1); - return vs; -} - -void freevs(VSlider *vs) -{ - if (vs) { - free(vs); - } -} - -void drawvsarrows(muiObject *obj) -{ - int xmin = obj->xmin, xmax = obj->xmin+ARROWHEIGHT, - ymin = obj->ymin, ymax = obj->ymax; - - if (!muiGetVisible(obj)) - return; - - /* Draw the arrows: */ - - /* down arrow */ - uiDkGray(); - uirecti(xmin,ymin,xmax,ymin+20); - - if (muiGetVisible(obj)) { - if (obj->locate == SCROLLDOWN) { - if (obj->select == SCROLLDOWN) { - drawedges(xmin+1,xmax-1,ymin+1,ymin+19,uiMmGray,uiWhite); - drawedges(xmin+2,xmax-2,ymin+2,ymin+18,uiLtGray,uiWhite); - } else { - drawedges(xmin+1,xmax-1,ymin+1,ymin+19,uiWhite,uiMmGray); - drawedges(xmin+2,xmax-2,ymin+2,ymin+18,uiWhite,uiLtGray); - } - uiVyLtGray(); - uirectfi(xmin+3,ymin+3,xmax-3,ymin+17); - } else { - if (obj->select == SCROLLDOWN) { - drawedges(xmin+1,xmax-1,ymin+1,ymin+19,uiMmGray,uiVyLtGray); - drawedges(xmin+2,xmax-2,ymin+2,ymin+18,uiMmGray,uiVyLtGray); - } else { - drawedges(xmin+1,xmax-1,ymin+1,ymin+19,uiWhite,uiMmGray); - drawedges(xmin+2,xmax-2,ymin+2,ymin+18,uiVyLtGray,uiMmGray); - } - uiLtGray(); - uirectfi(xmin+3,ymin+3,xmax-3,ymin+17); - } - } else { - drawedges(xmin+1,xmax-1,ymin+1,ymin+19,uiVyLtGray,uiMmGray); - uiLtGray(); - uirectfi(xmin+2,ymin+2,xmax-2,ymin+18); - } - - /* arrow */ - if (muiGetEnable(obj)) - uiDkGray(); - else - uiMmGray(); - uimove2i(xmin+5,ymin+14); - uidraw2i(xmin+14,ymin+14); - uiendline(); - uirectfi(xmin+6,ymin+13,xmin+13,ymin+12); - uirectfi(xmin+7,ymin+11,xmin+12,ymin+10); - uirectfi(xmin+8,ymin+8,xmin+11,ymin+9); - uirectfi(xmin+9,ymin+6,xmin+10,ymin+7); - - /* up arrow */ - uiDkGray(); - uirecti(xmin,ymax-20,xmax,ymax); - - if (muiGetEnable(obj)) { - if (obj->locate == SCROLLUP) { - if (obj->select == SCROLLUP) { - drawedges(xmin+1,xmax-1,ymax-19,ymax-1,uiMmGray,uiWhite); - drawedges(xmin+2,xmax-2,ymax-18,ymax-2,uiLtGray,uiWhite); - } else { - drawedges(xmin+1,xmax-1,ymax-19,ymax-1,uiWhite,uiMmGray); - drawedges(xmin+2,xmax-2,ymax-18,ymax-2,uiWhite,uiLtGray); - } - uiVyLtGray(); - uirectfi(xmin+3,ymax-17,xmax-3,ymax-3); - } else { - if (obj->select == SCROLLUP) { - drawedges(xmin+1,xmax-1,ymax-19,ymax-1,uiMmGray,uiVyLtGray); - drawedges(xmin+2,xmax-2,ymax-18,ymax-2,uiMmGray,uiVyLtGray); - } else { - drawedges(xmin+1,xmax-1,ymax-19,ymax-1,uiWhite,uiMmGray); - drawedges(xmin+2,xmax-2,ymax-18,ymax-2,uiVyLtGray,uiMmGray); - } - uiLtGray(); - uirectfi(xmin+3,ymax-17,xmax-3,ymax-3); - } - } else { - drawedges(xmin+1,xmax-1,ymax-19,ymax-1,uiVyLtGray,uiMmGray); - uiLtGray(); - uirectfi(xmin+2,ymax-18,xmax-2,ymax-2); - } - - /* arrow */ - - if (muiGetEnable(obj)) - uiDkGray(); - else - uiMmGray(); - uirectfi(xmin+9,ymax-6,xmin+10,ymax-7); - uirectfi(xmin+8,ymax-8,xmin+11,ymax-9); - uirectfi(xmin+7,ymax-10,xmin+12,ymax-11); - uirectfi(xmin+6,ymax-12,xmin+13,ymax-13); - uimove2i(xmin+5,ymax-14); - uidraw2i(xmin+14,ymax-14); - uiendline(); -} - -void drawvs(muiObject *obj) -{ - VSlider *vs = (VSlider *)obj->object; - - int xmin = obj->xmin, ymax = obj->ymax-ARROWHEIGHT, - ymin = obj->ymin+ARROWHEIGHT; - int xmax = xmin+SLIDERWIDTH; - int symin = vs->scenter - vs->shalf; - int symax = vs->scenter + vs->shalf; - int oldsymin = vs->oldpos - vs->shalf; - int oldsymax = vs->oldpos + vs->shalf; - - drawsetup(); - - if (!muiGetVisible(obj)) { - backgrounddraw(xmin,ymin,xmax,ymax); - drawrestore(); - return; - } - - /* trough */ - - uiDkGray(); - uirecti(xmin, ymin, xmax, ymax); - - drawedges(xmin+1,xmax-1,ymin+1,ymax-1,uiVyLtGray,uiMmGray); - - uiLtGray(); - uirectfi(xmin+2, ymin+2, xmax-2, ymax-2); - - if (vs->thumb) { - /* last thumb position */ - if ((vs->oldpos != vs->scenter) && (obj->enable)) { - - uiDkGray(); - uimove2i(xmax-2, oldsymax); - uidraw2i(xmin+1, oldsymax); - uiendline(); - - uiMmGray(); - uimove2i(xmin+1, oldsymax); - uidraw2i(xmin+1, oldsymin); - uiendline(); - - uiVyLtGray(); - uimove2i(xmin+2, oldsymin); - uidraw2i(xmax-1, oldsymin); - uiendline(); - - uiLtGray(); - uimove2i(xmax-1, oldsymin); - uidraw2i(xmax-1, oldsymax); - uiendline(); - - uiVyLtGray(); - uimove2i(xmax-2, --oldsymax); - uidraw2i(xmax-2, ++oldsymin); - uidraw2i(xmin+2, oldsymin); - uiendline(); - - uiVyDkGray(); - uimove2i(xmin+2, oldsymin); - uidraw2i(xmin+2, oldsymax); - uidraw2i(xmax-3, oldsymax); - uiendline(); - - uiDkGray(); - uimove2i(xmin+3, --oldsymax); - uidraw2i(xmax-3, oldsymax); - uiendline(); - - uiLtGray(); - uimove2i(xmax-3, oldsymax); - uidraw2i(xmax-3, ++oldsymin); - uidraw2i(xmin+3, oldsymin); - uiendline(); - - uiMmGray(); - uirectfi(xmin+3, ++oldsymin, xmax-4, --oldsymax); - - } - - if (obj->enable) { - - /* thumb */ - uiDkGray(); - uirecti(xmin,symin,xmax,symax); - - if (obj->locate == THUMB) { - drawedges(xmin+1,xmax-1,symin+1,symax-1,uiWhite,uiDkGray); - drawedges(xmin+2,xmax-2,symin+2,symax-2,uiWhite,uiLtGray); - drawedges(xmin+3,xmax-3,symin+3,symax-3,uiWhite,uiLtGray); - - uiVyLtGray(); - uirectfi(xmin+4, symin+4, xmax-4, symax-4); - - /* ridges on thumb */ - uiDkGray(); - uimove2i(xmin+3,vs->scenter); - uidraw2i(xmax-3,vs->scenter); - uiendline(); - uimove2i(xmin+3,vs->scenter-4); - uidraw2i(xmax-3,vs->scenter-4); - uiendline(); - uimove2i(xmin+3,vs->scenter+4); - uidraw2i(xmax-3,vs->scenter+4); - uiendline(); - - uiWhite(); - uirectfi(xmin+3,vs->scenter+1,xmax-3,vs->scenter+2); - uirectfi(xmin+3,vs->scenter+5,xmax-3,vs->scenter+6); - uirectfi(xmin+3,vs->scenter-2,xmax-3,vs->scenter-3); - } else { - drawedges(xmin+1,xmax-1,symin+1,symax-1,uiWhite,uiDkGray); - drawedges(xmin+2,xmax-2,symin+2,symax-2,uiVyLtGray,uiMmGray); - drawedges(xmin+3,xmax-3,symin+3,symax-3,uiVyLtGray,uiMmGray); - - uiLtGray(); - uirectfi(xmin+4, symin+4, xmax-4, symax-4); - - /* ridges on thumb */ - uiBlack(); - uimove2i(xmin+3,vs->scenter); - uidraw2i(xmax-3,vs->scenter); - uiendline(); - uimove2i(xmin+3,vs->scenter-4); - uidraw2i(xmax-3,vs->scenter-4); - uiendline(); - uimove2i(xmin+3,vs->scenter+4); - uidraw2i(xmax-3,vs->scenter+4); - uiendline(); - - uiWhite(); - uimove2i(xmin+3,vs->scenter+1); - uidraw2i(xmax-3,vs->scenter+1); - uiendline(); - uimove2i(xmin+3,vs->scenter-3); - uidraw2i(xmax-3,vs->scenter-3); - uiendline(); - uimove2i(xmin+3,vs->scenter+5); - uidraw2i(xmax-3,vs->scenter+5); - uiendline(); - } - } - } - drawvsarrows(obj); - - drawrestore(); -} - -enum muiReturnValue vshandler(muiObject *obj, int event, int value, int x, int y) -{ - int my = y; - static int mfudge=0; - static enum muiReturnValue retval = MUI_NO_ACTION; - VSlider *vs = (VSlider *)obj->object; - - if (!muiGetEnable(obj) || !muiGetVisible(obj)) - return MUI_NO_ACTION; - switch (event) { - case MUI_DEVICE_RELEASE: - if (value == 0) { - vs->oldpos = vs->scenter; - muiSetSelect(obj, 0); - return MUI_SLIDER_RETURN; - } - case MUI_DEVICE_PRESS: - case MUI_DEVICE_CLICK: - /* in the arrows */ - if (my >= obj->ymin && my <= obj->ymax && - (my < obj->ymin+ARROWHEIGHT || my > obj->ymax-ARROWHEIGHT)) { - mfudge = -10000; - if (my < obj->ymin+ARROWHEIGHT) { /* boink down */ - my = vs->scenter - vs->arrowdelta; - retval = MUI_SLIDER_SCROLLDOWN; - } else { /* boink up */ - my = vs->scenter + vs->arrowdelta; - retval = MUI_SLIDER_SCROLLUP; - } - if (event == MUI_DEVICE_CLICK) { - muiSetSelect(obj, 0); - retval = MUI_SLIDER_RETURN; - } - if (my - vs->shalf < obj->ymin+1+ARROWHEIGHT) - my = obj->ymin+1+vs->shalf+ARROWHEIGHT; - if (my + vs->shalf > obj->ymax-1-ARROWHEIGHT) - my = obj->ymax-1-vs->shalf-ARROWHEIGHT; - vs->scenter = my; - break; - } else if (my >= obj->ymin && my <= obj->ymax) - retval = MUI_SLIDER_THUMB; - vs->oldpos = vs->scenter; - if (my >= vs->scenter-vs->shalf && my <= vs->scenter+vs->shalf) - mfudge = vs->scenter - my; - else - mfudge = 0; - break; - case MUI_DEVICE_DOWN: - if (mfudge == -10000) { /* auto - repeat the arrow keys */ - if (retval == MUI_SLIDER_SCROLLDOWN) { - my = vs->scenter - vs->arrowdelta; - if (my - vs->shalf < obj->ymin+1+ARROWHEIGHT) - my = obj->ymin+1+vs->shalf+ARROWHEIGHT; - } else { - my = vs->scenter + vs->arrowdelta; - if (my + vs->shalf > obj->ymax-1-ARROWHEIGHT) - my = obj->ymax-1-vs->shalf-ARROWHEIGHT; - } - vs->scenter = my; - break; - } - my = y+mfudge; - if (my - vs->shalf < obj->ymin+1+ARROWHEIGHT) - my = obj->ymin+1+vs->shalf+ARROWHEIGHT; - if (my + vs->shalf > obj->ymax-1-ARROWHEIGHT) - my = obj->ymax-1-vs->shalf-ARROWHEIGHT; - - /* adjust thumb */ - vs->scenter = my; - break; - } - x = x; /* for lint's sake */ - return retval; -} - -float muiGetVSVal(muiObject *obj) -{ - VSlider *vs = (VSlider *)obj->object; - - return (vs->scenter-obj->ymin-1.0-vs->shalf-ARROWHEIGHT)/ - (obj->ymax - obj->ymin - 2.0*vs->shalf - 2.0-2*ARROWHEIGHT); -} - -void setvshalf(muiObject *obj, int shalf) -{ - VSlider *vs = (VSlider *)obj->object; - vs->shalf = shalf; - if (vs->shalf==0) - muiSetEnable(obj, 0); - else if (vs->shalf < MINSHALF) { - vs->shalf = MINSHALF; - muiSetEnable(obj, 1); - } else if (2*vs->shalf >= getvstrough(obj)) { - vs->shalf = getvstrough(obj)/2; - muiSetEnable(obj, 0); - } -} - -void movevsval(muiObject *obj, float val) -{ - float f; - VSlider *vs = (VSlider *)obj->object; - - if (val < 0.0) val = 0.0; - if (val > 1.0) val = 1.0; - f = val*(obj->ymax - obj->ymin - 2.0*vs->shalf - 2.0-2*ARROWHEIGHT); - vs->scenter = f + vs->shalf + obj->ymin + 1.0+ARROWHEIGHT; - - if ((vs->scenter + vs->shalf) > (obj->ymax - ARROWHEIGHT)) - vs->scenter = obj->ymax - ARROWHEIGHT - vs->shalf; - if ((vs->scenter - vs->shalf) < (obj->ymin+ ARROWHEIGHT)) - vs->scenter = obj->ymin + ARROWHEIGHT + vs->shalf; -} - -void muiSetVSValue(muiObject *obj, float val) -{ - VSlider *vs = (VSlider *)obj->object; - movevsval(obj, (float) val); - vs->oldpos = vs->scenter; -} - -/* - * visible is windowheight/dataheight - * top is top/dataheight - */ - -void -adjustvsthumb(muiObject *obj, double visible, double top) -{ - int size; - - if (visible >= 1.0) { - size = getvstrough(obj) + 1; - } else { - size = visible*getvstrough(obj); - } - muiSetEnable(obj, 1); - setvshalf(obj, size/2); - muiSetVSValue(obj, (float) (1.0 - top)); -} diff --git a/lib/glut-3.7.6/man/Imakefile b/lib/glut-3.7.6/man/Imakefile deleted file mode 100644 index 451179923a1aa34242830cfd30a54088cc45e840..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/Imakefile +++ /dev/null @@ -1,7 +0,0 @@ -#define IHaveSubdirs -#define PassCDebugFlags - -SUBDIRS = glut gle - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/man/gle/Imakefile b/lib/glut-3.7.6/man/gle/Imakefile deleted file mode 100644 index 465ada5cacc496f52cbda3bb7d3833307ca24af8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/Imakefile +++ /dev/null @@ -1,39 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This file is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This file is -not- in the public domain. */ - -#include "../../Glut.cf" - -MANDIR = $(LIBMANDIR) -MANSUFFIX = $(LIBMANSUFFIX)gle - -#ifdef SGIArchitecture -/* This ensures that all the GLE man pages get put in a GLE subdirectory. */ -MANPACKAGE = /GLE -#endif - -all: - @echo 'The default rule in GLUT API man page Makefile is a no-op.' - @echo 'Try "make install.man" to build and install man pages.' - -InstallManPageLong(gle,$(MANDIR),gle) -InstallManPageLong(gleExtrusion,$(MANDIR),gleExtrusion) -InstallManPageLong(gleHelicoid,$(MANDIR),gleHelicoid) -InstallManPageLong(gleLathe,XXX,gleLathe) -InstallManPageLong(glePolyCone,$(MANDIR),glePolyCone) -InstallManPageLong(glePolyCylinder,$(MANDIR),glePolyCylinder) -InstallManPageLong(gleScrew,$(MANDIR),gleScrew) -InstallManPageLong(gleSetJoinStyle,$(MANDIR),gleSetJoinStyle) -InstallManPageLong(gleSpiral,$(MANDIR),gleSpiral) -InstallManPageLong(gleSuperExtrusion,$(MANDIR),gleSuperExtrusion) -InstallManPageLong(gleTextureMode,$(MANDIR),gleTextureMode) -InstallManPageLong(gleToroid,$(MANDIR),gleToroid) -InstallManPageLong(gleTwistExtrusion,$(MANDIR),gleTwistExtrusion) - -InstallManPageAliases(gleSetJoinStyle,$(MANDIR),gleGetJoinStyle) -InstallManPageAliases(gle,$(MANDIR),intro) - -DependTarget() diff --git a/lib/glut-3.7.6/man/gle/gle.man b/lib/glut-3.7.6/man/gle/gle.man deleted file mode 100644 index c837ab3fb5af5058f08464c21b6208a4aece24b3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gle.man +++ /dev/null @@ -1,66 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gle 3GLE "3.6" "GLE" "GLE" -.SH NAME -gle - an introduction to the GLE Tubing & Extrusions Library -.SH SYNOPSIS -.nf -.LP -#include -.fi -.SH DESCRIPTION -The GLE Tubing and Extrusion Library is a graphics application -programming interface (API). The library consists of a number of "C" -language subroutines for drawing tubing and extrusions. The library is -distributed in source code form, in a package that includes -documentation, a VRML proposal, Makefiles, and full source code and -header files. It uses the OpenGL (TM) programming API to perform the -actual drawing of the tubing and extrusions. - -A "sweep" or "extrusion" is a 2D contour (polyline) that is swept or -extruded along a 3D path (polyline). For example, sweeping a circle -along a straight line will generate a cylinder. Sweeping a circle -along a circular path will generate a doughnut (torus). - -The library also includes a set of utility routines for drawing some of -the more common extruded shapes: a polycylinder, a polycone, a -generalized torus (circle swept along a helical path), a "helix" -(arbitrary contour swept along a helical path) and a "lathe" (arbitrary -contour swept along a helical path, with torsion used to keep the -contour aligned). - -The most general extrusion supported by this library allows an -arbitrary 2D contour to be swept around an arbitrary 3D path. A set of -normal vectors can be specified to go along with the contour; the -normal vectors determine the appearance of the contour when lighting is -turned on. A set of colors and affine matrices can be specified to go -along with the 3D path. The colors are used to color along the path. -The affine matrices are used to operate on the contour as it is swept -along. If no affine matrices are specified, the contour is extruded -using the mathematical concept of "parallel translation" or "Gaussian -translation". That is, the contour is moved (and drawn) along the -extrusion path in a "straight" manner. If there are affine matrices, -they are applied to the contour at each extrusion segment before the -segment is drawn. - -The affine matrices allow work in a quasi-non-Euclidean space. They -essentially allow the contour to be distorted as it is swept along. The -allow the contour to be rotated, translated and rescaled as it is -drawn. For example, a rescaling will turn a polycylinder into a -poly-cone, since the circle that is being extruded is scaled to a -different size at each extrusion vertex. A rotation allows the contour -to be spun around while it is being extruded, thus for instance -allowing drill-bit type shapes to be drawn. A translation allows the -appearance of shearing in real space; that is, taking a contour and -displacing it, without otherwise bending it. Note that the affines are -2x3 matrices, not 3x4 matrices, since they apply to the 2D contour as -it is being extruded. -.SH WEB SITE -http://linas.org/gle/index.html -.SH SEE ALSO -gleExtrusion, gleHelicoid, gleLathe, glePolyCone, glePolyCylinder, -gleScrew, gleSetJoinStyle, gleSpiral, gleSuperExtrusion, gleTextureMode, -gleToroid, gleTwistExtrusion, gleTwistExtrusion, gleSuperExtrusion -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleExtrusion.man b/lib/glut-3.7.6/man/gle/gleExtrusion.man deleted file mode 100644 index e18f59fcbb1a8c5c532d286a164c76931523ab5c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleExtrusion.man +++ /dev/null @@ -1,57 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleExtrusion 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleExtrusion - Extrude arbitrary 2D contour along arbitrary 3D path. -.SH SYNTAX -.nf -.LP -void gleExtrusion (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - int npoints, - gleDouble point_array[][3], - float color_array[][3]); -.fi -.SH ARGUMENTS -.IP \fIncp\fP 1i -number of contour points -.IP \fIcontour\fP 1i -2D contour -.IP \fIcont_normal\fP 1i -2D contour normals -.IP \fIup\fP 1i -up vector for contour -.IP \fInpoints\fP 1i -numpoints in poly-line -.IP \fIpoint_array\fP 1i -polyline vertices -.IP \fIcolor_array\fP 1i -colors at polyline verts -.SH DESCRIPTION - -Extrude arbitrary 2D contour along arbitrary 3D path. The argument -"contour" specifies the 2D contour to be extruded, while the argument -"point_array" specifies the path along which to extrude. The vector -"up" defines the orientation of the contour y-axis in real 3D space. - -Note that neither the very first segment, nor the very last segment are -drawn. The first and last segments serve only to define the angle of -the join at the very ends of the polyline. Thus, to draw one segment, -three must be specified. To draw two segments, four must be specified, -etc. - -The normal array may be NULL. If it is, normal vectors will NOT be -automatically generated, and the object will look terrible when lit. - -The color array may be NULL. If NULL, the current color is used. If not -NULL, the glColor3f() routine is used to set the color; therefore, -specifying the glColorMaterial() subroutine before this primitive can -be used to set diffuse, specular, ambient, etc. colors. - -.SH SEE ALSO -gleTwistExtrusion, gleSuperExtrusion -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleHelicoid.man b/lib/glut-3.7.6/man/gle/gleHelicoid.man deleted file mode 100644 index b3c56e48c4abd53cf811dfaf0b76fe452e59d7e8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleHelicoid.man +++ /dev/null @@ -1,48 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleHelicoid 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleHelicoid - Generalized torus, spiral with circle contour. -.SH SYNTAX -.nf -.LP -void gleHelicoid (gleDouble rToroid, - gleDouble up[3], - gleDouble startRadius, - gleDouble drdTheta, - gleDouble startZ, - gleDouble dzdTheta, - gleDouble startXform[2][3], - gleDouble dXformdTheta[2][3], - gleDouble startTheta, - gleDouble sweepTheta); -.fi -.SH ARGUMENTS -.IP \fIrToroid\fP 1i -circle contour (torus) radius -.IP \fIstartRadius\fP 1i -spiral starts in x-y plane -.IP \fIdrdTheta\fP 1i -change in radius per revolution -.IP \fIstartZ\fP 1i -starting z value -.IP \fIdzdTheta\fP 1i -change in Z per revolution -.IP \fIstartXform\fP 1i -starting contour affine transformation -.IP \fIdXformdTheta\fP 1i -tangent change xform per revolution -.IP \fIstartTheta\fP 1i -start angle in x-y plane -.IP \fIsweepTheta\fP 1i -degrees to spiral around -.SH DESCRIPTION - -Generalized Torus. Similar to gleSpiral, except contour is a circle. -Uses gleSpiral to draw. - -.SH SEE ALSO -gleSpiral, gleToroid -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleLathe.man b/lib/glut-3.7.6/man/gle/gleLathe.man deleted file mode 100644 index 34a904540bb9225525f15164cc8a3e818a8ed5ec..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleLathe.man +++ /dev/null @@ -1,62 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleLathe 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleLathe - Sweep using a Z-axis shear to create an arbitrary contour along a helical path. -.SH SYNTAX -.nf -.LP -void gleLathe (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - gleDouble startRadius, /* spiral starts in x-y plane */ - gleDouble drdTheta, /* change in radius per revolution */ - gleDouble startZ, /* starting z value */ - gleDouble dzdTheta, /* change in Z per revolution */ - gleDouble startXform[2][3], /* starting contour affine xform */ - gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ - gleDouble startTheta, /* start angle in x-y plane */ - gleDouble sweepTheta); /* degrees to spiral around */ -.fi -.SH ARGUMENTS -.IP \fIncp\fP 1i -number of contour points -.IP \fIcontour\fP 1i -2D contour -.IP \fIcont_normal\fP 1i -2D contour normals -.IP \fIup\fP 1i -up vector for contour -.IP \fIstartRadius\fP 1i -spiral starts in x-y plane -.IP \fIdrdTheta\fP 1i -change in radius per revolution -.IP \fIstartZ\fP 1i -starting z value -.IP \fIdzdTheta\fP 1i -change in Z per revolution -.IP \fIstartXform\fP 1i -starting contour affine transformation -.IP \fIdXformdTheta\fP 1i -tangent change xform per revolution -.IP \fIstartTheta\fP 1i -start angle in x-y plane -.IP \fIsweepTheta\fP 1i -degrees to spiral around -.SH DESCRIPTION - -Sweep an arbitrary contour along a helical path. The sweep will be -performed as a shear along the z-axis, so that the orientation of the -contour is displaced, rather than translated, as the contour is swept. - -The axis of the helix lies along the modeling coordinate z-axis. - -An affine transform can be applied as the contour is swept. For most -ordinary usage, the affines should be given as NULL. - -.SH SEE ALSO -gleSpiral -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/glePolyCone.man b/lib/glut-3.7.6/man/gle/glePolyCone.man deleted file mode 100644 index 035584b25ac917d90047c3ee997fa4401111bbd9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/glePolyCone.man +++ /dev/null @@ -1,42 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH glePolyCone 3GLE "3.6" "GLE" "GLE" -.SH NAME -glePolyCone - Draw polycone, specified as a polyline with radii. -.SH SYNTAX -.nf -.LP -void glePolyCone(int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble radius_array[]); -.fi -.SH ARGUMENTS -.IP \fInpoints\fP 1i -numpoints in poly-line -.IP \fIpoint_array\fP 1i -polyline vertices -.IP \fIcolor_array\fP 1i -colors at polyline verts -.IP \fIradius_array\fP 1i -cone radii at polyline -.SH DESCRIPTION - -Draw polycone, specified as a polyline with radii. - -Note that neither the very first segment, nor the very last segment are -drawn. The first and last segments serve only to define the angle of -the join at the very ends of the polyline. Thus, to draw one segment, -three must be specified. To draw two segments, four must be specified, -etc. - -The color array may be NULL. If NULL, the current color is used. If not -NULL, the glColor3f() routine is used to set the color; therefore, -specifying the glColorMaterial() subroutine before this primitive can -be used to set diffuse, specular, ambient, etc. colors. - -.SH SEE ALSO -glePolyCylinder -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/glePolyCylinder.man b/lib/glut-3.7.6/man/gle/glePolyCylinder.man deleted file mode 100644 index d7d7dff4a968c2b530ea7e3d6ffe63712502161c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/glePolyCylinder.man +++ /dev/null @@ -1,42 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH glePolyCylinder 3GLE "3.6" "GLE" "GLE" -.SH NAME -glePolyCylinder - Draw polycylinder, specified as a polyline. -.SH SYNTAX -.nf -.LP -void glePolyCylinder(int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble radius); -.fi -.SH ARGUMENTS -.IP \fInpoints\fP 1i -numpoints in poly-line -.IP \fIpoint_array\fP 1i -polyline vertices -.IP \fIcolor_array\fP 1i -colors at polyline verts -.IP \fIradius\fP 1i -cylinder radius -.SH DESCRIPTION - -Draw polycylinder, specified as a polyline. - -Note that neither the very first segment, nor the very last segment are -drawn. The first and last segments serve only to define the angle of -the join at the very ends of the polyline. Thus, to draw one segment, -three must be specified. To draw two segments, four must be specified, -etc. - -The color array may be NULL. If NULL, the current color is used. If not -NULL, the glColor3f() routine is used to set the color; therefore, -specifying the glColorMaterial() subroutine before this primitive can -be used to set diffuse, specular, ambient, etc. colors. - -.SH SEE ALSO -glePolyCone -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleScrew.man b/lib/glut-3.7.6/man/gle/gleScrew.man deleted file mode 100644 index bc65f58b8f1b8a792405bc8c9b6ef4212d3b14ae..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleScrew.man +++ /dev/null @@ -1,43 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleScrew 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleScrew - Draws screw-type shapes. -.SH SYNTAX -.nf -.LP -void gleScrew (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - gleDouble startz, - gleDouble endz, - gleDouble twist); -.fi -.SH ARGUMENTS -.IP \fIncp\fP 1i -number of contour points -.IP \fIcontour\fP 1i -2D contour -.IP \fIcont_normal\fP 1i -2D contour normals -.IP \fIup\fP 1i -up vector for contour -.IP \fIstartx\fP 1i -start of segment -.IP \fIendz\fP 1i -end of segment -.IP \fItwist\fP 1i -number of rotations -.SH DESCRIPTION - -Draws screw-type shapes. Takes a contour, and extrudes it along the -z-axis, from a start z value of startz to an end z-value of endz. -During the extrusion, it will spin the contour along the contour origin -by twist degrees. - -.SH SEE ALSO -gleExtrusion -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleSetJoinStyle.man b/lib/glut-3.7.6/man/gle/gleSetJoinStyle.man deleted file mode 100644 index 726dddf2a9dadd135ed7f86032ea705c681ce2d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleSetJoinStyle.man +++ /dev/null @@ -1,88 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleSetJoinStyle 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleSetJoinStyle, gleGetJoinStyle - Query and Set the GLE join style flags. -.SH SYNTAX -.nf -.LP -void gleSetJoinStyle (int style); -int gleGetJoinStyle (void); -.fi -.SH ARGUMENTS -.IP \fIstyle\fP 1i -bitwise OR of flags -.SH DESCRIPTION - -Query and set the GLE join style flags. This word is a bitwise OR of -the flags described below. - -The initial join style is TUBE_JN_ANGLE | TUBE_JN_CAP | TUBE_NORM_FACET. - -.B "Extrusion Join Styles" -.IP \fBTUBE_JN_RAW\fP -Draw polycylinders, polycones, extrusions, etc. with no special -treatment of the extrusion ends. -.IP \fBTUBE_JN_ANGLE\fP -Draw polycylinders, polycones, extrusions, etc. by extending the -different segments until they butt into each other with an -angular style. -.IP \fBTUBE_JN_CUT\fP -Draw polycylinders, polycones, extrusions, etc. by joining together the -different segments and slicing off the joint at half the angle between -the segments. A cap is drawn. Note that the slicing plane runs through -the origin of the contour coordinate system. Thus, the amount of slice -can be varied by offsetting the contour with respect to the origin. - -Note that when two segments meet at a shallow angle, the cut join style -will potentially shave off a whole lot of the contour, leading to -"surprising" results... -.IP \fBTUBE_JN_ROUND\fP -Joints will be rounded. Strictly speaking, the part of the joint above -the origin will be rounded. The part below the origin will come -together in an angular join. -.IP \fBTUBE_JN_MASK\fP -Mask bits. This can be used to mask off the bit field that defines the -join style. - -.B "End Caps" -.IP \fBTUBE_JN_CAP\fP -If this is set, a cap will be drawn at each end of the extrusion. - -.B "Automatic Normal Vector Generation" -.IP \fBTUBE_NORM_FACET\fP -A normal vector is generated per facet. Useful for having an extrusion -have a "faceted" look, such as when extruding a square -- each of the -four sides of the square will look flat. -.IP \fBTUBE_NORM_EDGE\fP -Normal vectors are generated so that they lie along edges. Useful for -making angular things look rounded under lighting. For example, when -extruding a hexagon and using this flag, the hexagonal extrusion will -look (more like a) smooth perfectly round cylinder, rather than a -six-sided shape. -.IP \fBTUBE_NORM_PATH_EDGE\fP -Normal vectors are generated so that they both lie on edges, and so -that they interpolate between neighboring segments. Useful for drawing -"spaghetti" -- extrusions that follow a spline path. Because the -spline path must be "tessellated" into small straight segments, each -segment will look straight unless this flag is set. -.IP \fBTUBE_NORM_MASK\fP -A mask useful for masking out the "norm" bits. - -.B "Closed or Open Contours" -.IP \fBTUBE_CONTOUR_CLOSED\fP -If this bit is set, the contour will be treated as a "closed" contour, -where the last point connects back up to the first. It is useful to set -this flag when drawing closed shapes (such as extruded cylinders, -star-shapes, I-Beams, etc. When drawing open extrusions (e.g. -corrugated sheet metal), you DON'T want to set this flag. - -.SH BUGS - -Multiple threads using GLE share a single global join style. - -.SH SEE ALSO -gleExtrusion, gleTextureMode -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleSpiral.man b/lib/glut-3.7.6/man/gle/gleSpiral.man deleted file mode 100644 index 8f60c3f54f20b44a438e78ffe9a19066e3f14244..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleSpiral.man +++ /dev/null @@ -1,110 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleSpiral 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleSpiral - Sweep an arbitrary contour along a helical path. -.SH SYNTAX -.nf -.LP -void gleSpiral (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - gleDouble startRadius, /* spiral starts in x-y plane */ - gleDouble drdTheta, /* change in radius per revolution */ - gleDouble startZ, /* starting z value */ - gleDouble dzdTheta, /* change in Z per revolution */ - gleDouble startXform[2][3], /* starting contour affine xform */ - gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ - gleDouble startTheta, /* start angle in x-y plane */ - gleDouble sweepTheta); /* degrees to spiral around */ -.fi -.SH ARGUMENTS -.IP \fIncp\fP 1i -number of contour points -.IP \fIcontour\fP 1i -2D contour -.IP \fIcont_normal\fP 1i -2D contour normals -.IP \fIup\fP 1i -up vector for contour -.IP \fIstartRadius\fP 1i -spiral starts in x-y plane -.IP \fIdrdTheta\fP 1i -change in radius per revolution -.IP \fIstartZ\fP 1i -starting z value -.IP \fIdzdTheta\fP 1i -change in Z per revolution -.IP \fIstartXform\fP 1i -starting contour affine transformation -.IP \fIdXformdTheta\fP 1i -tangent change xform per revolution -.IP \fIstartTheta\fP 1i -start angle in x-y plane -.IP \fIsweepTheta\fP 1i -degrees to spiral around -.SH DESCRIPTION - -Sweep an arbitrary contour along a helical path. - -The axis of the helix lies along the modeling coordinate z-axis. - -An affine transform can be applied as the contour is swept. For most -ordinary usage, the affines should be given as NULL. - -The "startXform[][]" is an affine matrix applied to the contour to -deform the contour. Thus, "startXform" of the form - - | cos sin 0 | - | -sin cos 0 | - -will rotate the contour (in the plane of the contour), while - - | 1 0 tx | - | 0 1 ty | - -will translate the contour, and - - | sx 0 0 | - | 0 sy 0 | - -scales along the two axes of the contour. In particular, note that - - | 1 0 0 | - | 0 1 0 | - -is the identity matrix. - -The "dXformdTheta[][]" is a differential affine matrix that is -integrated while the contour is extruded. Note that this affine matrix -lives in the tangent space, and so it should have the form of a -generator. Thus, dx/dt's of the form - - | 0 r 0 | - | -r 0 0 | - -rotate the the contour as it is extruded (r == 0 implies no rotation, r -== 2*PI implies that the contour is rotated once, etc.), while - - | 0 0 tx | - | 0 0 ty | - -translates the contour, and - - | sx 0 0 | - | 0 sy 0 | - -scales it. In particular, note that - - | 0 0 0 | - | 0 0 0 | - -is the identity matrix -- i.e. the derivatives are zero, and therefore -the integral is a constant. - -.SH SEE ALSO -gleLathe -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleSuperExtrusion.man b/lib/glut-3.7.6/man/gle/gleSuperExtrusion.man deleted file mode 100644 index b63a84b1281f48bf1022cc6de4185c60233fa57f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleSuperExtrusion.man +++ /dev/null @@ -1,64 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleSuperExtrusion 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleSuperExtrusion - Extrude arbitrary 2D contour along arbitrary 3D path, specifying local affine transformations. -.SH SYNTAX -.nf -.LP -void gleSuperExtrusion (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble xform_array[][2][3]); -.fi -.SH ARGUMENTS -.IP \fIncp\fP 1i -number of contour points -.IP \fIcontour\fP 1i -2D contour -.IP \fIcont_normal\fP 1i -2D contour normals -.IP \fIup\fP 1i -up vector for contour -.IP \fInpoints\fP 1i -numpoints in poly-line -.IP \fIpoint_array\fP 1i -polyline vertices -.IP \fIcolor_array\fP 1i -colors at polyline verts -.IP \fIxform_array\fP 1i -2D contour affine transforms -.SH DESCRIPTION - -Extrude arbitrary 2D contour along arbitrary 3D path, specifying local -affine transformations. As the contour is extruded, the affine will be -applied to the points in the contour. - -The argument "contour" specifies the 2D contour to be extruded, while -the argument "point_array" specifies the path along which to extrude. -The vector "up" defines the orientation of the contour y-axis in real -3D space. - -Note that neither the very first segment, nor the very last segment are -drawn. The first and last segments serve only to define the angle of -the join at the very ends of the polyline. Thus, to draw one segment, -three must be specified. To draw two segments, four must be specified, -etc. - -The normal array may be NULL. If it is, normal vectors will NOT be -automatically generated, and the object will look terrible when lit. - -The color array may be NULL. If NULL, the current color is used. If not -NULL, the glColor3f() routine is used to set the color; therefore, -specifying the glColorMaterial() subroutine before this primitive can -be used to set diffuse, specular, ambient, etc. colors. - -.SH SEE ALSO -gleExtrusion, gleTwistExtrusion -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleTextureMode.man b/lib/glut-3.7.6/man/gle/gleTextureMode.man deleted file mode 100644 index 2a3bf3ff262b31da5700f09be7774fe88c8a5a02..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleTextureMode.man +++ /dev/null @@ -1,160 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleTextureMode 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleTextureMode - set the type of GLE automatic texture coordinate generation. -.SH SYNTAX -.nf -.LP -void gleTextureMode (int mode); -.fi -.SH ARGUMENTS -.IP \fImode\fP 1i -bitwise OR of GLE texture mode flags -.SH DESCRIPTION - -In addition to the default glTexGen modes that are supplied by OpenGL, -the tubing library also contains some of its own automatic texture -coordinate generation routines. In addition, user-defined texture coord -generation routines can be supplied. - -To use texture mapping with the extrusion library, one must remember to "do the obvious": -.IP -Enable texture mapping through OpenGL -.IP -Define and load (glTexImage2D/glBindTexture) a texture -.IP -If using the routine below, then disable glTexgGen -.LP -gleTextureMode can be used to set the type of automatic texture -coordinate generation to be used. The argument should be a bitwise-OR -of any of the following flags: -.IP \fBGLE_TEXTURE_ENABLE\fP -If this bit is set, then texturing is enabled. If this bit is NOT set, -then automatic texture coordinate generation is disabled. -.LP -The way in which the automatic texture coordinate generation occurs is -determined by one of the following flags. One and only one of these -should be selected at a time. These tokens are enumerants, not -bit-flags. -.IP \fBGLE_TEXTURE_VERTEX_FLAT\fP -Uses the vertexes "x" coordinate as the texture "u" coordinate, and the -accumulated segment length as the "v" coordinate. -.IP \fBGLE_TEXTURE_NORMAL_FLAT\fP -Uses the normal vector's "x" coordinate as the texture "u" coordinate, -and the accumulated segment length as the "v" coordinate. -.IP \fBGLE_TEXTURE_VERTEX_CYL\fP -Uses u = phi/(2*pi) = arctan (vy/vx)/(2*pi) as the texture "u" -coordinate, and the accumulated segment length as the "v" coordinate. -In the above equation, "vx" and "vy" stand for the vertex's x and y -coordinates. -.IP \fBGLE_TEXTURE_NORMAL_CYL\fP -Uses u = phi/(2*pi) = arctan (ny/nx)/(2*pi) as the texture "u" -coordinate, and the accumulated segment length as the "v" coordinate. -In the above equation, "nx" and "ny" stand for the normal's x and y -coordinates. -.IP \fBGLE_TEXTURE_VERTEX_SPH\fP -Uses u = phi/(2*pi) = arctan (vy/vx)/(2*pi) as the texture "u" -coordinate, and v = theta/pi = (1.0 - arccos(vz))/pi as the texture "v" -coordinate. In the above equation, "vx","vy" and "vz" stand for the -vertex's x, y and z coordinates. -.IP \fBGLE_TEXTURE_NORMAL_SPH\fP -Uses u = phi/(2*pi) = arctan (ny/nx)/(2*pi) as the texture "u" -coordinate, and v = theta/pi = (1.0 - arccos(nz))/pi as the texture "v" -coordinate. In the above equation, "nx","ny" and "nz" stand for the -normal's x, y and z coordinates. -.IP \fBGLE_TEXTURE_VERTEX_MODEL_FLAT\fP -.IP \fBGLE_TEXTURE_NORMAL_MODEL_FLAT\fP -.IP \fBGLE_TEXTURE_VERTEX_MODEL_CYL\fP -.IP \fBGLE_TEXTURE_NORMAL_MODEL_CYL\fP -.IP \fBGLE_TEXTURE_VERTEX_MODEL_SPH\fP -.IP \fBGLE_TEXTURE_NORMAL_MODEL_SPH\fP -These define texture mapping modes that are very similar to those -described above, except that the untransformed vertices and/or normals -are used. As a result, textures tends to stick to the extrusion -according to the extrusions local surface coordinates rather than -according to real-space coordinates. This will in general provide the -correct style of texture mapping when affine transforms are being -applied to the contour, since the coordinates used are those prior to -the affine transform. -.SH OPERATION -To best understand how to use the above functions, it is best to -understand how the tubing is actually drawn. Let us start by defining -some terms. The tubing library "extrudes" a "contour" along a "path". -The contour is a 2D polyline. The path is a 3D polyline. We use the -word "segment" to refer to a straight-line segment of the path -polyline. We also interchangeably use the word "segment" to stand for -the section of the extrusion that lies along a path segment. - -The tubing library draws segments one at a time. It uses glPushmatrix() -and glPopmatrix() to orient each segment along the negative z-axis. The -segment starts at z=0 and ends at some negative z-value (equal to the -length of the segment). The segment is then drawn by calling -glVertex3f() (and glNormal3F()) by drawing the 2D contour at z=0 and -again at z=-len. (Of course, if the join style is one of the fancy -ones, then the end-points are trimmed in a variety of ways, and do not -land exactly on z=0, or z=-len, but they do come close). Note that -glBegin() and glEnd() are called around each segment. (Note also that -additional glBegins/Ends may be called to draw end-caps or filleting -triangles for the more complex join styles.) - -The obvious way to automatically generate textures is to warp the -glVertex() and glNormal() functions, and compute texture coordinates -based on the 3-space vertex and normal coordinates. This is essentially -what the tubing code does, except that it passes some extra parameters. -The glBegin calls are wrapped, and the integer segment number and the -floating-point length of the segment are passed in. By knowing the -segment number, and the segment length, the texture coordinates can be -adjusted. Knowing the length allows the length to be accumulated, so -that a texture is applied lengthwise along the extrusion. It is this -accumulated length that is used in the FLAT and CYL mapping modes. - -For each vertex, not only are the vertex x,y,z coordinates available, -but so is a contour vertex counter indicating which contour vertex this -corresponds to. There is also a flag indicating whether the vertex -corresponds to a front or back vertex (i.e. a z=0 or z=-len vertex). -Again, this info can be used to avoid confusion when drawing the more -complex join styles. -.SH HINTS -Here are a few hints, tips, and techniques: -.IP o -Hint: Confused? RUN THE DEMOS! The best way to understand what all the -different texture modes are doing is to see them in action. -.IP o -Hint: The texture matrix can be used to your advantage! That is, you -can use glMatrixMode(GL_TEXTURE) to control how textures are mapped to -the surface. In particular, you may/will want to use it to to rescale -the V coordinate. -.IP o -The origin of the contour will in general change the vertex x's and -y's, thus changing the texture coordinates. -.IP o -The contour "up" vector will NOT influence the texture coordinates. -.IP o -For the FLAT and CYL modes, the accumulated length really is the -accumulated length of the segments in modeling coordinates. Unless the -extrusion is very small, this length will probably be much larger than -1.0, and so the resulting texture coordinate will wrap. You will -generally want to rescale the "V" coordinate to make the texture map -fit. -.IP o -If the texture is "swimming" around on the surface in an undesired way, -try using the "MODEL" version of the texture generation flag. -.IP o -Typically, you will NOT want to use the "SPH" versions of the texture -generation engine unless you really, really have an extrusion for which -spherical coordinates are appropriate. Most uses of extrusions are best -handled with the "FLAT" and "CYL" generation methods. -.IP o -User-defined texture generation callbacks are not currently -implemented, but these should be very, very easy to hack in as desired. -It should be easy to let your imagination run wild in here. Look at -texgen.c -- what needs to be done should be obvious, I hope. When in -doubt, experiment. -.SH BUGS -Multiple threads using GLE share a single texture mode. -.SH SEE ALSO -gleExtrusion, gleSetJoinStyle -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleToroid.man b/lib/glut-3.7.6/man/gle/gleToroid.man deleted file mode 100644 index ac2e9fd96b2b210a98c114e0b12343ab0a6dbdbe..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleToroid.man +++ /dev/null @@ -1,48 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleToroid 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleToroid - Generalized torus, lathe with circle contour. -.SH SYNTAX -.nf -.LP -void gleToroid (gleDouble rToroid, - gleDouble up[3], - gleDouble startRadius, - gleDouble drdTheta, - gleDouble startZ, - gleDouble dzdTheta, - gleDouble startXform[2][3], - gleDouble dXformdTheta[2][3], - gleDouble startTheta, - gleDouble sweepTheta); -.fi -.SH ARGUMENTS -.IP \fIrToroid\fP 1i -circle contour (torus) radius -.IP \fIstartRadius\fP 1i -spiral starts in x-y plane -.IP \fIdrdTheta\fP 1i -change in radius per revolution -.IP \fIstartZ\fP 1i -starting z value -.IP \fIdzdTheta\fP 1i -change in Z per revolution -.IP \fIstartXform\fP 1i -starting contour affine transformation -.IP \fIdXformdTheta\fP 1i -tangent change xform per revolution -.IP \fIstartTheta\fP 1i -start angle in x-y plane -.IP \fIsweepTheta\fP 1i -degrees to spiral around -.SH DESCRIPTION - -Generalized Torus. Similar to gleLathe, except contour is a circle. -Uses gleLathe to draw. - -.SH SEE ALSO -gleSpiral, gleHelicoid -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/gle/gleTwistExtrusion.man b/lib/glut-3.7.6/man/gle/gleTwistExtrusion.man deleted file mode 100644 index 2f791df5173ff85d985697923d70f92b6ce4db74..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/gle/gleTwistExtrusion.man +++ /dev/null @@ -1,66 +0,0 @@ -.\" -.\" GLE Tubing & Extrusions Library Documentation -.\" -.TH gleTwistExtrusion 3GLE "3.6" "GLE" "GLE" -.SH NAME -gleTwistExtrusion - Extrude arbitrary 2D contour along arbitrary 3D path, specifying local rotations (twists). -.SH SYNTAX -.nf -.LP -void gleTwistExtrusion (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble twist_array[]); -.fi -.SH ARGUMENTS -.IP \fIncp\fP 1i -number of contour points -.IP \fIcontour\fP 1i -2D contour -.IP \fIcont_normal\fP 1i -2D contour normals -.IP \fIup\fP 1i -up vector for contour -.IP \fInpoints\fP 1i -numpoints in poly-line -.IP \fIpoint_array\fP 1i -polyline vertices -.IP \fIcolor_array\fP 1i -colors at polyline verts -.IP \fItwist_array\fP 1i -contour twists (in degrees) -.SH DESCRIPTION - -Extrude arbitrary 2D contour along arbitrary 3D path, specifying local -rotations (twists). As the contour is extruded, it will be twisted by -the amount specified in the array "twist_array". The angles are -measured in degrees, and the rotation is about the origin of the -contour coordinate system. - -The argument "contour" specifies the 2D contour to be extruded, while -the argument "point_array" specifies the path along which to extrude. -The vector "up" defines the orientation of the contour y-axis in real -3D space. - -Note that neither the very first segment, nor the very last segment are -drawn. The first and last segments serve only to define the angle of -the join at the very ends of the polyline. Thus, to draw one segment, -three must be specified. To draw two segments, four must be specified, -etc. - -The normal array may be NULL. If it is, normal vectors will NOT be -automatically generated, and the object will look terrible when lit. - -The color array may be NULL. If NULL, the current color is used. If not -NULL, the glColor3f() routine is used to set the color; therefore, -specifying the glColorMaterial() subroutine before this primitive can -be used to set diffuse, specular, ambient, etc. colors. - -.SH SEE ALSO -gleExtrusion, gleSuperExtrusion -.SH AUTHOR -Linas Vepstas (linas@fc.net) diff --git a/lib/glut-3.7.6/man/glut/Imakefile b/lib/glut-3.7.6/man/glut/Imakefile deleted file mode 100644 index c61303f501369675df58ec81cc4558748f6b68af..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/Imakefile +++ /dev/null @@ -1,132 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This file is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This file is -not- in the public domain. */ - -#include "../../Glut.cf" - -MANDIR = $(LIBMANDIR) -MANSUFFIX = $(LIBMANSUFFIX)glut - -#ifdef SGIArchitecture -/* This ensurs that all the GLUT man pages get put in a GLUT subdirectory. */ -MANPACKAGE = /GLUT -#endif - -all: - @echo 'The default rule in GLUT API man page Makefile is a no-op.' - @echo 'Try "make install.man" to build and install man pages.' - -InstallManPageLong(glutAddMenuEntry,$(MANDIR),glutAddMenuEntry) -InstallManPageLong(glutAddSubMenu,$(MANDIR),glutAddSubMenu) -InstallManPageLong(glutAttachMenu,$(MANDIR),glutAttachMenu) -InstallManPageLong(glutBitmapCharacter,$(MANDIR),glutBitmapCharacter) -InstallManPageLong(glutBitmapWidth,$(MANDIR),glutBitmapWidth) -InstallManPageLong(glutButtonBoxFunc,$(MANDIR),glutButtonBoxFunc) -InstallManPageLong(glutChangeToMenuEntry,$(MANDIR),glutChangeToMenuEntry) -InstallManPageLong(glutChangeToSubMenu,$(MANDIR),glutChangeToSubMenu) -InstallManPageLong(glutCopyColormap,$(MANDIR),glutCopyColormap) -InstallManPageLong(glutCreateMenu,$(MANDIR),glutCreateMenu) -InstallManPageLong(glutCreateSubWindow,$(MANDIR),glutCreateSubWindow) -InstallManPageLong(glutCreateWindow,$(MANDIR),glutCreateWindow) -InstallManPageLong(glutDestroyMenu,$(MANDIR),glutDestroyMenu) -InstallManPageLong(glutDestroyWindow,$(MANDIR),glutDestroyWindow) -InstallManPageLong(glutDeviceGet,$(MANDIR),glutDeviceGet) -InstallManPageLong(glutDialsFunc,$(MANDIR),glutDialsFunc) -InstallManPageLong(glutDisplayFunc,$(MANDIR),glutDisplayFunc) -InstallManPageLong(glutEnterGameMode,$(MANDIR),glutEnterGameMode) -InstallManPageLong(glutEntryFunc,$(MANDIR),glutEntryFunc) -InstallManPageLong(glutEstablishOverlay,$(MANDIR),glutEstablishOverlay) -InstallManPageLong(glutExtensionSupported,$(MANDIR),glutExtensionSupported) -InstallManPageLong(glutForceJoystickFunc,$(MANDIR),glutForceJoystickFunc) -InstallManPageLong(glutFullScreen,$(MANDIR),glutFullScreen) -InstallManPageLong(glutGameModeGet,$(MANDIR),glutGameModeGet) -InstallManPageLong(glutGameModeString,$(MANDIR),glutGameModeString) -InstallManPageLong(glutGet,$(MANDIR),glutGet) -InstallManPageLong(glutGetColor,$(MANDIR),glutGetColor) -InstallManPageLong(glutGetModifiers,$(MANDIR),glutGetModifiers) -InstallManPageLong(glutIdleFunc,$(MANDIR),glutIdleFunc) -InstallManPageLong(glutIgnoreKeyRepeat,$(MANDIR),glutIgnoreKeyRepeat) -InstallManPageLong(glutInit,$(MANDIR),glutInit) -InstallManPageLong(glutInitDisplayMode,$(MANDIR),glutInitDisplayMode) -InstallManPageLong(glutInitDisplayString,$(MANDIR),glutInitDisplayString) -InstallManPageLong(glutInitWindowPosition,$(MANDIR),glutInitWindowPosition) -InstallManPageLong(glutJoystickFunc,$(MANDIR),glutJoystickFunc) -InstallManPageLong(glutKeyboardFunc,$(MANDIR),glutKeyboardFunc) -InstallManPageLong(glutKeyboardUpFunc,$(MANDIR),glutKeyboardUpFunc) -InstallManPageLong(glutLayerGet,$(MANDIR),glutLayerGet) -InstallManPageLong(glutMainLoop,$(MANDIR),glutMainLoop) -InstallManPageLong(glutMenuStatusFunc,$(MANDIR),glutMenuStatusFunc) -InstallManPageLong(glutMotionFunc,$(MANDIR),glutMotionFunc) -InstallManPageLong(glutMouseFunc,$(MANDIR),glutMouseFunc) -InstallManPageLong(glutOverlayDisplayFunc,$(MANDIR),glutOverlayDisplayFunc) -InstallManPageLong(glutPopWindow,$(MANDIR),glutPopWindow) -InstallManPageLong(glutPositionWindow,$(MANDIR),glutPositionWindow) -InstallManPageLong(glutPostOverlayRedisplay,$(MANDIR),glutPostOverlayRedisplay) -InstallManPageLong(glutPostRedisplay,$(MANDIR),glutPostRedisplay) -InstallManPageLong(glutRemoveMenuItem,$(MANDIR),glutRemoveMenuItem) -InstallManPageLong(glutRemoveOverlay,$(MANDIR),glutRemoveOverlay) -InstallManPageLong(glutReportErrors,$(MANDIR),glutReportErrors) -InstallManPageLong(glutReshapeFunc,$(MANDIR),glutReshapeFunc) -InstallManPageLong(glutReshapeWindow,$(MANDIR),glutReshapeWindow) -InstallManPageLong(glutSetColor,$(MANDIR),glutSetColor) -InstallManPageLong(glutSetCursor,$(MANDIR),glutSetCursor) -InstallManPageLong(glutSetKeyRepeat,$(MANDIR),glutSetKeyRepeat) -InstallManPageLong(glutSetMenu,$(MANDIR),glutSetMenu) -InstallManPageLong(glutSetWindow,$(MANDIR),glutSetWindow) -InstallManPageLong(glutSetWindowTitle,$(MANDIR),glutSetWindowTitle) -InstallManPageLong(glutShowOverlay,$(MANDIR),glutShowOverlay) -InstallManPageLong(glutShowWindow,$(MANDIR),glutShowWindow) -InstallManPageLong(glutSolidCone,$(MANDIR),glutSolidCone) -InstallManPageLong(glutSolidCube,$(MANDIR),glutSolidCube) -InstallManPageLong(glutSolidDodecahedron,$(MANDIR),glutSolidDodecahedron) -InstallManPageLong(glutSolidIcosahedron,$(MANDIR),glutSolidIcosahedron) -InstallManPageLong(glutSolidOctahedron,$(MANDIR),glutSolidOctahedron) -InstallManPageLong(glutSolidSphere,$(MANDIR),glutSolidSphere) -InstallManPageLong(glutSolidTeapot,$(MANDIR),glutSolidTeapot) -InstallManPageLong(glutSolidTetrahedron,$(MANDIR),glutSolidTetrahedron) -InstallManPageLong(glutSolidTorus,$(MANDIR),glutSolidTorus) -InstallManPageLong(glutSpaceballButtonFunc,$(MANDIR),glutSpaceballButtonFunc) -InstallManPageLong(glutSpaceballMotionFunc,$(MANDIR),glutSpaceballMotionFunc) -InstallManPageLong(glutSpaceballRotateFunc,$(MANDIR),glutSpaceballRotateFunc) -InstallManPageLong(glutSpecialFunc,$(MANDIR),glutSpecialFunc) -InstallManPageLong(glutSpecialUpFunc,$(MANDIR),glutSpecialUpFunc) -InstallManPageLong(glutStrokeCharacter,$(MANDIR),glutStrokeCharacter) -InstallManPageLong(glutStrokeWidth,$(MANDIR),glutStrokeWidth) -InstallManPageLong(glutSwapBuffers,$(MANDIR),glutSwapBuffers) -InstallManPageLong(glutTabletButtonFunc,$(MANDIR),glutTabletButtonFunc) -InstallManPageLong(glutTabletMotionFunc,$(MANDIR),glutTabletMotionFunc) -InstallManPageLong(glutTimerFunc,$(MANDIR),glutTimerFunc) -InstallManPageLong(glutUseLayer,$(MANDIR),glutUseLayer) -InstallManPageLong(glutVisibilityFunc,$(MANDIR),glutVisibilityFunc) -InstallManPageLong(glutWarpPointer,$(MANDIR),glutWarpPointer) -InstallManPageLong(glut,$(MANDIR),glut) - -InstallManPageAliases(glutSolidCone,$(MANDIR),glutWireCone) -InstallManPageAliases(glutSolidCube,$(MANDIR),glutWireCube) -InstallManPageAliases(glutSolidDodecahedron,$(MANDIR),glutWireDodecahedron) -InstallManPageAliases(glutSolidIcosahedron,$(MANDIR),glutWireIcosahedron) -InstallManPageAliases(glutSolidOctahedron,$(MANDIR),glutWireOctahedron) -InstallManPageAliases(glutSolidSphere,$(MANDIR),glutWireSphere) -InstallManPageAliases(glutSolidTeapot,$(MANDIR),glutWireTeapot) -InstallManPageAliases(glutSolidTetrahedron,$(MANDIR),glutWireTetrahedron) -InstallManPageAliases(glutSolidTorus,$(MANDIR),glutWireTorus) - -InstallManPageAliases(glutSetWindow,$(MANDIR),glutGetWindow) -InstallManPageAliases(glutPopWindow,$(MANDIR),glutPushWindow) -InstallManPageAliases(glutShowWindow,$(MANDIR),glutHideWindow glutIconifyWindow) -InstallManPageAliases(glutSetWindowTitle,$(MANDIR),glutSetIconTitle) -InstallManPageAliases(glutShowOverlay,$(MANDIR),glutHideOverlay) -InstallManPageAliases(glutSetMenu,$(MANDIR),glutGetMenu) -InstallManPageAliases(glutAttachMenu,$(MANDIR),glutDetachMenu) -InstallManPageAliases(glutMotionFunc,$(MANDIR),glutPassiveMotionFunc) -InstallManPageAliases(glut,$(MANDIR),intro) - -InstallManPageAliases(glutBitmapWidth,$(MANDIR),glutBitmapLength) -InstallManPageAliases(glutStrokeWidth,$(MANDIR),glutStrokeLength) - -InstallManPageAliases(glutEnterGameMode,$(MANDIR),glutLeaveGameMode) - -DependTarget() diff --git a/lib/glut-3.7.6/man/glut/glut.man b/lib/glut-3.7.6/man/glut/glut.man deleted file mode 100644 index 54bd981c0ec8bf6a8103d1cd7dcadc53656b91ee..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glut.man +++ /dev/null @@ -1,247 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glut 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glut - an introduction to the OpenGL Utility Toolkit -.SH SYNOPSIS -.nf -.LP -#include -.fi -.SH DESCRIPTION -The OpenGL Utility Toolkit (GLUT) is a programming interface with ANSI C and FORTRAN bindings for writing -window system independent OpenGL programs. The toolkit supports the following functionality: -.IP -Multiple windows for OpenGL rendering. -.IP -Callback driven event processing. -.IP -Sophisticated input devices. -.IP -An ``idle'' routine and timers. -.IP -A simple, cascading pop-up menu facility. -.IP -Utility routines to generate various solid and wire frame objects. -.IP -Support for bitmap and stroke fonts. -.IP -Miscellaneous window management functions, including managing overlays. -.LP -An ANSI C implementation of GLUT for the X Window System has been -implemented by the author. Windows NT and OS/2 versions of GLUT are -also available. -.SH BACKGROUND -One of the major accomplishments in the specification of OpenGL -was the isolation of window system dependencies from OpenGL's -rendering model. The result is that OpenGL is window system independent. - -Window system operations such as the creation of a rendering window and -the handling of window system events are left to the native window system -to define. Necessary interactions between OpenGL and the window system -such as creating and binding an OpenGL context to a window are described -separately from the OpenGL specification in a window system dependent -specification. For example, the GLX specification describes the standard -by which OpenGL interacts with the X Window System. - -The predecessor to OpenGL is IRIS GL. Unlike OpenGL, IRIS GL -does specify how rendering windows are created and manipulated. IRIS -GL's windowing interface is reasonably popular largely because it is simple -to use. IRIS GL programmers can worry about graphics programming -without needing to be an expert in programming the native window system. -Experience also demonstrated that IRIS GL's windowing interface was -high-level enough that it could be retargeted to different window systems. -Silicon Graphics migrated from NeWS to the X Window System without -any major changes to IRIS GL's basic windowing interface. - -Removing window system operations from OpenGL is a sound decision -because it allows the OpenGL graphics system to be retargeted to various -systems including powerful but expensive graphics workstations as well as -mass-production graphics systems like video games, set-top boxes for -interactive television, and PCs. - -Unfortunately, the lack of a window system interface for OpenGL is a gap -in OpenGL's utility. Learning native window system APIs such as the X -Window System's Xlib or Motif can be daunting. Even those -familiar with native window system APIs need to understand the interface -that binds OpenGL to the native window system. And when an OpenGL -program is written using the native window system interface, despite the -portability of the program's OpenGL rendering code, the program itself -will be window system dependent. - -Testing and documenting OpenGL's functionality lead to the development -of the tk and aux toolkits. The aux toolkit is used in the examples found in -the OpenGL Programming Guide. Unfortunately, aux has numerous -limitations and its utility is largely limited to toy programs. The tk library -has more functionality than aux but was developed in an ad hoc fashion and -still lacks much important functionality that IRIS GL programmers expect, -like pop-up menus and overlays. - -GLUT is designed to fill the need for a window system independent -programming interface for OpenGL programs. The interface is designed to -be simple yet still meet the needs of useful OpenGL programs. Features -from the IRIS GL, aux, and tk interfaces are included to make it easy for -programmers used to these interfaces to develop programs for GLUT. -.SH PHILOSPHY -GLUT simplifies the implementation of programs using OpenGL -rendering. The GLUT application programming interface (API) requires -very few routines to display a graphics scene rendered using OpenGL. The -GLUT API (like the OpenGL API) is stateful. Most initial GLUT state is -defined and the initial state is reasonable for simple programs. - -The GLUT routines also take relatively few parameters. No pointers are -returned. The only pointers passed into GLUT are pointers to character -strings (all strings passed to GLUT are copied, not referenced) and opaque -font handles. - -The GLUT API is (as much as reasonable) window system independent. For -this reason, GLUT does not return any native window system handles, -pointers, or other data structures. More subtle window system dependencies -such as reliance on window system dependent fonts are avoided by GLUT; -instead, GLUT supplies its own (limited) set of fonts. - -For programming ease, GLUT provides a simple menu sub-API. While the -menuing support is designed to be implemented as pop-up menus, GLUT -gives window system leeway to support the menu functionality in another -manner (pull-down menus for example). - -Two of the most important pieces of GLUT state are the current window -and current menu. Most window and menu routines affect the current -window or menu respectively. Most callbacks implicitly set the current -window and menu to the appropriate window or menu responsible for the -callback. GLUT is designed so that a program with only a single window -and/or menu will not need to keep track of any window or menu identifiers. -This greatly simplifies very simple GLUT programs. - -GLUT is designed for simple to moderately complex programs focused on -OpenGL rendering. GLUT implements its own event loop. For this reason, -mixing GLUT with other APIs that demand their own event handling -structure may be difficult. The advantage of a builtin event dispatch loop is -simplicity. - -GLUT contains routines for rendering fonts and geometric objects, however -GLUT makes no claims on the OpenGL display list name space. For this -reason, none of the GLUT rendering routines use OpenGL display lists. It is -up to the GLUT programmer to compile the output from GLUT rendering -routines into display lists if this is desired. - -GLUT routines are logically organized into several sub-APIs according to -their functionality. The sub-APIs are: -.IP Initialization. -Command line processing, window system initialization, and initial -window creation state are controlled by these routines. -.IP "Beginning Event Processing." -This routine enters GLUT's event processing loop. This routine never -returns, and it continuously calls GLUT callbacks as necessary. -.IP "Window Management." -These routines create and control windows. -.IP "Overlay Management." -These routines establish and manage overlays for windows. -.IP "Menu Management." -These routines create and control pop-up menus. -.IP "Callback Registration." -These routines register callbacks to be called by the GLUT event -processing loop. -.IP "Color Index Colormap Management." -These routines allow the manipulation of color index colormaps for -windows. -.IP "State Retrieval." -These routines allows programs to retrieve state from GLUT. -.IP "Font Rendering." -These routines allow rendering of stroke and bitmap fonts. -.IP "Geometric Shape Rendering." -These routines allow the rendering of 3D geometric objects including -spheres, cones, icosahedrons, and teapots. -.SH CONVENTIONS -GLUT window and screen coordinates are expressed in pixels. The -upper left hand corner of the screen or a window is (0,0). X coordinates -increase in a rightward direction; Y coordinates increase in a -downward direction. Note: This is inconsistent with OpenGL's -coordinate scheme that generally considers the lower left hand -coordinate of a window to be at (0,0) but is consistent with most -popular window systems. - -Integer identifiers in GLUT begin with one, not zero. So window -identifiers, menu identifiers, and menu item indexes are based from -one, not zero. - -In GLUT's ANSI C binding, for most routines, basic types (int, -char*) are used as parameters. In routines where the parameters are -directly passed to OpenGL routines, OpenGL types (GLfloat) are -used. - -The header files for GLUT should be included in GLUT programs -with the following include directive: -.nf -.LP -#include -.fi -.LP -Because a very large window system software vendor (who will -remain nameless) has an apparent inability to appreciate that -OpenGL's API is independent of their window system API, portable -ANSI C GLUT programs should not directly include or -. Instead, ANSI C GLUT programs should rely on - to include the necessary OpenGL and GLU related -header files. - -The ANSI C GLUT library archive is typically named libglut.a on -Unix systems. GLUT programs need to link with the system's OpenGL -and GLUT libraries (and any libraries these libraries potentially -depend on). A set of window system dependent libraries may also be -necessary for linking GLUT programs. For example, programs using -the X11 GLUT implementation typically need to link with Xlib, the X -extension library, possibly the X Input extension library, the X -miscellaneous utilities library, and the math library. An example -X11/Unix compile line would look like: -.nf -.LP -cc -o foo foo.c -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm -.fi -.SH SEE ALSO -glutAddMenuEntry, glutAddSubMenu, glutAttachMenu, glutBitmapCharacter, -glutBitmapWidth, glutButtonBoxFunc, glutChangeToMenuEntry, -glutChangeToSubMenu, glutCopyColormap, glutCreateMenu, -glutCreateSubWindow, glutCreateWindow, glutDestroyMenu, -glutDestroyWindow, glutDeviceGet, glutDialsFunc, glutDisplayFunc, -glutEntryFunc, glutEstablishOverlay, glutExtensionSupported, -glutFullScreen, glutGet, glutGetColor, glutGetModifiers, glutIdleFunc, -glutInit, glutInitDisplayMode, glutInitWindowPosition, -glutKeyboardFunc, glutLayerGet, glutMainLoop, glutMenuStatusFunc, -glutMotionFunc, glutMouseFunc, glutOverlayDisplayFunc, glutPopWindow, -glutPositionWindow, glutPostOverlayRedisplay, glutPostRedisplay, -glutRemoveMenuItem, glutRemoveOverlay, glutReshapeFunc, -glutReshapeWindow, glutSetColor, glutSetCursor, glutSetMenu, -glutSetWindow, glutSetWindowTitle, glutShowOverlay, glutShowWindow, -glutSolidCone, glutSolidCube, glutSolidDodecahedron, -glutSolidIcosahedron, glutSolidOctahedron, glutSolidSphere, -glutSolidTeapot, glutSolidTetrahedron, glutSolidTorus, -glutSpaceballButtonFunc, glutSpaceballMotionFunc, -glutSpaceballRotateFunc, glutSpecialFunc, glutStrokeCharacter, -glutStrokeWidth, glutSwapBuffers, glutTabletButtonFunc, -glutTabletMotionFunc, glutTimerFunc, glutUseLayer, glutVisibilityFunc, -.SH REFERENCES -Mark Kilgard, \fIProgramming OpenGL for the X Window System\fP, Addison-Wesley, ISBN 0-201-48359-9, 1996. - -Mark Kilgard, \fIThe OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3\fP (the official GLUT specification). -.SH WEB REFERENCES -Main GLUT page -.br -http://reality.sgi.com/mjk/glut3/glut3.html - -GLUT Frequently Asked Question list -.br -http://reality.sgi.com/mjk/glut3/glut-faq.html - -The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3 -.br -http://reality.sgi.com/mjk/spec3/spec3.html -.br -http://reality.sgi.com/mjk/glut3/glut-3.spec.ps.gz - -OpenGL and X: An OpenGL Toolkit article (PostScript) -.br -http://reality.sgi.com/mjk/glut3/glut.column1.ps.gz -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutAddMenuEntry.man b/lib/glut-3.7.6/man/glut/glutAddMenuEntry.man deleted file mode 100644 index 5df7c2c58ab656fc1d36978683ddabe0aa74e8ac..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutAddMenuEntry.man +++ /dev/null @@ -1,26 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutAddMenuEntry 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutAddMenuEntry - adds a menu entry to the bottom of the current menu. -.SH SYNTAX -.nf -.LP -void glutAddMenuEntry(char *name, int value); -.fi -.SH ARGUMENTS -.IP \fIname\fP 1i -ASCII character string to display in the menu entry. -.IP \fIvalue\fP 1i -Value to return to the menu's callback function if the menu -entry is selected. -.SH DESCRIPTION -glutAddMenuEntry adds a menu entry to the bottom of the current -menu. The string name will be displayed for the newly added menu -entry. If the menu entry is selected by the user, the menu's callback -will be called passing value as the callback's parameter. -.SH SEE ALSO -glutAddSubMenu, glutCreateMenu, glutChangeToMenuEntry, glutRemoveMenuItem -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutAddSubMenu.man b/lib/glut-3.7.6/man/glut/glutAddSubMenu.man deleted file mode 100644 index 0446b990475b1e416ea70433231fa54a8ed53862..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutAddSubMenu.man +++ /dev/null @@ -1,27 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutAddSubMenu 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutAddSubMenu - adds a sub-menu trigger to the bottom of the current menu. -.SH SYNTAX -.nf -.LP -void glutAddSubMenu(char *name, int menu); -.fi -.SH ARGUMENTS -.IP \fIname\fP 1i -ASCII character string to display in the menu item from which -to cascade the sub-menu. -.IP \fImenu\fP 1i -Identifier of the menu to cascade from this sub-menu menu item. -.SH DESCRIPTION -glutAddSubMenu adds a sub-menu trigger to the bottom of the -current menu. The string name will be displayed for the newly added -sub-menu trigger. If the sub-menu trigger is entered, the sub-menu -numbered menu will be cascaded, allowing sub-menu menu items to -be selected. -.SH SEE ALSO -glutAddMenuEntry, glutChangeToSubMenu, glutRemoveItem -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutAttachMenu.man b/lib/glut-3.7.6/man/glut/glutAttachMenu.man deleted file mode 100644 index 0bfb8963ac45f6e3ea0eeb66d03c71466207e57e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutAttachMenu.man +++ /dev/null @@ -1,29 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutAttachMenu 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutAttachMenu - attaches a mouse button for the current window to the -identifier of the current menu; glutDetachMenu - detaches an attached -mouse button from the current window. -.SH SYNTAX -.nf -.LP -void glutAttachMenu(int button); -void glutDetachMenu(int button); -.fi -.SH ARGUMENTS -.IP \fIbutton\fP 1i -The button to attach a menu or detach a menu. -.SH DESCRIPTION -glutAttachMenu attaches a mouse button for the current window to the -identifier of the current menu; glutDetachMenu detaches an attached -mouse button from the current window. By attaching a menu identifier to -a button, the named menu will be popped up when the user presses the -specified button. button should be one of GLUT_LEFT_BUTTON, -GLUT_MIDDLE_BUTTON, and GLUT_RIGHT_BUTTON. Note that the menu -is attached to the button by identifier, not by reference. -.SH SEE ALSO -glutCreateMenu, glutMouseFunc, glutMenuStatusFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutBitmapCharacter.man b/lib/glut-3.7.6/man/glut/glutBitmapCharacter.man deleted file mode 100644 index 7aae01731e2f4487f8420d46c04a73dca6871e9a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutBitmapCharacter.man +++ /dev/null @@ -1,102 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutBitmapCharacter 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutBitmapCharacter - renders a bitmap character using OpenGL. -.SH SYNTAX -.nf -.LP -void glutBitmapCharacter(void *font, int character); -.fi -.SH ARGUMENTS -.IP \fIfont\fP 1i -Bitmap font to use. -.IP \fIcharacter\fP 1i -Character to render (not confined to 8 bits). -.SH DESCRIPTION -Without using any display lists, glutBitmapCharacter renders the -character in the named bitmap font. The available fonts are: -.TP 8 -.B GLUT_BITMAP_8_BY_13 -A fixed width font with every character fitting in an 8 by 13 pixel -rectangle. The exact bitmaps to be used is defined by the standard X -glyph bitmaps for the X font named: - --misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1 - -.TP 8 -.B GLUT_BITMAP_9_BY_15 -A fixed width font with every character fitting in an 9 by 15 pixel -rectangle. The exact bitmaps to be used is defined by the standard X -glyph bitmaps for the X font named: - --misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1 - -.TP 8 -.B GLUT_BITMAP_TIMES_ROMAN_10 -A 10-point proportional spaced Times Roman font. The exact -bitmaps to be used is defined by the standard X glyph bitmaps for -the X font named: - --adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1 - -.TP 8 -.B GLUT_BITMAP_TIMES_ROMAN_24 -A 24-point proportional spaced Times Roman font. The exact -bitmaps to be used is defined by the standard X glyph bitmaps for -the X font named: - --adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1 - -.TP 8 -.B GLUT_BITMAP_HELVETICA_10 -A 10-point proportional spaced Helvetica font. The exact bitmaps -to be used is defined by the standard X glyph bitmaps for the X font -named: - --adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1 - -.TP 8 -.B GLUT_BITMAP_HELVETICA_12 -A 12-point proportional spaced Helvetica font. The exact bitmaps -to be used is defined by the standard X glyph bitmaps for the X font -named: - --adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1 - -.TP 8 -.B GLUT_BITMAP_HELVETICA_18 -A 18-point proportional spaced Helvetica font. The exact bitmaps -to be used is defined by the standard X glyph bitmaps for the X font -named: - --adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1 -.LP -Rendering a nonexistent character has no effect. -glutBitmapCharacter automatically sets the OpenGL unpack pixel -storage modes it needs appropriately and saves and restores the previous -modes before returning. The generated call to glBitmap will adjust the -current raster position based on the width of the character. -.SH EXAMPLE -Here is a routine that shows how to render a string of ASCII -text with glutBitmapCharacter: -.nf -.LP - void - output(int x, int y, char *string) - { - int len, i; - - glRasterPos2f(x, y); - len = (int) strlen(string); - for (i = 0; i < len; i++) { - glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, string[i]); - } - } -.fi -.LP -.SH SEE ALSO -glutBitmapWidth, glutStrokeCharacter -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutBitmapWidth.man b/lib/glut-3.7.6/man/glut/glutBitmapWidth.man deleted file mode 100644 index d87afd8ef15c89bce646b89dd685d49939149789..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutBitmapWidth.man +++ /dev/null @@ -1,34 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutBitmapWidth 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutBitmapWidth - returns the width of a bitmap character, -glutBitmapLength returns the length of a bitmap font string. -.SH SYNTAX -.nf -.LP -int glutBitmapWidth(void *font, int character) -int glutBitmapLength(void *font, const unsigned char *string) -.fi -.SH ARGUMENTS -.IP \fIfont\fP 1i -Bitmap font to use. For valid values, see the -glutBitmapCharacter description. -.IP \fIcharacter\fP 1i -Character to return width of (not confined to 8 bits). -.IP \fIstring\fP 1i -Text string (8-bit characters), nul terminated. -.SH DESCRIPTION -glutBitmapWidth returns the width in pixels of a bitmap character in -a supported bitmap font. While the width of characters in a font may vary -(though fixed width fonts do not vary), the maximum height -characteristics of a particular font are fixed. - -glutBitmapLength returns the length in pixels of a string (8-bit -characters). This length is equivalent to summing all the widths -returned by glutBitmapWidth for each character in the string. -.SH SEE ALSO -glutBitmapCharacter, glutStrokeWidth -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutButtonBoxFunc.man b/lib/glut-3.7.6/man/glut/glutButtonBoxFunc.man deleted file mode 100644 index f5742a7cd657d345e059239aeea243586e21586b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutButtonBoxFunc.man +++ /dev/null @@ -1,37 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutButtonBoxFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutButtonBoxFunc - sets the dial & button box button callback for the current window. -.SH SYNTAX -.nf -.LP -void glutButtonBoxFunc(void (*func)(int button, int state)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new button box callback function. -.SH DESCRIPTION -glutButtonBoxFunc sets the dial & button box button callback for the -current window. The dial & button box button callback for a window is -called when the window has dial & button box input focus (normally, -when the mouse is in the window) and the user generates dial & button -box button presses. The button parameter will be the button number -(starting at one). The number of available dial & button box buttons can -be determined with -glutDeviceGet(GLUT_NUM_BUTTON_BOX_BUTTONS). The state is -either GLUT_UP or GLUT_DOWN indicating whether the callback was due -to a release or press respectively. - -Registering a dial & button box button callback when a dial & button -box device is not available is ineffectual and not an error. In this case, no -dial & button box button callbacks will be generated. - -Passing NULL to glutButtonBoxFunc disables the generation of dial & -button box button callbacks. When a new window is created, no dial & -button box button callback is initially registered. -.SH SEE ALSO -glutDialsFunc, glutDeviceGet, glutSpaceballButtonFunc, glutTabletButtonFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutChangeToMenuEntry.man b/lib/glut-3.7.6/man/glut/glutChangeToMenuEntry.man deleted file mode 100644 index 409068a321a572009b6350212976d58cedce13db..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutChangeToMenuEntry.man +++ /dev/null @@ -1,32 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutChangeToMenuEntry 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutChangeToMenuEntry - changes the specified menu item in -the current menu into a menu entry. -.SH SYNTAX -.nf -.LP -void glutChangeToMenuEntry(int entry, char *name, int value); -.fi -.SH ARGUMENTS -.IP \fIentry\fP 1i -Index into the menu items of the current menu (1 is the topmost menu item). -.IP \fIname\fP 1i -ASCII character string to display in the menu entry. -.IP \fIvalue\fP 1i -Value to return to the menu's callback function if the menu entry is selected. -.SH DESCRIPTION -glutChangeToMenuEntry changes the specified menu entry in the -current menu into a menu entry. The entry parameter determines which -menu item should be changed, with one being the topmost item. entry -must be between 1 and glutGet(GLUT_MENU_NUM_ITEMS) inclusive. -The menu item to change does not have to be a menu entry already. The -string name will be displayed for the newly changed menu entry. The -value will be returned to the menu's callback if this menu entry is -selected. -.SH SEE ALSO -glutChangeToSubMenu, glutAddMenuEntry, glutRemoveMenuItem -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutChangeToSubMenu.man b/lib/glut-3.7.6/man/glut/glutChangeToSubMenu.man deleted file mode 100644 index e735bd137fd6d85be9d5ef05088628a79c30ed60..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutChangeToSubMenu.man +++ /dev/null @@ -1,32 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutChangeToSubMenu 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutChangeToSubMenu - changes the specified menu item in the current -menu into a sub-menu trigger. -.SH SYNTAX -.nf -.LP -void glutChangeToSubMenu(int entry, char *name, int menu); -.fi -.SH ARGUMENTS -.IP \fIentry\fP 1i -Index into the menu items of the current menu (1 is the topmost menu item). -.IP \fIname\fP 1i -ASCII character string to display in the menu item to cascade the sub-menu from. -.IP \fImenu\fP 1i -Identifier of the menu to cascade from this sub-menu menu item. -.SH DESCRIPTION -glutChangeToSubMenu changes the specified menu item in the current -menu into a sub-menu trigger. The entry parameter determines which -menu item should be changed, with one being the topmost item. entry -must be between 1 and glutGet(GLUT_MENU_NUM_ITEMS) inclusive. -The menu item to change does not have to be a sub-menu trigger already. -The string name will be displayed for the newly changed sub-menu -trigger. The menu identifier names the sub-menu to cascade from the -newly added sub-menu trigger. -.SH SEE ALSO -glutChangeToMenuEntry, glutAddSubMenu, glutRemoveMenuItem -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutCopyColormap.man b/lib/glut-3.7.6/man/glut/glutCopyColormap.man deleted file mode 100644 index a1d055905e21b6ad6ca5054c011b0397d9a7c0b6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutCopyColormap.man +++ /dev/null @@ -1,47 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutCopyColormap 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutCopyColormap - copies the logical colormap for the layer in use -from a specified window to the current window. -.SH SYNTAX -.nf -.LP -void glutCopyColormap(int win); -.fi -.SH ARGUMENTS -.IP \fIwin\fP 1i -The identifier of the window to copy the logical colormap from. -.SH DESCRIPTION -glutCopyColormap copies (lazily if possible to promote sharing) the -logical colormap from a specified window to the current window's layer -in use. The copy will be from the normal plane to the normal plane; or -from the overlay to the overlay (never across different layers). Once a -colormap has been copied, avoid setting cells in the colormap with -glutSetColor since that will force an actual copy of the colormap if it -was previously copied by reference. glutCopyColormap should only -be called when both the current window and the win window are color -index windows. -.SH EXAMPLE -Here is an example of how to create two color index GLUT windows with -their colormaps loaded identically and so that the windows are -likely to share the same colormap: -.nf -.LP - int win1, win2; - - glutInitDisplayMode(GLUT_INDEX); - win1 = glutCreateWindow("first color index win"); - glutSetColor(0, 0.0, 0.0, 0.0); /* black */ - glutSetColor(1, 0.5, 0.5, 0.5); /* gray */ - glutSetColor(2, 1.0, 1.0, 1.0); /* black */ - glutSetColor(3, 1.0, 0.0, 0.0); /* red */ - win2 = glutCreateWindow("second color index win"); - glutCopyColormap(win1); -.fi -.LP -.SH SEE ALSO -glutSetColor, glutGetColor, glutCreateWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutCreateMenu.man b/lib/glut-3.7.6/man/glut/glutCreateMenu.man deleted file mode 100644 index b8762ad1b179350e826926650d6142839ba9e6e1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutCreateMenu.man +++ /dev/null @@ -1,61 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutCreateMenu 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutCreateMenu - creates a new pop-up menu. -.SH SYNTAX -.nf -.LP -int glutCreateMenu(void (*func)(int value)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The callback function for the menu that is called when a menu -entry from the menu is selected. The value passed to the -callback is determined by the value for the selected menu -entry. -.SH DESCRIPTION -glutCreateMenu creates a new pop-up menu and returns a unique -small integer identifier. The range of allocated identifiers starts at -one. The menu identifier range is separate from the window -identifier range. Implicitly, the current menu is set to the newly -created menu. This menu identifier can be used when calling -glutSetMenu. - -When the menu callback is called because a menu entry is selected -for the menu, the current menu will be implicitly set to the menu -with the selected entry before the callback is made. -.SH EXAMPLE -Here is a quick example of how to create a GLUT popup menu with -two submenus and attach it to the right button of the current window: -.nf -.LP - int submenu1, submenu2; - - submenu1 = glutCreateMenu(selectMessage); - glutAddMenuEntry("abc", 1); - glutAddMenuEntry("ABC", 2); - submenu2 = glutCreateMenu(selectColor); - glutAddMenuEntry("Green", 1); - glutAddMenuEntry("Red", 2); - glutAddMenuEntry("White", 3); - glutCreateMenu(selectFont); - glutAddMenuEntry("9 by 15", 0); - glutAddMenuEntry("Times Roman 10", 1); - glutAddMenuEntry("Times Roman 24", 2); - glutAddSubMenu("Messages", submenu1); - glutAddSubMenu("Color", submenu2); - glutAttachMenu(GLUT_RIGHT_BUTTON); -.fi -.LP -.SH X IMPLEMENTATION NOTES -If available, GLUT for X will take advantage of overlay planes for -implementing pop-up menus. The use of overlay planes can -eliminate display callbacks when pop-up menus are deactivated. The -SERVER_OVERLAY_VISUALS convention is used to determine -if overlay visuals are available. -.SH SEE ALSO -glutCreateWindow, glutDestroyMenu, glutSetMenu, glutAttachMenu -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutCreateSubWindow.man b/lib/glut-3.7.6/man/glut/glutCreateSubWindow.man deleted file mode 100644 index a9e5273ccc611b0ed27efac65e0e3c7870a39cce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutCreateSubWindow.man +++ /dev/null @@ -1,47 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutCreateSubWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutCreateSubWindow - creates a subwindow. -.SH SYNTAX -.nf -.LP -int glutCreateSubWindow(int win, - int x, int y, int width, int height); -.fi -.SH ARGUMENTS -.IP \fIwin\fP 1i -Identifier of the subwindow's parent window. -.IP \fIx\fP 1i -Window X location in pixels relative to parent window's origin. -.IP \fIy\fP 1i -Window Y location in pixels relative to parent window's origin. -.IP \fIwidth\fP 1i -Width in pixels. -.IP \fIheight\fP 1i -Height in pixels. -.SH DESCRIPTION -glutCreateSubWindow creates a subwindow of the window identified -by win of size width and height at location x and y within the current -window. Implicitly, the current window is set to the newly created -subwindow. - -Each created window has a unique associated OpenGL context. State -changes to a window's associated OpenGL context can be done -immediately after the window is created. - -The display state of a window is initially for the window to be shown. -But the window's display state is not actually acted upon until -glutMainLoop is entered. This means until glutMainLoop is called, -rendering to a created window is ineffective. Subwindows can not be -iconified. - -Subwindows can be nested arbitrarily deep. - -The value returned is a unique small integer identifier for the window. -The range of allocated identifiers starts at one. -.SH SEE ALSO -glutCreateWindow, glutDestroyWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutCreateWindow.man b/lib/glut-3.7.6/man/glut/glutCreateWindow.man deleted file mode 100644 index 0d39863d37d184b6e8e45132c538502502ec33e0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutCreateWindow.man +++ /dev/null @@ -1,43 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutCreateWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutCreateWindow - creates a top-level window. -.SH SYNTAX -.nf -.LP -int glutCreateWindow(char *name); -.fi -.SH ARGUMENTS -.IP \fIname\fP 1i -ASCII character string for use as window name. -.SH DESCRIPTION -glutCreateWindow creates a top-level window. The -name will be provided to the window system as the window's name. The -intent is that the window system will label the window with the name. - -Implicitly, the current window is set to the newly created window. - -Each created window has a unique associated OpenGL context. State -changes to a window's associated OpenGL context can be done -immediately after the window is created. - -The display state of a window is initially for the window to be shown. -But the window's display state is not actually acted upon until -glutMainLoop is entered. This means until glutMainLoop is called, -rendering to a created window is ineffective because the window can not -yet be displayed. - -The value returned is a unique small integer identifier for the window. -The range of allocated identifiers starts at one. This window identifier -can be used when calling glutSetWindow. -.SH X IMPLEMENTATION NOTES -The proper X Inter-Client Communication Conventions Manual -(ICCCM) top-level properties are established. The WM_COMMAND -property that lists the command line used to invoke the GLUT program -is only established for the first window created. -.SH SEE ALSO -glutCreateSubWindow, glutCreateMenu, glutDestroyWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutDestroyMenu.man b/lib/glut-3.7.6/man/glut/glutDestroyMenu.man deleted file mode 100644 index 55d5a6ccd3873de0d05d2136541d9d834f37ef64..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutDestroyMenu.man +++ /dev/null @@ -1,22 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutDestroyMenu 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutDestroyMenu - destroys the specified menu. -.SH SYNTAX -.nf -.LP -void glutDestroyMenu(int menu); -.fi -.SH ARGUMENTS -.IP \fImenu\fP 1i -The identifier of the menu to destroy. -.SH DESCRIPTION -glutDestroyMenu destroys the specified menu by menu. If menu -was the current menu, the current menu becomes invalid and -glutGetMenu will return zero. -.SH SEE ALSO -glutCreateMenu, glutDestroyWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutDestroyWindow.man b/lib/glut-3.7.6/man/glut/glutDestroyWindow.man deleted file mode 100644 index 5c30e67796c3f9d505228fc75bfa70ffded4dc3d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutDestroyWindow.man +++ /dev/null @@ -1,25 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutDestroyWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutDestroyWindow - destroys the specified window. -.SH SYNTAX -.nf -.LP -void glutDestroyWindow(int win); -.fi -.SH ARGUMENTS -.IP \fIwin\fP 1i -Identifier of GLUT window to destroy. -.SH DESCRIPTION -glutDestroyWindow destroys the window specified by win and the -window's associated OpenGL context, logical colormap (if the window -is color index), and overlay and related state (if an overlay has been -established). Any subwindows of destroyed windows are also destroyed -by glutDestroyWindow. If win was the current window, the current -window becomes invalid ( glutGetWindow will return zero). -.SH SEE ALSO -glutCreateWindow, glutCreateSubWindow, glutDestroyMenu -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutDeviceGet.man b/lib/glut-3.7.6/man/glut/glutDeviceGet.man deleted file mode 100644 index e689055fcc6ffeb218b5182538d5f350377799c1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutDeviceGet.man +++ /dev/null @@ -1,85 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996, 1998. -.\" -.TH glutDeviceGet 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutDeviceGet - retrieves GLUT device information represented by integers. -.SH SYNTAX -.nf -.LP -int glutDeviceGet(GLenum info); -.fi -.SH ARGUMENTS -.IP \fIinfo\fP 1i -Name of device information to retrieve. -.TP 8 -.B GLUT_HAS_KEYBOARD -Non-zero if a keyboard is available; zero if not available. For most -GLUT implementations, a keyboard can be assumed. -.TP 8 -.B GLUT_HAS_MOUSE -Non-zero if a mouse is available; zero if not available. For most GLUT -implementations, a keyboard can be assumed. -.TP 8 -.B GLUT_HAS_SPACEBALL -Non-zero if a Spaceball is available; zero if not available. -.TP 8 -.B GLUT_HAS_DIAL_AND_BUTTON_BOX -Non-zero if a dial & button box is available; zero if not available. -.TP 8 -.B GLUT_HAS_TABLET -Non-zero if a tablet is available; zero if not available. -.TP 8 -.B GLUT_NUM_MOUSE_BUTTONS -Number of buttons supported by the mouse. If no mouse is supported, zero is -returned. -.TP 8 -.B GLUT_NUM_SPACEBALL_BUTTONS -Number of buttons supported by the Spaceball. If no Spaceball is supported, zero is -returned. -.TP 8 -.B GLUT_NUM_BUTTON_BOX_BUTTONS -Number of buttons supported by the dial & button box device. If no dials & button -box device is supported, zero is returned. -.TP 8 -.B GLUT_NUM_DIALS -Number of dials supported by the dial & button box device. If no dials & button -box device is supported, zero is returned. -.TP 8 -.B GLUT_NUM_TABLET_BUTTONS -Number of buttons supported by the tablet. If no tablet is supported, zero is -returned. -.TP 8 -.B GLUT_DEVICE_IGNORE_KEY_REPEAT -Returns true if the current window's auto repeated keys are ignored. -This state is controlled by glutIgnoreKeyRepeat. -.TP 8 -.B GLUT_DEVICE_KEY_REPEAT -The window system's global key repeat state. Returns either GLUT_KEY_REPEAT_OFF, GLUT_KEY_REPEAT_ON, or GLUT_KEY_REPEAT_DEFAULT. This will not necessarily return the value last passed to glutSetKeyRepeat. -.TP 8 -.B GLUT_JOYSTICK_POLL_RATE -Returns the current window's joystick poll rate as set by glutJoystickFunc. If no joystick is supported, the poll rate will always be zero. The joystick poll -rate also returns zero if the poll rate last specified to glutJoystickFunc is negative or a NULL callback was registered. -.TP 8 -.B GLUT_HAS_JOYSTICK -Non-zero if a joystick is available; zero if not available. -.TP 8 -.B GLUT_JOYSTICK_BUTTONS -Number of buttons supported by the joystick. If no joystick is supported, zero is returned. -.TP 8 -.B GLUT_JOYSTICK_AXES -Number of axes supported by the joystick. If no joystick is supposrted, zero is returned. -.SH DESCRIPTION -glutDeviceGet retrieves GLUT device information represented by integers. The info -parameter determines what type of device information to return. Requesting device -information for an invalid GLUT device information name returns negative one. -.SH X IMPLEMENTATION NOTES -The current implementation uses to X Input extension to regonize SGI's Spaceball, -tablet, and dial and button box devices. -.SH WIN32 IMPLEMENTATION NOTES -The GLUT_DEVICE_KEY_REPEAT alwasy returns GLUT_KEY_REPEAT_ON. -.SH SEE ALSO -glutGet, glutKeyboardFunc, glutMouseFunc, glutSpaceballMotion, glutTabletMotionFunc, glutTabletButtonFunc, -glutDialsFunc, glutButtonBoxFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat, glutJoystickFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutDialsFunc.man b/lib/glut-3.7.6/man/glut/glutDialsFunc.man deleted file mode 100644 index e7bf9268d253f666c707ad8d3d23bc6e818be186..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutDialsFunc.man +++ /dev/null @@ -1,37 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutDialsFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutDialsFunc - sets the dial & button box dials callback for the current window. -.SH SYNTAX -.nf -.LP -void glutDialsFunc(void (*func)(int dial, int value)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new dials callback function. -.SH DESCRIPTION -glutDialsFunc sets the dial & button box dials callback for the -current window. The dial & button box dials callback for a window is -called when the window has dial & button box input focus (normally, -when the mouse is in the window) and the user generates dial & button -box dial changes. The dial parameter will be the dial number (starting -at one). The number of available dial & button box dials can be -determined with glutDeviceGet(GLUT_NUM_DIALS). The value -measures the absolute rotation in degrees. Dial values do not ``roll over'' -with each complete rotation but continue to accumulate degrees (until the -int dial value overflows). - -Registering a dial & button box dials callback when a dial & button box -device is not available is ineffectual and not an error. In this case, no dial -& button box dials callbacks will be generated. - -Passing NULL to glutDialsFunc disables the generation of dial & -button box dials callbacks. When a new window is created, no dial & -button box dials callback is initially registered. -.SH SEE ALSO -glutButtonBoxFunc, glutDeviceGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutDisplayFunc.man b/lib/glut-3.7.6/man/glut/glutDisplayFunc.man deleted file mode 100644 index 5753bf70eb66bcbc89d1b23d405b5d6041f55837..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutDisplayFunc.man +++ /dev/null @@ -1,59 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutDisplayFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutDisplayFunc - sets the display callback for the current window. -.SH SYNTAX -.nf -.LP -void glutDisplayFunc(void (*func)(void)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new display callback function. -.SH DESCRIPTION -glutDisplayFunc sets the display callback for the current window. -When GLUT determines that the normal plane for the window needs to be -redisplayed, the display callback for the window is called. Before the -callback, the current window is set to the window needing to be -redisplayed and (if no overlay display callback is registered) the layer in -use is set to the normal plane. The display callback is called with no -parameters. The entire normal plane region should be redisplayed in -response to the callback (this includes ancillary buffers if your program -depends on their state). - -GLUT determines when the display callback should be triggered based on -the window's redisplay state. The redisplay state for a window can be -either set explicitly by calling glutPostRedisplay or implicitly as the -result of window damage reported by the window system. Multiple posted -redisplays for a window are coalesced by GLUT to minimize the number -of display callbacks called. - -When an overlay is established for a window, but there is no overlay -display callback registered, the display callback is used for redisplaying -both the overlay and normal plane (that is, it will be called if either the -redisplay state or overlay redisplay state is set). In this case, the layer in -use is not implicitly changed on entry to the display callback. - -See glutOverlayDisplayFunc to understand how distinct callbacks -for the overlay and normal plane of a window may be established. - -When a window is created, no display callback exists for the window. It is -the responsibility of the programmer to install a display callback for the -window before the window is shown. A display callback must be -registered for any window that is shown. If a window becomes displayed -without a display callback being registered, a fatal error occurs. Passing -NULL to glutDisplayFunc is illegal as of GLUT 3.0; there is no way to -``deregister'' a display callback (though another callback routine can -always be registered). - -Upon return from the display callback, the normal damaged state of the -window (returned by calling glutLayerGet(GLUT_NORMAL_DAMAGED) -is cleared. If there is no overlay display callback registered the overlay -damaged state of the window (returned by calling -glutLayerGet(GLUT_OVERLAY_DAMAGED) is also cleared. -.SH SEE ALSO -glutCreateMenu, glutPostRedisplay, glutOverlayDisplayFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutEnterGameMode.man b/lib/glut-3.7.6/man/glut/glutEnterGameMode.man deleted file mode 100644 index db46602d420d0b8f75406752006363ac58417adc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutEnterGameMode.man +++ /dev/null @@ -1,72 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1998. -.\" -.TH glutEnterGameMode 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutEnterGameMode, glutLeaveGameMode - enters and leaves GLUT's game mode. -.SH SYNTAX -.nf -.LP -void glutEnterGameMode(void); -void glutLeaveGameMode(void); -.fi -.SH DESCRIPTION - -glutEnterGameMode is designed to enable high-performance fullscreen GLUT rendering, possibly -at a different screen display format. Calling glutEnterGameMode creates a -special fullscreen GLUT window (with its own callbacks and OpenGL rendering context -state). If the game mode string describes a possible screen display format, -GLUT also changes the screen display format to the one described by the -game mode string. glutLeaveGameMode leaves the GLUT game mode and returns the -screen display format to its default format. - -When game mode is entered, certain GLUT functionality is disable to facilitate -high-performance fullscreen rendering. GLUT pop-up menus are not available -while in game mode. Other created windows and subwindows are not displayed -in GLUT game mode. Game mode will also hide all other applications running -on the computer's display screen. -The intent of these restrictions is to eliminate window -clipping issues, permit screen display format changes, -and permit fullscreen -rendering optimization such as page flipping for fullscreen buffer swaps. - -After leaving game mode, the GLUT functionality disabled in game mode is -available again. The game mode window (and its OpenGL rendering state) is -destroyed when leaving game mode. Any windows and subwindows created before -entering the game mode are displayed in their previous locations. The OpenGL -state of normal GLUT windows and subwindows is not disturbed by entering -and/or leaving game mode. - -The following GLUT routines are ignored in game mode: glutFullScreen, -glutSetWindowTitle, glutSetIconTitle, glutPositionWindow, glutReshapeWindow, -glutPopWindow, glutPushWindow, glutIconifyWindow, glutShowWindow, -glutHideWindow. - -glutEnterGameMode can be called when already in game mode. This will destroy -the previous game mode window (including any OpenGL rendering state) and -create a new game mode window with a new OpenGL rendering context. -Also if glutEnterGameMode is called when already in game mode and if the game mode -string has changed and describes a possible screen display format, the new -screen display format takes effect. A reshape callback is generated if the -game mode window changes size due to a screen display format change. - -Re-entering game mode provides a mechanism for changing the screen display -format while already in game mode. Note though that the game mode window's -OpenGL state is lost in this process and the application is responsible for -re-initializing the newly created game mode window OpenGL state when -re-entering game mode. - -Game mode cannot be entered while pop-up menus are in use. - -Note that the glutEnterGameMode and glutFullScreen routines operate differently. -glutFullScreen simply makes the current window match the size of the screen. -glutFullScreen does not change the screen display format and does not disable -any GLUT features such as pop-up menus; glutFullScreen continues to operate -in a "windowed" mode of operation. glutEnterGameMode creates a new window -style, possibly changes the screen display mode, limits GLUT functionality, -and hides other applications. - -.SH SEE ALSO -glutGameModeGet, glutGameModeString, glutInitDisplayString -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutEntryFunc.man b/lib/glut-3.7.6/man/glut/glutEntryFunc.man deleted file mode 100644 index e357ee2325dcd1c307bccbcee4588539ae10a207..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutEntryFunc.man +++ /dev/null @@ -1,31 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutEntryFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutEntryFunc - sets the mouse enter/leave callback for the current window. -.SH SYNTAX -.nf -.LP -void glutEntryFunc(void (*func)(int state)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new entry callback function. -.SH DESCRIPTION -glutEntryFunc sets the mouse enter/leave callback for the current -window. The state callback parameter is either GLUT_LEFT or -GLUT_ENTERED depending on if the mouse pointer has last left or entered -the window. - -Passing NULL to glutEntryFunc disables the generation of the mouse -enter/leave callback. - -Some window systems may not generate accurate enter/leave callbacks. -X IMPLEMENTATION NOTES -An X implementation of GLUT should generate accurate enter/leave -callbacks. -.SH SEE ALSO -glutMotionFunc, glutCreateWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutEstablishOverlay.man b/lib/glut-3.7.6/man/glut/glutEstablishOverlay.man deleted file mode 100644 index db4dc883d61c9c2a8338fd0fdd438dc032d37664..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutEstablishOverlay.man +++ /dev/null @@ -1,97 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutEstablishOverlay 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutEstablishOverlay - establishes an overlay (if possible) for the -current window. -.SH SYNTAX -.nf -.LP -void glutEstablishOverlay(void); -.fi -.SH DESCRIPTION -glutEstablishOverlay establishes an overlay (if possible) for the -current window. The requested display mode for the overlay is -determined by the initial display mode. -glutLayerGet(GLUT_OVERLAY_POSSIBLE) can be called to -determine if an overlay is possible for the current window with the -current initial display mode. Do not attempt to establish an overlay when -one is not possible; GLUT will terminate the program. - -If glutEstablishOverlay is called when an overlay already exists, -the existing overlay is first removed, and then a new overlay is -established. The state of the old overlay's OpenGL context is discarded. - -The initial display state of an overlay is shown, however the overlay is -only actually shown if the overlay's window is shown. - -Implicitly, the window's layer in use changes to the overlay immediately -after the overlay is established. -.SH EXAMPLE -Establishing an overlay is a bit involved, but easy once you get the -hang of it. Here is an example: -.nf -.LP - int overlaySupport; - int transparent, red, white; - - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - overlaySupport = glutLayerGet(GLUT_OVERLAY_POSSIBLE); - if (overlaySupport) { - glutEstablishOverlay(); - glutHideOverlay(); - transparent = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(transparent); - red = (transparent + 1) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - white = (transparent + 2) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - glutSetColor(red, 1.0, 0.0, 0.0); /* Red. */ - glutSetColor(white, 1.0, 1.0, 1.0); /* White. */ - glutOverlayDisplayFunc(redrawOverlay); - glutReshapeFunc(reshape); - } else { - printf("Sorry, no nifty overlay (try an SGI workstation)!\n"); - } -.fi -.LP -If you setup an overlay and you install a reshape callback, you need -to update the viewports and possibly projection matrices of both the -normal plane and the overlay. For example, your reshape callback -might look like this: -.nf -.LP - void - reshape(int w, int h) - { - if (overlaySupport) { - glutUseLayer(GLUT_OVERLAY); - /* Setup overlay to have X style coordinate system. */ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glScalef(1, -1, 1); - glTranslatef(0, -h, 0); - glMatrixMode(GL_MODELVIEW); - glutUseLayer(GLUT_NORMAL); - } - glViewport(0, 0, w, h); - } -.fi -.LP -See the glutOverlayDisplayFunc man page for an example showing one way to write -your overlay display callback. -.SH X IMPLEMENTATION NOTES -GLUT for X uses the SERVER_OVERLAY_VISUALS convention is -used to determine if overlay visuals are available. While the convention -allows for opaque overlays (no transparency) and overlays with the -transparency specified as a bitmask, GLUT overlay management only -provides access to transparent pixel overlays. - -Until RGBA overlays are better understood, GLUT only supports color -index overlays. -.SH SEE ALSO -glutUseLayer, glutRemoveLayer, glutCreateWindow, glutPostOverlayRedisplay, glutShowOverlay, -glutOverlayDisplayFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutExtensionSupported.man b/lib/glut-3.7.6/man/glut/glutExtensionSupported.man deleted file mode 100644 index 1f5eca64ccd5e41cf53e45867d350035f9f1f356..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutExtensionSupported.man +++ /dev/null @@ -1,49 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutExtensionSupported 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutExtensionSupported - helps to easily determine whether a -given OpenGL extension is supported. -.SH SYNTAX -.nf -.LP -int glutExtensionSupported(char *extension); -.fi -.SH ARGUMENTS -.IP \fIextension\fP 1i -Name of OpenGL extension. -.SH DESCRIPTION -glutExtensionSupported helps to easily determine whether a -given OpenGL extension is supported or not. The extension -parameter names the extension to query. The supported extensions can -also be determined with glGetString(GL_EXTENSIONS), but -glutExtensionSupported does the correct parsing of the returned -string. - -glutExtensionSupported returns non-zero if the extension is -supported, zero if not supported. - -There must be a valid current window to call -glutExtensionSupported. - -glutExtensionSupported only returns information about OpenGL -extensions only. This means window system dependent extensions (for -example, GLX extensions) are not reported by -glutExtensionSupported. -.SH EXAMPLE -Here is an example of using glutExtensionSupported: -.nf -.LP - if (!glutExtensionSupported("GL_EXT_texture")) { - fprintf(stderr, "Missing the texture extension!\\n"); - exit(1); - } - -.fi -Notice that the name argument includes both the GL prefix and the -extension family prefix (EXT). -.SH SEE ALSO -glutGet, glGetString -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutForceJoystickFunc.man b/lib/glut-3.7.6/man/glut/glutForceJoystickFunc.man deleted file mode 100644 index 0e94fb5df06665c645ddd057f50172beb090dd70..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutForceJoystickFunc.man +++ /dev/null @@ -1,40 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1998. -.\" -.TH glutForceJoystickFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutForceJoystickFunc - forces current window's joystick callback to be called. -.SH SYNTAX -.nf -.LP -void glutForceJoystickFunc(void); -.fi -.SH DESCRIPTION -glutForceJoystickFunc forces the current window's joystick callback to be -called, reporting the latest joystick state. - -The joystick callback is called either due to polling of the joystick -at the uniform timer interval set by glutJoystickFunc's -pollInterval (specified in milliseconds) or -in response to calling glutForceJoystickFunc. If the pollInterval is -non-positive, no joystick polling is performed and the GLUT application -must frequently (usually from an idle callback) call glutForceJoystickFunc. - -The joystick callback will be called once (if one exists) -for each time glutForceJoystickFunc is called. The callback is called -from glutJoystickFunc. That is, when glutJoystickFunc returns, the -callback will have already happened. -.SH GLUT IMPLEMENTATION NOTES FOR X11 -The GLUT 3.7 implementation of GLUT for X11 supports the joystick API, but -not actual joystick input. A future implementation of GLUT for X11 may -add joystick support. -.SH GLUT IMPLEMENTATION NOTES FOR WIN32 -The GLUT 3.7 implementation of GLUT for Win32 supports the joystick API -and joystick input, but does so through the dated joySetCapture and -joyGetPosEx Win32 Multimedia API. The GLUT 3.7 joystick support for -Win32 has all the limitations of the Win32 Multimedia API joystick support. -A future implementation of GLUT for Win32 may use DirectInput. -.SH SEE ALSO -glutJoystickFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutFullScreen.man b/lib/glut-3.7.6/man/glut/glutFullScreen.man deleted file mode 100644 index 196065038cab802f7924f0dc23a78476c9c77b1c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutFullScreen.man +++ /dev/null @@ -1,38 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutFullScreen 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutFullScreen - requests that the current window be made full screen. -.SH SYNTAX -.nf -.LP -void glutFullScreen(void); -.fi -.SH DESCRIPTION -glutFullScreen requests that the current window be made full screen. -The exact semantics of what full screen means may vary by window -system. The intent is to make the window as large as possible and disable -any window decorations or borders added the window system. The -window width and height are not guaranteed to be the same as the screen -width and height, but that is the intent of making a window full screen. - -glutFullScreen is defined to work only on top-level windows. - -The glutFullScreen requests are not processed immediately. The -request is executed after returning to the main event loop. This allows -multiple glutReshapeWindow, glutPositionWindow, and -glutFullScreen requests to the same window to be coalesced. - -Subsequent glutReshapeWindow and glutPositionWindow -requests on the window will disable the full screen status of the window. -.SH X IMPLEMENTATION NOTES -In the X implementation of GLUT, full screen is implemented by sizing -and positioning the window to cover the entire screen and posting the -_MOTIF_WM_HINTS property on the window requesting absolutely no -decorations. Non-Motif window managers may not respond to -_MOTIF_WM_HINTS. -.SH SEE ALSO -glutReshapeWindow, glutPositionWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutGameModeGet.man b/lib/glut-3.7.6/man/glut/glutGameModeGet.man deleted file mode 100644 index a268da49bd00ff0f506df288534e0cdd4df11991..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutGameModeGet.man +++ /dev/null @@ -1,52 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996, 1998. -.\" -.TH glutGameModeGet 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutGameModeGet - retrieves GLUT device information represented by integers. -.SH SYNTAX -.nf -.LP -int glutGameModeGet(GLenum info); -.fi -.SH ARGUMENTS -.IP \fIinfo\fP 1i -Name of game mode information to retrieve. -.TP 8 -.B GLUT_GAME_MODE_ACTIVE -Non-zero if GLUT's game mode is active; zero if not active. -Game mode is not active initially. Game mode becomes active when -glutEnterGameMode is called. Game mode becomes inactive when -glutLeaveGameMode is called. -.TP 8 -.B GLUT_GAME_MODE_POSSIBLE -Non-zero if the game mode string last specified to glutGameModeString is -a possible game mode configuration; zero otherwise. Being "possible" -does not guarantee that if game mode is entered with glutEnterGameMode -that the display settings will actually changed. GLUT_GAME_MODE_DISPLAY_CHANGED should be called once game mode is entered to determine if the display mode is actually changed. -.TP 8 -.B GLUT_GAME_MODE_WIDTH -Width in pixels of the screen when game mode is activated. -.TP 8 -.B GLUT_GAME_MODE_HEIGHT -Height in pixels of the screen when game mode is activated. -.TP 8 -.B GLUT_GAME_MODE_PIXEL_DEPTH -Pixel depth of the screen when game mode is activiated. -.TP 8 -.B GLUT_GAME_MODE_REFRESH_RATE -Screen refresh rate in cyles per second (hertz) when game mode is activated. -Zero is returned if the refresh rate is unknown or cannot be queried. -.TP 8 -.B GLUT_GAME_MODE_DISPLAY_CHANGED -Non-zero if entering game mode actually changed the display settings. -If the game mode string is not possible or the display mode could not be -changed for any other reason, zero is returned. -.SH DESCRIPTION -glutGameModeGet retrieves GLUT game mode information represented by integers. The info -parameter determines what type of game mode information to return. Requesting game mode -information for an invalid GLUT game mode information name returns negative one. -.SH SEE ALSO -glutGet, glutDeviceGet, glutLayerGet, glutGameModeString, glutEnterGameMode, glutLeaveGameMode -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutGameModeString.man b/lib/glut-3.7.6/man/glut/glutGameModeString.man deleted file mode 100644 index df5c58f09e5f4440b52a6d5a5511a51cb4b85ac1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutGameModeString.man +++ /dev/null @@ -1,20 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1998. -.\" -.TH glutGameModeString 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutGameModeString - sets the game mode configuration via a string. -.SH SYNTAX -.nf -.LP -void glutGameModeString(const char *string); -.fi -.SH ARGUMENTS -.IP \fIstring\fP 1i -ASCII string for selecting a game mode configuration. -.SH DESCRIPTION -.I XXX fix me -.SH SEE ALSO -glutGameModeGet, glutEnterGameMode, glutLeaveGameMode, glutInitDisplayString -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutGet.man b/lib/glut-3.7.6/man/glut/glutGet.man deleted file mode 100644 index 2f7fd98efa932bf792af6432fb237d72dd94d3c7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutGet.man +++ /dev/null @@ -1,161 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutGet 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutGet - retrieves simple GLUT state represented by integers. -.SH SYNTAX -.nf -.LP -int glutGet(GLenum state); -.fi -.SH ARGUMENTS -.IP \fIstate\fP 1i -Name of state to retrieve. -.TP 8 -.B GLUT_WINDOW_X -X location in pixels (relative to the screen origin) of the current -window. -.TP 8 -.B GLUT_WINDOW_Y -Y location in pixels (relative to the screen origin) of the current -window. -.TP 8 -.B GLUT_WINDOW_WIDTH -Width in pixels of the current window. -.TP 8 -.B GLUT_WINDOW_HEIGHT -Height in pixels of the current window. -.TP 8 -.B GLUT_WINDOW_BUFFER_SIZE -Total number of bits for current layer of current window's color buffer. For an -RGBA window, this is the sum of GLUT_WINDOW_RED_SIZE, -GLUT_WINDOW_GREEN_SIZE, GLUT_WINDOW_BLUE_SIZE, and -GLUT_WINDOW_ALPHA_SIZE. For color index windows, this is -the size of the color indexes. -.TP 8 -.B GLUT_WINDOW_STENCIL_SIZE -Number of bits in the current layer of current window's stencil buffer. -.TP 8 -.B GLUT_WINDOW_DEPTH_SIZE -Number of bits in the current layer of current window's depth buffer. -.TP 8 -.B GLUT_WINDOW_RED_SIZE -Number of bits of red stored the current layer of current window's color buffer. -Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_GREEN_SIZE -Number of bits of green stored the current layer of current window's color buffer. -Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_BLUE_SIZE -Number of bits of blue stored the current layer of current window's color buffer. -Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_ALPHA_SIZE -Number of bits of alpha stored the current layer of current window's color buffer. -Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_ACCUM_RED_SIZE -Number of bits of red stored in the current layer of current window's accumulation -buffer. Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_ACCUM_GREEN_SIZE -Number of bits of green stored in the current layer of current window's -accumulation buffer. Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_ACCUM_BLUE_SIZE -Number of bits of blue stored in the current layer of current window's -accumulation buffer. Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_ACCUM_ALPHA_SIZE -Number of bits of alpha stored in the current layer of current window's -accumulation buffer. Zero if the current layer of the current window is color index. -.TP 8 -.B GLUT_WINDOW_DOUBLEBUFFER -One if the current layer of the current window is double buffered, zero otherwise. -.TP 8 -.B GLUT_WINDOW_RGBA -One if the current layer of the current window is RGBA mode, zero otherwise (i.e., -color index). -.TP 8 -.B GLUT_WINDOW_PARENT -The window number of the current window's parent; zero if the -window is a top-level window. -.TP 8 -.B GLUT_WINDOW_NUM_CHILDREN -The number of subwindows the current window has (not counting -children of children). -.TP 8 -.B GLUT_WINDOW_COLORMAP_SIZE -Size of current layer of current window's color index colormap; zero for RGBA -color model layers. -.TP 8 -.B GLUT_WINDOW_NUM_SAMPLES -Number of samples for multisampling for the current layer of the current window. -.TP 8 -.B GLUT_WINDOW_STEREO -One if the current layer of the current window is stereo, zero otherwise. -.TP 8 -.B GLUT_WINDOW_CURSOR -Current cursor for the current window. -.TP 8 -.B GLUT_SCREEN_WIDTH -Width of the screen in pixels. Zero indicates the width is unknown -or not available. -.TP 8 -.B GLUT_SCREEN_HEIGHT -Height of the screen in pixels. Zero indicates the height is -unknown or not available. -.TP 8 -.B GLUT_SCREEN_WIDTH_MM -Width of the screen in millimeters. Zero indicates the width is -unknown or not available. -.TP 8 -.B GLUT_SCREEN_HEIGHT_MM -Height of the screen in millimeters. Zero indicates the height is -unknown or not available. -.TP 8 -.B GLUT_MENU_NUM_ITEMS -Number of menu items in the current menu. -.TP 8 -.B GLUT_DISPLAY_MODE_POSSIBLE -Whether the current display mode is supported or not. -.TP 8 -.B GLUT_INIT_DISPLAY_MODE -The initial display mode bit mask. -.TP 8 -.B GLUT_INIT_WINDOW_X -The X value of the initial window position. -.TP 8 -.B GLUT_INIT_WINDOW_Y -The Y value of the initial window position. -.TP 8 -.B GLUT_INIT_WINDOW_WIDTH -The width value of the initial window size. -.TP 8 -.B GLUT_INIT_WINDOW_HEIGHT -The height value of the initial window size. -.TP 8 -.B GLUT_ELAPSED_TIME -Number of milliseconds since glutInit called (or first call to -glutGet(GLUT_ELAPSED_TIME)). -.TP 8 -.B GLUT_WINDOW_FORMAT_ID -The window system dependent format ID for the current layer of the -current window. On X11 GLUT implementations, this is the X visual ID. -On Win32 GLUT implementations, this is the Win32 Pixel Format -Descriptor number. This value is returned for debugging, benchmarking, -and testing ease. -.SH DESCRIPTION -glutGet retrieves simple GLUT state represented by integers. The -state parameter determines what type of state to return. Where appropriate, window -capability state is returned for the layer in use. GLUT state names -beginning with GLUT_WINDOW_ return state for the current window. -GLUT state names beginning with GLUT_MENU_ return state for the -current menu. Other GLUT state names return global state. Requesting -state for an invalid GLUT state name returns negative one. -.SH SEE ALSO -glutDeviceGet, glutLayerGet, glutGetColor, glutGetWindow, glutGetMenu, glutGetModifiers, glutExtensionSupported -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutGetColor.man b/lib/glut-3.7.6/man/glut/glutGetColor.man deleted file mode 100644 index 8303ad94bce50899489716ca0dd581685b2707d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutGetColor.man +++ /dev/null @@ -1,33 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutGetColor 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutGetColor - retrieves a red, green, or blue component for a given -color index colormap entry for the layer in use's logical colormap for the -current window. -.SH SYNTAX -.nf -.LP -GLfloat glutGetColor(int cell, int component); -.fi -.SH ARGUMENTS -.IP \fIcell\fP 1i -Color cell index (starting at zero). -.IP \fIcomponent\fP 1i -One of GLUT_RED, GLUT_GREEN, or GLUT_BLUE. -.SH DESCRIPTION -glutGetColor retrieves a red, green, or blue component for a given -color index colormap entry for the current window's logical colormap. -The current window should be a color index window. cell should be -zero or greater and less than the total number of colormap entries for the -window. For valid color indices, the value returned is a floating point -value between 0.0 and 1.0 inclusive. glutGetColor will return -1.0 if -the color index specified is an overlay's transparent index, less than zero, -or greater or equal to the value returned by -glutGet(GLUT_WINDOW_COLORMAP_SIZE), that is if the color index -is transparent or outside the valid range of color indices. -.SH SEE ALSO -glutGet, glutSetColor, glutCopyColormap -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutGetModifiers.man b/lib/glut-3.7.6/man/glut/glutGetModifiers.man deleted file mode 100644 index cf4bed1e816bff5658ebf72ec235ec32717525cf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutGetModifiers.man +++ /dev/null @@ -1,35 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutGetModifiers 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutGetModifiers - returns the modifier key state when certain -callbacks were generated. -.SH SYNTAX -.nf -.LP -int glutGetModifiers(void); -.fi -.SH DESCRIPTION -glutGetModifiers returns the modifier key state at the time the -input event for a keyboard, special, or mouse callback is generated. -This routine may only be called while a keyboard, special, or mouse -callback is being handled. The window system is permitted to intercept -window system defined modifier key strokes or mouse buttons, in -which case, no GLUT callback will be generated. This interception -will be independent of use of glutGetModifiers. - -The bitmask components of the returned integer value are: -.TP 8 -.B GLUT_ACTIVE_SHIFT -Set if the Shift modifier or Caps Lock is active. -.TP 8 -.B GLUT_ACTIVE_CTRL -Set if the Ctrl modifier is active. -.TP 8 -.B GLUT_ACTIVE_ALT -Set if the Alt modifier is active. -.SH SEE ALSO -glutSpecialFunc, glutKeyboardFunc, glutMouseFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutIdleFunc.man b/lib/glut-3.7.6/man/glut/glutIdleFunc.man deleted file mode 100644 index 4ba574b3947cba36793aaae830b6c8d389adaa8e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutIdleFunc.man +++ /dev/null @@ -1,73 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutIdleFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutIdleFunc - sets the global idle callback. -.SH SYNTAX -.nf -.LP -void glutIdleFunc(void (*func)(void)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new idle callback function. -.SH DESCRIPTION -glutIdleFunc sets the global idle callback to be func so a GLUT -program can perform background processing tasks or continuous -animation when window system events are not being received. If -enabled, the idle callback is continuously called when events are not -being received. The callback routine has no parameters. The current -window and current menu will not be changed before the idle callback. -Programs with multiple windows and/or menus should explicitly set the -current window and/or current menu and not rely on its current setting. - -The amount of computation and rendering done in an idle callback -should be minimized to avoid affecting the program's interactive -response. In general, not more than a single frame of rendering should be -done in an idle callback. - -Passing NULL to glutIdleFunc disables the generation of the idle -callback. -.SH EXAMPLE -A typical idle callback to animate a window might look like: -.nf -.LP - void - idle(void) - { - time += 0.05; - glutSetWindow(window); - glutPostRedisplay(); - } -.fi -.LP -Notice how the idle callback does not do any actual drawing; it only -advances the time scene state global variable. That -is left to the window's display callback which will be triggered -by the call to glutPostRedisplay. -.LP -If you use the idle callback for animation, you should be sure to stop -rendering when the window is not visible. This is easy to set up -with a visibility callback. For example: -.nf -.LP - void - visible(int vis) - { - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); - } -.fi -.LP -If you do use the idle callback for animation, one thing you should -.I not -do is setup the idle callback before calling glutMainLoop. It is much -better to use the visibility callback to install idle callback when the -window first becomes visible on the screen. -.SH SEE ALSO -glutTimerFunc, glutVisibilityFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutIgnoreKeyRepeat.man b/lib/glut-3.7.6/man/glut/glutIgnoreKeyRepeat.man deleted file mode 100644 index 3860d67db4f9a843c7e39c9c1057d16861b5dc2a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutIgnoreKeyRepeat.man +++ /dev/null @@ -1,30 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1998. -.\" -.TH glutIgnoreKeyRepeat 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutIgnoreKeyRepeat - determines if auto repeat keystrokes are reported to the current window -.SH SYNTAX -.nf -.LP -void glutIgnoreKeyRepeat(int ignore); -.fi -.SH ARGUMENTS -.IP \fIignore\fP 1i -Non-zero indicates auto repeat keystrokes should not be reported by the keyboard and special callbacks; zero indicates that auto repeat keystrokes will be reported. -.SH DESCRIPTION -glutIgnoreKeyRepeat determines if auto repeat keystrokes are reported to the current window. -The ignore auto repeat state of a window can be queried with -glutDeviceGet(GLUT_DEVICE_IGNORE_KEY_REPEAT). - -Ignoring auto repeated keystrokes is generally done in conjunction -with using the glutKeyboardUpFunc and glutSpecialUpFunc callbacks -to repeat key releases. If you do not ignore auto repeated keystrokes, -your GLUT application will experience repeated release/press callbacks. -Games using the keyboard will typically want to ignore key repeat. -.SH GLUT IMPLEMENTATION NOTES FOR X11 -X11 sends KeyPress events repeatedly when the window system's global auto repeat is enabled. glutIgnoreKeyRepeat can prevent these auto repeated keystrokes from being reported as keyboard or special callbacks, but there is still some minimal overhead by the X server to continually stream KeyPress events to the GLUT application. The glutSetKeyRepeat routine can be used to actually disable the global sending of auto repeated KeyPress events. Note that glutSetKeyRepeat affects the global window system auto repeat state so other applications will not auto repeat if you disable auto repeat globally through glutSetKeyRepeat. -.SH SEE ALSO -glutSetKeyRepeat, glutDeviceGet, glutKeyboardFunc, glutKeyboardUpFunc, glutSpecialFunc, glutSpecialUpFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutInit.man b/lib/glut-3.7.6/man/glut/glutInit.man deleted file mode 100644 index c64cf37d60286e37b93bc1562119d593ce4be860..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutInit.man +++ /dev/null @@ -1,81 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutInit 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutInit - initialize the GLUT library. -.SH SYNTAX -.nf -.LP -void glutInit(int *argcp, char **argv); -.fi -.SH ARGUMENTS -.IP \fIargcp\fP 1i -A pointer to the program's unmodified argc variable from main. -Upon return, the value pointed to by argcp will be updated, -because glutInit extracts any command line options intended -for the GLUT library. -.IP \fIargv\fP 1i -The program's unmodified argv variable from main. Like -argcp, the data for argv will be updated because glutInit -extracts any command line options understood by the GLUT -library. -.SH DESCRIPTION -glutInit will initialize the GLUT library and negotiate a session with -the window system. During this process, glutInit may cause the -termination of the GLUT program with an error message to the user if -GLUT cannot be properly initialized. Examples of this situation include -the failure to connect to the window system, the lack of window system -support for OpenGL, and invalid command line options. -.LP -glutInit also processes command line options, but the specific options -parse are window system dependent. -.SH X IMPLEMENTATION NOTES -The X Window System specific options parsed by glutInit are as -follows: -.TP 8 -.B \-display \fIDISPLAY\fP -Specify the X server to connect to. If not specified, the value of the -DISPLAY environment variable is used. -.TP 8 -.B \-geometry \fIWxH+X+Y\fP -Determines where window's should be created on the screen. The -parameter following -geometry should be formatted as a -standard X geometry specification. The effect of using this option -is to change the GLUT initial size and initial position the same as -if glutInitWindowSize or glutInitWindowPosition were -called directly. -.TP 8 -.B \-iconic -Requests all top-level windows be created in an iconic state. -.TP 8 -.B \-indirect -Force the use of indirect OpenGL rendering contexts. -.TP 8 -.B \-direct -Force the use of direct OpenGL rendering contexts (not all GLX -implementations support direct rendering contexts). A fatal error -is generated if direct rendering is not supported by the OpenGL -implementation. - -If neither -indirect or -direct are used to force a particular -behavior, GLUT will attempt to use direct rendering if possible -and otherwise fallback to indirect rendering. -.TP 8 -.B \-gldebug -After processing callbacks and/or events, check if there are any -OpenGL errors by calling glGetError. If an error is reported, -print out a warning by looking up the error code with -gluErrorString. Using this option is helpful in detecting -OpenGL run-time errors. -.TP 8 -.B \-sync -Enable synchronous X protocol transactions. This option makes it -easier to track down potential X protocol errors. -.SH SEE ALSO -glutCreateWindow, -glutInitWindowPosition, -glutInitWindowSize, -glutMainLoop -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutInitDisplayMode.man b/lib/glut-3.7.6/man/glut/glutInitDisplayMode.man deleted file mode 100644 index 6e91baf236e07fee066c3cd6b13a4d9e2000b398..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutInitDisplayMode.man +++ /dev/null @@ -1,93 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutInitDisplayMode 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutInitDisplayMode - sets the initial display mode. -.SH SYNTAX -.nf -.LP -void glutInitDisplayMode(unsigned int mode); -.fi -.SH ARGUMENTS -.IP \fImode\fP 1i -Display mode, normally the bitwise {\em OR}-ing of GLUT display mode bit masks. -See values below: -.TP 8 -.B GLUT_RGBA -Bit mask to select an RGBA mode window. This is the default if -neither GLUT_RGBA nor GLUT_INDEX are specified. -.TP 8 -.B GLUT_RGB -An alias for GLUT_RGBA. -.TP 8 -.B GLUT_INDEX -Bit mask to select a color index mode window. This overrides -GLUT_RGBA if it is also specified. -.TP 8 -.B GLUT_SINGLE -Bit mask to select a single buffered window. This is the default if -neither GLUT_DOUBLE or GLUT_SINGLE are specified. -.TP 8 -.B GLUT_DOUBLE -Bit mask to select a double buffered window. This overrides -GLUT_SINGLE if it is also specified. -.TP 8 -.B GLUT_ACCUM -Bit mask to request a window with an accumulation buffer. -.TP 8 -.B GLUT_ALPHA -Bit mask to request a window with an alpha component to the color -buffer(s). -.TP 8 -.B GLUT_DEPTH -Bit mask to request a window with a depth buffer. -.TP 8 -.B GLUT_STENCIL -Bit mask to request a window with a stencil buffer. -.TP 8 -.B GLUT_MULTISAMPLE -Bit mask to request a window with multisampling support. If -multisampling is not available, a non-multisampling window will -automatically be chosen. Note: both the OpenGL client-side and -server-side implementations must support the -GLX_SAMPLE_SGIS extension for multisampling to be available. -.TP 8 -.B GLUT_STEREO -Bit mask to select a stereo window. -.TP 8 -.B GLUT_LUMINANCE -Bit mask to select a window with a ``luminance'' color model. -This model provides the functionality of OpenGL's RGBA color -model, but the green and blue components are not maintained in -the frame buffer. Instead each pixel's red component is converted -to an index between zero and -glutGet(GLUT_WINDOW_COLORMAP_SIZE)-1 and looked up in -a per-window color map to determine the color of pixels within -the window. The initial colormap of GLUT_LUMINANCE windows -is initialized to be a linear gray ramp, but can be modified with -GLUT's colormap routines. -.SH DESCRIPTION -The initial display mode is used when creating top-level windows, -subwindows, and overlays to determine the OpenGL display mode for -the to-be-created window or overlay. - -Note that GLUT_RGBA selects the RGBA color model, but it does not -request any bits of alpha (sometimes called an alpha buffer or destination -alpha) be allocated. To request alpha, specify GLUT_ALPHA. The same -applies to GLUT_LUMINANCE. - -Note that some bits "request" a capability and other bits "select" -a capability. A requestable capability may be assigned to the created -window even if the bit for the capability was not set. For example, -GLUT may create a window with a depth buffer even though GLUT_DEPTH -is not specified. - -The glutInitDisplayString routine provides a more powerful way to -select frame buffer capabilities for GLUT windows. -.SH GLUT_LUMINANCE IMPLEMENTATION NOTES -GLUT_LUMINANCE is not supported on most OpenGL platforms. -.SH SEE ALSO -glutInit, glutCreateWindow, glutInitDisplayString -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutInitDisplayString.man b/lib/glut-3.7.6/man/glut/glutInitDisplayString.man deleted file mode 100644 index 8c07e434fed7c42a475aa87cdfb64517d0176d33..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutInitDisplayString.man +++ /dev/null @@ -1,250 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutInitDisplayString 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutInitDisplayString - sets the initial display mode via a string. -.SH SYNTAX -.nf -.LP -void glutInitDisplayString(char *string); -.fi -.SH ARGUMENTS -.IP \fIstring\fP 1i -Display mode description string, see below. -.SH DESCRIPTION -The initial display mode description string is used when creating top-level windows, -subwindows, and overlays to determine the OpenGL display mode for -the to-be-created window or overlay. - -The string is a list of zero or more capability descriptions separated by -spaces and tabs. Each capability description is a capability name that -is optionally followed by a comparator and a numeric value. For -example, "double" and "depth>=12" are both valid criteria. - -The capability descriptions are translated into a set of criteria -used to select the appropriate frame buffer configuration. - -The criteria are matched in -strict left to right order of precdence. That is, the first specified -criteria (leftmost) takes precedence over the later criteria for non-exact -criteria (greater than, less than, etc. comparators). Exact -criteria (equal, not equal compartors) must match exactly so precedence is -not relevant. - -The numeric value is an integer that is parsed according to ANSI C's -strtol(str, strptr, 0) behavior. This means that decimal, octal -(leading 0), and hexidecimal values (leading 0x) are accepeted. - -The valid compartors are: -.TP 8 -.B = -Equal. -.TP 8 -.B != -Not equal. -.TP 8 -.B < -Less than and preferring larger difference (the least is best). -.TP 8 -.B > -Greeater than and preferring larger differences (the most is best). -.TP 8 -.B <= -Less than or equal and preferring larger difference (the least is best). -.TP 8 -.B >= -Greater than or equal and preferring more instead of less. -This comparator is useful for allocating resources like color -precsion or depth buffer precision where the maximum precison -is generally preferred. Contrast with the tilde (~) comprator. -.TP 8 -.B ~ -Greater than or equal but preferring less instead of more. This -compartor is useful for allocating resources such as stencil bits or -auxillary color buffers where you would rather not over allocate. - -When the compartor and numeric value are not specified, each -capability name has a different default (one default is to require -a a compartor and numeric value). - -.LP -The valid capability names are: -.TP 8 -.B alpha -Alpha color buffer precision in bits. -Default is ">=1". -.TP 8 -.B acca -Red, green, blue, and alpha accumulation buffer precision in bits. -Default is ">=1" for red, green, blue, and alpha capabilities. -.TP 8 -.B acc -Red, green, and green accumulation buffer precision in bits and zero -bits of alpha accumulation buffer precision. -Default is ">=1" for red, green, and blue capabilities, and -"~0" for the alpha capability. -.TP 8 -.B blue -Blue color buffer precision in bits. -Default is ">=1". -.TP 8 -.B buffer -Number of bits in the color index color buffer. -Default is ">=1". -.TP 8 -.B conformant -Boolean indicating if the frame buffer configuration is conformant or -not. Conformance information is based on GLX's EXT_visual_rating -extension if supported. If the extension is not supported, all visuals -are assumed conformat. -Default is "=1". -.TP 8 -.B depth -Number of bits of precsion in the depth buffer. -Default is ">=12". -.TP 8 -.B double -Boolean indicating if the color buffer is double buffered. -Default is "=1". -.TP 8 -.B green -Green color buffer precision in bits. -Default is ">=1". -.TP 8 -.B index -Boolean if the color model is color index or not. True is color index. -Default is ">=1". -.TP 8 -.B num -A special capability name indicating where the value represents the -Nth frame buffer configuration matching the description string. -When not specified, glutInitDisplayString also returns the first -(best matching) configuration. num requires a compartor and -numeric value. -.TP 8 -.B red -Red color buffer precision in bits. -Default is ">=1". -.TP 8 -.B rgba -Number of bits of red, green, blue, and alpha in the RGBA color buffer. -Default is ">=1" for red, green, blue, and alpha capabilities, -and "=1" for the RGBA color model capability. -.TP 8 -.B rgb -Number of bits of red, green, and blue in the RGBA color buffer and -zero bits of alpha color buffer precision. -Default is ">=1" for the red, green, and blue capabilities, and "~0" for -alpha capability, and "=1" for the RGBA color model capability. -.TP 8 -.B luminance -Number of bits of red in the RGBA and zero bits of green, blue (alpha -not specified) of color buffer precision. -Default is ">=1" for the red capabilitis, and "=0" for the -green and blue capabilities, and "=1" for the RGBA color model -capability, and, for X11, "=1" for the StaticGray ("xstaticgray") -capability. - -SGI InfiniteReality (and other future machines) support a 16-bit -luminance (single channel) display mode (an additional 16-bit alpha -channel can also be requested). The red channel maps to gray scale and -green and blue channels are not available. A 16-bit precision -luminance display mode is often appropriate for medical imaging -applications. Do not expect many machines to support extended -precision luminance display modes. -.TP 8 -.B stencil -Number of bits in the stencil buffer. -.TP 8 -.B single -Boolean indicate the color buffer is single buffered. -Double buffer capability "=1". -.TP 8 -.B stereo -Boolean indicating the color buffer is supports OpenGL-style stereo. -Default is "=1". -.TP 8 -.B samples -Indicates the number of multisamples to use based on GLX's -SGIS_multisample extension (for antialiasing). -Default is "<=4". This default means that a GLUT application can -request multipsampling if available by simply specifying "samples". -.TP 8 -.B slow -Boolean indicating if the frame buffer configuration is slow or -not. Slowness information is based on GLX's EXT_visual_rating -extension if supported. If the extension is not supported, all visuals -are assumed fast. Note that slowness is a relative designation relative -to other frame buffer configurations available. The intent of the -slow capability is to help programs avoid frame buffer configurations -that are slower (but perhaps higher precision) for the current machine. -Default is ">=0". This default means that slow visuals are used in -preference to fast visuals, but fast visuals will still be allowed. -.TP 8 -.B win32pfd -Only recognized on GLUT implementations for Win32, this capability -name matches the Win32 Pixel Format Descriptor by numer. win32pfd -requires a compartor and numeric value. -.TP 8 -.B xvisual -Only recongized on GLUT implementations for the X Window System, this -capability name matches the X visual ID by number. -xvisual requires a compartor and numeric value. -.TP 8 -.B xstaticgray -Only recongized on GLUT implementations for the X Window System, -boolean indicating if the frame buffer configuration's X visual is -of type StaticGray. -Default is "=1". -.TP 8 -.B xgrayscale -Only recongized on GLUT implementations for the X Window System, -boolean indicating if the frame buffer configuration's X visual is -of type GrayScale. -Default is "=1". -.TP 8 -.B xstaticcolor -Only recongized on GLUT implementations for the X Window System, -boolean indicating if the frame buffer configuration's X visual is -of type StaticColor. -Default is "=1". -.TP 8 -.B xpseudocolor -Only recongized on GLUT implementations for the X Window System, -boolean indicating if the frame buffer configuration's X visual is -of type PsuedoColor. -Default is "=1". -.TP 8 -.B xtruecolor -Only recongized on GLUT implementations for the X Window System, -boolean indicating if the frame buffer configuration's X visual is -of type TrueColor. -Default is "=1". -.TP 8 -.B xdirectcolor -Only recongized on GLUT implementations for the X Window System, -boolean indicating if the frame buffer configuration's X visual is -of type DirectColor. -Default is "=1". -.LP -Unspecifed capability descriptions will result in unspecified -criteria being generated. These unspecified criteria help -glutInitDisplayString behave sensibly with terse -display mode description strings. -.SH EXAMPLE -Here is an examples using glutInitDisplayString: -.nf -.LP - glutInitDisplayString("stencil~2 rgb double depth>=16 samples"); -.LP -.fi -The above call requests a window with an RGBA color model (but requesting -no bits of alpha), a depth buffer with at least 16 bits of precsion but -preferring more, mutlisampling -if available, and at least 2 bits of stencil (favoring less stencil -to more as long as 2 bits are available). -.SH SEE ALSO -glutInit, glutCreateWindow, glutInitDisplayMode -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutInitWindowPosition.man b/lib/glut-3.7.6/man/glut/glutInitWindowPosition.man deleted file mode 100644 index 20b710a443e9d5feaa6373c7ea12d5beb2d7b8dc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutInitWindowPosition.man +++ /dev/null @@ -1,74 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutInitWindowPosition 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutInitWindowPosition, glutInitWindowSize - set the -initial window position and size respectively. -.SH SYNTAX -.nf -.LP -void glutInitWindowSize(int width, int height); -void glutInitWindowPosition(int x, int y); -.fi -.SH ARGUMENTS -.IP \fIwidth\fP 1i -Width in pixels. -.IP \fIheight\fP 1i -Height in pixels. -.IP \fIx\fP 1i -Window X location in pixels. -.IP \fIy\fP 1i -Window Y location in pixels. -.SH DESCRIPTION -Windows created by glutCreateWindow will be requested to be -created with the current initial window position and size. - -The initial value of the initial window position GLUT state is -1 and -1. -If either the X or Y component to the initial window position is negative, -the actual window position is left to the window system to determine. -The initial value of the initial window size GLUT state is 300 by 300. -The initial window size components must be greater than zero. - -The intent of the initial window position and size values is to provide a -suggestion to the window system for a window's initial size and -position. The window system is not obligated to use this information. -Therefore, GLUT programs should not assume the window was created -at the specified size or position. A GLUT program should use the -window's reshape callback to determine the true size of the window. -.SH EXAMPLE -If you would like your GLUT program to default to starting at a given -screen location and at a given size, but you would also like to let -the user override these defaults via a command line argument (such as --geometry for X11), call glutInitWindowSize and glutInitWindowPosition -.I before -your call to glutInit. For example: -.nf -.LP - int main(int argc, char **argv) - { - glutInitWindowSize(500, 300); - glutInitWindowPosition(100, 100); - glutInit(&argc, argv); - ... - } -.fi -.LP -However, if you'd like to force your program to start up at a given -size, call glutInitWindowSize and glutInitWindowPosition -.I after -your call to glutInit. For example: -.nf -.LP - int main(int argc, char **argv) - { - glutInit(&argc, argv); - glutInitWindowSize(500, 300); - glutInitWindowPosition(100, 100); - ... - } -.fi -.SH SEE ALSO -glutInit, glutCreateWindow, glutCreateSubWindow, glutReshapeFunc, glutGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutJoystickFunc.man b/lib/glut-3.7.6/man/glut/glutJoystickFunc.man deleted file mode 100644 index 1e11919e39784a8a4f6a8184b55a53aa95fe2e2e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutJoystickFunc.man +++ /dev/null @@ -1,67 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1998. -.\" -.TH glutJoystickFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutJoystickFunc - sets the joystick callback for the current window. -.SH SYNTAX -.nf -.LP -void glutJoystickFunc(void (*func)(unsigned int buttonMask, - int x, int y, int z), int pollInterval); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new joystick callback function. -.IP \fIpollInterval\fP 1i -Joystick polling interval in milliseconds. -.SH DESCRIPTION -glutJoystickFunc sets the joystick callback for the current window. - -The joystick callback is called either due to polling of the joystick -at the uniform timer interval specified by pollInterval (in milliseconds) or -in response to calling glutForceJoystickFunc. If the pollInterval is -non-positive, no joystick polling is performed and the GLUT application -must frequently (usually from an idle callback) call glutForceJoystickFunc. - -The joystick buttons are reported by the callback's buttonMask parameter. -The constants GLUT_JOYSTICK_BUTTON_A (0x1), GLUT_JOYSTICK_BUTTON_B (0x2), -GLUT_JOYSTICK_BUTTON_C (0x4), and GLUT_JOYSTICK_BUTTON_D (0x8) are provided -for programming convience. - -The x, y, and z callback parameters report the X, Y, and Z axes of the -joystick. The joystick is centered at (0,0,0). X, Y, and Z are -scaled to range between -1000 and 1000. Moving the joystick left reports -negative X; right reports positive X. Pulling the stick towards -you reports negative Y; push the stick away from you reports positive Y. -If the joystick has a third axis (rudder or up/down), down reports -negative Z; up reports positive Z. - -Passing a NULL func to glutJoystickFunc -disables the generation of joystick callbacks. Without a joystick -callback registered, glutForceJoystickFunc does nothing. - -When a new window is created, no joystick callback is -initially registered. -.SH LIMITATIONS -The GLUT joystick callback only reports the first 3 axes and 32 buttons. -GLUT supports only a single joystick. -.SH GLUT IMPLEMENTATION NOTES FOR X11 -The GLUT 3.7 implementation of GLUT for X11 supports the joystick API, but -not joystick input. A future implementation of GLUT for X11 may -add joystick support. -.SH GLUT IMPLEMENTATION NOTES FOR WIN32 -The GLUT 3.7 implementation of GLUT for Win32 supports the joystick API -and joystick input, but does so through the dated joySetCapture and -joyGetPosEx Win32 Multimedia API. The GLUT 3.7 joystick support for -Win32 has all the limitations of the Win32 Multimedia API joystick support. -A future implementation of GLUT for Win32 may use DirectInput. -.SH GLUT IMPLEMENTATION NOTES FOR NON-ANALOG JOYSTICKS -If the connected joystick does not return (x,y,z) as a continuous range -(for example, an 8 position Atari 2600 joystick), the implementation should -report the most extreme (x,y,z) location. That is, if a 2D joystick is -pushed to the upper left, report (-1000,1000,0). -.SH SEE ALSO -glutForceJoystickFunc, glutMotionFunc, glutMouseFunc, glutSpaceballButtonFunc, glutSpaceballMotionFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutDeviceGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutKeyboardFunc.man b/lib/glut-3.7.6/man/glut/glutKeyboardFunc.man deleted file mode 100644 index 94551904300fbf1a20726c6a09496cb270ed2df4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutKeyboardFunc.man +++ /dev/null @@ -1,38 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutKeyboardFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutKeyboardFunc - sets the keyboard callback for the current window. -.SH SYNTAX -.nf -.LP -void glutKeyboardFunc(void (*func)(unsigned char key, - int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new keyboard callback function. -.SH DESCRIPTION -glutKeyboardFunc sets the keyboard callback for the current window. -When a user types into the window, each key press generating an ASCII -character will generate a keyboard callback. The key callback parameter -is the generated ASCII character. The state of modifier keys such as Shift -cannot be determined directly; their only effect will be on the returned -ASCII data. The x and y callback parameters indicate the mouse location -in window relative coordinates when the key was pressed. When a new -window is created, no keyboard callback is initially registered, and ASCII -key strokes in the window are ignored. Passing NULL to -glutKeyboardFunc disables the generation of keyboard callbacks. - -During a keyboard callback, glutGetModifiers may be called to -determine the state of modifier keys when the keystroke generating the -callback occurred. - -Use glutSpecialFunc for a means to detect non-ASCII key -strokes. -.SH SEE ALSO -glutKeyboardUpFunc, -glutSpecialFunc, glutCreateWindow, glutMouseFunc, glutSpaceballButtonFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutGetModifiers -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutKeyboardUpFunc.man b/lib/glut-3.7.6/man/glut/glutKeyboardUpFunc.man deleted file mode 100644 index 66fc6303722590f333d0316a233b5fb3759171df..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutKeyboardUpFunc.man +++ /dev/null @@ -1,47 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1998. -.\" -.TH glutKeyboardUpFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutKeyboardUpFunc - sets the keyboard up (key release) callback for the current window. -.SH SYNTAX -.nf -.LP -void glutKeyboardUpFunc(void (*func)(unsigned char key, - int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new keyboard up callback function. -.SH DESCRIPTION -glutKeyboardFunc sets the keyboard up (key release) callback for the current window. -When a user types into the window, each key release matching an ASCII -character will generate a keyboard up callback. The key callback parameter -is the generated ASCII character. The state of modifier keys such as Shift -cannot be determined directly; their only effect will be on the returned -ASCII data. The x and y callback parameters indicate the mouse location -in window relative coordinates when the key was pressed. When a new -window is created, no keyboard callback is initially registered, and ASCII -key strokes in the window are ignored. Passing NULL to -glutKeyboardFunc disables the generation of keyboard callbacks. - -During a keyboard up callback, glutGetModifiers may be called to -determine the state of modifier keys when the keystroke generating the -callback occurred. - -To avoid the reporting of key release/press pairs due to auto -repeat, use glutIgnoreKeyRepeat to ignore auto repeated keystrokes. - -There is no guarantee that the keyboard press callback will match -the exact ASCII character as the keyboard up callback. For example, -the key down may be for a lowercase b, but the key release may -report an uppercase B if the shift state has changed. The same -applies to symbols and control characters. The precise behavior -is window system dependent. - -Use glutSpecialUpFunc for a means to detect non-ASCII key -releases. -.SH SEE ALSO -glutKeyboardFunc, glutSpecialUpFunc, glutSpecialFunc, glutCreateWindow, glutMouseFunc, glutSpaceballButtonFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutGetModifiers, glutIgnoreKeyRepeat -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutLayerGet.man b/lib/glut-3.7.6/man/glut/glutLayerGet.man deleted file mode 100644 index 8c11c76e8baba6860b7ace288cfc5a21bde45f1b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutLayerGet.man +++ /dev/null @@ -1,51 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutLayerGet 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutLayerGet - retrieves GLUT state pertaining to the layers of the -current window. -.SH SYNTAX -.nf -.LP -int glutLayerGet(GLenum info); -.fi -.SH ARGUMENTS -.IP \fIinfo\fP 1i -Name of device information to retrieve. -.TP 8 -.B GLUT_OVERLAY_POSSIBLE -Whether an overlay could be established for the current window -given the current initial display mode. If false, -glutEstablishOverlay will fail with a fatal error if called. -.TP 8 -.B GLUT_LAYER_IN_USE -Either GLUT_NORMAL or GLUT_OVERLAY depending on whether -the normal plane or overlay is the layer in use. -.TP 8 -.B GLUT_HAS_OVERLAY -If the current window has an overlay established. -.TP 8 -.B GLUT_TRANSPARENT_INDEX -The transparent color index of the overlay of the current window; -negative one is returned if no overlay is in use. -.TP 8 -.B GLUT_NORMAL_DAMAGED -True if the normal plane of the current window has damaged (by -window system activity) since the last display callback was -triggered. Calling glutPostRedisplay will not set this true. -.TP 8 -.B GLUT_OVERLAY_DAMAGED -True if the overlay plane of the current window has damaged (by -window system activity) since the last display callback was -triggered. Calling glutPostRedisplay or -glutPostOverlayRedisplay will not set this true. Negative -one is returned if no overlay is in use. -.SH DESCRIPTION -glutLayerGet retrieves GLUT layer information for the current -window represented by integers. The info parameter determines what -type of layer information to return. -.SH SEE ALSO -glutEstablishOverlay, glutUseOverlay, glutCreateWindow, glutSetColor -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutMainLoop.man b/lib/glut-3.7.6/man/glut/glutMainLoop.man deleted file mode 100644 index 5e222f0e05023e7b2287cf2dcc698aa8fa426064..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutMainLoop.man +++ /dev/null @@ -1,20 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutMainLoop 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutMainLoop - enters the GLUT event processing loop. -.SH SYNTAX -.nf -.LP -void glutMainLoop(void); -.fi -.SH DESCRIPTION -glutMainLoop enters the GLUT event processing loop. This routine -should be called at most once in a GLUT program. Once called, this -routine will never return. It will call as necessary any callbacks that have -been registered. -.SH SEE ALSO -glutInit -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutMenuStatusFunc.man b/lib/glut-3.7.6/man/glut/glutMenuStatusFunc.man deleted file mode 100644 index e52a99a8c10a1949672821b05f1c00772ee231e1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutMenuStatusFunc.man +++ /dev/null @@ -1,50 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutMenuStatusFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutMenuStatusFunc - sets the global menu status callback. -.SH SYNTAX -.nf -.LP -void glutMenuStatusFunc(void (*func)(int status, int x, int y)); -void glutMenuStateFunc(void (*func)(int status)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new menu status (or state) callback function. -.SH DESCRIPTION -glutMenuStatusFunc sets the global menu status callback so a GLUT -program can determine when a menu is in use or not. When a menu -status callback is registered, it will be called with the value -GLUT_MENU_IN_USE for its value parameter when pop-up menus are -in use by the user; and the callback will be called with the value -GLUT_MENU_NOT_IN_USE for its status parameter when pop-up -menus are no longer in use. The x and y parameters indicate the location -in window coordinates of the button press that caused the menu to go -into use, or the location where the menu was released (may be outside the -window). The func parameter names the callback function. Other -callbacks continue to operate (except mouse motion callbacks) when -pop-up menus are in use so the menu status callback allows a program to -suspend animation or other tasks when menus are in use. The cascading -and unmapping of sub-menus from an initial pop-up menu does not -generate menu status callbacks. There is a single menu status callback for -GLUT. - -When the menu status callback is called, the current menu will be set to -the initial pop-up menu in both the GLUT_MENU_IN_USE and -GLUT_MENU_NOT_IN_USE cases. The current window will be set to the -window from which the initial menu was popped up from, also in both -cases. - -Passing NULL to glutMenuStatusFunc disables the generation of the -menu status callback. - -glutMenuStateFunc is a deprecated version of the -glutMenuStatusFunc routine. The only difference is -glutMenuStateFunc callback prototype does not deliver the two -additional x and y coordinates. -.SH SEE ALSO -glutCreateMenu, glutCreateWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutMotionFunc.man b/lib/glut-3.7.6/man/glut/glutMotionFunc.man deleted file mode 100644 index 09b37ddf966c9865f461d1c3b74b2e4a96f40062..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutMotionFunc.man +++ /dev/null @@ -1,34 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutMotionFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutMotionFunc, glutPassiveMotionFunc - set the motion and -passive motion callbacks respectively for the current window. -.SH SYNTAX -.nf -.LP -void glutMotionFunc(void (*func)(int x, int y)); -void glutPassiveMotionFunc(void (*func)(int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new motion or passive motion callback function. -.SH DESCRIPTION -glutMotionFunc and glutPassiveMotionFunc set the motion and -passive motion callback respectively for the current window. The motion -callback for a window is called when the mouse moves within the window -while one or more mouse buttons are pressed. The passive motion callback -for a window is called when the mouse moves within the window while -no mouse buttons are pressed. - -The x and y callback parameters indicate the mouse location in window -relative coordinates. - -Passing NULL to glutMotionFunc or glutPassiveMotionFunc -disables the generation of the mouse or passive motion callback -respectively. -.SH SEE ALSO -glutMouseFunc, glutSpaceballMotionFunc, glutTabletMotionFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutMouseFunc.man b/lib/glut-3.7.6/man/glut/glutMouseFunc.man deleted file mode 100644 index 0cfc95f1b46b39f2523e6f2077dc1c3382b2734f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutMouseFunc.man +++ /dev/null @@ -1,45 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutMouseFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutMouseFunc - sets the mouse callback for the current window. -.SH SYNTAX -.nf -.LP -void glutMouseFunc(void (*func)(int button, int state, - int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new mouse callback function. -.SH DESCRIPTION -glutMouseFunc sets the mouse callback for the current window. When a -user presses and releases mouse buttons in the window, each press and -each release generates a mouse callback. The button parameter is one of -GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, or -GLUT_RIGHT_BUTTON. For systems with only two mouse buttons, it may -not be possible to generate GLUT_MIDDLE_BUTTON callback. For systems -with a single mouse button, it may be possible to generate only a -GLUT_LEFT_BUTTON callback. The state parameter is either GLUT_UP -or GLUT_DOWN indicating whether the callback was due to a release or -press respectively. The x and y callback parameters indicate the window -relative coordinates when the mouse button state changed. If a -GLUT_DOWN callback for a specific button is triggered, the program can -assume a GLUT_UP callback for the same button will be generated -(assuming the window still has a mouse callback registered) when the -mouse button is released even if the mouse has moved outside the window. - -If a menu is attached to a button for a window, mouse callbacks will not -be generated for that button. - -During a mouse callback, glutGetModifiers may be called to -determine the state of modifier keys when the mouse event generating the -callback occurred. - -Passing NULL to glutMouseFunc disables the generation of mouse -callbacks. -.SH SEE ALSO -glutKeyboardFunc, glutMotionFunc, glutSpaceballButtonFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutGetModifiers -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutOverlayDisplayFunc.man b/lib/glut-3.7.6/man/glut/glutOverlayDisplayFunc.man deleted file mode 100644 index 524704be0bf40c9519f74d0f4177ec4a0e0193d1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutOverlayDisplayFunc.man +++ /dev/null @@ -1,49 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutOverlayDisplayFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutOverlayDisplayFunc - sets the overlay display callback for the current window. -.SH SYNTAX -.nf -.LP -void glutOverlayDisplayFunc(void (*func)(void)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new overlay display callback function. -.SH DESCRIPTION -glutDisplayFunc sets the overlay display callback for the current -window. The overlay display callback is functionally the same as the -window's display callback except that the overlay display callback is used -to redisplay the window's overlay. - -When GLUT determines that the overlay plane for the window needs to -be redisplayed, the overlay display callback for the window is called. -Before the callback, the current window is set to the window needing to be -redisplayed and the layer in use is set to the overlay. The overlay display -callback is called with no parameters. The entire overlay region should be -redisplayed in response to the callback (this includes ancillary buffers if -your program depends on their state). - -GLUT determines when the overlay display callback should be triggered -based on the window's overlay redisplay state. The overlay redisplay state -for a window can be either set explicitly by calling -glutPostOverlayRedisplay or implicitly as the result of window -damage reported by the window system. Multiple posted overlay -redisplays for a window are coalesced by GLUT to minimize the number -of overlay display callbacks called. - -Upon return from the overlay display callback, the overlay damaged state -of the window (returned by calling -glutLayerGet(GLUT_OVERLAY_DAMAGED) is cleared. - -The overlay display callback can be deregistered by passing NULL to -glutOverlayDisplayFunc. The overlay display callback is initially -NULL when an overlay is established. See glutDisplayFunc to -understand how the display callback alone is used if an overlay display -callback is not registered. -.SH SEE ALSO -glutDisplayFunc, glutPostOverlayRedisplay -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutPopWindow.man b/lib/glut-3.7.6/man/glut/glutPopWindow.man deleted file mode 100644 index dde6e8fb3423c4f5cdd1c3856e6d42e608d70ff3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutPopWindow.man +++ /dev/null @@ -1,24 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutPopWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutPopWindow, glutPushWindow - change the stacking order of the current window relative to its siblings. -.SH SYNTAX -.nf -.LP -void glutPopWindow(void); -void glutPushWindow(void); -.fi -.SH DESCRIPTION -glutPopWindow and glutPushWindow work on both top-level -windows and subwindows. The effect of pushing and popping windows -does not take place immediately. Instead the push or pop is saved for -execution upon return to the GLUT event loop. Subsequent push or pop -requests on a window replace the previously saved request for that -window. The effect of pushing and popping top-level windows is subject -to the window system's policy for restacking windows. -.SH SEE ALSO -glutShowWindow, glutIconifyWindow, glutHideWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutPositionWindow.man b/lib/glut-3.7.6/man/glut/glutPositionWindow.man deleted file mode 100644 index 7862b696f62373930e385e37e1805d9cab74f5e1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutPositionWindow.man +++ /dev/null @@ -1,39 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutPositionWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutPositionWindow - requests a change to the position of the current window. -.SH SYNTAX -.nf -.LP -void glutPositionWindow(int x, int y); -.fi -.SH ARGUMENTS -.IP \fIx\fP 1i -New X location of window in pixels. -.IP \fIy\fP 1i -New Y location of window in pixels. -.SH DESCRIPTION -glutPositionWindow requests a change in the position of the current -window. For top-level windows, the x and y parameters are pixel offsets -from the screen origin. For subwindows, the x and y parameters are -pixel offsets from the window's parent window origin. - -The requests by glutPositionWindow are not processed immediately. -The request is executed after returning to the main event loop. This -allows multiple glutPositionWindow, glutReshapeWindow, and -glutFullScreen requests to the same window to be coalesced. - -In the case of top-level windows, a glutPositionWindow call is -considered only a request for positioning the window. The window -system is free to apply its own policies to top-level window placement. -The intent is that top-level windows should be repositioned according -glutPositionWindow's parameters. - -glutPositionWindow disables the full screen status of a window if -previously enabled. -.SH SEE ALSO -glutInitWindowPosition, glutReshapeWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutPostOverlayRedisplay.man b/lib/glut-3.7.6/man/glut/glutPostOverlayRedisplay.man deleted file mode 100644 index 9c73e3c35ce320fbeaec7ff89072646627a85ab4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutPostOverlayRedisplay.man +++ /dev/null @@ -1,88 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutPostOverlayRedisplay 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutPostOverlayRedisplay, glutPostWindowOverlayRedisplay - marks the -overlay of the current or specified window as needing to be -redisplayed. -.SH SYNTAX -.nf -.LP -void glutPostOverlayRedisplay(void); -void glutPostWindowOverlayRedisplay(int win); -.fi -.SH DESCRIPTION -Mark the overlay of current window as needing to be redisplayed. -The next iteration through glutMainLoop, the window's overlay -display callback (or simply the display callback if no overlay display -callback is registered) will be called to redisplay the window's -overlay plane. Multiple calls to glutPostOverlayRedisplay -before the next display callback opportunity (or overlay display -callback opportunity if one is registered) generate only a single -redisplay. glutPostOverlayRedisplay may be called within a -window's display or overlay display callback to re-mark that -window for redisplay. - -Logically, overlay damage notification for a window is treated as a -glutPostOverlayRedisplay on the damaged window. Unlike -damage reported by the window system, -glutPostOverlayRedisplay will not set to true the overlay's -damaged status (returned by -glutLayerGet(GLUT_OVERLAY_DAMAGED). - -If the window you want to post an overlay redisplay on is not already current -(and you do not require it to be immediately made current), using -glutPostWindowOverlayRedisplay is more efficient that calling glutSetWindow to -the desired window and then calling glutPostOverlayRedisplay. -.SH EXAMPLE -If you are doing an interactive effect like rubberbanding in the -overlay, it is a good idea to structure your rendering to minimize -flicker (most overlays are single-buffered). Only clear the -overlay if you know that the window has been damaged. Otherwise, -try to simply erase what you last drew and redraw it in an updated -position. Here is an example overlay display callback used to -implement overlay rubberbanding: -.nf -.LP - void - redrawOverlay(void) - { - static int prevStretchX, prevStretchY; - - if (glutLayerGet(GLUT_OVERLAY_DAMAGED)) { - /* Damage means we need a full clear. */ - glClear(GL_COLOR_BUFFER_BIT); - } else { - /* Undraw last rubber-band. */ - glIndexi(transparent); - glBegin(GL_LINE_LOOP); - glVertex2i(anchorX, anchorY); - glVertex2i(anchorX, prevStretchY); - glVertex2i(prevStretchX, prevStretchY); - glVertex2i(prevStretchX, anchorY); - glEnd(); - } - glIndexi(red); - glBegin(GL_LINE_LOOP); - glVertex2i(anchorX, anchorY); - glVertex2i(anchorX, stretchY); - glVertex2i(stretchX, stretchY); - glVertex2i(stretchX, anchorY); - glEnd(); - prevStretchX = stretchX; - prevStretchY = stretchY; - } -.fi -.LP -Notice how glutLayerGet(GLUT_OVERLAY_DAMAGED) is used to determine if -a clear needs to take place because of damage; if a clear is unnecessary, -it is faster to just draw the last rubberband using the transparent pixel. -.LP -When the application is through with the rubberbanding effect, the best -way to get ride of the rubberband is to simply hide the overlay by -calling glutHideOverlay. -.SH SEE ALSO -glutPostRedisplay, glutEstablishOverlay, glutLayerGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutPostRedisplay.man b/lib/glut-3.7.6/man/glut/glutPostRedisplay.man deleted file mode 100644 index 730ff7fe54139f70aab206b4b86cc633e4a039d3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutPostRedisplay.man +++ /dev/null @@ -1,37 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutPostRedisplay 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutPostRedisplay, glutPostWindowRedisplay - marks the current or specified window as needing to be -redisplayed. -.SH SYNTAX -.nf -.LP -void glutPostRedisplay(void); -void glutPostWindowRedisplay(int win); -.fi -.SH DESCRIPTION -glutPostRedisplay marks the normal plane of current window as needing to be redisplayed. -glutPostWindowRedisplay works the specified window as needing to be redisplayed. -After either call, the next iteration through glutMainLoop, the window's display -callback will be called to redisplay the window's normal plane. Multiple -calls to glutPostRedisplay before the next display callback -opportunity generates only a single redisplay callback. -glutPostRedisplay may be called within a window's display or -overlay display callback to re-mark that window for redisplay. - -Logically, normal plane damage notification for a window is treated as a -glutPostRedisplay on the damaged window. Unlike damage -reported by the window system, glutPostRedisplay will not set to -true the normal plane's damaged status (returned by -glutLayerGet(GLUT_NORMAL_DAMAGED). - -If the window you want to post a redisplay on is not already current -(and you do not require it to be immediately made current), using -glutPostWindowRedisplay is more efficient that calling glutSetWindow to -the desired window and then calling glutPostRedisplay. -.SH SEE ALSO -glutPostOverlayRedisplay, glutDisplayFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutRemoveMenuItem.man b/lib/glut-3.7.6/man/glut/glutRemoveMenuItem.man deleted file mode 100644 index 59486eee55fa0ed9ab77c01d96145b16c0bff0e1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutRemoveMenuItem.man +++ /dev/null @@ -1,23 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutRemoveMenuItem 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutRemoveMenuItem - remove the specified menu item. -.SH SYNTAX -.nf -.LP -void glutRemoveMenuItem(int entry); -.fi -.SH ARGUMENTS -.IP \fIentry\fP 1i -Index into the menu items of the current menu (1 is the topmost menu item). -.SH DESCRIPTION -glutRemoveMenuItem remove the entry menu item regardless of -whether it is a menu entry or sub-menu trigger. entry must be between 1 -and glutGet(GLUT_MENU_NUM_ITEMS) inclusive. Menu items below -the removed menu item are renumbered. -.SH SEE ALSO -glutAddMenuEntry, glutAddSubMenu, glutChangeToMenuEntry, glutChangeToSubMenu -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutRemoveOverlay.man b/lib/glut-3.7.6/man/glut/glutRemoveOverlay.man deleted file mode 100644 index 55a756afa082ae3a4fe23ae71fb01c47d8d267e1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutRemoveOverlay.man +++ /dev/null @@ -1,26 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutRemoveLayer 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutRemoveOverlay - removes the overlay (if one exists) from the current window. -.SH SYNTAX -.nf -.LP -void glutRemoveOverlay(void); -.fi -.SH DESCRIPTION -glutRemoveOverlay removes the overlay (if one exists). It is safe -to call glutRemoveOverlay even if no overlay is currently -established--it does nothing in this case. Implicitly, the window's -layer in use changes to the normal plane immediately once the -overlay is removed. - -If the program intends to re-establish the overlay later, it is typically -faster and less resource intensive to use glutHideOverlay and -glutShowOverlay to simply change the display status of the -overlay. -.SH SEE ALSO -glutEstablishOverlay, glutDestroyWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutReportErrors.man b/lib/glut-3.7.6/man/glut/glutReportErrors.man deleted file mode 100644 index 40e8b70a689c62c239b7e414c5351a788d4d1616..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutReportErrors.man +++ /dev/null @@ -1,29 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutReportErrors 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutReportErrors - for debugging purposes; prints out OpenGL run-time errors. -.SH SYNTAX -.nf -.LP -void glutReportErrors(void); -.SH DESCRIPTION -This routine prints out any OpenGL run-time errors pending and clears -the errors. This routine typically should only be used for debugging purposes -since calling it will slow OpenGL programs. It is provided as a convenience; -all the routine does is call -.I glGetError -until no more errors are reported. Any errors detected are reported -with a GLUT warning and the corresponding text message generated by -.I gluErrorString. - -Calling glutReportErrors repeatedly in your program can help isolate -OpenGL errors to the offending OpenGL command. Remember that you -can use the -.I -gldebug -option to detect OpenGL errors in any GLUT program. -.SH SEE ALSO -glutInit, glutCreateWindow, glutInitDisplayMode, gluErrorString, glGetError -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutReshapeFunc.man b/lib/glut-3.7.6/man/glut/glutReshapeFunc.man deleted file mode 100644 index 399224e738bce5ed9bf497610a497377fe065d0a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutReshapeFunc.man +++ /dev/null @@ -1,41 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutReshapeFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutReshapeFunc - sets the reshape callback for the current window. -.SH SYNTAX -.nf -.LP -void glutReshapeFunc(void (*func)(int width, int height)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new reshape callback function. -.SH DESCRIPTION -glutReshapeFunc sets the reshape callback for the current window. The -reshape callback is triggered when a window is reshaped. A reshape -callback is also triggered immediately before a window's first display -callback after a window is created or whenever an overlay for the window -is established. The width and height parameters of the callback specify -the new window size in pixels. Before the callback, the current window is -set to the window that has been reshaped. - -If a reshape callback is not registered for a window or NULL is passed to -glutReshapeFunc (to deregister a previously registered callback), the -default reshape callback is used. This default callback will simply call -glViewport(0,0,width,height) on the normal plane (and on the -overlay if one exists). - -If an overlay is established for the window, a single reshape callback is -generated. It is the callback's responsibility to update both the normal -plane and overlay for the window (changing the layer in use as necessary). - -When a top-level window is reshaped, subwindows are not reshaped. It is -up to the GLUT program to manage the size and positions of subwindows -within a top-level window. Still, reshape callbacks will be triggered for -subwindows when their size is changed using glutReshapeWindow. -.SH SEE ALSO -glutDisplayFunc, glutReshapeWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutReshapeWindow.man b/lib/glut-3.7.6/man/glut/glutReshapeWindow.man deleted file mode 100644 index d4af32a38744cdcf3dd9027ce5e9232797c9395e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutReshapeWindow.man +++ /dev/null @@ -1,40 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutReshapeWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutReshapeWindow - requests a change to the size of the current window. -.SH SYNTAX -.nf -.LP -void glutReshapeWindow(int width, int height); -.fi -.SH ARGUMENTS -.IP \fIwidth\fP 1i -New width of window in pixels. -.IP \fIheight\fP 1i -New height of window in pixels. -.SH DESCRIPTION -glutReshapeWindow requests a change in the size of the current -window. The width and height parameters are size extents in pixels. -The width and height must be positive values. - -The requests by glutReshapeWindow are not processed immediately. -The request is executed after returning to the main event loop. This -allows multiple glutReshapeWindow, glutPositionWindow, and -glutFullScreen requests to the same window to be coalesced. - -In the case of top-level windows, a glutReshapeWindow call is -considered only a request for sizing the window. The window system is -free to apply its own policies to top-level window sizing. The intent is -that top-level windows should be reshaped according -glutReshapeWindow's parameters. Whether a reshape actually takes -effect and, if so, the reshaped dimensions are reported to the program by -a reshape callback. - -glutReshapeWindow disables the full screen status of a window if -previously enabled. -.SH SEE ALSO -glutPositionWindow, glutReshapeFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSetColor.man b/lib/glut-3.7.6/man/glut/glutSetColor.man deleted file mode 100644 index 874a686e9e4865cb3a6fcba430f555794a973f3e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSetColor.man +++ /dev/null @@ -1,35 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSetColor 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSetColor - sets the color of a colormap entry in the layer of use -for the current window. -.SH SYNTAX -.nf -.LP -void glutSetColor(int cell, - GLfloat red, GLfloat green, GLfloat blue); -.fi -.SH ARGUMENTS -.IP \fIcell\fP 1i -Color cell index (starting at zero). -.IP \fIred\fP 1i -Red intensity (clamped between 0.0 and 1.0 inclusive). -.IP \fIgreen\fP 1i -Green intensity (clamped between 0.0 and 1.0 inclusive). -.IP \fIblue\fP 1i -Blue intensity (clamped between 0.0 and 1.0 inclusive). -.SH DESCRIPTION -Sets the cell color index colormap entry of the current window's -logical colormap for the layer in use with the color specified by red, -green, and blue. The layer in use of the current window should be a -color index window. cell should be zero or greater and less than the -total number of colormap entries for the window. If the layer in use's -colormap was copied by reference, a glutSetColor call will force the -duplication of the colormap. Do not attempt to set the color of an -overlay's transparent index. -.SH SEE ALSO -glutGetColor, glutCopyColormap, glutInitDisplayMode -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSetCursor.man b/lib/glut-3.7.6/man/glut/glutSetCursor.man deleted file mode 100644 index 4e568ee55e92c79f48ab8d6ab892287af91ecb0f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSetCursor.man +++ /dev/null @@ -1,99 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSetCursor 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSetCursor - changes the cursor image of the current window. -.SH SYNTAX -.nf -.LP -void glutSetCursor(int cursor); -.fi -.SH ARGUMENTS -.IP \fIcursor\fP 1i -Name of cursor image to change to. Possible values follow: -.TP 8 -.B GLUT_CURSOR_RIGHT_ARROW -Arrow pointing up and to the right. -.TP 8 -.B GLUT_CURSOR_LEFT_ARROW -Arrow pointing up and to the left. -.TP 8 -.B GLUT_CURSOR_INFO -Pointing hand. -.TP 8 -.B GLUT_CURSOR_DESTROY -Skull & cross bones. -.TP 8 -.B GLUT_CURSOR_HELP -Question mark. -.TP 8 -.B GLUT_CURSOR_CYCLE -Arrows rotating in a circle. -.TP 8 -.B GLUT_CURSOR_SPRAY -Spray can. -.TP 8 -.B GLUT_CURSOR_WAIT -Wrist watch. -.TP 8 -.B GLUT_CURSOR_TEXT -Insertion point cursor for text. -.TP 8 -.B GLUT_CURSOR_CROSSHAIR -Simple cross-hair. -.TP 8 -.B GLUT_CURSOR_UP_DOWN -Bi-directional pointing up & down. -.TP 8 -.B GLUT_CURSOR_LEFT_RIGHT -Bi-directional pointing left & right. -.TP 8 -.B GLUT_CURSOR_TOP_SIDE -Arrow pointing to top side. -.TP 8 -.B GLUT_CURSOR_BOTTOM_SIDE -Arrow pointing to bottom side. -.TP 8 -.B GLUT_CURSOR_LEFT_SIDE -Arrow pointing to left side. -.TP 8 -.B GLUT_CURSOR_RIGHT_SIDE -Arrow pointing to right side. -.TP 8 -.B GLUT_CURSOR_TOP_LEFT_CORNER -Arrow pointing to top-left corner. -.TP 8 -.B GLUT_CURSOR_TOP_RIGHT_CORNER -Arrow pointing to top-right corner. -.TP 8 -.B GLUT_CURSOR_BOTTOM_RIGHT_CORNER -Arrow pointing to bottom-left corner. -.TP 8 -.B GLUT_CURSOR_BOTTOM_LEFT_CORNER -Arrow pointing to bottom-right corner. -.TP 8 -.B GLUT_CURSOR_FULL_CROSSHAIR -Full-screen cross-hair cursor (if possible, otherwise -GLUT_CURSOR_CROSSHAIR). -.TP 8 -.B GLUT_CURSOR_NONE -Invisible cursor. -.TP 8 -.B GLUT_CURSOR_INHERIT -Use parent's cursor. -.SH DESCRIPTION -glutSetCursor changes the cursor image of the current window. -Each call requests the window system change the cursor appropriately. -The cursor image when a window is created is -GLUT_CURSOR_INHERIT. The exact cursor images used are -implementation dependent. The intent is for the image to convey the -meaning of the cursor name. For a top-level window, -GLUT_CURSOR_INHERIT uses the default window system cursor. -.SH X IMPLEMENTATION NOTES -GLUT for X uses SGI's _SGI_CROSSHAIR_CURSOR convention to -access a full-screen cross-hair cursor if possible. -.SH SEE ALSO -glutCreateWindow, glutCreateSubWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSetKeyRepeat.man b/lib/glut-3.7.6/man/glut/glutSetKeyRepeat.man deleted file mode 100644 index 7e66ac5f30eca34253f14d8f549ef36e21bc3018..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSetKeyRepeat.man +++ /dev/null @@ -1,30 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1998. -.\" -.TH glutSetKeyRepeat 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSetKeyRepeat - retrieves simple GLUT state represented by integers. -.SH SYNTAX -.nf -.LP -int glutSetKeyRepeat(int repeatMode); -.fi -.SH ARGUMENTS -.IP \fIrepeatMode\fP 1i -Mode for setting key repeat to. -.TP 8 -.B GLUT_KEY_REPEAT_OFF -Disable key repeat for the window system on a global basis if possible. -.TP 8 -.B GLUT_KEY_REPEAT_ON -Enable key repeat for the window system on a global basis if possible. -.TP 8 -.B GLUT_KEY_REPEAT_DEFAULT -Reset the key repeat mode for the window system to its default state -if possible. -.SH DESCRIPTION -.I XXX fix me -.SH SEE ALSO -glutIgnoreKeyRepeat, glutKeyboardFunc, glutSpecialFunc, glutKeyboardUpFunc, glutSpecialUpFunc, glutDeviceGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSetMenu.man b/lib/glut-3.7.6/man/glut/glutSetMenu.man deleted file mode 100644 index 72f07708790d91052097c5b72083ef590b0adf4c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSetMenu.man +++ /dev/null @@ -1,23 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSetMenu 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSetMenu - sets the current menu; glutGetMenu - returns the identifier of the current menu. -.SH SYNTAX -.nf -.LP -void glutSetMenu(int menu); -int glutGetMenu(void); -.fi -.SH ARGUMENTS -.IP \fImenu\fP 1i -The identifier of the menu to make the current menu. -.SH DESCRIPTION -glutSetMenu sets the current menu; glutGetMenu returns the -identifier of the current menu. If no menus exist or the previous -current menu was destroyed, glutGetMenu returns zero. -.SH SEE ALSO -glutCreateMenu, glutSetWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSetWindow.man b/lib/glut-3.7.6/man/glut/glutSetWindow.man deleted file mode 100644 index 481b283d6a845f68679317675021e3ab39ff8461..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSetWindow.man +++ /dev/null @@ -1,26 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSetWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSetWindow - sets the current window; glutGetWindow - returns -the identifier of the current window. -.SH SYNTAX -.nf -.LP -void glutSetWindow(int win); -int glutGetWindow(void); -.fi -.SH ARGUMENTS -.IP \fIwin\fP 1i -Identifier of GLUT window to make the current window. -.SH DESCRIPTION -glutSetWindow sets the current window; glutGetWindow returns the -identifier of the current window. If no windows exist or the previously -current window was destroyed, glutGetWindow returns zero. -glutSetWindow does not change the layer in use for the window; this is -done using glutUseLayer. -.SH SEE ALSO -glutCreateWindow, glutSetMenu -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSetWindowTitle.man b/lib/glut-3.7.6/man/glut/glutSetWindowTitle.man deleted file mode 100644 index 51293ba588d46d098b3938820442a64a1ebc34b5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSetWindowTitle.man +++ /dev/null @@ -1,30 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSetWindowTitle 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSetWindowTitle, glutSetIconTitle - change the window or icon title respectively of the current top-level window. -.SH SYNTAX -.nf -.LP -void glutSetWindowTitle(char *name); -void glutSetIconTitle(char *name); -.fi -.SH ARGUMENTS -.IP \fIname\fP 1i -ASCII character string for the window or icon name to be set for -the window. -.SH DESCRIPTION -These routines should be called only when the current window is a -top-level window. Upon creation of a top-level window, the window -and icon names are determined by the name parameter to -glutCreateWindow. Once created, glutSetWindowTitle and -glutSetIconTitle can change the window and icon names -respectively of top-level windows. Each call requests the window -system change the title appropriately. Requests are not buffered or -coalesced. The policy by which the window and icon name are displayed -is window system dependent. -.SH SEE ALSO -glutCreateWindow, glutIconifyWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutShowOverlay.man b/lib/glut-3.7.6/man/glut/glutShowOverlay.man deleted file mode 100644 index 14affb829259442a673c42c6206a7e35ca042af0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutShowOverlay.man +++ /dev/null @@ -1,26 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutShowOverlay 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutShowOverlay, glutHideOverlay - shows or hides the overlay of the current window -.SH SYNTAX -.nf -.LP -void glutShowOverlay(void); -void glutHideOverlay(void); -.fi -.SH DESCRIPTION -glutShowOverlay shows the overlay of the current window; -glutHideOverlay hides the overlay. The effect of showing or -hiding an overlay takes place immediately. Note that -glutShowOverlay will not actually display the overlay unless the -window is also shown (and even a shown window may be obscured -by other windows, thereby obscuring the overlay). It is typically -faster and less resource intensive to use these routines to control the -display status of an overlay as opposed to removing and -re-establishing the overlay. -.SH SEE ALSO -glutEstablishOverlay, glutShowWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutShowWindow.man b/lib/glut-3.7.6/man/glut/glutShowWindow.man deleted file mode 100644 index 3e534c545fbda671f0c2fb30e38f78cb57034f3e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutShowWindow.man +++ /dev/null @@ -1,28 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutShowWindow 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutShowWindow, glutHideWindow, glutIconifyWindow - change the display status of the current window. -.SH SYNTAX -.nf -.LP -void glutShowWindow(void); -void glutHideWindow(void); -void glutIconifyWindow(void); -.fi -.SH DESCRIPTION -glutShowWindow will show the current window (though it may still -not be visible if obscured by other shown windows). glutHideWindow -will hide the current window. glutIconifyWindow will iconify a -top-level window, but GLUT prohibits iconification of a subwindow. -The effect of showing, hiding, and iconifying windows does not take -place immediately. Instead the requests are saved for execution upon -return to the GLUT event loop. Subsequent show, hide, or iconification -requests on a window replace the previously saved request for that -window. The effect of hiding, showing, or iconifying top-level windows -is subject to the window system's policy for displaying windows. -.SH SEE ALSO -glutPopWindow, glutPushWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidCone.man b/lib/glut-3.7.6/man/glut/glutSolidCone.man deleted file mode 100644 index f0a6dca49719661f97f725e84ef199059e077a4d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidCone.man +++ /dev/null @@ -1,34 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidCone 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidCone, glutWireCone - render a solid or wireframe cone respectively. -.SH SYNTAX -.nf -.LP -void glutSolidCone(GLdouble base, GLdouble height, - GLint slices, GLint stacks); -void glutWireCone(GLdouble base, GLdouble height, - GLint slices, GLint stacks); -.fi -.SH ARGUMENTS -.IP \fIbase\fP 1i -The radius of the base of the cone. -.IP \fIheight\fP 1i -The height of the cone. -.IP \fIslices\fP 1i -The number of subdivisions around the Z axis. -.IP \fIstacks\fP 1i -The number of subdivisions along the Z axis. -.SH DESCRIPTION -glutSolidCone and glutWireCone render a solid or wireframe cone -respectively oriented along the Z axis. The base of the cone is placed at Z -= 0, and the top at Z = height. The cone is subdivided around the Z axis -into slices, and along the Z axis into stacks. -.SH SEE ALSO -glutSolidSphere, glutSolidCube, glutSolidTorus, glutSolidDodecahedron, -glutSolidOctahedron, glutSolidTetrahedron, glutSolidIcosahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidCube.man b/lib/glut-3.7.6/man/glut/glutSolidCube.man deleted file mode 100644 index f9ba2c00f383fc2c095b426da5773e2363cd5abb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidCube.man +++ /dev/null @@ -1,25 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidCube 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidCube, glutWireCube - render a solid or wireframe cube respectively. -.SH SYNTAX -.nf -.LP -void glutSolidCube(GLdouble size); -void glutWireCube(GLdouble size); -.fi -.SH ARGUMENTS -.IP \fIsize\fP 1i -Length of each edge. -.SH DESCRIPTION -glutSolidCube and glutWireCube render a solid or wireframe cube -respectively. The cube is centered at the modeling coordinates origin with -sides of length size. -.SH SEE ALSO -glutSolidSphere, glutSolidCone, glutSolidTorus, glutSolidDodecahedron, -glutSolidOctahedron, glutSolidTetrahedron, glutSolidIcosahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidDodecahedron.man b/lib/glut-3.7.6/man/glut/glutSolidDodecahedron.man deleted file mode 100644 index 2be20cf9a57d35efb14afee30d42f344e903d8ef..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidDodecahedron.man +++ /dev/null @@ -1,23 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidDodecahedron 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidDodecahedron, glutWireDodecahedron - render a -solid or wireframe dodecahedron (12-sided regular solid) respectively. -.SH SYNTAX -.nf -.LP -void glutSolidDodecahedron(void); -void glutWireDodecahedron(void); -.fi -.SH DESCRIPTION -glutSolidDodecahedron and glutWireDodecahedron render a -solid or wireframe dodecahedron respectively centered at the modeling -coordinates origin with a radius of sqrt(3). -.SH SEE ALSO -glutSolidSphere, glutSolidCube, glutSolidCone, glutSolidTorus, -glutSolidOctahedron, glutSolidTetrahedron, glutSolidIcosahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidIcosahedron.man b/lib/glut-3.7.6/man/glut/glutSolidIcosahedron.man deleted file mode 100644 index 50b71566703f4397713e30bace61158ebb9a704a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidIcosahedron.man +++ /dev/null @@ -1,23 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidIcosahedron 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidIcosahedron, glutWireIcosahedron - render a -solid or wireframe icosahedron (20-sided regular solid) respectively. -.SH SYNTAX -.nf -.LP -void glutSolidIcosahedron(void); -void glutWireIcosahedron(void); -.fi -.SH DESCRIPTION -glutSolidIcosahedron and glutWireIcosahedron render a solid -or wireframe icosahedron respectively. The icosahedron is centered at the -modeling coordinates origin and has a radius of 1.0. -.SH SEE ALSO -glutSolidSphere, glutSolidCube, glutSolidCone, glutSolidTorus, glutSolidDodecahedron, -glutSolidOctahedron, glutSolidTetrahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidOctahedron.man b/lib/glut-3.7.6/man/glut/glutSolidOctahedron.man deleted file mode 100644 index 0b058e7a373e3cb45694a219c0444e1af18e3145..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidOctahedron.man +++ /dev/null @@ -1,23 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidOctahedron 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidOctahedron, glutWireOctahedron - render a solid -or wireframe octahedron (8-sided regular solid) respectively. -.SH SYNTAX -.nf -.LP -void glutSolidOctahedron(void); -void glutWireOctahedron(void); -.fi -.SH DESCRIPTION -glutSolidOctahedron and glutWireOctahedron render a solid or -wireframe octahedron respectively centered at the modeling coordinates -origin with a radius of 1.0. -.SH SEE ALSO -glutSolidSphere, glutSolidCube, glutSolidCone, glutSolidTorus, glutSolidDodecahedron, -glutSolidTetrahedron, glutSolidIcosahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidSphere.man b/lib/glut-3.7.6/man/glut/glutSolidSphere.man deleted file mode 100644 index 531f3a1f7ae88494620c265d8f91b15e71aa9c48..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidSphere.man +++ /dev/null @@ -1,31 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidSphere 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidSphere, glutWireSphere - render a solid or wireframe sphere respectively. -.SH SYNTAX -.nf -.LP -void glutSolidSphere(GLdouble radius, - GLint slices, GLint stacks); -void glutWireSphere(GLdouble radius, - GLint slices, GLint stacks); -.fi -.SH ARGUMENTS -.IP \fIradius\fP 1i -The radius of the sphere. -.IP \fIslices\fP 1i -The number of subdivisions around the Z axis (similar to lines of longitude). -.IP \fIstacks\fP 1i -The number of subdivisions along the Z axis (similar to lines of latitude). -.SH DESCRIPTION -Renders a sphere centered at the modeling coordinates origin of the -specified radius. The sphere is subdivided around the Z axis into slices -and along the Z axis into stacks. -.SH SEE ALSO -glutSolidCube, glutSolidCone, glutSolidTorus, glutSolidDodecahedron, -glutSolidOctahedron, glutSolidTetrahedron, glutSolidIcosahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidTeapot.man b/lib/glut-3.7.6/man/glut/glutSolidTeapot.man deleted file mode 100644 index 8090f3296ccc4d37d7812c605f5ed9c3fed10110..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidTeapot.man +++ /dev/null @@ -1,42 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidTeapot 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidTeapot, glutWireTeapot - render a solid or wireframe teapot respectively. -.SH SYNTAX -.nf -.LP -void glutSolidTeapot(GLdouble size); -void glutWireTeapot(GLdouble size); -.fi -.SH ARGUMENTS -.IP \fIsize\fP 1i -Relative size of the teapot. -.SH DESCRIPTION -glutSolidTeapot and glutWireTeapot render a solid or wireframe -teapot respectively. Both surface normals and texture coordinates for the -teapot are generated. The teapot is generated with OpenGL evaluators. -.SH BUGS -The teapot is greatly over-tesselated; it renders way too slow. - -OpenGL's default glFrontFace state assumes that front facing polygons -(for the purpose of face culling) -have vertices that wind counter clockwise when projected into window -space. This teapot is rendered with its front facing polygon vertices -winding clockwise. For OpenGL's default back face culling to work, -you should use: -.nf -.LP - glFrontFace(GL_CW); - glutSolidTeapot(size); - glFrontFace(GL_CCW); -.fi -.LP -Both these bugs reflect issues in the original aux toolkit's -teapot rendering routines (GLUT used the same teapot rendering routine). -.SH SEE ALSO -glutSolidSphere, glutSolidCube, glutSolidCone, glutSolidTorus, glutSolidDodecahedron, -glutSolidOctahedron, glutSolidTetrahedron, glutSolidIcosahedron -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidTetrahedron.man b/lib/glut-3.7.6/man/glut/glutSolidTetrahedron.man deleted file mode 100644 index 88e3bccdce64d8eb2acd5b0a2f1f786651723dbc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidTetrahedron.man +++ /dev/null @@ -1,23 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidTetrahedron 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidTetrahedron, glutWireTetrahedron - render a -solid or wireframe tetrahedron (4-sided regular solid) respectively. -.SH SYNTAX -.nf -.LP -void glutSolidTetrahedron(void); -void glutWireTetrahedron(void); -.fi -.SH DESCRIPTION -glutSolidTetrahedron and glutWireTetrahedron render a solid -or wireframe tetrahedron respectively centered at the modeling -coordinates origin with a radius of sqrt(3). -.SH SEE ALSO -glutSolidSphere, glutSolidCube, glutSolidCone, glutSolidTorus, glutSolidDodecahedron, -glutSolidOctahedron, glutSolidIcosahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSolidTorus.man b/lib/glut-3.7.6/man/glut/glutSolidTorus.man deleted file mode 100644 index 648e579307d78f29f1f48af9013be7b6d39e73c8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSolidTorus.man +++ /dev/null @@ -1,36 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSolidTorus 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSolidTorus, glutWireTorus - render a solid or wireframe -torus (doughnut) respectively. -.SH SYNTAX -.nf -.LP -void glutSolidTorus(GLdouble innerRadius, - GLdouble outerRadius, - GLint nsides, GLint rings); -void glutWireTorus(GLdouble innerRadius, - GLdouble outerRadius, - GLint nsides, GLint rings); -.fi -.SH ARGUMENTS -.IP \fIinnerRadius\fP 1i -Inner radius of the torus. -.IP \fIouterRadius\fP 1i -Outer radius of the torus. -.IP \fInsides\fP 1i -Number of sides for each radial section. -.IP \fIrings\fP 1i -Number of radial divisions for the torus. -.SH DESCRIPTION -glutSolidTorus and glutWireTorus render a solid or wireframe -torus (doughnut) respectively centered at the modeling coordinates origin -whose axis is aligned with the Z axis. -.SH SEE ALSO -glutSolidSphere, glutSolidCube, glutSolidCone, glutSolidDodecahedron, -glutSolidOctahedron, glutSolidTetrahedron, glutSolidIcosahedron, -glutSolidTeapot -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSpaceballButtonFunc.man b/lib/glut-3.7.6/man/glut/glutSpaceballButtonFunc.man deleted file mode 100644 index d095d4e6d7eb89855d3f2107c399b8bd004e2c4b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSpaceballButtonFunc.man +++ /dev/null @@ -1,36 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSpaceballButtonFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSpaceballButtonFunc - sets the Spaceball button callback for the current window. -.SH SYNTAX -.nf -.LP -void glutSpaceballButtonFunc(void (*func)(int button, int state)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new spaceball button callback function. -.SH DESCRIPTION -glutSpaceballButtonFunc sets the Spaceball button callback for the -current window. The Spaceball button callback for a window is called -when the window has Spaceball input focus (normally, when the mouse -is in the window) and the user generates Spaceball button presses. The -button parameter will be the button number (starting at one). The -number of available Spaceball buttons can be determined with -glutDeviceGet(GLUT_NUM_SPACEBALL_BUTTONS). The state is -either GLUT_UP or GLUT_DOWN indicating whether the callback was due -to a release or press respectively. - -Registering a Spaceball button callback when a Spaceball device is not -available is ineffectual and not an error. In this case, no Spaceball button -callbacks will be generated. - -Passing NULL to glutSpaceballButtonFunc disables the generation -of Spaceball button callbacks. When a new window is created, no -Spaceball button callback is initially registered. -.SH SEE ALSO -glutSpaceballMotionFunc, glutSpaceballRotateFunc, glutMouseFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutJoystickFunc, glutDeviceGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSpaceballMotionFunc.man b/lib/glut-3.7.6/man/glut/glutSpaceballMotionFunc.man deleted file mode 100644 index 6f2c6df7690b0885255c376198470980e1d5896f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSpaceballMotionFunc.man +++ /dev/null @@ -1,34 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSpaceballMotionFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSpaceballMotionFunc - sets the Spaceball motion callback for the current window. -.SH SYNTAX -.nf -.LP -void glutSpaceballMotionFunc(void (*func)(int x, int y, int z)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new entry callback function. -.SH DESCRIPTION -glutSpaceballMotionFunc sets the Spaceball motion callback for -the current window. The Spaceball motion callback for a window is -called when the window has Spaceball input focus (normally, when the -mouse is in the window) and the user generates Spaceball translations. -The x, y, and z callback parameters indicate the translations along the X, -Y, and Z axes. The callback parameters are normalized to be within the -range of -1000 to 1000 inclusive. - -Registering a Spaceball motion callback when a Spaceball device is not -available has no effect and is not an error. In this case, no Spaceball -motion callbacks will be generated. - -Passing NULL to glutSpaceballMotionFunc disables the generation -of Spaceball motion callbacks. When a new window is created, no -Spaceball motion callback is initially registered. -.SH SEE ALSO -glutSpaceballRotateFunc, glutSpaceballButtonFunc, glutMotionFunc, glutTabletMotionFunc, glutJoystickFunc, glutDeviceGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSpaceballRotateFunc.man b/lib/glut-3.7.6/man/glut/glutSpaceballRotateFunc.man deleted file mode 100644 index d06f9a89bd9c6d8eec62e914b8a98fa68cd295f6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSpaceballRotateFunc.man +++ /dev/null @@ -1,35 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSpaceballRotateFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSpaceballRotateFunc - sets the Spaceball rotation callback for the current -window. -.SH SYNTAX -.nf -.LP -void glutSpaceballRotateFunc(void (*func)(int x, int y, int z)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new spaceball rotate callback function. -.SH DESCRIPTION -glutSpaceballRotateFunc sets the Spaceball rotate callback for the -current window. The Spaceball rotate callback for a window is called -when the window has Spaceball input focus (normally, when the mouse -is in the window) and the user generates Spaceball rotations. The x, y, -and z callback parameters indicate the rotation along the X, Y, and Z -axes. The callback parameters are normalized to be within the range of --1800 to 1800 inclusive. - -Registering a Spaceball rotate callback when a Spaceball device is not -available is ineffectual and not an error. In this case, no Spaceball rotate -callbacks will be generated. - -Passing NULL to glutSpaceballRotateFunc disables the generation -of Spaceball rotate callbacks. When a new window is created, no -Spaceball rotate callback is initially registered. -.SH SEE ALSO -glutSpaceballMotionFunc, glutSpaceballButtonFunc, glutMotionFunc, glutTabletMotionFunc, glutJoystickFunc, glutDeviceGet -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSpecialFunc.man b/lib/glut-3.7.6/man/glut/glutSpecialFunc.man deleted file mode 100644 index c346a2ed69cb7543426081ebb566d238fb90a87b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSpecialFunc.man +++ /dev/null @@ -1,102 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSpecialFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSpecialFunc - sets the special keyboard callback for the current window. -.SH SYNTAX -.nf -.LP -void glutSpecialFunc(void (*func)(int key, int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new special callback function. -.SH DESCRIPTION -glutSpecialFunc sets the special keyboard callback for the current -window. The special keyboard callback is triggered when keyboard -function or directional keys are pressed. The key callback parameter is a -GLUT_KEY_* constant for the special key pressed. The x and y callback -parameters indicate the mouse in window relative coordinates when the -key was pressed. When a new window is created, no special callback is -initially registered and special key strokes in the window are ignored. -Passing NULL to glutSpecialFunc disables the generation of special -callbacks. - -During a special callback, glutGetModifiers may be called to -determine the state of modifier keys when the keystroke generating the -callback occurred. - -An implementation should do its best to provide ways to generate all the -GLUT_KEY_* special keys. The available GLUT_KEY_* values are: -.TP 8 -.B GLUT_KEY_F1 -F1 function key. -.TP 8 -.B GLUT_KEY_F2 -F2 function key. -.TP 8 -.B GLUT_KEY_F3 -F3 function key. -.TP 8 -.B GLUT_KEY_F4 -F4 function key. -.TP 8 -.B GLUT_KEY_F5 -F5 function key. -.TP 8 -.B GLUT_KEY_F6 -F6 function key. -.TP 8 -.B GLUT_KEY_F7 -F7 function key. -.TP 8 -.B GLUT_KEY_F8 -F8 function key. -.TP 8 -.B GLUT_KEY_F9 -F9 function key. -.TP 8 -.B GLUT_KEY_F10 -F10 function key. -.TP 8 -.B GLUT_KEY_F11 -F11 function key. -.TP 8 -.B GLUT_KEY_F12 -F12 function key. -.TP 8 -.B GLUT_KEY_LEFT -Left directional key. -.TP 8 -.B GLUT_KEY_UP -Up directional key. -.TP 8 -.B GLUT_KEY_RIGHT -Right directional key. -.TP 8 -.B GLUT_KEY_DOWN -Down directional key. -.TP 8 -.B GLUT_KEY_PAGE_UP -Page up directional key. -.TP 8 -.B GLUT_KEY_PAGE_DOWN -Page down directional key. -.TP 8 -.B GLUT_KEY_HOME -Home directional key. -.TP 8 -.B GLUT_KEY_END -End directional key. -.TP 8 -.B GLUT_KEY_INSERT -Inset directional key. -.LP -Note that the escape, backspace, and delete keys are generated as an ASCII -character. -.SH SEE ALSO -glutSpecialUpFunc, -glutKeyboardFunc, glutMouseFunc, glutSpaceballButtonFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutGetModifiers -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSpecialUpFunc.man b/lib/glut-3.7.6/man/glut/glutSpecialUpFunc.man deleted file mode 100644 index d112d8ad594ec85a8aa7d65a7fa1f6b421345088..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSpecialUpFunc.man +++ /dev/null @@ -1,105 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSpecialUpFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSpecialUpFunc - sets the special keyboard up (key release) callback for the current window. -.SH SYNTAX -.nf -.LP -void glutSpecialUpFunc(void (*func)(int key, int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new special callback function. -.SH DESCRIPTION -glutSpecialUpFunc sets the special keyboard up (key release) callback for the current -window. The special keyboard up callback is triggered when keyboard -function or directional keys are released. The key callback parameter is a -GLUT_KEY_* constant for the special key pressed. The x and y callback -parameters indicate the mouse in window relative coordinates when the -key was pressed. When a new window is created, no special up callback is -initially registered and special key releases in the window are ignored. -Passing NULL to glutSpecialUpFunc disables the generation of special up -callbacks. - -During a special up callback, glutGetModifiers may be called to -determine the state of modifier keys when the key release generating the -callback occurred. - -To avoid the reporting of key release/press pairs due to auto -repeat, use glutIgnoreKeyRepeat to ignore auto repeated keystrokes. - -An implementation should do its best to provide ways to generate all the -GLUT_KEY_* special keys. The available GLUT_KEY_* values are: -.TP 8 -.B GLUT_KEY_F1 -F1 function key. -.TP 8 -.B GLUT_KEY_F2 -F2 function key. -.TP 8 -.B GLUT_KEY_F3 -F3 function key. -.TP 8 -.B GLUT_KEY_F4 -F4 function key. -.TP 8 -.B GLUT_KEY_F5 -F5 function key. -.TP 8 -.B GLUT_KEY_F6 -F6 function key. -.TP 8 -.B GLUT_KEY_F7 -F7 function key. -.TP 8 -.B GLUT_KEY_F8 -F8 function key. -.TP 8 -.B GLUT_KEY_F9 -F9 function key. -.TP 8 -.B GLUT_KEY_F10 -F10 function key. -.TP 8 -.B GLUT_KEY_F11 -F11 function key. -.TP 8 -.B GLUT_KEY_F12 -F12 function key. -.TP 8 -.B GLUT_KEY_LEFT -Left directional key. -.TP 8 -.B GLUT_KEY_UP -Up directional key. -.TP 8 -.B GLUT_KEY_RIGHT -Right directional key. -.TP 8 -.B GLUT_KEY_DOWN -Down directional key. -.TP 8 -.B GLUT_KEY_PAGE_UP -Page up directional key. -.TP 8 -.B GLUT_KEY_PAGE_DOWN -Page down directional key. -.TP 8 -.B GLUT_KEY_HOME -Home directional key. -.TP 8 -.B GLUT_KEY_END -End directional key. -.TP 8 -.B GLUT_KEY_INSERT -Inset directional key. -.LP -Note that the escape, backspace, and delete keys are generated as an ASCII -character. -.SH SEE ALSO -glutSpecialFunc, -glutKeyboardFunc, glutKeyboardUpFunc, glutMouseFunc, glutSpaceballButtonFunc, glutButtonBoxFunc, glutTabletButtonFunc, glutGetModifiers, glutIgnoreKeyRepeat -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutStrokeCharacter.man b/lib/glut-3.7.6/man/glut/glutStrokeCharacter.man deleted file mode 100644 index 237bbd9be0fe59ab0192b2d9ce616ce456f35169..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutStrokeCharacter.man +++ /dev/null @@ -1,66 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutStrokeCharacter 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutStrokeCharacter - renders a stroke character using OpenGL. -.SH SYNTAX -.nf -.LP -void glutStrokeCharacter(void *font, int character); -.fi -.SH ARGUMENTS -.IP \fIfont\fP 1i -Stroke font to use. -.IP \fIcharacter\fP 1i -Character to render (not confined to 8 bits). -.SH DESCRIPTION -Without using any display lists, glutStrokeCharacter renders the -character in the named stroke font. The available fonts are: -.TP 8 -.B GLUT_STROKE_ROMAN -A proportionally spaced Roman Simplex font for ASCII characters -32 through 127. The maximum top character in the font is 119.05 -units; the bottom descends 33.33 units. -.TP 8 -.B GLUT_STROKE_MONO_ROMAN -A mono-spaced spaced Roman Simplex font (same characters as -GLUT_STROKE_ROMAN) for ASCII characters 32 through 127. The -maximum top character in the font is 119.05 units; the bottom -descends 33.33 units. Each character is 104.76 units wide. -.LP -Rendering a nonexistent character has no effect. A glTranslatef is -used to translate the current model view matrix to advance the width of -the character. -.SH EXAMPLE -Here is a routine that shows how to render a string of ASCII text -with glutStrokeCharacter: -.nf -.LP - void - output(GLfloat x, GLfloat y, char *text) - { - char *p; - - glPushMatrix(); - glTranslatef(x, y, 0); - for (p = text; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - glPopMatrix(); - } -.fi -.LP -If you want to draw stroke font text using wide, antialiased lines, use: -.nf -.LP - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glEnable(GL_LINE_SMOOTH); - glLineWidth(2.0); - output(200, 225, "This is antialiased."); -.fi -.LP -.SH SEE ALSO -glutBitmapCharacter, glutStrokeWidth -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutStrokeWidth.man b/lib/glut-3.7.6/man/glut/glutStrokeWidth.man deleted file mode 100644 index ba0bcda274b8e5743dd7d2700d4bfcb693befbb9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutStrokeWidth.man +++ /dev/null @@ -1,35 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutStrokeWidth 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutStrokeWidth returns the width of a stroke character, -glutStrokeLength returns the length of a stroke font string. -.SH SYNTAX -.nf -.LP -int glutStrokeWidth(void *font, int character); -int glutStrokeLength(void *font, const unsigned char *string); -.fi -.SH ARGUMENTS -.IP \fIfont\fP 1i -Stroke font to use. -For valid values, see the -glutStrokeWidth description. -.IP \fIcharacter\fP 1i -Character to return width of (not confined to 8 bits). -.IP \fIstring\fP 1i -Text string (8-bit characters), nul terminated. -.SH DESCRIPTION -glutStrokeWidth returns the width in modeling units of a stroke character in a -supported stroke font. While the width of characters in a font may vary -(though fixed width fonts do not vary), the maximum height -characteristics of a particular font are fixed. - -glutStrokeLength returns the length in modeling units of a string (8-bit -characters). This length is equivalent to summing all the widths -returned by glutStrokeWidth for each character in the string. -.SH SEE ALSO -glutStrokeCharacter, glutBitmapWidth -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutSwapBuffers.man b/lib/glut-3.7.6/man/glut/glutSwapBuffers.man deleted file mode 100644 index 005b36ce723428e9d8b934e0c9fbfb7e810e690a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutSwapBuffers.man +++ /dev/null @@ -1,30 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutSwapBuffers 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutSwapBuffers - swaps the buffers of the current window if double buffered. -.SH SYNTAX -.nf -.LP -void glutSwapBuffers(void); -.fi -.SH DESCRIPTION -Performs a buffer swap on the layer in use for the current window. -Specifically, glutSwapBuffers promotes the contents of the back -buffer of the layer in use of the current window to become the contents -of the front buffer. The contents of the back buffer then become -undefined. The update typically takes place during the vertical retrace of -the monitor, rather than immediately after glutSwapBuffers is called. - -An implicit glFlush is done by glutSwapBuffers before it returns. -Subsequent OpenGL commands can be issued immediately after calling -glutSwapBuffers, but are not executed until the buffer exchange is -completed. - -If the layer in use is not double buffered, glutSwapBuffers has no -effect. -.SH SEE ALSO -glutPostRedisplay, glutDisplayFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutTabletButtonFunc.man b/lib/glut-3.7.6/man/glut/glutTabletButtonFunc.man deleted file mode 100644 index 14dcff31931c82046e8da42c7f195e97d6497c53..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutTabletButtonFunc.man +++ /dev/null @@ -1,39 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutTabletButtonFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutTabletButtonFunc - sets the special keyboard callback for the current window. -.SH SYNTAX -.nf -.LP -void glutTabletButtonFunc(void (*func)(int button, int state, - int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new tablet button callback function. -.SH DESCRIPTION -glutTabletButtonFunc sets the tablet button callback for the current -window. The tablet button callback for a window is called when the -window has tablet input focus (normally, when the mouse is in the -window) and the user generates tablet button presses. The button -parameter will be the button number (starting at one). The number of -available tablet buttons can be determined with -glutDeviceGet(GLUT_NUM_TABLET_BUTTONS). The state is -either GLUT_UP or GLUT_DOWN indicating whether the callback was due -to a release or press respectively. The x and y callback parameters -indicate the window relative coordinates when the tablet button state -changed. - -Registering a tablet button callback when a tablet device is not available -is ineffectual and not an error. In this case, no tablet button callbacks will -be generated. - -Passing NULL to glutTabletButtonFunc disables the generation of -tablet button callbacks. When a new window is created, no tablet button -callback is initially registered. -.SH SEE ALSO -glutTabletMotionFunc, glutDeviceGet, glutMotionFunc, glutSpaceballMotionFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutTabletMotionFunc.man b/lib/glut-3.7.6/man/glut/glutTabletMotionFunc.man deleted file mode 100644 index 370b690dfe83b488b40ea535dee50df24cd83fe3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutTabletMotionFunc.man +++ /dev/null @@ -1,34 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutTabletMotionFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutTabletMotionFunc - sets the special keyboard callback for the current window. -.SH SYNTAX -.nf -.LP -void glutTabletMotionFunc(void (*func)(int x, int y)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new entry callback function. -.SH DESCRIPTION -glutTabletMotionFunc sets the tablet motion callback for the -current window. The tablet motion callback for a window is called when -the window has tablet input focus (normally, when the mouse is in the -window) and the user generates tablet motion. The x and y callback -parameters indicate the absolute position of the tablet ``puck'' on the -tablet. The callback parameters are normalized to be within the range of -0 to 2000 inclusive. - -Registering a tablet motion callback when a tablet device is not available -is ineffectual and not an error. In this case, no tablet motion callbacks -will be generated. - -Passing NULL to glutTabletMotionFunc disables the generation of -tablet motion callbacks. When a new window is created, no tablet motion -callback is initially registered. -.SH SEE ALSO -glutTabletButtonFunc, glutDeviceGet, glutMotionFunc, glutSpaceballMotionFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutTimerFunc.man b/lib/glut-3.7.6/man/glut/glutTimerFunc.man deleted file mode 100644 index 013b91eb12911ddb187a60264034679cdc79dc68..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutTimerFunc.man +++ /dev/null @@ -1,37 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutTimerFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutTimerFunc - registers a timer callback to be triggered in a -specified number of milliseconds. -.SH SYNTAX -.nf -.LP -void glutTimerFunc(unsigned int msecs, - void (*func)(int value), value); -.fi -.SH ARGUMENTS -.IP \fImsecs\fP 1i -Number of milliseconds to pass before calling the callback. -.IP \fIfunc\fP 1i -The timer callback function. -.IP \fIvalue\fP 1i -Integer value to pass to the timer callback. -.SH DESCRIPTION -glutTimerFunc registers the timer callback func to be triggered in at -least msecs milliseconds. The value parameter to the timer callback -will be the value of the value parameter to glutTimerFunc. Multiple -timer callbacks at same or differing times may be registered -simultaneously. - -The number of milliseconds is a lower bound on the time before the -callback is generated. GLUT attempts to deliver the timer callback as -soon as possible after the expiration of the callback's time interval. - -There is no support for canceling a registered callback. Instead, ignore a -callback based on its value parameter when it is triggered. -.SH SEE ALSO -glutIdleFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutUseLayer.man b/lib/glut-3.7.6/man/glut/glutUseLayer.man deleted file mode 100644 index b35c95213f31b75cff4133b614e35ebb2c2b520c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutUseLayer.man +++ /dev/null @@ -1,28 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutUseLayer 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutUseLayer - changes the layer in use for the current window. -.SH SYNTAX -.nf -.LP -void glutUseLayer(GLenum layer); -.fi -.SH ARGUMENTS -.IP \fIlayer\fP 1i -Either GLUT_NORMAL or GLUT_OVERLAY, selecting the normal -plane or overlay respectively. -.SH DESCRIPTION -glutUseLayer changes the per-window layer in use for the current -window, selecting either the normal plane or overlay. The overlay should -only be specified if an overlay exists, however windows without an -overlay may still call glutUseLayer(GLUT_NORMAL). OpenGL -commands for the window are directed to the current layer in use. - -To query the layer in use for a window, call -glutLayerGet(GLUT_LAYER_IN_USE). -.SH SEE ALSO -glutEstablishOverlay, glutSetWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutVisibilityFunc.man b/lib/glut-3.7.6/man/glut/glutVisibilityFunc.man deleted file mode 100644 index 62aa1ed2e0f585ad845dc72b09d18d7762d1f9d6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutVisibilityFunc.man +++ /dev/null @@ -1,39 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1996. -.\" -.TH glutVisibilityFunc 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutVisibilityFunc - sets the visibility callback for the current window. -.SH SYNTAX -.nf -.LP -void glutVisibilityFunc(void (*func)(int state)); -.fi -.SH ARGUMENTS -.IP \fIfunc\fP 1i -The new visibility callback function. -.SH DESCRIPTION -glutVisibilityFunc sets the visibility callback for the current -window. The visibility callback for a window is called when the visibility -of a window changes. The state callback parameter is either -GLUT_NOT_VISIBLE or GLUT_VISIBLE depending on the current -visibility of the window. GLUT_VISIBLE does not distinguish a window -being totally versus partially visible. GLUT_NOT_VISIBLE means no part -of the window is visible, i.e., until the window's visibility changes, all -further rendering to the window is discarded. - -GLUT considers a window visible if any pixel of the window is visible or -any pixel of any descendant window is visible on the screen. - -Passing NULL to glutVisibilityFunc disables the generation of the -visibility callback. - -If the visibility callback for a window is disabled and later re-enabled, the -visibility status of the window is undefined; any change in window -visibility will be reported, that is if you disable a visibility callback and -re-enable the callback, you are guaranteed the next visibility change will -be reported. -.SH SEE ALSO -glutCreateWindow, glutPopWindow -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/man/glut/glutWarpPointer.man b/lib/glut-3.7.6/man/glut/glutWarpPointer.man deleted file mode 100644 index 7f733904ebd45d4c847f3ee1e3f49090ea932817..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/man/glut/glutWarpPointer.man +++ /dev/null @@ -1,39 +0,0 @@ -.\" -.\" Copyright (c) Mark J. Kilgard, 1997. -.\" -.TH glutWarpPointer 3GLUT "3.7" "GLUT" "GLUT" -.SH NAME -glutWarpPointer warps the pointer's location. -.SH SYNTAX -.nf -.LP -void glutWarpPointer(int x, int y); -.fi -.SH ARGUMENTS -.IP \fIx\fP 1i -X offset relative to the current window's origin (upper left). -.IP \fIy\fP 1i -Y offset relative to the current window's origin (upper left). -.SH DESCRIPTION -glutWarpPointer warps the window system's pointer to a new location -relative to the origin of the current window. The new location will -be offset -.I x -pixels on the X axis and -.I y -pixels on the Y axis. -These parameters may be negative. The warp is done immediately. - -If the pointer would be warped outside the screen's frame buffer -region, the location will be clamped to the nearest screen edge. The -window system is allowed to further constrain the pointer's location in -window system dependent ways. - -The following is good advice that applies to glutWarpPointer: -``There is seldom any reason for calling this function. The pointer -should normally be left to the user.'' (from Xlib's -XWarpPointer man page.) -.SH SEE ALSO -glutMouseFunc, glutMotionFunc -.SH AUTHOR -Mark J. Kilgard (mjk@nvidia.com) diff --git a/lib/glut-3.7.6/mkmkfiles.imake b/lib/glut-3.7.6/mkmkfiles.imake deleted file mode 100644 index 20982537a059c27c88a8fb2be98d01b1ad4361ca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/mkmkfiles.imake +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/csh -f -# -# Let user know what's going on... -# -set verbose -# -mv -f Makefile Makefile.bak >& /dev/null -# -# Unfortunately, some systems vary where they find imake, imake's config -# files, and/or xmkmf. You may need to be clever to get Makefiles -# generated if your system is non-standard. The following tries its best -# to generate the Makefiles for you... -# -if ( -d /usr/lib/X11/config) then - if ( -x /usr/bin/X11/imake ) then - # Things are in standard places - /usr/bin/X11/imake -DUseInstalled -I/usr/lib/X11/config -DTOPDIR=. - else - # Hope imake is on your path! - imake -DUseInstalled -I/usr/lib/X11/config -DTOPDIR=. - endif -else # Try non-standard places vendor locations - # Look for IBM's non-standard placement of imake - if ( -d /usr/lpp/X11/Xamples/config) then - if ( -x /usr/lpp/X11/Xamples/config/imake ) then - # Things are in non-standard IBM AIX places - /usr/lpp/X11/Xamples/config/imake -DUseInstalled -I/usr/lpp/X11/Xamples/config -DTOPDIR=. - else - # Hope imake is on your path! - imake -DUseInstalled -I/usr/lpp/X11/Xamples/config -DTOPDIR=. - endif - else - # Look for Sun's non-standard placement of imake and xmkmf - if ( -x /usr/openwin/bin/xmkmf ) then - # Make sure that /usr/openwin/bin is at the front of your - # path so that you pick up /usr/openwin/bin/imake when - # you run /usr/openwin/bin/xmkmf instead of some other - # imake potentially mismatched with the /usr/openwin/lib/config - # config files. - set path = ( /usr/openwin/bin $path ) - /usr/openwin/bin/xmkmf - else - # Look for FreeBSD's non-standard placement of imake and xmkmf - if ( -d /usr/X11R6/lib/X11/config ) then - if ( -x /usr/X11R6/bin/imake ) then - # We found FreeBSD's location for imake and xmkmf - /usr/X11R6/bin/imake -DUseInstalled -I/usr/X11R6/lib/X11/config -DTOPDIR=. - else - # Hope imake is on your path! - imake -DUseInstalled -I/usr/X11R6/lib/X11/config -DTOPDIR=. - endif - else - # Hope xmkmf is on your path! - xmkmf - endif - endif - endif -endif -make Makefiles - -## man subdirectory is not built by default -## uncomment line below to build its Makefiles -#make SUBDIRS=man Makefiles - -make depend diff --git a/lib/glut-3.7.6/mkmkfiles.sgi b/lib/glut-3.7.6/mkmkfiles.sgi deleted file mode 100644 index 0d8c125a9f411853ca8d6cfc3f5d6754eb311181..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/mkmkfiles.sgi +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/csh -f -echo "Setting up use of SGI Makefiles" -echo "" -echo "NOTE: If you have a Fortran compiler and IRIX 5.3 or later, please see" -echo "the instructions in README.fortran for building the GLUT Fortran" -echo "API and sample programs. Fortran code is not built by default." -echo "" -foreach i ( `find . -name Makefile.sgi -print` ) - echo "Linking $i to $i:r" - rm -f $i:r - ln -s Makefile.sgi $i:r -end diff --git a/lib/glut-3.7.6/progs/Imakefile b/lib/glut-3.7.6/progs/Imakefile deleted file mode 100644 index f454a38260b8dd1e61ca5c7390b6ad34125875d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/Imakefile +++ /dev/null @@ -1,14 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997, 1998. */ - -#define IHaveSubdirs -#define PassCDebugFlags - -SUBDIRS = examples redbook demos contrib advanced mesademos \ - texfont perf_harness mui gle gameglut bucciarelli advanced97 spheremap tiff - -/* not yet ready for gnu/linux (mostly headers): glc inventor sgi-stero */ -/* not yet ready for gnu/linux (mostly language): ada fortran */ - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/progs/ada/README b/lib/glut-3.7.6/progs/ada/README deleted file mode 100644 index 5057033a35bb55b5c4585b37f388406c1eecfbf6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/README +++ /dev/null @@ -1,10 +0,0 @@ - -See the ../../README.ada file for details of how to use GLUT with the -Ada language binding. Unless you program in Ada, this directory is -probably not that interesting to you. - -For the most part, these programs are the "redbook" programs just -converted to use Ada instead of C. - -- Mark Kilgard - October 9, 1997 diff --git a/lib/glut-3.7.6/progs/ada/ada_sphere.adb b/lib/glut-3.7.6/progs/ada/ada_sphere.adb deleted file mode 100644 index 4cde400f7c622fa0928931f987c7222a23f863c6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/ada_sphere.adb +++ /dev/null @@ -1,40 +0,0 @@ - -with GL; use GL; -with Interfaces.C.Strings; -with Glut; use Glut; -with ada_sphere_procs; use ada_sphere_procs; - -procedure ada_sphere is - - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - win : Integer; - m : Integer; - -begin - - glutInit (argc'access, argv); - - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_DOUBLE); - win := glutCreateWindow("ada_sphere"); - - glutDisplayFunc(display'access); - glutReshapeFunc(reshape'access); - - init; - - m := glutCreateMenu(menu'access); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop; - -end ada_sphere; diff --git a/lib/glut-3.7.6/progs/ada/ada_sphere_procs.adb b/lib/glut-3.7.6/progs/ada/ada_sphere_procs.adb deleted file mode 100644 index 01ce267cce8c6d5c2606b79c02eb08f6985b7735..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/ada_sphere_procs.adb +++ /dev/null @@ -1,60 +0,0 @@ - -with GL; use GL; -with GLU; use GLU; -with Glut; use Glut; -with GNAT.OS_Lib; - -package body ada_sphere_procs is - - procedure display is - - begin - glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - glutSolidSphere(1.0, 10, 10); - glutSwapBuffers; - end display; - - procedure reshape(w : Integer; h : Integer) is - - begin - glViewport(0, 0, GLsizei(w), GLsizei(h)); - end reshape; - - procedure menu (value : Integer) is - - begin - if (value = 666) then - GNAT.OS_Lib.OS_Exit (0); - end if; - end menu; - - procedure init is - - light_diffuse : array(0 .. 3) of aliased GLfloat := - (1.0, 0.0, 0.0, 1.0); - light_position : array(0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 0.0); - - begin - glClearColor(0.1, 0.1, 0.1, 0.0); - - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse(0)'access); - glLightfv(GL_LIGHT0, GL_POSITION, light_position(0)'access); - - glFrontFace(GL_CW); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - - glMatrixMode(GL_PROJECTION); - gluPerspective(40.0, 1.0, 1.0, 10.0); - - glMatrixMode(GL_MODELVIEW); - gluLookAt( - 0.0, 0.0, -5.0, - 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0); - end init; - -end ada_sphere_procs; diff --git a/lib/glut-3.7.6/progs/ada/ada_sphere_procs.ads b/lib/glut-3.7.6/progs/ada/ada_sphere_procs.ads deleted file mode 100644 index bb0e3f4de952a3a4ee4b677eceddc54033390143..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/ada_sphere_procs.ads +++ /dev/null @@ -1,10 +0,0 @@ - -with GL; use GL; -with Glut; use Glut; - -package ada_sphere_procs is - procedure display; - procedure reshape (w : Integer; h : Integer); - procedure menu (value : Integer); - procedure init; -end ada_sphere_procs; diff --git a/lib/glut-3.7.6/progs/ada/bezmesh.adb b/lib/glut-3.7.6/progs/ada/bezmesh.adb deleted file mode 100644 index be94b4cfe03f09eb2ec0e32892ced6ffc1db6978..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/bezmesh.adb +++ /dev/null @@ -1,71 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - --- bezsurf.c --- This program renders a lighted, filled Bezier surface, --- using two-dimensional evaluators. - -with GL; use GL; -with Glut; use Glut; -with Bezmesh_Procs; use Bezmesh_Procs; -with Interfaces.C.Strings; - -procedure Bezmesh is - - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - winRet : Integer; -begin - glutInitWindowSize(500, 500); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - winRet := glutCreateWindow ("OpenGL and Ada: bezmesh"); - - Initialize; - - glutReshapeFunc(HandleReshape'ACCESS); - glutDisplayFunc(Display'ACCESS); - glutMainLoop; -end Bezmesh; diff --git a/lib/glut-3.7.6/progs/ada/bezmesh_procs.adb b/lib/glut-3.7.6/progs/ada/bezmesh_procs.adb deleted file mode 100644 index 62ff4894737f9475d51538f0c6e1301ded197311..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/bezmesh_procs.adb +++ /dev/null @@ -1,116 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Text_IO; use Text_IO; - -package body Bezmesh_Procs is - Bezier_Control_Points : array (1 .. 4, 1 .. 4, 1 .. 3) of aliased GLfloat := - (((-1.5, -1.5, 4.0), (-0.5, -1.5, 2.0), - (0.5, -1.5, -1.0), (1.5, -1.5, 2.0)), - ((-1.5, -0.5, 1.0), (-0.5, -0.5, 3.0), - (0.5, -0.5, 0.0), (1.5, -0.5, -1.0)), - ((-1.5, 0.5, 4.0), (-0.5, 0.5, 0.0), - (0.5, 0.5, 3.0), (1.5, 0.5, 4.0)), - ((-1.5, 1.5, -2.0), (-0.5, 1.5, -2.0), - (0.5, 1.5, 0.0), (1.5, 1.5, -1.0))); - - - procedure Initialize is - ambient : array (0 .. 3) of aliased GLfloat := - (0.2, 0.2, 0.2, 1.0); - diffuse : array (0 .. 3) of aliased GLfloat := - (0.0, 0.0, 2.0, 1.0); - position : array (0 .. 3) of aliased GLfloat := - (0.6, 0.6, 0.6, 1.0); - - mat_diffuse : array (0 .. 3) of aliased GLfloat := - (0.6, 0.6, 0.6, 1.0); - mat_specular : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - mat_shininess : aliased GLfloat := 50.0; - - begin - glClearColor (0.0, 0.0, 0.0, 1.0); - glEnable (GL_DEPTH_TEST); - glMap2f (GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4, - Bezier_Control_Points(1,1,1)'ACCESS); - glEnable (GL_MAP2_VERTEX_3); - glEnable (GL_AUTO_NORMAL); - glEnable (GL_NORMALIZE); - glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0); - - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - - glLightfv (GL_LIGHT0, GL_AMBIENT, ambient (0)'access); - glLightfv (GL_LIGHT0, GL_POSITION, position (0)'access); - - glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_diffuse (0)'access); - glMaterialfv (GL_FRONT, GL_SPECULAR, mat_specular (0)'access); - glMaterialfv (GL_FRONT, GL_SHININESS, mat_shininess'access); - end Initialize; - - procedure Display is - begin - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - - glPushMatrix; - --- Glloadidentity; - Glrotatef (85.0, 1.0, 1.0, 1.0); - glEvalMesh2 (GL_FILL, 0, 20, 0, 20); - - glPopMatrix; - - glFlush; - end Display; - - procedure HandleReshape (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - GlMatrixMode (GL_PROJECTION); - GlLoadIdentity; - if (W < H) then - Glortho (-4.0, 4.0, -4.0 * Gldouble (H / W), 4.0 * Gldouble (H / W), - -4.0, 4.0); - else - Glortho (-4.0 * Gldouble (W / H), 4.0 * Gldouble (W / H), - -4.0, 4.0, -4.0, 4.0); - end if; - end HandleReshape; -end Bezmesh_Procs; diff --git a/lib/glut-3.7.6/progs/ada/bezmesh_procs.ads b/lib/glut-3.7.6/progs/ada/bezmesh_procs.ads deleted file mode 100644 index 59f78d0eb2da2ff0228108aa9de056461accfbcf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/bezmesh_procs.ads +++ /dev/null @@ -1,46 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package Bezmesh_Procs is - procedure Initialize; - procedure Display; - procedure HandleReshape (w : Integer; h : Integer); - - An_Error : exception; -end Bezmesh_Procs; diff --git a/lib/glut-3.7.6/progs/ada/cone.adb b/lib/glut-3.7.6/progs/ada/cone.adb deleted file mode 100644 index d1f3b53b1460350dd552b74096d0501c3defdacd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/cone.adb +++ /dev/null @@ -1,68 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; -with Cone_Procs; use Cone_Procs; -with Interfaces.C.Strings; - -procedure Cone is - package Tio renames Text_IO; - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - foobar : Integer; -begin - glutInitWindowSize(500, 500); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - foobar := glutCreateWindow ("OpenGL and Ada: cone"); - - DoInit; - - glutReshapeFunc (ReshapeCallback'ACCESS); - glutDisplayFunc (DoDisplay'ACCESS); - glutMainLoop; -end Cone; diff --git a/lib/glut-3.7.6/progs/ada/cone_procs.adb b/lib/glut-3.7.6/progs/ada/cone_procs.adb deleted file mode 100644 index d2b1f6037216caea6f3752ae49ed8e7238294cdb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/cone_procs.adb +++ /dev/null @@ -1,120 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with GLU; use GLU; - -package body Cone_Procs is - procedure DoInit is - mat_ambient : array (0 .. 3) of aliased GLfloat := - (0.2, 0.2, 0.2, 1.0); - mat_diffuse : array (0 .. 3) of aliased GLfloat := - (0.8, 0.8, 0.8, 1.0); - -- Specular and Shininess are not default values - mat_specular : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - mat_shininess : aliased GLfloat := 50.0; - - light_ambient : array (0 .. 3) of aliased GLfloat := - (0.0, 0.0, 0.0, 1.0); - light_diffuse : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - light_specular : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - light_position : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 0.0); - - lmodel_ambient : array (0 .. 3) of aliased GLfloat := - (0.2, 0.2, 0.2, 1.0); - begin - glMaterialfv (GL_FRONT, GL_AMBIENT, mat_ambient (0)'Access); - glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_diffuse (0)'Access); - glMaterialfv (GL_FRONT, GL_SPECULAR, mat_specular (0)'Access); - glMaterialfv (GL_FRONT, GL_SHININESS, mat_shininess'Access); - - glLightfv (GL_LIGHT0, GL_AMBIENT, light_ambient (0)'Access); - glLightfv (GL_LIGHT0, GL_DIFFUSE, light_diffuse (0)'Access); - glLightfv (GL_LIGHT0, GL_SPECULAR, light_specular (0)'Access); - glLightfv (GL_LIGHT0, GL_POSITION, light_position (0)'Access); - - glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient (0)'Access); - - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - glEnable (GL_DEPTH_TEST); - end DoInit; - - procedure solidCone (base : Float; height : Float) is - quadObj : GLUquadricObj_Ptr; - begin - quadObj := gluNewQuadric; - gluQuadricDrawStyle (quadObj, GLU_FILL); - gluQuadricNormals (quadObj, GLU_SMOOTH); - gluCylinder (quadObj, GLdouble(base), 0.0, GLdouble(height), 15, 10); - gluDeleteQuadric (quadObj); - end solidCone; - - procedure DoDisplay is - begin - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - - glPushMatrix; - glTranslatef (0.0, -1.0, 0.0); - glRotatef (250.0, 1.0, 0.0, 0.0); - solidCone (1.0, 2.0); - glPopMatrix; - glFlush; - end DoDisplay; - - - procedure ReshapeCallback (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - glMatrixMode (GL_PROJECTION); - glLoadIdentity; - - if w <= h then - glOrtho (-1.5, 1.5, GLdouble (-1.5*Float (h)/Float (w)), - GLdouble (1.5*Float (h)/Float (w)), -10.0, 10.0); - else - glOrtho (GLdouble (-1.5*Float (w)/Float (h)), - GLdouble (1.5*Float (w)/Float (h)), -1.5, 1.5, -10.0, 10.0); - end if; - - glMatrixMode (GL_MODELVIEW); - end ReshapeCallback; -end Cone_Procs; diff --git a/lib/glut-3.7.6/progs/ada/cone_procs.ads b/lib/glut-3.7.6/progs/ada/cone_procs.ads deleted file mode 100644 index e79cd72125a6681c206ae12bd73875cb7d8eeb92..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/cone_procs.ads +++ /dev/null @@ -1,44 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package Cone_Procs is - procedure DoInit; - procedure DoDisplay; - procedure ReshapeCallback (w : Integer; h : Integer); -end Cone_Procs; diff --git a/lib/glut-3.7.6/progs/ada/dof.adb b/lib/glut-3.7.6/progs/ada/dof.adb deleted file mode 100644 index 22bbe2e2e0a1adf50846a65d0aa5d65b998f4707..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/dof.adb +++ /dev/null @@ -1,68 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; -with Dof_Procs; use Dof_Procs; -with Interfaces.C.Strings; - -procedure Dof is - package Tio renames Text_IO; - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - foobar : Integer; -begin - glutInitWindowSize(500, 500); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - foobar := glutCreateWindow ("OpenGL and Ada: dof"); - - DoInit; - - glutReshapeFunc (ReshapeCallback'Access); - glutDisplayFunc (DoDisplay'Access); - glutMainLoop; -end Dof; diff --git a/lib/glut-3.7.6/progs/ada/dof_procs.adb b/lib/glut-3.7.6/progs/ada/dof_procs.adb deleted file mode 100644 index e287f2f7c597cb10ed9c72f98033550beb37b24e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/dof_procs.adb +++ /dev/null @@ -1,200 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Jitter; -with Ada.Numerics; -with Ada.Numerics.Generic_Elementary_Functions; - -package body Dof_Procs is - package Num renames Ada.Numerics; - package GLdouble_GEF is new - Num.Generic_Elementary_Functions (GLdouble); - use GLdouble_GEF; - - procedure accFrustum - (left : GLdouble; right : GLdouble; bottom : GLdouble; - top : GLdouble; near : GLdouble; far : GLdouble; - pixdx : GLdouble; pixdy : GLdouble; eyedx : GLdouble; - eyedy : GLdouble; focus : GLdouble) - is - xwsize, ywsize : GLdouble; - dx, dy : GLdouble; - viewport : array (0 .. 3) of aliased GLint; - begin - glGetIntegerv (GL_VIEWPORT, viewport (0)'Access); - - xwsize := right - left; - ywsize := top - bottom; - - dx := -(pixdx * xwsize / GLdouble (viewport (2)) + eyedx * near / focus); - dy := -(pixdy * ywsize / GLdouble (viewport (3)) + eyedy * near / focus); - - glMatrixMode (GL_PROJECTION); - glLoadIdentity; - glFrustum (left + dx, right + dx, bottom + dy, top + dy, near, far); - glMatrixMode (GL_MODELVIEW); - glLoadIdentity; - glTranslated (-eyedx, -eyedy, 0.0); - end accFrustum; - - procedure accPerspective - (fovy : GLdouble; aspect : GLdouble; near : GLdouble; - far : GLdouble; pixdx : GLdouble; pixdy : GLdouble; - eyedx : GLdouble; eyedy : GLdouble; focus : GLdouble) - is - fov2, left, right, bottom, top : GLdouble; - begin - fov2 := ((fovy * Num.Pi) / 180.0) / 2.0; - - top := near / (Cos (fov2) / Sin (fov2)); - bottom := -top; - - right := top * aspect; - left := -right; - - accFrustum (left, right, bottom, top, near, far, pixdx, - pixdy, eyedx, eyedy, focus); - end accPerspective; - - procedure DoInit is - ambient : array (0 .. 3) of aliased GLfloat := - (0.0, 0.0, 0.0, 1.0); - diffuse : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - position : array (0 .. 3) of aliased GLfloat := - (0.0, 3.0, 3.0, 0.0); - - lmodel_ambient : array (0 .. 3) of aliased GLfloat := - (0.2, 0.2, 0.2, 1.0); - local_view : aliased GLfloat := 0.0; - begin - glLightfv (GL_LIGHT0, GL_AMBIENT, ambient (0)'Access); - glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse (0)'Access); - glLightfv (GL_LIGHT0, GL_POSITION, position (0)'Access); - - glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient (0)'Access); - glLightModelfv (GL_LIGHT_MODEL_LOCAL_VIEWER, local_view'Access); - - glFrontFace (GL_CW); - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - glEnable (GL_AUTO_NORMAL); - glEnable (GL_NORMALIZE); - - glEnable (GL_DEPTH_TEST); - glDepthFunc (GL_LESS); - - glMatrixMode (GL_MODELVIEW); - glLoadIdentity; - - glClearColor (0.0, 0.0, 0.0, 0.0); - glClearAccum (0.0, 0.0, 0.0, 0.0); - end DoInit; - - procedure renderTeapot - (x : GLfloat; y : GLfloat; z : GLfloat; - ambr : GLfloat; ambg : GLfloat; ambb : GLfloat; - difr : GLfloat; difg : GLfloat; difb : GLfloat; - specr : GLfloat; specg : GLfloat; specb : GLfloat; - shine : GLfloat) - is - mat : array (0 .. 3) of aliased GLfloat; - begin - glPushMatrix; - - glTranslatef (x, y, z); - - mat (0) := ambr; - mat (1) := ambg; - mat (2) := ambb; - mat (3) := 1.0; - glMaterialfv (GL_FRONT, GL_AMBIENT, mat (0)'Access); - - mat (0) := difr; - mat (1) := difg; - mat (2) := difb; - glMaterialfv (GL_FRONT, GL_DIFFUSE, mat (0)'Access); - - mat (0) := specr; - mat (1) := specg; - mat (2) := specb; - glMaterialfv (GL_FRONT, GL_SPECULAR, mat (0)'Access); - - glMaterialf (GL_FRONT, GL_SHININESS, shine * 128.0); - - glutSolidTeapot (0.5); - glPopMatrix; - end renderTeapot; - - procedure DoDisplay is - viewport : array (0 .. 3) of aliased GLint; - begin - glGetIntegerv (GL_VIEWPORT, viewport (0)'Access); - glClear (GL_ACCUM_BUFFER_BIT); - - for jitval in 1 .. 8 loop - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - accPerspective (45.0, GLdouble (viewport (2)) / - GLdouble (viewport (3)), - 1.0, 15.0, 0.0, 0.0, GLdouble (0.33 * Jitter.j8 (jitval).x), - GLdouble (0.33 * Jitter.j8 (jitval).y), 5.0); - - renderTeapot (-1.1, -0.5, -4.5, 0.1745, 0.01175, 0.01175, - 0.61424, 0.04136, 0.04136, 0.727811, 0.626959, 0.626959, 0.6); - renderTeapot (-0.5, -0.5, -5.0, 0.24725, 0.1995, 0.0745, - 0.75164, 0.60648, 0.22648, 0.628281, 0.555802, 0.366065, 0.4); - renderTeapot (0.2, -0.5, -5.5, 0.19225, 0.19225, 0.19225, - 0.50754, 0.50754, 0.50754, 0.508273, 0.508273, 0.508273, 0.4); - renderTeapot (1.0, -0.5, -6.0, 0.0215, 0.1745, 0.0215, - 0.07568, 0.61424, 0.07568, 0.633, 0.727811, 0.633, 0.6); - renderTeapot (1.8, -0.5, -6.5, 0.0, 0.1, 0.06, 0.0, 0.50980392, - 0.50980392, 0.50196078, 0.50196078, 0.50196078, 0.25); - glAccum (GL_ACCUM, 0.125); - end loop; - - glAccum (GL_RETURN, 1.0); - glFlush; - end DoDisplay; - - - procedure ReshapeCallback (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - end ReshapeCallback; -end Dof_Procs; diff --git a/lib/glut-3.7.6/progs/ada/dof_procs.ads b/lib/glut-3.7.6/progs/ada/dof_procs.ads deleted file mode 100644 index d2922e7d76ae4b20e5074ac8499c85b26375fe48..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/dof_procs.ads +++ /dev/null @@ -1,62 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package Dof_Procs is - procedure accFrustum - (left : GLdouble; right : GLdouble; bottom : GLdouble; - top : GLdouble; near : GLdouble; far : GLdouble; - pixdx : GLdouble; pixdy : GLdouble; eyedx : GLdouble; - eyedy : GLdouble; focus : GLdouble); - - procedure accPerspective - (fovy : GLdouble; aspect : GLdouble; near : GLdouble; - far : GLdouble; pixdx : GLdouble; pixdy : GLdouble; - eyedx : GLdouble; eyedy : GLdouble; focus : GLdouble); - - procedure renderTeapot - (x : GLfloat; y : GLfloat; z : GLfloat; - ambr : GLfloat; ambg : GLfloat; ambb : GLfloat; - difr : GLfloat; difg : GLfloat; difb : GLfloat; - specr : GLfloat; specg : GLfloat; specb : GLfloat; - shine : GLfloat); - - procedure DoInit; - procedure DoDisplay; - procedure ReshapeCallback (w : Integer; h : Integer); -end Dof_Procs; diff --git a/lib/glut-3.7.6/progs/ada/fog.adb b/lib/glut-3.7.6/progs/ada/fog.adb deleted file mode 100644 index 444e45e705f7e39aa806b20003d9c01fdc69771e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/fog.adb +++ /dev/null @@ -1,67 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Fog_Procs; use Fog_Procs; -with Interfaces.C.Strings; - -procedure Fog is - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - winRet : Integer; -begin - glutInitWindowSize(450, 150); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - winRet := glutCreateWindow ("OpenGL and Ada: fog"); - glutMouseFunc (CycleFog'ACCESS); - - Initialize; - - glutReshapeFunc (HandleReshape'ACCESS); - glutDisplayFunc (Display'ACCESS); - glutMainLoop; -end Fog; diff --git a/lib/glut-3.7.6/progs/ada/fog_procs.adb b/lib/glut-3.7.6/progs/ada/fog_procs.adb deleted file mode 100644 index 6835a866cf428ee56757c6253dc1159222f26c96..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/fog_procs.adb +++ /dev/null @@ -1,162 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; use Text_IO; -with Unchecked_Conversion; - -package body Fog_Procs is - package tio renames Text_IO; - - function FogToInt is new - Unchecked_Conversion (Source => FogMode, Target => GLint); - - procedure CycleFog (btn: Integer; state: Integer; x, y: Integer) is - begin - if btn = GLUT_LEFT_BUTTON then - if state = GLUT_DOWN then - if fogType = GL_EXP then - fogType := GL_EXP2; - elsif fogType = GL_EXP2 then - fogType := GL_LINEAR; - glFogf (GL_FOG_START, 1.0); - glFogf (GL_FOG_END, 5.0); - elsif fogType = GL_LINEAR then - fogType := GL_EXP; - end if; - --- tio.Put_Line("Fog mode is " & FogMode'IMAGE (fogType)); - - glFogi (GL_FOG_MODE, FogToInt (fogType)); - glutPostRedisplay; - end if; - end if; - end CycleFog; - - procedure Initialize is - position : array (0 .. 3) of aliased GLfloat := - (0.0, 3.0, 3.0, 0.0); - local_view : aliased GLfloat := 0.0; - - fogColor : array (0 .. 3) of aliased GLfloat := - (0.5, 0.5, 0.5, 1.0); - begin - glEnable (GL_DEPTH_TEST); - glDepthFunc (GL_LESS); - - glLightfv (GL_LIGHT0, GL_POSITION, position (0)'Access); - glLightModelfv (GL_LIGHT_MODEL_LOCAL_VIEWER, local_view'Access); - - glFrontFace (GL_CW); - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - glEnable (GL_AUTO_NORMAL); - glEnable (GL_NORMALIZE); - glEnable (GL_FOG); - - fogType := GL_EXP; - - glFogi (GL_FOG_MODE, FogToInt (fogType)); - glFogfv (GL_FOG_COLOR, fogColor (0)'Access); - glFogf (GL_FOG_DENSITY, 0.35); - glHint (GL_FOG_HINT, GL_DONT_CARE); - glClearColor (0.5, 0.5, 0.5, 1.0); - end Initialize; - - procedure RenderRedTeapot (x : GLfloat; y : GLfloat; z : GLfloat) is - mat : array (0 .. 3) of aliased GLfloat; - begin - glPushMatrix; - - glTranslatef (x, y, z); - - mat (0) := 0.1745; - mat (1) := 0.01175; - mat (2) := 0.01175; - mat (3) := 1.0; - glMaterialfv (GL_FRONT, GL_AMBIENT, mat (0)'Access); - - mat (0) := 0.61424; - mat (1) := 0.04136; - mat (2) := 0.04136; - glMaterialfv (GL_FRONT, GL_DIFFUSE, mat (0)'Access); - - mat (0) := 0.727811; - mat (1) := 0.626959; - mat (2) := 0.626959; - glMaterialfv (GL_FRONT, GL_SPECULAR, mat (0)'Access); - - glMaterialf (GL_FRONT, GL_SHININESS, 0.6*128.0); - - glutSolidTeapot (1.0); - - glPopMatrix; - end RenderRedTeapot; - - procedure Display is - begin - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - RenderRedTeapot (-4.0, -0.5, -1.0); - RenderRedTeapot (-2.0, -0.5, -2.0); - RenderRedTeapot (0.0, -0.5, -3.0); - RenderRedTeapot (2.0, -0.5, -4.0); - RenderRedTeapot (4.0, -0.5, -5.0); - glFlush; - end Display; - - procedure HandleReshape (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - glMatrixMode (GL_PROJECTION); - - glLoadIdentity; - - if w <= (h * 3) then - glOrtho (-6.0, 6.0, - GLdouble (-2.0 * (GLdouble (h) * 3.0) / GLdouble (w)), - GLdouble (2.0 * (GLdouble (h) * 3.0 / GLdouble (w))), 0.0, 10.0); - else - glOrtho (GLdouble (-6.0 * GLdouble (w) / (GLdouble (h) * 3.0)), - GLdouble (6.0 * GLdouble (w) / (GLdouble (h) * 3.0)), - -2.0, 2.0, 0.0, 10.0); - end if; - - glMatrixMode (GL_MODELVIEW); - glLoadIdentity; - end HandleReshape; -end Fog_Procs; diff --git a/lib/glut-3.7.6/progs/ada/fog_procs.ads b/lib/glut-3.7.6/progs/ada/fog_procs.ads deleted file mode 100644 index 92e86f8f0704a641e508dbcc3a1a455170a7098a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/fog_procs.ads +++ /dev/null @@ -1,48 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package Fog_Procs is - fogType : FogMode; - - procedure CycleFog (btn: Integer; state: Integer; x, y: Integer); - procedure Initialize; - procedure RenderRedTeapot (x : GLfloat; y : GLfloat; z : GLfloat); - procedure Display; - procedure HandleReshape (w : Integer; h : Integer); -end Fog_Procs; diff --git a/lib/glut-3.7.6/progs/ada/jitter.ads b/lib/glut-3.7.6/progs/ada/jitter.ads deleted file mode 100644 index 72d835d45a77d9e6119fc389308af7a2eef95a95..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/jitter.ads +++ /dev/null @@ -1,182 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package Jitter is - type Jitter_Point is - record - x, y : GLfloat; - end record; - - j2 : array (1 .. 2) of Jitter_Point := - ((0.246490, 0.249999), - (-0.246490, -0.249999)); - - j3 : array (1 .. 3) of Jitter_Point := - ((-0.373411, -0.250550), - (0.256263, 0.368119), - (0.117148, -0.117570)); - - j4 : array (1 .. 4) of Jitter_Point := - ((-0.208147, 0.353730), - (0.203849, -0.353780), - (-0.292626, -0.149945), - (0.296924, 0.149994)); - - j8 : array (1 .. 8) of Jitter_Point := - ((-0.334818, 0.435331), - (0.286438, -0.393495), - (0.459462, 0.141540), - (-0.414498, -0.192829), - (-0.183790, 0.082102), - (-0.079263, -0.317383), - (0.102254, 0.299133), - (0.164216, -0.054399)); - - j15 : array (1 .. 15) of Jitter_Point := - ((0.285561, 0.188437), - (0.360176, -0.065688), - (-0.111751, 0.275019), - (-0.055918, -0.215197), - (-0.080231, -0.470965), - (0.138721, 0.409168), - (0.384120, 0.458500), - (-0.454968, 0.134088), - (0.179271, -0.331196), - (-0.307049, -0.364927), - (0.105354, -0.010099), - (-0.154180, 0.021794), - (-0.370135, -0.116425), - (0.451636, -0.300013), - (-0.370610, 0.387504)); - - j24 : array (1 .. 24) of Jitter_Point := - ((0.030245, 0.136384), - (0.018865, -0.348867), - (-0.350114, -0.472309), - (0.222181, 0.149524), - (-0.393670, -0.266873), - (0.404568, 0.230436), - (0.098381, 0.465337), - (0.462671, 0.442116), - (0.400373, -0.212720), - (-0.409988, 0.263345), - (-0.115878, -0.001981), - (0.348425, -0.009237), - (-0.464016, 0.066467), - (-0.138674, -0.468006), - (0.144932, -0.022780), - (-0.250195, 0.150161), - (-0.181400, -0.264219), - (0.196097, -0.234139), - (-0.311082, -0.078815), - (0.268379, 0.366778), - (-0.040601, 0.327109), - (-0.234392, 0.354659), - (-0.003102, -0.154402), - (0.297997, -0.417965)); - - j66 : array (1 .. 66) of Jitter_Point := - ((0.266377, -0.218171), - (-0.170919, -0.429368), - (0.047356, -0.387135), - (-0.430063, 0.363413), - (-0.221638, -0.313768), - (0.124758, -0.197109), - (-0.400021, 0.482195), - (0.247882, 0.152010), - (-0.286709, -0.470214), - (-0.426790, 0.004977), - (-0.361249, -0.104549), - (-0.040643, 0.123453), - (-0.189296, 0.438963), - (-0.453521, -0.299889), - (0.408216, -0.457699), - (0.328973, -0.101914), - (-0.055540, -0.477952), - (0.194421, 0.453510), - (0.404051, 0.224974), - (0.310136, 0.419700), - (-0.021743, 0.403898), - (-0.466210, 0.248839), - (0.341369, 0.081490), - (0.124156, -0.016859), - (-0.461321, -0.176661), - (0.013210, 0.234401), - (0.174258, -0.311854), - (0.294061, 0.263364), - (-0.114836, 0.328189), - (0.041206, -0.106205), - (0.079227, 0.345021), - (-0.109319, -0.242380), - (0.425005, -0.332397), - (0.009146, 0.015098), - (-0.339084, -0.355707), - (-0.224596, -0.189548), - (0.083475, 0.117028), - (0.295962, -0.334699), - (0.452998, 0.025397), - (0.206511, -0.104668), - (0.447544, -0.096004), - (-0.108006, -0.002471), - (-0.380810, 0.130036), - (-0.242440, 0.186934), - (-0.200363, 0.070863), - (-0.344844, -0.230814), - (0.408660, 0.345826), - (-0.233016, 0.305203), - (0.158475, -0.430762), - (0.486972, 0.139163), - (-0.301610, 0.009319), - (0.282245, -0.458671), - (0.482046, 0.443890), - (-0.121527, 0.210223), - (-0.477606, -0.424878), - (-0.083941, -0.121440), - (-0.345773, 0.253779), - (0.234646, 0.034549), - (0.394102, -0.210901), - (-0.312571, 0.397656), - (0.200906, 0.333293), - (0.018703, -0.261792), - (-0.209349, -0.065383), - (0.076248, 0.478538), - (-0.073036, -0.355064), - (0.145087, 0.221726)); - -end Jitter; diff --git a/lib/glut-3.7.6/progs/ada/pickdepth.adb b/lib/glut-3.7.6/progs/ada/pickdepth.adb deleted file mode 100644 index 794725857ac71798e4c26d8d53305474e3ae1220..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/pickdepth.adb +++ /dev/null @@ -1,69 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; -with PickDepth_Procs; use PickDepth_Procs; -with Interfaces.C.Strings; - -procedure PickDepth is - package Tio renames Text_IO; - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - foobar : Integer; -begin - glutInitWindowSize (300, 300); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - foobar := glutCreateWindow ("OpenGL & Ada: pickdepth"); - - DoInit; - - glutMouseFunc (PickRects'Access); - glutReshapeFunc (ReshapeCallback'Access); - glutDisplayFunc (DoDisplay'Access); - glutMainLoop; -end PickDepth; diff --git a/lib/glut-3.7.6/progs/ada/pickdepth_procs.adb b/lib/glut-3.7.6/progs/ada/pickdepth_procs.adb deleted file mode 100644 index 24e9f290630235544a739e737b735982dfeff103..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/pickdepth_procs.adb +++ /dev/null @@ -1,166 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with GLU; use GLU; -with GLUT; use GLUT; -with Text_IO; - -package body PickDepth_Procs is - package tio renames Text_IO; - - procedure DoInit is - begin - glClearColor (0.0, 0.0, 0.0, 0.0); - glDepthFunc (GL_LESS); - glEnable (GL_DEPTH_TEST); - glShadeModel (GL_FLAT); - glDepthRange (0.0, 1.0); - end DoInit; - - procedure DrawRects (mode : RenderingMode) is - begin - if mode = GL_SELECT then glLoadName (1); end if; - glBegin (GL_QUADS); - glColor3f (1.0, 1.0, 0.0); - glVertex3i (2, 0, 0); - glVertex3i (2, 6, 0); - glVertex3i (6, 6, 0); - glVertex3i (6, 0, 0); - glEnd; - - if mode = GL_SELECT then glLoadName (2); end if; - glBegin (GL_QUADS); - glColor3f (0.0, 1.0, 1.0); - glVertex3i (3, 2, -1); - glVertex3i (3, 8, -1); - glVertex3i (8, 8, -1); - glVertex3i (8, 2, -1); - glEnd; - - if mode = GL_SELECT then glLoadName (3); end if; - glBegin (GL_QUADS); - glColor3f (1.0, 0.0, 1.0); - glVertex3i (0, 2, -2); - glVertex3i (0, 7, -2); - glVertex3i (5, 7, -2); - glVertex3i (5, 2, -2); - glEnd; - end DrawRects; - - type int_ar is array (Integer range <>) of aliased GLuint; - - procedure ProcessHits (hits : GLint; buffer : in int_ar) is - j : Integer := buffer'First; - begin - tio.Put_Line ("Hits = " & GLint'Image (hits)); - - if hits /= 0 then - for i in - Integer (buffer'First) .. - Integer (buffer'First + Integer (hits) - 1) - loop - tio.Put_Line (" number of names for hit = " & - GLuint'Image (buffer (j))); - j := j + 1; - tio.Put (" z1 is " & GLuint'Image (buffer (j))); - j := j + 1; - tio.Put ("; z2 is " & GLuint'Image (buffer (j))); - j := j + 1; - tio.New_Line; - tio.Put (" names:"); - - for k in 1 .. Integer (buffer (buffer'First)) loop - tio.Put (" " & GLuint'Image (buffer (j))); - j := j + 1; - end loop; - tio.New_Line; - end loop; - end if; - end ProcessHits; - - BUFSIZE : constant := 512; - - procedure PickRects (btn : Integer; state: Integer; x, y: Integer) is - selectBuf : array (1 .. BUFSIZE) of aliased GLuint; - hits : GLint; - viewport : array (0 .. 3) of aliased GLint; - begin - if state = GLUT_LEFT_BUTTON then - if state = GLUT_DOWN then - glGetIntegerv (GL_VIEWPORT, viewport (0)'Access); - - glSelectBuffer (BUFSIZE, selectBuf (1)'Access); - hits := glRenderMode (GL_SELECT); - - glInitNames; - glPushName (-1); - - glMatrixMode (GL_PROJECTION); - glPushMatrix; - glLoadIdentity; - gluPickMatrix (GLdouble (x), GLdouble (viewport (3) - GLint(y)), - 5.0, 5.0, viewport (0)'Access); - glOrtho (0.0, 8.0, 0.0, 8.0, -0.5, 2.5); - DrawRects (GL_SELECT); - glPopMatrix; - glFlush; - - hits := glRenderMode (GL_RENDER); - ProcessHits (hits, int_ar (selectBuf)); - end if; - end if; - end PickRects; - - procedure DoDisplay is - begin - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - DrawRects (GL_RENDER); - glFlush; - end DoDisplay; - - - procedure ReshapeCallback (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - glMatrixMode (GL_PROJECTION); - glLoadIdentity; - glOrtho (0.0, 8.0, 0.0, 8.0, -0.5, 2.5); - glMatrixMode (GL_MODELVIEW); - glLoadIdentity; - end ReshapeCallback; -end PickDepth_Procs; diff --git a/lib/glut-3.7.6/progs/ada/pickdepth_procs.ads b/lib/glut-3.7.6/progs/ada/pickdepth_procs.ads deleted file mode 100644 index 0fa9a26ddc9062a6778ce48edc61df4af7d8068a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/pickdepth_procs.ads +++ /dev/null @@ -1,45 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package PickDepth_Procs is - procedure DoInit; - procedure DoDisplay; - procedure PickRects (btn: Integer; state: Integer; x, y: Integer); - procedure ReshapeCallback (w : Integer; h : Integer); -end PickDepth_Procs; diff --git a/lib/glut-3.7.6/progs/ada/scenebamb.adb b/lib/glut-3.7.6/progs/ada/scenebamb.adb deleted file mode 100644 index 2d0034890b5f794e760f307343bceb7925819fa3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/scenebamb.adb +++ /dev/null @@ -1,68 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; -with Scenebamb_Procs; use Scenebamb_Procs; -with Interfaces.C.Strings; - -procedure Scenebamb is - package Tio renames Text_IO; - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - foobar : Integer; -begin - glutInitWindowSize (500, 500); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - foobar := glutCreateWindow ("OpenGL & Ada: scenebamb"); - - DoInit; - - glutReshapeFunc (ReshapeCallback'ACCESS); - glutDisplayFunc (DoDisplay'ACCESS); - glutMainLoop; -end Scenebamb; diff --git a/lib/glut-3.7.6/progs/ada/scenebamb_procs.adb b/lib/glut-3.7.6/progs/ada/scenebamb_procs.adb deleted file mode 100644 index 0a575d63c18565bb3fa3b8dfc9f66dc3a1cd6be5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/scenebamb_procs.adb +++ /dev/null @@ -1,109 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; - -package body Scenebamb_Procs is - procedure DoInit is - ambient : array (0 .. 3) of aliased GLfloat := - (0.0, 0.0, 1.0, 1.0); - diffuse : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - specular : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - position : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 0.0); - begin - glLightfv (GL_LIGHT0, GL_AMBIENT, ambient (0)'access); - glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse (0)'access); - glLightfv (GL_LIGHT0, GL_POSITION, position (0)'access); - - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - glEnable (GL_DEPTH_TEST); - glDepthFunc (GL_LESS); - end DoInit; - - procedure DoDisplay is - begin - -- 16#4100# = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - - glPushMatrix; - glRotatef (20.0, 1.0, 0.0, 0.0); - - glPushMatrix; - glTranslatef (-0.75, 0.5, 0.0); - glRotatef (90.0, 1.0, 0.0, 0.0); - glutSolidTorus (0.275, 0.85, 15, 15); - glPopMatrix; - - glPushMatrix; - glTranslatef (-0.75, -0.5, 0.0); - glRotatef (270.0, 1.0, 0.0, 0.0); - glutSolidCone (1.0, 2.0, 15, 15); - glPopMatrix; - - glPushMatrix; - glTranslatef (0.75, 0.0, -1.0); - glutSolidSphere (1.0, 15, 15); - glPopMatrix; - - glPopMatrix; - - glFlush; - end DoDisplay; - - - procedure ReshapeCallback (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - glMatrixMode (GL_PROJECTION); - glLoadIdentity; - - if w <= h then - glOrtho (-2.5, 2.5, GLdouble (-2.5*Float (h)/ Float (w)), - GLdouble (2.5*Float (h)/Float (w)), -10.0, 10.0); - else - glOrtho (GLdouble (-2.5*Float (w)/Float (h)), - GLdouble (2.5*Float (w)/Float (h)), -2.5, 2.5, -10.0, 10.0); - end if; - - glMatrixMode (GL_MODELVIEW); - end ReshapeCallback; -end Scenebamb_Procs; diff --git a/lib/glut-3.7.6/progs/ada/scenebamb_procs.ads b/lib/glut-3.7.6/progs/ada/scenebamb_procs.ads deleted file mode 100644 index 3310d5fbd42baf5804dcf283b0efb6b9db2e6296..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/scenebamb_procs.ads +++ /dev/null @@ -1,42 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -package Scenebamb_Procs is - procedure DoInit; - procedure DoDisplay; - procedure ReshapeCallback (w : Integer; h : Integer); -end Scenebamb_Procs; diff --git a/lib/glut-3.7.6/progs/ada/teapots.adb b/lib/glut-3.7.6/progs/ada/teapots.adb deleted file mode 100644 index 9e8864a5ba75b4c9819262585a375676c2cd3b80..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/teapots.adb +++ /dev/null @@ -1,70 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; -with Teapots_Procs; use Teapots_Procs; -with Interfaces.C.Strings; - -procedure Teapots is - package Tio renames Text_IO; - package C renames Interfaces.C; - - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - foobar : Integer; -begin - glutInitWindowSize (500, 600); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - foobar := glutCreateWindow ("OpenGL & Ada: teapots"); - - DoInit; - - glutReshapeFunc (ReshapeCallback'Access); - glutDisplayFunc (DoDisplay'Access); - glutMainLoop; -end Teapots; diff --git a/lib/glut-3.7.6/progs/ada/teapots_procs.adb b/lib/glut-3.7.6/progs/ada/teapots_procs.adb deleted file mode 100644 index 2865f0a089ffb991a7f4352b1ecb55b385025eaf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/teapots_procs.adb +++ /dev/null @@ -1,178 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; - -package body Teapots_Procs is - procedure DoInit is - ambient : array (0 .. 3) of aliased GLfloat := - (0.0, 0.0, 0.0, 1.0); - diffuse : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - specular : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 1.0); - position : array (0 .. 3) of aliased GLfloat := - (0.0, 3.0, 3.0, 0.0); - - lmodel_ambient : array (0 .. 3) of aliased GLfloat := - (0.2, 0.2, 0.2, 1.0); - local_view : aliased GLfloat := 0.0; - begin - glLightfv (GL_LIGHT0, GL_AMBIENT, ambient (0)'Access); - glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse (0)'Access); - glLightfv (GL_LIGHT0, GL_POSITION, position (0)'Access); - glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient (0)'Access); - glLightModelfv (GL_LIGHT_MODEL_LOCAL_VIEWER, local_view'Access); - - glFrontFace (GL_CW); - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - glEnable (GL_AUTO_NORMAL); - glEnable (GL_NORMALIZE); - glEnable (GL_DEPTH_TEST); - glDepthFunc (GL_LESS); - end DoInit; - - procedure renderTeapot - (x : GLfloat; y : GLfloat; ambr : GLfloat; - ambg : GLfloat; ambb : GLfloat; difr : GLfloat; - difg : GLfloat; difb : GLfloat; specr : GLfloat; - specg : GLfloat; specb : GLfloat; shine : GLfloat) - is - mat : array (0 .. 3) of aliased GLfloat; - begin - glPushMatrix; - - glTranslatef (x, y, 0.0); - - mat (0) := ambr; - mat (1) := ambg; - mat (2) := ambb; - mat (3) := 1.0; - glMaterialfv (GL_FRONT, GL_AMBIENT, mat (0)'Access); - - mat (0) := difr; - mat (1) := difg; - mat (2) := difb; - glMaterialfv (GL_FRONT, GL_DIFFUSE, mat (0)'Access); - - mat (0) := specr; - mat (1) := specg; - mat (2) := specb; - glMaterialfv (GL_FRONT, GL_SPECULAR, mat (0)'Access); - - glMaterialf (GL_FRONT, GL_SHININESS, shine * 128.0); - - glutSolidTeapot (1.0); - glPopMatrix; - end renderTeapot; - - procedure DoDisplay is - begin - -- 16#4100# = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - renderTeapot (2.0, 17.0, 0.0215, 0.1745, 0.0215, - 0.07568, 0.61424, 0.07568, 0.633, 0.727811, 0.633, 0.6); - renderTeapot (2.0, 14.0, 0.135, 0.2225, 0.1575, - 0.54, 0.89, 0.63, 0.316228, 0.316228, 0.316228, 0.1); - renderTeapot (2.0, 11.0, 0.05375, 0.05, 0.06625, - 0.18275, 0.17, 0.22525, 0.332741, 0.328634, 0.346435, 0.3); - renderTeapot (2.0, 8.0, 0.25, 0.20725, 0.20725, - 1.0, 0.829, 0.829, 0.296648, 0.296648, 0.296648, 0.088); - renderTeapot (2.0, 5.0, 0.1745, 0.01175, 0.01175, - 0.61424, 0.04136, 0.04136, 0.727811, 0.626959, 0.626959, 0.6); - renderTeapot (2.0, 2.0, 0.1, 0.18725, 0.1745, - 0.396, 0.74151, 0.69102, 0.297254, 0.30829, 0.306678, 0.1); - renderTeapot (6.0, 17.0, 0.329412, 0.223529, 0.027451, - 0.780392, 0.568627, 0.113725, 0.992157, 0.941176, 0.807843, - 0.21794872); - renderTeapot (6.0, 14.0, 0.2125, 0.1275, 0.054, - 0.714, 0.4284, 0.18144, 0.393548, 0.271906, 0.166721, 0.2); - renderTeapot (6.0, 11.0, 0.25, 0.25, 0.25, - 0.4, 0.4, 0.4, 0.774597, 0.774597, 0.774597, 0.6); - renderTeapot (6.0, 8.0, 0.19125, 0.0735, 0.0225, - 0.7038, 0.27048, 0.0828, 0.256777, 0.137622, 0.086014, 0.1); - renderTeapot (6.0, 5.0, 0.24725, 0.1995, 0.0745, - 0.75164, 0.60648, 0.22648, 0.628281, 0.555802, 0.366065, 0.4); - renderTeapot (6.0, 2.0, 0.19225, 0.19225, 0.19225, - 0.50754, 0.50754, 0.50754, 0.508273, 0.508273, 0.508273, 0.4); - renderTeapot (10.0, 17.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.01, - 0.50, 0.50, 0.50, 0.25); - renderTeapot (10.0, 14.0, 0.0, 0.1, 0.06, 0.0, 0.50980392, 0.50980392, - 0.50196078, 0.50196078, 0.50196078, 0.25); - renderTeapot (10.0, 11.0, 0.0, 0.0, 0.0, - 0.1, 0.35, 0.1, 0.45, 0.55, 0.45, 0.25); - renderTeapot (10.0, 8.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, - 0.7, 0.6, 0.6, 0.25); - renderTeapot (10.0, 5.0, 0.0, 0.0, 0.0, 0.55, 0.55, 0.55, - 0.70, 0.70, 0.70, 0.25); - renderTeapot (10.0, 2.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, - 0.60, 0.60, 0.50, 0.25); - renderTeapot (14.0, 17.0, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, - 0.4, 0.4, 0.4, 0.078125); - renderTeapot (14.0, 14.0, 0.0, 0.05, 0.05, 0.4, 0.5, 0.5, - 0.04, 0.7, 0.7, 0.078125); - renderTeapot (14.0, 11.0, 0.0, 0.05, 0.0, 0.4, 0.5, 0.4, - 0.04, 0.7, 0.04, 0.078125); - renderTeapot (14.0, 8.0, 0.05, 0.0, 0.0, 0.5, 0.4, 0.4, - 0.7, 0.04, 0.04, 0.078125); - renderTeapot (14.0, 5.0, 0.05, 0.05, 0.05, 0.5, 0.5, 0.5, - 0.7, 0.7, 0.7, 0.078125); - renderTeapot (14.0, 2.0, 0.05, 0.05, 0.0, 0.5, 0.5, 0.4, - 0.7, 0.7, 0.04, 0.078125); - glFlush; - end DoDisplay; - - - procedure ReshapeCallback (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - glMatrixMode (GL_PROJECTION); - glLoadIdentity; - - if w <= h then - glOrtho (0.0, 16.0, 0.0, GLdouble (16.0*Float (h)/Float (w)), - -10.0, 0.0); - else - glOrtho (0.0, GLdouble (16.0*Float (w)/Float (h)), - 0.0, 16.0, -10.0, 10.0); - end if; - - glMatrixMode (GL_MODELVIEW); - end ReshapeCallback; -end Teapots_Procs; diff --git a/lib/glut-3.7.6/progs/ada/teapots_procs.ads b/lib/glut-3.7.6/progs/ada/teapots_procs.ads deleted file mode 100644 index b7976d7f4959b8faae93c8f44d41dd4bc71f66c2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/teapots_procs.ads +++ /dev/null @@ -1,50 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package Teapots_Procs is - procedure DoInit; - procedure renderTeapot - (x : GLfloat; y : GLfloat; ambr : GLfloat; - ambg : GLfloat; ambb : GLfloat; difr : GLfloat; - difg : GLfloat; difb : GLfloat; specr : GLfloat; - specg : GLfloat; specb : GLfloat; shine : GLfloat); - - procedure DoDisplay; - procedure ReshapeCallback (w : Integer; h : Integer); -end Teapots_Procs; diff --git a/lib/glut-3.7.6/progs/ada/texgen.adb b/lib/glut-3.7.6/progs/ada/texgen.adb deleted file mode 100644 index 67a687c9525f80a55cad9b75aef6df3ab6767210..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/texgen.adb +++ /dev/null @@ -1,68 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; -with Texgen_Procs; use Texgen_Procs; -with Interfaces.C.Strings; - -procedure Texgen is - package Tio renames Text_IO; - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - foobar : Integer; -begin - glutInitWindowSize (300, 300); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - foobar := glutCreateWindow ("OpenGL & Ada: texgen"); - - DoInit; - - glutReshapeFunc (ReshapeCallback'ACCESS); - glutDisplayFunc (DoDisplay'ACCESS); - glutMainLoop; -end Texgen; diff --git a/lib/glut-3.7.6/progs/ada/texgen_procs.adb b/lib/glut-3.7.6/progs/ada/texgen_procs.adb deleted file mode 100644 index 63856dc9d5eb46730a0161dbae21bdd60531cf9a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/texgen_procs.adb +++ /dev/null @@ -1,121 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; - -package body Texgen_Procs is - stripeImage : array (0 .. 95) of aliased GLubyte; - - procedure makeStripeImage is - begin - for j in 0 .. 31 loop - if j <= 4 then stripeImage (3*j) := 255; - else stripeImage (3*j) := 0; - end if; - - if j > 4 then stripeImage (3*j+1) := 255; - else stripeImage (3*j+1) := 0; - end if; - - stripeImage (3*j+2) := 0; - end loop; - end makeStripeImage; - - sgenparams : array (0 .. 3) of aliased GLfloat := - (1.0, 1.0, 1.0, 0.0); - - procedure DoInit is - begin - glClearColor (0.0, 0.0, 0.0, 0.0); - - makeStripeImage; - glPixelStorei (GL_UNPACK_ALIGNMENT, 1); - glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage1D (GL_TEXTURE_1D, 0, 3, 32, 0, - GL_RGB, GL_UNSIGNED_BYTE, stripeImage(0)'Access); - - glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGenfv (GL_S, GL_OBJECT_PLANE, sgenparams (0)'ACCESS); - - glEnable (GL_DEPTH_TEST); - glDepthFunc (GL_LESS); - glEnable (GL_TEXTURE_GEN_S); - glEnable (GL_TEXTURE_1D); - glEnable (GL_CULL_FACE); - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - glEnable (GL_AUTO_NORMAL); - glEnable (GL_NORMALIZE); - glFrontFace (GL_CW); - glCullFace (GL_BACK); - glMaterialf (GL_FRONT, GL_SHININESS, 64.0); - end DoInit; - - procedure DoDisplay is - begin - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - glPushMatrix; - glRotatef (45.0, 0.0, 0.0, 1.0); - glutSolidTeapot (2.0); - glPopMatrix; - glFlush; - end DoDisplay; - - - procedure ReshapeCallback (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - - glMatrixMode (GL_PROJECTION); - glLoadIdentity; - - if w <= h then - glOrtho (-3.5, 3.5, GLdouble (-3.5*GLdouble (h)/GLdouble (w)), - GLdouble (3.5*GLdouble (h)/GLdouble (w)), -3.5, 3.5); - else - glOrtho ((-3.5*GLdouble (w)/GLdouble (h)), - GLdouble (3.5*GLdouble (w)/GLdouble (h)), -3.5, 3.5, -3.5, 3.5); - end if; - - glMatrixMode (GL_MODELVIEW); - glLoadIdentity; - end ReshapeCallback; -end Texgen_Procs; diff --git a/lib/glut-3.7.6/progs/ada/texgen_procs.ads b/lib/glut-3.7.6/progs/ada/texgen_procs.ads deleted file mode 100644 index c07d8cfb6749b3134bb8ea90168237c1cc5fd0dc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/texgen_procs.ads +++ /dev/null @@ -1,42 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -package Texgen_Procs is - procedure DoInit; - procedure DoDisplay; - procedure ReshapeCallback (w : Integer; h : Integer); -end Texgen_Procs; diff --git a/lib/glut-3.7.6/progs/ada/texturesurf.adb b/lib/glut-3.7.6/progs/ada/texturesurf.adb deleted file mode 100644 index 6d9945e3d5acb7c68fdf0f75ade47ed1e2209e9e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/texturesurf.adb +++ /dev/null @@ -1,68 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; -with Glut; use Glut; -with Text_IO; -with Texturesurf_Procs; use Texturesurf_Procs; -with Interfaces.C.Strings; - -procedure Texturesurf is - package Tio renames Text_IO; - package ICS renames Interfaces.C.Strings; - - type chars_ptr_ptr is access ICS.chars_ptr; - - argc : aliased integer; - pragma Import (C, argc, "gnat_argc"); - - argv : chars_ptr_ptr; - pragma Import (C, argv, "gnat_argv"); - - foobar : Integer; -begin - glutInitWindowSize (300, 300); - glutInit (argc'access, argv); - glutInitDisplayMode(GLUT_RGB or GLUT_DEPTH or GLUT_SINGLE); - foobar := glutCreateWindow ("OpenGL & Ada: texturesurf"); - - DoInit; - - glutReshapeFunc (ReshapeCallback'ACCESS); - glutDisplayFunc (DoDisplay'ACCESS); - glutMainLoop; -end Texturesurf; diff --git a/lib/glut-3.7.6/progs/ada/texturesurf_procs.adb b/lib/glut-3.7.6/progs/ada/texturesurf_procs.adb deleted file mode 100644 index a47fc84542672540174c695872edbee6eb52db09..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/texturesurf_procs.adb +++ /dev/null @@ -1,139 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with System; use System; -with GL; use GL; - -with Ada.Numerics; use Ada.Numerics; -with Ada.Numerics.Generic_Elementary_Functions; - -package body Texturesurf_Procs is - package GLdouble_GEF is new - Generic_Elementary_Functions (GLfloat); - - use GLdouble_GEF; - - ctrlpoints : array (0 .. 3, 0 .. 3, 0 .. 2) of aliased GLfloat := - (((-1.5, -1.5, 4.0), (-0.5, -1.5, 2.0), - (0.5, -1.5, -1.0), (1.5, -1.5, 2.0)), - ((-1.5, -0.5, 1.0), (-0.5, -0.5, 3.0), - (0.5, -0.5, 0.0), (1.5, -0.5, -1.0)), - ((-1.5, 0.5, 4.0), (-0.5, 0.5, 0.0), - (0.5, 0.5, 3.0), (1.5, 0.5, 4.0)), - ((-1.5, 1.5, -2.0), (-0.5, 1.5, -2.0), - (0.5, 1.5, 0.0), (1.5, 1.5, -1.0))); - - texpts : array (0 .. 1, 0 .. 1, 0 .. 1) of aliased GLfloat := - (((0.0, 0.0), (0.0, 1.0)), ((1.0, 0.0), (1.0, 1.0))); - - imageWidth : constant := 64; - imageHeight : constant := 64; - image : array (Integer range 0 .. (3*imageWidth*imageHeight)) - of aliased GLubyte; - - procedure makeImage is - ti, tj : GLfloat; - begin - for i in 0 .. (imageWidth - 1) loop - ti := 2.0*Pi*GLfloat (i)/GLfloat (imageWidth); - for j in 0 .. (imageHeight - 1) loop - tj := 2.0*Pi*GLfloat (j)/GLfloat (imageHeight); - - image (3 * (imageHeight * i + j)) := - GLubyte (127.0 * (1.0 + Sin (ti))); - image (3 * (imageHeight * i + j) + 1) := - GLubyte (127.0 * (1.0 + Cos (2.0 * tj))); - image (3 * (imageHeight * i + j) + 2) := - GLubyte (127.0 * (1.0 + Cos (ti + tj))); - end loop; - end loop; - end makeImage; - - procedure DoInit is - begin - glMap2f (GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, - 0.0, 1.0, 12, 4, ctrlpoints (0, 0, 0)'Access); - glMap2f (GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 2, - 0.0, 1.0, 4, 2, texpts (0, 0, 0)'Access); - - glEnable (GL_MAP2_TEXTURE_COORD_2); - glEnable (GL_MAP2_VERTEX_3); - glMapGrid2f (20, 0.0, 1.0, 20, 0.0, 1.0); - makeImage; - glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D (GL_TEXTURE_2D, 0, 3, imageWidth, imageHeight, 0, - GL_RGB, GL_UNSIGNED_BYTE, image(0)'Access); - - glEnable (GL_TEXTURE_2D); - glEnable (GL_DEPTH_TEST); - glEnable (GL_NORMALIZE); - glShadeModel (GL_FLAT); - end DoInit; - - procedure DoDisplay is - begin - glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - glColor3f (1.0, 1.0, 1.0); - glEvalMesh2 (GL_FILL, 0, 20, 0, 20); - glFlush; - end DoDisplay; - - - procedure ReshapeCallback (w : Integer; h : Integer) is - begin - glViewport (0, 0, GLsizei(w), GLsizei(h)); - - glMatrixMode (GL_PROJECTION); - glLoadIdentity; - - if w <= h then - glOrtho (-4.0, 4.0, GLdouble (-4.0*GLdouble (h)/GLdouble (w)), - GLdouble (4.0*GLdouble (h)/GLdouble (w)), -4.0, 4.0); - else - glOrtho ((-4.0*GLdouble (w)/GLdouble (h)), - GLdouble (4.0*GLdouble (w)/GLdouble (h)), -4.0, 4.0, -4.0, 4.0); - end if; - - glMatrixMode (GL_MODELVIEW); - glLoadIdentity; - glRotatef (85.0, 1.0, 1.0, 1.0); - end ReshapeCallback; -end Texturesurf_Procs; diff --git a/lib/glut-3.7.6/progs/ada/texturesurf_procs.ads b/lib/glut-3.7.6/progs/ada/texturesurf_procs.ads deleted file mode 100644 index 1491c3aa859d213527734060e1d5f7b31f799c80..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/ada/texturesurf_procs.ads +++ /dev/null @@ -1,44 +0,0 @@ --- --- (c) Copyright 1993,1994,1995,1996 Silicon Graphics, Inc. --- ALL RIGHTS RESERVED --- Permission to use, copy, modify, and distribute this software for --- any purpose and without fee is hereby granted, provided that the above --- copyright notice appear in all copies and that both the copyright notice --- and this permission notice appear in supporting documentation, and that --- the name of Silicon Graphics, Inc. not be used in advertising --- or publicity pertaining to distribution of the software without specific, --- written prior permission. --- --- THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" --- AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, --- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR --- FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --- GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, --- SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY --- KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, --- LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF --- THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN --- ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON --- ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE --- POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. --- --- US Government Users Restricted Rights --- Use, duplication, or disclosure by the Government is subject to --- restrictions set forth in FAR 52.227.19(c)(2) or subparagraph --- (c)(1)(ii) of the Rights in Technical Data and Computer Software --- clause at DFARS 252.227-7013 and/or in similar or successor --- clauses in the FAR or the DOD or NASA FAR Supplement. --- Unpublished-- rights reserved under the copyright laws of the --- United States. Contractor/manufacturer is Silicon Graphics, --- Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. --- --- OpenGL(TM) is a trademark of Silicon Graphics, Inc. --- - -with GL; use GL; - -package Texturesurf_Procs is - procedure DoInit; - procedure DoDisplay; - procedure ReshapeCallback (w : Integer; h : Integer); -end Texturesurf_Procs; diff --git a/lib/glut-3.7.6/progs/advanced.dsw b/lib/glut-3.7.6/progs/advanced.dsw deleted file mode 100644 index 16a01e5132a3e245598e05a61aed9e91d5b8ee15..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced.dsw +++ /dev/null @@ -1,659 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\advanced\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name accumaa - End Project Dependency - Begin Project Dependency - Project_Dep_Name af_depthcue - End Project Dependency - Begin Project Dependency - Project_Dep_Name af_teapots - End Project Dependency - Begin Project Dependency - Project_Dep_Name boundary - End Project Dependency - Begin Project Dependency - Project_Dep_Name comp - End Project Dependency - Begin Project Dependency - Project_Dep_Name convolve - End Project Dependency - Begin Project Dependency - Project_Dep_Name csg - End Project Dependency - Begin Project Dependency - Project_Dep_Name decal - End Project Dependency - Begin Project Dependency - Project_Dep_Name dissolve - End Project Dependency - Begin Project Dependency - Project_Dep_Name envmap - End Project Dependency - Begin Project Dependency - Project_Dep_Name envphong - End Project Dependency - Begin Project Dependency - Project_Dep_Name field - End Project Dependency - Begin Project Dependency - Project_Dep_Name genmipmap - End Project Dependency - Begin Project Dependency - Project_Dep_Name haloed - End Project Dependency - Begin Project Dependency - Project_Dep_Name hello2rts - End Project Dependency - Begin Project Dependency - Project_Dep_Name hiddenline - End Project Dependency - Begin Project Dependency - Project_Dep_Name imgproc - End Project Dependency - Begin Project Dependency - Project_Dep_Name mipmap_lines - End Project Dependency - Begin Project Dependency - Project_Dep_Name motionblur - End Project Dependency - Begin Project Dependency - Project_Dep_Name multilight - End Project Dependency - Begin Project Dependency - Project_Dep_Name occlude - End Project Dependency - Begin Project Dependency - Project_Dep_Name pointburst - End Project Dependency - Begin Project Dependency - Project_Dep_Name projshadow - End Project Dependency - Begin Project Dependency - Project_Dep_Name projtex - End Project Dependency - Begin Project Dependency - Project_Dep_Name rasonly - End Project Dependency - Begin Project Dependency - Project_Dep_Name redblue_stereo - End Project Dependency - Begin Project Dependency - Project_Dep_Name sgiflag - End Project Dependency - Begin Project Dependency - Project_Dep_Name shadowfun - End Project Dependency - Begin Project Dependency - Project_Dep_Name shadowmap - End Project Dependency - Begin Project Dependency - Project_Dep_Name shadowvol - End Project Dependency - Begin Project Dependency - Project_Dep_Name silhouette - End Project Dependency - Begin Project Dependency - Project_Dep_Name softshadow - End Project Dependency - Begin Project Dependency - Project_Dep_Name tess - End Project Dependency - Begin Project Dependency - Project_Dep_Name textext - End Project Dependency - Begin Project Dependency - Project_Dep_Name textile - End Project Dependency - Begin Project Dependency - Project_Dep_Name textrim - End Project Dependency - Begin Project Dependency - Project_Dep_Name texwinalign - End Project Dependency - Begin Project Dependency - Project_Dep_Name tvertex - End Project Dependency - Begin Project Dependency - Project_Dep_Name videoresize - End Project Dependency - Begin Project Dependency - Project_Dep_Name vox - End Project Dependency - Begin Project Dependency - Project_Dep_Name warp - End Project Dependency - Begin Project Dependency - Project_Dep_Name zcomposite - End Project Dependency -}}} - -############################################################################### - -Project: "accumaa"=".\advanced\accumaa.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "af_depthcue"=".\advanced\af_depthcue.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "af_teapots"=".\advanced\af_teapots.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "boundary"=".\advanced\boundary.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "comp"=".\advanced\comp.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "convolve"=".\advanced\convolve.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "csg"=".\advanced\csg.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "decal"=".\advanced\decal.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dissolve"=".\advanced\dissolve.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "envmap"=".\advanced\envmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "envphong"=".\advanced\envphong.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "field"=".\advanced\field.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "genmipmap"=".\advanced\genmipmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "haloed"=".\advanced\haloed.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "hello2rts"=".\advanced\hello2rts.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "hiddenline"=".\advanced\hiddenline.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "imgproc"=".\advanced\imgproc.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mipmap_lines"=".\advanced\mipmap_lines.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "motionblur"=".\advanced\motionblur.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multilight"=".\advanced\multilight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "occlude"=".\advanced\occlude.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "pointburst"=".\advanced\pointburst.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "projshadow"=".\advanced\projshadow.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "projtex"=".\advanced\projtex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "rasonly"=".\advanced\rasonly.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "redblue_stereo"=".\advanced\redblue_stereo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sgiflag"=".\advanced\sgiflag.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "shadowfun"=".\advanced\shadowfun.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "shadowmap"=".\advanced\shadowmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "shadowvol"=".\advanced\shadowvol.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "silhouette"=".\advanced\silhouette.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "softshadow"=".\advanced\softshadow.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tess"=".\advanced\tess.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "textext"=".\advanced\textext.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "textile"=".\advanced\textile.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "textrim"=".\advanced\textrim.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texwinalign"=".\advanced\texwinalign.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tvertex"=".\advanced\tvertex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "videoresize"=".\advanced\videoresize.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "vox"=".\advanced\vox.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "warp"=".\advanced\warp.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zcomposite"=".\advanced\zcomposite.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/advanced/Imakefile b/lib/glut-3.7.6/progs/advanced/Imakefile deleted file mode 100644 index f319f71188a2234dd7b545d96bac8fcd5cca5b08..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/Imakefile +++ /dev/null @@ -1,83 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996, 1998. */ - -#include "../../Glut.cf" - -TARGETS = hiddenline haloed silhouette softshadow accumaa field convolve \ - shadowvol shadowmap projshadow tess textile comp csg dissolve envmap \ - envphong decal textext genmipmap imgproc mipmap_lines textrim tvertex \ - warp motionblur projtex zcomposite videoresize occlude af_depthcue \ - af_teapots multilight boundary shadowfun hello2rts rasonly sgiflag \ - pointburst redblue_stereo texwinalign - -SRCS = hiddenline.c haloed.c silhouette.c softshadow.c accumaa.c field.c \ - convolve.c shadowvol.c shadowmap.c projshadow.c sphere.c tess.c texture.c \ - textile.c comp.c csg.c dissolve.c envmap.c envphong.c decal.c textext.c \ - textmap.c genmipmap.c imgproc.c mipmap_lines.c izoom.c textrim.c tvertex.c \ - warp.c motionblur.c projtex.c zcomposite.c videoresize.c occlude.c \ - addfog.c af_depthcue.c af_teapots.c multilight.c boundary.c shadowfun.c \ - rts.c hello2rts.c rasonly.c sgiflag.c pointburst.c redblue_stereo.c \ - texwinalign.c nvidia_logo.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(accumaa) -NormalGlutProgramTarget(af_depthcue,af_depthcue.o addfog.o) -NormalGlutProgramTarget(af_teapots,af_teapots.o addfog.o) -SimpleGlutProgramTarget(boundary) -NormalGlutProgramTarget(comp,comp.o texture.o) -SimpleGlutProgramTarget(csg) -SimpleGlutProgramTarget(convolve) -SimpleGlutProgramTarget(decal) -SimpleGlutProgramTarget(dissolve) -NormalGlutProgramTarget(envmap,envmap.o texture.o) -SimpleGlutProgramTarget(envphong) -SimpleGlutProgramTarget(field) -NormalGlutProgramTarget(genmipmap,genmipmap.o texture.o) -SimpleGlutProgramTarget(haloed) -NormalGlutProgramTarget(hello2rts,hello2rts.o rts.o nvidia_logo.o) -SimpleGlutProgramTarget(hiddenline) -NormalGlutProgramTarget(imgproc,imgproc.o texture.o) -NormalGlutProgramTarget(mipmap_lines,mipmap_lines.o izoom.o texture.o) -SimpleGlutProgramTarget(motionblur) -SimpleGlutProgramTarget(multilight) -SimpleGlutProgramTarget(occlude) -SimpleGlutProgramTarget(pointburst) -SimpleGlutProgramTarget(projshadow) -NormalGlutProgramTarget(projtex,projtex.o texture.o) -SimpleGlutProgramTarget(rasonly) -SimpleGlutProgramTarget(redblue_stereo) -SimpleGlutProgramTarget(sgiflag) -SimpleGlutProgramTarget(shadowfun) -SimpleGlutProgramTarget(shadowmap) -SimpleGlutProgramTarget(shadowvol) -SimpleGlutProgramTarget(silhouette) -SimpleGlutProgramTarget(softshadow) -NormalGlutProgramTarget(tess,tess.o sphere.o) -NormalGlutProgramTarget(textext,textext.o textmap.o texture.o) -NormalGlutProgramTarget(textrim,textrim.o texture.o) -NormalGlutProgramTarget(textile,textile.o texture.o) -SimpleGlutProgramTarget(texwinalign) -SimpleGlutProgramTarget(tvertex) -NormalGlutProgramTarget(videoresize,videoresize.o sphere.o) -SimpleGlutProgramTarget(vox) -NormalGlutProgramTarget(warp,warp.o texture.o) -SimpleGlutProgramTarget(zcomposite) - -DATA_LINKS = 00.rgb 02.rgb 04.rgb a.rgb mandrill.rgb 01.rgb 03.rgb 05.rgb b.rgb tree.rgb vox.bin.gz - -links: - for i in $(DATA_LINKS); do \ - /bin/rm -rf $$i ; \ - ln -s ../../data/$$i . ; \ - done - -#ifdef RemoveFiles -clean:: - RemoveFiles($(DATA_LINKS)) -#else -clean:: - $(RM) $(DATA_LINKS) -#endif - -DependTarget() diff --git a/lib/glut-3.7.6/progs/advanced/README b/lib/glut-3.7.6/progs/advanced/README deleted file mode 100644 index 0bcb5d0f417e7f62c6c24c15715999e23d5d3867..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/README +++ /dev/null @@ -1,53 +0,0 @@ - -This directory contains OpenGL examaples from the SIGGRAPH '96 course -titled "Programming with OpenGL: Advanced Rendering" taught by Tom -McReynolds (tomcat@sgi.com) and David Blythe (blythe@sgi.com), both -from SGI. These examples demonstrate interesting rendering techniques -that may not be obvious to the beginning OpenGL user. Think of OpenGL -as a powerful vocabulary for rendering, and you'll be surprised the -powerful expressions that you can devise. - -Information about the course is at: - - http://www.siggraph.org/conferences/siggraph96/core/conference/courses/23.html - -Material presented at the course can be found at: - - http://www.sgi.com/Technology/openGL/advanced_sig96.html - -The original source code for the course examples can be found at: - - http://www.sgi.com/Technology/openGL/advanced/programs.html - -In a few places, I've taken the liberty of adding GLUT popup menus and -disabling animation when the window is iconfied. Warnings and bugs I -found were fixed. In a few examples, the degree of tesselation and -default window size have been scaled down to perform better on low-end -graphics workstations and PCs. - -A number of SGI .rgb image files are used to supply texture data needed -by some of these examples. Since the files are large, I am not -including them in the GLUT distribution. Instead, they are provided in -a separate distribution called glut_data.tar.gz - -If you retrieve glut_data.tar.gz, it will generate a glut-3.3/data -directory where the images will be placed. Use the "make links" target -to make links in this directory into the glut-3.3/data directory. - -You can also get the files individually over the Internet from: - - http://www.sgi.com/Technology/openGL/advanced/blythe/00.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/01.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/02.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/03.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/04.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/05.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/a.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/b.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/flowers.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/mandrill.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/road.rgb - http://www.sgi.com/Technology/openGL/advanced/blythe/tree.rgb - -- Mark Kilgard - October 25, 1996. diff --git a/lib/glut-3.7.6/progs/advanced/Times-Italic.bw b/lib/glut-3.7.6/progs/advanced/Times-Italic.bw deleted file mode 100644 index be99f4a6d95bd8417ac134344b9bfe2eedd2c000..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/advanced/Times-Italic.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/advanced/_all.dsp b/lib/glut-3.7.6/progs/advanced/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/accumaa.c b/lib/glut-3.7.6/progs/advanced/accumaa.c deleted file mode 100644 index 278b697f8c6d8314ccc2e0988ff25dc77dc47103..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/accumaa.c +++ /dev/null @@ -1,277 +0,0 @@ - -/* accumaa.c - by Tom McReynolds, SGI */ - -/* Using the accumulation buffer for scene antialiasing. */ - -#include -#include -#include - -const GLdouble FRUSTDIM = 100.f; - -/* Create a single component texture map */ -GLfloat * -make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum { - SPHERE = 1, CONE -}; - -void -render(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = - {1.f, 1.f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); - - /* Note: wall verticies are ordered so they are all front facing this lets - me do back face culling to speed things up. */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* Since we want to turn texturing on for floor only, we have to make floor - a separate glBegin()/glEnd() sequence. You can't turn texturing on and - off between begin and end calls */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f(100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f(100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f(100.f, -100.f, -320.f); - glVertex3f(100.f, 100.f, -320.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glPushMatrix(); - glTranslatef(-80.f, -60.f, -420.f); - glCallList(SPHERE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-20.f, -80.f, -500.f); - glCallList(CONE); - glPopMatrix(); - - if (glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - - glFlush(); /* high end machines may need this */ -} - -/* compute scale factor for window->object space transform could use - gluUnProject(), but probably too much trouble */ -void -computescale(GLfloat * sx, GLfloat * sy) -{ - enum { - XORG, YORG, WID, HT - }; - GLint viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - - *sx = 2 * FRUSTDIM / viewport[WID]; - *sy = 2 * FRUSTDIM / viewport[WID]; -} - -enum { - NONE, AA -}; - -int rendermode = NONE; - -void -menu(int selection) -{ - rendermode = selection; - glutPostRedisplay(); -} - -/* Called when window needs to be redrawn */ -void -redraw(void) -{ - int i, j; - int min, max; - int count; - GLfloat invx, invy; - GLfloat scale, dx, dy; - - switch (rendermode) { - case NONE: - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, 320., 640.); - glMatrixMode(GL_MODELVIEW); - render(); - break; - case AA: - min = -2; - max = -min + 1; - count = -2 * min + 1; - count *= count; - - /* uniform scaling, less than one pixel wide */ - scale = -.9f / min; - - computescale(&invx, &invy); - - glClear(GL_ACCUM_BUFFER_BIT); - - for (j = min; j < max; j++) { - for (i = min; i < max; i++) { - dx = invx * scale * i; - dy = invy * scale * j; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM + dx, - FRUSTDIM + dy, - -FRUSTDIM + dx, - FRUSTDIM + dy, - 320., 640.); - glMatrixMode(GL_MODELVIEW); - render(); - glAccum(GL_ACCUM, 1.f / count); - } - } - glAccum(GL_RETURN, 1.f); - break; - } - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - if (key == '\033') - exit(0); -} - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = - {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = - {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_ACCUM | GLUT_DOUBLE); - (void) glutCreateWindow("scene antialiasing"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("Aliased View", NONE); - glutAddMenuEntry("AntiAliased", AA); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glReadBuffer(GL_BACK); /* input to accum buffer */ - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/accumaa.dsp b/lib/glut-3.7.6/progs/advanced/accumaa.dsp deleted file mode 100644 index af9f9cab29bcd59b12604953dbef5dc8f95ebc21..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/accumaa.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="accumaa" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=accumaa - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "accumaa.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "accumaa.mak" CFG="accumaa - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "accumaa - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "accumaa - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "accumaa - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "accumaa - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "accumaa - Win32 Release" -# Name "accumaa - Win32 Debug" -# Begin Source File - -SOURCE=.\accumaa.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/addfog.c b/lib/glut-3.7.6/progs/advanced/addfog.c deleted file mode 100644 index d860d169ed27ad9f07cc7d47500063b97153e943..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/addfog.c +++ /dev/null @@ -1,296 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* addfog.c is a set of routines for adding OpenGL-style depth attenuated fog - to a scene as a final rendering pass. This may be useful if you are doing - multipass algorithms where attempting to enable fog within the passes - would screw up the rendering effect. - - The approach is to read back the depth buffer, then do an in-place draw - pixels of the depth buffer values back into the frame buffer as alpha. - OpenGL's standard pixel path is used to "blend in" fog. The Red, Green, - and Blue components are forced to the fog color; alpha is either scaled & - biased (for GL_LINEAR style fog) or remapped with OpenGL's "map color" - capability (for GL_EXP or GL_EXP style fog). The result is blended with - the current frame buffer contents. The result is almost identical to - OpenGL's fog. - - With this fogging technique, the fog pass time is always proportional to - the number of pixels in the window. This is in contrast to fogging the - entire scene standard OpenGL fog during rendering. With standard OpenGL - fog rendering, a scene with a depth complexity greater than 1 may end up - fogging many more pixels than are visible. If fog is not supported for - free in hardware and you are rendering a scene with high enough depth - complexity, this fogging technique could be faster than standard OpenGL - fog. - - As mentioned earlier, the technique may also be appropriate in multi-pass - rendering algorithms to avoid fog improperly interferring with the various - passes. Examples: reflections or shadows. - - A more sophisticated version of this technique could be used to simulate - "eye distance" attenuated fog instead of OpenGL's "depth" attenuated fog. - The technique could perform the depth to alpha read/write in tiles with a - pixel map set up to attenuate based on eye distance instead of simply - depth. - - This approach could be made more efficient with an extension to - glCopyPixels to support a copy of one frame buffer type to another - (specifically, depth to alpha). - - One side-effect of this approach is that it trashes your destination - alpha buffer (if you even have one). */ - -/** Using the "addfog" routines: - - 1) Given your near and far ranges (generally from glOrtho, glFrustum, or - gluPerspective), call: - - afEyeNearFar(near, far); - - Careful since "near" and "far" are reserved words on PC compilers. - - 2) Instead calling glFog to set fog parameters, use the corresponding - "addfog" routines as shown below: - - Instead of: - - glFogf(GL_FOG_START, start); glFogf(GL_FOG_END, end); - - Use: - - afFogStartEnd(start, end); - - Instead of: - - glFogi(GL_FOG_MODE, mode); - - Use: - - afFogMode(mode); - - Instead of: - - glFogf(GL_FOG_DENSITY, density); - - Use: - - afFogDensity(density); - - Instead of: - - GLfloat fogcolor[4] = { red, green, blue, alpha }; - glFogfv(GL_FOG_COLOR, fog_color); - - Use: - - afFogColor(red, green, blue); - - 3) Draw you scene *without* OpenGL fog enabled. - - 4) Assuming you want to fog the entire window of size width by - height, call: - - afDoFinalFogPass(0, 0, width, height); - - Note: x & y are OpenGL-style lower-left hand window coordinates. - - 5) Call glFinish or do a buffer swap. - - That's it. View your fogged scene. */ - -#ifdef __sgi /* SGI has a good alloca; many other machines don't. */ -#define HAS_ALLOCA -#endif - -#include -#ifdef HAS_ALLOCA -#include -#endif -#ifdef _WIN32 -#include -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#endif -#include -#include - -static GLfloat eye_near = 0.0, eye_far = 1.0; -static GLfloat fog_start = 0.0, fog_end = 1.0; -static GLenum fog_mode = GL_EXP; -static GLfloat fog_density = 1.0; -static int valid = 0; -static GLfloat fog_red, fog_green, fog_blue; - -void -afEyeNearFar(GLfloat fnear, GLfloat ffar) -{ - eye_near = fnear; - eye_far = ffar; - valid = 0; -} - -void -afFogStartEnd(GLfloat start, GLfloat end) -{ - fog_start = start; - fog_end = end; - valid = 0; -} - -void -afFogMode(GLenum mode) -{ - fog_mode = mode; - valid = 0; -} - -void -afFogDensity(GLfloat density) -{ - fog_density = density; - valid = 0; -} - -void -afFogColor(GLfloat red, GLfloat green, GLfloat blue) -{ - fog_red = red; - fog_green = green; - fog_blue = blue; -} - -#define LEN 256 - -void -afDoFinalFogPass(GLint x, GLint y, GLsizei width, GLsizei height) -{ - static GLfloat alpha_scale, alpha_bias; - static GLfloat fog_map[LEN]; - int i; - -#ifdef HAS_ALLOCA - void *buffer = alloca((unsigned int) sizeof(GLushort) * width * height); -#else - static void *buffer = NULL; - static int last_width, last_height; - - if (width * height != last_width * last_height) { - buffer = realloc(buffer, sizeof(GLushort) * width * height); - last_width = width; - last_height = height; - } -#endif - - if (!valid) { - switch (fog_mode) { - case GL_LINEAR: - /* Figure out linear fog blending from "f = (e-z)/(e-s)". */ - alpha_scale = (eye_far - eye_near) / (fog_end - fog_start); - alpha_bias = (eye_near - fog_start) / (fog_end - fog_start); - break; - case GL_EXP: - /* Setup fog_map to be "f = exp(-d*z)". */ - for (i = 0; i < LEN; i += 1) { - float fi, z, dz; - - fi = i * 1.0 / (LEN - 1); - z = eye_near + fi * (eye_far - eye_near); - dz = fog_density * z; - fog_map[i] = 1.0 - exp(-dz); - } - break; - case GL_EXP2: - /* Setup fog_map to be "f = exp(-(d*z)^2)". */ - for (i = 0; i < LEN; i += 1) { - float fi, z, dz; - - fi = i * 1.0 / (LEN - 1); - z = eye_near + fi * (eye_far - eye_near); - dz = fog_density * z; - fog_map[i] = 1.0 - exp(-dz * dz); - } - break; - default:; - /* Mesa makes GLenum an actual enumerant. Have a default - case to avoid all the gcc warnings from all the other - GLenum values that we are not handling. */ - } - } - - /* XXX Careful, afDoFinalFogPass makes no attempt to preserve your - pixel store state and assumes the initial pixel store state! */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - /* Preserve the current raster position, viewport, matrix mode, - blend function, enable state, and pixel path state. */ - /* XXX This is pretty expensive. A real application should just - "know" to reload all the OpenGL state mucked with by afDoFinalFogPass - and then you could get rid of all this glPushAttrib and glPopMatrix - garbage. */ - glPushAttrib(GL_PIXEL_MODE_BIT | GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT | - GL_TRANSFORM_BIT | GL_VIEWPORT_BIT | GL_CURRENT_BIT); - - /* Reposition the current raster position as location (x,y). */ - glMatrixMode(GL_MODELVIEW); - glViewport(x-1, y-1, 2, 2); - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glRasterPos2i(0, 0); - - /* Definitely don't want fog or depth enabled. */ - glDisable(GL_FOG); - glDisable(GL_DEPTH_TEST); - - /* The alpha on the glDrawPixels after the pixel path transformation - will be "1 - f" where f is the blending factor described in Section - 3.9 of the OpenGL 1.1 specification. */ - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - - switch (fog_mode) { - case GL_LINEAR: - /* Force red, green, and blue to the fog color. */ - glPixelTransferf(GL_RED_SCALE, 0); - glPixelTransferf(GL_GREEN_SCALE, 0); - glPixelTransferf(GL_BLUE_SCALE, 0); - glPixelTransferf(GL_RED_BIAS, fog_red); - glPixelTransferf(GL_GREEN_BIAS, fog_green); - glPixelTransferf(GL_BLUE_BIAS, fog_blue); - - glPixelTransferf(GL_ALPHA_SCALE, alpha_scale); - glPixelTransferf(GL_ALPHA_BIAS, alpha_bias); - break; - case GL_EXP: - case GL_EXP2: - /* Force red, green, and blue to the fog color. */ - glPixelMapfv(GL_PIXEL_MAP_R_TO_R, 1, &fog_red); - glPixelMapfv(GL_PIXEL_MAP_G_TO_G, 1, &fog_green); - glPixelMapfv(GL_PIXEL_MAP_B_TO_B, 1, &fog_blue); - - glPixelMapfv(GL_PIXEL_MAP_A_TO_A, LEN, fog_map); - glPixelTransferi(GL_MAP_COLOR, GL_TRUE); - break; - } - - /* Read out the depth buffer... */ - glReadPixels(x, y, width, height, - GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, buffer); - - /* ... and write it back as alpha. */ - glDrawPixels(width, height, GL_ALPHA, - GL_UNSIGNED_SHORT, buffer); - - /* Restore state saved earlier. */ - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopAttrib(); -} diff --git a/lib/glut-3.7.6/progs/advanced/addfog.h b/lib/glut-3.7.6/progs/advanced/addfog.h deleted file mode 100644 index c200bb9362e873c7de24a963ebd173ab16b637f7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/addfog.h +++ /dev/null @@ -1,8 +0,0 @@ - -extern void afEyeNearFar(GLfloat fnear, GLfloat ffar); -extern void afFogStartEnd(GLfloat start, GLfloat end); -extern void afFogMode(GLenum mode); -extern void afFogDensity(GLfloat density); -extern void afFogColor(GLfloat red, GLfloat green, GLfloat blue); -extern void afDoFinalFogPass(GLint x, GLint y, GLsizei width, GLsizei height); - diff --git a/lib/glut-3.7.6/progs/advanced/af_depthcue.c b/lib/glut-3.7.6/progs/advanced/af_depthcue.c deleted file mode 100644 index e5f52bb399a4815b3958eac3e263271e742efef5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/af_depthcue.c +++ /dev/null @@ -1,163 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* A version of the OpenGL Programming Guide's depthcue.c that - uses the "addfog" routines to add depth cueing as a post-rendering - pass. This is not a rather poor application for "addfog" but it - does demonstrate how it use "addfog". See "addfog.c" for details. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * depthcue.c - * This program draws a wireframe model, which uses - * intensity (brightness) to give clues to distance. - * Fog is used to achieve this effect. - */ -#include -#include -#include "addfog.h" - -/* Initialize linear fog for depth cueing. - */ -void myinit(void) -{ - GLfloat fogColor[4] = {0.0, 0.0, 0.0, 1.0}; - - glFogi (GL_FOG_MODE, GL_LINEAR); - glHint (GL_FOG_HINT, GL_NICEST); /* per pixel */ - glFogf (GL_FOG_START, 3.0); - glFogf (GL_FOG_END, 5.0); - glFogfv (GL_FOG_COLOR, fogColor); - glClearColor(0.0, 0.0, 0.0, 1.0); - - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_FLAT); - - afEyeNearFar(3.0, 5.0); - afFogStartEnd(3.0, 5.0); - afFogMode(GL_LINEAR); - afFogColor(0.0, 0.0, 0.0); -} - -int width, height; -int twopass = 1; - -/* display() draws an icosahedron. - */ -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (!twopass) { - glEnable(GL_FOG); - } else { - glDisable(GL_FOG); - } - - glColor3f (1.0, 1.0, 1.0); - glutWireIcosahedron(); - - if (twopass) { - afDoFinalFogPass(0, 0, width, height); - } - - glutSwapBuffers(); -} - -void myReshape(int w, int h) -{ - width = w; - height = h; - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective (45.0, (GLfloat) w/(GLfloat) h, 3.0, 5.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity (); - glTranslatef (0.0, 0.0, -4.0); /* move object into view */ -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - switch(c) { - case 'T': - case 't': - twopass = 1 - twopass; - case ' ': - glutPostRedisplay(); - break; - } -} - -void -menu(int value) -{ - switch(value) { - case 1: - twopass = 0; - break; - case 2: - twopass = 1; - break; - } - glutPostRedisplay(); -} - -/* Main Loop - */ -int main(int argc, char** argv) -{ - glutInitWindowSize(380, 380); - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("depthcuing by post-rendering pass"); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - glutCreateMenu(menu); - glutAddMenuEntry("GL_LINEAR depthcueing", 1); - glutAddMenuEntry("\"add fog\" post-render depthcueing", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/advanced/af_depthcue.dsp b/lib/glut-3.7.6/progs/advanced/af_depthcue.dsp deleted file mode 100644 index 4f74aaf559a67b7205142221501dd78497b56328..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/af_depthcue.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="af_depthcue" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=af_depthcue - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "af_depthcue.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "af_depthcue.mak" CFG="af_depthcue - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "af_depthcue - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "af_depthcue - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "af_depthcue - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "af_depthcue - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "af_depthcue - Win32 Release" -# Name "af_depthcue - Win32 Debug" -# Begin Source File - -SOURCE=.\addfog.c -# End Source File -# Begin Source File - -SOURCE=.\addfog.h -# End Source File -# Begin Source File - -SOURCE=.\af_depthcue.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/af_teapots.c b/lib/glut-3.7.6/progs/advanced/af_teapots.c deleted file mode 100644 index 63cab20abde7e193a544f81b5918bbec01f1ffe9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/af_teapots.c +++ /dev/null @@ -1,222 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -/** - * fog.c - * This program draws 5 red teapots, each at a different - * z distance from the eye, in different types of fog. - * Pressing the left mouse button chooses between 3 types of - * fog: exponential, exponential squared, and linear. - * In this program, there is a fixed density value, as well - * as fixed start and end values for the linear fog. - */ - -#include -#include -#include - -#include "addfog.h" - -GLint fogMode; - -#define TPF_LINEAR 1 -#define TPF_EXP 2 -#define TPF_EXP2 3 - -int addfog = 0; - -void -selectFog(int mode) -{ - switch (mode) { - case GL_LINEAR: - glFogf(GL_FOG_START, 1.0); - glFogf(GL_FOG_END, 5.0); - /* falls through */ - case GL_EXP2: - case GL_EXP: - glFogi(GL_FOG_MODE, mode); - glEnable(GL_FOG); - addfog = 0; - glutPostRedisplay(); - break; - case TPF_LINEAR: - afFogStartEnd(0.0, 10.0); - afFogMode(GL_LINEAR); - glDisable(GL_FOG); - addfog = 1; - glutPostRedisplay(); - break; - case TPF_EXP: - afFogMode(GL_EXP); - glDisable(GL_FOG); - addfog = 1; - glutPostRedisplay(); - break; - case TPF_EXP2: - afFogMode(GL_EXP2); - glDisable(GL_FOG); - addfog = 1; - glutPostRedisplay(); - break; - case 0: - exit(0); - } -} - -/* Initialize z-buffer, projection matrix, light source, * and lighting - model. Do not specify a material property here. */ -void -myinit(void) -{ - GLfloat position[] = - {0.0, 3.0, 3.0, 0.0}; - GLfloat local_view[] = - {0.0}; - GLfloat fogColor[4] = - {0.5, 0.5, 0.5, 1.0}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_FOG); - glDepthFunc(GL_LESS); - - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); - - glFrontFace(GL_CW); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - - fogMode = GL_EXP; - glFogi(GL_FOG_MODE, fogMode); - glFogfv(GL_FOG_COLOR, fogColor); - afFogColor(0.5, 0.5, 0.5); - glFogf(GL_FOG_DENSITY, 0.35); - afFogDensity(0.35); - glHint(GL_FOG_HINT, GL_DONT_CARE); - glClearColor(0.5, 0.5, 0.5, 1.0); -} - -void -renderRedTeapot(GLfloat x, GLfloat y, GLfloat z) -{ - float mat[4]; - - glPushMatrix(); - glTranslatef(x, y, z); - mat[0] = 0.1745; - mat[1] = 0.01175; - mat[2] = 0.01175; - mat[3] = 1.0; - glMaterialfv(GL_FRONT, GL_AMBIENT, mat); - mat[0] = 0.61424; - mat[1] = 0.04136; - mat[2] = 0.04136; - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat); - mat[0] = 0.727811; - mat[1] = 0.626959; - mat[2] = 0.626959; - glMaterialfv(GL_FRONT, GL_SPECULAR, mat); - glMaterialf(GL_FRONT, GL_SHININESS, 0.6 * 128.0); - glutSolidTeapot(1.0); - glPopMatrix(); -} - -int width, height; - - /* display() draws 5 teapots at different z positions. */ -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - renderRedTeapot(-4.0, -0.5, -1.0); - renderRedTeapot(-2.0, -0.5, -2.0); - renderRedTeapot(0.0, -0.5, -3.0); - renderRedTeapot(2.0, -0.5, -4.0); - renderRedTeapot(4.0, -0.5, -5.0); - if (addfog) { - afDoFinalFogPass(0, 0, width, height); - } - glFlush(); -} - -void -myReshape(int w, int h) -{ - width = w; - height = h; - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= (h * 3)) - glOrtho(-6.0, 6.0, -2.0 * ((GLfloat) h * 3) / (GLfloat) w, - 2.0 * ((GLfloat) h * 3) / (GLfloat) w, 0.0, 10.0); - else - glOrtho(-6.0 * (GLfloat) w / ((GLfloat) h * 3), - 6.0 * (GLfloat) w / ((GLfloat) h * 3), -2.0, 2.0, 0.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - afEyeNearFar(0.0, 10.0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(450, 150); - glutCreateWindow("fogged teapots via post-rendering pass"); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutCreateMenu(selectFog); - glutAddMenuEntry("Fog EXP", GL_EXP); - glutAddMenuEntry("Fog EXP2", GL_EXP2); - glutAddMenuEntry("Fog LINEAR", GL_LINEAR); - glutAddMenuEntry("Two Pass Fog EXP", TPF_EXP); - glutAddMenuEntry("Two Pass Fog EXP2", TPF_EXP2); - glutAddMenuEntry("Two Pass Fog LINEAR", TPF_LINEAR); - glutAddMenuEntry("Quit", 0); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/af_teapots.dsp b/lib/glut-3.7.6/progs/advanced/af_teapots.dsp deleted file mode 100644 index d9007592f3acd6c208c5c0bf080c44ce16bef816..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/af_teapots.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="af_teapots" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=af_teapots - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "af_teapots.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "af_teapots.mak" CFG="af_teapots - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "af_teapots - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "af_teapots - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "af_teapots - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "af_teapots - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "af_teapots - Win32 Release" -# Name "af_teapots - Win32 Debug" -# Begin Source File - -SOURCE=.\addfog.c -# End Source File -# Begin Source File - -SOURCE=.\af_teapots.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/boundary.c b/lib/glut-3.7.6/progs/advanced/boundary.c deleted file mode 100644 index b93a4c863431c1623de76c33bff09b0d452cd8ae..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/boundary.c +++ /dev/null @@ -1,349 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* This example shows how to use the GLU polygon tessellator to determine the - - 2D boundary of OpenGL rendered objects. The program uses OpenGL's - feedback mechanim to capture transformed polygons and then feeds them to - the GLU tesselator in GLU_TESS_WINDING_NONZERO and GLU_TESS_BOUNDARY_ONLY - mode. */ - -#include -#include -#include -#include - -#ifdef GLU_VERSION_1_2 - -#ifndef CALLBACK -#define CALLBACK -#endif - -enum { - M_TORUS, M_CUBE, M_SPHERE, M_ICO, M_TEAPOT, M_ANGLE, M_BOUNDARY -}; - -struct VertexHolder { - struct VertexHolder *next; - GLfloat v[2]; -}; - -int shape = M_TORUS; -int boundary = 1; -GLfloat angle = 0.0; - -GLfloat lightDiffuse[] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat lightPosition[] = -{1.0, 1.0, 1.0, 0.0}; - -GLUtesselator *tess; -int width, height; - -static void CALLBACK -begin(GLenum type) -{ - assert(type == GL_LINE_LOOP); - glBegin(type); -} - -static void CALLBACK -vertex(void *data) -{ - GLfloat *v = data; - glVertex2fv(v); -} - -static void CALLBACK -end(void) -{ - glEnd(); -} - -static GLfloat *combineList = NULL; -static int combineListSize = 0; -static int combineNext = 0; -static struct VertexHolder *excessList = NULL; - -static void -freeExcessList(void) -{ - struct VertexHolder *holder, *next; - - holder = excessList; - while (holder) { - next = holder->next; - free(holder); - holder = next; - } - excessList = NULL; -} - -/* ARGSUSED1 */ -static void CALLBACK -combine(GLdouble coords[3], void *d[4], GLfloat w[4], void **dataOut) -{ - GLfloat *newCoords; - struct VertexHolder *holder; - - /* XXX Careful, some systems still don't understand realloc of NULL. */ - if (combineNext >= combineListSize) { - holder = (struct VertexHolder *) malloc(sizeof(struct VertexHolder)); - holder->next = excessList; - excessList = holder; - newCoords = holder->v; - } else { - newCoords = &combineList[combineNext * 2]; - } - - newCoords[0] = coords[0]; - newCoords[1] = coords[1]; - *dataOut = newCoords; - - combineNext++; -} - -static void CALLBACK -error(GLenum errno) -{ - printf("ERROR: %s\n", gluErrorString(errno)); -} - -void -reshape(int w, int h) -{ - width = w; - height = h; - glViewport(0, 0, width, height); -} - -void -processFeedback(GLint size, GLfloat * buffer) -{ - GLfloat *loc, *end; - GLdouble v[3]; - int token, nvertices, i; - - if (combineNext > combineListSize) { - freeExcessList(); - combineListSize = combineNext; - combineList = realloc(combineList, sizeof(GLfloat) * 2 * combineListSize); - } - combineNext = 0; - - gluTessBeginPolygon(tess, NULL); - loc = buffer; - end = buffer + size; - while (loc < end) { - token = *loc; - loc++; - switch (token) { - case GL_POLYGON_TOKEN: - nvertices = *loc; - loc++; - assert(nvertices >= 3); - gluTessBeginContour(tess); - for (i = 0; i < nvertices; i++) { - v[0] = loc[0]; - v[1] = loc[1]; - v[2] = 0.0; - gluTessVertex(tess, v, loc); - loc += 2; - } - gluTessEndContour(tess); - break; - default: - /* Ignore everything but polygons. */ - ; - } - } - gluTessEndPolygon(tess); -} - -int -determineBoundary(void (*renderFunc) (void), int probableSize) -{ - static GLfloat *feedbackBuffer = NULL; - static int bufferSize = 0; - GLint returned; - - if (bufferSize > probableSize) { - probableSize = bufferSize; - } -doFeedback: - - /* XXX Careful, some systems still don't understand realloc of NULL. */ - if (bufferSize < probableSize) { - bufferSize = probableSize; - feedbackBuffer = realloc(feedbackBuffer, bufferSize * sizeof(GLfloat)); - } - glFeedbackBuffer(bufferSize, GL_2D, feedbackBuffer); - - (void) glRenderMode(GL_FEEDBACK); - - (*renderFunc) (); - - returned = glRenderMode(GL_RENDER); -#if 0 - if (returned == -1) { -#else - /* XXX RealityEngine workaround. */ - if (returned == -1 || returned == probableSize) { -#endif - probableSize = probableSize + (probableSize >> 1); - goto doFeedback; /* Try again with larger feedback buffer. */ - } - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, width, 0, height); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - processFeedback(returned, feedbackBuffer); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - - return returned; -} - -void -render(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective( /* field of view in degree */ 30.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0.0, 0.0, 10.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - - glPushMatrix(); - glRotatef(angle, 1.0, 0.3, 0.0); - switch (shape) { - case M_TORUS: - glutSolidTorus(0.275, 0.85, 8, 8); - break; - case M_CUBE: - glutSolidCube(1.0); - break; - case M_SPHERE: - glutSolidSphere(1.0, 10, 10); - break; - case M_ICO: - glutSolidIcosahedron(); - break; - case M_TEAPOT: - glutSolidTeapot(1.0); - break; - } - glPopMatrix(); -} - -void -display(void) -{ - if (boundary) { - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - determineBoundary(render, 250); - } else { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_LIGHTING); - glEnable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - render(); - } - glutSwapBuffers(); -} - -void -menu(int value) -{ - switch (value) { - case M_TORUS: - case M_CUBE: - case M_SPHERE: - case M_ICO: - case M_TEAPOT: - shape = value; - break; - case M_ANGLE: - angle += 10.0; - break; - case M_BOUNDARY: - boundary = !boundary; /* Toggle. */ - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_UP: - angle += 10.0; - glutPostRedisplay(); - break; - case GLUT_KEY_DOWN: - angle -= 10.0; - glutPostRedisplay(); - break; - } -} - -int -main(int argc, char **argv) -{ - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutInit(&argc, argv); - - glutCreateWindow("boundary"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutSpecialFunc(special); - - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuse); - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - glEnable(GL_LIGHT0); - - tess = gluNewTess(); - gluTessProperty(tess, GLU_TESS_BOUNDARY_ONLY, GL_TRUE); - gluTessProperty(tess, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO); - gluTessCallback(tess, GLU_TESS_BEGIN, (void (CALLBACK*)())begin); - gluTessCallback(tess, GLU_TESS_VERTEX, (void (CALLBACK*)())vertex); - gluTessCallback(tess, GLU_TESS_END, (void (CALLBACK*)())end); - gluTessCallback(tess, GLU_TESS_ERROR, (void (CALLBACK*)())error); - gluTessCallback(tess, GLU_TESS_COMBINE, (void (CALLBACK*)())combine); - - glutCreateMenu(menu); - glutAddMenuEntry("Torus", M_TORUS); - glutAddMenuEntry("Cube", M_CUBE); - glutAddMenuEntry("Sphere", M_SPHERE); - glutAddMenuEntry("Icosahedron", M_ICO); - glutAddMenuEntry("Teapot", M_TEAPOT); - glutAddMenuEntry("Angle", M_ANGLE); - glutAddMenuEntry("Toggle boundary", M_BOUNDARY); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -#else -int main(int argc, char** argv) -{ - fprintf(stderr, "This program demonstrates the new tesselator API in GLU 1.2.\n"); - fprintf(stderr, "Your GLU library does not support this new interface, sorry.\n"); - return 0; -} -#endif /* GLU_VERSION_1_2 */ diff --git a/lib/glut-3.7.6/progs/advanced/boundary.dsp b/lib/glut-3.7.6/progs/advanced/boundary.dsp deleted file mode 100644 index 33a02b7e851fbf3c0d781f5f34534dbdc97cb9a9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/boundary.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="boundary" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=boundary - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "boundary.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "boundary.mak" CFG="boundary - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "boundary - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "boundary - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "boundary - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "boundary - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "boundary - Win32 Release" -# Name "boundary - Win32 Debug" -# Begin Source File - -SOURCE=.\boundary.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/comp.c b/lib/glut-3.7.6/progs/advanced/comp.c deleted file mode 100644 index e3b0a032e648ddb02892c24855b223cf03a0dbbd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/comp.c +++ /dev/null @@ -1,182 +0,0 @@ - -/* comp.c - by David Blythe, SGI */ - -/* Porter/Duff compositing operations using OpenGL alpha blending. */ - -/* NOTE: This program uses OpenGL blending functions that need the frame - buffer to retain a destination alpha component. Examples of such - hardware: O2, IMPACT, RealityEngine, and InfiniteReality. */ - -#include -#include -#include -#include -#include "texture.h" - -static int w = 640, h = 640; - -void -myReshape(int nw, int nh) -{ - w = nw, h = nh; - glClearColor(0, 0, 0, 0); - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -static unsigned *a_data = 0, *b_data = 0; -static int a_width, a_height, b_width, b_height; - -void -init_tris(void) -{ - if (a_data) - free(a_data); - if (b_data) - free(b_data); - a_data = (unsigned *) malloc(w * h); - b_data = (unsigned *) malloc(w * h); - glViewport(0, 0, w / 2, h / 2); - glClear(GL_COLOR_BUFFER_BIT); - glColor4f(1, 0, 0, 1); - glBegin(GL_TRIANGLES); - glVertex2f(-1, -1); - glVertex2f(-1, 1); - glVertex2f(.5, 1); - glEnd(); - glReadPixels(0, 0, w / 2, h / 2, GL_RGBA, GL_UNSIGNED_BYTE, a_data); - - glClear(GL_COLOR_BUFFER_BIT); - glColor4f(0, 1, 0, 1); - glBegin(GL_TRIANGLES); - glVertex2f(1, -1); - glVertex2f(1, 1); - glVertex2f(-.5, 1); - glEnd(); - glReadPixels(0, 0, w / 2, h / 2, GL_RGBA, GL_UNSIGNED_BYTE, b_data); - - a_width = b_width = w / 2, a_height = b_height = h / 2; -} - -void -init_images(void) -{ - int comp; - - a_data = read_texture("a.rgb", &a_width, &a_height, &comp); - printf("%dx%dx%d\n", a_width, a_height, comp); - b_data = read_texture("b.rgb", &b_width, &b_height, &comp); - printf("%dx%dx%d\n", b_width, b_height, comp); -} - -void -display(void) -{ - int i; - - glDrawBuffer(GL_FRONT_AND_BACK); - glClear(GL_COLOR_BUFFER_BIT); - glDrawBuffer(GL_BACK); - - glBlendFunc(GL_SRC_ALPHA, GL_ZERO); - /* image A */ - glViewport(0, 0, w / 2, h / 2); - glRasterPos2f(-1, -1); - glDrawPixels(a_width, a_height, GL_RGBA, GL_UNSIGNED_BYTE, - a_data); - glEnable(GL_BLEND); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); - glCopyPixels(0, 0, w / 2, h / 2, GL_COLOR); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glDisable(GL_BLEND); - - /* image B */ - glViewport(w / 2, 0, w / 2, h / 2); - glRasterPos2f(-1, -1); - glDrawPixels(b_width, b_height, GL_RGBA, GL_UNSIGNED_BYTE, - b_data); - glEnable(GL_BLEND); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); - glCopyPixels(w / 2, 0, w / 2, h / 2, GL_COLOR); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glReadBuffer(GL_BACK); - glDrawBuffer(GL_FRONT); - - for (i = 0; i < 4; i++) { - glDisable(GL_BLEND); - switch (i) { - case 0: /* a over b */ - glViewport(0, 0, w / 2, h / 2); - glRasterPos2f(-1, -1); - glCopyPixels(0, 0, w / 2, h / 2, GL_COLOR); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE); - glCopyPixels(w / 2, 0, w / 2, h / 2, GL_COLOR); - break; - case 1: /* a under b */ - glViewport(w / 2, 0, w / 2, h / 2); - glRasterPos2f(-1, -1); - glCopyPixels(0, 0, w / 2, h / 2, GL_COLOR); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - glCopyPixels(w / 2, 0, w / 2, h / 2, GL_COLOR); - break; - case 2: /* b in a */ - glViewport(0, h / 2, w / 2, h / 2); - glRasterPos2f(-1, -1); - glCopyPixels(0, 0, w / 2, h / 2, GL_COLOR); - glEnable(GL_BLEND); - glBlendFunc(GL_DST_ALPHA, GL_ZERO); - glCopyPixels(w / 2, 0, w / 2, h / 2, GL_COLOR); - break; - case 3: /* b out of a */ - glViewport(w / 2, h / 2, w / 2, h / 2); - glRasterPos2f(-1, -1); - glCopyPixels(0, 0, w / 2, h / 2, GL_COLOR); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ZERO); - glCopyPixels(w / 2, 0, w / 2, h / 2, GL_COLOR); - break; - } - } - glViewport(0, 0, w, h); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE); - glColor4f(1., 1., 1., 0.); - glRectf(-1, -1, 1, 1); - glFlush(); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - if (key == '\033') - exit(0); -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(w, h); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA); - if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) { - printf("comp: requires a frame buffer with destination alpha\n"); - exit(1); - } - glutCreateWindow("comp"); - - if (argc > 1) - init_images(); - else - init_tris(); - glutDisplayFunc(display); - glutReshapeFunc(myReshape); - glutKeyboardFunc(key); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/comp.dsp b/lib/glut-3.7.6/progs/advanced/comp.dsp deleted file mode 100644 index 672d3e622634ed0c83536c4eb6bb2c35498cb69c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/comp.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="comp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=comp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "comp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "comp.mak" CFG="comp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "comp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "comp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "comp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "comp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "comp - Win32 Release" -# Name "comp - Win32 Debug" -# Begin Source File - -SOURCE=.\comp.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/convolve.c b/lib/glut-3.7.6/progs/advanced/convolve.c deleted file mode 100644 index 3867d94ed720f2e26ac1752648309808aa40fdba..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/convolve.c +++ /dev/null @@ -1,397 +0,0 @@ - -/* convolve.c - by Tom McReynolds, SGI */ - -/* Using the accumulation buffer for fast convolutions. */ - -#include -#include -#include -#include - -/* convolution choices */ -enum {CONV_NONE, - CONV_BOX_3X3, - CONV_BOX_5X5, - CONV_SOBEL_X, - CONV_LAPLACE -}; - -/* Filter contents and size */ -typedef struct { - GLfloat scale; /* 1/scale applied to image to prevent overflow */ - GLfloat bias; /* for biasing images */ - int rows; - int cols; - GLfloat *array; -} Filter; - -Filter *curmat; /* current filter to use for redrawing */ - -/* identity filter */ -void -identity(Filter *mat) -{ - int n, size; - size = mat->rows * mat->cols; - - mat->array[0] = 1.f; - for(n = 1; n < size; n++) - mat->array[n] = 0.f; - - mat->scale = 1.f; - mat->bias = 0.f; -} - - -/* create a new filter with identity filter in it */ -Filter * -newfilter(int rows, int cols) -{ - Filter *mat; - - mat = (Filter *)malloc(sizeof(Filter)); - mat->rows = rows; - mat->cols = cols; - mat->array = (GLfloat *)malloc(rows * cols * sizeof(GLfloat)); - identity(mat); - - return mat; -} - - -/* doesn't re-initialize matrix */ -void -resize(Filter *mat, int rows, int cols) -{ - if(mat->rows != rows || - mat->cols != cols) { - free(mat->array); - mat->array = NULL; - mat->array = (GLfloat *)realloc(mat->array, rows * cols * sizeof(GLfloat)); - } - mat->rows = rows; - mat->cols = cols; -} - - -/* box filter blur */ -void -box(Filter *mat) -{ - int n, count; - GLfloat blur; - - count = mat->cols * mat->rows; - blur = 1.f/count; - for(n = 0; n < count; n++) - mat->array[n] = blur; - - mat->scale = 1.f; - mat->bias = 0.f; -} - -/* sobel filter */ - -void -sobel(Filter *mat) -{ - static GLfloat sobel[] = {-.5f, 0.f, .5f, - -1.f, 0.f, 1.f, - -.5f, 0.f, .5f}; - - /* sobel is fixed size */ - resize(mat, 3, 3); /* will do nothing if size is right already */ - - memcpy(mat->array, sobel, sizeof(sobel)); - - mat->scale = 2.f; - mat->bias = 0.f; -} - -/* laplacian filter */ -void -laplace(Filter *mat) -{ - static GLfloat laplace[] = { 0.f, -.25f, 0.f, - -.25f, 1.f, -.25f, - 0.f, -.25f, 0.f}; - - /* sobel is fixed size */ - resize(mat, 3, 3); /* will do nothing if size is right already */ - - memcpy(mat->array, laplace, sizeof(laplace)); - - mat->scale = 4.f; - mat->bias = .125f; -} - -/* add menu callback */ - -void menu(int filter) -{ - switch(filter) { - case CONV_NONE: - resize(curmat, 1,1); - identity(curmat); - break; - case CONV_BOX_3X3: - resize(curmat, 3, 3); - box(curmat); - break; - case CONV_BOX_5X5: - resize(curmat, 5, 5); - box(curmat); - break; - case CONV_SOBEL_X: - sobel(curmat); - break; - case CONV_LAPLACE: - laplace(curmat); - break; - } - glutPostRedisplay(); -} - -int winWidth = 0; -int winHeight = 0; - -/* used to get current width and height of viewport */ -void -reshape(int wid, int ht) -{ - glViewport(0, 0, wid, ht); - winWidth = wid; - winHeight = ht; -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if(key == '\033') - exit(0); -} - - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum {SPHERE = 1, CONE}; - -void -render(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); - - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - - glPushMatrix(); - glTranslatef(-80.f, -60.f, -420.f); - glCallList(SPHERE); - glPopMatrix(); - - - glPushMatrix(); - glTranslatef(-20.f, -80.f, -500.f); - glCallList(CONE); - glPopMatrix(); - -} - - - -void -convolve(void (*draw)(void), Filter *mat) -{ - int i, j; - int imax, jmax; - - imax = mat->cols; - jmax = mat->rows; - for(j = 0; j < jmax; j++) { - for(i = 0; i < imax; i++) { - glViewport(-i, -j, winWidth - i, winHeight - j); - draw(); - glAccum(GL_ACCUM, mat->array[i + j * imax]); - } - } -} - - -/* Called when window needs to be redrawn */ -void redraw(void) -{ - glClearAccum(curmat->bias, - curmat->bias, - curmat->bias, - 1.0); - - glClear(GL_ACCUM_BUFFER_BIT); - - convolve(render, curmat); - - glViewport(0, 0, winWidth, winHeight); - - glAccum(GL_RETURN, curmat->scale); - - glutSwapBuffers(); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); -} - - -const int TEXDIM = 256; - -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_ACCUM|GLUT_DOUBLE); - (void)glutCreateWindow("accumulation buffer convolve"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-100., 100., -100., 100., 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - /* make display lists for sphere and cone; for efficiency */ - - glNewList(SPHERE, GL_COMPILE); - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glutCreateMenu(menu); - glutAddMenuEntry("none", CONV_NONE); - glutAddMenuEntry("box filter (3x3 blur)", CONV_BOX_3X3); - glutAddMenuEntry("box filter (5x5 blur)", CONV_BOX_5X5); - glutAddMenuEntry("Sobel(x direction)", CONV_SOBEL_X); - glutAddMenuEntry("Laplace", CONV_LAPLACE); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - curmat = newfilter(1, 1); - identity(curmat); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/convolve.dsp b/lib/glut-3.7.6/progs/advanced/convolve.dsp deleted file mode 100644 index 14356a39035f87430adbc2044899c212d61447af..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/convolve.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="convolve" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=convolve - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "convolve.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "convolve.mak" CFG="convolve - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "convolve - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "convolve - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "convolve - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "convolve - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "convolve - Win32 Release" -# Name "convolve - Win32 Debug" -# Begin Source File - -SOURCE=.\convolve.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/csg.c b/lib/glut-3.7.6/progs/advanced/csg.c deleted file mode 100644 index c72c0a0ad12ce998507ffcc44b3690186de1cc0e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/csg.c +++ /dev/null @@ -1,343 +0,0 @@ - -/* csg.c - by Tom McReynolds, SGI */ - -/* Doing constructive solid geometry (CSG) with stencil. */ - -#include -#include -#include - -enum { - CSG_A, CSG_B, CSG_A_OR_B, CSG_A_AND_B, CSG_A_SUB_B, CSG_B_SUB_A -}; - -/* just draw single object */ -void -one(void (*a) (void)) -{ - glEnable(GL_DEPTH_TEST); - a(); - glDisable(GL_DEPTH_TEST); -} - -/* "or" is easy; simply draw both objects with depth buffering on */ -void -or(void (*a) (void), void (*b) (void)) -{ - glEnable(GL_DEPTH_TEST); - a(); - b(); - glDisable(GL_DEPTH_TEST); -} - -/* Set stencil buffer to show the part of a (front or back face) that's - inside b's volume. Requirements: GL_CULL_FACE enabled, depth func GL_LESS - Side effects: depth test, stencil func, stencil op */ -void -firstInsideSecond(void (*a) (void), void (*b) (void), GLenum face, GLenum test) -{ - glEnable(GL_DEPTH_TEST); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glCullFace(face); /* controls which face of a to use */ - a(); /* draw a face of a into depth buffer */ - - /* use stencil plane to find parts of a in b */ - glDepthMask(GL_FALSE); - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, 0); - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); - glCullFace(GL_BACK); - b(); /* increment the stencil where the front face of b is - drawn */ - glStencilOp(GL_KEEP, GL_KEEP, GL_DECR); - glCullFace(GL_FRONT); - b(); /* decrement the stencil buffer where the back face - of b is drawn */ - glDepthMask(GL_TRUE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - - glStencilFunc(test, 0, 1); - glDisable(GL_DEPTH_TEST); - - glCullFace(face); - a(); /* draw the part of a that's in b */ -} - -void -fixDepth(void (*a) (void)) -{ - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glEnable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glDepthFunc(GL_ALWAYS); - a(); /* draw the front face of a, fixing the depth buffer */ - glDepthFunc(GL_LESS); -} - -/* "and" two objects together */ -void -and(void (*a) (void), void (*b) (void)) -{ - firstInsideSecond(a, b, GL_BACK, GL_NOTEQUAL); - - fixDepth(b); - - firstInsideSecond(b, a, GL_BACK, GL_NOTEQUAL); - - glDisable(GL_STENCIL_TEST); /* reset things */ -} - -/* subtract b from a */ -void -sub(void (*a) (void), void (*b) (void)) -{ - firstInsideSecond(a, b, GL_FRONT, GL_NOTEQUAL); - - fixDepth(b); - - firstInsideSecond(b, a, GL_BACK, GL_EQUAL); - - glDisable(GL_STENCIL_TEST); /* reset things */ -} - -enum { - SPHERE = 1, CONE -}; - -/* Draw a cone */ -GLfloat coneX = 0.f, coneY = 0.f, coneZ = 0.f; -void -cone(void) -{ - glPushMatrix(); - glTranslatef(coneX, coneY, coneZ); - glTranslatef(0.f, 0.f, -30.f); - glCallList(CONE); - glPopMatrix(); -} - -/* Draw a sphere */ -GLfloat sphereX = 0.f, sphereY = 0.f, sphereZ = 0.f; -void -sphere(void) -{ - glPushMatrix(); - glTranslatef(sphereX, sphereY, sphereZ); - glCallList(SPHERE); - glPopMatrix(); - -} - -int csg_op = CSG_A; - -/* add menu callback */ - -void -menu(int csgop) -{ - csg_op = csgop; - glutPostRedisplay(); -} - -GLfloat viewangle; - -void -redraw(void) -{ - /* clear stencil each time */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - glPushMatrix(); - glRotatef(viewangle, 0.f, 1.f, 0.f); - - switch (csg_op) { - case CSG_A: - one(cone); - break; - case CSG_B: - one(sphere); - break; - case CSG_A_OR_B: - or(cone, sphere); - break; - case CSG_A_AND_B: - and(cone, sphere); - break; - case CSG_A_SUB_B: - sub(cone, sphere); - break; - case CSG_B_SUB_A: - sub(sphere, cone); - break; - } - glPopMatrix(); - glutSwapBuffers(); -} - -/* animate scene by rotating */ -enum { - ANIM_LEFT, ANIM_RIGHT -}; -int animDirection = ANIM_LEFT; - -void -anim(void) -{ - if (animDirection == ANIM_LEFT) - viewangle -= 3.f; - else - viewangle += 3.f; - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -/* special keys, like array and F keys */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - glutIdleFunc(anim); - animDirection = ANIM_LEFT; - break; - case GLUT_KEY_RIGHT: - glutIdleFunc(anim); - animDirection = ANIM_RIGHT; - break; - case GLUT_KEY_UP: - case GLUT_KEY_DOWN: - glutIdleFunc(0); - break; - } -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'a': - viewangle -= 10.f; - glutPostRedisplay(); - break; - case 's': - viewangle += 10.f; - glutPostRedisplay(); - break; - case '\033': - exit(0); - } -} - -int picked_object; -int xpos = 0, ypos = 0; -int newxpos, newypos; -int startx, starty; - -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_UP) { - picked_object = button; - xpos += newxpos; - ypos += newypos; - newxpos = 0; - newypos = 0; - } else { /* GLUT_DOWN */ - startx = x; - starty = y; - } -} - -#define DEGTORAD (2 * 3.1415 / 360) -void -motion(int x, int y) -{ - GLfloat r, objx, objy, objz; - - newxpos = x - startx; - newypos = starty - y; - - r = (newxpos + xpos) * 50.f / 512.f; - objx = r * cos(viewangle * DEGTORAD); - objy = (newypos + ypos) * 50.f / 512.f; - objz = r * sin(viewangle * DEGTORAD); - - switch (picked_object) { - case CSG_A: - coneX = objx; - coneY = objy; - coneZ = objz; - break; - case CSG_B: - sphereX = objx; - sphereY = objy; - sphereZ = objz; - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - static GLfloat lightpos[] = - {25.f, 50.f, -50.f, 1.f}; - static GLfloat sphere_mat[] = - {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_STENCIL | GLUT_DEPTH | GLUT_DOUBLE); - (void) glutCreateWindow("csg"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glutCreateMenu(menu); - glutAddMenuEntry("A only", CSG_A); - glutAddMenuEntry("B only", CSG_B); - glutAddMenuEntry("A or B", CSG_A_OR_B); - glutAddMenuEntry("A and B", CSG_A_AND_B); - glutAddMenuEntry("A sub B", CSG_A_SUB_B); - glutAddMenuEntry("B sub A", CSG_B_SUB_A); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - - /* make display lists for sphere and cone; for efficiency */ - - glNewList(SPHERE, GL_COMPILE); - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 64, 64); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(base, GLU_INSIDE); - gluDisk(base, 0., 15., 64, 1); - gluCylinder(cone, 15., 0., 60., 64, 64); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glMatrixMode(GL_PROJECTION); - glOrtho(-50., 50., -50., 50., -50., 50.); - glMatrixMode(GL_MODELVIEW); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/csg.dsp b/lib/glut-3.7.6/progs/advanced/csg.dsp deleted file mode 100644 index 5157a741d7931ad1af9ebc24cffb7f9c7d5a1162..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/csg.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="csg" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=csg - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "csg.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "csg.mak" CFG="csg - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "csg - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "csg - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "csg - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "csg - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "csg - Win32 Release" -# Name "csg - Win32 Debug" -# Begin Source File - -SOURCE=.\csg.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/decal.c b/lib/glut-3.7.6/progs/advanced/decal.c deleted file mode 100644 index 17d27c02f8019b41b792b73758c7ae2bf850f356..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/decal.c +++ /dev/null @@ -1,123 +0,0 @@ - -/* decal.c - by Tom McReynolds, SGI */ - -/* An Example of decaling, using stencil */ - -#include -#include - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case '\033': - exit(0); - } -} - -/* decal shape polygon onto base */ -void -decal_poly(void) -{ - glBegin(GL_QUADS); - glNormal3f(0.f, 0.f, -1.f); - glVertex3i(-2, 2, 0); - glVertex3i(-2, 3, 0); - glVertex3i(2, 3, 0); - glVertex3i(2, 2, 0); - - glVertex3f(-.5, -3.f, 0); - glVertex3f(-.5f, 2.f, 0); - glVertex3f(.5f, 2.f, 0); - glVertex3f(.5f, -3.f, 0); - glEnd(); -} - -int angle = 0; - -void -redraw(void) -{ - /* clear stencil each time */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 1, 1); - glStencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE); - glDepthFunc(GL_LESS); - - glPushMatrix(); - glColor3f(1.f, 0.f, 0.f); - glTranslatef(0.f, 0.f, -10.f); - glScalef(5.f, 5.f, 5.f); - glRotatef((GLfloat) angle, 0.f, 1.f, 0.f); - glEnable(GL_NORMALIZE); - glutSolidDodecahedron(); - glDisable(GL_NORMALIZE); - glPopMatrix(); - - glStencilFunc(GL_EQUAL, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glDepthFunc(GL_ALWAYS); - - glPushMatrix(); - glTranslatef(0.f, 0.f, -10.f); - glRotatef((GLfloat) angle, 0.f, 1.f, 0.f); - glRotatef(58.285f, 0.f, 1.f, 0.f); - glTranslatef(0.f, 0.f, -7.265f); - glColor3f(0.f, 1.f, 0.f); - decal_poly(); - glPopMatrix(); - - glDisable(GL_STENCIL_TEST); - - glutSwapBuffers(); -} - -void -anim(void) -{ - angle = (angle + 1) % 360; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(anim); - else - glutIdleFunc(NULL); -} - -int -main(int argc, char *argv[]) -{ - static GLfloat lightpos[] = - {10.f, 5.f, 0.f, 1.f}; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_STENCIL | GLUT_DEPTH | GLUT_DOUBLE); - (void) glutCreateWindow("decal"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutVisibilityFunc(visible); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - glOrtho(-10., 10., -10., 10., 0., 20.); - glMatrixMode(GL_MODELVIEW); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/decal.dsp b/lib/glut-3.7.6/progs/advanced/decal.dsp deleted file mode 100644 index b0c8bccdd45f10b76ca26129f9e9b8e4b3a5bc87..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/decal.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="decal" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=decal - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "decal.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "decal.mak" CFG="decal - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "decal - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "decal - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "decal - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "decal - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "decal - Win32 Release" -# Name "decal - Win32 Debug" -# Begin Source File - -SOURCE=.\decal.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/dissolve.c b/lib/glut-3.7.6/progs/advanced/dissolve.c deleted file mode 100644 index db6b2aeed710f2b861c27b70ae094441241c8380..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/dissolve.c +++ /dev/null @@ -1,441 +0,0 @@ - -/* dissolve.c - by Tom McReynolds, SGI */ - -/* An Example of dissolve, using stencil */ - -/* Drag with left mouse button to dissolve to the 3D background, - Drag with middle mouse button to dissolve to checkerboard, and - use right button for menu to clear stencil. */ - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#define random rand -#endif - -int winWidth = 512; -int winHeight = 512; - -/* Create a single component texture map */ -GLfloat * -make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum { - SPHERE = 1, CONE -}; - -GLfloat angle = 0.f; /* angle of rotating object in layer 0 */ - -enum { - X, Y -}; -GLboolean eraser = GL_FALSE; -GLint layer = 1; -GLint eraserpos[2] = -{512 / 8, 512 / 12}; - -/* draw eraser and erase what's underneath */ - -GLubyte *eraserpix = 0; -int erasersize = 0; -void -makeEraser(void) -{ - int i, skip; - - erasersize = 4 * winWidth / 4 * winHeight / 6; - eraserpix = (GLubyte *) realloc(eraserpix, erasersize * sizeof(GLubyte)); - - /* make it white */ - (void) memset(eraserpix, 255, erasersize * sizeof(GLubyte)); - - skip = (int) (random() % 8); - for (i = 0; i < erasersize; i++) { - if (!skip) { - eraserpix[i] = 0; - eraserpix[i + 1] = 0; - eraserpix[i + 2] = 0; - eraserpix[i + 3] = 0; - skip = (int) (random() % 8); - } else - skip--; - } - -} - -/* ARGSUSED2 */ -/* left button, first layer, middle button, second layer */ -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) { - eraser = GL_TRUE; - if (button == GLUT_LEFT_BUTTON) - layer = 1; - else /* GLUT_MIDDLE: GLUT_RIGHT is for menu */ - layer = 0; - } else { /* GLUT_UP */ - eraser = GL_FALSE; - } - glutPostRedisplay(); -} - -enum { - CLEAR -}; /* menu choices */ -GLboolean clearstencil = GL_TRUE; - -void -menu(int choice) -{ - switch (choice) { - case CLEAR: - clearstencil = GL_TRUE; - break; - } - glutPostRedisplay(); -} - -/* used to get current width and height of viewport */ -void -reshape(int wid, int ht) -{ - glViewport(0, 0, wid, ht); - winWidth = wid; - winHeight = ht; - clearstencil = GL_TRUE; - makeEraser(); - glutPostRedisplay(); -} - -void -draweraser(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, winWidth, 0, winHeight); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - /* replace with this layer */ - glStencilFunc(GL_ALWAYS, layer, 0); - glStencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE); - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_NOTEQUAL, 0); - glRasterPos2i(eraserpos[X], eraserpos[Y]); - glBitmap(0, 0, 0.f, 0.f, -winWidth / 8.f, -winHeight / 12.f, 0); - glDrawPixels(winWidth / 4, winHeight / 6, GL_RGBA, GL_UNSIGNED_BYTE, eraserpix); - glDisable(GL_ALPHA_TEST); -} - -void -drawlayer2(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, winWidth, 0, winHeight); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - glEnable(GL_TEXTURE_2D); - - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(0, 0); - glTexCoord2i(1, 0); - glVertex2i(winWidth, 0); - glTexCoord2i(1, 1); - glVertex2i(winWidth, winHeight); - glTexCoord2i(0, 1); - glVertex2i(0, winHeight); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - if (glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); -} - -void -drawlayer1(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = - {1.f, 1.f, 1.f, 1.f}; - static GLfloat lightpos[] = - {50.f, 50.f, -320.f, 1.f}; - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-100., 100., -100., 100., 320., 640.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - /* Note: wall verticies are ordered so they are all front facing this lets - me do back face culling to speed things up. */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* Since we want to turn texturing on for floor only, we have to make floor - a separate glBegin()/glEnd() sequence. You can't turn texturing on and - off between begin and end calls */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f(100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f(100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f(100.f, -100.f, -320.f); - glVertex3f(100.f, 100.f, -320.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glPushMatrix(); - glTranslatef(-80.f, -80.f, -420.f); - glCallList(SPHERE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-20.f, -100.f, -500.f); - glCallList(CONE); - glPopMatrix(); - - if (glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); -} - -void -drawlayer0(void) -{ - static GLfloat lightpos[] = - {50.f, 50.f, 0.f, 1.f}; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-50.f, 50.f, -50.f, 50.f, 0.f, 100.f); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.f, 0.f, -50.f); - glRotatef(angle, 0.f, 1.f, 0.f); - glRotatef(90.f, 0.f, 0.f, 1.f); - glTranslatef(0.f, -25.f, 0.f); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glCullFace(GL_BACK); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glCallList(CONE); - -} - -void -redraw(void) -{ - if (glutLayerGet(GLUT_NORMAL_DAMAGED) || - clearstencil == GL_TRUE) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - clearstencil = GL_FALSE; - } else - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - glStencilFunc(GL_EQUAL, 2, ~0); - drawlayer2(); - - glStencilFunc(GL_EQUAL, 1, ~0); - drawlayer1(); - - glStencilFunc(GL_EQUAL, 0, ~0); - drawlayer0(); - - if (eraser) - draweraser(); - - glutSwapBuffers(); -} - -void -idle(void) -{ - angle += 1.f; - glutPostRedisplay(); -} - -void -passive(int x, int y) -{ - - eraserpos[X] = x; - eraserpos[Y] = winHeight - y; -} - -void -motion(int x, int y) -{ - - eraserpos[X] = x; - eraserpos[Y] = winHeight - y; - - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case '\033': - exit(0); - } -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -const int TEXDIM = 256; -GLfloat *tex = 0; - -int -main(int argc, char *argv[]) -{ - static GLfloat sphere_mat[] = - {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(winWidth, winHeight); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_STENCIL | GLUT_DEPTH); - (void) glutCreateWindow("dissolve"); - glutDisplayFunc(redraw); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutPassiveMotionFunc(passive); - glutKeyboardFunc(key); - glutVisibilityFunc(visible); - glutReshapeFunc(reshape); - - glutCreateMenu(menu); - glutAddMenuEntry("Clear Stencil", CLEAR); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(base, GLU_INSIDE); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - makeEraser(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glClearStencil(2); - glEnable(GL_STENCIL_TEST); /* used all the time */ - - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/dissolve.dsp b/lib/glut-3.7.6/progs/advanced/dissolve.dsp deleted file mode 100644 index 330ae94dbb921702a34b573be0f40831364dbc8a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/dissolve.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dissolve" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dissolve - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dissolve.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dissolve.mak" CFG="dissolve - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dissolve - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dissolve - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dissolve - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dissolve - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dissolve - Win32 Release" -# Name "dissolve - Win32 Debug" -# Begin Source File - -SOURCE=.\dissolve.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/envmap.c b/lib/glut-3.7.6/progs/advanced/envmap.c deleted file mode 100644 index 212ca0a5086b3ce46b55cebdbd24c7e6b60c37cc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/envmap.c +++ /dev/null @@ -1,1195 +0,0 @@ - -/* envmap.c - David Blythe, SGI */ - -/* Texture environment mapping demo. */ - -#include -#include -#include -#ifndef _WIN32 -#include -#else -#define drand48() (((float) rand())/((float) RAND_MAX)) -#endif -#include -#include -#include "texture.h" - -#if defined(GL_VERSION_1_1) -/* Routines called directly. */ -#elif defined(GL_EXT_texture_object) && defined(GL_EXT_copy_texture) && defined(GL_EXT_subtexture) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B) -#define glCopyTexSubImage2D(A,B,C,D,E,F,G,H) glCopyTexSubImage2DEXT(A,B,C,D,E,F,G,H) -#else -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#define glDeleteTextures(A,B) -#define glCopyTexSubImage2D(A,B,C,D,E,F,G,H) -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define OB_CUBE 0 -#define OB_SPHERE 1 -#define OB_SQUARE 2 -#define OB_CYL 3 -#define OB_TORUS 4 -#define OB_HSPHERE 5 - -#define NOBJS 5 -#define TDRAW 10 - -#define LIST_BASE 100 -#define TOBJ_BASE 200 -#define TEXSIZE 256 /* default texture-size */ - -typedef struct _vector { - float x, y, z; -} vector_t; - -typedef struct _face { - char *filename; - unsigned *buf; - int width; - int height; - int components; - vector_t u, v, n, o; /* plane equation */ - float angle1; - vector_t axis1; /* for rotation */ - float angle2; - vector_t axis2; -} face_t; - -typedef struct _color { - float r, g, b; -} color_t; - -struct { /* command-line options */ - int use_spheremap; - char *spheremap_file; - int hw; - int size; - int samples; - int object; - char *outfile; - int tessellation; -} opts = { - - 0, 0, 0, TEXSIZE, 4, OB_TORUS, 0, 30 -}; /* default settings */ - -void display(void); -void init(void); -void build_lists(void); -unsigned *render_spheremap(int *width, int *height, - int *components, int doalloc); - -/* strdup is actually not a standard ANSI C or POSIX routine - so implement a private one. OpenVMS does not have a strdup; Linux's - standard libc doesn't declare strdup by default (unless BSD or SVID - interfaces are requested). */ -static char * -stralloc(const char *string) -{ - char *copy; - - copy = malloc(strlen(string) + 1); - if (copy == NULL) - return NULL; - strcpy(copy, string); - return copy; -} - -void -vadd(vector_t * a, vector_t * b, vector_t * sum) -{ - sum->x = a->x + b->x; - sum->y = a->y + b->y; - sum->z = a->z + b->z; -} - -void -vsub(vector_t * a, vector_t * b, vector_t * diff) -{ - diff->x = a->x - b->x; - diff->y = a->y - b->y; - diff->z = a->z - b->z; -} - -void -vscale(vector_t * v, float scale) -{ - v->x *= scale; - v->y *= scale; - v->z *= scale; -} - -float -vdot(vector_t * u, vector_t * v) -{ - return (u->x * v->x + u->y * v->y + u->z * v->z); -} - -void -vreflect(vector_t * axis, vector_t * v, vector_t * r) -{ - vector_t t = *axis; - - vscale(&t, 2 * vdot(axis, v)); - vsub(&t, v, r); -} - -int -intersect(vector_t * v) -{ - int f; - float x, y, z; - - x = fabs(v->x); - y = fabs(v->y); - z = fabs(v->z); - if (x >= y && x >= z) - f = (v->x > 0) ? 2 : 0; - else if (y >= x && y >= z) - f = (v->y > 0) ? 4 : 5; - else - f = (v->z > 0) ? 3 : 1; - - return f; -} - -face_t face[6] = -{ - {"../data/00.rgb", 0, 0, 0, 0, - {0, 0, -1}, - {0, 1, 0}, - {-1, 0, 0}, - {-0.5, -0.5, 0.5}, 90.0, - {0, 1, 0}, 0, - {0, 0, 0}}, - {"../data/01.rgb", 0, 0, 0, 0, - {1, 0, 0}, - {0, 1, 0}, - {0, 0, -1}, - {-0.5, -0.5, -0.5}, 180.0, - {0, 1, 0}, 0, - {0, 0, 0}}, - {"../data/02.rgb", 0, 0, 0, 0, - {0, 0, 1}, - {0, 1, 0}, - {1, 0, 0}, - {0.5, -0.5, -0.5}, 270.0, - {0, 1, 0}, 0, - {0, 0, 0}}, - {"../data/03.rgb", 0, 0, 0, 0, - {-1, 0, 0}, - {0, 1, 0}, - {0, 0, 1}, - {0.5, -0.5, 0.5}, 0.0, - {0, 1, 0}, 0, - {0, 0, 0}}, - {"../data/04.rgb", 0, 0, 0, 0, - {1, 0, 0}, - {0, 0, 1}, - {0, 1, 0}, - {-0.5, 0.5, -0.5}, 90.0, - {1, 0, 0}, 180.0, - {0, 1, 0}}, - {"../data/05.rgb", 0, 0, 0, 0, - {1, 0, 0}, - {0, 0, -1}, - {0, -1, 0}, - {-0.5, -0.5, 0.5}, -90.0, - {1, 0, 0}, 180.0, - {0, 1, 0}} -}; - -void -sample(int facenum, float s, float t, color_t * c) -{ - face_t *f = &face[facenum]; - int xpos, ypos; - unsigned char *p; - - xpos = s * f->width; - ypos = t * f->height; - - p = (unsigned char *) &f->buf[ypos * f->width + xpos]; - c->r = p[0] / 255.0; - c->g = p[1] / 255.0; - c->b = p[2] / 255.0; -} - -unsigned * -construct_spheremap(int *width, int *height, - int *components) -{ - int i, j, x, y, f; - unsigned *spheremap; - unsigned char *lptr; - int size = opts.size; - color_t c, texel; - vector_t v, r, p; - float s, t, temp, k; - int samples; - - /* Read in the 6 faces of the environment */ - for (i = 0; i < 6; i++) { - face[i].buf = read_texture(face[i].filename, &face[i].width, - &face[i].height, &face[i].components); - if (!face[i].buf) { - fprintf(stderr, "Error: cannot load image %s\n", face[i].filename); - exit(1); - } - } - - *components = face[0].components; - *width = *height = size; - samples = opts.samples; - - spheremap = (unsigned *) malloc(size * size * sizeof(unsigned)); - if (!spheremap) { - perror("malloc"); - exit(1); - } - lptr = (unsigned char *) spheremap; - - /* Calculate sphere-map by rendering a perfectly reflective solid sphere. */ - - for (y = 0; y < size; y++) - for (x = 0; x < size; x++) { - - texel.r = texel.g = texel.b = 0.0; - for (j = 0; j < samples; j++) { - s = (x + (float) drand48()) / size - 0.5; - t = (y + (float) drand48()) / size - 0.5; - - temp = s * s + t * t; - if (temp >= 0.25) { /* point not on sphere */ - c.r = c.g = c.b = 0; - continue; - } - /* get point on sphere */ - p.x = s; - p.y = t; - p.z = sqrt(0.25 - temp); - vscale(&p, 2.0); - /* ray from infinity (eyepoint) to surface */ - v.x = 0.0; - v.y = 0.0; - v.z = 1.0; - - /* get reflected ray */ - vreflect(&p, &v, &r); - - /* Intersect reflected ray with cube */ - f = intersect(&r); - k = vdot(&face[f].o, &face[f].n) / vdot(&r, &face[f].n); - vscale(&r, k); - vsub(&r, &face[f].o, &v); - - /* Get texture map-indices */ - s = vdot(&v, &face[f].u); - t = vdot(&v, &face[f].v); - - /* Sample to get color */ - sample(f, s, t, &c); - - texel.r += c.r; - texel.g += c.g; - texel.b += c.b; - } - - lptr[0] = 255 * texel.r / samples; - lptr[1] = 255 * texel.g / samples; - lptr[2] = 255 * texel.b / samples; - lptr[3] = 0xff; - lptr += 4; - } - - return (unsigned *) spheremap; -} - -void -texture_init(void) -{ - unsigned *buf; - int width, height, components; - char filename[80]; - - if (opts.use_spheremap) { - strcpy(filename, opts.spheremap_file); - buf = read_texture(filename, &width, &height, &components); - if (components == 3) - components++; - if (!buf) { - fprintf(stderr, "Error: cannot load image %s\n", filename); - exit(1); - } - } else { - buf = (opts.hw) ? - render_spheremap(&width, &height, &components, 1) : - construct_spheremap(&width, &height, &components); - - if (!buf) { - fprintf(stderr, "Error: Cannot construct spheremap\n"); - exit(1); - } - } - - glBindTexture(GL_TEXTURE_2D, TOBJ_BASE + TDRAW); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - gluBuild2DMipmaps(GL_TEXTURE_2D, components, width, height, - GL_RGBA, GL_UNSIGNED_BYTE, buf); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - - glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - - free(buf); -} - -void -texture_init_from_spheremap(void) -{ - int w, h, components; - - render_spheremap(&w, &h, &components, 0); - - glReadBuffer(GL_BACK); - glBindTexture(GL_TEXTURE_2D, TOBJ_BASE + TDRAW); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, w, h); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); -} - -void -parse(int argc, char *argv[]) -{ - int i = 1; - char *usage = - "Usage: map [-size n] [-samples n] [-help] \n\ -\t[-sphere filename | -cubemap [0-5].rgb]\n\ -\n\ -\t-size n : specify size of sphere-map (when generated from cubemap)\n\ -\t-samples n : #samples to use per pixel of the spheremap\n\ -\t-sphere file.rgb : specify spheremap-image\n\ -\t-cubemap [0-5].rgb: specify 6 cubemap files\n\ -\t-out file.rgb: save generated spheremap to file\n\ -\t-hw : Use hardware texture mapping to create sphere-map\n\ -\t-help : print this message\n"; - -#define check_arg(i, n, str) \ - if (argc < i+n) { \ - fprintf(stderr, "%s needs an argument\n", str); \ - fprintf(stderr, usage); \ - exit(1); \ - } - - while (i < argc) { - if (!strcmp(argv[i], "-size")) { - check_arg(i, 1, "-size"); - opts.size = atoi(argv[++i]); - - } else if (!strcmp(argv[i], "-samples")) { - check_arg(i, 1, "-samples"); - opts.samples = atoi(argv[++i]); - - } else if (!strcmp(argv[i], "-out")) { - check_arg(i, 1, "-out"); - opts.outfile = stralloc(argv[++i]); - - } else if (!strcmp(argv[i], "-sphere")) { - opts.use_spheremap = 1; - - } else if (!strcmp(argv[i], "-cubemap")) { - int j; - check_arg(i, 6, "-cubemap"); - for (j = 0; j < 6; j++) - face[j].filename = stralloc(argv[++i]); - - } else if (!strcmp(argv[i], "-help")) { - fprintf(stderr, usage); - exit(0); - - } else if (!strcmp(argv[i], "-hw")) { - opts.hw = 1; - - } else { - if (opts.use_spheremap && !opts.spheremap_file) - opts.spheremap_file = stralloc(argv[i]); - else { - fprintf(stderr, "Error: unrecognized option %s\n", argv[i]); - fprintf(stderr, usage); - exit(1); - } - } - i++; - } /* end-while */ -} - -#ifdef use_copytex -static int currwidth = TEXSIZE; -static int currheight = TEXSIZE; -#else -static int currwidth = 400; -static int currheight = 400; -#endif - -static int do_spheremap = 0, do_alloc = 0; -static GLfloat rotv[] = -{0., 0., 0.}; -static GLfloat rots[] = -{0., 0., 0.}; -static GLfloat plane[4][3] = -{ - {1.0, -1.0, 0.0}, - {1.0, 1.0, 0.0}, - {-1.0, 1.0, 0.0}, - {-1.0, -1.0, 0.0} -}; - -static GLfloat cube[6][4][3] = -{ - { - {1.0, -1.0, -1.0}, /* counter-clockwise faces */ - {-1.0, -1.0, -1.0}, - {-1.0, 1.0, -1.0}, - {1.0, 1.0, -1.0} - }, - { - {1.0, -1.0, 1.0}, - {1.0, -1.0, -1.0}, - {1.0, 1.0, -1.0}, - {1.0, 1.0, 1.0} - }, - { - {-1.0, -1.0, 1.0}, - {1.0, -1.0, 1.0}, - {1.0, 1.0, 1.0}, - {-1.0, 1.0, 1.0} - }, - { - {-1.0, -1.0, -1.0}, - {-1.0, -1.0, 1.0}, - {-1.0, 1.0, 1.0}, - {-1.0, 1.0, -1.0} - }, - { - {1.0, 1.0, 1.0}, - {1.0, 1.0, -1.0}, - {-1.0, 1.0, -1.0}, - {-1.0, 1.0, 1.0} - }, - { - {1.0, -1.0, -1.0}, - {1.0, -1.0, 1.0}, - {-1.0, -1.0, 1.0}, - {-1.0, -1.0, -1.0} - } -}; - -static float norm[6][3] = -{ - {0.0, 0.0, -1.0}, - {1.0, 0.0, 0.0}, - {0.0, 0.0, 1.0}, - {-1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {0.0, -1.0, 0.0} -}; - -void -reshape(int w, int h) -{ - currwidth = w; - currheight = h; - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, (GLfloat) w / (GLfloat) h, 1.0, 20.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 6, - 0, 0, 0, - 0, 1, 0); -} - -/* ARGSUSED1 */ -void -keys(unsigned char key, int x, int y) -{ - switch (key) { - - case 'o': /* switch between objects */ - opts.object = (opts.object + 1) % NOBJS; - glutPostRedisplay(); - break; - - case '+': /* change tessellation */ - opts.tessellation += 2; - build_lists(); - glutPostRedisplay(); - break; - - case '-': - opts.tessellation -= 2; - if (opts.tessellation < 4) - opts.tessellation = 4; - build_lists(); - glutPostRedisplay(); - break; - - case 's': /* toggle between spheremap generation */ - /* mode and display mode */ - do_spheremap ^= 1; - if (!do_spheremap) /* switch back to normal mode */ - do_alloc = 1; - glutPostRedisplay(); - break; - - case 'h': - case 'H': - printf("\nKey functions\n"); - printf("\to: switch objects\n"); - printf("\ts: switch to spheremap generation mode\n"); - printf("\t+: increase tessellation\n"); - printf("\t-: decrease tessellation\n"); - printf("\th: help\n"); - printf("\tESC: quit\n"); - printf("\tleft/right arrow-keys: Rotate around X axis\n"); - printf("\tup/down arrow-keys: Rotate around Y axis\n"); - printf("\tpage-up/pgdown arrow-keys: Rotate around Z axis\n"); - break; - - case 27: - exit(0); - } -} - -/* ARGSUSED1 */ -void -special_keys(int key, int x, int y) -{ - GLfloat *vect; - - if (do_spheremap) - vect = rots; - else - vect = rotv; - - switch (key) { - case GLUT_KEY_LEFT: - vect[1] -= 0.5; - glutPostRedisplay(); - break; - case GLUT_KEY_RIGHT: - vect[1] += 0.5; - glutPostRedisplay(); - break; - case GLUT_KEY_UP: - vect[0] -= 0.5; - glutPostRedisplay(); - break; - case GLUT_KEY_DOWN: - vect[0] += 0.5; - glutPostRedisplay(); - break; - case GLUT_KEY_PAGE_UP: - vect[2] -= 0.5; - glutPostRedisplay(); - break; - case GLUT_KEY_PAGE_DOWN: - vect[2] += 0.5; - glutPostRedisplay(); - break; - } -} - -/* Use mouse buttons to generate spheremap on the fly while the objects are - being displayed. */ -static void -motion(int x, int y) -{ - rots[1] = 180.0 * x / currwidth - 90.0; - rots[0] = 180.0 * y / currheight - 90.0; -#ifdef use_copytex - if (!do_spheremap) - texture_init_from_spheremap(); -#endif - glutPostRedisplay(); -} - -void -menu(int value) -{ - keys((unsigned char) value, 0, 0); -} - -#if defined(GL_VERSION_1_1) - -static int -supportsOneDotOne(void) -{ - const char *version; - int major, minor; - - version = (char *) glGetString(GL_VERSION); - if (sscanf(version, "%d.%d", &major, &minor) == 2) - return major >= 1 && minor >= 1; - return 0; /* OpenGL version string malformed! */ -} - -#endif - -int -main(int argc, char *argv[]) -{ - int hasExtendedTextures; - - parse(argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); - glutInitWindowSize(currwidth, currheight); - glutCreateWindow("Environment map"); - -#if defined(GL_VERSION_1_1) - hasExtendedTextures = supportsOneDotOne(); - if(!hasExtendedTextures) { - fprintf(stderr, - "envmap: This example requires OpenGL 1.1.\n"); - exit(1); - } -#elif defined(GL_EXT_texture_object) && defined(GL_EXT_copy_texture) && defined(GL_EXT_subtexture) - hasExtendedTextures = glutExtensionSupported("GL_EXT_subtexture") - && glutExtensionSupported("GL_EXT_texture_object") - && glutExtensionSupported("GL_EXT_copy_texture"); - if(!hasExtendedTextures) { - fprintf(stderr, - "envmap: This example requires the OpenGL EXT_subtexture, EXT_texture_object, and EXT_copy_texture extensions.\n"); - exit(1); - } -#else - hasExtendedTextures = 0; - if(!hasExtendedTextures) { - fprintf(stderr, - "envmap: This example must be compiled with either OpenGL 1.1 or the OpenGL EXT_subtexture, EXT_texture_object, and EXT_copy_texture extensions.\n"); - exit(1); - } -#endif - - init(); - - glutReshapeFunc(reshape); - glutKeyboardFunc(keys); - glutSpecialFunc(special_keys); - if (opts.hw) - glutMotionFunc(motion); - glutDisplayFunc(display); - glutCreateMenu(menu); - glutAddMenuEntry("Switch object", 'o'); - glutAddMenuEntry("Up tessellation", '+'); - glutAddMenuEntry("Lower tessellation", '-'); - glutAddMenuEntry("Quit", 27); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -void -build_cube(void) -{ - int i; - - glNewList(LIST_BASE + OB_CUBE, GL_COMPILE); - for (i = 0; i < 6; i++) { - glBegin(GL_QUADS); - glNormal3fv(norm[i]); - glVertex3fv(cube[i][0]); - glVertex3fv(cube[i][1]); - glVertex3fv(cube[i][2]); - glVertex3fv(cube[i][3]); - glEnd(); - } - glEndList(); -} - -void -build_sphere(int tess) -{ - float r = 1.0, r1, r2, z1, z2; - float theta, phi; - int nlon = tess, nlat = tess; - int i, j; - - glNewList(LIST_BASE + OB_SPHERE, GL_COMPILE); - glBegin(GL_TRIANGLE_FAN); - theta = M_PI * 1.0 / nlat; - r2 = r * sin(theta); - z2 = r * cos(theta); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(0.0, 0.0, r); - for (j = 0, phi = 0.0; j <= nlon; j++, phi = 2 * M_PI * j / nlon) { - glNormal3f(r2 * cos(phi), r2 * sin(phi), z2); - glVertex3f(r2 * cos(phi), r2 * sin(phi), z2); /* top */ - } - glEnd(); - - for (i = 2; i < nlat; i++) { - theta = M_PI * i / nlat; - r1 = r * sin(M_PI * (i - 1) / nlat); - z1 = r * cos(M_PI * (i - 1) / nlat); - r2 = r * sin(theta); - z2 = r * cos(theta); - glBegin(GL_QUAD_STRIP); - for (j = 0, phi = 0; j <= nlat; j++, phi = 2 * M_PI * j / nlon) { - glNormal3f(r1 * cos(phi), r1 * sin(phi), z1); - glVertex3f(r1 * cos(phi), r1 * sin(phi), z1); - glNormal3f(r2 * cos(phi), r2 * sin(phi), z2); - glVertex3f(r2 * cos(phi), r2 * sin(phi), z2); - } - glEnd(); - } - - glBegin(GL_TRIANGLE_FAN); - theta = M_PI * (nlat - 1) / nlat; - r2 = r * sin(theta); - z2 = r * cos(theta); - glNormal3f(0.0, 0.0, -1.0); - glVertex3f(0.0, 0.0, -r); - for (j = nlon, phi = 0.0; j >= 0; j--, phi = 2 * M_PI * j / nlon) { - glNormal3f(r2 * cos(phi), r2 * sin(phi), z2); - glVertex3f(r2 * cos(phi), r2 * sin(phi), z2); /* bottom */ - } - glEnd(); - glEndList(); -} - -/* Same as above routine except that we use homogeneous co-ordinates. Each - component (including w) is multiplied by z */ -void -build_special_sphere(int tess) -{ - float r = 1.0, r1, r2, z1, z2; - float theta, phi; - int nlon = tess, nlat = tess; - int i, j; - - glNewList(LIST_BASE + OB_HSPHERE, GL_COMPILE); - glBegin(GL_TRIANGLE_FAN); - theta = M_PI * 1.0 / nlat; - r2 = r * sin(theta); - z2 = r * cos(theta); - glNormal3f(0.0, 0.0, 1.0); - glVertex4f(0.0, 0.0, r * r, r); - for (j = 0, phi = 0.0; j <= nlon; j++, phi = 2 * M_PI * j / nlon) { - glNormal3f(r2 * cos(phi), r2 * sin(phi), z2); - glVertex4f(r2 * cos(phi) * z2, r2 * sin(phi) * z2, z2 * z2, z2); /* top */ - } - glEnd(); - - for (i = 2; i < nlat; i++) { - theta = M_PI * i / nlat; - r1 = r * sin(M_PI * (i - 1) / nlat); - z1 = r * cos(M_PI * (i - 1) / nlat); - r2 = r * sin(theta); - z2 = r * cos(theta); - - if (fabs(z1) < 0.01 || fabs(z2) < 0.01) - break; - - glBegin(GL_QUAD_STRIP); - for (j = 0, phi = 0; j <= nlat; j++, phi = 2 * M_PI * j / nlon) { - glNormal3f(r1 * cos(phi), r1 * sin(phi), z1); - glVertex4f(r1 * cos(phi) * z1, r1 * sin(phi) * z1, z1 * z1, z1); - glNormal3f(r2 * cos(phi), r2 * sin(phi), z2); - glVertex4f(r2 * cos(phi) * z2, r2 * sin(phi) * z2, z2 * z2, z2); - } - glEnd(); - } - - glBegin(GL_TRIANGLE_FAN); - theta = M_PI * (nlat - 1) / nlat; - r2 = r * sin(theta); - z2 = r * cos(theta); - glNormal3f(0.0, 0.0, -1.0); - glVertex4f(0.0, 0.0, -r * -r, -r); - for (j = nlon, phi = 0.0; j >= 0; j--, phi = 2 * M_PI * j / nlon) { - glNormal3f(r2 * cos(phi), r2 * sin(phi), z2); - glVertex4f(r2 * cos(phi) * z2, r2 * sin(phi) * z2, z2 * z2, z2); /* bottom - - */ - } - glEnd(); - glEndList(); -} - -void -build_square(void) -{ - glNewList(LIST_BASE + OB_SQUARE, GL_COMPILE); - glBegin(GL_POLYGON); - glNormal3f(0.0, 0.0, 1.0); - glVertex3fv(plane[0]); - glVertex3fv(plane[1]); - glVertex3fv(plane[2]); - glVertex3fv(plane[3]); - glEnd(); - glEndList(); -} - -void -build_cylinder(int tess) -{ - int slices = tess, stacks = tess; - int i, j; - GLfloat phi, z1, r, z2; - - glNewList(LIST_BASE + OB_CYL, GL_COMPILE); - z1 = 2.0; - r = 1.0; - glBegin(GL_TRIANGLE_FAN); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(0.0, 0.0, z1); - for (i = 0; i <= slices; i++) { - phi = M_PI * 2.0 * i / slices; - glVertex3f(r * cos(phi), r * sin(phi), z1); - } - glEnd(); - - for (i = 0, z2 = 0.0, z1 = 2.0 / stacks; i < stacks; i++) { - glBegin(GL_QUAD_STRIP); - for (j = 0, phi = 0; j <= slices; j++, phi = M_PI * 2.0 * j / slices) { - glNormal3f(r * cos(phi), r * sin(phi), 0); - glVertex3f(r * cos(phi), r * sin(phi), z1); - glVertex3f(r * cos(phi), r * sin(phi), z2); - } - glEnd(); - z1 += 2.0 / stacks; - z2 += 2.0 / stacks; - } - - z2 = 0.0; - glBegin(GL_TRIANGLE_FAN); - glNormal3f(0.0, 0.0, -1.0); - glVertex3f(0.0, 0.0, z2); - for (i = slices; i >= 0; i--) { - phi = M_PI * 2.0 * i / slices; - glVertex3f(r * cos(phi), r * sin(phi), z2); - } - glEnd(); - glEndList(); -} - -void -build_torus(int tess) -{ - int i, j, k, l; - int numg = 1.2 * tess; - int nums = tess; - GLfloat x, y, z; - GLfloat theta, phi; - const GLfloat twopi = 2.0 * M_PI; - const GLfloat rg = 2.0, rs = 1.0; - - glNewList(LIST_BASE + OB_TORUS, GL_COMPILE); - for (i = 0; i < numg; i++) { - - glBegin(GL_QUAD_STRIP); - for (j = 0; j <= nums; j++) { - phi = twopi * j / nums; - - for (k = 0; k <= 1; k++) { - l = (i + k) % numg; - theta = twopi * l / numg; - - glNormal3f(rs * cos(phi) * cos(theta), - rs * cos(phi) * sin(theta), - rs * sin(phi)); - - x = (rg + rs * cos(phi)) * cos(theta); - y = (rg + rs * cos(phi)) * sin(theta); - z = rs * sin(phi); - glVertex3f(x, y, z); - } - } - glEnd(); - } - glEndList(); -} - -void -display(void) -{ - static int once = 0; - - if (!once && opts.hw) { - texture_init(); - once = 1; - } - if (do_spheremap || do_alloc) { - int w, h, comp; - if (do_alloc) { - texture_init(); - do_alloc = 0; - } else - render_spheremap(&w, &h, &comp, 0); - - } else { - - glPushMatrix(); - glBindTexture(GL_TEXTURE_2D, TOBJ_BASE + TDRAW); - glEnable(GL_DEPTH_TEST); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glRotatef(rotv[0], 1, 0, 0); - glRotatef(rotv[1], 0, 1, 0); - glRotatef(rotv[2], 0, 0, 1); - - switch (opts.object) { - - case OB_SQUARE: - case OB_CUBE: - case OB_SPHERE: - glCallList(LIST_BASE + opts.object); - break; - - case OB_CYL: - glTranslatef(0.0, 0.0, -1.0); - glCallList(LIST_BASE + OB_CYL); - break; - - case OB_TORUS: - glScalef(0.6, 0.6, 0.6); - glEnable(GL_NORMALIZE); - glCallList(LIST_BASE + OB_TORUS); - glDisable(GL_NORMALIZE); - break; - - default: - printf("Eh?\n"); - } - - glLineWidth(2.0); - glDisable(GL_DEPTH_TEST); - glDisable(GL_TEXTURE_2D); - glBegin(GL_LINES); - glColor3f(1.0, 0.0, 0.0); - glVertex3f(0.0, 0.0, 0.0); - glVertex3f(4.0, 0.0, 0.0); - - glColor3f(0.0, 1.0, 0.0); - glVertex3f(0.0, 0.0, 0.0); - glVertex3f(0.0, 4.0, 0.0); - - glColor3f(1.0, 1.0, 1.0); - glVertex3f(0.0, 0.0, 0.0); - glVertex3f(0.0, 0.0, 4.0); - glEnd(); - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glPopMatrix(); - } - - glutSwapBuffers(); -} - -void -build_lists(void) -{ - build_square(); - build_cube(); - build_sphere(opts.tessellation); - build_cylinder(opts.tessellation); - build_torus(opts.tessellation); - build_special_sphere(opts.tessellation + 10); -} - -void -init(void) -{ - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - glClearColor(0.0, 0.0, 0.0, 1.0); - build_lists(); - texture_init(); -} - -void -err(void) -{ - printf("error=%#x\n", glGetError()); -} - -/* Use projective textures to generate sphere-map */ -unsigned * -render_spheremap(int *width, int *height, - int *components, int doalloc) -{ - int i, j, k; - GLfloat p[4]; - static unsigned *spheremap = NULL; - static int texread_done = 0; - - if (!opts.hw) /* shouldn't come here */ - return NULL; - - for (i = 0; i < 6; i++) { - if (!texread_done) { - face[i].buf = read_texture(face[i].filename, &face[i].width, - &face[i].height, &face[i].components); - if (!face[i].buf) { - fprintf(stderr, "Error: cannot load image %s\n", face[i].filename); - exit(1); - } - for (j = 0; j < face[i].height; j++) /* texture border hack!! */ - for (k = 0; k < face[i].width; k++) - if (j < 1 || k < 1 || - j > face[i].height - 2 || k > face[i].width - 2) { - unsigned char *p = (unsigned char *) &face[i].buf[face[i].width * j + k]; - p[3] = 0; /* zero out alpha */ - } - } - glBindTexture(GL_TEXTURE_2D, TOBJ_BASE + i); - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glTexImage2D(GL_TEXTURE_2D, 0, 4, - face[i].width, face[i].height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, face[i].buf); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - - p[0] = 2.0; - p[1] = p[2] = p[3] = 0.0; /* 2zx */ - glTexGenfv(GL_S, GL_OBJECT_PLANE, p); - - glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - p[0] = 0.0; - p[1] = 2.0; - p[2] = p[3] = 0.0; /* 2zy */ - glTexGenfv(GL_T, GL_OBJECT_PLANE, p); - - glTexGenf(GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - p[0] = p[1] = 0.0; - p[2] = 0.0; - p[3] = 2.0; /* 2z */ - glTexGenfv(GL_R, GL_OBJECT_PLANE, p); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - } - - texread_done = 1; - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - - glColor4f(1.0, 1.0, 1.0, 1.0); - - /* Initialize sphere-map colors, and viewing transformations */ - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, 1.0, 100); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 6, - 0, 0, 0, - 0, 1, 0); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClearDepth(1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* Look at the sphere from the chosen viewing direction and render the - sphere at origin. */ - - for (i = 0; i < 6; i++) { /* for all faces */ - glBindTexture(GL_TEXTURE_2D, TOBJ_BASE + i); - - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glScalef(0.5, 0.5, 1.0); - glTranslatef(1.0, 1.0, 0.0); - glFrustum(-1.01, 1.01, -1.01, 1.01, 1.0, 100.0); - if (face[i].angle2 != 0.) { - glRotatef(face[i].angle2, - face[i].axis2.x, face[i].axis2.y, face[i].axis2.z); - } - glRotatef(face[i].angle1, - face[i].axis1.x, face[i].axis1.y, face[i].axis1.z); - glRotatef(rots[0], 1, 0, 0); - glRotatef(rots[1], 0, 1, 0); - glRotatef(rots[2], 0, 0, 1); - glTranslatef(0.0, 0.0, -1.00); - - glMatrixMode(GL_MODELVIEW); - glClear(GL_DEPTH_BUFFER_BIT); - glCallList(LIST_BASE + OB_HSPHERE); - } - - glDisable(GL_BLEND); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glMatrixMode(GL_TEXTURE); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - if (doalloc) { - /* read in current image and return it to be used as the spheremap */ - unsigned *temp; - - temp = (unsigned *) - malloc(currwidth * currheight * sizeof(unsigned)); - spheremap = (unsigned *) - malloc(opts.size * opts.size * sizeof(unsigned)); - - glReadBuffer(GL_BACK); - glReadPixels(0, 0, currwidth, currheight, GL_RGBA, - GL_UNSIGNED_BYTE, temp); - gluScaleImage(GL_RGBA, - currwidth, currheight, GL_UNSIGNED_BYTE, temp, - opts.size, opts.size, GL_UNSIGNED_BYTE, spheremap); - free(temp); - } - *width = *height = opts.size; - *components = 4; - return (unsigned *) spheremap; -} - diff --git a/lib/glut-3.7.6/progs/advanced/envmap.dsp b/lib/glut-3.7.6/progs/advanced/envmap.dsp deleted file mode 100644 index 56bcf5d1df17b5e67bda10986dcf24aef991575c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/envmap.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="envmap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=envmap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "envmap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "envmap.mak" CFG="envmap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "envmap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "envmap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "envmap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "envmap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "envmap - Win32 Release" -# Name "envmap - Win32 Debug" -# Begin Source File - -SOURCE=.\envmap.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/envphong.c b/lib/glut-3.7.6/progs/advanced/envphong.c deleted file mode 100644 index 07ab1c1f6447fe852e9b3ded0b877ba06de18a44..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/envphong.c +++ /dev/null @@ -1,671 +0,0 @@ - -/* envphong.c - David G. Yu, SGI */ - -/** - ** Demonstrates a use of environment texture mapping for improved highlight - ** shading. - ** - ** Press mouse button one to move the object, press mouse button two to - ** move the light source. Pressing the key switches between using - ** regular lighting or texture mapping for the specular highlights. The - ** key will cycle through objects (sphere, cylinder, torus). Check - ** out the event loop code below for other keys which do will things. - ** - ** TBD - ** - improve accuracy of the highlight texture map - ** - reduce or eliminate grazing angle artifacts - ** - improve user interaction - ** - ** 1995 -- David G Yu - ** - ** cc -o envphong envphong.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm - **/ - -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -int win, win2; -int needsLightUpdate = GL_TRUE; -int useLighting = GL_TRUE; -int useSpecularTexture = GL_FALSE; -int useTexture = GL_FALSE; -int useHighRes = GL_FALSE; -int usePattern = GL_FALSE; -int moveLight = GL_FALSE; -int moveObject = GL_FALSE; -int drawObj = 0, maxObj = 2; -GLfloat lightRotX, lightRotY; -GLfloat objectRotX, objectRotY; -int curx, cury, width, height; - -void -drawSphere(int numMajor, int numMinor, float radius) -{ - double majorStep = (M_PI / numMajor); - double minorStep = (2.0 * M_PI / numMinor); - int i, j; - - for (i = 0; i < numMajor; ++i) { - double a = i * majorStep; - double b = a + majorStep; - double r0 = radius * sin(a); - double r1 = radius * sin(b); - GLfloat z0 = radius * cos(a); - GLfloat z1 = radius * cos(b); - - glBegin(GL_TRIANGLE_STRIP); - for (j = 0; j <= numMinor; ++j) { - double c = j * minorStep; - GLfloat x = cos(c); - GLfloat y = sin(c); - - glNormal3f((x * r0) / radius, (y * r0) / radius, z0 / radius); - glTexCoord2f(j / (GLfloat) numMinor, i / (GLfloat) numMajor); - glVertex3f(x * r0, y * r0, z0); - - glNormal3f((x * r1) / radius, (y * r1) / radius, z1 / radius); - glTexCoord2f(j / (GLfloat) numMinor, (i + 1) / (GLfloat) numMajor); - glVertex3f(x * r1, y * r1, z1); - } - glEnd(); - } -} - -void -drawCylinder(int numMajor, int numMinor, float height, float radius) -{ - double majorStep = height / numMajor; - double minorStep = 2.0 * M_PI / numMinor; - int i, j; - - for (i = 0; i < numMajor; ++i) { - GLfloat z0 = 0.5 * height - i * majorStep; - GLfloat z1 = z0 - majorStep; - - glBegin(GL_TRIANGLE_STRIP); - for (j = 0; j <= numMinor; ++j) { - double a = j * minorStep; - GLfloat x = radius * cos(a); - GLfloat y = radius * sin(a); - - glNormal3f(x / radius, y / radius, 0.0); - glTexCoord2f(j / (GLfloat) numMinor, i / (GLfloat) numMajor); - glVertex3f(x, y, z0); - - glNormal3f(x / radius, y / radius, 0.0); - glTexCoord2f(j / (GLfloat) numMinor, (i + 1) / (GLfloat) numMajor); - glVertex3f(x, y, z1); - } - glEnd(); - } -} - -void -drawTorus(int numMajor, int numMinor, float majorRadius, float minorRadius) -{ - double majorStep = 2.0 * M_PI / numMajor; - double minorStep = 2.0 * M_PI / numMinor; - int i, j; - - for (i = 0; i < numMajor; ++i) { - double a0 = i * majorStep; - double a1 = a0 + majorStep; - GLfloat x0 = cos(a0); - GLfloat y0 = sin(a0); - GLfloat x1 = cos(a1); - GLfloat y1 = sin(a1); - - glBegin(GL_TRIANGLE_STRIP); - for (j = 0; j <= numMinor; ++j) { - double b = j * minorStep; - GLfloat c = cos(b); - GLfloat r = minorRadius * c + majorRadius; - GLfloat z = minorRadius * sin(b); - - glNormal3f(x0 * c, y0 * c, z / minorRadius); - glTexCoord2f(i / (GLfloat) numMajor, j / (GLfloat) numMinor); - glVertex3f(x0 * r, y0 * r, z); - - glNormal3f(x1 * c, y1 * c, z / minorRadius); - glTexCoord2f((i + 1) / (GLfloat) numMajor, j / (GLfloat) numMinor); - glVertex3f(x1 * r, y1 * r, z); - } - glEnd(); - } -} - -void -setNullTexture(void) -{ - GLubyte texPixel[4] = - {0xff, 0xff, 0xff, 0xff}; - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, 4, 1, 1, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texPixel); -} - -void -setCheckTexture(void) -{ - int texWidth = 64; - int texHeight = 64; - GLubyte *texPixels, *p; - int i, j; - - texPixels = (GLubyte *) malloc(texWidth * texHeight * 4 * sizeof(GLubyte)); - if (texPixels == NULL) { - return; - } - p = texPixels; - for (i = 0; i < texHeight; ++i) { - for (j = 0; j < texWidth; ++j) { - if ((i ^ j) & 8) { - p[0] = 0xff; - p[1] = 0xff; - p[2] = 0xff; - p[3] = 0xff; - } else { - p[0] = 0x08; - p[1] = 0x08; - p[2] = 0x08; - p[3] = 0xff; - } - p += 4; - } - } - - glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, texWidth, texHeight, - GL_RGBA, GL_UNSIGNED_BYTE, texPixels); - free(texPixels); -} - -void -setLight(void) -{ - GLfloat light0Pos[4] = - {0.70, 0.70, 1.25, 0.00}; - GLfloat light0Amb[4] = - {0.00, 0.00, 0.00, 1.00}; - GLfloat light0Diff[4] = - {1.00, 1.00, 1.00, 1.00}; - GLfloat light0Spec[4] = - {1.00, 1.00, 1.00, 1.00}; - GLfloat light0SpotDir[3] = - {0.00, 0.00, -1.00}; - GLfloat light0SpotExp = 0.00; - GLfloat light0SpotCutoff = 180.00; - GLfloat light0Atten0 = 1.00; - GLfloat light0Atten1 = 0.00; - GLfloat light0Atten2 = 0.00; - - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, light0Pos); - glLightfv(GL_LIGHT0, GL_AMBIENT, light0Amb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light0Diff); - glLightfv(GL_LIGHT0, GL_SPECULAR, light0Spec); - glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, light0SpotDir); - glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, light0SpotExp); - glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, light0SpotCutoff); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, light0Atten0); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, light0Atten1); - glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, light0Atten2); -} - -#define MAT_ALL 0 -#define MAT_NO_SPECULAR 1 -#define MAT_SPECULAR_ONLY 2 -#define MAT_SPECULAR_TEXTURE_ONLY 3 -#define MAT_GEN_SPECULAR_TEXTURE 4 - -void -setMaterial(int mode) -{ - static GLubyte *texPixels; - int texWidth = 128; - int texHeight = 128; - - GLfloat matZero[4] = - {0.00, 0.00, 0.00, 1.00}; - GLfloat matOne[4] = - {1.00, 1.00, 1.00, 1.00}; - GLfloat matEm[4] = - {0.00, 0.00, 0.00, 1.00}; - GLfloat matAmb[4] = - {0.01, 0.01, 0.01, 1.00}; - GLfloat matDiff[4] = - {0.02, 0.20, 0.16, 1.00}; - GLfloat matSpec[4] = - {0.50, 0.50, 0.50, 1.00}; - GLfloat matShine = 20.00; - - if ((mode == MAT_ALL) || (mode == MAT_NO_SPECULAR)) { - glMaterialfv(GL_FRONT, GL_EMISSION, matEm); - glMaterialfv(GL_FRONT, GL_AMBIENT, matAmb); - glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiff); - } else { - glMaterialfv(GL_FRONT, GL_EMISSION, matZero); - glMaterialfv(GL_FRONT, GL_AMBIENT, matZero); - glMaterialfv(GL_FRONT, GL_DIFFUSE, matZero); - } - - if ((mode == MAT_ALL) || (mode == MAT_SPECULAR_ONLY)) { - glMaterialfv(GL_FRONT, GL_SPECULAR, matSpec); - glMaterialf(GL_FRONT, GL_SHININESS, matShine); - } else { - glMaterialfv(GL_FRONT, GL_SPECULAR, matZero); - glMaterialf(GL_FRONT, GL_SHININESS, 1); - } - - if (mode == MAT_SPECULAR_TEXTURE_ONLY) { - if (texPixels == NULL) { - return; - } - glMaterialfv(GL_FRONT, GL_SPECULAR, matOne); - glMaterialf(GL_FRONT, GL_SHININESS, 0); - - glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, texWidth, texHeight, - GL_RGBA, GL_UNSIGNED_BYTE, texPixels); - } - if (mode == MAT_GEN_SPECULAR_TEXTURE) { - if (texPixels == NULL) { - texPixels = (GLubyte *) - malloc(texWidth * texHeight * 4 * sizeof(GLubyte)); - if (texPixels == NULL) { - return; - } - } - glPushAttrib(GL_ALL_ATTRIB_BITS); - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - setMaterial(MAT_SPECULAR_ONLY); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, 1, 3); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glTranslatef(0, 0, -2); - - glPushMatrix(); - glRotatef(lightRotY, 0, 1, 0); - glRotatef(lightRotX, 1, 0, 0); - setLight(); - glPopMatrix(); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - - glViewport(0, 0, 128, 128); - glClearColor(.25, .25, .25, .25); - glClear(GL_COLOR_BUFFER_BIT); - drawSphere(128, 128, 1.0); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glReadPixels(0, 0, texWidth, texHeight, - GL_RGBA, GL_UNSIGNED_BYTE, texPixels); - - glPopAttrib(); - } -} - -void -initialize(void) -{ - glMatrixMode(GL_PROJECTION); - glFrustum(-0.50, 0.50, -0.50, 0.50, 1.0, 3.0); - glMatrixMode(GL_MODELVIEW); - glTranslatef(0.0, 0.0, -2.0); - - glDepthFunc(GL_LEQUAL); - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); -} - -void -redraw(void) -{ - glClearColor(0.1, 0.1, 0.1, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glBegin(GL_QUADS); - glColor3f(0.9, 0.0, 1.0); - glVertex3f(-2.0, -2.0, -1.0); - glColor3f(0.9, 0.0, 1.0); - glVertex3f(2.0, -2.0, -1.0); - glColor3f(0.0, 0.1, 0.1); - glVertex3f(2.0, 2.0, -1.0); - glColor3f(0.0, 0.1, 0.1); - glVertex3f(-2.0, 2.0, -1.0); - glEnd(); - - glEnable(GL_DEPTH_TEST); - - if (useLighting) { - glEnable(GL_LIGHTING); - glPushMatrix(); - glRotatef(lightRotY, 0, 1, 0); - glRotatef(lightRotX, 1, 0, 0); - setLight(); - glPopMatrix(); - } else { - glColor3f(0.2, 0.2, 0.2); - } - if (useTexture || useSpecularTexture) { - glEnable(GL_TEXTURE_2D); - } - if (useTexture) { - setCheckTexture(); - } else { - setNullTexture(); - } - if (useSpecularTexture) { - /* pass one */ - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ZERO); - setMaterial(MAT_NO_SPECULAR); - } else { - setMaterial(MAT_ALL); - } - glPushMatrix(); - glRotatef(objectRotY, 0, 1, 0); - glRotatef(objectRotX, 1, 0, 0); - if (useHighRes) { - switch (drawObj) { - case 0: - drawSphere(64, 64, 0.8); - break; - case 1: - drawCylinder(32, 64, 1.0, 0.4); - break; - case 2: - drawTorus(64, 64, 0.6, 0.2); - break; - default: - break; - } - } else { - switch (drawObj) { - case 0: - drawSphere(16, 32, 0.8); - break; - case 1: - drawCylinder(6, 16, 1.0, 0.4); - break; - case 2: - drawTorus(32, 16, 0.6, 0.2); - break; - default: - break; - } - } - glPopMatrix(); - - if (useSpecularTexture) { - /* pass two */ - if (!useLighting) { - glColor3f(1.0, 1.0, 1.0); - } - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - - setMaterial(MAT_SPECULAR_TEXTURE_ONLY); - glPushMatrix(); - glRotatef(objectRotY, 0, 1, 0); - glRotatef(objectRotX, 1, 0, 0); - if (useHighRes) { - switch (drawObj) { - case 0: - drawSphere(64, 64, 0.8); - break; - case 1: - drawCylinder(32, 64, 1.0, 0.4); - break; - case 2: - drawTorus(64, 64, 0.6, 0.2); - break; - default: - break; - } - } else { - switch (drawObj) { - case 0: - drawSphere(16, 32, 0.8); - break; - case 1: - drawCylinder(6, 16, 1.0, 0.4); - break; - case 2: - drawTorus(32, 16, 0.6, 0.2); - break; - default: - break; - } - } - glPopMatrix(); - } - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); -} - -void -checkErrors(void) -{ - GLenum error; - while ((error = glGetError()) != GL_NO_ERROR) { - fprintf(stderr, "Error: %s\n", (char *) gluErrorString(error)); - } -} - -void -usage(char *name) -{ - fprintf(stderr, "\n"); - fprintf(stderr, "usage: %s [ options ]\n", name); - fprintf(stderr, "\n"); - fprintf(stderr, " Options:\n"); - fprintf(stderr, " none\n"); - fprintf(stderr, "\n"); -} - -void -help(void) -{ - printf("'h' - help\n"); - printf("'l' - toggle lighting\n"); - printf("'o' - switch objects\n"); - printf("'r' - toggle resolution\n"); - printf("'s' - toggle two pass lighting\n"); - printf("'t' - toggle texturing\n"); - printf("left mouse - move object\n"); - printf("middle mouse - move light\n"); -} - -void -motion(int x, int y) -{ - if (moveLight || moveObject) { - GLfloat dx = (y - cury) * 360.0 / height; - GLfloat dy = (x - curx) * 360.0 / width; - if (moveLight) { - lightRotX += dx; - if (lightRotX > 360) - lightRotX -= 360; - if (lightRotX < 0) - lightRotX += 360; - lightRotY += dy; - if (lightRotY > 360) - lightRotY -= 360; - if (lightRotY < 0) - lightRotY += 360; - needsLightUpdate = GL_TRUE; - } else if (moveObject) { - objectRotX += dx; - if (objectRotX > 360) - objectRotX -= 360; - if (objectRotX < 0) - objectRotX += 360; - objectRotY += dy; - if (objectRotY > 360) - objectRotY -= 360; - if (objectRotY < 0) - objectRotY += 360; - } - curx = x; - cury = y; - } - glutPostRedisplay(); -} - -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) { - switch (button) { - case GLUT_LEFT_BUTTON: - moveObject = GL_TRUE; - motion(curx = x, cury = y); - break; - case GLUT_MIDDLE_BUTTON: - moveLight = GL_TRUE; - motion(curx = x, cury = y); - break; - } - } else if (state == GLUT_UP) { - switch (button) { - case GLUT_LEFT_BUTTON: - moveObject = GL_FALSE; - break; - case GLUT_MIDDLE_BUTTON: - moveLight = GL_FALSE; - break; - } - } -} - -void -display(void) -{ - if (useSpecularTexture && needsLightUpdate) { - setMaterial(MAT_GEN_SPECULAR_TEXTURE); - needsLightUpdate = GL_FALSE; - } - redraw(); - glFlush(); - glutSwapBuffers(); - checkErrors(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, width = w, height = h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'h': - help(); - break; - case ' ': - break; - case 'l': - useLighting = !useLighting; - break; - case 's': - useSpecularTexture = !useSpecularTexture; - needsLightUpdate = GL_TRUE; - break; - case 't': - useTexture = !useTexture; - break; - case 'r': - useHighRes = !useHighRes; - break; - case 'o': - ++drawObj; - if (drawObj > maxObj) - drawObj = 0; - break; - case '\033': - exit(0); - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -domenu(int value) -{ - key((unsigned char) value, 0, 0); -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - glutInitWindowSize(width = 300, height = 300); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); - - for (i = 1; i < argc; ++i) { - usage(argv[0]); - exit(1); - } - win = glutCreateWindow("envphong"); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(domenu); - glutAddMenuEntry("Toggle lighting", 'l'); - glutAddMenuEntry("Toggle checker texture", 't'); - glutAddMenuEntry("Toggle two-pass textured specular", 's'); - glutAddMenuEntry("Toggle object resolution", 'r'); - glutAddMenuEntry("Switch object", 'o'); - glutAddMenuEntry("Print help", 'h'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - initialize(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/envphong.dsp b/lib/glut-3.7.6/progs/advanced/envphong.dsp deleted file mode 100644 index df4a2d73a3fe9dea0a71199626ed59323cc3ec12..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/envphong.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="envphong" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=envphong - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "envphong.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "envphong.mak" CFG="envphong - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "envphong - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "envphong - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "envphong - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "envphong - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "envphong - Win32 Release" -# Name "envphong - Win32 Debug" -# Begin Source File - -SOURCE=.\envphong.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/field.c b/lib/glut-3.7.6/progs/advanced/field.c deleted file mode 100644 index 1019bd56998816316025226d6204e676cf55df59..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/field.c +++ /dev/null @@ -1,258 +0,0 @@ - -/* field.c - by Tom McReynolds, SGI */ - -/* Using the accumulation buffer for depth of field (camera focus blur). */ - -#include -#include -#include - -const GLdouble FRUSTDIM = 100.f; -const GLdouble FRUSTNEAR = 320.f; -const GLdouble FRUSTFAR = 660.f; - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum {SPHERE = 1, CONE}; - -void -render(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); - - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -640.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -640.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -640.f); - glVertex3f(-100.f, 100.f, -640.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -640.f); - glVertex3f( 100.f, -100.f, -640.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -640.f); - glVertex3f( 100.f, 100.f, -640.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -640.f); - glVertex3f( 100.f, -100.f, -640.f); - glVertex3f( 100.f, 100.f, -640.f); - glVertex3f(-100.f, 100.f, -640.f); - glEnd(); - - - glPushMatrix(); - glTranslatef(-80.f, -60.f, -420.f); - glCallList(SPHERE); - glPopMatrix(); - - - glPushMatrix(); - glTranslatef(-20.f, -80.f, -600.f); - glCallList(CONE); - glPopMatrix(); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - - glFlush(); /* high end machines may need this */ -} - -enum {NONE, FIELD}; - -int rendermode = NONE; - -void -menu(int selection) -{ - rendermode = selection; - glutPostRedisplay(); -} - -GLdouble focus = 420.; - -/* Called when window needs to be redrawn */ -void redraw(void) -{ - int i, j; - int min, max; - int count; - GLfloat scale, dx, dy; - - switch(rendermode) { - case NONE: - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, FRUSTNEAR, FRUSTFAR); - glMatrixMode(GL_MODELVIEW); - render(); - break; - case FIELD: - min = -2; - max = -min + 1; - count = -2 * min + 1; - count *= count; - - scale = 2.f; - - glClear(GL_ACCUM_BUFFER_BIT); - - for(j = min; j < max; j++) { - for(i = min; i < max; i++) { - dx = scale * i * FRUSTNEAR/focus; - dy = scale * j * FRUSTNEAR/focus; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM + dx, - FRUSTDIM + dx, - -FRUSTDIM + dy, - FRUSTDIM + dy, - FRUSTNEAR, - FRUSTFAR); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(scale * i, scale * j, 0.f); - render(); - glAccum(GL_ACCUM, 1.f/count); - } - } - glAccum(GL_RETURN, 1.f); - break; - } - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if(key == '\033') - exit(0); -} - - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_ACCUM|GLUT_DOUBLE); - (void)glutCreateWindow("depth of field"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("Normal", NONE); - glutAddMenuEntry("Depth of Field", FIELD); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/advanced/field.dsp b/lib/glut-3.7.6/progs/advanced/field.dsp deleted file mode 100644 index df5cd253fa8ead7352d38ae4b69bb1ebe9d8c4a0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/field.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="field" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=field - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "field.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "field.mak" CFG="field - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "field - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "field - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "field - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "field - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "field - Win32 Release" -# Name "field - Win32 Debug" -# Begin Source File - -SOURCE=.\field.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/genmipmap.c b/lib/glut-3.7.6/progs/advanced/genmipmap.c deleted file mode 100644 index 4eb49765c92a761ebef3125016926148b853f4a4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/genmipmap.c +++ /dev/null @@ -1,192 +0,0 @@ - -/* genmipmap.c - by David Blythe, SGI */ - -/* Example of how to generate texture mipmap levels with the - accumulation buffer. */ - -/* Usage example: genmipmap [file.rgb] */ - -#include -#include -#include -#include -#include "texture.h" - -static int w = 512, h = 512; -static int pause; - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, w, 0, h, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void -init_textures(char *filename) -{ - unsigned *buf; - int width, height, components; - - if (filename) { - buf = read_texture(filename, &width, &height, &components); - if (buf == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(1); - } else { - printf("%d x %d texture loaded\n", width, height); - } - } else { - int i, j; - GLubyte *p; - components = 4; - width = height = 512; - buf = (unsigned *) malloc(width * height * sizeof(unsigned)); - p = (GLubyte *) buf; - for (j = 0; j < height; j++) { - for (i = 0; i < width; i++) { - if (i & 1) - p[4 * (i + j * width) + 0] = 0xff; - else - p[4 * (i + j * width) + 1] = 0xff; - if (j & 1) - p[4 * (i + j * width) + 2] = 0xff; - } - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - buf); - free(buf); -} - -void -init(char *filename) -{ - glEnable(GL_TEXTURE_2D); - init_textures(filename); -} - -void -draw_rect(int w, int h) -{ - glBegin(GL_QUADS); - glTexCoord2f(0, 0); - glVertex2f(0, 0); - glTexCoord2f(1, 0); - glVertex2f(w, 0); - glTexCoord2f(1, 1); - glVertex2f(w, h); - glTexCoord2f(0, 1); - glVertex2f(0, h); - glEnd(); -} - -void -stop(void) -{ - if (pause) { - printf("? "); - fflush(stdout); - getchar(); - } -} - -void -acfilter(int width, int height) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_ACCUM_BUFFER_BIT); - glMatrixMode(GL_TEXTURE); - - if (pause) { - draw_rect(width, height); - stop(); - glClear(GL_COLOR_BUFFER_BIT); - } - draw_rect(width / 2, height / 2); - stop(); - glAccum(GL_ACCUM, 0.25); - - glTranslatef(1.0 / width, 0, 0); - draw_rect(width / 2, height / 2); - stop(); - glAccum(GL_ACCUM, 0.25); - - glLoadIdentity(); - glTranslatef(0, 1.0 / height, 0); - draw_rect(width / 2, height / 2); - stop(); - glAccum(GL_ACCUM, 0.25); - - glLoadIdentity(); - glTranslatef(1.0 / width, 1.0 / height, 0); - draw_rect(width / 2, height / 2); - stop(); - glAccum(GL_ACCUM, 0.25); - - glAccum(GL_RETURN, 1.0); - glMatrixMode(GL_MODELVIEW); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - draw_rect(w, h); - acfilter(w, h); - glFlush(); -} - -void -help(void) -{ - printf("'h' - help\n"); - printf("'s' - toggle single step mode\n"); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'h': - help(); - break; - case 's': - pause ^= 1; - break; - case '\033': - exit(0); - break; - default: - glutPostRedisplay(); - } -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(w, h); - glutInitDisplayMode(GLUT_RGBA | GLUT_ACCUM); - (void) glutCreateWindow("genmipmap"); - if (argc > 1) - init(argv[1]); - else - init(0); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/genmipmap.dsp b/lib/glut-3.7.6/progs/advanced/genmipmap.dsp deleted file mode 100644 index 81f0a44ca7063eeb4301d090c259c2e2eb9663a7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/genmipmap.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="genmipmap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=genmipmap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "genmipmap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "genmipmap.mak" CFG="genmipmap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "genmipmap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "genmipmap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "genmipmap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "genmipmap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "genmipmap - Win32 Release" -# Name "genmipmap - Win32 Debug" -# Begin Source File - -SOURCE=.\genmipmap.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/haloed.c b/lib/glut-3.7.6/progs/advanced/haloed.c deleted file mode 100644 index 211b47cc66cb764000262c0ca2741a1a5ac6add5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/haloed.c +++ /dev/null @@ -1,274 +0,0 @@ - -/* haloed.c - by Tom McReynolds, SGI */ - -/* Draw haloed lines. */ - -#include -#include -#include -#include - -enum {CONE = 1}; - -/* Draw a cone */ -void -cone(void) -{ - glPushMatrix(); - glTranslatef(0.f, 0.f, -30.f); - glCallList(CONE); - glPopMatrix(); -} - -/* Draw a torus */ -void -torus(void) -{ - glutSolidTorus(10., 20., 16, 16); -} - -enum {FILL, WIRE, HALO, OFFSET_HALO, BACKFACE_HALO, TOGGLE}; - -int rendermode = FILL; - -void (*curobj)(void) = cone; - -void -menu(int mode) -{ - if(mode == TOGGLE) - if(curobj == cone) - curobj = torus; - else - curobj = cone; - else - rendermode = mode; - glutPostRedisplay(); -} - -int winWidth = 512; -int winHeight = 512; - -/* used to get current width and height of viewport */ -void -reshape(int wid, int ht) -{ - glViewport(0, 0, wid, ht); - winWidth = wid; - winHeight = ht; -} - -GLfloat viewangle; - - -void -redraw(void) -{ - /* clear stencil each time */ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); - - glPushMatrix(); - glRotatef(viewangle, 0.f, 1.f, 0.f); - - switch(rendermode) { - case FILL: - curobj(); - break; - case WIRE: - glDisable(GL_DEPTH_TEST); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glLineWidth(3.f); - curobj(); - glLineWidth(1.f); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glEnable(GL_DEPTH_TEST); - break; - case HALO: - /* draw wide lines into depth buffer */ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glLineWidth(9.f); - curobj(); - - /* draw narrow lines into color with depth test on */ - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glLineWidth(3.f); - glDepthFunc(GL_LEQUAL); - curobj(); - glDepthFunc(GL_LESS); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glLineWidth(1.f); - break; - case OFFSET_HALO: - /* draw wide lines into depth buffer */ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glLineWidth(9.f); - curobj(); - - /* draw narrow lines into color with depth test on */ - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glLineWidth(3.f); -#if GL_EXT_polygon_offset - glEnable(GL_POLYGON_OFFSET_EXT); - glPolygonOffsetEXT(-.5f, -.02f); -#endif - glDepthFunc(GL_LEQUAL); - curobj(); - glDepthFunc(GL_LESS); -#if GL_EXT_polygon_offset - glDisable(GL_POLYGON_OFFSET_EXT); -#endif - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glLineWidth(1.f); - break; - case BACKFACE_HALO: /* cheat: only works on single non-intersecting obj */ - /* draw wide lines into depth buffer */ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - glLineWidth(3.f); - - curobj(); - - /* mask out borders of objects with wide gray lines */ - glCullFace(GL_BACK); - glLineWidth(9.f); - glDisable(GL_LIGHTING); - glColor3f(.7f, .7f, .7f); - - curobj(); - - /* draw front face narrow lines without depth test */ - glEnable(GL_LIGHTING); - glLineWidth(3.f); - glDisable(GL_DEPTH_TEST); - - curobj(); - - /* clean up */ - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glEnable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - glLineWidth(1.f); - break; - } - - glPopMatrix(); - glutSwapBuffers(); - - if(glGetError()) - printf("oops! Bad gl command!\n"); -} - -/* animate scene by rotating */ -enum {ANIM_LEFT, ANIM_RIGHT}; -int animDirection = ANIM_LEFT; - -void anim(void) -{ - if(animDirection == ANIM_LEFT) - viewangle -= 1.f; - else - viewangle += 1.f; - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -/* special keys, like array and F keys */ -void special(int key, int x, int y) -{ - switch(key) { - case GLUT_KEY_LEFT: - glutIdleFunc(anim); - animDirection = ANIM_LEFT; - break; - case GLUT_KEY_RIGHT: - glutIdleFunc(anim); - animDirection = ANIM_RIGHT; - break; - case GLUT_KEY_UP: - case GLUT_KEY_DOWN: - glutIdleFunc(0); - break; - } -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch(key) { - case 'a': - viewangle -= 10.f; - glutPostRedisplay(); - break; - case 's': - viewangle += 10.f; - glutPostRedisplay(); - break; - case '\033': - exit(0); - } -} - - -int picked_object; -int xpos = 0, ypos = 0; -int newxpos, newypos; -int startx, starty; - -int -main(int argc, char **argv) -{ - static GLfloat lightpos[] = {25.f, 50.f, -50.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_STENCIL|GLUT_DEPTH|GLUT_DOUBLE); - (void)glutCreateWindow("haloed lines"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutSpecialFunc(special); - - glutCreateMenu(menu); - glutAddMenuEntry("Filled Object", FILL); - glutAddMenuEntry("Wireframe", WIRE); - glutAddMenuEntry("Haloed Wireframe", HALO); - glutAddMenuEntry("Pgon Offset Haloed Wireframe", OFFSET_HALO); - glutAddMenuEntry("Backface Haloed Wireframe", BACKFACE_HALO); - glutAddMenuEntry("Toggle Object", TOGGLE); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glClearColor(.7f, .7f, .7f, .7f); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - - - /* make display list for cone; for efficiency */ - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(base, GLU_INSIDE); - gluDisk(base, 0., 25., 8, 1); - gluCylinder(cone, 25., 0., 60., 8, 8); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glMatrixMode(GL_PROJECTION); - glOrtho(-50., 50., -50., 50., -50., 50.); - glMatrixMode(GL_MODELVIEW); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/haloed.dsp b/lib/glut-3.7.6/progs/advanced/haloed.dsp deleted file mode 100644 index af24378b1f5837fed6738a39f6124750e15bc156..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/haloed.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="haloed" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=haloed - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "haloed.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "haloed.mak" CFG="haloed - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "haloed - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "haloed - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "haloed - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "haloed - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "haloed - Win32 Release" -# Name "haloed - Win32 Debug" -# Begin Source File - -SOURCE=.\haloed.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/hello2rts.c b/lib/glut-3.7.6/progs/advanced/hello2rts.c deleted file mode 100644 index 6bc26c60111e155f192347ccb763b8ac5b025935..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/hello2rts.c +++ /dev/null @@ -1,636 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* This code demonstrates use of the OpenGL Real-time Shadowing (RTS) - routines. The program renders two objects with two light sources in a - scene with several other walls and curved surfaces. Objects cast shadows - on the walls and curved surfaces as well as each other. The shadowing - objects spin. See the rts.c and rtshadow.h source code for more details. */ - -#include -#include -#include -#include -#include - -#ifdef GLU_VERSION_1_2 - -#include "rtshadow.h" - -extern GLuint makeNVidiaLogo(GLuint dlistBase); - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -enum { - X, Y, Z -}; - -enum { - DL_NONE, DL_TORUS, DL_CUBE, DL_DOUBLE_TORUS, DL_SPHERE, DL_NVIDIA_LOGO -}; - -enum { - M_TORUS, M_CUBE, M_DOUBLE_TORUS, M_NVIDIA_LOGO, - M_NORMAL_VIEW, M_LIGHT1_VIEW, M_LIGHT2_VIEW, - M_START_MOTION, M_ROTATING, - M_TWO_BIT_STENCIL, M_ALL_STENCIL, - M_RENDER_SILHOUETTE, - M_ENABLE_STENCIL_HACK, M_DISABLE_STENCIL_HACK -}; - -#define OBJECT_1 0x8000 -#define OBJECT_2 0x4000 - -int fullscreen = 0, forceStencilHack = 0; -int lightView = M_NORMAL_VIEW; -int rotate1 = 1, rotate2 = 1; - -RTSscene *scene; -RTSlight *light; -RTSlight *light2; -RTSobject *object, *object2; - -GLfloat eyePos[3] = -{0.0, 0.0, 10.0}; -GLfloat lightPos[4] = -{-3.9, 5.0, 1.0, 1.0}; -GLfloat lightPos2[4] = -{4.0, 5.0, 0.0, 1.0}; -GLfloat objectPos[3] = -{-1.0, 1.0, 0.0}; -GLfloat objectPos2[3] = -{2.0, -2.0, 0.0}; - -GLfloat pink[4] = -{0.75, 0.5, 0.5, 1.0}; -GLfloat greeny[4] = -{0.5, 0.75, 0.5, 1.0}; - -int shape1 = M_TORUS, shape2 = M_CUBE; -int renderSilhouette1, renderSilhouette2; - -GLfloat angle1 = 75.0; -GLfloat angle2 = 75.0; -GLfloat viewAngle = 0.0; -int moving, begin; - -void -renderBasicObject(int shape) -{ - switch (shape) { - case M_TORUS: - glCallList(DL_TORUS); - break; - case M_CUBE: - glCallList(DL_CUBE); - break; - case M_DOUBLE_TORUS: - glCallList(DL_DOUBLE_TORUS); - break; - case M_NVIDIA_LOGO: - glCallList(DL_NVIDIA_LOGO); - break; - } -} - -/* ARGSUSED */ -void -renderObject(void *data) -{ - glPushMatrix(); - glTranslatef(objectPos[X], objectPos[Y], objectPos[Z]); - glRotatef(angle1, 1.0, 1.2, 0.0); - renderBasicObject(shape1); - glPopMatrix(); -} - -/* ARGSUSED */ -void -renderObject2(void *data) -{ - glPushMatrix(); - glTranslatef(objectPos2[X], objectPos2[Y], objectPos2[Z]); - glRotatef(-angle2, 1.3, 0.0, 1.0); - renderBasicObject(shape2); - glPopMatrix(); -} - -/* ARGSUSED1 */ -void -renderScene(GLenum castingLight, void *sceneData, RTSscene * scene) -{ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - switch (lightView) { - case M_NORMAL_VIEW: - gluLookAt(eyePos[X], eyePos[Y], eyePos[Z], - objectPos[X], objectPos[Y], objectPos[Z], - 0.0, 1.0, 0.0); - break; - case M_LIGHT1_VIEW: - gluLookAt(lightPos[X], lightPos[Y], lightPos[Z], - objectPos[X], objectPos[Y], objectPos[Z], - 0.0, 1.0, 0.0); - break; - case M_LIGHT2_VIEW: - gluLookAt(lightPos2[X], lightPos2[Y], lightPos2[Z], - objectPos[X], objectPos[Y], objectPos[Z], - 0.0, 1.0, 0.0); - break; - } - glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - glLightfv(GL_LIGHT1, GL_POSITION, lightPos2); - - glEnable(GL_NORMALIZE); - glPushMatrix(); - glTranslatef(0.0, 8.0, -5.0); - glScalef(3.0, 3.0, 3.0); - glCallList(DL_SPHERE); - glPopMatrix(); - glDisable(GL_NORMALIZE); - - glPushMatrix(); - glTranslatef(-5.0, 0.0, 0.0); - glCallList(DL_SPHERE); - glPopMatrix(); - - glBegin(GL_QUADS); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(-7.5, -7.5, -7.0); - glVertex3f(7.5, -7.5, -7.0); - glVertex3f(7.5, 7.5, -7.0); - glVertex3f(-7.5, 7.5, -7.0); - - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(5.0, -5.0, -5.0); - glVertex3f(5.0, -5.0, 5.0); - glVertex3f(5.0, 5.0, 5.0); - glVertex3f(5.0, 5.0, -5.0); - - glNormal3f(0.0, 1.0, 0.0); - glVertex3f(-5.0, -5.0, -5.0); - glVertex3f(-5.0, -5.0, 5.0); - glVertex3f(5.0, -5.0, 5.0); - glVertex3f(5.0, -5.0, -5.0); - - glEnd(); - - if (castingLight == GL_NONE) { - /* Rendering that is not affected by lighting should be drawn only once. - The time to render it is when no light is casting. */ - glDisable(GL_LIGHTING); - - glColor3fv(pink); - glPushMatrix(); - glTranslatef(lightPos[X], lightPos[Y], lightPos[Z]); - glutSolidSphere(0.3, 8, 8); - glPopMatrix(); - - glColor3fv(greeny); - glPushMatrix(); - glTranslatef(lightPos2[X], lightPos2[Y], lightPos2[Z]); - glutSolidSphere(0.3, 8, 8); - glPopMatrix(); - - glEnable(GL_LIGHTING); - } - renderObject(NULL); - renderObject2(NULL); -} - -void -reshape(int w, int h) -{ - GLfloat wf = w, hf = h; - - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(70.0, wf/hf, 0.5, 30.0); - glMatrixMode(GL_MODELVIEW); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - rtsRenderScene(scene, RTS_USE_SHADOWS); - if (renderSilhouette1) { - glColor3f(0.0, 1.0, 0.0); - rtsRenderSilhouette(scene, light, object); - glColor3f(0.0, 0.0, 1.0); - rtsRenderSilhouette(scene, light2, object); - } - if (renderSilhouette2) { - glColor3f(1.0, 0.0, 0.0); - rtsRenderSilhouette(scene, light, object2); - glColor3f(1.0, 1.0, 0.0); - rtsRenderSilhouette(scene, light2, object2); - } - glutSwapBuffers(); -} - -void -idle(void) -{ - if (rotate1) { - angle1 += 10; - rtsUpdateObjectShape(object); - } - if (rotate2) { - angle2 += 10; - rtsUpdateObjectShape(object2); - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int c, int x, int y) -{ - switch (c) { - case GLUT_KEY_UP: - lightPos[Y] += 0.5; - rtsUpdateLightPos(light, lightPos); - break; - case GLUT_KEY_DOWN: - lightPos[Y] -= 0.5; - rtsUpdateLightPos(light, lightPos); - break; - case GLUT_KEY_RIGHT: - lightPos[X] += 0.5; - rtsUpdateLightPos(light, lightPos); - break; - case GLUT_KEY_LEFT: - lightPos[X] -= 0.5; - rtsUpdateLightPos(light, lightPos); - break; - case GLUT_KEY_PAGE_UP: - lightPos[Z] += 0.5; - rtsUpdateLightPos(light, lightPos); - break; - case GLUT_KEY_PAGE_DOWN: - lightPos[Z] -= 0.5; - rtsUpdateLightPos(light, lightPos); - break; - case GLUT_KEY_HOME: - angle1 += 15; - angle2 += 15; - rtsUpdateObjectShape(object); - rtsUpdateObjectShape(object2); - break; - case GLUT_KEY_END: - angle1 -= 15; - angle2 -= 15; - rtsUpdateObjectShape(object); - rtsUpdateObjectShape(object2); - break; - case GLUT_KEY_F1: - lightView = !lightView; - break; - } - glutPostRedisplay(); -} - -void -updateIdleCallback(void) -{ - if (rotate1 || rotate2) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } -} - -/* ARGSUSED1 */ -void -menuHandler(int value) -{ - switch (value) { - case OBJECT_1 | M_TORUS: - case OBJECT_1 | M_CUBE: - case OBJECT_1 | M_DOUBLE_TORUS: - case OBJECT_1 | M_NVIDIA_LOGO: - shape1 = value & ~OBJECT_1; - rtsUpdateObjectShape(object); - glutPostRedisplay(); - break; - case OBJECT_2 | M_TORUS: - case OBJECT_2 | M_CUBE: - case OBJECT_2 | M_DOUBLE_TORUS: - case OBJECT_2 | M_NVIDIA_LOGO: - shape2 = value & ~OBJECT_2; - rtsUpdateObjectShape(object2); - glutPostRedisplay(); - break; - case M_NORMAL_VIEW: - case M_LIGHT1_VIEW: - case M_LIGHT2_VIEW: - lightView = value; - glutPostRedisplay(); - break; - case M_START_MOTION: - rotate1 = 1; - rotate2 = 1; - glutIdleFunc(idle); - break; - case OBJECT_1 | M_ROTATING: - rotate1 = !rotate1; - updateIdleCallback(); - break; - case OBJECT_2 | M_ROTATING: - rotate2 = !rotate2; - updateIdleCallback(); - break; - case M_ALL_STENCIL: - rtsUpdateUsableStencilBits(scene, ~0); - glutPostRedisplay(); - break; - case M_TWO_BIT_STENCIL: - rtsUpdateUsableStencilBits(scene, 0x3); - glutPostRedisplay(); - break; - case OBJECT_1 | M_RENDER_SILHOUETTE: - renderSilhouette1 = !renderSilhouette1; - glutPostRedisplay(); - break; - case OBJECT_2 | M_RENDER_SILHOUETTE: - renderSilhouette2 = !renderSilhouette2; - glutPostRedisplay(); - break; - case M_ENABLE_STENCIL_HACK: - rtsStencilRenderingInvariantHack(scene, GL_TRUE); - glutPostRedisplay(); - break; - case M_DISABLE_STENCIL_HACK: - rtsStencilRenderingInvariantHack(scene, GL_FALSE); - glutPostRedisplay(); - break; - } -} - -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: - exit(0); - /* NOTREACHED */ - break; - case ' ': - if (rotate1 || rotate2) { - glutIdleFunc(NULL); - rotate1 = 0; - rotate2 = 0; - } else { - glutIdleFunc(idle); - rotate1 = 1; - rotate2 = 1; - } - break; - case '1': - menuHandler(OBJECT_1 | M_TORUS); - break; - case '2': - menuHandler(OBJECT_1 | M_CUBE); - break; - case '3': - menuHandler(OBJECT_1 | M_DOUBLE_TORUS); - break; - case '4': - menuHandler(OBJECT_1 | M_NVIDIA_LOGO); - break; - case '5': - menuHandler(OBJECT_2 | M_TORUS); - break; - case '6': - menuHandler(OBJECT_2 | M_CUBE); - break; - case '7': - menuHandler(OBJECT_2 | M_DOUBLE_TORUS); - break; - case '8': - menuHandler(OBJECT_2 | M_NVIDIA_LOGO); - break; - } -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - updateIdleCallback(); - else - glutIdleFunc(NULL); -} - -void -initMenu(void) -{ - glutCreateMenu(menuHandler); - - glutAddMenuEntry("1 Torus", OBJECT_1 | M_TORUS); - glutAddMenuEntry("1 Cube", OBJECT_1 | M_CUBE); - glutAddMenuEntry("1 Double torus", OBJECT_1 | M_DOUBLE_TORUS); - glutAddMenuEntry("1 NVIDIA logo", OBJECT_1 | M_NVIDIA_LOGO); - - glutAddMenuEntry("2 Torus", OBJECT_2 | M_TORUS); - glutAddMenuEntry("2 Cube", OBJECT_2 | M_CUBE); - glutAddMenuEntry("2 Double torus", OBJECT_2 | M_DOUBLE_TORUS); - glutAddMenuEntry("2 NVIDIA logo", OBJECT_2 | M_NVIDIA_LOGO); - - glutAddMenuEntry("Normal view", M_NORMAL_VIEW); - glutAddMenuEntry("View from light 1", M_LIGHT1_VIEW); - glutAddMenuEntry("View from light 2", M_LIGHT2_VIEW); - - glutAddMenuEntry("Start motion", M_START_MOTION); - glutAddMenuEntry("1 Toggle rotating", OBJECT_1 | M_ROTATING); - glutAddMenuEntry("2 Toggle rotating", OBJECT_2 | M_ROTATING); - - glutAddMenuEntry("Use all stencil", M_ALL_STENCIL); - glutAddMenuEntry("Use only 2 bits stencil", M_TWO_BIT_STENCIL); - - glutAddMenuEntry("1 Toggle silhouette", OBJECT_1 | M_RENDER_SILHOUETTE); - glutAddMenuEntry("2 Toggle silhouette", OBJECT_2 | M_RENDER_SILHOUETTE); - - glutAddMenuEntry("Enable stencil hack", M_ENABLE_STENCIL_HACK); - glutAddMenuEntry("Disable stencil hack", M_DISABLE_STENCIL_HACK); - - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -/* ARGSUSED2 */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - moving = 1; - begin = x; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - if (moving) { - viewAngle = viewAngle + (x - begin); - eyePos[X] = sin(viewAngle * M_PI / 180.0) * 10.0; - eyePos[Z] = cos(viewAngle * M_PI / 180.0) * 10.0; - begin = x; - glutPostRedisplay(); - } -} - -/* XXX RIVA 128 board vendors may change their GL_VENDOR - and GL_RENDERER strings. */ -int -needsStencilRenderingInvariantHack(void) -{ - const char *renderer; - GLint bits; - - renderer = glGetString(GL_RENDERER); - /* Stencil rendering on RIVA 128 and RIVA 128 ZX - is not invariant with stencil-disabled rendering - in 16-bit hardware accelerated mode. */ - if (!strncmp("RIVA 128", renderer, 8)) { - glGetIntegerv(GL_INDEX_BITS, &bits); - return bits == 16; - } - /* Stencil rendering on RIVA 128 and RIVA 128 ZX - is not invariant with stencil-disabled rendering - in 16-bit hardware accelerated mode. 32-bit mode - is invariant (and hardware accelerated though!). */ - if (!strncmp("RIVA TNT", renderer, 8)) { - glGetIntegerv(GL_INDEX_BITS, &bits); - return bits == 16; - } - return 1; -} - -void -parseArgs(int argc, char **argv) -{ - int i; - - for (i=1; i=2 rgb depth samples"); - glutInitDisplayString("stencil>=2 rgb double depth samples"); - glutInit(&argc, argv); - - parseArgs(argc, argv); - - if (fullscreen) { - glutGameModeString("640x480:32@60"); - glutEnterGameMode(); - } else { - glutCreateWindow("Hello to Real Time Shadows"); - } - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutSpecialFunc(special); - glutKeyboardFunc(keyboard); - glutVisibilityFunc(visible); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - /* 0xffffffff means "use as much stencil as is available". */ - scene = rtsCreateScene(eyePos, 0xffffffff, renderScene, NULL); - - glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - glLightfv(GL_LIGHT0, GL_DIFFUSE, pink); - light = rtsCreateLight(GL_LIGHT0, lightPos, 1000.0); - glLightfv(GL_LIGHT1, GL_POSITION, lightPos2); - glLightfv(GL_LIGHT1, GL_DIFFUSE, greeny); - light2 = rtsCreateLight(GL_LIGHT1, lightPos2, 1000.0); - - object = rtsCreateObject(objectPos, 1.0, renderObject, NULL, 100); - object2 = rtsCreateObject(objectPos2, 1.0, renderObject2, NULL, 100); - - rtsAddLightToScene(scene, light); - rtsAddObjectToLight(light, object); - rtsAddObjectToLight(light, object2); - - rtsAddLightToScene(scene, light2); - rtsAddObjectToLight(light2, object); - rtsAddObjectToLight(light2, object2); - - if (forceStencilHack || needsStencilRenderingInvariantHack()) { - /* RIVA 128 and RIVA 128 ZX lack hardware stencil - support and the hardware rasterization path - (non-stenciled) and the software rasterization - path (with stenciling enabled) do not meet the - invariants. */ - rtsStencilRenderingInvariantHack(scene, GL_TRUE); - } - - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - - if (!fullscreen) { - initMenu(); - } - - glNewList(DL_TORUS, GL_COMPILE); - glutSolidTorus(0.2, 0.8, 10, 10); - glEndList(); - - glNewList(DL_CUBE, GL_COMPILE); - glutSolidCube(1.0); - glEndList(); - - glNewList(DL_DOUBLE_TORUS, GL_COMPILE); - glCallList(DL_TORUS); - glRotatef(90.0, 0.0, 1.0, 0.0); - glCallList(DL_TORUS); - glRotatef(-90.0, 0.0, 1.0, 0.0); - glEndList(); - - glNewList(DL_SPHERE, GL_COMPILE); - glutSolidSphere(1.5, 20, 20); - glEndList(); - - makeNVidiaLogo(1000); - glNewList(DL_NVIDIA_LOGO, GL_COMPILE); - glPushMatrix(); - glScalef(.25, .25, .25); - glEnable(GL_NORMALIZE); - glCallList(1000); - glDisable(GL_NORMALIZE); - glPopMatrix(); - glEndList(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -#else -int main(int argc, char** argv) -{ - fprintf(stderr, "This program requires the new tesselator API in GLU 1.2.\n"); - fprintf(stderr, "Your GLU library does not support this new interface, sorry.\n"); - return 0; -} -#endif /* GLU_VERSION_1_2 */ diff --git a/lib/glut-3.7.6/progs/advanced/hello2rts.dsp b/lib/glut-3.7.6/progs/advanced/hello2rts.dsp deleted file mode 100644 index 75628fc210f61f9d681f098488c108cd11ddbd0c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/hello2rts.dsp +++ /dev/null @@ -1,100 +0,0 @@ -# Microsoft Developer Studio Project File - Name="hello2rts" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=hello2rts - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "hello2rts.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "hello2rts.mak" CFG="hello2rts - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "hello2rts - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "hello2rts - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "hello2rts - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "hello2rts - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "hello2rts - Win32 Release" -# Name "hello2rts - Win32 Debug" -# Begin Source File - -SOURCE=.\hello2rts.c -# End Source File -# Begin Source File - -SOURCE=.\nvidia_logo.c -# End Source File -# Begin Source File - -SOURCE=.\rts.c -# End Source File -# Begin Source File - -SOURCE=.\rtshadow.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/hiddenline.c b/lib/glut-3.7.6/progs/advanced/hiddenline.c deleted file mode 100644 index 1e04c9c5244d5ae2174fc12d56cad423411b1f47..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/hiddenline.c +++ /dev/null @@ -1,335 +0,0 @@ - -/* hiddenline.c - by Tom McReynolds, SGI */ - -/* Line Rendering: Hidden line techniques */ - -#include -#include -#include - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum {FILL, WIRE, BACKFACE, FRONTLINES, DEPTH, STENCIL, FAT_STENCIL}; - -int rendermode = FILL; - -void -menu(int selection) -{ - rendermode = selection; - glutPostRedisplay(); -} - - -/* geometry display list names */ -enum {SPHERE = 1, CONE, FLOOR, WALLS}; - -void -drawscene(void) -{ - glEnable(GL_TEXTURE_2D); - glCallList(FLOOR); - glDisable(GL_TEXTURE_2D); - - glCallList(WALLS); - - glPushMatrix(); - glTranslatef(-40.f, -50.f, -400.f); - glCallList(SPHERE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(20.f, -100.f, -420.f); - glCallList(CONE); - glPopMatrix(); -} - -/* do hidden line removal on an object in the scene */ -/* use display lists to represent objects */ -void -hiddenlineobj(GLint dlist) -{ - GLboolean tex2d; - - glGetBooleanv(GL_TEXTURE_2D, &tex2d); - if(tex2d) - glDisable(GL_TEXTURE_2D); - glDisable(GL_LIGHTING); - glColor3f(.7f, .7f, .7f); - - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, 0); /* clear stencil for this object */ - - glCallList(dlist); /* draw filled object in depth buffer */ - - glEnable(GL_LIGHTING); - if(tex2d) - glEnable(GL_TEXTURE_2D); - - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); /* turn off color */ - glDisable(GL_DEPTH_TEST); /* turn off depth */ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glStencilFunc(GL_ALWAYS, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - - glCallList(dlist); /* draw lines into stencil buffer */ - - glStencilFunc(GL_EQUAL, 1 , 1); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - - glCallList(dlist); /* use lines in stencil to stencil out solid pgons */ - - /* clean up state */ - glDisable(GL_STENCIL_TEST); - glDepthFunc(GL_LESS); -} - -void -drawscenestencil(void) -{ - glEnable(GL_TEXTURE_2D); - hiddenlineobj(FLOOR); - glDisable(GL_TEXTURE_2D); - - hiddenlineobj(WALLS); - - glPushMatrix(); - glTranslatef(-40.f, -50.f, -400.f); - hiddenlineobj(SPHERE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(20.f, -100.f, -420.f); - hiddenlineobj(CONE); - glPopMatrix(); -} - -/* Called when window needs to be redrawn */ -void redraw(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); - - switch(rendermode) { - case FILL: - drawscene(); - break; - case WIRE: /* basic wireframe mode */ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - drawscene(); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case BACKFACE: /* use backface culling to clean things up */ - glEnable(GL_CULL_FACE); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - drawscene(); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glDisable(GL_CULL_FACE); - break; - case FRONTLINES: /* use polygon mode line on front, fill on back */ - glPolygonMode(GL_FRONT, GL_LINE); - drawscene(); - glPolygonMode(GL_FRONT, GL_FILL); - break; - case DEPTH: /* use depth buffer to remove hidden lines */ - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - drawscene(); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glDepthFunc(GL_LEQUAL); - drawscene(); - glDepthFunc(GL_LESS); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case STENCIL: /* use stencil to remove hidden lines */ - glEnable(GL_CULL_FACE); - drawscenestencil(); - glDisable(GL_CULL_FACE); - break; - case FAT_STENCIL: /* use stencil with fat lines to fix edges */ - glLineWidth(2.f); - glEnable(GL_CULL_FACE); - drawscenestencil(); - glDisable(GL_CULL_FACE); - glLineWidth(1.f); - break; - } - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - - glFlush(); /* high end machines may need this */ -} - - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if(key == '\033') - exit(0); -} - -const int TEXDIM = 256; - -/* Parse arguments, and set up interface between OpenGL and window system */ -int -main(int argc, char *argv[]) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - GLfloat *tex; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL); - (void)glutCreateWindow("hidden line removal survey"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("Solid Fill", FILL); - glutAddMenuEntry("Wireframe", WIRE); - glutAddMenuEntry("Backface Culling", BACKFACE); - glutAddMenuEntry("Frontface Lines", FRONTLINES); - glutAddMenuEntry("Depth Test", DEPTH); - glutAddMenuEntry("Stencil", STENCIL); - glutAddMenuEntry("Stencil: Fat Lines", FAT_STENCIL); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-100., 100., -100., 100., 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glClearColor(.7f, .7f, .7f, .7f); - - glCullFace(GL_BACK); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 50.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glPushMatrix(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(base, GLU_INSIDE); - gluDisk(base, 0., 40., 20, 1); - gluCylinder(cone, 40., 0., 120., 20, 20); - glPopMatrix(); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glNewList(FLOOR, GL_COMPILE); - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - glEndList(); - - /* walls */ - - glNewList(WALLS, GL_COMPILE); - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glEndList(); - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/advanced/hiddenline.dsp b/lib/glut-3.7.6/progs/advanced/hiddenline.dsp deleted file mode 100644 index ee1a591cfcdd68f1ce7c7331cd3436ef3ffa8f7d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/hiddenline.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="hiddenline" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=hiddenline - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "hiddenline.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "hiddenline.mak" CFG="hiddenline - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "hiddenline - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "hiddenline - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "hiddenline - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "hiddenline - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "hiddenline - Win32 Release" -# Name "hiddenline - Win32 Debug" -# Begin Source File - -SOURCE=.\hiddenline.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/imgproc.c b/lib/glut-3.7.6/progs/advanced/imgproc.c deleted file mode 100644 index 771bb5263d675828c34385335a6d783db4a38584..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/imgproc.c +++ /dev/null @@ -1,288 +0,0 @@ - -/* imgproc.c - by David Blythe, SGI */ - -/* Examples of various image processing operations coded as OpenGL - accumulation buffer operations. This allows extremely fast - image processing on machines with hardware accumulation buffers - (RealityEngine, InfiniteReality, VGX). */ - -#include -#include -#include -#include -#include "texture.h" - -static unsigned *image, *null; -static int width, height, components; -static void (*func) (void); -static float alpha = 1.; -static float luma = .5; -static int reset = 1; -static int format = GL_RGBA; - -void -brighten(void) -{ - if (reset) { - memset(null, 0, width * height * sizeof *null); - reset = 0; - } - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, image); - glAccum(GL_LOAD, alpha / 2.); - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, null); - glAccum(GL_ACCUM, (1 - alpha) / 2.); - glAccum(GL_RETURN, 2.0); -} - -void -saturate(void) -{ - if (reset) { - memset(null, 0xff, width * height * sizeof *null); - reset = 0; - } - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, image); - glAccum(GL_LOAD, alpha / 2.); - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, null); - glAccum(GL_ACCUM, (1 - alpha) / 2.); - glAccum(GL_RETURN, 2.0); -} - -void -contrast(void) -{ - if (reset) { - memset(null, luma, width * height * sizeof *null); - reset = 0; - } - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, image); - glAccum(GL_LOAD, alpha / 2.); - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, null); - glAccum(GL_ACCUM, (1 - alpha) / 2.); - glAccum(GL_RETURN, 2.0); -} - -void -balance(void) -{ - if (reset) { - memset(null, luma, width * height * sizeof *null); - reset = 0; - } - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, image); - glAccum(GL_LOAD, alpha / 2.); - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, null); - glAccum(GL_ACCUM, (1 - alpha) / 2.); - glAccum(GL_RETURN, 2.0); -} - -void -sharpen(void) -{ - if (reset) { - gluScaleImage(format, width, height, GL_UNSIGNED_BYTE, image, - width / 4, height / 4, GL_UNSIGNED_BYTE, null); - gluScaleImage(format, width / 4, height / 4, GL_UNSIGNED_BYTE, null, - width, height, GL_UNSIGNED_BYTE, null); - reset = 0; - } - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, image); - glAccum(GL_LOAD, alpha / 2.); - glDrawPixels(width, height, format, GL_UNSIGNED_BYTE, null); - glAccum(GL_ACCUM, (1 - alpha) / 2.); - glAccum(GL_RETURN, 2.0); -} - -void -set_brighten(void) -{ - func = brighten; - reset = 1; - printf("brighten\n"); -} - -void -set_saturate(void) -{ - func = saturate; - reset = 1; - printf("saturate\n"); -} - -void -set_contrast(void) -{ - func = contrast; - reset = 1; - printf("contrast\n"); -} - -void -set_balance(void) -{ - func = balance; - reset = 1; - printf("balance\n"); -} - -void -set_sharpen(void) -{ - func = sharpen; - reset = 1; - printf("sharpen\n"); -} - -void -help(void) -{ - printf("'h' - help\n"); - printf("'b' - brighten\n"); - printf("'s' - saturate\n"); - printf("'c' - contrast\n"); - printf("'z' - sharpen\n"); - printf("'a' - color balance\n"); - printf("left mouse - increase alpha\n"); - printf("middle mouse - decrease alpha\n"); -} - -void -init(char *filename) -{ - double l = 0; - int i; - - func = brighten; - - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(1); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components < 3 || components > 4) { - printf("must be RGB or RGBA image\n"); - exit(1); - } - } else { - int i, j; - components = 4; - width = height = 512; - image = (unsigned *) malloc(width * height * sizeof(unsigned)); - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - if (i & 1) - image[i + j * width] = 0xff; - else - image[i + j * width] = 0xff00; - if (j & 1) - image[i + j * width] |= 0xff0000; - } - - } - null = (unsigned *) malloc(width * height * sizeof *image); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glClearColor(.25, .25, .25, .25); - - /* compute luminance */ - for (i = 0; i < width * height; i++) { - GLubyte *p = (GLubyte *) (image + i); - double r = p[0] / 255.; - double g = p[1] / 255.; - double b = p[2] / 255.; - l += r * .3086 + g * .0820 + b * .114; - } - luma = l / (width * height); - printf("average luminance = %f\n", luma); -} - -void -display(void) -{ - printf("alpha = %f\n", alpha); - glClear(GL_COLOR_BUFFER_BIT); - (*func) (); - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0., (GLdouble) width, 0., (GLdouble) height, -1., 1.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'b': - set_brighten(); - break; - case 's': - set_saturate(); - break; - case 'c': - set_contrast(); - break; - case 'z': - set_sharpen(); - break; - case 'a': - set_balance(); - break; - case 'h': - help(); - break; - case '\033': - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - -/* ARGSUSED2 */ -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) { - switch (button) { - case GLUT_LEFT_BUTTON: - alpha += .1; - break; - case GLUT_MIDDLE_BUTTON: - alpha -= .1; - break; - case GLUT_RIGHT_BUTTON: - break; - } - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA | GLUT_ACCUM | GLUT_DOUBLE); - (void) glutCreateWindow("imgproc"); - init(argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/imgproc.dsp b/lib/glut-3.7.6/progs/advanced/imgproc.dsp deleted file mode 100644 index 477c7a3a12eb8583fdecaa1673c24df7404a2e1e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/imgproc.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="imgproc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=imgproc - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "imgproc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "imgproc.mak" CFG="imgproc - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "imgproc - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "imgproc - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "imgproc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "imgproc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "imgproc - Win32 Release" -# Name "imgproc - Win32 Debug" -# Begin Source File - -SOURCE=.\imgproc.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/izoom.c b/lib/glut-3.7.6/progs/advanced/izoom.c deleted file mode 100644 index b0742dd32fe50a8a0528837bded3c2c54ba5007a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/izoom.c +++ /dev/null @@ -1,671 +0,0 @@ -/** - ** izoom- - ** Magnify or minify a picture with or without filtering. The - ** filtered method is one pass, uses 2-d convolution, and is optimized - ** by integer arithmetic and precomputation of filter coeffs. - ** - ** Paul Haeberli - 1988 - **/ -#include -#include -#include -#include -#include "izoom.h" - -#ifdef _WIN32 -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#endif - -typedef struct filtinteg { - float rad, min, max; - float *tab; -} filtinteg; - -float flerp(float f0, float f1, float p); - -#define GRIDTOFLOAT(pos,n) (((pos)+0.5)/(n)) -#define FLOATTOGRID(pos,n) ((pos)*(n)) -#define SHIFT 12 -#define ONE (1<rad) -#define FILTTABSIZE 250 - -static void makexmap(short *abuf, short *xmap[], int anx, int bnx); -static void setintrow(int *buf, int val, int n); -static void xscalebuf(short *xmap[], short *bbuf, int bnx); -static void addrow(int *iptr, short *sptr, int w, int n); -static void divrow(int *iptr, short *sptr, int tot, int n); -static FILTER *makefilt(short *abuf, int anx, int bnx, int *maxn); -static void freefilt(FILTER * filt, int n); -static void applyxfilt(short *bbuf, FILTER * xfilt, int bnx); -float filterinteg(float bmin, float bmax, float blurf); -static void mitchellinit(float b, float c); -static void clamprow(short *iptr, short *optr, int n); - -float filt_box(float x); -float filt_triangle(float x); -float filt_quadratic(float x); -float filt_mitchell(float x); -float filt_gaussian(float x); - -static int (*xfiltfunc) (short *, int); -static float blurfactor; -int izoomdebug; - -static filtinteg *shapeBOX; -static filtinteg *shapeTRIANGLE; -static filtinteg *shapeQUADRATIC; -static filtinteg *shapeMITCHELL; -static filtinteg *shapeGAUSSIAN; -static filtinteg *shape; - -static filtinteg * -integrate(float (*filtfunc) (float), float rad) -{ - int i; - float del, x, min, max; - double tot; - filtinteg *filt; - - min = -rad; - max = rad; - del = 2 * rad; - tot = 0.0; - filt = (filtinteg *) malloc(sizeof(filtinteg)); - filt->rad = rad; - filt->min = min; - filt->max = max; - filt->tab = (float *) malloc(FILTTABSIZE * sizeof(float)); - for (i = 0; i < FILTTABSIZE; i++) { - x = min + (del * i / (FILTTABSIZE - 1.0)); - tot = tot + filtfunc(x); - filt->tab[i] = tot; - } - for (i = 0; i < FILTTABSIZE; i++) - filt->tab[i] /= tot; - return filt; -} - -float -filterinteg(float bmin, float bmax, float blurf) -{ - int i1, i2; - float f1, f2; - float *tab; - float mult; - - bmin /= blurf; - bmax /= blurf; - tab = shape->tab; - mult = (FILTTABSIZE - 1.0) / (2.0 * shape->rad); - - f1 = ((bmin - shape->min) * mult); - i1 = floor(f1); - f1 = f1 - i1; - if (i1 < 0) - f1 = 0.0; - else if (i1 >= (FILTTABSIZE - 1)) - f1 = 1.0; - else - f1 = flerp(tab[i1], tab[i1 + 1], f1); - - f2 = ((bmax - shape->min) * mult); - i2 = floor(f2); - f2 = f2 - i2; - if (i2 < 0) - f2 = 0.0; - else if (i2 >= (FILTTABSIZE - 1)) - f2 = 1.0; - else - f2 = flerp(tab[i2], tab[i2 + 1], f2); - return f2 - f1; -} - -void -setfiltertype(int filttype) -{ - switch (filttype) { - case IMPULSE: - shape = 0; - break; - case BOX: - if (!shapeBOX) - shapeBOX = integrate(filt_box, 0.5); - shape = shapeBOX; - break; - case TRIANGLE: - if (!shapeTRIANGLE) - shapeTRIANGLE = integrate(filt_triangle, 1.0); - shape = shapeTRIANGLE; - break; - case QUADRATIC: - if (!shapeQUADRATIC) - shapeQUADRATIC = integrate(filt_quadratic, 1.5); - shape = shapeQUADRATIC; - break; - case MITCHELL: - if (!shapeMITCHELL) - shapeMITCHELL = integrate(filt_mitchell, 2.0); - shape = shapeMITCHELL; - break; - case GAUSSIAN: - if (!shapeGAUSSIAN) - shapeGAUSSIAN = integrate(filt_gaussian, 1.5); - shape = shapeGAUSSIAN; - break; - } -} - -void -copyimage(getfunc_t getfunc, getfunc_t putfunc, int nx, int ny) -{ - int y; - short *abuf; - - abuf = (short *) malloc(nx * sizeof(short)); - for (y = 0; y < ny; y++) { - getfunc(abuf, y); - putfunc(abuf, y); - } - free(abuf); -} - -/* general zoom follows */ -zoom * -newzoom(getfunc_t getfunc, int anx, int any, int bnx, int bny, int filttype, float blur) -{ - zoom *z; - int i; - - setfiltertype(filttype); - z = (zoom *) malloc(sizeof(zoom)); - z->getfunc = getfunc; - z->abuf = (short *) malloc(anx * sizeof(short)); - z->bbuf = (short *) malloc(bnx * sizeof(short)); - z->anx = anx; - z->any = any; - z->bnx = bnx; - z->bny = bny; - z->curay = -1; - z->y = 0; - z->type = filttype; - if (filttype == IMPULSE) { - if (z->anx != z->bnx) { - z->xmap = (short **) malloc(z->bnx * sizeof(short *)); - makexmap(z->abuf, z->xmap, z->anx, z->bnx); - } - } else { - blurfactor = blur; - if (filttype == MITCHELL) - z->clamp = 1; - else - z->clamp = 0; - z->tbuf = (short *) malloc(bnx * sizeof(short)); - z->xfilt = makefilt(z->abuf, anx, bnx, &z->nrows); - z->yfilt = makefilt(0, any, bny, &z->nrows); - z->filtrows = (short **) malloc(z->nrows * sizeof(short *)); - for (i = 0; i < z->nrows; i++) - z->filtrows[i] = (short *) malloc(z->bnx * sizeof(short)); - z->accrow = (int *) malloc(z->bnx * sizeof(int)); - z->ay = 0; - } - return z; -} - -void -getzoomrow(zoom * z, short *buf, int y) -{ - float fy; - int ay; - FILTER *f; - int i, max; - short *row; - - if (y == 0) { - z->curay = -1; - z->y = 0; - z->ay = 0; - } - if (z->type == IMPULSE) { - fy = GRIDTOFLOAT(z->y, z->bny); - ay = FLOATTOGRID(fy, z->any); - if (z->anx == z->bnx) { - if (z->curay != ay) { - z->getfunc(z->abuf, ay); - z->curay = ay; - if (xfiltfunc) - xfiltfunc(z->abuf, z->bnx); - } - memcpy(buf, z->abuf, z->bnx * sizeof(short)); - } else { - if (z->curay != ay) { - z->getfunc(z->abuf, ay); - xscalebuf(z->xmap, z->bbuf, z->bnx); - z->curay = ay; - if (xfiltfunc) - xfiltfunc(z->bbuf, z->bnx); - } - memcpy(buf, z->bbuf, z->bnx * sizeof(short)); - } - } else if (z->any == 1 && z->bny == 1) { - z->getfunc(z->abuf, z->ay++); - applyxfilt(z->filtrows[0], z->xfilt, z->bnx); - if (xfiltfunc) - xfiltfunc(z->filtrows[0], z->bnx); - if (z->clamp) { - clamprow(z->filtrows[0], z->tbuf, z->bnx); - memcpy(buf, z->tbuf, z->bnx * sizeof(short)); - } else { - memcpy(buf, z->filtrows[0], z->bnx * sizeof(short)); - } - } else { - f = z->yfilt + z->y; - max = (int) (sizeof(f->dat) / sizeof(short) + (f->n - 1)); - while (z->ay <= max) { - z->getfunc(z->abuf, z->ay++); - row = z->filtrows[0]; - for (i = 0; i < (z->nrows - 1); i++) - z->filtrows[i] = z->filtrows[i + 1]; - z->filtrows[z->nrows - 1] = row; - applyxfilt(z->filtrows[z->nrows - 1], z->xfilt, z->bnx); - if (xfiltfunc) - xfiltfunc(z->filtrows[z->nrows - 1], z->bnx); - } - if (f->n == 1) { - if (z->clamp) { - clamprow(z->filtrows[z->nrows - 1], z->tbuf, z->bnx); - memcpy(buf, z->tbuf, z->bnx * sizeof(short)); - } else { - memcpy(buf, z->filtrows[z->nrows - 1], z->bnx * sizeof(short)); - } - } else { - setintrow(z->accrow, f->halftotw, z->bnx); - for (i = 0; i < f->n; i++) - addrow(z->accrow, z->filtrows[i + (z->nrows - 1) - (f->n - 1)], - f->w[i], z->bnx); - divrow(z->accrow, z->bbuf, f->totw, z->bnx); - if (z->clamp) { - clamprow(z->bbuf, z->tbuf, z->bnx); - memcpy(buf, z->tbuf, z->bnx * sizeof(short)); - } else { - memcpy(buf, z->bbuf, z->bnx * sizeof(short)); - } - } - } - z->y++; -} - -static void -setintrow(int *buf, int val, int n) -{ - while (n >= 8) { - buf[0] = val; - buf[1] = val; - buf[2] = val; - buf[3] = val; - buf[4] = val; - buf[5] = val; - buf[6] = val; - buf[7] = val; - buf += 8; - n -= 8; - } - while (n--) - *buf++ = val; -} - -void -freezoom(zoom * z) -{ - int i; - - if (z->type == IMPULSE) { - if (z->anx != z->bnx) - free(z->xmap); - } else { - freefilt(z->xfilt, z->bnx); - freefilt(z->yfilt, z->bny); - free(z->tbuf); - for (i = 0; i < z->nrows; i++) - free(z->filtrows[i]); - free(z->filtrows); - free(z->accrow); - } - free(z->abuf); - free(z->bbuf); - free(z); - -} - -void -filterzoom(getfunc_t getfunc, getfunc_t putfunc, int anx, int any, int bnx, int bny, int filttype, float blur) -{ - zoom *z; - int y; - short *buf; - - buf = (short *) malloc(bnx * sizeof(short)); - z = newzoom(getfunc, anx, any, bnx, bny, filttype, blur); - for (y = 0; y < bny; y++) { - getzoomrow(z, buf, y); - putfunc(buf, y); - } - freezoom(z); - free(buf); -} - -/* impulse zoom utilities */ -static void -makexmap(short *abuf, short *xmap[], int anx, int bnx) -{ - int x, ax; - float fx; - - for (x = 0; x < bnx; x++) { - fx = GRIDTOFLOAT(x, bnx); - ax = FLOATTOGRID(fx, anx); - xmap[x] = abuf + ax; - } -} - -static void -xscalebuf(short *xmap[], short *bbuf, int bnx) -{ - while (bnx >= 8) { - bbuf[0] = *(xmap[0]); - bbuf[1] = *(xmap[1]); - bbuf[2] = *(xmap[2]); - bbuf[3] = *(xmap[3]); - bbuf[4] = *(xmap[4]); - bbuf[5] = *(xmap[5]); - bbuf[6] = *(xmap[6]); - bbuf[7] = *(xmap[7]); - bbuf += 8; - xmap += 8; - bnx -= 8; - } - while (bnx--) - *bbuf++ = *(*xmap++); -} - -void -zoomxfilt(int (*filtfunc) (short *, int)) -{ - xfiltfunc = filtfunc; -} - -/* filter zoom utilities */ -static void -addrow(int *iptr, short *sptr, int w, int n) -{ - while (n >= 8) { - iptr[0] += (w * sptr[0]); - iptr[1] += (w * sptr[1]); - iptr[2] += (w * sptr[2]); - iptr[3] += (w * sptr[3]); - iptr[4] += (w * sptr[4]); - iptr[5] += (w * sptr[5]); - iptr[6] += (w * sptr[6]); - iptr[7] += (w * sptr[7]); - iptr += 8; - sptr += 8; - n -= 8; - } - while (n--) - *iptr++ += (w * *sptr++); -} - -static void -divrow(int *iptr, short *sptr, int tot, int n) -{ - while (n >= 8) { - sptr[0] = iptr[0] / tot; - sptr[1] = iptr[1] / tot; - sptr[2] = iptr[2] / tot; - sptr[3] = iptr[3] / tot; - sptr[4] = iptr[4] / tot; - sptr[5] = iptr[5] / tot; - sptr[6] = iptr[6] / tot; - sptr[7] = iptr[7] / tot; - sptr += 8; - iptr += 8; - n -= 8; - } - while (n--) - *sptr++ = (*iptr++) / tot; -} - -static FILTER * -makefilt(short *abuf, int anx, int bnx, int *maxn) -{ - FILTER *f, *filter; - int x, n; - float bmin, bmax, bcent, brad; - float fmin, fmax, acent, arad; - int amin, amax; - float coverscale; - - if (izoomdebug) - fprintf(stderr, "makefilt\n"); - f = filter = (FILTER *) malloc(bnx * sizeof(FILTER)); - *maxn = 0; - if (bnx < anx) { - coverscale = ((float) anx / bnx * ONE) / 2.0; - brad = FILTERRAD / bnx; - for (x = 0; x < bnx; x++) { - bcent = ((float) x + 0.5) / bnx; - amin = floor((bcent - brad) * anx + EPSILON); - amax = floor((bcent + brad) * anx - EPSILON); - if (amin < 0) - amin = 0; - if (amax >= anx) - amax = anx - 1; - f->n = 1 + amax - amin; - f->dat = abuf + amin; - f->w = (short *) malloc(f->n * sizeof(short)); - f->totw = 0; - if (izoomdebug) - fprintf(stderr, "| "); - for (n = 0; n < f->n; n++) { - bmin = bnx * ((((float) amin + n) / anx) - bcent); - bmax = bnx * ((((float) amin + n + 1) / anx) - bcent); - f->w[n] = floor((coverscale * filterinteg(bmin, bmax, blurfactor)) + 0.5); - if (izoomdebug) - fprintf(stderr, "%d ", f->w[n]); - f->totw += f->w[n]; - } - f->halftotw = f->totw / 2; - if (f->n > *maxn) - *maxn = f->n; - f++; - } - } else { - coverscale = ((float) bnx / anx * ONE) / 2.0; - arad = FILTERRAD / anx; - for (x = 0; x < bnx; x++) { - bmin = ((float) x) / bnx; - bmax = ((float) x + 1.0) / bnx; - amin = floor((bmin - arad) * anx + (0.5 + EPSILON)); - amax = floor((bmax + arad) * anx - (0.5 + EPSILON)); - if (amin < 0) - amin = 0; - if (amax >= anx) - amax = anx - 1; - f->n = 1 + amax - amin; - f->dat = abuf + amin; - f->w = (short *) malloc(f->n * sizeof(short)); - f->totw = 0; - if (izoomdebug) - fprintf(stderr, "| "); - for (n = 0; n < f->n; n++) { - acent = (amin + n + 0.5) / anx; - fmin = anx * (bmin - acent); - fmax = anx * (bmax - acent); - f->w[n] = floor((coverscale * filterinteg(fmin, fmax, blurfactor)) + 0.5); - if (izoomdebug) - fprintf(stderr, "%d ", f->w[n]); - f->totw += f->w[n]; - } - f->halftotw = f->totw / 2; - if (f->n > *maxn) - *maxn = f->n; - f++; - } - } - if (izoomdebug) - fprintf(stderr, "|\n"); - return filter; -} - -static void -freefilt(FILTER * filt, int n) -{ - FILTER *f; - - f = filt; - while (n--) { - free(f->w); - f++; - } - free(filt); -} - -static void -applyxfilt(short *bbuf, FILTER * xfilt, int bnx) -{ - short *w; - short *dptr; - int n, val; - - while (bnx--) { - if ((n = xfilt->n) == 1) { - *bbuf++ = *xfilt->dat; - } else { - w = xfilt->w; - dptr = xfilt->dat; - val = xfilt->halftotw; - n = xfilt->n; - while (n--) - val += *w++ * *dptr++; - *bbuf++ = val / xfilt->totw; - } - xfilt++; - } -} - -/* filter shape functions follow */ -float -filt_box(float x) -{ - if (x < -0.5) - return 0.0; - if (x < 0.5) - return 1.0; - return 0.0; -} - -float -filt_triangle(float x) -{ - if (x < -1.0) - return 0.0; - if (x < 0.0) - return 1.0 + x; - if (x < 1.0) - return 1.0 - x; - return 0.0; -} - -float -filt_quadratic(float x) -{ - if (x < -1.5) - return 0.0; - if (x < -0.5) - return 0.5 * (x + 1.5) * (x + 1.5); - if (x < 0.5) - return 0.75 - (x * x); - if (x < 1.5) - return 0.5 * (x - 1.5) * (x - 1.5); - return 0.0; -} - -static float p0, p2, p3, q0, q1, q2, q3; - -/* see Mitchell&Netravali, "Reconstruction Filters in Computer Graphics", - SIGGRAPH 88. Mitchell code provided by Paul Heckbert. */ - -float -filt_mitchell(float x) -{ /* Mitchell & Netravali's two-param cubic */ - static int mitfirsted; - - if (!mitfirsted) { - mitchellinit(1.0f / 3.0f, 1.0f / 3.0f); - mitfirsted = 1; - } - if (x < -2.0) - return 0.0; - if (x < -1.0) - return (q0 - x * (q1 - x * (q2 - x * q3))); - if (x < 0.0) - return (p0 + x * x * (p2 - x * p3)); - if (x < 1.0) - return (p0 + x * x * (p2 + x * p3)); - if (x < 2.0) - return (q0 + x * (q1 + x * (q2 + x * q3))); - return 0.0; -} - -static void -mitchellinit(float b, float c) -{ - p0 = (6.0 - 2.0 * b) / 6.0; - p2 = (-18.0 + 12.0 * b + 6.0 * c) / 6.0; - p3 = (12.0 - 9.0 * b - 6.0 * c) / 6.0; - q0 = (8.0 * b + 24.0 * c) / 6.0; - q1 = (-12.0 * b - 48.0 * c) / 6.0; - q2 = (6.0 * b + 30.0 * c) / 6.0; - q3 = (-b - 6.0 * c) / 6.0; -} - -#define NARROWNESS 1.5 - -float -filt_gaussian(float x) -{ - x = x * NARROWNESS; - return (1.0 / exp(x * x) - 1.0 / exp(1.5 * NARROWNESS * 1.5 * NARROWNESS)); -} - -float -flerp(float f0, float f1, float p) -{ - return ((f0 * (1.0 - p)) + (f1 * p)); -} - -#define DOCLAMP(iptr,optr) *(optr) = ((*(iptr)<0) ? 0 : (*(iptr)>255) ? 255 : *(iptr)) - -static void -clamprow(short *iptr, short *optr, int n) -{ - while (n >= 8) { - DOCLAMP(iptr + 0, optr + 0); - DOCLAMP(iptr + 1, optr + 1); - DOCLAMP(iptr + 2, optr + 2); - DOCLAMP(iptr + 3, optr + 3); - DOCLAMP(iptr + 4, optr + 4); - DOCLAMP(iptr + 5, optr + 5); - DOCLAMP(iptr + 6, optr + 6); - DOCLAMP(iptr + 7, optr + 7); - iptr += 8; - optr += 8; - n -= 8; - } - while (n--) { - DOCLAMP(iptr, optr); - iptr++; - optr++; - } -} diff --git a/lib/glut-3.7.6/progs/advanced/izoom.h b/lib/glut-3.7.6/progs/advanced/izoom.h deleted file mode 100644 index 1c0f4068723e7772b2fd5d37ce0082fa6457db92..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/izoom.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef IZOOMDEF -#define IZOOMDEF - -/** - ** header for izoom- - ** Magnify or minify a picture with or without filtering. The - ** filtered method is one pass, uses 2-d convolution, and is optimized - ** by integer arithmetic and precomputation of filter coeffs. - ** - ** Paul Haeberli - 1988 - **/ - -#define IMPULSE 1 -#define BOX 2 -#define TRIANGLE 3 -#define QUADRATIC 4 -#define MITCHELL 5 -#define GAUSSIAN 6 - -typedef struct FILTER { - int n, totw, halftotw; - short *dat; - short *w; -} FILTER; - -typedef void (*getfunc_t) (short *, int); - -typedef struct zoom { - getfunc_t getfunc; - short *abuf; - short *bbuf; - int anx, any; - int bnx, bny; - short **xmap; - int type; - int curay; - int y; - FILTER *xfilt, *yfilt; /* stuff for fitered zoom */ - short *tbuf; - int nrows, clamp, ay; - short **filtrows; - int *accrow; -} zoom; - -zoom *newzoom(getfunc_t getfunc, int anx, int any, int bnx, int bny, int filttype, float blur); -float filterinteg(float bmin, float bmax, float blurf); -void filterzoom(getfunc_t getfunc, getfunc_t putfunc, int anx, int any, int bnx, int bny, int filttype, float blur); - -#endif diff --git a/lib/glut-3.7.6/progs/advanced/logopoints.h b/lib/glut-3.7.6/progs/advanced/logopoints.h deleted file mode 100644 index 3925e765971a40e4cb770c37e31033de939d5337..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/logopoints.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * logopoints.h - * - * contains the data for one-third of the complete SGI "box" logo. this - * data is centered at the origin. The complete logo is created by scaling, - * rotating and translating the initial data points specified here. - */ - -#define Ax 0.0 -#define Ay 0.104 - -#define Bx 0.231 -#define By 0.237 - -#define Cx 0.113 -#define Cy 0.3051 - -#define Dx 0.113 -#define Dy 0.192 - -#define Ex 0.023 -#define Ey 0.14 - -#define Fx 0.023 -#define Fy 0.461 - -#define Gx 0.411 -#define Gy 0.237 - -#define Z 0.0 - -/* Radius of round corners */ -#define LOGO_RADIUS .1 diff --git a/lib/glut-3.7.6/progs/advanced/mipmap_lines.c b/lib/glut-3.7.6/progs/advanced/mipmap_lines.c deleted file mode 100644 index 64afdc48886a2cc5c155be4c7bdcf601d67b80a6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/mipmap_lines.c +++ /dev/null @@ -1,301 +0,0 @@ - -/* mipmap_lines.c - by David Blythe, SGI */ - -/* Different mipmap filters. */ - -#include -#include -#include -#include -#include "texture.h" -#include "izoom.h" - -static int w = 1024, h = 512; - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, (GLfloat) w / (GLfloat) h, 1.0, 20.0); - - gluLookAt(0, 1, 3, - 0, 0, 0, - 0, 1, 0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -int original_width, reduced_width, global_comp; -unsigned *original, *reduced; - -void -getimgrow(short *buf, int y) -{ - int i; - unsigned *p = &original[y * original_width]; - int shift = global_comp * 8; - unsigned int mask = 0xff << shift; - - for (i = 0; i < original_width; i++) { - buf[i] = (p[i] & mask) >> shift; - } -} - -void -putimgrow(short *buf, int y) -{ - int i; - unsigned *p = &reduced[y * reduced_width]; - int shift = global_comp * 8; - unsigned int mask = 0xff << shift; - - for (i = 0; i < reduced_width; i++) { - p[i] = (p[i] & ~mask) | (buf[i] << shift); - } -} - -void -buildMitchellMipmaps(int components, int width, int height, unsigned - *buf) -{ - int level = 0; - - original_width = width; - original = buf; - glTexImage2D(GL_TEXTURE_2D, level, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - original); - while (width) { - reduced_width = width / 2; - for (global_comp = 0; global_comp < 4; global_comp++) { - filterzoom(getimgrow, putimgrow, width, height, width / 2, - height / 2, MITCHELL, 1.); - } - glTexImage2D(GL_TEXTURE_2D, ++level, components, width / 2, - height / 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, - reduced); - width /= 2, height /= 2; - memcpy(original, reduced, width * height * sizeof(unsigned)); - original_width = width; - printf("build level %d\n", level); - } -} - -int width = 256, height = 256; -int grid_space = 4; - -void -init_textures(char *filename) -{ - unsigned *buf; - int components; - - if (filename) { - buf = read_texture(filename, &width, &height, &components); - if (buf == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(1); - } else { - printf("%d x %d texture loaded\n", width, height); - } - } else { - int i, j; - components = 4; - buf = (unsigned *) malloc(width * height * sizeof(unsigned)); - for (i = 0; i < height; i++) - for (j = 0; j < width; j++) - if ((i % grid_space) && (j % grid_space)) - buf[i * width + j] = 0xffffffff; - else - buf[i * width + j] = 0; - } - -#ifdef GL_EXT_texture_object - glBindTextureEXT(GL_TEXTURE_2D, 1); -#else - glNewList(1001, GL_COMPILE); -#endif - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - gluBuild2DMipmaps(GL_TEXTURE_2D, components, width, height, GL_RGBA, - GL_UNSIGNED_BYTE, buf); -#ifndef GL_EXT_texture_object - glEndList(); -#endif - -#ifdef GL_EXT_texture_object - glBindTextureEXT(GL_TEXTURE_2D, 2); -#else - glNewList(1002, GL_COMPILE); -#endif - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - reduced = (unsigned *) malloc(width * height * sizeof(unsigned)); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - buildMitchellMipmaps(components, width, height, buf); -#ifndef GL_EXT_texture_object - glEndList(); -#endif - - free(buf); - free(reduced); -} - -void -init(char *filename) -{ - glEnable(GL_TEXTURE_2D); - init_textures(filename); - glNewList(1, GL_COMPILE); - glColor3f(1., 1., 1.); - glBegin(GL_QUADS); - glTexCoord2f(0, 1); - glVertex3f(-4, 0, -10); - glTexCoord2f(1, 1); - glVertex3f(4, 0, -10); - glTexCoord2f(1, 0); - glVertex3f(4, 0, 3); - glTexCoord2f(0, 0); - glVertex3f(-4, 0, 3); - glEnd(); - glEndList(); - glClearColor(.2, 0, .9, 0); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glViewport(0, 0, w / 2, h); -#ifdef GL_EXT_texture_object - glBindTextureEXT(GL_TEXTURE_2D, 1); -#else - glCallList(1001); -#endif - glCallList(1); - - glViewport(w / 2, 0, w / 2, h); -#ifdef GL_EXT_texture_object - glBindTextureEXT(GL_TEXTURE_2D, 2); -#else - glCallList(1002); -#endif - glCallList(1); - glutSwapBuffers(); -} - -void -idle(void) -{ - glRotatef(.1, 1, 0, 0); - glutPostRedisplay(); -} - -void -bidle(void) -{ - glRotatef(-.1, 1, 0, 0); - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) { - switch (button) { - case GLUT_LEFT_BUTTON: - glutIdleFunc(idle); - break; - case GLUT_MIDDLE_BUTTON: - glutIdleFunc(bidle); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else { - glutIdleFunc(NULL); - } -} - -void -help(void) -{ - printf("'h' - help\n"); - printf("'g' - increase line spacing\n"); - printf("'G' - decrease line spacing\n"); - printf("'s' - double texture dimensions\n"); - printf("'S' - halve texture dimensions\n"); -} - -char *filename; - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'h': - help(); - break; - case 'g': - grid_space++; - init_textures(filename); - printf("grid spacing %d\n", grid_space); - break; - case 'G': - grid_space--; - if (grid_space <= 0) - grid_space = 1; - init_textures(filename); - printf("grid spacing %d\n", grid_space); - break; - case 's': - height = width *= 2; - if (height > 1024) - height = width = 1024; - init_textures(filename); - printf("texture size %d\n", height); - break; - case 'S': - height = width /= 2; - init_textures(filename); - printf("texture size %d\n", height); - break; - default: - return; - case '\033': - exit(0); - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(w, h); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); - (void) glutCreateWindow("Left: GLU mipmaps, Right: Mitchell mipmaps"); - if (argc > 1) - init(filename = argv[1]); - else - init(filename = 0); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/mipmap_lines.dsp b/lib/glut-3.7.6/progs/advanced/mipmap_lines.dsp deleted file mode 100644 index 7237f555317b8066fe3a2e662db4de67b4e1575e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/mipmap_lines.dsp +++ /dev/null @@ -1,104 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mipmap_lines" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mipmap_lines - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mipmap_lines.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mipmap_lines.mak" CFG="mipmap_lines - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mipmap_lines - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mipmap_lines - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mipmap_lines - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "mipmap_lines - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "mipmap_lines - Win32 Release" -# Name "mipmap_lines - Win32 Debug" -# Begin Source File - -SOURCE=.\izoom.c -# End Source File -# Begin Source File - -SOURCE=.\izoom.h -# End Source File -# Begin Source File - -SOURCE=.\mipmap_lines.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/motionblur.c b/lib/glut-3.7.6/progs/advanced/motionblur.c deleted file mode 100644 index 1e9f3264b5f0807378d463a07e098904fbfbbfe9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/motionblur.c +++ /dev/null @@ -1,241 +0,0 @@ - -/* motionblur.c - by Tom McReynolds, SGI */ - -/* Using the accumulation buffer for motion blur. */ - -#include -#include -#include - -const GLdouble FRUSTDIM = 100.f; -const GLdouble FRUSTNEAR = 320.f; -const GLdouble FRUSTFAR = 660.f; - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum {SPHERE = 1, CONE}; - -void -render(GLfloat dx, GLfloat dy, GLfloat dz) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); - - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -640.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -640.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -640.f); - glVertex3f(-100.f, 100.f, -640.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -640.f); - glVertex3f( 100.f, -100.f, -640.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -640.f); - glVertex3f( 100.f, 100.f, -640.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -640.f); - glVertex3f( 100.f, -100.f, -640.f); - glVertex3f( 100.f, 100.f, -640.f); - glVertex3f(-100.f, 100.f, -640.f); - glEnd(); - - - glPushMatrix(); - glTranslatef(-80.f + dx, -60.f + dy, -420.f + dz); - glCallList(SPHERE); - glPopMatrix(); - - - glPushMatrix(); - glTranslatef(-20.f, -80.f, -600.f); - glCallList(CONE); - glPopMatrix(); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - - glFlush(); /* high end machines may need this */ -} - -enum {NONE, FIELD}; - -int rendermode = NONE; - -void -menu(int selection) -{ - rendermode = selection; - glutPostRedisplay(); -} - -GLdouble focus = 420.; - -/* Called when window needs to be redrawn */ -void redraw(void) -{ - int i; - int max; - GLfloat dx, dy, dz; - - dx = .5f; - dy = 1.f; - dz = -2.f; - - glPushMatrix(); - switch(rendermode) { - case NONE: - render(0.f, 0.f, 0.f); - break; - case FIELD: - max = 16; - - glClear(GL_ACCUM_BUFFER_BIT); - - for(i = 0; i < max; i++) { - render(dx * i, dy * i, dz * i); - glAccum(GL_ACCUM, 1.f/max); - } - glAccum(GL_RETURN, 1.f); - break; - } - - glPopMatrix(); - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if(key == '\033') - exit(0); -} - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_ACCUM|GLUT_DOUBLE); - (void)glutCreateWindow("motion blur"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("Normal", NONE); - glutAddMenuEntry("Motion Blur", FIELD); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, FRUSTNEAR, FRUSTFAR); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/motionblur.dsp b/lib/glut-3.7.6/progs/advanced/motionblur.dsp deleted file mode 100644 index 6b91f41888a9e4ca65b7e5bb93b930abbd33141d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/motionblur.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="motionblur" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=motionblur - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "motionblur.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "motionblur.mak" CFG="motionblur - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "motionblur - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "motionblur - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "motionblur - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "motionblur - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "motionblur - Win32 Release" -# Name "motionblur - Win32 Debug" -# Begin Source File - -SOURCE=.\motionblur.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/multilight.c b/lib/glut-3.7.6/progs/advanced/multilight.c deleted file mode 100644 index 8d8272357ac5bcde8547ae78b7cb6b0bdbe83e8b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/multilight.c +++ /dev/null @@ -1,536 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* This program demonstrates virtualization of OpenGL's lights. The idea is - that if an object is lit by many lights, it is computationally more - efficient to calculate the approximate lighting contribution of the - various lights per-object and only enable the "brightest" lights while - rendering the object. This also lets you render scenes with more lights - than the OpenGL implementation light (usually 8). Two approaches are - used: The "distance-based" approach only enables the 8 closest lights - based purely on distance. The "Lambertian-based" approach accounts for - diffuse lighting contributions and approximates the diffuse contribution. */ - -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define MIN_VALUE(a,b) (((a)<(b))?(a):(b)) -#define MAX_VALUE(a,b) (((a)>(b))?(a):(b)) - -enum { - DL_LIGHT_SPHERE = 1, - DL_BIG_SPHERE = 2, - DL_ICO = 3 -}; - -enum { - M_SPHERE, M_ICO, M_LABELS, M_LINEAR, M_QUAD, M_REPORT_SIG, - M_LAMBERTIAN, M_DISTANCE, M_TIME -}; - -typedef struct _LightInfo { - GLfloat xyz[4]; - GLfloat *rgb; - int enable; -} LightInfo; - -typedef struct _LightBrightness { - int num; - GLfloat brightness; -} LightBrightness; - -static int animation = 1; -static int labelLights = 1; -static int reportLightSignificance = 0; -static int brightnessModel = M_LAMBERTIAN; -static int numActiveLights; -static int timeFrames = 0; -static int singleBuffer = 0; -/* *INDENT-OFF* */ - -static GLfloat modelAmb[4] = {0.1, 0.1, 0.1, 1.0}; -static GLfloat matAmb[4] = {0.2, 0.2, 0.2, 1.0}; -static GLfloat matDiff[4] = {0.8, 0.8, 0.8, 1.0}; -static GLfloat matSpec[4] = {0.4, 0.4, 0.4, 1.0}; -static GLfloat matEmission[4] = {0.0, 0.0, 0.0, 1.0}; - -GLfloat red[] = {1.0, 0.0, 0.0, 1.0}; -GLfloat green[] = {0.0, 1.0, 0.0, 1.0}; -GLfloat blue[] = {0.0, 0.0, 1.0, 1.0}; -GLfloat yellow[] = {1.0, 1.0, 0.0, 1.0}; -GLfloat magenta[] = {1.0, 0.0, 1.0, 1.0}; -GLfloat white[] = {1.0, 1.0, 1.0, 1.0}; -GLfloat dim[] = {0.5, 0.5, 0.5, 1.0}; - -LightInfo linfo[] = { - { {-4.0, 0.0, -10.0, 1.0}, yellow}, - { {4.0, 0.0, -10.0, 1.0}, green}, - { {-4.0, 0.0, -6.0, 1.0}, red}, - { {4.0, 0.0, -6.0, 1.0}, blue}, - { {-4.0, 0.0, -2.0, 1.0}, green}, - { {4.0, 0.0, -2.0, 1.0}, yellow}, - { {-4.0, 0.0, 2.0, 1.0}, blue}, - { {4.0, 0.0, 2.0, 1.0}, red}, - { {-4.0, 0.0, 6.0, 1.0}, yellow}, - { {4.0, 0.0, 6.0, 1.0}, green}, - { {-4.0, 0.0, 10.0, 1.0}, red}, - { {4.0, 0.0, 10.0, 1.0}, blue}, -}; - -int lightState[8] = {1, 1, 1, 1, 1, 1, 1, 1}; -/* *INDENT-ON* */ - -#define MAX_LIGHTS (sizeof(linfo)/sizeof(linfo[0])) - -int moving = 0, begin; -GLfloat angle = 0.0; -int object = M_SPHERE; -int attenuation = M_QUAD; -GLfloat t = 0.0; - -void -initLight(int num) -{ - glLightf(GL_LIGHT0 + num, GL_CONSTANT_ATTENUATION, 0.0); - if (attenuation == M_LINEAR) { - glLightf(GL_LIGHT0 + num, GL_LINEAR_ATTENUATION, 0.4); - glLightf(GL_LIGHT0 + num, GL_QUADRATIC_ATTENUATION, 0.0); - } else { - glLightf(GL_LIGHT0 + num, GL_LINEAR_ATTENUATION, 0.0); - glLightf(GL_LIGHT0 + num, GL_QUADRATIC_ATTENUATION, 0.1); - } - glLightfv(GL_LIGHT0 + num, GL_SPECULAR, dim); -} - -/* Draw a sphere the same color as the light at the light position so it is - easy to tell where the positional light sources are. */ -void -drawLight(LightInfo * info) -{ - glPushMatrix(); - glTranslatef(info->xyz[0], info->xyz[1], info->xyz[2]); - glColor3fv(info->rgb); - glCallList(DL_LIGHT_SPHERE); - glPopMatrix(); -} - -/* Place the light's OpenGL light number next to the light's sphere. To - ensure a readable number with good contrast, a black version of the number - is drawn shifted a pixel to the left and right of the actual white number. - */ -void -labelLight(LightInfo * info, int num) -{ - GLubyte nothin = 0; - void *font = GLUT_BITMAP_HELVETICA_18; - int width = glutBitmapWidth(font, '0' + num); - - glPushMatrix(); - glColor3f(0.0, 0.0, 0.0); - glRasterPos3f(info->xyz[0], info->xyz[1], info->xyz[2]); - glBitmap(1, 1, 0, 0, 4, 5, ¬hin); - glutBitmapCharacter(font, '0' + num); - - glBitmap(1, 1, 0, 0, 2 - width, 0, ¬hin); - glutBitmapCharacter(font, '0' + num); - - if (lightState[num]) { - glColor3fv(white); - } else { - /* Draw disabled lights dimmer. */ - glColor3fv(dim); - } - glRasterPos3f(info->xyz[0], info->xyz[1], info->xyz[2]); - glBitmap(1, 1, 0, 0, 5, 5, ¬hin); - glutBitmapCharacter(font, '0' + num); - glPopMatrix(); -} - -/* Comparison routine used by qsort. */ -int -lightBrightnessCompare(const void *a, const void *b) -{ - LightBrightness *ld1 = (LightBrightness *) a; - LightBrightness *ld2 = (LightBrightness *) b; - GLfloat diff; - - /* The brighter lights get sorted close to top of the list. */ - diff = ld2->brightness - ld1->brightness; - - if (diff > 0) - return 1; - if (diff < 0) - return -1; - return 0; -} - -void -display(void) -{ - int i; - GLfloat x, y, z; - LightBrightness ld[MAX_LIGHTS]; - int start, end; - - if (timeFrames) { - start = glutGet(GLUT_ELAPSED_TIME); - } - x = cos(t * 12.3) * 2.0; - y = 0.0; - z = sin(t) * 7.0; - - for (i = 0; i < MAX_LIGHTS; i++) { - GLfloat dx, dy, dz; - GLfloat quadraticAttenuation; - - /* Calculate object to light position vector. */ - dx = (linfo[i].xyz[0] - x); - dy = (linfo[i].xyz[1] - y); - dz = (linfo[i].xyz[2] - z); - - quadraticAttenuation = dx * dx + dy * dy + dz * dz; - - if (brightnessModel == M_LAMBERTIAN) { - /* Lambertian surface-based brightness determination. */ - GLfloat ex, ey, ez; - GLfloat nx, ny, nz; - GLfloat distance; - GLfloat diffuseReflection; - - /* Determine eye point location (remember we can rotate by angle). */ - ex = 16.0 * sin(angle * M_PI / 180.0); - ey = 1.0; - ez = 16.0 * -cos(angle * M_PI / 180.0); - - /* Calculated normalized object to eye position direction (nx,ny,nz). */ - nx = (ex - x); - ny = (ey - y); - nz = (ez - z); - distance = sqrt(nx * nx + ny * ny + nz * nz); - nx = nx / distance; - ny = ny / distance; - nz = nz / distance; - - /* True distance needed, take square root. */ - distance = sqrt(quadraticAttenuation); - - /* Calculate normalized object to light postition direction (dx,dy,dz). - */ - dx = dx / distance; - dy = dy / distance; - dz = dz / distance; - - /* Dot product of object->eye and object->light source directions. - OpenGL's lighting equations actually force the diffuse contribution - to be zero if the dot product is less than zero. For our purposes, - that's too strict since we are approximating the entire object with - a single object-to-eye normal. */ - diffuseReflection = nx * dx + ny * dy + nz * dz; - if (attenuation == M_QUAD) { - /* Attenuate based on square of distance. */ - ld[i].brightness = diffuseReflection / quadraticAttenuation; - } else { - /* Attenuate based on linear distance. */ - ld[i].brightness = diffuseReflection / distance; - } - } else { - /* Distance-based brightness determination. */ - - /* In theory, we are really determining brightness based on just the - linear distance of the light source, but since we are just doing - comparisons, there is no reason to waste time doing a square root. */ - - /* Negation makes sure closer distances are "bigger" than further - distances for sorting. */ - ld[i].brightness = -quadraticAttenuation; - } - ld[i].num = i; - } - - /* Sort the lights so that the "brightest" are listed first. We really - want to just determine the first numActiveLights so a full sort is - overkill. */ - qsort(ld, MAX_LIGHTS, sizeof(ld[0]), lightBrightnessCompare); - - if (reportLightSignificance) { - printf("\n"); - for (i = 0; i < MAX_LIGHTS; i++) { - printf("%d: dist = %g\n", ld[i].num, ld[i].brightness); - } - } - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(angle, 0.0, 1.0, 0.0); - - glDisable(GL_LIGHTING); - for (i = 0; i < MAX_LIGHTS; i++) { - drawLight(&linfo[i]); - } - - /* After sorting, the first numActiveLights (ie, <8) light sources are the - light sources with the biggest contribution to the object's lighting. - Assign these "virtual lights of significance" to OpenGL's actual - available light sources. */ - - glEnable(GL_LIGHTING); - for (i = 0; i < numActiveLights; i++) { - if (lightState[i]) { - int num = ld[i].num; - - glLightfv(GL_LIGHT0 + i, GL_POSITION, linfo[num].xyz); - glLightfv(GL_LIGHT0 + i, GL_DIFFUSE, linfo[num].rgb); - glEnable(GL_LIGHT0 + i); - } else { - glDisable(GL_LIGHT0 + i); - } - } - - glPushMatrix(); - glTranslatef(x, y, z); - switch (object) { - case M_SPHERE: - glCallList(DL_BIG_SPHERE); - break; - case M_ICO: - glCallList(DL_ICO); - break; - } - glPopMatrix(); - - if (labelLights) { - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - for (i = 0; i < numActiveLights; i++) { - labelLight(&linfo[ld[i].num], i); - } - glEnable(GL_DEPTH_TEST); - } - glPopMatrix(); - - if (timeFrames) { - glFinish(); - end = glutGet(GLUT_ELAPSED_TIME); - printf("Speed %.3g frames/sec (%d ms)\n", - 1000.0 / (end - start), end - start); - } - if (!singleBuffer) { - glutSwapBuffers(); - } -} - -void -idle(void) -{ - t += 0.005; - glutPostRedisplay(); -} - -/* When not visible, stop animating. Restart when visible again. */ -static void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - if (animation) - glutIdleFunc(idle); - } else { - if (!animation) - glutIdleFunc(NULL); - } -} - -/* Press any key to redraw; good when motion stopped and performance - reporting on. */ -/* ARGSUSED */ -static void -key(unsigned char c, int x, int y) -{ - int i; - - switch (c) { - case 27: - exit(0); /* IRIS GLism, Escape quits. */ - break; - case ' ': - animation = 1 - animation; - if (animation) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - lightState[c - '0'] = 1 - lightState[c - '0']; - break; - case 13: - for (i = 0; i < numActiveLights; i++) { - lightState[i] = 1; - } - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED3 */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - moving = 1; - begin = x; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - begin); - begin = x; - glutPostRedisplay(); - } -} - -void -menu(int value) -{ - int i; - - switch (value) { - case M_SPHERE: - object = M_SPHERE; - break; - case M_ICO: - object = M_ICO; - break; - case M_LABELS: - labelLights = 1 - labelLights; - break; - case M_LINEAR: - case M_QUAD: - attenuation = value; - for (i = 0; i < numActiveLights; i++) { - initLight(i); - } - break; - case M_REPORT_SIG: - reportLightSignificance = 1 - reportLightSignificance; - break; - case M_LAMBERTIAN: - brightnessModel = M_LAMBERTIAN; - glutSetWindowTitle("multilight (Lambertian-based)"); - break; - case M_DISTANCE: - brightnessModel = M_DISTANCE; - glutSetWindowTitle("multilight (Distance-based)"); - break; - case M_TIME: - timeFrames = 1 - timeFrames; - break; - case 666: - exit(0); - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - int i; - - glutInitWindowSize(400, 200); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutInit(&argc, argv); - - for (i = 1; i < argc; i++) { - if (!strcmp("-sb", argv[i])) { - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_MULTISAMPLE); - singleBuffer = 1; - } - } - - glutCreateWindow("multilight"); - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glMatrixMode(GL_PROJECTION); - gluPerspective(50.0, 2.0, 0.1, 100.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt( - 0.0, 1.0, -16.0, - 0.0, 0.0, 0.0, - 0.0, 1.0, 0.); - - numActiveLights = MIN_VALUE(MAX_LIGHTS, 8); - for (i = 0; i < numActiveLights; i++) { - initLight(i); - } - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, modelAmb); - glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); - glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - - glMaterialfv(GL_FRONT, GL_AMBIENT, matAmb); - glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiff); - glMaterialfv(GL_FRONT, GL_SPECULAR, matSpec); - glMaterialfv(GL_FRONT, GL_EMISSION, matEmission); - glMaterialf(GL_FRONT, GL_SHININESS, 10.0); - - glNewList(DL_LIGHT_SPHERE, GL_COMPILE); - glutSolidSphere(0.2, 4, 4); - glEndList(); - - glNewList(DL_BIG_SPHERE, GL_COMPILE); - glutSolidSphere(1.5, 20, 20); - glEndList(); - - glNewList(DL_ICO, GL_COMPILE); - glutSolidIcosahedron(); - glEndList(); - - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glutKeyboardFunc(key); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glutCreateMenu(menu); - glutAddMenuEntry("Sphere", M_SPHERE); - glutAddMenuEntry("Icosahedron", M_ICO); - glutAddMenuEntry("Linear attenuation", M_LINEAR); - glutAddMenuEntry("Quadratic attenuation", M_QUAD); - glutAddMenuEntry("Toggle Light Number Labels", M_LABELS); - glutAddMenuEntry("Report Light Significance", M_REPORT_SIG); - glutAddMenuEntry("Lambertian-based Significance", M_LAMBERTIAN); - glutAddMenuEntry("Distance-based Significance", M_DISTANCE); - glutAddMenuEntry("Time Frames", M_TIME); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/multilight.dsp b/lib/glut-3.7.6/progs/advanced/multilight.dsp deleted file mode 100644 index df8f8cae53c070199c9437a32efdee346c605069..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/multilight.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multilight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multilight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multilight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multilight.mak" CFG="multilight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multilight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multilight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multilight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multilight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multilight - Win32 Release" -# Name "multilight - Win32 Debug" -# Begin Source File - -SOURCE=.\multilight.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/nvidia_logo.c b/lib/glut-3.7.6/progs/advanced/nvidia_logo.c deleted file mode 100644 index 0bd58368092952fee5d56a744a19caeaa1fe74ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/nvidia_logo.c +++ /dev/null @@ -1,239 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#include -#include -#include - -GLfloat nvlogo0[][2] = { - { -0.474465, -1.259490 }, - { 0.115919, -1.113297 }, - { 0.588227, -0.899634 }, - { 0.942455, -0.652235 }, - { 1.296687, -0.348609 }, - { 1.690275, -0.033738 }, - { 1.926431, 0.269888 }, - { 2.123226, 0.494796 }, - { 1.847713, 0.832160 }, - { 1.532842, 1.124540 }, - { 1.178611, 1.394430 }, - { 0.706303, 1.709300 }, - { 0.076562, 1.967940 }, - { -0.395747, 2.080400 }, - { -1.064784, 2.058940 }, - { -1.064847, 2.811350 }, - { 3.973113, 2.811350 }, - { 3.973113, -2.811350 }, - { -1.025490, -2.811350 }, - { -1.025490, -2.159120 }, - { -0.474465, -2.159120 }, - { 0.155277, -2.102890 }, - { 0.706303, -1.979190 }, - { 1.178611, -1.833000 }, - { 1.690275, -1.653080 }, - { 2.201941, -1.450660 }, - { 2.674248, -1.214510 }, - { 3.107212, -0.955861 }, - { 3.343357, -0.719707 }, - { 2.438097, -0.179928 }, - { 2.005147, -0.517290 }, - { 1.690275, -0.820916 }, - { 1.296687, -1.079560 }, - { 0.863740, -1.338200 }, - { 0.273356, -1.585600 }, - { -0.198952, -1.709300 }, - { -1.025490, -1.731790 }, - { -1.025490, -1.248240 }, -}; -GLfloat nvlogo1[][2] = { - { -0.493508, 0.560265 }, - { -0.233835, 0.218981 }, - { -0.078033, -0.107463 }, - { 0.545180, 0.441557 }, - { 0.285509, 0.753164 }, - { -0.129966, 1.005420 }, - { -0.545442, 1.153800 }, - { -1.034999, 1.167860 }, - { -1.064784, 1.658310 }, - { -0.233835, 1.598950 }, - { 0.233576, 1.361540 }, - { 0.649050, 1.094450 }, - { 1.012591, 0.753164 }, - { 1.324197, 0.426719 }, - { 1.064524, 0.189305 }, - { 0.804852, -0.166817 }, - { 0.389378, -0.508100 }, - { -0.078033, -0.745515 }, - { -0.441573, -0.879060 }, - { -1.013530, -0.889070 }, - { -1.012851, 0.723487 }, -}; -GLfloat nvlogo2[][2] = { - { -1.025490, -2.159120 }, - { -1.843800, -1.962260 }, - { -2.415081, -1.635820 }, - { -2.934425, -1.205510 }, - { -3.297966, -0.760353 }, - { -3.609571, -0.315201 }, - { -3.869244, 0.204143 }, - { -3.973113, 0.545426 }, - { -3.505702, 0.960900 }, - { -2.830556, 1.435730 }, - { -2.051539, 1.851210 }, - { -1.064784, 2.058940 }, - { -1.064784, 1.658310 }, - { -1.791868, 1.495080 }, - { -2.363145, 1.183480 }, - { -2.830556, 0.842190 }, - { -3.194097, 0.471234 }, - { -3.090228, 0.055759 }, - { -2.830556, -0.315201 }, - { -2.570884, -0.760353 }, - { -2.103473, -1.220340 }, - { -1.584129, -1.531950 }, - { -1.025490, -1.731790 }, -}; -GLfloat nvlogo3[][2] = { - { -1.025490, -1.248240 }, - { -1.472016, -1.099371 }, - { -1.794030, -0.875934 }, - { -2.047038, -0.606495 }, - { -2.254046, -0.337056 }, - { -2.415053, -0.047902 }, - { -2.530060, 0.260968 }, - { -2.392054, 0.536978 }, - { -2.047038, 0.806418 }, - { -1.633023, 1.016710 }, - { -1.034999, 1.167860 }, - { -1.012851, 0.723487 }, - { -1.380012, 0.681555 }, - { -1.610022, 0.530407 }, - { -1.863033, 0.326685 }, - { -1.909033, 0.076960 }, - { -1.748027, -0.159620 }, - { -1.541019, -0.448774 }, - { -1.311010, -0.685355 }, - { -1.013530, -0.889070 }, -}; - -#define SIZE(a) (sizeof(a)/sizeof(a[0])) - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole, - float breakAngle) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - GLdouble ndx, ndy, ondx, ondy, dot; - int i; - int count = (int) (dataSize / (2 * sizeof(GLfloat))); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glBegin(GL_QUAD_STRIP); - - dx = data[0][1] - data[-1 % count][1]; - dy = data[-1 % count][0] - data[0][0]; - len = sqrt(dx * dx + dy * dy); - ondx = dx / len; - ondy = dy / len; - - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - /* Calculate a unit normal by dividing by Euclidean - distance. We could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i +1) % count][0]; - len = sqrt(dx * dx + dy * dy); - ndx = dx / len; - ndy = dy / len; - - dot = fabs(acos(ndx * ondx + ndy * ondy) * 180.0/3.14159); - - if (dot > breakAngle) { - glVertex3f(data[i % count][0], data[i % count][1], thickness); - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glNormal3f(ndx, ndy, 0.0); - } else { - GLdouble adx, ady, nadx, nady; - - adx = ndx + ondx; - ady = ndy + ondy; - len = sqrt(adx*adx + ady*ady); - nadx = adx / len; - nady = ady / len; - glNormal3f(nadx, nady, 0.0); - } - glVertex3f(data[i % count][0], data[i % count][1], thickness); - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - - ondx = ndx; - ondy = ndy; - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - - glFrontFace(GL_CW); - glCallList(edge); - - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - - glEndList(); -} - -GLuint -makeNVidiaLogo(GLuint dlistBase) -{ - const float extrudeWidth = 1.0; - const float breakAngle = 30.0; - - extrudeSolidFromPolygon(nvlogo0, sizeof(nvlogo0), extrudeWidth, - dlistBase+1, dlistBase+2, dlistBase+3, breakAngle); - extrudeSolidFromPolygon(nvlogo1, sizeof(nvlogo1), extrudeWidth, - dlistBase+4, dlistBase+5, dlistBase+6, breakAngle); - extrudeSolidFromPolygon(nvlogo2, sizeof(nvlogo2), extrudeWidth, - dlistBase+7, dlistBase+8, dlistBase+9, breakAngle); - extrudeSolidFromPolygon(nvlogo3, sizeof(nvlogo3), extrudeWidth, - dlistBase+10, dlistBase+11, dlistBase+12, breakAngle); - glNewList(dlistBase, GL_COMPILE); - glCallList(dlistBase+3); - glCallList(dlistBase+6); - glCallList(dlistBase+9); - glCallList(dlistBase+12); - glEndList(); - return dlistBase; -} - diff --git a/lib/glut-3.7.6/progs/advanced/occlude.c b/lib/glut-3.7.6/progs/advanced/occlude.c deleted file mode 100644 index 994e59053f5109f42ff195091955b8ffc5d953a7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/occlude.c +++ /dev/null @@ -1,488 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* This program demonstrates an OpenGL histogram extension based algorithm - for occlusion culling. Occlusion culling tries to speed rendering by - quickly determine what objects that are in the view frustrum are not - actually visible because they are occluded by other objects in the scene. - If object occlusion can be quickly determined, you can save time by simply - not rendering occluded objects. */ - -/* cc -o occlude occlude.c -lglut -lGL -lGLU -lXmu -lXext -lX11 -lm */ - -/* XXX Note that IMPACTs running IRIX 6.2 and earlier do not implement the - histogram extension over alpha correctly. The algorithm works correctly - on RealityEngine and InfiniteReality platforms. */ - -/* Hacked starting with the OpenGL programming Guide's scene.c */ - -#include -#include -#include -#include -#include - -#define TORUS 1 -#define TETRAHEDRON 2 -#define ICOSAHEDRON 3 - -int W = 250, H = 250; -int showBoxes = 0; -int single = 0; -int showHistogram = 0; -int showRate = 0; -int occlusionDectection = 1; -int nameOccludedTeapots = 1; -int noOcclude = 0; -int frames = 0; -int renderCount = 0, occludedCount = 0; - -void -output(GLfloat x, GLfloat y, char *format,...) -{ - va_list args; - char buffer[200], *p; - - va_start(args, format); - vsprintf(buffer, format, args); - va_end(args); - glPushMatrix(); - glTranslatef(x, y, 0); - for (p = buffer; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - glPopMatrix(); -} - -/* Initialize material property and light source. */ -void -myinit(void) -{ - GLfloat light_ambient[] = - {0.2, 0.2, 0.2, 1.0}; - GLfloat light_diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat light_specular[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat light_position[] = - {1.0, 1.0, 1.0, 0.0}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - - glNewList(TORUS, GL_COMPILE); - glutSolidTorus(0.275, 0.85, 10, 15); - glEndList(); - glNewList(TETRAHEDRON, GL_COMPILE); - glutSolidTetrahedron(); - glEndList(); - glNewList(ICOSAHEDRON, GL_COMPILE); - glutSolidIcosahedron(); - glEndList(); - - /* Make sure we clear with alpha set to 1. */ - glClearColor(0, 0, 0, 1); - -#ifdef GL_EXT_histogram - /* Do a histogram on alpha with 8 bins; throw away the image data used when - computing the histogram. */ - glHistogramEXT(GL_HISTOGRAM_EXT, 8, GL_ALPHA, GL_TRUE); -#endif -} - -void -draw(void) -{ - glPushMatrix(); - glScalef(1.3, 1.3, 1.3); - glRotatef(23.0, 1.0, 0.0, 0.0); - - glPushMatrix(); - glTranslatef(-0.75, -0.5, 0.0); - glRotatef(270.0, 1.0, 0.0, 0.0); - glCallList(TETRAHEDRON); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(90.0, 1.0, 0.0, 0.0); - glCallList(TORUS); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.75, 0.0, -1.0); - glCallList(ICOSAHEDRON); - glPopMatrix(); - - glPopMatrix(); -} - -void -myortho(void) -{ - if (W <= H) - glOrtho(-2.5, 2.5, -2.5 * (GLfloat) H / (GLfloat) W, - 2.5 * (GLfloat) H / (GLfloat) W, -10.0, 10.0); - else - glOrtho(-2.5 * (GLfloat) W / (GLfloat) H, - 2.5 * (GLfloat) W / (GLfloat) H, -2.5, 2.5, -10.0, 10.0); -} - -GLint turn = 90; -int dir = -3; - -void -idle(void) -{ - /* Make the angle alternate back and forth. */ - turn += dir; - if (turn > 50) - dir = -3; - if (turn <= 0) - dir = 3; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -void -boundingBox(void) -{ - glScalef(1.9 * .6, 1.3 * .6, 1.2 * .6); - glutSolidCube(0.9); -} - -void -teapot(void) -{ - glutSolidTeapot(0.3); -} - -typedef void (*RenderFunc) (void); - -void -render1(RenderFunc func) -{ - glPushMatrix(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(turn, 0.0, 1.0, 0.0); - glTranslatef(3.0, 0.0, 0.0); - glColor4f(0, 1, 0, .25); - func(); - glPopMatrix(); -} - -void -render2(RenderFunc func) -{ - glPushMatrix(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(turn + 30, 0.0, 1.0, 0.0); - glTranslatef(3.0, 0.0, 0.0); - glColor4f(1, 0, 0, .5); - func(); - glPopMatrix(); -} - -void -render3(RenderFunc func) -{ - glPushMatrix(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(turn + 60, 0.0, 1.0, 0.0); - glTranslatef(3.0, 0.0, 0.0); - glColor4f(0, 0, 1, .0); - func(); - glPopMatrix(); -} - -void -render4(RenderFunc func) -{ - glPushMatrix(); - glTranslatef(-0.75, -0.75, 0.0); - glRotatef(turn + 60, 0.0, 1.0, 0.0); - glTranslatef(3.0, 0.0, 0.0); - glColor4f(1, 1, 0, .75); - func(); - glPopMatrix(); -} - -void -render5(RenderFunc func) -{ - glPushMatrix(); - glTranslatef(-0.75, -0.25, 0.0); - glRotatef(turn + 45, 0.0, 1.0, 0.0); - glTranslatef(3.0, 0.0, 0.0); - glColor4f(1, 0, 1, .12); - func(); - glPopMatrix(); -} - -void -display(void) -{ - int teapot1, teapot2, teapot3, teapot4, teapot5; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - draw(); - - /* Draw all teapots. */ - teapot1 = teapot2 = teapot3 = teapot4 = teapot5 = 1; -#ifdef GL_EXT_histogram - if (occlusionDectection && !noOcclude) { - GLuint count_buffer[8]; - int i; - - glDisable(GL_LIGHTING); - if (!showBoxes) { - glDepthMask(GL_FALSE); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); - } - /* Render the bounding box for each teapot. */ - render1(boundingBox); - render2(boundingBox); - render3(boundingBox); - render4(boundingBox); - render5(boundingBox); - - glEnable(GL_HISTOGRAM_EXT); - /* Sort of cheat. I know all the teapots move in the center horizontal - half of the screen so only take the histogram over that area instead - of the full window. */ - glCopyPixels(0, H / 4, W, H / 2, GL_COLOR); - glGetHistogramEXT(GL_HISTOGRAM_EXT, GL_TRUE, - GL_ALPHA, GL_UNSIGNED_INT, count_buffer); - glDisable(GL_HISTOGRAM_EXT); - if (showHistogram) { - printf("%2d: ", turn); - for (i = 0; i < 8; i++) - printf(" %7d", count_buffer[i]); - printf("\n"); - } - /* Get the count from each histogram bucket for each teapot's bounding - box. */ - teapot1 = count_buffer[2]; - teapot2 = count_buffer[3]; - teapot3 = count_buffer[0]; - teapot4 = count_buffer[5]; - teapot5 = count_buffer[1]; - - glEnable(GL_LIGHTING); - glDepthMask(GL_TRUE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - } -#endif - /* If each teapot needs to be drawn (ie, not occluded when occlusion - detection is enabled, draw it. */ - if (teapot1) { - render1(teapot); - renderCount++; - } else { - occludedCount++; - } - if (teapot2) { - render2(teapot); - renderCount++; - } else { - occludedCount++; - } - if (teapot3) { - render3(teapot); - renderCount++; - } else { - occludedCount++; - } - if (teapot4) { - render4(teapot); - renderCount++; - } else { - occludedCount++; - } - if (teapot5) { - render5(teapot); - renderCount++; - } else { - occludedCount++; - } - - /* To help see when occlusions take place, render the teapot number of each - - occluded teapot. */ - if (nameOccludedTeapots) { - if (!teapot1 || !teapot2 || !teapot3 || !teapot4 || !teapot5) { - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, 3000, 0, 3000); - glMatrixMode(GL_MODELVIEW); - - glColor3f(1, 1, 0); /* Yellow text. */ - - if (!teapot1) { - glLoadIdentity(); - output(80, 2800, "1"); - } - if (!teapot2) { - glLoadIdentity(); - output(150, 2800, "2"); - } - if (!teapot3) { - glLoadIdentity(); - output(220, 2800, "3"); - } - if (!teapot4) { - glLoadIdentity(); - output(290, 2800, "4"); - } - if (!teapot5) { - glLoadIdentity(); - output(360, 2800, "5"); - } - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - } - } - if (!single) { - glutSwapBuffers(); - } else { - glFlush(); - } - frames++; -} - -void -reshape(int w, int h) -{ - W = w; - H = h; - glViewport(0, 0, W, H); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - myortho(); - glMatrixMode(GL_MODELVIEW); -} - -void -main_menu(int value) -{ - switch (value) { - case 666: - exit(0); - break; - case 0: - showBoxes = !showBoxes; - break; - case 1: - showHistogram = !showHistogram; - break; - case 2: - occlusionDectection = !occlusionDectection; - break; - case 3: - nameOccludedTeapots = !nameOccludedTeapots; - break; - case 4: - showRate = !showRate; - break; - case 5: - noOcclude = !noOcclude; - break; - } - glutPostRedisplay(); -} - -/* This timer callback will print out stats every three seconds of the frame - rate and precent of teapots occluded. */ -/* ARGSUSED */ -void -timer(int value) -{ - static int last = 0; - int now; - float time, total; - - now = glutGet(GLUT_ELAPSED_TIME); - time = (now - last) / 1000; - total = renderCount + occludedCount; - if (showRate) { - if (frames) { - if (occlusionDectection) { - printf("rate = %.1f (detection on) @ %%%.0f\n", - frames / time, occludedCount/total*100); - } else { - printf("rate = %.1f @ %%%.0f\n", - frames / time, occludedCount/total*100); - } - } - } - last = now; - frames = 0; - renderCount = 0; - occludedCount = 0; - glutTimerFunc(3000, timer, 0); -} - -int -main(int argc, char **argv) -{ - int has_histogram, has_logic_op; - - glutInit(&argc, argv); - glutInitWindowSize(W, H); - if (argc > 1 && !strcmp(argv[1], "-single")) { - single = 1; - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH | GLUT_ALPHA); - } else { - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_ALPHA); - } - glutCreateWindow(argv[0]); - has_histogram = glutExtensionSupported("GL_EXT_histogram"); - has_logic_op = glutExtensionSupported("GL_EXT_blend_logic_op"); - if (!has_histogram && !has_logic_op) { - fprintf(stderr, - "\nYour OpenGL implementation lacks support for\nEXT_histogram or EXT_blend_logic_op (or both).\n\n"); - exit(1); - } - myinit(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutCreateMenu(main_menu); - glutAddMenuEntry("Toggle occlusion detection", 2); - glutAddMenuEntry("Toggle bounding boxes", 0); - glutAddMenuEntry("Toggle histogram print", 1); - glutAddMenuEntry("Toggle name occluded teapots", 3); - glutAddMenuEntry("Toggle frame rate print", 4); - glutAddMenuEntry("Toggle histogram without occlusion", 5); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutVisibilityFunc(visible); - glutTimerFunc(3000, timer, 0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/occlude.dsp b/lib/glut-3.7.6/progs/advanced/occlude.dsp deleted file mode 100644 index 9ec526045b4b142b1179652e6172d7adaa676f6f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/occlude.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="occlude" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=occlude - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "occlude.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "occlude.mak" CFG="occlude - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "occlude - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "occlude - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "occlude - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "occlude - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "occlude - Win32 Release" -# Name "occlude - Win32 Debug" -# Begin Source File - -SOURCE=.\occlude.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/pointburst.c b/lib/glut-3.7.6/progs/advanced/pointburst.c deleted file mode 100644 index b6df5e3bc0da9ddd394d40fc680212a15a27a73f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/pointburst.c +++ /dev/null @@ -1,567 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This example demonstrates how to render particle effects - with OpenGL. A cloud of pinkish/orange particles explodes with the - particles bouncing off the ground. When the SGIS_point_parameters - is present (supported on SGI's InfiniteReality hardware), the - particle size is attenuated based on eye distance. */ - -/* Now pointburst.c is extended to support the multi-vendor - EXT_point_parameters extension that has the same interface as the - SGIS extension (modulo the SGIS suffix/prefix). NVidia's Release 2 - OpenGL ICD driver supports the EXT_point_parameters extension. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#ifdef _WIN32 -#include /* for wglGetProcAddress */ -#endif -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#if 0 /* For debugging. */ -#undef GL_SGIS_point_parameters -#endif - -#if defined(GL_SGIS_point_parameters) && !defined(GL_EXT_point_parameters) -/* Use the EXT point parameters interface for the SGIS implementation. */ -#define GL_POINT_SIZE_MIN_EXT GL_POINT_SIZE_MIN_SGIS -#define GL_POINT_SIZE_MAX_EXT GL_POINT_SIZE_MAX_SGIS -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT GL_POINT_FADE_THRESHOLD_SIZE_SGIS -#define GL_DISTANCE_ATTENUATION_EXT GL_DISTANCE_ATTENUATION_SGIS -#define glPointParameterfEXT glPointParameterfSGIS -#define glPointParameterfvEXT glPointParameterfvSGIS -#define GL_EXT_point_parameters 1 -#endif - -#if !defined(GL_EXT_point_parameters) -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 -#if defined(_WIN32) && !defined(MESA) -/* Curse Microsoft for the insanity of wglGetProcAddress. */ -typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); -#define GL_EXT_point_parameters 1 -#endif -#endif - -#if defined(_WIN32) && !defined(MESA) -PFNGLPOINTPARAMETERFEXTPROC glPointParameterfEXT; -PFNGLPOINTPARAMETERFVEXTPROC glPointParameterfvEXT; -#endif - -int hasPointParameters; - -static GLfloat angle = -150; /* in degrees */ -static int spin = 0; -static int moving, begin; -static int newModel = 1; -static float time; -static int repeat = 1; -int useMipmaps = 1; -int linearFiltering = 1; -int useTexture = 1; - -#if GL_EXT_point_parameters -static GLfloat constant[3] = { 1/5.0, 0.0, 0.0 }; -static GLfloat linear[3] = { 0.0, 1/5.0, 0.0 }; -static GLfloat quadratic[3] = { 0.25, 0.0, 1/60.0 }; -#endif - -#define MAX_POINTS 2000 - -static int numPoints = 500; - -static GLfloat pointList[MAX_POINTS][3]; -static GLfloat pointTime[MAX_POINTS]; -static GLfloat pointVelocity[MAX_POINTS][2]; -static GLfloat pointDirection[MAX_POINTS][2]; -static int colorList[MAX_POINTS]; -static int animate = 1, motion = 0; - -static GLfloat colorSet[][4] = { - /* Shades of red. */ - { 0.7, 0.2, 0.4, 0.5 }, - { 0.8, 0.0, 0.7, 0.5 }, - { 1.0, 0.0, 0.0, 0.5 }, - { 0.9, 0.3, 0.6, 0.5 }, - { 1.0, 0.4, 0.0, 0.5 }, - { 1.0, 0.0, 0.5, 0.5 }, -}; - -#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0])) - -#define DEAD (NUM_COLORS+1) - - -#if 0 /* drand48 might be better on Unix machines */ -#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48()) -#else -static float float_rand(void) { return rand() / (float) RAND_MAX; } -#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand()) -#endif - -#define MEAN_VELOCITY 3.0 -#define GRAVITY 2.0 -#define TIME_DELTA 0.025 /* The speed of time. */ - -/* Modeling units of ground extent in each X and Z direction. */ -#define EDGE 12 - -void -makePointList(void) -{ - float angle, velocity, direction; - int i; - - motion = 1; - for (i=0; i EDGE) { - /* Particle has hit ground past the distance duration of - the particles. Mark particle as dead. */ - colorList[i] = NUM_COLORS; /* Not moving. */ - continue; - } - - pointVelocity[i][1] *= 0.8; /* 80% of previous up velocity. */ - pointTime[i] = 0.0; /* Reset the particles sense of up time. */ - } - motion = 1; - pointTime[i] += TIME_DELTA; - } - time += TIME_DELTA; - if (!motion && !spin) { - if (repeat) { - makePointList(); - } else { - glutIdleFunc(NULL); - } - } -} - -void -idle(void) -{ - updatePointList(); - if (spin) { - angle += 0.3; - newModel = 1; - } - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - if (animate && (motion || spin)) { - glutIdleFunc(idle); - } - } else { - glutIdleFunc(NULL); - } -} - -void -recalcModelView(void) -{ - glPopMatrix(); - glPushMatrix(); - glRotatef(angle, 0.0, 1.0, 0.0); - newModel = 0; -} - -void -redraw(void) -{ - int i; - - glDepthMask(GL_TRUE); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - if (newModel) - recalcModelView(); - - /* Draw the floor. */ - if (useTexture) { - glEnable(GL_TEXTURE_2D); - } - glColor3f(0.5, 1.0, 0.5); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); - glVertex3f(-EDGE, -0.05, -EDGE); - glTexCoord2f(20.0, 0.0); - glVertex3f(EDGE, -0.05, -EDGE); - glTexCoord2f(20.0, 20.0); - glVertex3f(EDGE, -0.05, EDGE); - glTexCoord2f(0.0, 20.0); - glVertex3f(-EDGE, -0.05, EDGE); - glEnd(); - - /* Allow particles to blend with each other. */ - glDepthMask(GL_FALSE); - - if (useTexture) { - glDisable(GL_TEXTURE_2D); - } - glBegin(GL_POINTS); - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=pointburst - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "pointburst.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "pointburst.mak" CFG="pointburst - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "pointburst - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "pointburst - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "pointburst - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "pointburst - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "pointburst - Win32 Release" -# Name "pointburst - Win32 Debug" -# Begin Source File - -SOURCE=.\pointburst.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/projshadow.c b/lib/glut-3.7.6/progs/advanced/projshadow.c deleted file mode 100644 index 92fb6fa28f10d71e13beb3d600c2cf34c81b33f8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/projshadow.c +++ /dev/null @@ -1,377 +0,0 @@ - -/* projshadow.c - by Tom McReynolds, SGI */ - -/* Rendering shadows using projective shadows. */ - -#include -#include - -/* Create a single component texture map */ -GLfloat * -make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum { - SPHERE = 1, CONE, LIGHT, LEFTWALL, FLOOR -}; - -enum { - X, Y, Z, W -}; -enum { - A, B, C, D -}; - -/* create a matrix that will project the desired shadow */ -void -shadowmatrix(GLfloat shadowMat[4][4], - GLfloat groundplane[4], - GLfloat lightpos[4]) -{ - GLfloat dot; - - /* find dot product between light position vector and ground plane normal */ - dot = groundplane[X] * lightpos[X] + - groundplane[Y] * lightpos[Y] + - groundplane[Z] * lightpos[Z] + - groundplane[W] * lightpos[W]; - - shadowMat[0][0] = dot - lightpos[X] * groundplane[X]; - shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y]; - shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z]; - shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W]; - - shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X]; - shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y]; - shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z]; - shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W]; - - shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X]; - shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y]; - shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z]; - shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W]; - - shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X]; - shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y]; - shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z]; - shadowMat[3][3] = dot - lightpos[W] * groundplane[W]; - -} - -/* find the plane equation given 3 points */ -void -findplane(GLfloat plane[4], - GLfloat v0[3], GLfloat v1[3], GLfloat v2[3]) -{ - GLfloat vec0[3], vec1[3]; - - /* need 2 vectors to find cross product */ - vec0[X] = v1[X] - v0[X]; - vec0[Y] = v1[Y] - v0[Y]; - vec0[Z] = v1[Z] - v0[Z]; - - vec1[X] = v2[X] - v0[X]; - vec1[Y] = v2[Y] - v0[Y]; - vec1[Z] = v2[Z] - v0[Z]; - - /* find cross product to get A, B, and C of plane equation */ - plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y]; - plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]); - plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X]; - - plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]); -} - -void -sphere(void) -{ - glPushMatrix(); - glTranslatef(60.f, -50.f, -360.f); - glCallList(SPHERE); - glPopMatrix(); -} - -void -cone(void) -{ - glPushMatrix(); - glTranslatef(-40.f, -40.f, -400.f); - glCallList(CONE); - glPopMatrix(); - -} - -enum { - NONE, SHADOW -}; - -int rendermode = NONE; - -void -menu(int mode) -{ - rendermode = mode; - glutPostRedisplay(); -} - -GLfloat leftwallshadow[4][4]; -GLfloat floorshadow[4][4]; - -GLfloat lightpos[] = -{50.f, 50.f, -320.f, 1.f}; - -void -redraw(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = - {1.f, 1.f, 1.f, 1.f}; - static GLfloat sphere_mat[] = - {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - /* Note: wall verticies are ordered so they are all front facing this lets - me do back face culling to speed things up. */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* Since we want to turn texturing on for floor only, we have to make floor - a separate glBegin()/glEnd() sequence. You can't turn texturing on and - off between begin and end calls */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f(100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f(100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - if (rendermode == SHADOW) { - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glColor3f(0.f, 0.f, 0.f); /* shadow color */ - - glPushMatrix(); - glMultMatrixf((GLfloat *) floorshadow); - cone(); - glPopMatrix(); - - glPushMatrix(); - glMultMatrixf((GLfloat *) floorshadow); - sphere(); - glPopMatrix(); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - } - /* walls */ - - if (rendermode == SHADOW) { - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 1, 0); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - } - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - glEnd(); - - if (rendermode == SHADOW) { - glStencilFunc(GL_EQUAL, 1, 1); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glColor3f(0.f, 0.f, 0.f); /* shadow color */ - glDisable(GL_DEPTH_TEST); - glPushMatrix(); - glMultMatrixf((GLfloat *) leftwallshadow); - cone(); - glPopMatrix(); - glEnable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - } - glBegin(GL_QUADS); - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f(100.f, -100.f, -320.f); - glVertex3f(100.f, 100.f, -320.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glPushMatrix(); - glTranslatef(lightpos[X], lightpos[Y], lightpos[Z]); - glDisable(GL_LIGHTING); - glColor3f(1.f, 1.f, .7f); - glCallList(LIGHT); - glEnable(GL_LIGHTING); - glPopMatrix(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - cone(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - sphere(); - - glutSwapBuffers(); /* high end machines may need this */ -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - if (key == '\033') - exit(0); -} - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ - -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - GLUquadricObj *sphere, *cone, *base; - GLfloat plane[4]; - GLfloat v0[3], v1[3], v2[3]; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL | GLUT_DOUBLE); - (void) glutCreateWindow("projection shadows"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("No Shadows", NONE); - glutAddMenuEntry("Shadows", SHADOW); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-100., 100., -100., 100., 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* make shadow matricies */ - - /* 3 points on floor */ - v0[X] = -100.f; - v0[Y] = -100.f; - v0[Z] = -320.f; - v1[X] = 100.f; - v1[Y] = -100.f; - v1[Z] = -320.f; - v2[X] = 100.f; - v2[Y] = -100.f; - v2[Z] = -520.f; - - findplane(plane, v0, v1, v2); - shadowmatrix(floorshadow, plane, lightpos); - - /* 3 points on left wall */ - v0[X] = -100.f; - v0[Y] = -100.f; - v0[Z] = -320.f; - v1[X] = -100.f; - v1[Y] = -100.f; - v1[Z] = -520.f; - v2[X] = -100.f; - v2[Y] = 100.f; - v2[Z] = -520.f; - - findplane(plane, v0, v1, v2); - shadowmatrix(leftwallshadow, plane, lightpos); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - /* make display lists for sphere and cone; for efficiency */ - - glNewList(SPHERE, GL_COMPILE); - sphere = gluNewQuadric(); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(LIGHT, GL_COMPILE); - sphere = gluNewQuadric(); - gluSphere(sphere, 5.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glNewList(FLOOR, GL_COMPILE); - glEndList(); - - glNewList(LEFTWALL, GL_COMPILE); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/projshadow.dsp b/lib/glut-3.7.6/progs/advanced/projshadow.dsp deleted file mode 100644 index d385ea6dc2d342e49968e336259b66362d6359d2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/projshadow.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="projshadow" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=projshadow - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "projshadow.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "projshadow.mak" CFG="projshadow - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "projshadow - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "projshadow - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "projshadow - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "projshadow - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "projshadow - Win32 Release" -# Name "projshadow - Win32 Debug" -# Begin Source File - -SOURCE=.\projshadow.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/projtex.c b/lib/glut-3.7.6/progs/advanced/projtex.c deleted file mode 100644 index 766916fa424f1a6e5ac7fd4aa8cdc6611b7efb03..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/projtex.c +++ /dev/null @@ -1,916 +0,0 @@ - -/* projtex.c - by David Yu and David Blythe, SGI */ - -/** - ** Demonstrates simple projective texture mapping. - ** - ** Button1 changes view, Button2 moves texture. - ** - ** (See: Segal, Korobkin, van Widenfelt, Foran, and Haeberli - ** "Fast Shadows and Lighting Effects Using Texture Mapping", SIGGRAPH '92) - ** - ** 1994,1995 -- David G Yu - ** - ** cc -o projtex projtex.c texture.c -lglut -lGLU -lGL -lX11 -lm - **/ - -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -int winWidth, winHeight; - -GLboolean redrawContinuously = GL_FALSE; - -float angle, axis[3]; -enum MoveModes { - MoveNone, MoveView, MoveObject, MoveTexture -}; -enum MoveModes mode = MoveNone; - -GLfloat objectXform[4][4]; -GLfloat textureXform[4][4]; - -void (*drawObject) (void); -void (*loadTexture) (void); -GLboolean textureEnabled = GL_TRUE; -GLboolean showProjection = GL_TRUE; -GLboolean linearFilter = GL_TRUE; - -char *texFilename = NULL; - -GLfloat zoomFactor = 1.0; - -/*****************************************************************/ - -/* matrix = identity */ -void -matrixIdentity(GLfloat matrix[16]) -{ - matrix[0] = 1.0; - matrix[1] = 0.0; - matrix[2] = 0.0; - matrix[3] = 0.0; - matrix[4] = 0.0; - matrix[5] = 1.0; - matrix[6] = 0.0; - matrix[7] = 0.0; - matrix[8] = 0.0; - matrix[9] = 0.0; - matrix[10] = 1.0; - matrix[11] = 0.0; - matrix[12] = 0.0; - matrix[13] = 0.0; - matrix[14] = 0.0; - matrix[15] = 1.0; -} - -/* matrix2 = transpose(matrix1) */ -void -matrixTranspose(GLfloat matrix2[16], GLfloat matrix1[16]) -{ - matrix2[0] = matrix1[0]; - matrix2[1] = matrix1[4]; - matrix2[2] = matrix1[8]; - matrix2[3] = matrix1[12]; - - matrix2[4] = matrix1[1]; - matrix2[5] = matrix1[5]; - matrix2[6] = matrix1[9]; - matrix2[7] = matrix1[13]; - - matrix2[8] = matrix1[2]; - matrix2[9] = matrix1[6]; - matrix2[10] = matrix1[10]; - matrix2[11] = matrix1[14]; - - matrix2[12] = matrix1[3]; - matrix2[13] = matrix1[7]; - matrix2[14] = matrix1[14]; - matrix2[15] = matrix1[15]; -} - -/*****************************************************************/ - -/* load SGI .rgb image (pad with a border of the specified width and color) */ -static void -imgLoad(char *filenameIn, int borderIn, GLfloat borderColorIn[4], - int *wOut, int *hOut, GLubyte ** imgOut) -{ - int border = borderIn; - int width, height; - int w, h; - GLubyte *image, *img, *p; - int i, j, components; - - image = (GLubyte *) read_texture(filenameIn, &width, &height, &components); - w = width + 2 * border; - h = height + 2 * border; - img = (GLubyte *) calloc(w * h, 4 * sizeof(unsigned char)); - - p = img; - for (j = -border; j < height + border; ++j) { - for (i = -border; i < width + border; ++i) { - if (0 <= j && j <= height - 1 && 0 <= i && i <= width - 1) { - p[0] = image[4 * (j * width + i) + 0]; - p[1] = image[4 * (j * width + i) + 1]; - p[2] = image[4 * (j * width + i) + 2]; - p[3] = 0xff; - } else { - p[0] = borderColorIn[0] * 0xff; - p[1] = borderColorIn[1] * 0xff; - p[2] = borderColorIn[2] * 0xff; - p[3] = borderColorIn[3] * 0xff; - } - p += 4; - } - } - free(image); - *wOut = w; - *hOut = h; - *imgOut = img; -} - -/*****************************************************************/ - -/* Load the image file specified on the command line as the current texture */ -void -loadImageTexture(void) -{ - static int texWidth, texHeight; - static GLubyte *texData; - GLfloat borderColor[4] = - {1.0, 1.0, 1.0, 1.0}; - - if (!texData && texFilename) { - imgLoad(texFilename, 2, borderColor, &texWidth, &texHeight, &texData); - } - if (linearFilter) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor); - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, texWidth, texHeight, - GL_RGBA, GL_UNSIGNED_BYTE, texData); -} - -/* Create a simple spotlight pattern and make it the current texture */ -void -loadSpotlightTexture(void) -{ - static int texWidth = 64, texHeight = 64; - static GLubyte *texData; - GLfloat borderColor[4] = - {0.1, 0.1, 0.1, 1.0}; - - if (!texData) { - GLubyte *p; - int i, j; - - texData = (GLubyte *) malloc(texWidth * texHeight * 4 * sizeof(GLubyte)); - - p = texData; - for (j = 0; j < texHeight; ++j) { - float dy = (texHeight * 0.5 - j + 0.5) / (texHeight * 0.5); - - for (i = 0; i < texWidth; ++i) { - float dx = (texWidth * 0.5 - i + 0.5) / (texWidth * 0.5); - float r = cos(M_PI / 2.0 * sqrt(dx * dx + dy * dy)); - float c; - - r = (r < 0) ? 0 : r * r; - c = 0xff * (r + borderColor[0]); - p[0] = (c <= 0xff) ? c : 0xff; - c = 0xff * (r + borderColor[1]); - p[1] = (c <= 0xff) ? c : 0xff; - c = 0xff * (r + borderColor[2]); - p[2] = (c <= 0xff) ? c : 0xff; - c = 0xff * (r + borderColor[3]); - p[3] = (c <= 0xff) ? c : 0xff; - p += 4; - } - } - } - if (linearFilter) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor); - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, texWidth, texHeight, - GL_RGBA, GL_UNSIGNED_BYTE, texData); -} - -/*****************************************************************/ - -void -checkErrors(void) -{ - GLenum error; - while ((error = glGetError()) != GL_NO_ERROR) { - fprintf(stderr, "Error: %s\n", (char *) gluErrorString(error)); - } -} - -void -drawCube(void) -{ - glBegin(GL_QUADS); - - glNormal3f(-1.0, 0.0, 0.0); - glColor3f(0.80, 0.50, 0.50); - glVertex3f(-0.5, -0.5, -0.5); - glVertex3f(-0.5, -0.5, 0.5); - glVertex3f(-0.5, 0.5, 0.5); - glVertex3f(-0.5, 0.5, -0.5); - - glNormal3f(1.0, 0.0, 0.0); - glColor3f(0.50, 0.80, 0.50); - glVertex3f(0.5, 0.5, 0.5); - glVertex3f(0.5, -0.5, 0.5); - glVertex3f(0.5, -0.5, -0.5); - glVertex3f(0.5, 0.5, -0.5); - - glNormal3f(0.0, -1.0, 0.0); - glColor3f(0.50, 0.50, 0.80); - glVertex3f(-0.5, -0.5, -0.5); - glVertex3f(0.5, -0.5, -0.5); - glVertex3f(0.5, -0.5, 0.5); - glVertex3f(-0.5, -0.5, 0.5); - - glNormal3f(0.0, 1.0, 0.0); - glColor3f(0.50, 0.80, 0.80); - glVertex3f(0.5, 0.5, 0.5); - glVertex3f(0.5, 0.5, -0.5); - glVertex3f(-0.5, 0.5, -0.5); - glVertex3f(-0.5, 0.5, 0.5); - - glNormal3f(0.0, 0.0, -1.0); - glColor3f(0.80, 0.50, 0.80); - glVertex3f(-0.5, -0.5, -0.5); - glVertex3f(-0.5, 0.5, -0.5); - glVertex3f(0.5, 0.5, -0.5); - glVertex3f(0.5, -0.5, -0.5); - - glNormal3f(0.0, 0.0, 1.0); - glColor3f(1.00, 0.80, 0.50); - glVertex3f(0.5, 0.5, 0.5); - glVertex3f(-0.5, 0.5, 0.5); - glVertex3f(-0.5, -0.5, 0.5); - glVertex3f(0.5, -0.5, 0.5); - glEnd(); -} - -void -drawDodecahedron(void) -{ -#define A (0.5 * 1.61803) /* (sqrt(5) + 1) / 2 */ -#define B (0.5 * 0.61803) /* (sqrt(5) - 1) / 2 */ -#define C (0.5 * 1.0) - GLfloat vertexes[20][3] = - { - {-A, 0.0, B}, - {-A, 0.0, -B}, - {A, 0.0, -B}, - {A, 0.0, B}, - {B, -A, 0.0}, - {-B, -A, 0.0}, - {-B, A, 0.0}, - {B, A, 0.0}, - {0.0, B, -A}, - {0.0, -B, -A}, - {0.0, -B, A}, - {0.0, B, A}, - {-C, -C, C}, - {-C, -C, -C}, - {C, -C, -C}, - {C, -C, C}, - {-C, C, C}, - {-C, C, -C}, - {C, C, -C}, - {C, C, C}, - }; -#undef A -#undef B -#undef C - GLint polygons[12][5] = - { - {0, 12, 10, 11, 16}, - {1, 17, 8, 9, 13}, - {2, 14, 9, 8, 18}, - {3, 19, 11, 10, 15}, - {4, 14, 2, 3, 15}, - {5, 12, 0, 1, 13}, - {6, 17, 1, 0, 16}, - {7, 19, 3, 2, 18}, - {8, 17, 6, 7, 18}, - {9, 14, 4, 5, 13}, - {10, 12, 5, 4, 15}, - {11, 19, 7, 6, 16}, - }; - int i; - - glColor3f(0.75, 0.75, 0.75); - for (i = 0; i < 12; ++i) { - GLfloat *p0, *p1, *p2, d; - GLfloat u[3], v[3], n[3]; - - p0 = &vertexes[polygons[i][0]][0]; - p1 = &vertexes[polygons[i][1]][0]; - p2 = &vertexes[polygons[i][2]][0]; - - u[0] = p2[0] - p1[0]; - u[1] = p2[1] - p1[1]; - u[2] = p2[2] - p1[2]; - - v[0] = p0[0] - p1[0]; - v[1] = p0[1] - p1[1]; - v[2] = p0[2] - p1[2]; - - n[0] = u[1] * v[2] - u[2] * v[1]; - n[1] = u[2] * v[0] - u[0] * v[2]; - n[2] = u[0] * v[1] - u[1] * v[0]; - - d = 1.0 / sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]); - n[0] *= d; - n[1] *= d; - n[2] *= d; - - glBegin(GL_POLYGON); - glNormal3fv(n); - glVertex3fv(p0); - glVertex3fv(p1); - glVertex3fv(p2); - glVertex3fv(vertexes[polygons[i][3]]); - glVertex3fv(vertexes[polygons[i][4]]); - glEnd(); - } -} - -void -drawSphere(void) -{ - int numMajor = 24; - int numMinor = 32; - float radius = 0.8; - double majorStep = (M_PI / numMajor); - double minorStep = (2.0 * M_PI / numMinor); - int i, j; - - glColor3f(0.50, 0.50, 0.50); - for (i = 0; i < numMajor; ++i) { - double a = i * majorStep; - double b = a + majorStep; - double r0 = radius * sin(a); - double r1 = radius * sin(b); - GLfloat z0 = radius * cos(a); - GLfloat z1 = radius * cos(b); - - glBegin(GL_TRIANGLE_STRIP); - for (j = 0; j <= numMinor; ++j) { - double c = j * minorStep; - GLfloat x = cos(c); - GLfloat y = sin(c); - - glNormal3f((x * r0) / radius, (y * r0) / radius, z0 / radius); - glTexCoord2f(j / (GLfloat) numMinor, i / (GLfloat) numMajor); - glVertex3f(x * r0, y * r0, z0); - - glNormal3f((x * r1) / radius, (y * r1) / radius, z1 / radius); - glTexCoord2f(j / (GLfloat) numMinor, (i + 1) / (GLfloat) numMajor); - glVertex3f(x * r1, y * r1, z1); - } - glEnd(); - } -} - -/*****************************************************************/ - -float xmin = -0.035, xmax = 0.035; -float ymin = -0.035, ymax = 0.035; -float nnear = 0.1; -float ffar = 1.9; -float distance = -1.0; - -static void -loadTextureProjection(GLfloat m[16]) -{ - GLfloat mInverse[4][4]; - - /* Should use true inverse, but since m consists only of rotations, we can - just use the transpose. */ - matrixTranspose((GLfloat *) mInverse, m); - - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glTranslatef(0.5, 0.5, 0.0); - glScalef(0.5, 0.5, 1.0); - glFrustum(xmin, xmax, ymin, ymax, nnear, ffar); - glTranslatef(0.0, 0.0, distance); - glMultMatrixf((GLfloat *) mInverse); - glMatrixMode(GL_MODELVIEW); -} - -static void -drawTextureProjection(void) -{ - float t = ffar / nnear; - GLfloat n[4][3]; - GLfloat f[4][3]; - - n[0][0] = xmin; - n[0][1] = ymin; - n[0][2] = -(nnear + distance); - - n[1][0] = xmax; - n[1][1] = ymin; - n[1][2] = -(nnear + distance); - - n[2][0] = xmax; - n[2][1] = ymax; - n[2][2] = -(nnear + distance); - - n[3][0] = xmin; - n[3][1] = ymax; - n[3][2] = -(nnear + distance); - - f[0][0] = xmin * t; - f[0][1] = ymin * t; - f[0][2] = -(ffar + distance); - - f[1][0] = xmax * t; - f[1][1] = ymin * t; - f[1][2] = -(ffar + distance); - - f[2][0] = xmax * t; - f[2][1] = ymax * t; - f[2][2] = -(ffar + distance); - - f[3][0] = xmin * t; - f[3][1] = ymax * t; - f[3][2] = -(ffar + distance); - - glColor3f(1.0, 1.0, 0.0); - glBegin(GL_LINE_LOOP); - glVertex3fv(n[0]); - glVertex3fv(n[1]); - glVertex3fv(n[2]); - glVertex3fv(n[3]); - glVertex3fv(f[3]); - glVertex3fv(f[2]); - glVertex3fv(f[1]); - glVertex3fv(f[0]); - glVertex3fv(n[0]); - glVertex3fv(n[1]); - glVertex3fv(f[1]); - glVertex3fv(f[0]); - glVertex3fv(f[3]); - glVertex3fv(f[2]); - glVertex3fv(n[2]); - glVertex3fv(n[3]); - glEnd(); -} - -/*****************************************************************/ - -void -initialize(void) -{ - GLfloat light0Pos[4] = - {0.3, 0.3, 0.0, 1.0}; - GLfloat matAmb[4] = - {0.01, 0.01, 0.01, 1.00}; - GLfloat matDiff[4] = - {0.65, 0.65, 0.65, 1.00}; - GLfloat matSpec[4] = - {0.30, 0.30, 0.30, 1.00}; - GLfloat matShine = 10.0; - GLfloat eyePlaneS[] = - {1.0, 0.0, 0.0, 0.0}; - GLfloat eyePlaneT[] = - {0.0, 1.0, 0.0, 0.0}; - GLfloat eyePlaneR[] = - {0.0, 0.0, 1.0, 0.0}; - GLfloat eyePlaneQ[] = - {0.0, 0.0, 0.0, 1.0}; - - /* Setup Misc. */ - glClearColor(0.41, 0.41, 0.31, 0.0); - - glEnable(GL_DEPTH_TEST); - - glLineWidth(2.0); - - glCullFace(GL_FRONT); - glEnable(GL_CULL_FACE); - - glMatrixMode(GL_PROJECTION); - glFrustum(-0.5, 0.5, -0.5, 0.5, 1, 3); - glMatrixMode(GL_MODELVIEW); - glTranslatef(0, 0, -2); - - matrixIdentity((GLfloat *) objectXform); - matrixIdentity((GLfloat *) textureXform); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0, 1, 0, 1, -1, 1); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glRasterPos2i(0, 0); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - /* Setup Lighting */ - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, matAmb); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, matDiff); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, matSpec); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, matShine); - - glEnable(GL_COLOR_MATERIAL); - - glLightfv(GL_LIGHT0, GL_POSITION, light0Pos); - glEnable(GL_LIGHT0); - - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - glEnable(GL_LIGHTING); - - /* Setup Texture */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - (*loadTexture) (); - - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGenfv(GL_S, GL_EYE_PLANE, eyePlaneS); - - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGenfv(GL_T, GL_EYE_PLANE, eyePlaneT); - - glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGenfv(GL_R, GL_EYE_PLANE, eyePlaneR); - - glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGenfv(GL_Q, GL_EYE_PLANE, eyePlaneQ); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (textureEnabled) { - if (mode == MoveTexture || mode == MoveView) { - /* Have OpenGL compute the new transformation (simple but slow). */ - glPushMatrix(); - glLoadIdentity(); - glRotatef(angle, axis[0], axis[1], axis[2]); - glMultMatrixf((GLfloat *) textureXform); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) textureXform); - glPopMatrix(); - } - loadTextureProjection((GLfloat *) textureXform); - - if (showProjection) { - glPushMatrix(); - glMultMatrixf((GLfloat *) textureXform); - glDisable(GL_LIGHTING); - drawTextureProjection(); - glEnable(GL_LIGHTING); - glPopMatrix(); - } - glEnable(GL_TEXTURE_2D); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - glEnable(GL_TEXTURE_GEN_Q); - } - if (mode == MoveObject || mode == MoveView) { - /* Have OpenGL compute the new transformation (simple but slow). */ - glPushMatrix(); - glLoadIdentity(); - glRotatef(angle, axis[0], axis[1], axis[2]); - glMultMatrixf((GLfloat *) objectXform); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) objectXform); - glPopMatrix(); - } - glPushMatrix(); - glMultMatrixf((GLfloat *) objectXform); - (*drawObject) (); - glPopMatrix(); - - glDisable(GL_TEXTURE_2D); - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glDisable(GL_TEXTURE_GEN_R); - glDisable(GL_TEXTURE_GEN_Q); - - if (zoomFactor > 1.0) { - glDisable(GL_DEPTH_TEST); - glCopyPixels(0, 0, winWidth / zoomFactor, winHeight / zoomFactor, GL_COLOR); - glEnable(GL_DEPTH_TEST); - } - glFlush(); - glutSwapBuffers(); - checkErrors(); -} - -/*****************************************************************/ - -/* simple trackball-like motion control */ -float lastPos[3]; -int lastTime; - -void -ptov(int x, int y, int width, int height, float v[3]) -{ - float d, a; - - /* project x,y onto a hemi-sphere centered within width, height */ - v[0] = (2.0 * x - width) / width; - v[1] = (height - 2.0 * y) / height; - d = sqrt(v[0] * v[0] + v[1] * v[1]); - v[2] = cos((M_PI / 2.0) * ((d < 1.0) ? d : 1.0)); - a = 1.0 / sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - v[0] *= a; - v[1] *= a; - v[2] *= a; -} - -void -startMotion(int x, int y, int but, int time) -{ - if (but == GLUT_LEFT_BUTTON) { - mode = MoveView; - } else if (but == GLUT_MIDDLE_BUTTON) { - mode = MoveTexture; - } else { - return; - } - - lastTime = time; - ptov(x, y, winWidth, winHeight, lastPos); -} - -void -animate(void) -{ - glutPostRedisplay(); -} - -void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (redrawContinuously) - glutIdleFunc(animate); - } else { - if (redrawContinuously) - glutIdleFunc(NULL); - } -} - -void -stopMotion(int but, int time) -{ - if ((but == GLUT_LEFT_BUTTON && mode == MoveView) || - (but == GLUT_MIDDLE_BUTTON && mode == MoveTexture)) { - } else { - return; - } - - if (time == lastTime) { - redrawContinuously = GL_TRUE; - glutIdleFunc(animate); - } else { - angle = 0.0; - redrawContinuously = GL_FALSE; - glutIdleFunc(0); - } - if (!redrawContinuously) { - mode = MoveNone; - } -} - -void -trackMotion(int x, int y) -{ - float curPos[3], dx, dy, dz; - - ptov(x, y, winWidth, winHeight, curPos); - - dx = curPos[0] - lastPos[0]; - dy = curPos[1] - lastPos[1]; - dz = curPos[2] - lastPos[2]; - angle = 90.0 * sqrt(dx * dx + dy * dy + dz * dz); - - axis[0] = lastPos[1] * curPos[2] - lastPos[2] * curPos[1]; - axis[1] = lastPos[2] * curPos[0] - lastPos[0] * curPos[2]; - axis[2] = lastPos[0] * curPos[1] - lastPos[1] * curPos[0]; - - lastTime = glutGet(GLUT_ELAPSED_TIME); - lastPos[0] = curPos[0]; - lastPos[1] = curPos[1]; - lastPos[2] = curPos[2]; - glutPostRedisplay(); -} - -/*****************************************************************/ - -void -object(void) -{ - static int object; - - object++; - object %= 3; - switch (object) { - case 0: - drawObject = drawCube; - break; - case 1: - drawObject = drawDodecahedron; - break; - case 2: - drawObject = drawSphere; - break; - default: - break; - } -} - -static void -nop(void) -{ -} - -void -texture(void) -{ - static int texture = 0; - - texture++; - texture %= 3; - if (texture == 1 && texFilename == NULL) { - /* Skip file texture if not loaded. */ - texture++; - } - switch (texture) { - case 0: - loadTexture = nop; - textureEnabled = GL_FALSE; - break; - case 1: - loadTexture = loadImageTexture; - (*loadTexture) (); - textureEnabled = GL_TRUE; - break; - case 2: - loadTexture = loadSpotlightTexture; - (*loadTexture) (); - textureEnabled = GL_TRUE; - break; - default: - break; - } -} - -void -help(void) -{ - printf("'h' - help\n"); - printf("'l' - toggle linear/nearest filter\n"); - printf("'s' - toggle projection frustum\n"); - printf("'t' - toggle projected texture\n"); - printf("'o' - toggle object\n"); - printf("'z' - increase zoom factor\n"); - printf("'Z' - decrease zoom factor\n"); - printf("left mouse - move view\n"); - printf("middle mouse - move projection\n"); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case '\033': - exit(0); - break; - case 'l': - linearFilter = !linearFilter; - (*loadTexture) (); - break; - case 's': - showProjection = !showProjection; - break; - case 't': - texture(); - break; - case 'o': - object(); - break; - case 'z': - zoomFactor += 1.0; - glPixelZoom(zoomFactor, zoomFactor); - glViewport(0, 0, winWidth / zoomFactor, winHeight / zoomFactor); - break; - case 'Z': - zoomFactor -= 1.0; - if (zoomFactor < 1.0) - zoomFactor = 1.0; - glPixelZoom(zoomFactor, zoomFactor); - glViewport(0, 0, winWidth / zoomFactor, winHeight / zoomFactor); - break; - case 'h': - help(); - break; - } - glutPostRedisplay(); -} - -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) - startMotion(x, y, button, glutGet(GLUT_ELAPSED_TIME)); - else if (state == GLUT_UP) - stopMotion(button, glutGet(GLUT_ELAPSED_TIME)); - glutPostRedisplay(); -} - -void -reshape(int w, int h) -{ - winWidth = w; - winHeight = h; - glViewport(0, 0, w / zoomFactor, h / zoomFactor); -} - -void -usage(char *name) -{ - fprintf(stderr, "usage: %s \n", name); - fprintf(stderr, "\n"); -} - -void -menu(int selection) -{ - if (selection == 666) { - exit(0); - } - key((unsigned char) selection, 0, 0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); - (void) glutCreateWindow("projtex"); - if (argc > 2) { - usage(argv[0]); - exit(1); - } - if (argc > 1) { - texFilename = argv[1]; - } - loadTexture = loadImageTexture; - drawObject = drawCube; - initialize(); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(trackMotion); - glutVisibilityFunc(vis); - glutCreateMenu(menu); - glutAddMenuEntry("Toggle showing projection", 's'); - glutAddMenuEntry("Switch texture", 't'); - glutAddMenuEntry("Switch object", 'o'); - glutAddMenuEntry("Toggle filtering", 'l'); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - texture(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/projtex.dsp b/lib/glut-3.7.6/progs/advanced/projtex.dsp deleted file mode 100644 index ed88e0922fe09bcdb670391268430c6a7cb6f34c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/projtex.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="projtex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=projtex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "projtex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "projtex.mak" CFG="projtex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "projtex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "projtex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "projtex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "projtex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "projtex - Win32 Release" -# Name "projtex - Win32 Debug" -# Begin Source File - -SOURCE=.\projtex.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/rasonly.c b/lib/glut-3.7.6/progs/advanced/rasonly.c deleted file mode 100644 index 9ffce8f8c701a458e0df88e3a78b6d8eeb51c886..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/rasonly.c +++ /dev/null @@ -1,326 +0,0 @@ -/* - * rasonly.c - - * Demonstrates the use of OpenGL for rasterization-only, with - * perspective-correct texture mapping. - * - * Michael I. Gold - * Silicon Graphics Computer Systems, May 1997 - * - * Since current low-end 3D accelerators support only rasterization in - * hardware, a number of developers have expressed interested in using - * OpenGL as an interface to rasterization hardware while retaining - * control of transformations and lighting in the application code. - * Many OpenGL implementations detect and optimize for identity xforms, - * so this approach is entirely reasonable. - * - * Setting up rasterization-only is fairly straightforward. The projection - * matrix is set up as a one-to-one mapping between eye and clip coordinates, - * and the modelview matrix is set up as identity, e.g. object coordinates - * map directly to eye coordinates. This can be achieved as follows: - * - * glMatrixMode(GL_PROJECTION); - * glLoadIdentity(); - * glOrtho(0.0f, (GLfloat) width, 0.0f, (GLfloat) height, -1.0f, 1.0f); - * glMatrixMode(GL_MODELVIEW); - * glLoadIdentity(); - * glViewport(0, 0, width, height); - * - * where (width, height) represent the window dimensions. - * - * Now transformed geometry may be specified directly through the standard - * interfaces (e.g. glVertex*()). The only tricky part that remains is - * specifying texture coordinates such that perspective correction may - * occur. The answer is to use glTexCoord4*(), and perform the perspective - * divide on the texture coordinates directly. - */ - -#include -#include -#include - -GLboolean motion = GL_TRUE; - -/* Matrices */ -GLfloat rot = 0.0f; -GLfloat ModelView[16]; -GLfloat Projection[16]; -GLfloat Viewport[4]; - -/* Sample geometry */ -GLfloat quadV[][4] = { - { -1.0f, 0.0f, -1.0f, 1.0f }, - { 1.0f, 0.0f, -1.0f, 1.0f }, - { 1.0f, 0.5f, -0.2f, 1.0f }, - { -1.0f, 0.5f, -0.2f, 1.0f }, -}; - -GLfloat quadC[][3] = { - { 1.0f, 0.0f, 0.0f }, - { 0.0f, 1.0f, 0.0f }, - { 0.0f, 0.0f, 1.0f }, - { 1.0f, 1.0f, 1.0f }, -}; - -GLfloat quadT[][2] = { - { 0.0f, 0.0f }, - { 0.0f, 1.0f }, - { 1.0f, 1.0f }, - { 1.0f, 0.0f }, -}; - -/********************************************************************* - * Utility functions - */ - -int texWidth = 128; -int texHeight = 128; - -/* Create and download the application texture map */ -static void -setCheckedTexture(void) -{ - int texSize; - void *textureBuf; - GLubyte *p; - int i,j; - - /* malloc for rgba as worst case */ - texSize = texWidth*texHeight*4; - - textureBuf = malloc(texSize); - if (NULL == textureBuf) return; - - p = (GLubyte *)textureBuf; - for (i=0; i < texWidth; i++) { - for (j=0; j < texHeight; j++) { - if ((i ^ j) & 8) { - p[0] = 0xff; p[1] = 0xff; p[2] = 0xff; p[3] = 0xff; - } else { - p[0] = 0x08; p[1] = 0x08; p[2] = 0x08; p[3] = 0xff; - } - p += 4; - } - } - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, texWidth, texHeight, - GL_RGBA, GL_UNSIGNED_BYTE, textureBuf); - free(textureBuf); -} - -/* Perform one transform operation */ -static void -Transform(GLfloat *matrix, GLfloat *in, GLfloat *out) -{ - int ii; - - for (ii=0; ii<4; ii++) { - out[ii] = - in[0] * matrix[0*4+ii] + - in[1] * matrix[1*4+ii] + - in[2] * matrix[2*4+ii] + - in[3] * matrix[3*4+ii]; - } -} - -/* Transform a vertex from object coordinates to window coordinates. - * Lighting is left as an exercise for the reader. - */ -static void -DoTransform(GLfloat *in, GLfloat *out) -{ - GLfloat tmp[4]; - GLfloat invW; /* 1/w */ - - /* Modelview xform */ - Transform(ModelView, in, tmp); - - /* Lighting calculation goes here! */ - - /* Projection xform */ - Transform(Projection, tmp, out); - - if (out[3] == 0.0f) /* do what? */ - return; - - invW = 1.0f / out[3]; - - /* Perspective divide */ - out[0] *= invW; - out[1] *= invW; - out[2] *= invW; - - /* Map to 0..1 range */ - out[0] = out[0] * 0.5f + 0.5f; - out[1] = out[1] * 0.5f + 0.5f; - out[2] = out[2] * 0.5f + 0.5f; - - /* Map to viewport */ - out[0] = out[0] * Viewport[2] + Viewport[0]; - out[1] = out[1] * Viewport[3] + Viewport[1]; - - /* Store inverted w for performance */ - out[3] = invW; -} - -/********************************************************************* - * Application code begins here - */ - -/* For the sake of brevity, I'm use OpenGL to compute my matrices. */ -void UpdateModelView(void) -{ - glPushMatrix(); - glLoadIdentity(); - gluLookAt(0.0f, 1.0f, -4.0f, - 0.0f, 0.0f, 0.0f, - 0.0f, 1.0f, 0.0f); - glRotatef(rot, 0.0f, 1.0f, 0.0f); - /* Retrieve the matrix */ - glGetFloatv(GL_MODELVIEW_MATRIX, ModelView); - glPopMatrix(); -} - -void InitMatrices(void) -{ - /* Calculate projection matrix */ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluPerspective(45.0f, 1.0f, 1.0f, 100.0f); - /* Retrieve the matrix */ - glGetFloatv(GL_PROJECTION_MATRIX, Projection); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - UpdateModelView(); -} - -void Init(void) -{ - glClearColor(0.2f, 0.2f, 0.6f, 1.0f); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - setCheckedTexture(); - - InitMatrices(); -} - -void Redraw(void) -{ - GLfloat tmp[4]; - int ii; - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glBegin(GL_QUADS); - - for (ii = 0; ii < 4; ii++) { - - /* Transform a vertex from object to window coordinates. - * 1/w is returned as tmp[3] for perspective-correcting - * the texture coordinates. - */ - DoTransform(quadV[ii], tmp); - - /* Ideally the colors will be computed by the lighting equation, - * but I've hard-coded values for this example. - */ - glColor3fv(quadC[ii]); - - /* Scale by 1/w (stored in tmp[3]) */ - glTexCoord4f(quadT[ii][0] * tmp[3], - quadT[ii][1] * tmp[3], 0.0f, tmp[3]); - - /* Note I am using Vertex3, not Vertex4, since we have already - * performed the perspective divide. - */ - glVertex3fv(tmp); - } - - glEnd(); - - glutSwapBuffers(); -} - -void Motion(void) -{ - rot += 3.0f; - if (rot >= 360.0f) rot -= 360.0f; - UpdateModelView(); - Redraw(); -} - -/* ARGSUSED1 */ -void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - case 'm': - motion = !motion; - glutIdleFunc(motion ? Motion : NULL); - break; - } -} - -/* ARGSUSED1 */ -void Button(int button, int state, int x, int y) -{ - switch (button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) { - rot -= 15.0f; - UpdateModelView(); - Redraw(); - } - break; - case GLUT_RIGHT_BUTTON: - if (state == GLUT_DOWN) { - rot += 15.0f; - UpdateModelView(); - Redraw(); - } - break; - } -} - -void Reshape(int width, int height) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0f, (GLfloat) width, 0.0f, (GLfloat) height, -1.0f, 1.0f); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glViewport(0, 0, width, height); - - Viewport[0] = Viewport[1] = 0.0f; - Viewport[2] = (GLfloat) width; - Viewport[3] = (GLfloat) height; -} - -int -main(int argc, char *argv[]) -{ - char *t; - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH); - glutInitWindowSize(400, 400); - glutCreateWindow((t=strrchr(argv[0], '\\')) != NULL ? t+1 : argv[0]); - - Init(); - - glutDisplayFunc(Redraw); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutMouseFunc(Button); - glutIdleFunc(Motion); - - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced/rasonly.dsp b/lib/glut-3.7.6/progs/advanced/rasonly.dsp deleted file mode 100644 index 5803d3848a13325d77fd6a31cc49263b8090a5ec..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/rasonly.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="rasonly" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=rasonly - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "rasonly.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "rasonly.mak" CFG="rasonly - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "rasonly - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "rasonly - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "rasonly - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "rasonly - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "rasonly - Win32 Release" -# Name "rasonly - Win32 Debug" -# Begin Source File - -SOURCE=.\rasonly.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/redblue_stereo.c b/lib/glut-3.7.6/progs/advanced/redblue_stereo.c deleted file mode 100644 index 902a0298d29664ea6c463e0a9cbc50d6d2b70828..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/redblue_stereo.c +++ /dev/null @@ -1,289 +0,0 @@ - -/* redblue_stereo.c - demo of stereo for red/blue filter stereo glasses */ - -/* by Walter Vannini (walterv@jps.net, waltervannini@hotmail.com) */ - -/* In stereo mode, the object is drawn in red for the left eye - and blue for the right eye. Viewing the scene with red/blue - filter stereo glasses should give a sense of stereo 3D. - glColorMask is used to control update of the red and blue - channel. glFrustum is used to setup two different view frustums - for each eye based on eye separation. */ - -/* Copyright (c) Walter Vannini, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#include -#include -#include - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -void init(void); -void KeyboardFunc(unsigned char key, int x, int y); -void MenuFunc(int value); -void IdleFunc(void); -void ReshapeFunc(int w, int h); -void DisplayFunc(void); - - -struct ProgramState -{ - int w; - int h; - GLdouble RotationY; - double eye; - double zscreen; - double znear; - double zfar; - double RotationIncrement; - int solidmode; -}; -struct ProgramState ps; - -const double PIXELS_PER_INCH = 100.0; - -void init(void) -{ - GLfloat mat_ambient[] = {0.2,0.0,0.2,1.0} ; - GLfloat mat_diffuse[] = {0.7,0.0,0.7,1.0} ; - GLfloat mat_specular[] = {0.1,0.0,0.1,1.0} ; - GLfloat mat_shininess[]={20.0}; - - GLfloat light_position[]={0.0,5.0,20.0,1.0}; - - GLfloat light_ambient0[]= {1.0,0.0,0.0,1.0}; - GLfloat light_diffuse0[]= {1.0,0.0,0.0,1.0}; - GLfloat light_specular0[]={1.0,0.0,0.0,1.0}; - - GLfloat light_ambient1[]= {0.0,0.0,1.0,1.0}; - GLfloat light_diffuse1[]= {0.0,0.0,1.0,1.0}; - GLfloat light_specular1[]={0.0,0.0,1.0,1.0}; - - glDisable(GL_DITHER); - glClearColor(0.0, 0.0, 0.0, 1.0); - glShadeModel(GL_SMOOTH); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glEnable(GL_CULL_FACE); - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - - - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient0); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse0); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular0); - - glLightfv(GL_LIGHT1, GL_POSITION, light_position); - glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient1); - glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse1); - glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular1); - glEnable(GL_LIGHTING); - - ps.eye=0.80; - ps.zscreen = 10.0; - ps.znear = 7.0; - ps.zfar = 13.0; - ps.RotationY = 0.0; - ps.RotationIncrement = 4.0; - ps.solidmode = 1; -} - -void KeyboardFunc(unsigned char key, int x, int y) -{ - switch(key) - { - case 27: /* escape */ - case 'q': - case 'Q': - exit(0); - break; - case 's': /* stereo */ - ps.eye = 0.80; - break; - case '1': - ps.solidmode = 1; - glFrontFace(GL_CCW); - break; - case '2': - ps.solidmode = 2; - glFrontFace(GL_CCW); - break; - case '3': - ps.solidmode = 3; - /* The teapot polygons face the wrong way. Sigh. */ - glFrontFace(GL_CW); - break; - case '4': - ps.solidmode = 4; - glFrontFace(GL_CCW); - break; - case 'm': /* mono */ - ps.eye = 0.0; - break; - } -} - -void MenuFunc(int value) -{ - KeyboardFunc((unsigned char) value, 0, 0); -} - -void IdleFunc(void) -{ - ps.RotationY += ps.RotationIncrement; - glutPostRedisplay(); -} - -void ReshapeFunc(int w, int h) -{ - glViewport(0,0, w, h); - ps.w = w; - ps.h = h; -} - -void DisplayFunc(void) -{ - double xfactor=1.0, yfactor=1.0; - double Eye =0.0; - int i; - - if(ps.w < ps.h) - { - xfactor = 1.0; - yfactor = ps.h/ps.w; - } - else if(ps.h < ps.w) - { - xfactor = ps.w/ps.h; - yfactor = 1.0; - } - - glClear(GL_COLOR_BUFFER_BIT); - for(i=0;i<2;i++) - { - glEnable(GL_LIGHT0 + i); - glClear(GL_DEPTH_BUFFER_BIT); - if(i==0) /* left eye - RED */ - { - Eye = ps.eye; - glColorMask(GL_TRUE,GL_FALSE,GL_FALSE,GL_TRUE); - } - else /* if(i==1) right eye - BLUE */ - { - Eye = -ps.eye; - glColorMask(GL_FALSE,GL_FALSE,GL_TRUE,GL_TRUE); - } - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum( - (-(ps.w/(2.0*PIXELS_PER_INCH))+Eye) *(ps.znear/ps.zscreen)*xfactor, - (ps.w/(2.0*PIXELS_PER_INCH)+Eye) *(ps.znear/ps.zscreen)*xfactor, - -(ps.h/(2.0*PIXELS_PER_INCH))*(ps.znear/ps.zscreen)*yfactor, - (ps.h/(2.0*PIXELS_PER_INCH))*(ps.znear/ps.zscreen)*yfactor, - ps.znear, ps.zfar); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(Eye,0.0,0.0); - glTranslated(0,0,-ps.zscreen); - - switch(ps.solidmode) - { - case 1: - { - glTranslated(cos(ps.RotationY*M_PI/180.0), - 0, -sin(ps.RotationY*M_PI/180.0) ); - glRotated(ps.RotationY, 0.0,0.1,0.0); - glPushMatrix(); - glScalef(0.5,0.5,0.5); - glutSolidDodecahedron(); - glPopMatrix(); - break; - } - case 2: - { - glTranslated(cos(ps.RotationY*M_PI/180.0), - 0, -sin(ps.RotationY*M_PI/180.0) ); - glRotated(ps.RotationY, 0.0,0.1,0.0); - glutSolidIcosahedron(); - break; - } - case 3: - { - glRotated(60.0, 1 , 0, 0); - glTranslated(cos(ps.RotationY*M_PI/180.0), - 0, -sin(ps.RotationY*M_PI/180.0) ); - glRotated(ps.RotationY, 0.0,0.1,0.0); - glutSolidTeapot(1.0); - break; - } - case 4: - { - double SunRadius = 0.2; - double SunToEarth = 1.0; - double EarthRadius = 0.15; - - glutSolidSphere(SunRadius, 20, 16); /* draw sun */ - glRotated(60.0, 1 , 0, 0); - glPushMatrix(); - glRotated(90.0, 1 , 0, 0); - glutSolidTorus(0.01,SunToEarth, 10,50); - glPopMatrix(); - glRotated(ps.RotationY, 0.0,0.1,0.0); - glTranslatef (SunToEarth, 0.0, 0.0); - glutSolidSphere(EarthRadius, 10, 8); /* draw earth */ - break; - } - } - glDisable(GL_LIGHT0 + i); - } - glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); - glutSwapBuffers(); -} -void -VisibilityFunc(int vis) -{ - if (vis == GLUT_VISIBLE) { - glutIdleFunc(IdleFunc); - } else { - glutIdleFunc(NULL); - } -} -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA ); - ps.w = 512; - ps.h = 512; - glutInitWindowSize(ps.w, ps.h); - glutInitWindowPosition(100,100); - - glutCreateWindow(argv[0]); - init(); - glutVisibilityFunc(VisibilityFunc); - glutDisplayFunc(DisplayFunc); - glutReshapeFunc(ReshapeFunc); - glutKeyboardFunc(KeyboardFunc); - glutCreateMenu(MenuFunc); - glutAddMenuEntry("Stereo", 's'); - glutAddMenuEntry("Mono", 'm'); - glutAddMenuEntry("Dodecahedron", '1'); - glutAddMenuEntry("Icosahedron", '2'); - glutAddMenuEntry("Teapot", '3'); - glutAddMenuEntry("Solar system", '4'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced/redblue_stereo.dsp b/lib/glut-3.7.6/progs/advanced/redblue_stereo.dsp deleted file mode 100644 index 6c52f55d142015abd0bf903d7e856956cc6cfaff..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/redblue_stereo.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="redblue_stereo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=redblue_stereo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "redblue_stereo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "redblue_stereo.mak" CFG="redblue_stereo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "redblue_stereo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "redblue_stereo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "redblue_stereo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "redblue_stereo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "redblue_stereo - Win32 Release" -# Name "redblue_stereo - Win32 Debug" -# Begin Source File - -SOURCE=.\redblue_stereo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/rts.c b/lib/glut-3.7.6/progs/advanced/rts.c deleted file mode 100644 index 226e896718be4befa05a3d075926dc37fcb353c1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/rts.c +++ /dev/null @@ -1,2168 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* Real-time Shadowing library, Version 0.97 */ - -/* XXX This is library is not fully implemented yet, but still quite - functional. */ - -/* XXX This code _does_ assume that you that your realloc can realloc NULL - (as specified by ANSI C). You also should have the 1.2 version of the - OpenGL Utility (GLU) library. SGI users need IRIX 6.2 (or higher) or IRIX - 5.3 with patch 1449 installed. */ - -/* This code will use multiple CPUs if available in its SGI version - using IRIX's Shared Parallel Arena facility. The generation of - silhouettes with the GLU 1.2 tessellator is farmed out to a gang for - tessellation threads. */ - -/* This code will use Win32's multithreading and multiple CPUs if - available when compiled with the Visual C++ "/MT" option. Just - like with the IRIX multiprocessor support, the generation of - silhouettes with the GLU 1.2 tessellator is farmed out to a gang - of tessellation threads. -mjk July 28, 1998. */ - -/* Please do not naively assume that enabling the multiprocessor - code will make rts-based programs run any faster if you do not - have multiple CPUs. Indeed, the extra thread overhead will in - fact likely make the program slightly slower. */ - -#ifdef __sgi -# define MP -#endif - -#ifdef _WIN32 -# include /* for wglGetProcAddress */ -# ifdef _MT /* If Visual C++ "/MT" compiler switch specified. */ -# define MP -# endif -#endif - -#ifndef NDEBUG -#define NDEBUG /* No assertions for best performance. */ -#endif - -#include -#include -#include -#include -#include -#ifdef MP -# ifdef __sgi -# include -# include -# include -# include -# include -# endif -# ifdef _WIN32 -# include -# endif -#endif - -#include "rtshadow.h" - -/* The "real time shadows" (RTS) library code requires the GLU 1.2 - polygon tessellator's boundary return capability to work. */ -#ifdef GLU_VERSION_1_2 - -/* Win32 calling conventions. */ -#ifndef CALLBACK -#define CALLBACK -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* For testing... */ -#if 0 -#undef GL_VERSION_1_1 -#undef GL_EXT_vertex_array -#endif - -#if defined(GL_VERSION_1_1) || defined(GL_EXT_vertex_array) -static int hasVertexArray = 0; -#else -static const int hasVertexArray = 0; -#endif - -#ifdef GL_EXT_blend_subtract -static int hasBlendSubtract = 0; -#if defined(_WIN32) && !defined(MESA) -PFNGLBLENDEQUATIONEXTPROC glBlendEquationEXT = NULL; -#endif -#else -static const int hasBlendSubtract = 0; -#endif - -/* Coordinates. */ -enum { - X, Y, Z -}; - -struct VertexHolder2D { - struct VertexHolder2D *next; - GLfloat v[2]; -}; - -struct VertexHolder3D { - struct VertexHolder3D *next; - GLfloat v[3]; -}; - -#ifndef MP - -# define NUM_CONTEXTS 1 -# define MP_ASSERT(assertion) - -# define ARENA_VARIABLE(arena) -# define SEMA_VARIABLE(sema) -# define LOCK_VARIABLE(lock) -# define THREAD_VARIABLE(thread) -# define INITSEMA(arena) -# define WAIT(sema) -# define SIGNAL(sema) -# define INITLOCK(arena) -# define LOCK(lock) -# define UNLOCK(lock) -# define PRIVATE_MALLOC(size) malloc(size) -# define PRIVATE_FREE(ptr) free(ptr) -# define PRIVATE_REALLOC(ptr, size) realloc(ptr, size) -# define SHARED_MALLOC(size) malloc(size) -# define SHARED_FREE(ptr) free(ptr) -# define SHARED_REALLOC(ptr, size) realloc(ptr, size) - -#else - -# define NUM_CONTEXTS 4 -# define MP_ASSERT(assertion) assert(assertion) - -# ifdef __sgi - -# define ARENA_VARIABLE(arena) usptr_t *arena; -# define SEMA_VARIABLE(sema) usema_t *sema; -# define LOCK_VARIABLE(lock) ulock_t lock; -# define THREAD_VARIABLE(thread) pid_t thread; - -# define INITSEMA(arena, value) usnewsema(arena, value) -# define WAIT(sema) uspsema(sema) -# define SIGNAL(sema) usvsema(sema) -# define SAMPLE(sema) ustestsema(sema) - -# define INITLOCK(arena) usnewlock(arena) -# define LOCK(lock) ussetlock(lock) -# define UNLOCK(lock) usunsetlock(lock) - -# define PRIVATE_MALLOC(size) malloc(size) -# define PRIVATE_FREE(ptr) free(ptr) -# define PRIVATE_REALLOC(ptr, size) realloc(ptr, size) - -# define SHARED_MALLOC(size) usmalloc(size, arena) -# define SHARED_FREE(ptr) usfree(ptr, arena) -# define SHARED_REALLOC(ptr, size) usrealloc(ptr, size, arena) - -# endif /* __sgi */ - -# ifdef _WIN32 - -# define ARENA_VARIABLE(arena) HANDLE arena; -# define SEMA_VARIABLE(sema) HANDLE sema; -# define LOCK_VARIABLE(lock) HANDLE lock; -# define THREAD_VARIABLE(thread) HANDLE thread; - -# define INITSEMA(arena, value) CreateSemaphore(NULL, value, NUM_CONTEXTS, NULL) -# define WAIT(sema) WaitForSingleObject(sema, INFINITE) -# define SIGNAL(sema) ReleaseSemaphore(sema, 1, NULL) - - /* Does Win32 have something cheaper than a mutex for locking? */ -# define INITLOCK(arena) CreateMutex(NULL, FALSE, NULL) -# define LOCK(lock) WaitForSingleObject(lock, INFINITE) -# define UNLOCK(lock) ReleaseMutex(lock) - -# define PRIVATE_MALLOC(size) malloc(size) -# define PRIVATE_FREE(ptr) free(ptr) -# define PRIVATE_REALLOC(ptr, size) realloc(ptr, size) - -# define SHARED_MALLOC(size) malloc(size) -# define SHARED_FREE(ptr) free(ptr) -# define SHARED_REALLOC(ptr, size) realloc(ptr, size) - -# endif /* _WIN32 */ - -typedef enum { - CS_UNUSED, CS_CAPTURING, CS_QUEUED, CS_GENERATING -} ContextState; - -#endif - -typedef struct ShadowVolumeState ShadowVolumeState; - -typedef struct TessellationContext { -#ifdef MP - ContextState state; -#endif - RTSscene *scene; - RTSlight *light; - RTSobject *object; - ShadowVolumeState *svs; - - GLUtesselator *tess; - - /* For managing memory allocated by the GLU tessellator's - combine callback. */ - GLfloat *combineList; - int combineListSize; - int combineNext; - struct VertexHolder2D *excessList2D; - - int saveFirst; - GLfloat *firstVertex; - - GLfloat *feedbackBuffer; - int feedbackBufferSize; - int feedbackBufferReturned; - - GLfloat shadowProjectionDistance; - GLfloat extentScale; - - int nextVertex; - int *header; - struct VertexHolder3D *excessList3D; -} TessellationContext; - -const float uniquePassThroughValue = 34567.0; - -#define SmallerOf(a,b) ((a) < (b) ? (a) : (b)) - -ARENA_VARIABLE(arena) -SEMA_VARIABLE(contextAvailable) -LOCK_VARIABLE(accessQueue) -SEMA_VARIABLE(silhouetteNeedsGeneration) - -static TessellationContext *context[NUM_CONTEXTS]; - -struct RTSscene { - GLfloat eyePos[3]; - GLbitfield usableStencilBits; - int numStencilBits; - char bitList[32]; - void (*renderSceneFunc) (GLenum castingLight, void *sceneData, RTSscene * scene); - void *sceneData; - - SEMA_VARIABLE(silhouetteGenerationDone) - THREAD_VARIABLE(*workerPids) -#ifdef MP - ShadowVolumeState *waitingForSVS; -#endif - - GLfloat viewScale; - GLint stencilBits; - int stencilValidateNeeded; - - GLfloat sceneAmbient[4]; - - int lightListSize; - RTSlight **lightList; - - GLboolean stencilRenderingInvariantHack; -}; - -struct ShadowVolumeState { - int lightSernum; - int objectSernum; -#ifdef MP - int generationDone; -#endif - - int silhouetteSize; - GLfloat *silhouette; - - GLfloat angle; - GLfloat axis[3]; - - GLfloat topScale; -}; - -struct RTSlight { - int refcnt; - int sernum; - - GLenum glLight; - GLfloat lightPos[3]; - GLfloat radius; - - int state; - - int sceneListSize; - RTSscene **sceneList; - - int objectListSize; - RTSobject **objectList; - ShadowVolumeState *shadowVolumeList; -}; - -struct RTSobject { - int refcnt; - int sernum; - - GLfloat objectPos[3]; - GLfloat maxRadius; - void (*renderObject) (void *objectData); - void *objectData; - - int feedbackBufferSizeGuess; - - int state; - - int lightListSize; - RTSlight **lightList; -}; - -#if defined(GL_VERSION_1_1) -static int -supportsOneDotOne(void) -{ - const char *version; - int major, minor; - - version = (char *) glGetString(GL_VERSION); - if (sscanf(version, "%d.%d", &major, &minor) == 2) - return major >= 1 && minor >= 1; - return 0; /* OpenGL version string malformed! */ -} -#endif - -static int -extensionSupported(const char *extension) -{ - static const GLubyte *extensions = NULL; - const GLubyte *start; - GLubyte *where, *terminator; - - /* Extension names should not have spaces. */ - where = (GLubyte *) strchr(extension, ' '); - if (where || *extension == '\0') - return 0; - - if (!extensions) - extensions = glGetString(GL_EXTENSIONS); - /* It takes a bit of care to be fool-proof about parsing the OpenGL - extensions string. Don't be fooled by sub-strings, etc. */ - start = extensions; - for (;;) { - where = (GLubyte *) strstr((const char *) start, extension); - if (!where) - break; - terminator = where + strlen(extension); - if (where == start || *(where - 1) == ' ') { - if (*terminator == ' ' || *terminator == '\0') { - return 1; - } - } - start = terminator; - } - return 0; -} - -static GLfloat * -nextVertexHolder3D(TessellationContext * context) -{ - struct VertexHolder3D *holder; - ShadowVolumeState *svs; - GLfloat *newHolder; - - svs = context->svs; - if (context->nextVertex >= svs->silhouetteSize) { - holder = (struct VertexHolder3D *) PRIVATE_MALLOC(sizeof(struct VertexHolder3D)); - if (holder == NULL) { - printf("holder alloc problem\n"); - } - holder->next = context->excessList3D; - context->excessList3D = holder; - newHolder = holder->v; - } else { - newHolder = &svs->silhouette[context->nextVertex * 3]; - } - context->nextVertex++; - return newHolder; -} - -/* ARGSUSED */ -static void CALLBACK -begin(GLenum type, void *polyData) -{ - TessellationContext *context = polyData; - GLfloat *newHolder; - - assert(type == GL_LINE_LOOP); - context->saveFirst = 1; - - context->header = (int *) nextVertexHolder3D(context); - context->header[0] = context->nextVertex; - context->header[1] = 0xdeadbabe; /* Aid assertion testing. */ - context->header[2] = 0xdeadbeef; /* Non-termintor token. */ - - newHolder = nextVertexHolder3D(context); - newHolder[X] = 0.0; - newHolder[Y] = 0.0; - newHolder[Z] = 0.0; -} - -static void CALLBACK -vertex(void *data, void *polyData) -{ - TessellationContext *context = polyData; - GLfloat *v = data; - GLfloat *newHolder; - - newHolder = nextVertexHolder3D(context); - newHolder[X] = context->extentScale * v[X]; - newHolder[Y] = context->extentScale * v[Y]; - newHolder[Z] = context->shadowProjectionDistance; - if (context->saveFirst) { - context->firstVertex = newHolder; - context->saveFirst = 0; - } -} - -static void CALLBACK -end(void *polyData) -{ - TessellationContext *context = polyData; - GLfloat *newHolder; - - newHolder = nextVertexHolder3D(context); - newHolder[X] = context->firstVertex[X]; - newHolder[Y] = context->firstVertex[Y]; - newHolder[Z] = context->firstVertex[Z]; - assert(context->firstVertex[Z] == context->shadowProjectionDistance); - - assert(context->header[1] == 0xdeadbabe); - assert(context->header[2] == 0xdeadbeef); - context->header[1] = context->nextVertex - context->header[0]; -} - -static void -freeExcessList(TessellationContext * context) -{ - struct VertexHolder2D *holder, *next; - - holder = context->excessList2D; - while (holder) { - next = holder->next; - PRIVATE_FREE(holder); - holder = next; - } - context->excessList2D = NULL; -} - -/* The GLU tessellator's combine callback is called to create a - new vertex when tessellation detects an intersection or wishes - to merge features. - - The memory for the new vertex must be allocated by the GLU - tessellator caller. The caller is also responsible for this - memory's deletion. The combineList is an array for the memory - for these combined vertices. The array is of size combineListSize. - combineNext decides how many vertices are in use on the combineList. - - The combineList is of finite size. When this list is exhausted, - individual vertex memory is allocated via malloc in a linked list. - This is the excessList2D linked list. After tessellation, the - combineList will be expanded by how many vertices had to be - added to the excessList2D list. The idea is that next time the - shadow volume tessellation is done, the combineList should - hopefully be large enough. - -/* ARGSUSED1 */ -static void CALLBACK -combine(GLdouble coords[3], void *d[4], GLfloat w[4], - void **dataOut, void *polyData) -{ - TessellationContext *context = polyData; - struct VertexHolder2D *holder; - GLfloat *newHolder; - - if (context->combineNext >= context->combineListSize) { - holder = (struct VertexHolder2D *) PRIVATE_MALLOC(sizeof(struct VertexHolder2D)); - if (holder == NULL) { - printf("got no holder alloc\n"); - } - holder->next = context->excessList2D; - context->excessList2D = holder; - newHolder = holder->v; - } else { - newHolder = &context->combineList[context->combineNext * 2]; - } - - newHolder[0] = (GLfloat) coords[0]; - newHolder[1] = (GLfloat) coords[1]; - *dataOut = newHolder; - - context->combineNext++; -} - -static void CALLBACK -error(GLenum errno) -{ - fprintf(stderr, "ERROR: %s\n", gluErrorString(errno)); -} - -#ifdef DEBUG - -/* These verify routines are useful for asserting the sanity of - the silhouette data structures. */ - -static void -verifySilhouette(ShadowVolumeState * svs) -{ - int *infoPtr = (int *) svs->silhouette; - int *info = infoPtr; - int fan; - - if (info[0] == 0) { - printf("2 ZERO\n"); - } - if (info ==0) { - printf("ZERO\n"); - } - fan = 0; - for (;;) { - if(info[2] == 0xdeadbeef || info[2] == 0xcafecafe) { - if (info[2] == 0xcafecafe) { - return; - } - info += ((1 + info[1]) * 3); - fan++; - } else { - printf("Corrupted silhouette! (svs=0x%x, silhouette=0x%x, fan=%d)\n", - svs, svs->silhouette, fan); - abort(); - } - } -} - -static void -verifySilhouettesOfScene(RTSscene *scene) -{ - int i, obj; - RTSlight *light; - - for (i = 0; i < scene->lightListSize; i++) { - light = scene->lightList[i]; - if (light) { - for (obj = 0; obj < light->objectListSize; obj++) { - ShadowVolumeState *svs; - - svs = &light->shadowVolumeList[obj]; - if (svs && svs->generationDone) { - verifySilhouette(svs); - } - } - } - } -} - -#endif - -static void -generateSilhouette(TessellationContext * context) -{ - ShadowVolumeState * svs; - GLfloat *start, *end, *loc; - GLfloat *eyeLoc; - GLdouble v[3]; - int token, nvertices, i; - GLfloat passThroughToken; - int watchingForEyePos; - struct VertexHolder3D *holder, *next; - - assert(context->excessList2D == NULL); - assert(context->excessList3D == NULL); - - svs = context->svs; - - context->nextVertex = 0; - - watchingForEyePos = 0; - eyeLoc = NULL; - - gluTessBeginPolygon(context->tess, context); - start = context->feedbackBuffer; - end = start + context->feedbackBufferReturned; - for (loc = start; loc < end;) { - token = *loc; - loc++; - switch (token) { - case GL_POLYGON_TOKEN: - nvertices = *loc; - loc++; - assert(nvertices >= 3); - gluTessBeginContour(context->tess); - for (i = 0; i < nvertices; i++) { - v[0] = loc[0]; - v[1] = loc[1]; - v[2] = 0.0; - gluTessVertex(context->tess, v, loc); - loc += 2; - } - gluTessEndContour(context->tess); - break; - case GL_PASS_THROUGH_TOKEN: - passThroughToken = *loc; - if (passThroughToken == uniquePassThroughValue) { - watchingForEyePos = !watchingForEyePos; - } else { - /* Ignore everything else. */ - fprintf(stderr, "WARNING: Unexpected feedback token 0x%x (%d).\n", - token, token); - } - loc++; - break; - case GL_POINT_TOKEN: - if (watchingForEyePos) { - fprintf(stderr, - "WARNING: Eye point possibly within the shadow volume.\n"); - fprintf(stderr, - " Program should be improved to handle this.\n"); - /* XXX Write code to handle this case. You would need to determine - if the point was instead any of the returned boundary polyons. - Once you found that you were really in the clipping volume, then I - haven't quite thought about what you do. */ - eyeLoc = loc; - watchingForEyePos = 0; - } else { - /* Ignore everything else. */ - fprintf(stderr, "WARNING: Unexpected feedback token 0x%x (%d).\n", - token, token); - } - loc += 2; - break; - default: - /* Ignore everything else. */ - fprintf(stderr, "WARING: Unexpected feedback token 0x%x (%d).\n", - token, token); - } - } - gluTessEndPolygon(context->tess); - - /* Free any memory that got allocated due to the combine callback during - tessellation and then enlarge the combineList so we hopefully don't need - the combine list next time. */ - if (context->combineNext > context->combineListSize) { - freeExcessList(context); - context->combineListSize = context->combineNext; - SHARED_FREE(context->combineList); - context->combineList = SHARED_MALLOC(sizeof(GLfloat) * 2 * context->combineListSize); - if (context->combineList == NULL) { - printf("problem alloc context->combineList\n"); - } - } - context->combineNext = 0; - - context->header[2] = 0xcafecafe; /* Terminating token. */ - - if (context->excessList3D) { -#ifndef NDEBUG - int oldSize; - - oldSize = svs->silhouetteSize; -#endif - assert(context->nextVertex > svs->silhouetteSize); - svs->silhouetteSize = context->nextVertex; - svs->silhouette = SHARED_REALLOC(svs->silhouette, - svs->silhouetteSize * sizeof(GLfloat) * 3); - if (svs->silhouette == NULL) { - fprintf(stderr, "libRTS: generateSilhouette: out of memory\n"); - abort(); - } - holder = context->excessList3D; - while (holder) { - context->nextVertex--; - svs->silhouette[context->nextVertex * 3] = holder->v[0]; - svs->silhouette[context->nextVertex * 3 + 1] = holder->v[1]; - svs->silhouette[context->nextVertex * 3 + 2] = holder->v[2]; - next = holder->next; - PRIVATE_FREE(holder); - holder = next; - } - assert(context->nextVertex == oldSize); - context->excessList3D = NULL; - } - - /* Validate shadow volume state's serial numbers. */ - svs->lightSernum = context->light->sernum; - svs->objectSernum = context->object->sernum; -} - -static int -listBits(GLbitfield usableStencilBits, char bitList[32]) -{ - int num = 0, bit = 0; - - while (usableStencilBits) { - if (usableStencilBits & 0x1) { - bitList[num] = bit; - num++; - } - bit++; - usableStencilBits >>= 1; - } - return num; -} - -/* Three element vector dot product. */ -static GLfloat -vdot(const GLfloat * v1, const GLfloat * v2) -{ - return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2]; -} - -/* Three element vector cross product. */ -static void -vcross(const GLfloat * v1, const GLfloat * v2, GLfloat * cross) -{ - assert(v1 != cross && v2 != cross); - cross[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - cross[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - cross[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); -} - -static GLfloat -getViewScale(RTSscene * scene) -{ - if (scene->viewScale == 0.0) { - GLfloat maxViewSize[2]; - - glGetFloatv(GL_MAX_VIEWPORT_DIMS, maxViewSize); - scene->viewScale = SmallerOf(maxViewSize[0], maxViewSize[1]) / 2.0; - - /* Other stuff piggy backs on viewScale to ensure initialization. */ - - glGetIntegerv(GL_STENCIL_BITS, &scene->stencilBits); - -#if defined(GL_VERSION_1_1) - hasVertexArray = supportsOneDotOne(); -#elif defined(GL_EXT_vertex_array) - hasVertexArray = extensionSupported("GL_EXT_vertex_array"); -#endif - -#ifdef GL_EXT_blend_subtract - hasBlendSubtract = extensionSupported("GL_EXT_blend_subtract"); -#if defined(_WIN32) && !defined(MESA) - if (hasBlendSubtract) { - glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC) wglGetProcAddress("glBlendEquationEXT"); - if (glBlendEquationEXT == NULL) { - hasBlendSubtract = 0; - } - } -#endif - - /* XXX RealityEngine workaround. */ - if (!strcmp((char *) glGetString(GL_VENDOR), "SGI")) { - if (!strncmp((char *) glGetString(GL_RENDERER), "RE", 2)) { - fprintf(stderr, "WARNING: RealityEngine workaround forcing additive blending.\n"); - hasBlendSubtract = 0; - } - } -#endif - } - return scene->viewScale; -} - -static void -captureLightView(RTSscene * scene, RTSlight * light, RTSobject * object, - ShadowVolumeState * svs, TessellationContext * context) -{ - static GLfloat unit[3] = - {0.0, 0.0, 1.0}; - int feedbackBufferSizeGuess; - GLfloat lightDelta[3], eyeDelta[3]; - GLfloat lightDistance, eyeDistance, fieldOfViewRatio, viewScale; - GLdouble fieldOfViewAngle; - GLdouble nnear, ffar; /* Avoid x86 C keywords. Grumble. */ - GLint returned; - - MP_ASSERT(context->state == CS_CAPTURING); - viewScale = getViewScale(scene); - -#ifdef MP - svs->generationDone = 0; -#endif - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - /* Calculate the light's distance from the object being shadowed. */ - lightDelta[X] = object->objectPos[X] - light->lightPos[X]; - lightDelta[Y] = object->objectPos[Y] - light->lightPos[Y]; - lightDelta[Z] = object->objectPos[Z] - light->lightPos[Z]; - lightDistance = (GLfloat) sqrt(lightDelta[X] * lightDelta[X] + - lightDelta[Y] * lightDelta[Y] + lightDelta[Z] * lightDelta[Z]); - - /* Determine the appropriate field of view. We want to use as narrow a - field of view as possible to not waste resolution, but not narrower than - the object. Add 50% extra slop. */ - fieldOfViewRatio = object->maxRadius / lightDistance; - if (fieldOfViewRatio > 0.99) { - fprintf(stderr, - "WARNING: Clamping FOV to 164 degrees for determining shadow.\n"); - fprintf(stderr, - " Light distance = %g, object maxmium radius = %g\n", - lightDistance, object->maxRadius); - - /* 2*asin(0.99) ~= 164 degrees. */ - fieldOfViewRatio = 0.99; - } - /* Pre-compute scaling factors for the near and far extent of the shadow - volume. */ - context->extentScale = light->radius * fieldOfViewRatio / viewScale; - context->shadowProjectionDistance = light->radius; - - nnear = 0.5 * (lightDistance - object->maxRadius); - if (nnear < 0.0001) { - fprintf(stderr, - "WARNING: Clamping near clip plane to 0.0001 because light source too near.\n"); - fprintf(stderr, - " Light distance = %g, object maxmium radius = %g\n", - lightDistance, object->maxRadius); - nnear = 0.0001; - } - ffar = 2.0 * (lightDistance + object->maxRadius); - - eyeDelta[X] = scene->eyePos[X] - light->lightPos[X]; - eyeDelta[Y] = scene->eyePos[Y] - light->lightPos[Y]; - eyeDelta[Z] = scene->eyePos[Z] - light->lightPos[Z]; - eyeDistance = 1.05 * - sqrt(eyeDelta[X] * eyeDelta[X] + eyeDelta[Y] * eyeDelta[Y] - + eyeDelta[Z] * eyeDelta[Z]); - if (eyeDistance > ffar) { - ffar = eyeDistance; - } - fieldOfViewAngle = 2.0 * asin(fieldOfViewRatio) * 180 / M_PI; - gluPerspective(fieldOfViewAngle, 1.0, nnear, ffar); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - /* XXX Look up vector needs adjusting. */ - gluLookAt(light->lightPos[X], light->lightPos[Y], light->lightPos[Z], - object->objectPos[X], object->objectPos[Y], object->objectPos[Z], - 0.0, 1.0, 0.0); /* up is in positive Y direction */ - - glPushAttrib(GL_VIEWPORT_BIT); - glViewport(-viewScale, -viewScale, 2 * viewScale, 2 * viewScale); - - feedbackBufferSizeGuess = object->feedbackBufferSizeGuess; - -doFeedback: - - if (feedbackBufferSizeGuess > context->feedbackBufferSize) { - context->feedbackBufferSize = feedbackBufferSizeGuess; - object->feedbackBufferSizeGuess = feedbackBufferSizeGuess; - - /* A "free & malloc" is better than a "realloc" below because we - do not care for the previous buffer contents to be preserved. */ - /* XXX Add 32 words of slop (an extra cache line) to end for buggy - hardware that uses DMA to return feedback results but that sometimes - overrun the buffer. Yuck. */ - SHARED_FREE(context->feedbackBuffer); - context->feedbackBuffer = (GLfloat *) - SHARED_MALLOC(context->feedbackBufferSize * sizeof(GLfloat) + 32 * 4); - if (context->feedbackBuffer == NULL) { - fprintf(stderr, "libRTS: captureLightView: out of memory\n"); - abort(); - } - } - glFeedbackBuffer(context->feedbackBufferSize, - GL_2D, context->feedbackBuffer); - - (void) glRenderMode(GL_FEEDBACK); - - /* Render the eye position. The eye position is "bracketed" by unique pass - through tokens. These bracketing pass through tokens let us determine if - the eye position was clipped or not. This helps us determine whether the - eye position is possibly within the shadow volume or not. If the point is - clipped, the eye position is not in the shadow volume. If the point is - not clipped, a more complicated test is necessary to determine if the eye - position is really in the shadow volume or not. See generateSilhouette. */ - glPassThrough(uniquePassThroughValue); - glBegin(GL_POINTS); - glVertex3fv(scene->eyePos); - glEnd(); - glPassThrough(uniquePassThroughValue); - - (object->renderObject) (object->objectData); - - returned = glRenderMode(GL_RENDER); - assert(returned <= context->feedbackBufferSize); -#if 0 - if (returned == -1) { -#else - /* XXX RealityEngine workaround. */ - if (returned == -1 || returned == context->feedbackBufferSize) { -#endif - feedbackBufferSizeGuess = context->feedbackBufferSize - + (context->feedbackBufferSize >> 1); - goto doFeedback; /* Try again with larger feedback buffer. */ - } - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopAttrib(); /* Restore viewport. */ - - vcross(unit, lightDelta, svs->axis); - svs->angle = (GLfloat) acos(vdot(unit, lightDelta) / lightDistance) * 180.0 / M_PI; - svs->topScale = (lightDistance + object->maxRadius) / light->radius; - - context->feedbackBufferReturned = returned; - - context->scene = scene; - context->light = light; - context->object = object; - context->svs = svs; -} - -static TessellationContext * -createTessellationContext(void) -{ - TessellationContext *context; - GLUtesselator *tess; - - context = (TessellationContext *) SHARED_MALLOC(sizeof(TessellationContext)); - if (context == NULL) { - printf("TessellationContext alloc failed\n"); - return NULL; - } - tess = gluNewTess(); - if (tess == NULL) { - SHARED_FREE(context); - return NULL; - } - gluTessProperty(tess, GLU_TESS_BOUNDARY_ONLY, GL_TRUE); - gluTessProperty(tess, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO); - gluTessCallback(tess, GLU_TESS_BEGIN_DATA, (void (CALLBACK*)()) &begin); - gluTessCallback(tess, GLU_TESS_VERTEX_DATA, (void (CALLBACK*)()) &vertex); - gluTessCallback(tess, GLU_TESS_COMBINE_DATA, (void (CALLBACK*)()) &combine); - gluTessCallback(tess, GLU_TESS_END_DATA, (void (CALLBACK*)()) &end); - gluTessCallback(tess, GLU_TESS_ERROR, error); - context->tess = tess; - -#ifdef MP - context->state = CS_UNUSED; -#endif - context->combineListSize = 0; - context->combineList = NULL; - context->combineNext = 0; - context->excessList2D = NULL; - - context->feedbackBufferSize = 0; - context->feedbackBuffer = NULL; - - context->excessList3D = NULL; - - return context; -} - -#ifdef MP - -static void -work(void) -{ - TessellationContext *workContext; - RTSscene *scene; - int i; - - WAIT(silhouetteNeedsGeneration); - - LOCK(accessQueue); - workContext = NULL; - for (i=0; istate == CS_QUEUED) { - workContext = context[i]; - break; - } - } - assert(workContext); - workContext->state = CS_GENERATING; - UNLOCK(accessQueue); - - generateSilhouette(workContext); - - LOCK(accessQueue); - assert(workContext->state == CS_GENERATING); - workContext->state = CS_UNUSED; - workContext->svs->generationDone = 1; - scene = workContext->scene; - - /* If the main thread is sleeping on this particular - shadow volume, wake up the main thread. */ - if (workContext->svs == scene->waitingForSVS) { - scene->waitingForSVS = NULL; - SIGNAL(scene->silhouetteGenerationDone); - } - UNLOCK(accessQueue); - SIGNAL(contextAvailable); -} - -static void -waitForSilhouetteGenerationDone(RTSscene * scene, ShadowVolumeState *svs) -{ - LOCK(accessQueue); - - if (svs->generationDone == 0) { - scene->waitingForSVS = svs; - UNLOCK(accessQueue); - WAIT(scene->silhouetteGenerationDone); - assert(svs->generationDone); - } else { - UNLOCK(accessQueue); - } -} - -#ifdef __sgi - -static void -worker(void) -{ - signal(SIGHUP, SIG_DFL); - prctl(PR_TERMCHILD); - usadd(arena); - for (;;) { - work(); - } -} - -static void -setupArena(int numWorkers) -{ - static int beenhere = 0; - int i; - THREAD_VARIABLE(pid) - - if (beenhere) { - return; - } - beenhere = 1; - - usconfig(CONF_INITUSERS, 1 + numWorkers); - usconfig(CONF_ARENATYPE, US_SHAREDONLY); - usconfig(CONF_INITSIZE, 1024 * 1024); - arena = usinit("/dev/zero"); - if (arena == NULL) { - fprintf(stderr, "libRTS: could not create arena.\n"); - exit(1); - } - - for (i=0; isilhouetteGenerationDone = INITSEMA(arena, 0); - scene->waitingForSVS = NULL; -#endif - - scene->eyePos[X] = eyePos[X]; - scene->eyePos[Y] = eyePos[Y]; - scene->eyePos[Z] = eyePos[Z]; - scene->usableStencilBits = usableStencilBits; - scene->renderSceneFunc = renderSceneFunc; - scene->sceneData = sceneData; - - scene->viewScale = 0.0; /* 0.0 means "to be determined". */ - scene->stencilValidateNeeded = 1; - - scene->sceneAmbient[0] = 0.2; - scene->sceneAmbient[1] = 0.2; - scene->sceneAmbient[2] = 0.2; - scene->sceneAmbient[3] = 1.0; - - scene->lightListSize = 0; - scene->lightList = NULL; - - scene->stencilRenderingInvariantHack = GL_FALSE; - - return scene; -} - -RTSlight * -rtsCreateLight( - GLenum glLight, - GLfloat lightPos[3], - GLfloat radius) -{ - RTSlight *light; - - light = (RTSlight *) SHARED_MALLOC(sizeof(RTSlight)); - if (light == NULL) { - printf("rtsCreateLight failed\n"); - return NULL; - } - light->refcnt = 1; - light->sernum = 1; - - light->glLight = glLight; - light->lightPos[X] = lightPos[X]; - light->lightPos[Y] = lightPos[Y]; - light->lightPos[Z] = lightPos[Z]; - light->radius = radius; - - light->state = RTS_SHINING_AND_CASTING; - - light->sceneListSize = 0; - light->sceneList = NULL; - - light->objectListSize = 0; - light->objectList = NULL; - light->shadowVolumeList = NULL; - - return light; -} - -RTSobject * -rtsCreateObject( - GLfloat objectPos[3], - GLfloat maxRadius, - void (*renderObject) (void *objectData), - void *objectData, - int feedbackBufferSizeGuess) -{ - RTSobject *object; - - object = (RTSobject *) SHARED_MALLOC(sizeof(RTSobject)); - if (object == NULL) { - printf("rtsCreateObject failed\n"); - return NULL; - } - object->refcnt = 1; - object->sernum = 1; - - object->objectPos[X] = objectPos[X]; - object->objectPos[Y] = objectPos[Y]; - object->objectPos[Z] = objectPos[Z]; - object->maxRadius = maxRadius; - object->renderObject = renderObject; - object->objectData = objectData; - object->feedbackBufferSizeGuess = feedbackBufferSizeGuess; -#ifdef __sgi - /* XXX Impact/Octane feedback bug work around. If the feedback - buffer on Impact/Octane is less than 2048 entries, a buggy - hardware accelerated path is used. Make sure at least 2049 - entries for the feedback buffer; this forces Impact/Octane to use - the (bug free) software feedback path. This bug is fixed in IRIX - 6.5. */ - if (object->feedbackBufferSizeGuess < 2048) { - object->feedbackBufferSizeGuess = 2048; - } -#endif - - object->state = RTS_SHADOWING; - - object->lightListSize = 0; - object->lightList = NULL; - - return object; -} - -void -rtsAddLightToScene( - RTSscene * scene, - RTSlight * light) -{ - int i; - - for (i = 0; i < light->sceneListSize; i++) { - if (light->sceneList[i] == scene) { - return; - } - if (light->sceneList[i] == NULL) { - goto addToSceneList; - } - } - light->sceneListSize++; - light->sceneList = (RTSscene **) SHARED_REALLOC(light->sceneList, - light->sceneListSize * sizeof(RTSscene *)); - if (light->sceneList == NULL) { - fprintf(stderr, "rtsAddLightToScene: out of memory\n"); - abort(); - } -addToSceneList: - - light->sceneList[i] = scene; - - for (i = 0; i < scene->lightListSize; i++) { - if (scene->lightList[i] == light) { - fprintf(stderr, "rtsAddLightToScene: inconsistent lists\n"); - abort(); - } - if (scene->lightList[i] == NULL) { - goto addToLightList; - } - } - scene->lightListSize++; - scene->lightList = (RTSlight **) SHARED_REALLOC(scene->lightList, - scene->lightListSize * sizeof(RTSlight *)); - if (scene->lightList == NULL) { - fprintf(stderr, "rtsAddLightToScene: out of memory\n"); - abort(); - } -addToLightList: - - scene->lightList[i] = light; - - light->refcnt++; -} - -static void -initShadowVolumeState(ShadowVolumeState * svs) -{ - svs->lightSernum = 0; - svs->objectSernum = 0; - svs->silhouette = NULL; - svs->silhouetteSize = 0; -#ifdef MP - svs->generationDone = 0; -#endif -} - -void -rtsAddObjectToLight( - RTSlight * light, - RTSobject * object) -{ - int i; - - for (i = 0; i < object->lightListSize; i++) { - if (object->lightList[i] == light) { - return; - } - if (object->lightList[i] == NULL) { - goto addToLightList; - } - } - object->lightListSize++; - object->lightList = (RTSlight **) SHARED_REALLOC(object->lightList, - object->lightListSize * sizeof(RTSlight *)); - if (object->lightList == NULL) { - fprintf(stderr, "rtsAddObjectToLight: out of memory\n"); - abort(); - } -addToLightList: - object->lightList[i] = light; - - for (i = 0; i < light->objectListSize; i++) { - if (light->objectList[i] == object) { - fprintf(stderr, "rtsAddObjectToLight: inconsistent lists\n"); - abort(); - } - if (light->objectList[i] == NULL) { - goto addToObjectList; - } - } - - /* Extend object list. */ - light->objectListSize++; - light->objectList = (RTSobject **) SHARED_REALLOC(light->objectList, - light->objectListSize * sizeof(RTSscene *)); - if (light->objectList == NULL) { - fprintf(stderr, "rtsAddObjectToLight: out of memory\n"); - abort(); - } - /* Extend shadow volume list. */ - light->shadowVolumeList = (ShadowVolumeState *) - SHARED_REALLOC(light->shadowVolumeList, - light->objectListSize * sizeof(ShadowVolumeState)); - if (light->shadowVolumeList == NULL) { - fprintf(stderr, "rtsAddObjectToLight: out of memory\n"); - abort(); - } -addToObjectList: - - initShadowVolumeState(&light->shadowVolumeList[i]); - - light->objectList[i] = object; - - light->refcnt++; - object->refcnt++; -} - -void -rtsSetLightState( - RTSlight * light, - RTSlightState state) -{ - light->state = state; -} - -void -rtsSetObjectState( - RTSobject * object, - RTSobjectState state) -{ - object->state = state; -} - -void -rtsUpdateEyePos( - RTSscene * scene, - GLfloat eyePos[3]) -{ - scene->eyePos[X] = eyePos[X]; - scene->eyePos[Y] = eyePos[Y]; - scene->eyePos[Z] = eyePos[Z]; -} - -void -rtsUpdateUsableStencilBits( - RTSscene * scene, - GLbitfield usableStencilBits) -{ - scene->usableStencilBits = usableStencilBits; - scene->stencilValidateNeeded = 1; -} - -void -rtsUpdateLightPos( - RTSlight * light, - GLfloat lightPos[3]) -{ - light->lightPos[X] = lightPos[X]; - light->lightPos[Y] = lightPos[Y]; - light->lightPos[Z] = lightPos[Z]; - light->sernum++; -} - -void -rtsUpdateLightRadius( - RTSlight * light, - GLfloat radius) -{ - light->radius = radius; - light->sernum++; -} - -void -rtsUpdateObjectPos( - RTSobject * object, - GLfloat objectPos[3]) -{ - object->objectPos[X] = objectPos[X]; - object->objectPos[Y] = objectPos[Y]; - object->objectPos[Z] = objectPos[Z]; - object->sernum++; -} - -void -rtsUpdateObjectShape( - RTSobject * object) -{ - object->sernum++; -} - -void -rtsUpdateObjectMaxRadius( - RTSobject * object, - GLfloat maxRadius) -{ - object->maxRadius = maxRadius; - object->sernum++; -} - -#if defined(GL_EXT_vertex_array) && !defined(GL_VERSION_1_1) -/* Only needed if has vertex array extension, but no OpenGL 1.1. */ -static void -setupVertexArray(ShadowVolumeState * svs, int numCoordinates) -{ - glDisable(GL_EDGE_FLAG_ARRAY_EXT); - glEnable(GL_VERTEX_ARRAY_EXT); - glDisable(GL_NORMAL_ARRAY_EXT); - glDisable(GL_COLOR_ARRAY_EXT); - glDisable(GL_TEXTURE_COORD_ARRAY_EXT); - glDisable(GL_EDGE_FLAG_ARRAY_EXT); - glVertexPointerEXT(numCoordinates, GL_FLOAT, 3 * sizeof(GLfloat), svs->silhouetteSize, svs->silhouette); -} -#endif - -static void -renderSilhouette(ShadowVolumeState * svs) -{ - int *infoPtr = (int *) svs->silhouette; - int *info = infoPtr; - int end, i; - - /* CONSTANTCONDITION */ - assert(sizeof(GLfloat) == sizeof(GLint)); - - if (hasVertexArray) { -#if defined(GL_VERSION_1_1) - glInterleavedArrays(GL_V2F, 3 * sizeof(GLfloat), svs->silhouette); -#elif defined(GL_EXT_vertex_array) - setupVertexArray(svs, 2); -#endif - } - for (;;) { - assert(info[2] == 0xdeadbeef || info[2] == 0xcafecafe); - /* Two fewer vertices get rendered in the renderSilhouette case (compared - to renderShadowVolumeBase) because because a line loop does not need - the initial fan center or the final repeated first vertex. */ - if (hasVertexArray) { -#if defined(GL_VERSION_1_1) - glDrawArrays(GL_LINE_LOOP, info[0] + 1, info[1] - 2); -#elif defined(GL_EXT_vertex_array) - glDrawArraysEXT(GL_LINE_LOOP, info[0] + 1, info[1] - 2); -#endif - } else { - glBegin(GL_LINE_LOOP); - end = info[0] + info[1] - 2; - for (i = info[0] + 1; i < end; i++) { - glVertex2fv(&svs->silhouette[i * 3]); - } - glEnd(); - } - if (info[2] == 0xcafecafe) { - return; - } - info += ((1 + info[1]) * 3); - } -} - -static void -renderShadowVolumeBase(ShadowVolumeState * svs) -{ - int *infoPtr = (int *) svs->silhouette; - int *info = infoPtr; - int end, i; - int fan; - - fan = 0; - /* CONSTANTCONDITION */ - assert(sizeof(GLfloat) == sizeof(GLint)); - glRotatef(svs->angle, svs->axis[X], svs->axis[Y], svs->axis[Z]); - for (;;) { - assert((info[2] == 0xdeadbeef || info[2] == 0xcafecafe) && info[1] > 0); - if (hasVertexArray) { - /* Note: assumes that glInterleavedArrays has already been called. */ -#if defined(GL_VERSION_1_1) - glDrawArrays(GL_TRIANGLE_FAN, info[0], info[1]); -#elif defined(GL_EXT_vertex_array) - glDrawArraysEXT(GL_TRIANGLE_FAN, info[0], info[1]); -#endif - } else { - glBegin(GL_TRIANGLE_FAN); - end = info[0] + info[1]; - for (i = info[0]; i < end; i++) { - glVertex3fv(&svs->silhouette[i * 3]); - } - glEnd(); - } - if (info[2] == 0xcafecafe) { - return; - } - assert(info[1] > 0); - info += ((1 + info[1]) * 3); - fan++; - } -} - -static void -renderShadowVolume(ShadowVolumeState * svs, GLfloat lightPos[3]) -{ - glPushMatrix(); - glTranslatef(lightPos[X], lightPos[Y], lightPos[Z]); - renderShadowVolumeBase(svs); - glPopMatrix(); -} - -static void -renderShadowVolumeTop(ShadowVolumeState * svs, GLfloat lightPos[3]) -{ - glPushMatrix(); - glTranslatef(lightPos[X], lightPos[Y], lightPos[Z]); - glScalef(svs->topScale, svs->topScale, svs->topScale); - renderShadowVolumeBase(svs); - glPopMatrix(); -} - -static void -validateShadowVolume(RTSscene * scene, RTSlight * light, - RTSobject * object, ShadowVolumeState * svs) -{ - /* Serial number mismatch indicates light or object has changed since last - shadow volume generation. If mismatch, regenerate the shadow volume. */ - if (light->sernum != svs->lightSernum - || object->sernum != svs->objectSernum) { - TessellationContext *workContext; -#ifdef MP - int i; - - WAIT(contextAvailable); - - LOCK(accessQueue); - workContext = NULL; - for (i=0; istate == CS_UNUSED) { - workContext = context[i]; - break; - } - } - assert(workContext); - workContext->state = CS_CAPTURING; - UNLOCK(accessQueue); - - captureLightView(scene, light, - object, svs, workContext); - - workContext->state = CS_QUEUED; - SIGNAL(silhouetteNeedsGeneration); - -#else - workContext = context[0]; - captureLightView(scene, light, - object, svs, workContext); - - generateSilhouette(workContext); -#endif - } -} - -void -rtsRenderScene( - RTSscene * scene, - RTSmode mode) -{ - static GLfloat totalDarkness[4] = - {0.0, 0.0, 0.0, 0.0}; - int i, obj, bit; - int numStencilBits, numCastingLights, numShadowingObjects; - RTSlight *firstLight, *prevLight, *light; - RTSobject *object; - GLbitfield fullStencilMask; - - /* Expect application (caller) to do the glClear (including stencil). */ - /* Expect application (caller) to enable depth testing. */ - - if (mode != RTS_NO_SHADOWS) { - /* Validate shadow volumes, count casting lights, and stash the first - light. */ - numCastingLights = 0; - firstLight = NULL; - for (i = 0; i < scene->lightListSize; i++) { - light = scene->lightList[i]; - if (light) { - if (light->state != RTS_OFF) { - if (light->state == RTS_SHINING_AND_CASTING) { - - if (numCastingLights == 0) { - /* Count number of shadowing objects. */ - numShadowingObjects = 0; - for (obj = 0; obj < light->objectListSize; obj++) { - if (light->objectList[obj]->state == RTS_SHADOWING) { - numShadowingObjects++; - } - } - if (numShadowingObjects == 0) { - /* Not casting on any object; skip it. */ - continue; - } - assert(firstLight == NULL); - firstLight = light; - } - numCastingLights++; - if (numCastingLights == 1 || hasBlendSubtract) { - glEnable(light->glLight); - } else { - glDisable(light->glLight); - } - - for (obj = 0; obj < light->objectListSize; obj++) { - object = light->objectList[obj]; - if (object->state == RTS_SHADOWING) { - ShadowVolumeState *svs; - - svs = &light->shadowVolumeList[obj]; - validateShadowVolume(scene, light, object, svs); - } - } - } else if (light->state == RTS_SHINING_AND_CASTING) { - glEnable(light->glLight); - } - } else { - glDisable(light->glLight); - } - } - } - } - glEnable(GL_LIGHTING); - glEnable(GL_CULL_FACE); - if (scene->stencilRenderingInvariantHack) { - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, 0xffffffff); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - } else { - /* XXX Note that the non-hack case does not enable or - disable stencil. The hack case enables stencil - testing but sets up the stencil modes so that stencil - testing is effectively disabled. If you wanted - stencil testing on during the renderSceneFunc, you won't - need to have the hack enabled though! */ - } - scene->renderSceneFunc(GL_NONE, scene->sceneData, scene); - - if (mode == RTS_NO_SHADOWS) { - return; - } - if (numCastingLights == 0) { - /* No lights, no shadows. */ - return; - } - assert(firstLight); - assert(numShadowingObjects > 0); - - /* Determine exactly which stencil bits usable for shadowing. */ - if (scene->stencilValidateNeeded) { - GLbitfield shadowStencilBits; - - shadowStencilBits = scene->usableStencilBits & ((1 << scene->stencilBits) - 1); - scene->numStencilBits = listBits(shadowStencilBits, scene->bitList); - if (scene->numStencilBits == 0) { - fprintf(stderr, - "WARNING: No stencil bits available for shadowing, expect bad results.\n"); - fprintf(stderr, - " Frame buffer stencil bits = %d, usable stencil bits = 0x%x.\n", - scene->stencilBits, scene->usableStencilBits); - } - scene->stencilValidateNeeded = 0; - } - numStencilBits = scene->numStencilBits; - - /* The first light is easier than the rest since we need subtractive - blending for two or more lights. Do the first light the fast way. */ - - bit = 0; - assert(scene->stencilValidateNeeded == 0); - - glDisable(firstLight->glLight); - glEnable(GL_STENCIL_TEST); - glDepthMask(GL_FALSE); - - obj = 0; - while (firstLight->objectList[obj]->state == RTS_NOT_SHADOWING) { - obj++; - } - - do { - assert(bit < numStencilBits); - assert(firstLight->objectList[obj]->state == RTS_SHADOWING); - assert(obj < firstLight->objectListSize); - - fullStencilMask = 0; - - glDisable(GL_LIGHTING); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glDisable(GL_CULL_FACE); - glStencilFunc(GL_ALWAYS, 0, 0); - do { - -#ifdef MP - waitForSilhouetteGenerationDone(scene, &firstLight->shadowVolumeList[obj]); -#endif - - if (hasVertexArray) { -#if defined(GL_VERSION_1_1) - glInterleavedArrays(GL_V3F, 0, - firstLight->shadowVolumeList[obj].silhouette); -#elif defined(GL_EXT_vertex_array) - setupVertexArray(&firstLight->shadowVolumeList[obj], 3); -#endif - } - fullStencilMask |= 1 << scene->bitList[bit]; - glStencilMask(1 << scene->bitList[bit]); - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - renderShadowVolume(&firstLight->shadowVolumeList[obj], - firstLight->lightPos); - - glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); - renderShadowVolumeTop(&firstLight->shadowVolumeList[obj], - firstLight->lightPos); - - bit++; - do { - obj++; - } while (obj < firstLight->objectListSize - && firstLight->objectList[obj]->state == RTS_NOT_SHADOWING); - - } while (bit < numStencilBits && obj < firstLight->objectListSize); - - glEnable(GL_CULL_FACE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glDepthFunc(GL_EQUAL); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glStencilFunc(GL_NOTEQUAL, 0, fullStencilMask); - glEnable(GL_LIGHTING); - scene->renderSceneFunc(firstLight->glLight, scene->sceneData, scene); - if (obj < firstLight->objectListSize) { - glStencilMask(~0); - glClear(GL_STENCIL_BUFFER_BIT); - glDepthFunc(GL_LESS); /* XXX needed? */ - bit = 0; - } - } while (obj < firstLight->objectListSize); - - if (numCastingLights == 1) { - glStencilMask(~0); - glCullFace(GL_BACK); /* XXX Needed? */ - glDepthMask(GL_TRUE); - glDepthFunc(GL_LESS); - if (scene->stencilRenderingInvariantHack) { - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, 0xffffffff); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - } else { - glDisable(GL_STENCIL_TEST); - } - if (hasVertexArray) { -#if defined(GL_VERSION_1_1) - glDisableClientState(GL_VERTEX_ARRAY); -#elif defined(GL_EXT_vertex_array) - glDisable(GL_VERTEX_ARRAY_EXT); -#endif - } - return; - } - /* Get ready to subtract out the particular contribution for each light - source in regions shadowed by the light source's shadowing objects. */ - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, totalDarkness); - glDepthFunc(GL_LESS); -#ifdef GL_EXT_blend_subtract - if (hasBlendSubtract) { - glBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT_EXT); - } -#endif - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - - prevLight = firstLight; - - for (i = 1; i < scene->lightListSize; i++) { - light = scene->lightList[i]; - if (light) { - if (light->state == RTS_SHINING_AND_CASTING) { - - /* Count number of shadowing objects. */ - numShadowingObjects = 0; - for (obj = 0; obj < light->objectListSize; obj++) { - if (light->objectList[obj]->state == RTS_SHADOWING) { - numShadowingObjects++; - } - } - - if (numShadowingObjects > 0) { - int reservedStencilBit; - - assert(scene->stencilValidateNeeded == 0); - - /* Switch off the last light; switch on the current light (all - other lights should be disabled). */ - glDisable(prevLight->glLight); - glEnable(light->glLight); - - /* Complicated logic to try to figure out the stencil clear - strategy. Tries hard to conserve stencil bit planes and scene - re-renders. */ - if (numStencilBits < numShadowingObjects) { - if (numStencilBits == 1) { - fprintf(stderr, "WARNING: 1 bit of stencil not enough to reserve a bit.\n"); - fprintf(stderr, " Skipping lights beyond the first.\n"); - continue; - } - /* Going to require one or more stencil clears; this requires - reserving a bit of stencil to avoid double subtracts. */ - reservedStencilBit = 1 << scene->bitList[0]; - bit = 1; - glStencilMask(~0); - glClear(GL_STENCIL_BUFFER_BIT); - glDepthFunc(GL_LESS); /* XXX Needed? */ - } else { - /* Faster cases. All the objects can be rendered each to a - distinct available stencil plane. No need to reserve a - stencil bit to avoid double blending since only one scene - render required. */ - reservedStencilBit = 0; - if (numShadowingObjects <= numStencilBits - bit) { - /* Best case: Enough stencil bits available to not even - require a stencil clear for this light. Keep "bit" as is. */ - } else { - /* Not enough left over bitplanes to subtract out this light - with what's currently available, so clear the stencil buffer - to get enough. */ - glStencilMask(~0); - glClear(GL_STENCIL_BUFFER_BIT); - bit = 0; - } - } - - obj = 0; - while (light->objectList[obj]->state == RTS_NOT_SHADOWING) { - obj++; - } - - do { - assert(bit < numStencilBits); - assert(light->objectList[obj]->state == RTS_SHADOWING); - assert(obj < light->objectListSize); - - fullStencilMask = reservedStencilBit; - - glDisable(GL_LIGHTING); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glStencilFunc(GL_ALWAYS, 0, 0); - glDisable(GL_CULL_FACE); - do { - -#ifdef MP - waitForSilhouetteGenerationDone(scene, - &light->shadowVolumeList[obj]); -#endif - - if (hasVertexArray) { -#if defined(GL_VERSION_1_1) - glInterleavedArrays(GL_V3F, 0, - light->shadowVolumeList[obj].silhouette); -#elif defined(GL_EXT_vertex_array) - setupVertexArray(&light->shadowVolumeList[obj], 3); -#endif - } - fullStencilMask |= 1 << scene->bitList[bit]; - glStencilMask(1 << scene->bitList[bit]); - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - renderShadowVolume(&light->shadowVolumeList[obj], - light->lightPos); - - glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); - renderShadowVolumeTop(&light->shadowVolumeList[obj], - light->lightPos); - - bit++; - do { - obj++; - } while (obj < light->objectListSize - && light->objectList[obj]->state == RTS_NOT_SHADOWING); - - } while (bit < scene->numStencilBits && obj < light->objectListSize); - - glEnable(GL_CULL_FACE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glDepthFunc(GL_EQUAL); - if (reservedStencilBit) { - glStencilMask(reservedStencilBit); - glStencilOp(GL_KEEP, GL_KEEP, GL_ONE); - if (hasBlendSubtract) { - /* Subtract lighting contribution inside of shadow; prevent - double drawing via stencil */ - glStencilFunc(GL_GREATER, reservedStencilBit, fullStencilMask); - } else { - /* Add lighting contribution outside of shadow; prevent - double drawing via stencil. */ - glStencilFunc(GL_EQUAL, 0, fullStencilMask); - } - } else { - if (hasBlendSubtract) { - glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); - glStencilFunc(GL_NOTEQUAL, 0, fullStencilMask); - } else { - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - glStencilFunc(GL_EQUAL, 0, fullStencilMask); - } - } - glEnable(GL_LIGHTING); - scene->renderSceneFunc(light->glLight, scene->sceneData, scene); - - if (obj < light->objectListSize) { - assert(reservedStencilBit); - glStencilMask(~0); - glClear(GL_STENCIL_BUFFER_BIT); - glDepthFunc(GL_LESS); /* XXX Needed? */ - bit = 1; - } - } while (obj < light->objectListSize); - - prevLight = light; - } - } - } - } - - glStencilMask(~0); - glCullFace(GL_BACK); /* XXX needed? */ - glDepthMask(GL_TRUE); - glDepthFunc(GL_LESS); - if (scene->stencilRenderingInvariantHack) { - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, 0xffffffff); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - } else { - glDisable(GL_STENCIL_TEST); - } - glDisable(GL_BLEND); - if (hasVertexArray) { -#if defined(GL_VERSION_1_1) - glDisableClientState(GL_VERTEX_ARRAY); -#elif defined(GL_EXT_vertex_array) - glDisable(GL_VERTEX_ARRAY_EXT); -#endif - } - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, scene->sceneAmbient); -} - -void -rtsRenderSilhouette( - RTSscene * scene, - RTSlight * light, - RTSobject * object) -{ - GLfloat lightDelta[3]; - GLfloat lightDistance, viewScale, fieldOfViewRatio, extentScale; - ShadowVolumeState svsRec, *svs; - int obj; - int anonymousShadowVolumeState; - - /* Calculate the light's distance from the object being shadowed. */ - lightDelta[X] = object->objectPos[X] - light->lightPos[X]; - lightDelta[Y] = object->objectPos[Y] - light->lightPos[Y]; - lightDelta[Z] = object->objectPos[Z] - light->lightPos[Z]; - lightDistance = sqrt(lightDelta[X] * lightDelta[X] + - lightDelta[Y] * lightDelta[Y] + lightDelta[Z] * lightDelta[Z]); - - viewScale = getViewScale(scene); - fieldOfViewRatio = object->maxRadius / lightDistance; - extentScale = light->radius * fieldOfViewRatio / viewScale; - - for (obj = 0; obj < light->objectListSize; obj++) { - if (light->objectList[obj] == object) { - svs = &light->shadowVolumeList[obj]; - anonymousShadowVolumeState = 0; - goto gotShadowVolumeState; - } - } - - /* It probably makes sense to have the object on the light's object list - already since then we would have a ShadowVolumeState structure ready to - use and likely to have a reasonably sized silhouette vertex array. Plus, - we'd validate the light and object's shadow volume. - - Anyway, rtsRenderSilhouette will still handle the case where the object - is not already added to the specified light for generality (but not - economy). Use an "anonymous" ShadowVolumeState data structure that only - lives during this routine. */ - - svs = &svsRec; - anonymousShadowVolumeState = 1; - initShadowVolumeState(svs); - -gotShadowVolumeState: - - validateShadowVolume(scene, light, object, svs); - - glPushAttrib(GL_ENABLE_BIT); - /* Disable a few things likely to screw up the rendering of the - silhouette. */ - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); -#if 0 - glDisable(GL_STENCIL_TEST); -#else - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, 0xffffffff); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); -#endif - glDisable(GL_ALPHA_TEST); - glDisable(GL_BLEND); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(-viewScale, viewScale, -viewScale, viewScale); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glScalef(1.0 / extentScale, 1.0 / extentScale, 1.0 / extentScale); - - renderSilhouette(svs); - -#if 0 - glColor3f(0.0, 1.0, 0.0); - glPointSize(7.0); - glBegin(GL_POINTS); - glVertex2fv(eyeLoc); - glEnd(); -#endif - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopAttrib(); - - if (anonymousShadowVolumeState) { - /* Deallocate "anonymous" ShadowVolumeState's silhouette vertex array. */ - SHARED_FREE(svs->silhouette); - } -} - -void -rtsStencilRenderingInvariantHack(RTSscene * scene, GLboolean enableHack) -{ - scene->stencilRenderingInvariantHack = enableHack; -} - -/* XXX These free routines are not complete. */ - -#if 0 -static void -freeTessellationContext(TessellationContext *context) -{ - gluDeleteTess(context->tess); - free(context->feedbackBuffer); - free(context); -} -#endif - -void -rtsFreeScene( - RTSscene * scene) -{ - int i; - - for (i=0; i < scene->lightListSize; i++) { - if (scene->lightList[i]) { - rtsFreeLight(scene->lightList[i]); - } - } - free(scene->lightList); - free(scene); -} - -void -rtsFreeLight( - RTSlight * light) -{ - int i; - - for (i=0; isceneListSize; i++) { - if (light->sceneList[i]) { - rtsFreeScene(light->sceneList[i]); - } - } - free(light); -} - -void -rtsFreeObject( - RTSobject * object) -{ - free(object); -} - -#endif /* GLU_VERSION_1_2 */ diff --git a/lib/glut-3.7.6/progs/advanced/rtshadow.h b/lib/glut-3.7.6/progs/advanced/rtshadow.h deleted file mode 100644 index 014539e0c018d6f67a7b732b00b6f6d905d61221..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/rtshadow.h +++ /dev/null @@ -1,182 +0,0 @@ -#ifndef __rtshadow_h__ -#define __rtshadow_h__ - -/* Copyright (c) Mark J. Kilgard, 1997, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* Real-time Shadowing library, Version 0.96 */ - -#if defined(_WIN32) - -/* Try to avoid including to avoid name space - pollution, but Win32's needs APIENTRY and - WINGDIAPI defined properly. */ -# if 0 -# define WIN32_LEAN_AND_MEAN -# include -# else - /* This is from Win32's */ -# ifndef APIENTRY -# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -# endif -# ifndef CALLBACK - /* This is from Win32's */ -# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -# endif - /* This is from Win32's and */ -# ifndef WINGDIAPI -# define WINGDIAPI __declspec(dllimport) -# endif - /* XXX This is from Win32's */ -# ifndef _WCHAR_T_DEFINED -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -# endif -# endif - -#pragma warning (disable:4244) /* Disable bogus conversion warnings. */ -#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ - -#endif - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - RTS_ERROR_OUT_OF_MEMORY, - RTS_WARNING_EYE_IN_SHADOW, - RTS_WARNING_LIGHT_TOO_CLOSE -}; - -typedef enum { - RTS_OFF, - RTS_SHINING, - RTS_SHINING_AND_CASTING -} RTSlightState; - -typedef enum { - RTS_NOT_SHADOWING, - RTS_SHADOWING -} RTSobjectState; - -typedef enum { - RTS_NO_SHADOWS, - RTS_USE_SHADOWS, - RTS_USE_SHADOWS_NO_OVERLAP -} RTSmode; - -typedef struct RTSscene RTSscene; -typedef struct RTSlight RTSlight; -typedef struct RTSobject RTSobject; - -typedef void (*RTSerrorHandler)(int error, char *message); -typedef void (*RTSrenderSceneFunc)(GLenum castingLight, void *sceneData, RTSscene *scene); - -extern RTSscene *rtsCreateScene( - GLfloat eyePos[3], - GLbitfield usableStencilBits, - RTSrenderSceneFunc func, - void *sceneData); -extern RTSlight *rtsCreateLight( - GLenum glLight, - GLfloat lightPos[3], - GLfloat radius); -extern RTSobject *rtsCreateObject( - GLfloat objectPos[3], - GLfloat maxRadius, - void (*renderObject) (void *objectData), - void *objectData, - int feedbackBufferSizeGuess); - -extern void rtsAddLightToScene( - RTSscene * scene, - RTSlight * light); -extern void rtsAddObjectToLight( - RTSlight * light, - RTSobject * object); - -extern void rtsRemoveLightFromScene( - RTSscene * scene, - RTSlight * light); -extern void rtsRemoveObjectFromLight( - RTSlight * light, - RTSobject * object); - -extern void rtsSetLightState( - RTSlight * light, - RTSlightState state); -extern void rtsSetObjectState( - RTSobject * object, - RTSobjectState state); - -extern void rtsUpdateEyePos( - RTSscene * scene, - GLfloat eyePos[3]); -extern void rtsUpdateUsableStencilBits( - RTSscene * scene, - GLbitfield usableStencilBits); - -extern void rtsUpdateLightPos( - RTSlight * light, - GLfloat lightPos[3]); -extern void rtsUpdateLightRadius( - RTSlight * light, - GLfloat lightRadius); - -extern void rtsUpdateObjectPos( - RTSobject * object, - GLfloat objectPos[3]); -extern void rtsUpdateObjectShape( - RTSobject * object); -extern void rtsUpdateObjectMaxRadius( - RTSobject * object, - GLfloat maxRadius); - -extern void rtsFreeScene( - RTSscene * scene); -extern void rtsFreeLight( - RTSlight * light); -extern void rtsFreeObject( - RTSobject * object); - -extern int rtsTriviallyOutsideShadowVolume( - RTSscene * scene, - GLfloat objectPos[3], - GLfloat maxRadius); - -extern void rtsRenderScene( - RTSscene * scene, - RTSmode mode); - -extern void rtsRenderSilhouette( - RTSscene * scene, - RTSlight * light, - RTSobject * object); - -extern RTSerrorHandler rtsSetErrorHandler( - RTSerrorHandler handler); - -extern void rtsStencilRenderingInvariantHack( - RTSscene * scene, - GLboolean enableHack); - -#ifdef __cplusplus -} - -#endif -#endif /* __rtshadow_h__ */ diff --git a/lib/glut-3.7.6/progs/advanced/sgiflag.c b/lib/glut-3.7.6/progs/advanced/sgiflag.c deleted file mode 100644 index e0873e8ee144539e89bd928fc604d247a818edb0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/sgiflag.c +++ /dev/null @@ -1,488 +0,0 @@ - -/* - * sgiflag.c: - * - * This program displays a waving flag with an SGI logo trimmed out of - * it. The flag is a single nurbs surface (bicubic, bezier). It "waves" - * by making it control point oscillate on a sine wave. - * - * The logo is cut from the flag using a combination of piecewise-linear - * and bezier trim curves. - * - * Howard Look - December 1990 - * David Blythe - June 1995 - */ - -#include - -#include -#include - -#include -#include "sgiflag.h" -#include "logopoints.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* Knot sequences for cubic bezier surface and trims */ -Knot sknots[S_NUMKNOTS] = {0., 0., 0., 0., 1., 1., 1., 1.}; -Knot tknots[T_NUMKNOTS] = {0., 0., 0., 0., 1., 1., 1., 1.}; -Knot trimknots[S_NUMKNOTS] = {0., 0., 0., 0., 1., 1., 1., 1.}; - -/* Control points for the flag. The Z values are modified to make it wave */ -Point ctlpoints[S_NUMPOINTS][T_NUMPOINTS] = { - { {0., 3., 0.}, {1., 3., 0.}, {2., 3., 0}, {3., 3., 0.}}, - { {0., 2., 0.}, {1., 2., 0.}, {2., 2., 0}, {3., 2., 0.}}, - { {0., 1., 0.}, {1., 1., 0.}, {2., 1., 0}, {3., 1., 0.}}, - { {0., 0., 0.}, {1., 0., 0.}, {2., 0., 0}, {3., 0., 0.}} -}; - -/* Trim the whole exterior of the, counter clockwise. Necessary to do - * internal trimming - */ -TrimCurve *whole; -TrimCurve ccl_path; -TrimPiece ccl_square[] = { - { - PWL, - 11, - { - {0., 0.}, {.25, 0.}, {.5, 0.}, {.75, 0.}, {1., 0.}, - {1., 1.}, {.75, 1.}, {.5, 1.}, {.25, 1.}, {0., 1.}, {0., 0.} - } - } -}; - -/* Three paths for three parts of the logo */ -TrimCurve *path[3]; - -/* Initial one-third of the logo, centered at origin */ -TrimCurve initial_path; -TrimPiece initial_pieces[] = { - { - PWL, /* 0 */ - 6, - {{Ax,Ay},{Bx,By},{Cx,Cy},{Dx,Dy},{Ex,Ey},{0.,0.}} - }, - { - CURVE, /* 1 */ - 4, - {{0.,0.},{Fx,Fy},{Fx,Fy},{0.,0.}} - }, - { - PWL, /* 2 */ - 2, - {{Gx, Gy},{Gx,Gy}} - }, - { - CURVE, /* 3 */ - 4, - {{0.,0.},{Gx,Gy},{Gx,Gy},{0.,0.}} - }, - { - PWL, /* 4 */ - 3, - {{0., 0.},{Z,Z},{0.,0.}} - }, - { - CURVE, /* 5 */ - 4, - {{0.,0.},{-Gx,Gy},{-Gx,Gy},{0.,0.}} - }, - { - PWL, /* 6 */ - 2, - {{-Fx, Fy},{-Fx,Fy}} - }, - { - CURVE, /* 7 */ - 4, - {{0.,0.},{-Fx,Fy},{-Fx,Fy},{0.,0.}} - }, - { - PWL, /* 8 */ - 6, - {{0.,0.},{-Ex,Ey},{-Dx,Dy},{-Cx,Cy},{-Bx,By},{Ax,Ay}} - } -}; - -static GLUnurbsObj *nurbsflag; - -static GLboolean trimming = GL_TRUE, filled = GL_TRUE, hull = GL_TRUE; -static int mousex = 248, mousey = 259, mstate; - -/* Given endpoints of the line a and b, the distance d from point a, - * returns a new point (in result) that is on that line. - */ -void interp(TrimPoint a, TrimPoint b, GLfloat d, TrimPoint result) { - - GLfloat l; - - l = sqrt((a[0] - b[0])*(a[0] - b[0]) + (a[1] - b[1])*(a[1] - b[1])); - - result[0] = a[0] + (b[0] - a[0])*d/l; - result[1] = a[1] + (b[1] - a[1])*d/l; - -} - -/* Given two trim pieces, coerces the endpoint of the first and the - * start point of the second to be indentical. - * - * The two trims must be of opposite types, PWL or CURVE. - */ -void join_trims(TrimPiece *trim1, TrimPiece *trim2, GLfloat radius) { - - int last; - TrimPoint result; - - last = trim1->points - 1; - - if (trim1->type == PWL) - interp(trim2->point[1], trim1->point[last - 1], radius, result); - else /* trim1 is CURVE */ - interp(trim1->point[last-1], trim2->point[0], radius, result); - - trim1->point[last][0] = trim2->point[0][0] = result[0]; - trim1->point[last][1] = trim2->point[0][1] = result[1]; -} - -/* Translates each point in the trim piece by tx and ty */ -void translate_trim(TrimPiece *trim, GLfloat tx, GLfloat ty) { - - int i; - - for (i=0; ipoints; i++) { - trim->point[i][0] += tx; - trim->point[i][1] += ty; - } -} - -/* Scales each point in the trim piece by sx and sy */ -void scale_trim(TrimPiece *trim, GLfloat sx, GLfloat sy) { - - int i; - - for (i=0; ipoints; i++) { - trim->point[i][0] *= sx; - trim->point[i][1] *= sy; - } -} - -/* Rotates each point in the trim piece by angle radians about the origin */ -void rotate_trim(TrimPiece *trim, GLfloat angle) { - - int i; - GLfloat s,c; - TrimPoint t; - - s = sin(angle); - c = cos(angle); - - for (i=0; ipoints; i++) { - t[0] = trim->point[i][0]; - t[1] = trim->point[i][1]; - - trim->point[i][0] = c*t[0] - s*t[1]; - trim->point[i][1] = s*t[0] + c*t[1]; - } -} - -/* Creates storage space for dst and copies the contents of src into dst */ -void copy_path(TrimCurve *src, TrimCurve **dst) { - - int i,j; - - *dst = (TrimCurve *) malloc(sizeof(TrimCurve)); - (*dst)->pieces = src->pieces; - (*dst)->trim = (TrimPiece *) malloc((src->pieces)*sizeof(TrimPiece)); - - for(i=0; i < src->pieces; i++) { - (*dst)->trim[i].type = src->trim[i].type; - (*dst)->trim[i].points = src->trim[i].points; - - for (j=0; j < src->trim[i].points; j++) { - (*dst)->trim[i].point[j][0] = src->trim[i].point[j][0]; - (*dst)->trim[i].point[j][1] = src->trim[i].point[j][1]; - } - } -} - -/* Initializes the outer whole trim plus the three trimming paths - * required to trim the logo. - */ -void init_trims(void) { - - int i; - - /* whole outer path, counter clockwise, so NuRB is not trimmed */ - whole = &ccl_path; - whole->pieces = 1; - whole->trim = ccl_square; - - /* initial third of logo, centered at origin */ - path[0] = &initial_path; - path[0]->pieces = ELEMENTS(initial_pieces); - path[0]->trim = initial_pieces; - for(i=0; i < path[0]->pieces - 1; i++) - join_trims(&path[0]->trim[i], &path[0]->trim[i+1], LOGO_RADIUS); - - /* copy other to other two thirds */ - copy_path(path[0],&path[1]); - copy_path(path[0],&path[2]); - - /* scale and translate first third */ - for (i=0; ipieces; i++) { - scale_trim(&path[0]->trim[i],0.5,1.0); - translate_trim(&path[0]->trim[i],0.5,0.52); - } - - /* rotate, scale and translate second third */ - for (i=0; ipieces; i++) { - rotate_trim(&path[1]->trim[i],2.0*M_PI/3.0); - scale_trim(&path[1]->trim[i],0.5,1.0); - translate_trim(&path[1]->trim[i],0.49,0.5); - } - - /* rotate, scale and translate last third */ - for (i=0; ipieces; i++) { - rotate_trim(&path[2]->trim[i],2.0*2.0*M_PI/3.0); - scale_trim(&path[2]->trim[i],0.5,1.0); - translate_trim(&path[2]->trim[i],0.51,0.5); - } -} - -/* Opens a square window, and initializes the window, interesting devices, - * viewing volume, material, and lights. - */ -static void -initialize(void) { - - GLfloat mat_diffuse[] = { .8, .1, .8, 1. }; - GLfloat mat_specular[] = { .6, .6, .6, 1. }; - GLfloat mat_ambient[] = { .1, .1, .1, 1. }; - - glClearColor(.58, .58, .58, 0.); - glClearDepth(1.); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - gluPerspective(60,1.0,1.0,10.0); - glMatrixMode(GL_MODELVIEW); - glTranslatef(0., 0., -6.); - - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 32.0); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - - nurbsflag = gluNewNurbsRenderer(); - gluNurbsProperty(nurbsflag, GLU_SAMPLING_TOLERANCE, 100.0); - gluNurbsProperty(nurbsflag, GLU_DISPLAY_MODE, GLU_FILL); - - init_trims(); -} - - -/* Draw the nurb, possibly with trimming */ -void draw_nurb(GLboolean trimming) { - - static GLfloat angle = 0.0; - int i,j; - - - /* wave the flag by rotating Z coords though a sine wave */ - for (i=1; i<4; i++) - for (j=0; j<4; j++) - ctlpoints[i][j][2] = sin((GLfloat)i+angle); - - angle += 0.1; - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(2.5,-1.0,0.0); - glScalef(1.5,1.0,1.0); - glRotatef(90,0.,0.,1.); - glRotatef(mousey/10.,1.,0.,0.); - glRotatef(mousex/10.,0.,1.,0.); - - gluBeginSurface(nurbsflag); - gluNurbsSurface(nurbsflag,S_NUMKNOTS, sknots, T_NUMKNOTS, tknots, - 3 * T_NUMPOINTS, 3, - &ctlpoints[0][0][0], T_ORDER, S_ORDER, GL_MAP2_VERTEX_3); - if (trimming) { - dotrim(whole); - dotrim(path[0]); - dotrim(path[1]); - dotrim(path[2]); - } - gluEndSurface(nurbsflag); - - if (hull) draw_hull(ctlpoints); - - glPopMatrix(); - -} - -/* Draw the convex hull of the control points */ -void draw_hull(Point cpoints[S_NUMPOINTS][T_NUMPOINTS]) { - - int s,t; - - glDisable(GL_LIGHTING); - glColor3f(0.,1.,0.); - - glBegin(GL_LINES); - for (s=0; spieces; i++) { - - if (trim_curve->trim[i].type == PWL) { - gluPwlCurve(nurbsflag, trim_curve->trim[i].points, - &trim_curve->trim[i].point[0][0], - 2, GLU_MAP1_TRIM_2); - } else { - gluNurbsCurve(nurbsflag, ELEMENTS(trimknots),trimknots, - 2,&trim_curve->trim[i].point[0][0], - trim_curve->trim[i].points, GLU_MAP1_TRIM_2); - } - } - gluEndTrim(nurbsflag); -} - - -/* ARGSUSED1 */ -static void -Key(unsigned char c, int x, int y) -{ - switch(c) { - case 27: /* Escape */ - exit(0); - break; - default: - break; - } -} - -static void -Button(int button, int down, int x, int y) -{ - if (down) { - if (button == GLUT_LEFT_BUTTON) { - mstate = 1; - mousex = x; - mousey = y; - } - } else { - if (button == GLUT_LEFT_BUTTON) - mstate = 0; - } - if (mstate) { - mousex = x; - mousey = y; - } -} - -static void -resize(int width, int height) -{ - glViewport(0, 0, width, height); -} - - -static void -expose(void) -{ - draw_nurb(trimming); - glutSwapBuffers(); -} - -static void -idle(void) -{ - glutPostRedisplay(); -} - -static void -visibility(int state) -{ - if (state == GLUT_VISIBLE) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } -} - -static void -Menu(int value) -{ - switch (value) { - case 1: - trimming ^= 1; break; - case 2: - filled ^= 1; - gluNurbsProperty(nurbsflag, GLU_DISPLAY_MODE, - filled ? GLU_FILL : GLU_OUTLINE_POLYGON); - break; - case 3: - hull ^= 1; break; - case 4: - exit(0); break; - default: - break; - } -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutInitWindowSize(400, 400); - glutCreateWindow("NURBS Surface"); - glutDisplayFunc(expose); - glutReshapeFunc(resize); - glutKeyboardFunc(Key); - glutMouseFunc(Button); - - glutCreateMenu(Menu); - glutAddMenuEntry("Trim", 1); - glutAddMenuEntry("Fill", 2); - glutAddMenuEntry("Hull", 3); - glutAddMenuEntry("Exit", 4); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutVisibilityFunc(visibility); - - initialize(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced/sgiflag.dsp b/lib/glut-3.7.6/progs/advanced/sgiflag.dsp deleted file mode 100644 index 9115e23a2101ff75f6b236c8be6eba7cdc246e4e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/sgiflag.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sgiflag" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sgiflag - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sgiflag.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sgiflag.mak" CFG="sgiflag - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sgiflag - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sgiflag - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sgiflag - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sgiflag - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sgiflag - Win32 Release" -# Name "sgiflag - Win32 Debug" -# Begin Source File - -SOURCE=.\sgiflag.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/sgiflag.h b/lib/glut-3.7.6/progs/advanced/sgiflag.h deleted file mode 100644 index 5f3c143fea159a178d990bd780ac4c468b8e269f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/sgiflag.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * sgiflag.h - * - */ - -/* useful for lmdef, nurbssurface, nurbscurve, and more */ -#define ELEMENTS(x) (sizeof(x)/sizeof(x[0])) - -/* Define nurbs surface properties */ -#define S_NUMPOINTS 4 -#define S_ORDER 4 /* cubic, degree 3 */ -#define S_NUMKNOTS (S_NUMPOINTS + S_ORDER) -#define S_NUMCOORDS 3 - -#define T_NUMPOINTS 4 -#define T_ORDER 4 -#define T_NUMKNOTS (T_NUMPOINTS + T_ORDER) -#define T_NUMCOORDS 3 - -typedef GLfloat Knot; -typedef GLfloat Point[3]; -typedef GLfloat TrimPoint[2]; - -/* Trimming curves are either piecewise linear or nurbscurve */ -enum TrimType {PWL, CURVE}; - - -/* A trimming curve is made up of one or more trimming pieces. - * A trimming piece may be of PWL or CURVE. If a trim piece is PWL, - * it has at least two trim points, with each trim point composing - * the endpoints of the line segments. If a trim piece is CURVE, it - * has four trim points defining the cubic bezier trim. - */ - -#define MAX_PIECES 20 - -struct TrimPieceStruct { - enum TrimType type; /* type of the trim */ - int points; /* # of points in the trim piece */ - TrimPoint point[MAX_PIECES]; /* pointer to first trim point */ -}; -typedef struct TrimPieceStruct TrimPiece; - -struct TrimCurveStruct { - int pieces; - TrimPiece *trim; -}; -typedef struct TrimCurveStruct TrimCurve; - - -struct teststruct { - int a, b, c[2]; -}; -typedef struct teststruct Test; - -/* function prototypes */ -static void interp(TrimPoint a, TrimPoint b, GLfloat d, TrimPoint result); -static void join_trims(TrimPiece *trim1, TrimPiece *trim2, GLfloat radius); -static void translate_trim(TrimPiece *trim, GLfloat tx, GLfloat ty); -static void scale_trim(TrimPiece *trim, GLfloat sx, GLfloat sy); -static void rotate_trim(TrimPiece *trim, GLfloat angle); -static void copy_path(TrimCurve *src, TrimCurve **dst); -static void init_trims(void); -static void initialize(void); -static void draw_nurb(GLboolean); -static void draw_hull(Point cpoints[S_NUMPOINTS][T_NUMPOINTS]); -static void dotrim(TrimCurve *curve); diff --git a/lib/glut-3.7.6/progs/advanced/shadowfun.c b/lib/glut-3.7.6/progs/advanced/shadowfun.c deleted file mode 100644 index 593dad8dc2ac1ad8f6fb1a39673b4168f12da5bf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/shadowfun.c +++ /dev/null @@ -1,1163 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* Unix compile line: cc -o shadowfun shadowfun.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -/* THIS PROGRAM REQUIRES GLU 1.2. If you have IRIX 5.3, you need patch 1449 - (the IRIX 5.3 GLU 1.2 functionality patch) or its successor to use this - program. GLU 1.2 is standard on IRIX 6.2 and later. */ - -/* This program demonstrates a light source and object of arbitrary geometry - casing a shadow on arbitary geometry. The program uses OpenGL's feedback, - stencil, and boundary tessellation support. */ - -#include -#include -#include -#include -#include - -#ifdef GLU_VERSION_1_2 - -/* Win32 calling conventions. */ -#ifndef CALLBACK -#define CALLBACK -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -const float uniquePassThroughValue = 34567.0; - -#define SmallerOf(a,b) ((a) < (b) ? (a) : (b)) - -int stencilBits; - -/* Display list names. */ -enum { - /* Display lists should start at 1, not 0. */ - DL_BALL = 1, DL_CONE, DL_LIGHT, DL_SHADOW_VOLUME, DL_SPHERE, - DL_ICO, DL_TORUS, DL_CUBE, DL_SHADOW_VOLUME_TOP, DL_BASE_SHADOW_VOLUME -}; - -/* Menu option names. */ -enum { - /* Important for objectMaxRadius array that the shape enums appear first in - this list. */ - M_TORUS, M_CUBE, M_SPHERE, M_ICO, M_DOUBLE_TORUS, M_ANGLE, M_BOUNDARY, - M_NO_SHADOW, M_NO_LIGHT, M_FRONT_VOLUME, M_BACK_VOLUME, M_SHADOW, - M_LIGHT_SOURCE_VIEW, M_NORMAL_VIEW, M_SPIN, M_SWING, M_STOP -}; - -/* Coordinates. */ -enum { - X, Y, Z -}; - -const int TEXDIM = 64; - -int shape; -GLfloat maxRadius; -int renderMode = M_SHADOW; -int view = M_NORMAL_VIEW; -int renderBoundary = 0; -GLfloat angle = 0.0; -int frontFace = 1; -int rotatingObject = 1; -int swingingLight = 1; -float swingTime = M_PI / 2.0; - -GLfloat lightDiffuse[4] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat lightPos[4] = -{60.0, 50.0, -350.0, 1.0}; -GLfloat objectPos[4] = -{40.0, 30.0, -360.0, 1.0}; -GLfloat sceneEyePos[4] = -{0.0, 0.0, 0.0, 0.0}; - -struct VertexHolder { - struct VertexHolder *next; - GLfloat v[2]; -}; - -typedef struct _ShadowVolumeMemoryPool { - /* Reference count because ShadowVolumeMemoryPool's can be shared between - multiple ShadowVolumeState's. */ - int refcnt; - - GLUtesselator *tess; - GLfloat viewScale; - - /* Memory used for GLU tessellator combine callbacks. */ - GLfloat *combineList; - int combineListSize; - int combineNext; - struct VertexHolder *excessList; -} ShadowVolumeMemoryPool; - -typedef struct _ShadowVolumeState { - ShadowVolumeMemoryPool *pool; - - GLfloat shadowProjectionDistance; - GLfloat extentScale; - - /* Scratch variables used during GLU tessellator callbacks. */ - int saveFirst; - GLfloat *firstVertex; -} ShadowVolumeState; - -ShadowVolumeState *svs; - -static void CALLBACK -begin(GLenum type, void *shadowVolumeState) -{ - ShadowVolumeState *svs = (ShadowVolumeState *) shadowVolumeState; - - assert(type == GL_LINE_LOOP); - if (renderBoundary) { - glBegin(type); - } else { - svs->saveFirst = 1; - glBegin(GL_TRIANGLE_FAN); - glColor3f(0, 1, 0); - glVertex3f(0.0, 0.0, 0.0); - } -} - -static void CALLBACK -vertex(void *data, void *shadowVolumeState) -{ - ShadowVolumeState *svs = (ShadowVolumeState *) shadowVolumeState; - GLfloat *v = data; - - if (renderBoundary) { - glVertex2fv(v); - } else { - if (svs->saveFirst) { - svs->firstVertex = v; - svs->saveFirst = 0; - } - glColor3f(0, 0, 1); - glVertex3f(svs->extentScale * v[X], svs->extentScale * v[Y], - svs->shadowProjectionDistance); - } -} - -static void CALLBACK -end(void *shadowVolumeState) -{ - ShadowVolumeState *svs = (ShadowVolumeState *) shadowVolumeState; - - if (!renderBoundary) { - glColor3f(0, 0, 1); - glVertex3f(svs->extentScale * svs->firstVertex[X], svs->extentScale * svs->firstVertex[Y], - svs->shadowProjectionDistance); - } - glEnd(); -} - -static void -freeExcessList(ShadowVolumeMemoryPool * pool) -{ - struct VertexHolder *holder, *next; - - holder = pool->excessList; - while (holder) { - next = holder->next; - free(holder); - holder = next; - } - pool->excessList = NULL; -} - -/* ARGSUSED1 */ -static void CALLBACK -combine(GLdouble coords[3], void *d[4], GLfloat w[4], void **dataOut, void *shadowVolumeState) -{ - ShadowVolumeState *svs = (ShadowVolumeState *) shadowVolumeState; - ShadowVolumeMemoryPool *pool = svs->pool; - struct VertexHolder *holder; - GLfloat *newCoords; - - if (pool->combineNext >= pool->combineListSize) { - holder = (struct VertexHolder *) malloc(sizeof(struct VertexHolder)); - holder->next = pool->excessList; - pool->excessList = holder; - newCoords = holder->v; - } else { - newCoords = &pool->combineList[pool->combineNext * 2]; - } - - newCoords[0] = coords[0]; - newCoords[1] = coords[1]; - *dataOut = newCoords; - - pool->combineNext++; -} - -static void CALLBACK -error(GLenum errno) -{ - printf("ERROR: %s\n", gluErrorString(errno)); -} - -static void -processFeedback(GLint size, GLfloat * buffer, ShadowVolumeState * svs) -{ - ShadowVolumeMemoryPool *pool = svs->pool; - GLfloat *loc, *end, *eyeLoc; - GLdouble v[3]; - int token, nvertices, i; - GLfloat passThroughToken; - int watchingForEyePos; - - if (pool->combineNext > pool->combineListSize) { - freeExcessList(pool); - pool->combineListSize = pool->combineNext; - pool->combineList = realloc(pool->combineList, sizeof(GLfloat) * 2 * pool->combineListSize); - } - pool->combineNext = 0; - - watchingForEyePos = 0; - eyeLoc = NULL; - - glColor3f(1, 1, 1); - gluTessBeginPolygon(pool->tess, svs); - loc = buffer; - end = buffer + size; - while (loc < end) { - token = *loc; - loc++; - switch (token) { - case GL_POLYGON_TOKEN: - nvertices = *loc; - loc++; - assert(nvertices >= 3); - gluTessBeginContour(pool->tess); - for (i = 0; i < nvertices; i++) { - v[0] = loc[0]; - v[1] = loc[1]; - v[2] = 0.0; - gluTessVertex(pool->tess, v, loc); - loc += 2; - } - gluTessEndContour(pool->tess); - break; - case GL_PASS_THROUGH_TOKEN: - passThroughToken = *loc; - if (passThroughToken == uniquePassThroughValue) { - watchingForEyePos = !watchingForEyePos; - } else { - /* Ignore everything else. */ - fprintf(stderr, "ERROR: Unexpected feedback token 0x%x (%d).\n", token, token); - } - loc++; - break; - case GL_POINT_TOKEN: - if (watchingForEyePos) { - fprintf(stderr, "WARNING: Eye point possibly within the shadow volume.\n"); - fprintf(stderr, " Program should be improved to handle this.\n"); - /* XXX Write code to handle this case. You would need to determine - if the point was instead any of the returned boundary polyons. - Once you found that you were really in the clipping volume, then I - haven't quite thought about what you do. */ - eyeLoc = loc; - watchingForEyePos = 0; - } else { - /* Ignore everything else. */ - fprintf(stderr, "ERROR: Unexpected feedback token 0x%x (%d).\n", - token, token); - } - loc += 2; - break; - default: - /* Ignore everything else. */ - fprintf(stderr, "ERROR: Unexpected feedback token 0x%x (%d).\n", - token, token); - } - } - gluTessEndPolygon(pool->tess); - - if (eyeLoc && renderBoundary) { - glColor3f(0, 1, 0); - glPointSize(7.0); - glBegin(GL_POINTS); - glVertex2fv(eyeLoc); - glEnd(); - } -} - -/* Three element vector dot product. */ -static GLfloat -vdot(const GLfloat * v1, const GLfloat * v2) -{ - return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2]; -} - -/* Three element vector cross product. */ -static void -vcross(const GLfloat * v1, const GLfloat * v2, GLfloat * cross) -{ - assert(v1 != cross && v2 != cross); - cross[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - cross[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - cross[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); -} - -void -svsFreeShadowVolumeState(ShadowVolumeState * svs) -{ - if (svs->pool) { - svs->pool->refcnt--; - if (svs->pool->refcnt == 0) { - if (svs->pool->excessList) { - freeExcessList(svs->pool); - } - if (svs->pool->combineList) { - free(svs->pool->combineList); - } - if (svs->pool->tess) { - gluDeleteTess(svs->pool->tess); - } - free(svs->pool); - } - } - free(svs); -} - -ShadowVolumeState * -svsCreateShadowVolumeState(GLfloat shadowProjectionDistance, - ShadowVolumeState * shareSVS) -{ - ShadowVolumeState *svs; - ShadowVolumeMemoryPool *pool; - GLUtesselator *tess; - - svs = (ShadowVolumeState *) malloc(sizeof(ShadowVolumeState)); - if (svs == NULL) { - return NULL; - } - svs->pool = NULL; - - if (shareSVS == NULL) { - pool = (ShadowVolumeMemoryPool *) malloc(sizeof(ShadowVolumeMemoryPool)); - if (pool == NULL) { - svsFreeShadowVolumeState(svs); - return NULL; - } - pool->refcnt = 1; - pool->excessList = NULL; - pool->combineList = NULL; - pool->combineListSize = 0; - pool->combineNext = 0; - pool->tess = NULL; - svs->pool = pool; - - tess = gluNewTess(); - if (tess == NULL) { - svsFreeShadowVolumeState(svs); - return NULL; - } - gluTessProperty(tess, GLU_TESS_BOUNDARY_ONLY, GL_TRUE); - gluTessProperty(tess, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO); - gluTessCallback(tess, GLU_TESS_BEGIN_DATA, (void (CALLBACK*)()) begin); - gluTessCallback(tess, GLU_TESS_VERTEX_DATA, (void (CALLBACK*)()) vertex); - gluTessCallback(tess, GLU_TESS_COMBINE_DATA, (void (CALLBACK*)()) combine); - gluTessCallback(tess, GLU_TESS_END_DATA, (void (CALLBACK*)()) end); - gluTessCallback(tess, GLU_TESS_ERROR, (void (CALLBACK*)()) error); - pool->tess = tess; - } else { - pool = shareSVS->pool; - pool->refcnt++; - } - - svs->pool = pool; - svs->shadowProjectionDistance = shadowProjectionDistance; - - return svs; -} - -int -svsGenerateShadowVolume(ShadowVolumeState * svs, - void (*renderFunc) (void), int feedbackBufferSizeGuess, - GLfloat maxRadius, - GLfloat lightPos[3], GLfloat objectPos[3], GLfloat eyePos[3]) -{ - static GLfloat unit[3] = - {0.0, 0.0, 1.0}; - static GLfloat *feedbackBuffer = NULL; - static int bufferSize = 0; - GLfloat axis[3], lightDelta[3], eyeDelta[3]; - GLfloat nnear, ffar; /* Avoid Intel C keywords. Grumble. */ - GLfloat lightDistance, eyeDistance, angle, fieldOfViewRatio, fieldOfViewAngle, - topScale, viewScale; - GLint returned; - - if (svs->pool->viewScale == 0.0) { - GLfloat maxViewSize[2]; - - glGetFloatv(GL_MAX_VIEWPORT_DIMS, maxViewSize); - printf("max viewport = %gx%g\n", maxViewSize[0], maxViewSize[1]); - svs->pool->viewScale = SmallerOf(maxViewSize[0], maxViewSize[1]) / 2.0; - } - viewScale = svs->pool->viewScale; - - if (bufferSize > feedbackBufferSizeGuess) { - feedbackBufferSizeGuess = bufferSize; - } - /* Calculate the light's distance from the object being shadowed. */ - lightDelta[X] = objectPos[X] - lightPos[X]; - lightDelta[Y] = objectPos[Y] - lightPos[Y]; - lightDelta[Z] = objectPos[Z] - lightPos[Z]; - lightDistance = sqrt(lightDelta[X] * lightDelta[X] + - lightDelta[Y] * lightDelta[Y] + lightDelta[Z] * lightDelta[Z]); - - /* Determine the appropriate field of view. We want to use as narrow a - field of view as possible to not waste resolution, but not narrower than - the object. Add 50% extra slop. */ - fieldOfViewRatio = maxRadius / lightDistance; - if (fieldOfViewRatio > 0.99) { - fprintf(stderr, "WARNING: Clamping FOV to 164 degrees for determining shadow boundary.\n"); - fprintf(stderr, " Light distance = %g, object maxmium radius = %g\n", - lightDistance, maxRadius); - - /* 2*asin(0.99) ~= 164 degrees. */ - fieldOfViewRatio = 0.99; - } - /* Pre-compute scaling factors for the near and far extent of the shadow - volume. */ - svs->extentScale = svs->shadowProjectionDistance * fieldOfViewRatio / viewScale; - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - nnear = 0.5 * (lightDistance - maxRadius); - if (nnear < 0.0001) { - fprintf(stderr, "WARNING: Clamping near clip plane to 0.0001 because light source too near.\n"); - fprintf(stderr, " Light distance = %g, object maxmium radius = %g\n", - lightDistance, maxRadius); - nnear = 0.0001; - } - ffar = 2.0 * (lightDistance + maxRadius); - if (eyePos) { - eyeDelta[X] = eyePos[X] - lightPos[X]; - eyeDelta[Y] = eyePos[Y] - lightPos[Y]; - eyeDelta[Z] = eyePos[Z] - lightPos[Z]; - eyeDistance = 1.05 * sqrt(eyeDelta[X] * eyeDelta[X] + eyeDelta[Y] * eyeDelta[Y] + eyeDelta[Z] * eyeDelta[Z]); - if (eyeDistance > ffar) { - ffar = eyeDistance; - } - } - fieldOfViewAngle = 2.0 * asin(fieldOfViewRatio) * 180 / M_PI; - gluPerspective(fieldOfViewAngle, 1.0, nnear, ffar); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - /* XXX Need to update "up vector". Degenerate when light directly above or - below the object. */ - gluLookAt(lightPos[X], lightPos[Y], lightPos[Z], - objectPos[X], objectPos[Y], objectPos[Z], - 0.0, 1.0, 0.0); /* up is in positive Y direction */ - - glPushAttrib(GL_VIEWPORT_BIT); - glViewport(-viewScale, -viewScale, 2 * viewScale, 2 * viewScale); - -doFeedback: - - /* XXX Careful, some systems still don't understand realloc of NULL. */ - if (bufferSize < feedbackBufferSizeGuess) { - bufferSize = feedbackBufferSizeGuess; - /* XXX Add 32 words of slop (an extra cache line) to end for buggy - hardware that uses DMA to return feedback results but that sometimes - overrun the buffer. Yuck. */ - feedbackBuffer = realloc(feedbackBuffer, bufferSize * sizeof(GLfloat) + 32 * 4); - } - glFeedbackBuffer(bufferSize, GL_2D, feedbackBuffer); - - (void) glRenderMode(GL_FEEDBACK); - - (*renderFunc) (); - - /* Render the eye position. The eye position is "bracketed" by unique pass - through tokens. These bracketing pass through tokens let us determine - if the eye position was clipped or not. This helps us determine whether - the eye position is possibly within the shadow volume or not. If the - point is clipped, the eye position is not in the shadow volume. If the - point is not clipped, a more complicated test is necessary to determine - if the eye position is really in the shadow volume or not. See - processFeedback. */ - if (eyePos) { - glPassThrough(uniquePassThroughValue); - glBegin(GL_POINTS); - glVertex3fv(eyePos); - glEnd(); - glPassThrough(uniquePassThroughValue); - } - returned = glRenderMode(GL_RENDER); -#if 0 - if (returned == -1) { -#else - /* XXX RealityEngine workaround. */ - if (returned == -1 || returned == feedbackBufferSizeGuess) { -#endif - feedbackBufferSizeGuess = feedbackBufferSizeGuess + (feedbackBufferSizeGuess >> 1); - goto doFeedback; /* Try again with larger feedback buffer. */ - } - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopAttrib(); /* Restore viewport. */ - - if (renderBoundary) { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-viewScale, viewScale, -viewScale, viewScale); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - processFeedback(returned, feedbackBuffer, svs); - } else { - glNewList(DL_BASE_SHADOW_VOLUME, GL_COMPILE); - vcross(unit, lightDelta, axis); - angle = acos(vdot(unit, lightDelta) / lightDistance) * 180.0 / M_PI; - glRotatef(angle, axis[X], axis[Y], axis[Z]); - processFeedback(returned, feedbackBuffer, svs); - glEndList(); - - glNewList(DL_SHADOW_VOLUME, GL_COMPILE); - glPushMatrix(); - glTranslatef(lightPos[X], lightPos[Y], lightPos[Z]); - glCallList(DL_BASE_SHADOW_VOLUME); - glPopMatrix(); - glEndList(); - - glNewList(DL_SHADOW_VOLUME_TOP, GL_COMPILE); - glPushMatrix(); - glTranslatef(lightPos[X], lightPos[Y], lightPos[Z]); - topScale = (lightDistance + maxRadius) / svs->shadowProjectionDistance; - glScalef(topScale, topScale, topScale); - glCallList(DL_BASE_SHADOW_VOLUME); - glPopMatrix(); - glEndList(); - } - return returned; -} - -GLfloat objectMaxRadius[] = -{ - 8.0 + 2.0, /* M_TORUS */ - 12.0 / 2.0 * 1.142, /* M_CUBE */ - 8.0, /* M_SPHERE */ - 8.0, /* M_ICO */ - 8.0 + 2.0, /* M_DOUBLE_TORUS */ -}; - -void -renderShadowingObject(void) -{ - static int torusList = 0, cubeList = 0, sphereList = 0, icoList = 0; - - glPushMatrix(); - glTranslatef(objectPos[X], objectPos[Y], objectPos[Z]); - glRotatef(angle, 1.0, 0.3, 0.0); - switch (shape) { - case M_TORUS: - if (torusList) { - glCallList(torusList); - } else { - torusList = DL_TORUS; - glNewList(torusList, GL_COMPILE_AND_EXECUTE); - glutSolidTorus(2.0, 8.0, 8, 15); - glEndList(); - } - break; - case M_CUBE: - if (cubeList) { - glCallList(cubeList); - } else { - cubeList = DL_CUBE; - glNewList(cubeList, GL_COMPILE_AND_EXECUTE); - glutSolidCube(12.0); - glEndList(); - } - break; - case M_SPHERE: - if (sphereList) { - glCallList(sphereList); - } else { - sphereList = DL_SPHERE; - glNewList(sphereList, GL_COMPILE_AND_EXECUTE); - glutSolidSphere(8.0, 10, 10); - glEndList(); - } - break; - case M_ICO: - if (icoList) { - glCallList(icoList); - } else { - icoList = DL_ICO; - glNewList(icoList, GL_COMPILE_AND_EXECUTE); - glEnable(GL_NORMALIZE); - glPushMatrix(); - glScalef(8.0, 8.0, 8.0); - glutSolidIcosahedron(); - glPopMatrix(); - glDisable(GL_NORMALIZE); - glEndList(); - } - break; - case M_DOUBLE_TORUS: - if (torusList) { - glCallList(torusList); - } else { - torusList = DL_TORUS; - glNewList(torusList, GL_COMPILE_AND_EXECUTE); - glutSolidTorus(2.0, 8.0, 8, 15); - glEndList(); - } - glRotatef(90, 0, 1, 0); - glCallList(torusList); - break; - } - glPopMatrix(); -} - -void -sphere(void) -{ - glPushMatrix(); - glTranslatef(60.0, -50.0, -400.0); - glCallList(DL_BALL); - glPopMatrix(); -} - -void -cone(void) -{ - glPushMatrix(); - glTranslatef(-40.0, -40.0, -400.0); - glCallList(DL_CONE); - glPopMatrix(); -} - -void -scene(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = - {1.0, 1.0, 1.0, 1.0}; - static GLfloat shad_mat[] = - {1.0, 0.1, 0.1, 1.0}; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (view == M_LIGHT_SOURCE_VIEW) { - gluPerspective(45.0, 1.0, 0.5, 600.0); - } else { - gluPerspective(33.0, 1.0, 10.0, 600.0); - } - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - if (view == M_LIGHT_SOURCE_VIEW) { - gluLookAt(lightPos[X], lightPos[Y], lightPos[Z], - objectPos[X], objectPos[Y], objectPos[Z], - 0.0, 1.0, 0.); /* up is in positive Y direction */ - } else { - gluLookAt(0.0, 0.0, 0.0, - 0.0, 0.0, -100.0, - 0.0, 1.0, 0.); /* up is in positive Y direction */ - } - /* Place light 0 in the right place. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - - /* Note: wall verticies are ordered so they are all front facing this lets - me do back face culling to speed things up. */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* Floor with checkerboard texture. */ - glEnable(GL_TEXTURE_2D); - - glColor3f(0, 0, 0); - - /* Since we want to turn texturing on for floor only, we have to make floor - a separate glBegin()/glEnd() sequence. You can't turn texturing on and - off between begin and end calls */ - glBegin(GL_QUADS); - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2i(0, 0); - glVertex3f(-100.0, -100.0, -320.0); - glTexCoord2i(4, 0); - glVertex3f(100.0, -100.0, -320.0); - glTexCoord2i(4, 4); - glVertex3f(100.0, -100.0, -520.0); - glTexCoord2i(0, 4); - glVertex3f(-100.0, -100.0, -520.0); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* Walls. */ - - glBegin(GL_QUADS); - /* Left wall. */ - glNormal3f(1.0, 0.0, 0.0); - glVertex3f(-100.0, -100.0, -320.0); - glVertex3f(-100.0, -100.0, -520.0); - glVertex3f(-100.0, 100.0, -520.0); - glVertex3f(-100.0, 100.0, -320.0); - - /* Right wall. */ - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(100.0, -100.0, -320.0); - glVertex3f(100.0, 100.0, -320.0); - glVertex3f(100.0, 100.0, -520.0); - glVertex3f(100.0, -100.0, -520.0); - - /* Ceiling. */ - glNormal3f(0.0, -1.0, 0.0); - glVertex3f(-100.0, 100.0, -320.0); - glVertex3f(-100.0, 100.0, -520.0); - glVertex3f(100.0, 100.0, -520.0); - glVertex3f(100.0, 100.0, -320.0); - - /* Back wall. */ - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(-100.0, -100.0, -520.0); - glVertex3f(100.0, -100.0, -520.0); - glVertex3f(100.0, 100.0, -520.0); - glVertex3f(-100.0, 100.0, -520.0); - glEnd(); - - cone(); - - sphere(); - - glPushMatrix(); - glTranslatef(lightPos[X], lightPos[Y], lightPos[Z]); - glCallList(DL_LIGHT); - glPopMatrix(); - - /* Draw shadowing object. */ - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, shad_mat); - - renderShadowingObject(); -} - -void -generateShadowVolume(void) -{ - GLfloat *eyePos; - - if (view == M_LIGHT_SOURCE_VIEW) { - eyePos = lightPos; - } else { - eyePos = sceneEyePos; - } - /* XXX The 2048 feedbackBufferGuessSize is large enough to - workaround the Octane/Impact bug where if the feedback - buffer is under 2048 entries, a buggy hardware feedback - path is used. 2048 forces the (bug free) software path. - This bug is fixed in IRIX 6.5. */ - svsGenerateShadowVolume(svs, renderShadowingObject, 2048, maxRadius, - lightPos, objectPos, eyePos); -} - -void -display(void) -{ - if (renderBoundary) { - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - generateShadowVolume(); - glEnable(GL_LIGHTING); - } else { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - switch (renderMode) { - case M_NO_SHADOW: - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - scene(); - break; - case M_NO_LIGHT: - /* Render scene without the light source enabled (conceptually, the - entire scene is "in the shadow"). */ - glEnable(GL_DEPTH_TEST); - glDisable(GL_LIGHT0); - scene(); - break; - case M_FRONT_VOLUME: - case M_BACK_VOLUME: - generateShadowVolume(); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - scene(); - if (frontFace) { - glFrontFace(GL_CW); - } else { - glFrontFace(GL_CCW); - } - glCallList(DL_SHADOW_VOLUME); - glFrontFace(GL_CCW); - break; - case M_SHADOW: - /* Construct DL_SHADOW_VOLUME display list for the scene's current - shadow volume. */ - generateShadowVolume(); - - /* 1st scene pass. */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - scene(); - - /* 1st shadow volume pass: Enable stencil to increment the stencil - value of pixels that pass the depth test when drawing the front - facing polygons of the shadow volume. Do not update the depth - buffer while rendering the shadow volume. */ - glDisable(GL_LIGHTING); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glEnable(GL_STENCIL_TEST); - glDepthMask(GL_FALSE); - glStencilFunc(GL_ALWAYS, 0, 0); - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - glCullFace(GL_FRONT); - glCallList(DL_SHADOW_VOLUME); - - /* 2nd shadow volume pass: Now, draw the back facing polygons of the - shadow volume except decrement pixels that pass the depth test. - Again, do not update the depth buffer. */ - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - glCullFace(GL_BACK); - glCallList(DL_SHADOW_VOLUME); - - glDisable(GL_CULL_FACE); - glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); - glCallList(DL_SHADOW_VOLUME_TOP); - glEnable(GL_CULL_FACE); - - /* Now, pixels that lie within the shadow volume are tagged with a one - stencil value. Empty shadowed regions of the shadow volume get - incremented, then decremented, to resolve to a net zero stencil - value. */ - - /* 2nd scene pass (render shadowed region): Re-enable update of the - depth and color buffer (use GL_LEQUAL for depth buffer so we can - over-write depth values again with color. Switch back to backface - culling and disable the light source. Only update pixels with a - stencil value of one (shadowed). */ - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); -#if 0 - glDepthFunc(GL_EQUAL); -#else - glDepthMask(GL_TRUE); - glDepthFunc(GL_LEQUAL); -#endif - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glStencilFunc(GL_EQUAL, 1, 1); - glDisable(GL_LIGHT0); - glEnable(GL_LIGHTING); - scene(); - - /* Put state back to sane modes. */ - glDepthMask(GL_TRUE); - glDepthFunc(GL_LESS); - glDisable(GL_STENCIL_TEST); - break; - } - } - glutSwapBuffers(); -} - -void -idle(void) -{ - if (rotatingObject) { - angle += 10.0; - } - if (swingingLight) { - swingTime += 0.05; - lightPos[X] += 2 * cos(swingTime); - } - glutPostRedisplay(); -} - -void -menu(int value) -{ - switch (value) { - case M_TORUS: - case M_CUBE: - case M_SPHERE: - case M_ICO: - case M_DOUBLE_TORUS: - shape = value; - maxRadius = objectMaxRadius[value]; - glutPostRedisplay(); - break; - case M_ANGLE: - angle += 10.0; - glutPostRedisplay(); - break; - case M_BOUNDARY: - renderBoundary = 1; - glutPostRedisplay(); - break; - case M_FRONT_VOLUME: - case M_BACK_VOLUME: - frontFace = (value == M_FRONT_VOLUME); - /* FALLTHROUGH */ - case M_NO_SHADOW: - case M_NO_LIGHT: - case M_SHADOW: - renderBoundary = 0; - renderMode = value; - glutPostRedisplay(); - break; - case M_LIGHT_SOURCE_VIEW: - case M_NORMAL_VIEW: - view = value; - glutPostRedisplay(); - break; - case M_STOP: - swingingLight = 0; - rotatingObject = 0; - glutIdleFunc(NULL); - break; - case M_SPIN: - rotatingObject = 1; - glutIdleFunc(idle); - break; - case M_SWING: - swingingLight = 1; - glutIdleFunc(idle); - break; - case 666: - svsFreeShadowVolumeState(svs); - exit(0); - /* NOTREACHED */ - break; - } -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE && swingingLight && rotatingObject) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } -} - -/* ARGSUSED1 */ -void -key(unsigned char c, int x, int y) -{ - switch (c) { - case 27: /* Escape. */ - svsFreeShadowVolumeState(svs); - exit(0); - break; - case 13: /* Return. */ - swingingLight = !swingingLight; - swingTime = M_PI / 2.0; - break; - case ' ': /* Space. */ - if (rotatingObject || swingingLight) { - rotatingObject = 0; - swingingLight = 0; - glutIdleFunc(NULL); - } else { - rotatingObject = 1; - swingingLight = 1; - glutIdleFunc(idle); - } - break; - } -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_HOME: - frontFace = !frontFace; - glutPostRedisplay(); - break; - case GLUT_KEY_UP: - lightPos[Y] += 10.0; - glutPostRedisplay(); - break; - case GLUT_KEY_DOWN: - lightPos[Y] -= 10.0; - glutPostRedisplay(); - break; - case GLUT_KEY_PAGE_UP: - lightPos[Z] += 10.0; - glutPostRedisplay(); - break; - case GLUT_KEY_PAGE_DOWN: - lightPos[Z] -= 10.0; - glutPostRedisplay(); - break; - case GLUT_KEY_RIGHT: - lightPos[X] += 10.0; - glutPostRedisplay(); - break; - case GLUT_KEY_LEFT: - lightPos[X] -= 10.0; - glutPostRedisplay(); - break; - } -} - -/* Create a single component checkboard texture map. */ -GLfloat * -makeTexture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -void -initScene(void) -{ - GLfloat *tex; - GLUquadricObj *qobj; - static GLfloat sphere_mat[] = - {1.0, 0.5, 0.0, 1.0}; - static GLfloat cone_mat[] = - {0.0, 0.5, 1.0, 1.0}; - - /* Turn on features. */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_CULL_FACE); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - /* Make display lists for sphere and cone; for efficiency. */ - - qobj = gluNewQuadric(); - - glNewList(DL_BALL, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qobj, 20.0, 20, 20); - glEndList(); - - glNewList(DL_CONE, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - glRotatef(-90.0, 1.0, 0.0, 0.0); - gluDisk(qobj, 0.0, 20.0, 20, 1); - gluCylinder(qobj, 20.0, 0.0, 60.0, 20, 20); - glEndList(); - - glNewList(DL_LIGHT, GL_COMPILE); - glDisable(GL_LIGHTING); - glColor3f(0.9, 0.9, 0.6); - gluSphere(qobj, 5.0, 20, 20); - glEnable(GL_LIGHTING); - glEndList(); - - gluDeleteQuadric(qobj); - - /* load pattern for current 2d texture */ - tex = makeTexture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); -} - -int -main(int argc, char **argv) -{ - int shapeMenu, viewMenu, actionMenu, renderModeMenu; - - svs = svsCreateShadowVolumeState(1000.0, NULL); - - glutInitDisplayString("stencil>=1 rgb double depth samples"); - glutInit(&argc, argv); - - glutCreateWindow("shadowfun"); - - stencilBits = glutGet(GLUT_WINDOW_STENCIL_SIZE); - printf("bits of stencil = %d\n", stencilBits); - - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glutSpecialFunc(special); - glutKeyboardFunc(key); - - initScene(); - - shapeMenu = glutCreateMenu(menu); - glutAddMenuEntry("Torus", M_TORUS); - glutAddMenuEntry("Cube", M_CUBE); - glutAddMenuEntry("Sphere", M_SPHERE); - glutAddMenuEntry("Icosahedron", M_ICO); - glutAddMenuEntry("Double Torus", M_DOUBLE_TORUS); - - viewMenu = glutCreateMenu(menu); - glutAddMenuEntry("Normal view", M_NORMAL_VIEW); - glutAddMenuEntry("Light source view", M_LIGHT_SOURCE_VIEW); - - renderModeMenu = glutCreateMenu(menu); - glutAddMenuEntry("With shadow", M_SHADOW); - glutAddMenuEntry("With front shadow volume", M_FRONT_VOLUME); - glutAddMenuEntry("With back shadow volume", M_BACK_VOLUME); - glutAddMenuEntry("Without shadow", M_NO_SHADOW); - glutAddMenuEntry("Without light", M_NO_LIGHT); - glutAddMenuEntry("2D shadow boundary", M_BOUNDARY); - - actionMenu = glutCreateMenu(menu); - glutAddMenuEntry("Spin object", M_SPIN); - glutAddMenuEntry("Swing light", M_SWING); - glutAddMenuEntry("Stop", M_STOP); - - glutCreateMenu(menu); - glutAddSubMenu("Object shape", shapeMenu); - glutAddSubMenu("Viewpoint", viewMenu); - glutAddSubMenu("Render mode", renderModeMenu); - glutAddSubMenu("Action", actionMenu); - glutAddMenuEntry("Step rotate", M_ANGLE); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - menu(M_DOUBLE_TORUS); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -#else -int main(int argc, char** argv) -{ - fprintf(stderr, "This program requires the new tesselator API in GLU 1.2.\n"); - fprintf(stderr, "Your GLU library does not support this new interface, sorry.\n"); - return 0; -} -#endif /* GLU_VERSION_1_2 */ diff --git a/lib/glut-3.7.6/progs/advanced/shadowfun.dsp b/lib/glut-3.7.6/progs/advanced/shadowfun.dsp deleted file mode 100644 index 5721465d59cba153f367442b838883d11110651f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/shadowfun.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="shadowfun" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=shadowfun - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "shadowfun.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "shadowfun.mak" CFG="shadowfun - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "shadowfun - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "shadowfun - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "shadowfun - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "shadowfun - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "shadowfun - Win32 Release" -# Name "shadowfun - Win32 Debug" -# Begin Source File - -SOURCE=.\shadowfun.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/shadowmap.c b/lib/glut-3.7.6/progs/advanced/shadowmap.c deleted file mode 100644 index 3255d30d1b90b0cb957e838d1884a699e6ff896d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/shadowmap.c +++ /dev/null @@ -1,447 +0,0 @@ - -/* shadowmap.c - by Tom McReynolds, SGI */ - -/* Shadows: Shadow volumes. */ - -#include -#include -#include -#include - -/* This program demonstrates shadows on IR using single pass projective - texture method. 1. Render the scene with light position as the viewpoint - and save the depth-map into texture image. 2. Use texgen to generate - texture co-ordinates which are identical to vertex co-ordinates. The - texture matrix then transforms each pixel coods back to light co-ods. The - 'z' or the depth-value is now available in the 'r' texture co-ordinate. - - 3. Render the normal scene enabling texgen and shadow texture comparison. - Left mouse button: controls rotation of the scene - - Right mouse button: controls light (and shadow position) */ - -#define SCENE 10 -enum { - M_NORMAL, M_SHADOW, M_PROJTEX, M_LIGHT -}; - -GLfloat rotv[] = -{0.0, 0.0, 0.0}; /* rotation vector for scene */ -GLfloat rotl[] = -{0.0, 0.0, 0.0}; /* rotation vector for light */ -GLfloat lv[] = -{10.0, 10.0, 10.0, 1.0}; /* default light position */ - -GLfloat perspective_mat[16], modelview_mat[16], temp[16]; -int width = 512, height = 512; -int mouse_button, mouse_state; -static int do_light = 0; -static int do_proj = 0; /* Use projective textures instead of shadows */ -/* are shadow extensions supported? */ -GLboolean shadows_supported = GL_FALSE; -GLboolean ambient_shadows = GL_FALSE; -GLboolean depth_texture = GL_FALSE; - -static void generate_shadow_map(void); - -static void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - width = w; - height = h; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, (GLfloat) w / (GLfloat) h, 2.0, 30.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 15, - 0, 0, 0, - 0, 1, 0); -} - -/* ARGSUSED1 */ -static void -key(unsigned char key, int x, int y) -{ - switch (key) { - case '\033': - exit(0); - } -} - -/* ARGSUSED2 */ -static void -mouse(int button, int state, int x, int y) -{ - mouse_button = button; - mouse_state = state; -} - -static void -motion(int x, int y) -{ - if (mouse_state == GLUT_UP) - return; - - switch (mouse_button) { - case GLUT_LEFT_BUTTON: - rotv[1] = 180.0 * x / 400.0 - 90.0; - rotv[0] = 180.0 * y / 400.0 - 90.0; - break; - case GLUT_MIDDLE_BUTTON: - rotl[0] = 180.0 * x / 400.0 - 90.0; - rotl[1] = 180.0 * y / 400.0 - 90.0; - break; - } - glutPostRedisplay(); -} - -static void -display(void) -{ - /* Render the scene with the light source as the viewpoint and save the - depth values in the texture map. */ - generate_shadow_map(); - - /* Now render the normal scene using projective textures to get the depth - value from the light's point of view into the r-cood of the texture. */ - glEnable(GL_TEXTURE_2D); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glGetFloatv(GL_PROJECTION_MATRIX, perspective_mat); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glTranslatef(0.5, 0.5, 0.4994); - glScalef(0.5, 0.5, 0.5); - glMultMatrixf(perspective_mat); - glMultMatrixf(modelview_mat); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - glRotatef(rotv[0], 1, 0, 0); - glRotatef(rotv[1], 0, 1, 0); - glRotatef(rotv[2], 0, 0, 1); - glCallList(SCENE); - - glPopMatrix(); - glutSwapBuffers(); -} - -static void -render_normal_view(void) -{ - glDisable(GL_TEXTURE_2D); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - gluLookAt(0, 0, 15, - 0, 0, 0, - 0, 1, 0); - glRotatef(rotv[0], 1, 0, 0); - glRotatef(rotv[1], 0, 1, 0); - glRotatef(rotv[2], 0, 0, 1); - glCallList(SCENE); - - glPopMatrix(); - glutSwapBuffers(); -} - -static void -render_light_view(void) -{ - glDisable(GL_TEXTURE_2D); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - gluLookAt(lv[0], lv[1], lv[2], - 0, 0, 0, - 0, 1, 0); - glRotatef(rotl[0], 1, 0, 0); - glRotatef(rotl[1], 0, 1, 0); - glRotatef(rotl[2], 0, 0, 1); - glGetFloatv(GL_MODELVIEW_MATRIX, modelview_mat); - - glCallList(SCENE); - glPopMatrix(); - if (do_light) - glutSwapBuffers(); -} - -static void -generate_shadow_map(void) -{ - int x, y; - GLfloat log2 = log(2.0); - - x = 1 << ((int) (log((float) width) / log2)); - y = 1 << ((int) (log((float) height) / log2)); - glViewport(0, 0, x, y); - render_light_view(); - - /* Read in frame-buffer into a depth texture map */ -#if defined(GL_EXT_subtexture) && defined(GL_EXT_copy_texture) -#ifdef GL_SGIX_depth_texture - if (do_proj && depth_texture) -#endif - glCopyTexImage2DEXT(GL_TEXTURE_2D, 0, GL_RGBA, - 0, 0, x, y, 0); -#ifdef GL_SGIX_depth_texture - else - glCopyTexImage2DEXT(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16_SGIX, - 0, 0, x, y, 0); -#endif -#endif - glViewport(0, 0, width, height); -} - -static void -menu(int mode) -{ - switch (mode) { - case M_NORMAL: - do_light = 0; - do_proj = 0; -#ifdef GL_SGIX_shadow - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_SGIX, GL_FALSE); -#endif - glutDisplayFunc(render_normal_view); - break; - case M_SHADOW: -#ifdef GL_SGIX_shadow - do_light = 0; - do_proj = 0; - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_SGIX, GL_TRUE); - glutDisplayFunc(display); -#endif - break; - case M_PROJTEX: - do_light = 0; - do_proj = 1; -#ifdef GL_SGIX_shadow - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_SGIX, GL_FALSE); -#endif - glutDisplayFunc(display); - break; - case M_LIGHT: - do_light = 1; - if (do_light) - glutDisplayFunc(render_light_view); - else - glutDisplayFunc(display); - break; - } - glutPostRedisplay(); -} - -#define XFORM(cmds) \ - glMatrixMode(GL_TEXTURE); \ - cmds; \ - glMatrixMode(GL_MODELVIEW); \ - cmds - -static void -create_scene(void) -{ - GLfloat floor_col[] = - {0.7, 0.7, 0.7}; - GLfloat floor_norm[] = - {0.0, 0.0, 1.0}; - GLfloat floor_verts[4][3] = - { - {4.0, 4.0, 0.0}, - {-4.0, 4.0, 0.0}, - {-4.0, -4.0, 0.0}, - {4.0, -4.0, 0.0}}; - GLfloat sphere_col[] = - {0.7, 0.1, 0.2}; - GLfloat box_col[] = - {0.1, 0.2, 0.7}; - GLfloat box_verts[6][4][3] = - { - { - {1.0, -1.0, -1.0}, - {-1.0, -1.0, -1.0}, - {-1.0, 1.0, -1.0}, - {1.0, 1.0, -1.0}}, - { - {1.0, -1.0, 1.0}, - {1.0, -1.0, -1.0}, - {1.0, 1.0, -1.0}, - {1.0, 1.0, 1.0}}, - { - {-1.0, -1.0, 1.0}, - {1.0, -1.0, 1.0}, - {1.0, 1.0, 1.0}, - {-1.0, 1.0, 1.0}}, - { - {-1.0, -1.0, -1.0}, - {-1.0, -1.0, 1.0}, - {-1.0, 1.0, 1.0}, - {-1.0, 1.0, -1.0}}, - { - {1.0, 1.0, 1.0}, - {1.0, 1.0, -1.0}, - {-1.0, 1.0, -1.0}, - {-1.0, 1.0, 1.0}}, - { - {1.0, -1.0, -1.0}, - {1.0, -1.0, 1.0}, - {-1.0, -1.0, 1.0}, - {-1.0, -1.0, -1.0}}}; - GLfloat box_norm[6][3] = - { - {0, 0, -1}, - {1, 0, 0}, - {0, 0, 1}, - {-1, 0, 0}, - {0, 1, 0}, - {0, -1, 0}}; - GLUquadricObj *q; - int i; - - glNewList(SCENE, GL_COMPILE); - - glBegin(GL_QUADS); /* draw the floor */ - glNormal3fv(floor_norm); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, floor_col); - for (i = 0; i < 4; i++) - glVertex3fv(floor_verts[i]); - glEnd(); - - q = gluNewQuadric(); - XFORM(glPushMatrix(); - glTranslatef(1.0, 1.0, 1.01)); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_col); - gluSphere(q, 1.0, 40, 40); - XFORM(glPopMatrix()); - - XFORM(glPushMatrix(); - glTranslatef(-1.0, -1.0, 1.01)); - for (i = 0; i < 6; i++) { - glBegin(GL_QUADS); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, box_col); - glNormal3fv(box_norm[i]); - glVertex3fv(box_verts[i][0]); - glVertex3fv(box_verts[i][1]); - glVertex3fv(box_verts[i][2]); - glVertex3fv(box_verts[i][3]); - glEnd(); - } - XFORM(glPopMatrix()); - glEndList(); -} - -static void -init(void) -{ - GLfloat ambient[] = - {0.1, 0.1, 0.1, 1.0}; - GLfloat diffuse[] = - {0.8, 0.7, 0.8, 1.0}; - GLfloat specular[] = - {0.5, 0.6, 0.8, 1.0}; - GLfloat p[4]; - - create_scene(); - glClearColor(0.0, 0.0, 0.0, 1.0); - glClearDepth(1.0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_POLYGON_SMOOTH); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_SPECULAR, specular); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, lv); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - if (shadows_supported) { -#ifdef GL_SGIX_shadow_ambient - if (ambient_shadows) - glTexParameterf(GL_TEXTURE_2D, GL_SHADOW_AMBIENT_SGIX, 0.6); -#endif -#ifdef GL_SGIX_shadow - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_SGIX, GL_TRUE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_OPERATOR_SGIX, - GL_TEXTURE_LEQUAL_R_SGIX); -#endif - } - /* Enable texgen to get texture-coods (x, y, z, w) at every point.These - texture co-ordinates are then transformed by the texture matrix. */ - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - - p[0] = 1.0; - p[1] = p[2] = p[3] = 0.0; - glTexGenfv(GL_S, GL_OBJECT_PLANE, p); - - p[0] = 0.0; - p[1] = 1.0; - p[2] = p[3] = 0.0; - glTexGenfv(GL_T, GL_OBJECT_PLANE, p); - - p[0] = p[1] = 0.0; - p[2] = 1.0, p[3] = 0.0; - glTexGenfv(GL_R, GL_OBJECT_PLANE, p); - - p[0] = p[1] = p[2] = 0.0; - p[3] = 1.0; - glTexGenfv(GL_Q, GL_OBJECT_PLANE, p); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - glEnable(GL_TEXTURE_GEN_Q); -} - -int -main(int argc, char *argv[]) -{ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); - glutInitWindowSize(width, height); - glutCreateWindow("Shadow Map"); - - if (glutExtensionSupported("GL_SGIX_shadow") && - glutExtensionSupported("GL_EXT_subtexture") && - glutExtensionSupported("GL_EXT_copy_texture")) { - shadows_supported = GL_TRUE; - ambient_shadows = glutExtensionSupported("GL_SGIX_shadow_ambient"); - depth_texture = glutExtensionSupported("GL_SGIX_depth_texture"); - } else { - fprintf(stderr, "shadowmap: uses several OpenGL extensions to operate fully:\n"); - fprintf(stderr, " GL_SGIX_shadow\n"); - fprintf(stderr, " GL_SGIX_shadow_ambient\n"); - fprintf(stderr, " GL_SGIS_depth_texture\n"); - fprintf(stderr, " GL_EXT_subtexture\n"); - fprintf(stderr, " GL_EXT_copy_texture\n"); - } - - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMotionFunc(motion); - glutMouseFunc(mouse); - glutKeyboardFunc(key); - glutCreateMenu(menu); - glutAddMenuEntry("Normal view", M_NORMAL); - glutAddMenuEntry("Light view", M_LIGHT); - glutAddMenuEntry("Projective textures", M_PROJTEX); - if (shadows_supported) - glutAddMenuEntry("Shadows", M_SHADOW); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/shadowmap.dsp b/lib/glut-3.7.6/progs/advanced/shadowmap.dsp deleted file mode 100644 index 904a49afacd642242d0af1ff283321361fb56c8d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/shadowmap.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="shadowmap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=shadowmap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "shadowmap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "shadowmap.mak" CFG="shadowmap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "shadowmap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "shadowmap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "shadowmap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "shadowmap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "shadowmap - Win32 Release" -# Name "shadowmap - Win32 Debug" -# Begin Source File - -SOURCE=.\shadowmap.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/shadowvol.c b/lib/glut-3.7.6/progs/advanced/shadowvol.c deleted file mode 100644 index e4c0c44c037310d437f9b37c815fc46b1f5a60d5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/shadowvol.c +++ /dev/null @@ -1,373 +0,0 @@ - -/* shadowvol.c - by Tom McReynolds, SGI */ - -/* Shadows: Shadow maps */ - -#include -#include - -/* Demonstrate shadow volumes */ - -/* Create a single component texture map */ -GLfloat * -make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum { - SPHERE = 1, CONE, LIGHT, SHADOWVOL -}; - -typedef struct { - GLfloat *verticies; - GLfloat *normal; - int n; /* number of verticies */ -} ShadObj; - -GLfloat shadVerts[] = -{30.f, 30.f, -350.f, - 60.f, 20.f, -340.f, - 40.f, 40.f, -400.f}; - -GLfloat shadNormal[] = -{1.f, 1.f, 1.f}; -ShadObj shadower; - -enum { - X, Y, Z -}; - -/* simple way to extend a point to build shadow volume */ -void -extend(GLfloat new[3], GLfloat light[3], GLfloat vertex[3], GLfloat t) -{ - GLfloat delta[3]; - - delta[X] = vertex[X] - light[X]; - delta[Y] = vertex[Y] - light[Y]; - delta[Z] = vertex[Z] - light[Z]; - - new[X] = light[X] + delta[X] * t; - new[Y] = light[Y] + delta[Y] * t; - new[Z] = light[Z] + delta[Z] * t; -} - -/* Create a shadow volume in a display list */ -/* XXX light should have 4 compoents */ -void -makeShadowVolume(ShadObj * shadower, GLfloat light[3], - GLfloat t, GLint dlist) -{ - int i; - GLfloat newv[3]; - - glNewList(dlist, GL_COMPILE); - glDisable(GL_LIGHTING); - glBegin(GL_QUADS); - /* for debugging */ - glColor3f(.2f, .8f, .4f); - for (i = 0; i < shadower->n; i++) { - glVertex3fv(&shadower->verticies[i * 3]); - extend(newv, light, &shadower->verticies[i * 3], t); - glVertex3fv(newv); - extend(newv, light, &shadower->verticies[((i + 1) % shadower->n) * 3], - t); - glVertex3fv(newv); - glVertex3fv(&shadower->verticies[((i + 1) % shadower->n) * 3]); - } - glEnd(); - glEnable(GL_LIGHTING); - glEndList(); -} - -void -sphere(void) -{ - glPushMatrix(); - glTranslatef(60.f, -50.f, -360.f); - glCallList(SPHERE); - glPopMatrix(); -} - -void -cone(void) -{ - glPushMatrix(); - glTranslatef(-40.f, -40.f, -400.f); - glCallList(CONE); - glPopMatrix(); - -} - -enum { - NONE, NOLIGHT, VOLUME, SHADOW -}; - -int rendermode = NONE; - -void -menu(int mode) -{ - rendermode = mode; - glutPostRedisplay(); -} - -GLfloat leftwallshadow[4][4]; -GLfloat floorshadow[4][4]; - -GLfloat lightpos[] = -{50.f, 50.f, -340.f, 1.f}; - -/* render while jittering the shadows */ -void -render(ShadObj * obj) -{ - static GLfloat shad_mat[] = - {1.f, .1f, .1f, 1.f}; - GLfloat *v; /* vertex pointer */ - int i; - - /* material properties for objects in scene */ - static GLfloat wall_mat[] = - {1.f, 1.f, 1.f, 1.f}; - - /* Note: wall verticies are ordered so they are all front facing this lets - me do back face culling to speed things up. */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* Since we want to turn texturing on for floor only, we have to make floor - a separate glBegin()/glEnd() sequence. You can't turn texturing on and - off between begin and end calls */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f(100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f(100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f(100.f, -100.f, -320.f); - glVertex3f(100.f, 100.f, -320.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - cone(); - - sphere(); - - glCallList(LIGHT); - - /* draw shadowing object */ - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, shad_mat); - glBegin(GL_POLYGON); - glNormal3fv(obj->normal); - for (v = obj->verticies, i = 0; i < obj->n; i++) { - glVertex3fv(v); - v += 3; - } - glEnd(); - -} - -void -redraw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - switch (rendermode) { - case NONE: - render(&shadower); - break; - case NOLIGHT: - glDisable(GL_LIGHT0); - render(&shadower); - glEnable(GL_LIGHT0); - break; - case VOLUME: - render(&shadower); - glCallList(SHADOWVOL); - break; - case SHADOW: - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - render(&shadower); /* render scene in depth buffer */ - - glEnable(GL_STENCIL_TEST); - glDepthMask(GL_FALSE); - glStencilFunc(GL_ALWAYS, 0, 0); - - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); - glCullFace(GL_BACK); /* increment using front face of shadow volume */ - glCallList(SHADOWVOL); - - glStencilOp(GL_KEEP, GL_KEEP, GL_DECR); - glCullFace(GL_FRONT); /* increment using front face of shadow volume */ - glCallList(SHADOWVOL); - - glDepthMask(GL_TRUE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glCullFace(GL_BACK); - glDepthFunc(GL_LEQUAL); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - glStencilFunc(GL_EQUAL, 1, 1); /* draw shadowed part */ - glDisable(GL_LIGHT0); - render(&shadower); - - glStencilFunc(GL_EQUAL, 0, 1); /* draw lit part */ - glEnable(GL_LIGHT0); - render(&shadower); - - glDepthFunc(GL_LESS); - glDisable(GL_STENCIL_TEST); - break; - } - - glutSwapBuffers(); /* high end machines may need this */ -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - if (key == '\033') - exit(0); -} - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - GLUquadricObj *sphere, *cone, *base; - static GLfloat sphere_mat[] = - {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL | GLUT_DOUBLE); - (void) glutCreateWindow("shadow volumes"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("No Shadows", NONE); - glutAddMenuEntry("No Light", NOLIGHT); - glutAddMenuEntry("Show Volume", VOLUME); - glutAddMenuEntry("Shadows", SHADOW); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-100., 100., -100., 100., 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_CULL_FACE); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - /* make display lists for sphere and cone; for efficiency */ - - glNewList(SPHERE, GL_COMPILE); - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - glRotatef(-90.f, 1.f, 0.f, 0.f); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glNewList(LIGHT, GL_COMPILE); - sphere = gluNewQuadric(); - glPushMatrix(); - glTranslatef(lightpos[X], lightpos[Y], lightpos[Z]); - glDisable(GL_LIGHTING); - glColor3f(.9f, .9f, .6f); - gluSphere(sphere, 5.f, 20, 20); - glEnable(GL_LIGHTING); - glPopMatrix(); - gluDeleteQuadric(sphere); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - shadower.verticies = shadVerts; - shadower.normal = shadNormal; - shadower.n = sizeof(shadVerts) / (3 * sizeof(GLfloat)); - - makeShadowVolume(&shadower, lightpos, 10.f, SHADOWVOL); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/shadowvol.dsp b/lib/glut-3.7.6/progs/advanced/shadowvol.dsp deleted file mode 100644 index 160d81e537f35f74bbbac74fd03f43d6223c2607..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/shadowvol.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="shadowvol" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=shadowvol - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "shadowvol.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "shadowvol.mak" CFG="shadowvol - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "shadowvol - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "shadowvol - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "shadowvol - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "shadowvol - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "shadowvol - Win32 Release" -# Name "shadowvol - Win32 Debug" -# Begin Source File - -SOURCE=.\shadowvol.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/silhouette.c b/lib/glut-3.7.6/progs/advanced/silhouette.c deleted file mode 100644 index 8e5f2088370f4aa8900602b1836c8a1313489007..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/silhouette.c +++ /dev/null @@ -1,248 +0,0 @@ - -/* silhouette.c - by Tom McReynolds, SGI */ - -/* Doing Silhouette Edges with stencil */ - -#include -#include -#include - -enum { - CONE = 1 -}; - -/* Draw a cone */ -void -cone(void) -{ - glPushMatrix(); - glTranslatef(0.f, 0.f, -30.f); - glCallList(CONE); - glPopMatrix(); -} - -/* Draw a torus */ -void -torus(void) -{ - glutSolidTorus(10., 20., 20, 20); -} - -enum { - SIL, OBJ, SIL_AND_OBJ, TOGGLE -}; - -int rendermode = OBJ; - -void (*curobj) (void) = cone; - -void -menu(int mode) -{ - switch (mode) { - case SIL: - case OBJ: - case SIL_AND_OBJ: - rendermode = mode; - break; - case TOGGLE: - if (curobj == cone) - curobj = torus; - else - curobj = cone; - break; - } - glutPostRedisplay(); -} - -int winWidth = 512; -int winHeight = 512; - -/* used to get current width and height of viewport */ -void -reshape(int wid, int ht) -{ - glViewport(0, 0, wid, ht); - winWidth = wid; - winHeight = ht; - glutPostRedisplay(); -} - -GLfloat viewangle; - -void -drawsilhouette(void) -{ - int i; - - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - glDisable(GL_DEPTH_TEST); /* so the depth buffer doesn't change */ - for (i = -1; i < 2; i += 2) { /* set stencil around object */ - glViewport(i, 0, winWidth + i, winHeight); - curobj(); - } - for (i = -1; i < 2; i += 2) { - glViewport(0, i, winWidth, winHeight + i); - curobj(); - } - - /* cut out stencil where object is */ - glViewport(0, 0, winWidth, winHeight); - glStencilFunc(GL_ALWAYS, 0, 0); - curobj(); - - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - - glStencilFunc(GL_EQUAL, 1, 1); - - glDisable(GL_LIGHTING); - glColor3f(1.f, 0.f, 0.f); /* draw silhouette red */ - glRotatef(-viewangle, 0.f, 1.f, 0.f); - glRecti(-50, -50, 50, 50); - glRotatef(viewangle, 0.f, 1.f, 0.f); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glDisable(GL_STENCIL_TEST); -} - -void -redraw(void) -{ - /* clear stencil each time */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - glPushMatrix(); - glRotatef(viewangle, 0.f, 1.f, 0.f); - - switch (rendermode) { - case SIL: - drawsilhouette(); - break; - case SIL_AND_OBJ: - drawsilhouette(); - curobj(); - break; - case OBJ: - curobj(); - break; - } - - glPopMatrix(); - glutSwapBuffers(); -} - -/* animate scene by rotating */ -enum { - ANIM_LEFT, ANIM_RIGHT -}; -int animDirection = ANIM_LEFT; - -void -anim(void) -{ - if (animDirection == ANIM_LEFT) - viewangle -= 1.f; - else - viewangle += 1.f; - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -/* special keys, like array and F keys */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - glutIdleFunc(anim); - animDirection = ANIM_LEFT; - break; - case GLUT_KEY_RIGHT: - glutIdleFunc(anim); - animDirection = ANIM_RIGHT; - break; - case GLUT_KEY_UP: - case GLUT_KEY_DOWN: - glutIdleFunc(0); - break; - } -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'a': - viewangle -= 10.f; - glutPostRedisplay(); - break; - case 's': - viewangle += 10.f; - glutPostRedisplay(); - break; - case '\033': - exit(0); - } -} - -int picked_object; -int xpos = 0, ypos = 0; -int newxpos, newypos; -int startx, starty; - -int -main(int argc, char **argv) -{ - static GLfloat lightpos[] = - {25.f, 50.f, -50.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_STENCIL | GLUT_DEPTH | GLUT_DOUBLE); - (void) glutCreateWindow("silhouette edges"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - - glutCreateMenu(menu); - glutAddMenuEntry("Object", OBJ); - glutAddMenuEntry("Silhouette Only", SIL); - glutAddMenuEntry("Object and Silhouette", SIL_AND_OBJ); - glutAddMenuEntry("Toggle Object", TOGGLE); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - - /* make display list for cone; for efficiency */ - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(base, GLU_INSIDE); - gluDisk(base, 0., 15., 32, 1); - gluCylinder(cone, 15., 0., 60., 32, 32); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glMatrixMode(GL_PROJECTION); - glOrtho(-50., 50., -50., 50., -50., 50.); - glMatrixMode(GL_MODELVIEW); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/silhouette.dsp b/lib/glut-3.7.6/progs/advanced/silhouette.dsp deleted file mode 100644 index 9ad7ee1b93e8917f226f7aec9095161d0a146b2b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/silhouette.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="silhouette" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=silhouette - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "silhouette.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "silhouette.mak" CFG="silhouette - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "silhouette - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "silhouette - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "silhouette - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "silhouette - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "silhouette - Win32 Release" -# Name "silhouette - Win32 Debug" -# Begin Source File - -SOURCE=.\silhouette.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/softshadow.c b/lib/glut-3.7.6/progs/advanced/softshadow.c deleted file mode 100644 index 0dbd651fb466c667de7ec52579696439356f28ab..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/softshadow.c +++ /dev/null @@ -1,405 +0,0 @@ - -/* softshadow.c - by Tom McReynolds, SGI */ - -/* Using the accumulation buffer for soft shadows. */ - -#include -#include - -/* Demonstrate the use of accumulation buffer to create soft shadows */ - -/* Create a single component texture map */ -GLfloat * -make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum { - SPHERE = 1, CONE, LIGHT, LEFTWALL, FLOOR -}; - -/* create a matrix that will project the desired shadow */ -void -shadowmatrix(GLfloat shadowMat[4][4], - GLfloat groundplane[4], - GLfloat lightpos[4]) -{ - GLfloat dot; - - /* find dot product between light position vector and ground plane normal */ - dot = groundplane[0] * lightpos[0] + - groundplane[1] * lightpos[1] + - groundplane[2] * lightpos[2] + - groundplane[3] * lightpos[3]; - - shadowMat[0][0] = dot - lightpos[0] * groundplane[0]; - shadowMat[1][0] = 0.f - lightpos[0] * groundplane[1]; - shadowMat[2][0] = 0.f - lightpos[0] * groundplane[2]; - shadowMat[3][0] = 0.f - lightpos[0] * groundplane[3]; - - shadowMat[0][1] = 0.f - lightpos[1] * groundplane[0]; - shadowMat[1][1] = dot - lightpos[1] * groundplane[1]; - shadowMat[2][1] = 0.f - lightpos[1] * groundplane[2]; - shadowMat[3][1] = 0.f - lightpos[1] * groundplane[3]; - - shadowMat[0][2] = 0.f - lightpos[2] * groundplane[0]; - shadowMat[1][2] = 0.f - lightpos[2] * groundplane[1]; - shadowMat[2][2] = dot - lightpos[2] * groundplane[2]; - shadowMat[3][2] = 0.f - lightpos[2] * groundplane[3]; - - shadowMat[0][3] = 0.f - lightpos[3] * groundplane[0]; - shadowMat[1][3] = 0.f - lightpos[3] * groundplane[1]; - shadowMat[2][3] = 0.f - lightpos[3] * groundplane[2]; - shadowMat[3][3] = dot - lightpos[3] * groundplane[3]; - -} - -enum { - X, Y, Z -}; -enum { - A, B, C, D -}; - -/* find the plane equation given 3 points */ -void -findplane(GLfloat plane[4], - GLfloat v0[3], GLfloat v1[3], GLfloat v2[3]) -{ - GLfloat vec0[3], vec1[3]; - - /* need 2 vectors to find cross product */ - vec0[X] = v1[X] - v0[X]; - vec0[Y] = v1[Y] - v0[Y]; - vec0[Z] = v1[Z] - v0[Z]; - - vec1[X] = v2[X] - v0[X]; - vec1[Y] = v2[Y] - v0[Y]; - vec1[Z] = v2[Z] - v0[Z]; - - /* find cross product to get A, B, and C of plane equation */ - plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y]; - plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]); - plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X]; - - plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]); -} - -void -sphere(void) -{ - glPushMatrix(); - glTranslatef(60.f, -50.f, -360.f); - glCallList(SPHERE); - glPopMatrix(); -} - -void -cone(void) -{ - glPushMatrix(); - glTranslatef(-40.f, -40.f, -400.f); - glCallList(CONE); - glPopMatrix(); - -} - -enum { - NONE, SHADOW -}; - -int rendermode = NONE; - -void -menu(int mode) -{ - rendermode = mode; - glutPostRedisplay(); -} - -GLfloat leftwallshadow[4][4]; -GLfloat floorshadow[4][4]; - -GLfloat lightpos[] = -{50.f, 50.f, -320.f, 1.f}; - -/* render while jittering the shadows */ -void -render(GLfloat dx, GLfloat dy, GLfloat dz) -{ - - /* material properties for objects in scene */ - static GLfloat wall_mat[] = - {1.f, 1.f, 1.f, 1.f}; - static GLfloat sphere_mat[] = - {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - /* Note: wall verticies are ordered so they are all front facing this lets - me do back face culling to speed things up. */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* Since we want to turn texturing on for floor only, we have to make floor - a separate glBegin()/glEnd() sequence. You can't turn texturing on and - off between begin and end calls */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f(100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f(100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - if (rendermode == SHADOW) { - - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glColor3f(0.f, 0.f, 0.f); /* shadow color */ - - glPushMatrix(); - glMultMatrixf((GLfloat *) floorshadow); - glTranslatef(dx, dy, dz); - cone(); - glPopMatrix(); - - glPushMatrix(); - glMultMatrixf((GLfloat *) floorshadow); - glTranslatef(dx, dy, dz); - sphere(); - glPopMatrix(); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - } - /* walls */ - - if (rendermode == SHADOW) { - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 1, 0); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - } - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - glEnd(); - - if (rendermode == SHADOW) { - glStencilFunc(GL_EQUAL, 1, 1); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glColor3f(0.f, 0.f, 0.f); /* shadow color */ - glDisable(GL_DEPTH_TEST); - glPushMatrix(); - glMultMatrixf((GLfloat *) leftwallshadow); - glTranslatef(dx, dy, dz); - cone(); - glPopMatrix(); - glEnable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - } - glBegin(GL_QUADS); - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f(100.f, -100.f, -320.f); - glVertex3f(100.f, 100.f, -320.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glPushMatrix(); - glTranslatef(lightpos[X], lightpos[Y], lightpos[Z]); - glDisable(GL_LIGHTING); - glColor3f(1.f, 1.f, .7f); - glCallList(LIGHT); - glEnable(GL_LIGHTING); - glPopMatrix(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - cone(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - sphere(); - -} - -void -redraw(void) -{ - int dx, dy, dz; - - dy = 0; - /* jitter the light around */ - if (rendermode == SHADOW) { - glClear(GL_ACCUM_BUFFER_BIT); - for (dz = -4; dz < 5; dz += 2) { - for (dx = -4; dx < 5; dx += 2) { - render((GLfloat) dx, (GLfloat) dy, (GLfloat) dz); - glAccum(GL_ACCUM, 1.f / 25); - } - } - glAccum(GL_RETURN, 1.f); - } else - render(0.f, 0.f, 0.f); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - if (key == '\033') - exit(0); -} - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - GLUquadricObj *sphere, *cone, *base; - GLfloat plane[4]; - GLfloat v0[3], v1[3], v2[3]; - - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL | GLUT_DOUBLE | GLUT_ACCUM); - (void) glutCreateWindow("soft shadows"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("No Shadows", NONE); - glutAddMenuEntry("Shadows", SHADOW); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-100., 100., -100., 100., 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* make shadow matricies */ - - /* 3 points on floor */ - v0[X] = -100.f; - v0[Y] = -100.f; - v0[Z] = -320.f; - v1[X] = 100.f; - v1[Y] = -100.f; - v1[Z] = -320.f; - v2[X] = 100.f; - v2[Y] = -100.f; - v2[Z] = -520.f; - - findplane(plane, v0, v1, v2); - shadowmatrix(floorshadow, plane, lightpos); - - /* 3 points on left wall */ - v0[X] = -100.f; - v0[Y] = -100.f; - v0[Z] = -320.f; - v1[X] = -100.f; - v1[Y] = -100.f; - v1[Z] = -520.f; - v2[X] = -100.f; - v2[Y] = 100.f; - v2[Z] = -520.f; - - findplane(plane, v0, v1, v2); - shadowmatrix(leftwallshadow, plane, lightpos); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - /* make display lists for sphere and cone; for efficiency */ - - glNewList(SPHERE, GL_COMPILE); - sphere = gluNewQuadric(); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(LIGHT, GL_COMPILE); - sphere = gluNewQuadric(); - gluSphere(sphere, 5.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - glNewList(FLOOR, GL_COMPILE); - glEndList(); - - glNewList(LEFTWALL, GL_COMPILE); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/softshadow.dsp b/lib/glut-3.7.6/progs/advanced/softshadow.dsp deleted file mode 100644 index e107cf310ae4fab20ce930700a08c8dc662333d7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/softshadow.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="softshadow" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=softshadow - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "softshadow.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "softshadow.mak" CFG="softshadow - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "softshadow - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "softshadow - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "softshadow - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "softshadow - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "softshadow - Win32 Release" -# Name "softshadow - Win32 Debug" -# Begin Source File - -SOURCE=.\softshadow.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/sphere.c b/lib/glut-3.7.6/progs/advanced/sphere.c deleted file mode 100644 index b02271c41eef353a332bd4b4a01b43fba67bde78..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/sphere.c +++ /dev/null @@ -1,187 +0,0 @@ - -/* sphere.c - by David Blythe, SGI */ - -/* Instead of tessellating a sphere by lines of longitude and latitude - (a technique that over tessellates the poles and under tessellates - the equator of the sphere), tesselate based on regular solids for a - more uniform tesselation. - - This approach is arguably better than the gluSphere routine's - approach using slices and stacks (latitude and longitude). -mjk */ - -#include -#include -#include - -typedef struct { - float x, y, z; -} point; - -typedef struct { - point pt[3]; -} triangle; - -/* six equidistant points lying on the unit sphere */ -#define XPLUS { 1, 0, 0 } /* X */ -#define XMIN { -1, 0, 0 } /* -X */ -#define YPLUS { 0, 1, 0 } /* Y */ -#define YMIN { 0, -1, 0 } /* -Y */ -#define ZPLUS { 0, 0, 1 } /* Z */ -#define ZMIN { 0, 0, -1 } /* -Z */ - -/* for icosahedron */ -#define CZ (0.89442719099991) /* 2/sqrt(5) */ -#define SZ (0.44721359549995) /* 1/sqrt(5) */ -#define C1 (0.951056516) /* cos(18), */ -#define S1 (0.309016994) /* sin(18) */ -#define C2 (0.587785252) /* cos(54), */ -#define S2 (0.809016994) /* sin(54) */ -#define X1 (C1*CZ) -#define Y1 (S1*CZ) -#define X2 (C2*CZ) -#define Y2 (S2*CZ) - -#define Ip0 {0., 0., 1.} -#define Ip1 {-X2, -Y2, SZ} -#define Ip2 {X2, -Y2, SZ} -#define Ip3 {X1, Y1, SZ} -#define Ip4 {0, CZ, SZ} -#define Ip5 {-X1, Y1, SZ} - -#define Im0 {-X1, -Y1, -SZ} -#define Im1 {0, -CZ, -SZ} -#define Im2 {X1, -Y1, -SZ} -#define Im3 {X2, Y2, -SZ} -#define Im4 {-X2, Y2, -SZ} -#define Im5 {0., 0., -1.} - -/* vertices of a unit icosahedron */ -static triangle icosahedron[20]= { - /* front pole */ - { {Ip0, Ip1, Ip2}, }, - { {Ip0, Ip5, Ip1}, }, - { {Ip0, Ip4, Ip5}, }, - { {Ip0, Ip3, Ip4}, }, - { {Ip0, Ip2, Ip3}, }, - - /* mid */ - { {Ip1, Im0, Im1}, }, - { {Im0, Ip1, Ip5}, }, - { {Ip5, Im4, Im0}, }, - { {Im4, Ip5, Ip4}, }, - { {Ip4, Im3, Im4}, }, - { {Im3, Ip4, Ip3}, }, - { {Ip3, Im2, Im3}, }, - { {Im2, Ip3, Ip2}, }, - { {Ip2, Im1, Im2}, }, - { {Im1, Ip2, Ip1}, }, - - /* back pole */ - { {Im3, Im2, Im5}, }, - { {Im4, Im3, Im5}, }, - { {Im0, Im4, Im5}, }, - { {Im1, Im0, Im5}, }, - { {Im2, Im1, Im5}, }, -}; - -/* normalize point r */ -static void -normalize(point *r) { - float mag; - - mag = r->x * r->x + r->y * r->y + r->z * r->z; - if (mag != 0.0f) { - mag = 1.0f / sqrt(mag); - r->x *= mag; - r->y *= mag; - r->z *= mag; - } -} - -/* linearly interpolate between a & b, by fraction f */ -static void -lerp(point *a, point *b, float f, point *r) { - r->x = a->x + f*(b->x-a->x); - r->y = a->y + f*(b->y-a->y); - r->z = a->z + f*(b->z-a->z); -} - -void -sphere(int maxlevel) { - int nrows = 1 << maxlevel; - int s; - - /* iterate over the 20 sides of the icosahedron */ - for(s = 0; s < 20; s++) { - int i; - triangle *t = &icosahedron[s]; - for(i = 0; i < nrows; i++) { - /* create a tstrip for each row */ - /* number of triangles in this row is number in previous +2 */ - /* strip the ith trapezoid block */ - point v0, v1, v2, v3, va, vb; - int j; - lerp(&t->pt[1], &t->pt[0], (float)(i+1)/nrows, &v0); - lerp(&t->pt[1], &t->pt[0], (float)i/nrows, &v1); - lerp(&t->pt[1], &t->pt[2], (float)(i+1)/nrows, &v2); - lerp(&t->pt[1], &t->pt[2], (float)i/nrows, &v3); - glBegin(GL_TRIANGLE_STRIP); -#define V(v) { point x; x = v; normalize(&x); glNormal3fv(&x.x); glVertex3fv(&x.x); } - V(v0); - V(v1); - for(j = 0; j < i; j++) { - /* calculate 2 more vertices at a time */ - lerp(&v0, &v2, (float)(j+1)/(i+1), &va); - lerp(&v1, &v3, (float)(j+1)/i, &vb); - V(va); - V(vb); - } - V(v2); -#undef V - glEnd(); - } - } -} - -float * -sphere_tris(int maxlevel) { - int nrows = 1 << maxlevel; - int s, n; - float *buf, *b; - - n = 20*(1 << (maxlevel * 2)); - b = buf = (float *)malloc(n*3*3*sizeof(float)); - - /* iterate over the 20 sides of the icosahedron */ - for(s = 0; s < 20; s++) { - int i; - triangle *t = &icosahedron[s]; - for(i = 0; i < nrows; i++) { - /* create a tstrip for each row */ - /* number of triangles in this row is number in previous +2 */ - /* strip the ith trapezoid block */ - point v0, v1, v2, v3, va, vb, x1, x2; - int j; - lerp(&t->pt[1], &t->pt[0], (float)(i+1)/nrows, &v0); - lerp(&t->pt[1], &t->pt[0], (float)i/nrows, &v1); - lerp(&t->pt[1], &t->pt[2], (float)(i+1)/nrows, &v2); - lerp(&t->pt[1], &t->pt[2], (float)i/nrows, &v3); -#define V(a, c, v) { point x = v; normalize(&a); normalize(&c); normalize(&x); \ - b[0] = a.x; b[1] = a.y; b[2] = a.z; \ - b[3] = c.x; b[4] = c.y; b[5] = c.z; \ - b[6] = x.x; b[7] = x.y; b[8] = x.z; b+=9; } - x1 = v0; - x2 = v1; - for(j = 0; j < i; j++) { - /* calculate 2 more vertices at a time */ - lerp(&v0, &v2, (float)(j+1)/(i+1), &va); - lerp(&v1, &v3, (float)(j+1)/i, &vb); - V(x1,x2,va); x1 = x2; x2 = va; - V(vb,x2,x1); x1 = x2; x2 = vb; - } - V(x1, x2, v2); -#undef V - } - } - return buf; -} diff --git a/lib/glut-3.7.6/progs/advanced/tess.c b/lib/glut-3.7.6/progs/advanced/tess.c deleted file mode 100644 index 8cb504c4d91202b4f4554d26735712fe42c9b539..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/tess.c +++ /dev/null @@ -1,206 +0,0 @@ - -/* tess.c - by David Blythe, SGI */ - -#include -#include -#include - -static GLfloat spin = 0; -static int level = 4; -static int model = 0; -static GLfloat rotx, roty; -static int ox = -1, oy = -1; -static int mot; -#define PAN 1 -#define ROT 2 - -void -movelight(int x, int y) { - spin += (y-oy); - ox = x; oy = y; - if (spin > 360.) spin -= 360.; - if (spin < -360.) spin -= -360.; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) movelight(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void togglewire(void) { - static int toggle = 0; - toggle ^= 1; - glPolygonMode(GL_FRONT_AND_BACK, toggle ? GL_LINE : GL_FILL); -} - -void genmodel(void) { - extern void sphere(int level); - - glNewList(1, GL_COMPILE); - if (model) { - GLUquadricObj *q = gluNewQuadric(); - - gluSphere(q, 1.0, 10*level, 10*level); - gluDeleteQuadric(q); - } else { - sphere(level-1); - } - glEndList(); -} - -void togglemodel(void) { - model ^= 1; - genmodel(); -} - -void levelup(void) { - level += 1; - if (level > 7) level = 7; - genmodel(); -} - -void leveldown(void) { - level -= 1; - if (level <= 0) level = 1; - genmodel(); -} - -void help(void) { - printf("'h' - help\n"); - printf("'t' - tessellation style\n"); - printf("'UP' - increase tessellation\n"); - printf("'DOWN' - decrease tessellation\n"); - printf("left mouse - rotate sphere\n"); - printf("middle mouse - move light\n"); -} - -void init(void) { - GLfloat specular[4] = { 1., 1., 1., 1. }; - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - genmodel(); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 30); -} - -void display(void) { - GLfloat position[] = { 0.0, 0.0, 3.5, 1.0 }; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glTranslatef(0.0, 0.0, -5.0); - - glPushMatrix(); - glRotatef(spin, 1.0, 0.0, 0.0); - glRotatef(0.0, 1.0, 0.0, 0.0); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glPopMatrix(); - - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glCallList(1); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 't': togglemodel(); break; - case 'w': togglewire(); break; - case 'h': help(); break; - case '\033': exit(0); - default: break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: levelup(); break; - case GLUT_KEY_DOWN: leveldown(); break; - } - glutPostRedisplay(); -} - -void -menu(int value) -{ - if(value<0) - special(-value,0,0); - else - key((unsigned char) value,0,0); -} - -int main(int argc, char** argv) { - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow("Quality of sphere tesselation"); - init(); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(menu); - glutAddMenuEntry("Toggle sphere model", 't'); - glutAddMenuEntry("Toggle solid/wireframe", 'w'); - glutAddMenuEntry("Increase tessellation", -GLUT_KEY_UP); - glutAddMenuEntry("Decrease tessellation", -GLUT_KEY_DOWN); - glutAddMenuEntry("Print help message", 'h'); - glutAddMenuEntry("Quit", '\033'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/tess.dsp b/lib/glut-3.7.6/progs/advanced/tess.dsp deleted file mode 100644 index 1daf5a7044b3f9e37f4abb10623496cbcd2a7c0c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/tess.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tess" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tess - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tess.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tess.mak" CFG="tess - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tess - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tess - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tess - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tess - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tess - Win32 Release" -# Name "tess - Win32 Debug" -# Begin Source File - -SOURCE=.\sphere.c -# End Source File -# Begin Source File - -SOURCE=.\tess.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/textext.c b/lib/glut-3.7.6/progs/advanced/textext.c deleted file mode 100644 index 44f8f18f4835b21e28e3d28bfb12707548e14190..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textext.c +++ /dev/null @@ -1,186 +0,0 @@ - -/* textext.c - by David Blythe, SGI */ - -/* Example of using texturing for 3D transformable fonts. */ - -#include -#include -#include -#include -#include "texture.h" -#include "textmap.h" - -static float scale = .03; -static char *string = "OpenGL rules"; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) -{ - transx += (x - ox) / 500.; - transy -= (y - oy) / 500.; - ox = x; - oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) -{ - rotx += x - ox; - if (rotx > 360.) - rotx -= 360.; - else if (rotx < -360.) - rotx += 360.; - roty += y - oy; - if (roty > 360.) - roty -= 360.; - else if (roty < -360.) - roty += 360.; - ox = x; - oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - if (mot == PAN) - pan(x, y); - else if (mot == ROT) - rotate(x, y); -} - -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) { - switch (button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void -up(void) -{ - scale += .0025; -} - -void -down(void) -{ - scale -= .0025; -} - -void -help(void) -{ - printf("Usage: textext [string]\n"); - printf("'h' - help\n"); - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("left mouse - pan\n"); - printf("middle mouse - rotate\n"); -} - -void -init(void) -{ - texfntinit("Times-Italic.bw"); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90., 1., .1, 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0., 0., -1.5); -} - -void -display(void) -{ - float width = texstrwidth(string); - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glScalef(scale, scale, 0.); - glTranslatef(-width * 5, 0.f, 0.f); - texfntstroke(string, 0.f, 0.f); - glPopMatrix(); - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'h': - help(); - break; - case '\033': - exit(1); - break; - default: - break; - } -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_UP: - up(); - break; - case GLUT_KEY_DOWN: - down(); - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - if (argc > 1) - string = argv[1]; - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); - (void) glutCreateWindow("textext"); - init(); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/textext.dsp b/lib/glut-3.7.6/progs/advanced/textext.dsp deleted file mode 100644 index ff40e187d7c101ccc1e3a2de1c4f369063a2cbfd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textext.dsp +++ /dev/null @@ -1,104 +0,0 @@ -# Microsoft Developer Studio Project File - Name="textext" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=textext - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "textext.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "textext.mak" CFG="textext - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "textext - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "textext - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "textext - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "textext - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "textext - Win32 Release" -# Name "textext - Win32 Debug" -# Begin Source File - -SOURCE=.\textext.c -# End Source File -# Begin Source File - -SOURCE=.\textmap.c -# End Source File -# Begin Source File - -SOURCE=.\textmap.h -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/textile.c b/lib/glut-3.7.6/progs/advanced/textile.c deleted file mode 100644 index 272ebeff6eb6a22abeaa06fe02a580f3286c8fdf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textile.c +++ /dev/null @@ -1,427 +0,0 @@ - -/* textile.c - by David Blythe, SGI */ - -/* The idea behind texture tiling is that OpenGL's texture modes, - particularly its support for a texture border make it possible to "tile" - together small textures with a result identical to if a much larger - texture was supported. OpenGL allows implementations to limit the maximum - size of a texture image (often this limit reflects size limitations within - fast texturing hardware). Texture tiling lets you work around otherwise - limited texture image sizes. - - Try textile with tiling enabled and linear filtering enabled. As long as - you have texture borders enabled, you won't see any seams. If you disable - texture borders with linear filtering enabled, you'll get seams at the - boundaries of the tiles. The seams can be detected whether the texture - wrap mode is either clamped or wrapped. - - If you disable texture tiling in textile, textile acts as if your maximum - texture image size was 32x32 (no matter what your OpenGL implementation - really supports) to mimic how the image would look on a system with a very - limited texture image size. When the display window is large, the - textured rectangle should look very blurry at this limited texture image - size. -mjk */ - -#include -#include -#include -#include -#include -#include "texture.h" - -int maxTextureSize; -int maxTextureLevel; - -int imageWidth, imageHeight; -GLubyte *imageData; - -int texWidthLevel0, texHeightLevel0; -int texWidthTiles, texHeightTiles; -GLubyte **texImageLevel; - -GLboolean useBorder = GL_TRUE; -GLboolean useClamp = GL_TRUE; -GLboolean useLinear = GL_TRUE; -GLboolean useMipmap = GL_TRUE; -GLboolean useTextureTiling = GL_TRUE; - -/* (int)floor(log2(a)) */ -static int -iflog2(unsigned int a) -{ - int x = 0; - while (a >>= 1) - ++x; - return x; -} - -static void -initialize(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-0.5, 0.5, -0.5, 0.5, 0.5, 1.5); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -0.90); - glRotatef(45.0, 0, 1, 0); - glTranslatef(-0.5, -0.5, 0.0); - -#if 0 - /* A real program would query the real maximum supported texture size, but - program is an example. Even better would be to use OpenGL 1.1's texture - proxy mechanism. */ - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); -#else - /* Assume that the OpenGL implemenatation does not support anything larger - than 32x32 texture images. */ - maxTextureSize = 32; -#endif - maxTextureLevel = iflog2(maxTextureSize); - - texImageLevel = (GLubyte **) calloc(maxTextureLevel + 1, sizeof(GLubyte *)); - if (texImageLevel == NULL) { - fprintf(stderr, "texture level image allocation failed\n"); - exit(1); - } - glClearColor(0.1, 0.1, 0.1, 0.1); -} - -static void -imgLoad(char *filename_in, int *w_out, int *h_out, GLubyte ** img_out) -{ - int comp; - - *img_out = (GLubyte *) read_texture(filename_in, w_out, h_out, &comp); - if (*img_out == NULL) { - fprintf(stderr, "unable to read %s\n", filename_in); - exit(1); - } - if (comp != 3 && comp != 4) { - fprintf(stderr, "%s: image is not RGB or RGBA\n", filename_in); - exit(1); - } -} - -static void -buildMipmaps(void) -{ - int level, levelWidth, levelHeight; - - if (useTextureTiling) { - int width2 = iflog2(imageWidth); - int height2 = iflog2(imageHeight); - - width2 = (width2 > maxTextureLevel) ? width2 : maxTextureLevel; - height2 = (height2 > maxTextureLevel) ? height2 : maxTextureLevel; - - texWidthLevel0 = 1 << width2; - texHeightLevel0 = 1 << height2; - texWidthTiles = texWidthLevel0 >> maxTextureLevel; - texHeightTiles = texHeightLevel0 >> maxTextureLevel; - } else { - texWidthLevel0 = maxTextureSize; - texHeightLevel0 = maxTextureSize; - texWidthTiles = 1; - texHeightTiles = 1; - } - - texImageLevel[0] = (GLubyte *) - calloc(1, (texWidthLevel0 + 2) * (texHeightLevel0 + 2) * 4 * sizeof(GLubyte)); - - glPixelStorei(GL_PACK_ROW_LENGTH, texWidthLevel0 + 2); - glPixelStorei(GL_PACK_SKIP_PIXELS, 1); - glPixelStorei(GL_PACK_SKIP_ROWS, 1); - - gluScaleImage(GL_RGBA, imageWidth, imageHeight, - GL_UNSIGNED_BYTE, imageData, - texWidthLevel0, texHeightLevel0, - GL_UNSIGNED_BYTE, texImageLevel[0]); - - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 1); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 1); - - levelWidth = texWidthLevel0; - levelHeight = texHeightLevel0; - for (level = 0; level < maxTextureLevel; ++level) { - int newLevelWidth = (levelWidth > 1) ? levelWidth / 2 : 1; - int newLevelHeight = (levelHeight > 1) ? levelHeight / 2 : 1; - - texImageLevel[level + 1] = (GLubyte *) - calloc(1, (newLevelWidth + 2) * (newLevelHeight + 2) * 4 * sizeof(GLubyte)); - - glPixelStorei(GL_PACK_ROW_LENGTH, newLevelWidth + 2); - glPixelStorei(GL_UNPACK_ROW_LENGTH, levelWidth + 2); - - gluScaleImage(GL_RGBA, levelWidth, levelHeight, - GL_UNSIGNED_BYTE, texImageLevel[level], - newLevelWidth, newLevelHeight, - GL_UNSIGNED_BYTE, texImageLevel[level + 1]); - - levelWidth = newLevelWidth; - levelHeight = newLevelHeight; - } - - glPixelStorei(GL_PACK_ROW_LENGTH, 0); - glPixelStorei(GL_PACK_SKIP_PIXELS, 0); - glPixelStorei(GL_PACK_SKIP_ROWS, 0); - - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); -} - -static void -freeMipmaps(void) -{ - int i; - - for (i = 0; i <= maxTextureLevel; ++i) { - if (texImageLevel[i] != NULL) { - free(texImageLevel[i]); - texImageLevel[i] = NULL; - } - } -} - -static void -loadTile(int row, int col) -{ - int border = useBorder ? 1 : 0; - int level, levelWidth, levelHeight; - - levelWidth = texWidthLevel0; - levelHeight = texHeightLevel0; - for (level = 0; level <= maxTextureLevel; ++level) { - int tileWidth = levelWidth / texWidthTiles; - int tileHeight = levelHeight / texHeightTiles; - int skipPixels = col * tileWidth + (1 - border); - int skipRows = row * tileHeight + (1 - border); - - glPixelStorei(GL_UNPACK_ROW_LENGTH, levelWidth + 2); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, skipPixels); - glPixelStorei(GL_UNPACK_SKIP_ROWS, skipRows); - - glTexImage2D(GL_TEXTURE_2D, level, 4, - tileWidth + 2 * border, tileHeight + 2 * border, - border, GL_RGBA, GL_UNSIGNED_BYTE, texImageLevel[level]); - - if (levelWidth > 1) - levelWidth = levelWidth / 2; - if (levelHeight > 1) - levelHeight = levelHeight / 2; - } - - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); -} - -static void -redraw(void) -{ - GLenum minFilterMode, magFilterMode, wrapMode; - char *minFilterName, *magFilterName, *wrapName; - int i, j; - - if (useLinear) { - if (useMipmap) { - minFilterMode = GL_LINEAR_MIPMAP_LINEAR; - minFilterName = "LINEAR_MIPMAP_LINEAR"; - } else { - minFilterMode = GL_LINEAR; - minFilterName = "LINEAR"; - } - magFilterMode = GL_LINEAR; - magFilterName = "LINEAR"; - } else { - if (useMipmap) { - minFilterMode = GL_NEAREST_MIPMAP_LINEAR; - minFilterName = "NEAREST_MIPMAP_LINEAR"; - } else { - minFilterMode = GL_NEAREST; - minFilterName = "NEAREST"; - } - magFilterMode = GL_NEAREST; - magFilterName = "NEAREST"; - } - - if (useClamp) { - wrapMode = GL_CLAMP; - wrapName = "CLAMP"; - } else { - wrapMode = GL_REPEAT; - wrapName = "REPEAT"; - } - - fprintf(stderr, "tile(%s) ", useTextureTiling ? "yes" : "no"); - fprintf(stderr, "border(%s) ", useBorder ? "yes" : "no"); - fprintf(stderr, "filter(%s, %s) ", minFilterName, magFilterName); - fprintf(stderr, "wrap(%s) ", wrapName); - fprintf(stderr, "\n"); - - glClear(GL_COLOR_BUFFER_BIT); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilterMode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilterMode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapMode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapMode); - - buildMipmaps(); - - glEnable(GL_TEXTURE_2D); - - for (i = 0; i < texHeightTiles; ++i) { - float ySize = 1.0 / texHeightTiles; - float y0 = i * ySize; - float y1 = y0 + ySize; - - for (j = 0; j < texWidthTiles; ++j) { - float xSize = 1.0 / texWidthTiles; - float x0 = j * xSize; - float x1 = x0 + xSize; - - loadTile(i, j); - - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0.0, 1.0); - glVertex2f(x0, y1); - glTexCoord2f(0.0, 0.0); - glVertex2f(x0, y0); - glTexCoord2f(1.0, 1.0); - glVertex2f(x1, y1); - glTexCoord2f(1.0, 0.0); - glVertex2f(x1, y0); - glEnd(); - } - } - - glDisable(GL_TEXTURE_2D); - - freeMipmaps(); -} - -static void -usage(char *name) -{ - fprintf(stderr, "\n"); - fprintf(stderr, "usage: %s [ options ] filename\n", name); - fprintf(stderr, "\n"); - fprintf(stderr, " Demonstrates using texture borders\n"); - fprintf(stderr, " to tile a large texture\n"); - fprintf(stderr, "\n"); - fprintf(stderr, " Options:\n"); - fprintf(stderr, " -sb single buffered\n"); - fprintf(stderr, " -db double buffered\n"); - fprintf(stderr, "\n"); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case '\033': - exit(0); - break; - case 'b': - useBorder = !useBorder; - break; - case 'w': - useClamp = !useClamp; - break; - case 'l': - useLinear = !useLinear; - break; - case 'm': - useMipmap = !useMipmap; - break; - case 't': - useTextureTiling = !useTextureTiling; - break; - default: - return; - } - glutPostRedisplay(); -} - -void -menu(int value) -{ - key((unsigned char) value, 0, 0); -} - -int doubleBuffered = GL_FALSE; - -void -display(void) -{ - GLenum error; - redraw(); - if (doubleBuffered) - glutSwapBuffers(); - else - glFlush(); - while ((error = glGetError()) != GL_NO_ERROR) { - fprintf(stderr, "Error: %s\n", (char *) gluErrorString(error)); - } -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); -} - -int -main(int argc, char *argv[]) -{ - char *name = "Texture Tiling Test"; - int width = 300, height = 300; - char *filename = NULL; - int i; - - for (i = 1; i < argc; ++i) { - if (!strcmp("-sb", argv[i])) { - doubleBuffered = GL_FALSE; - - } else if (!strcmp("-db", argv[i])) { - doubleBuffered = GL_TRUE; - - } else if (argv[i][0] != '-' && i == argc - 1) { - filename = argv[i]; - - } else { - usage(argv[0]); - exit(1); - } - } - - if (filename == NULL) { - usage(argv[0]); - exit(1); - } - imgLoad(filename, &imageWidth, &imageHeight, &imageData); - - glutInitWindowSize(width, height); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA | (doubleBuffered ? GLUT_DOUBLE : 0)); - glutCreateWindow(name); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - initialize(); - glutCreateMenu(menu); - glutAddMenuEntry("Toggle texture tiling", 't'); - glutAddMenuEntry("Toggle clamping", 'w'); - glutAddMenuEntry("Toggle linear filtering", 'l'); - glutAddMenuEntry("Toggle mipmap usage", 'm'); - glutAddMenuEntry("Toggle texture border", 'b'); - glutAddMenuEntry("Quit", '\033'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/textile.dsp b/lib/glut-3.7.6/progs/advanced/textile.dsp deleted file mode 100644 index c00ee3e91f9d59efd4479dde26d06414761660fd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textile.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="textile" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=textile - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "textile.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "textile.mak" CFG="textile - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "textile - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "textile - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "textile - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "textile - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "textile - Win32 Release" -# Name "textile - Win32 Debug" -# Begin Source File - -SOURCE=.\textile.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/textmap.c b/lib/glut-3.7.6/progs/advanced/textmap.c deleted file mode 100644 index 2e2fd59481631a77fc72a61e3fc4a10df59d8b3b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textmap.c +++ /dev/null @@ -1,328 +0,0 @@ - -/* textmap.c - by David Blythe, SGI */ - -/* Helper routines used by textext.c for texture mapped fonts. */ - -#include -#include -#include -#include "textmap.h" -#include "texture.h" - -/* byte swap a 32-bit value */ -#define SWAPL(x, n) { \ - n = ((char *) (x))[0];\ - ((char *) (x))[0] = ((char *) (x))[3];\ - ((char *) (x))[3] = n;\ - n = ((char *) (x))[1];\ - ((char *) (x))[1] = ((char *) (x))[2];\ - ((char *) (x))[2] = n; } - -/* byte swap a short */ -#define SWAPS(x, n) { \ - n = ((char *) (x))[0];\ - ((char *) (x))[0] = ((char *) (x))[1];\ - ((char *) (x))[1] = n; } - -static texfnt *curtfnt; -static unsigned char *fb; -static unsigned char *gptr; - -/* get metric data into image */ -static void -initget(void) -{ - gptr = fb; -} - -static void -getbytes(void *pbuf, int n) -{ - char *buf = pbuf; - while (n--) { - *buf++ = *gptr++; - } -} - -static void -fixrow(unsigned short *sptr, int n) -{ - while (n--) { - /* *sptr = *sptr + (0xff<<8); */ - /* *sptr = (*sptr<<8) | 0xff; */ - sptr++; - } -} - -int -doSwap(void) -{ - int i = 0xffff0000; - char *cptr = (char*) &i; - - if (cptr[0] == 0) { - return 1; /* little endian (x86, alpha) */ - } else { - return 0; /* big endian (SGI, 68000, VAX, SPARC) */ - } -} - -texfnt * -readtexfont(char *name) -{ - texfnt *tfnt; - unsigned *image; - unsigned char *cptr; - unsigned short *sbuf, *sptr; - short advancecell, xadvance; - short llx, lly, urx, ury, ox, oy; - int i, y, extralines; - texchardesc *cd; - int xsize, ysize, components; - int swap = doSwap(); - int tmp; - - tfnt = (texfnt *) malloc(sizeof(texfnt)); - image = read_texture(name, &xsize, &ysize, &components); - if (!image) { - fprintf(stderr, "textmap: can't open font image %s\n", name); - return 0; - } - extralines = ysize - xsize; - if (extralines < 1) { - fprintf(stderr, "textmap: bad input font!!\n"); - return 0; - } - fb = (unsigned char *) malloc(xsize * extralines); - sbuf = (unsigned short *) malloc(xsize * sizeof(short)); - cptr = fb; - for (y = xsize; y < ysize; y++) { - int x; - for (x = 0; x < xsize; x++) - cptr[x] = image[y * xsize + x] >> 16; - cptr += xsize; - } - initget(); - tfnt->rasxsize = xsize; - tfnt->rasysize = xsize; - getbytes(&tfnt->charmin, sizeof(short)); - getbytes(&tfnt->charmax, sizeof(short)); - getbytes(&tfnt->pixhigh, sizeof(float)); - getbytes(&advancecell, sizeof(short)); - if (swap) { - SWAPS(&tfnt->charmin, tmp); - SWAPS(&tfnt->charmax, tmp); - SWAPL(&tfnt->pixhigh, tmp); - SWAPS(&advancecell, tmp); - } - tfnt->nchars = tfnt->charmax - tfnt->charmin + 1; - tfnt->chars = (texchardesc *) malloc(tfnt->nchars * sizeof(texchardesc)); - tfnt->rasdata = (unsigned short *) malloc(tfnt->rasxsize * tfnt->rasysize * sizeof(long)); - sptr = tfnt->rasdata; - for (y = 0; y < tfnt->rasysize; y++) { - int x; - for (x = 0; x < xsize; x++) - sptr[x] = image[y * xsize + x] >> 16; - fixrow(sptr, tfnt->rasxsize); - sptr += tfnt->rasxsize; - } - - cd = tfnt->chars; - for (i = 0; i < tfnt->nchars; i++) { - getbytes(&xadvance, sizeof(short)); - getbytes(&llx, sizeof(short)); - getbytes(&lly, sizeof(short)); - getbytes(&urx, sizeof(short)); - getbytes(&ury, sizeof(short)); - getbytes(&ox, sizeof(short)); - getbytes(&oy, sizeof(short)); - if (swap) { - SWAPS(&xadvance, tmp); - SWAPS(&llx, tmp); - SWAPS(&lly, tmp); - SWAPS(&urx, tmp); - SWAPS(&ury, tmp); - SWAPS(&ox, tmp); - SWAPS(&oy, tmp); - } - cd->movex = xadvance / (float) advancecell; - - if (llx >= 0) { - cd->haveimage = 1; - cd->llx = (llx - ox) / tfnt->pixhigh; - cd->lly = (lly - oy) / tfnt->pixhigh; - cd->urx = (urx - ox + 1) / tfnt->pixhigh; - cd->ury = (ury - oy + 1) / tfnt->pixhigh; - cd->tllx = llx / (float) tfnt->rasxsize; - cd->tlly = lly / (float) tfnt->rasysize; - cd->turx = (urx + 1) / (float) tfnt->rasxsize; - cd->tury = (ury + 1) / (float) tfnt->rasysize; - cd->data[0] = cd->tllx; - cd->data[1] = cd->tlly; - - cd->data[2] = cd->llx; - cd->data[3] = cd->lly; - - cd->data[4] = cd->turx; - cd->data[5] = cd->tlly; - - cd->data[6] = cd->urx; - cd->data[7] = cd->lly; - - cd->data[8] = cd->turx; - cd->data[9] = cd->tury; - - cd->data[10] = cd->urx; - cd->data[11] = cd->ury; - - cd->data[12] = cd->tllx; - cd->data[13] = cd->tury; - - cd->data[14] = cd->llx; - cd->data[15] = cd->ury; - - cd->data[16] = cd->llx; - cd->data[17] = cd->lly; - cd->data[18] = cd->urx; - cd->data[19] = cd->lly; - - cd->data[20] = cd->urx; - cd->data[21] = cd->ury; - cd->data[22] = cd->llx; - cd->data[23] = cd->ury; - - } else { - cd->haveimage = 0; - } - cd++; - } - free(fb); - free(sbuf); - free(image); - return tfnt; -} - -void -texfont(texfnt * tfnt) -{ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, 2, tfnt->rasxsize, tfnt->rasysize, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, tfnt->rasdata); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - curtfnt = tfnt; -} - -float -texstrwidth(char *str) -{ - unsigned int c; - unsigned int charmin, tnchars; - texfnt *tfnt; - texchardesc *cdbase, *cd; - float xpos; - - tfnt = curtfnt; - if (!tfnt) { - fprintf(stderr, "texstrwidth: no texfont set!!\n"); - return 0; - } - charmin = tfnt->charmin; - tnchars = tfnt->nchars; - cdbase = tfnt->chars; - xpos = 0.0; - while (*str) { - c = *str - charmin; - if (c < tnchars) { - cd = cdbase + c; - xpos += cd->movex; - } - str++; - } - return xpos; -} - -void -texcharstr(char *str) -{ - unsigned int c; - unsigned int charmin, tnchars; - texfnt *tfnt; - texchardesc *cdbase, *cd; - float *fdata, xpos; - - tfnt = curtfnt; - if (!tfnt) { - fprintf(stderr, "texcharstr: no texfont set!!\n"); - return; - } - charmin = tfnt->charmin; - tnchars = tfnt->nchars; - cdbase = tfnt->chars; - xpos = 0.0; -#if 0 - texbind(TX_TEXTURE_0, LETTER_INDEX); /* bind letter texture */ - tevbind(TV_ENV0, LETTER_INDEX); -#endif - while (*str) { - c = *str - charmin; - if (c < tnchars) { - cd = cdbase + c; - if (cd->haveimage) { - fdata = cd->data; - fdata[16] = fdata[2] + xpos; - fdata[18] = fdata[6] + xpos; - fdata[20] = fdata[10] + xpos; - fdata[22] = fdata[14] + xpos; - glBegin(GL_POLYGON); - glTexCoord2fv(&fdata[0]); - glVertex2fv(&fdata[16]); - glTexCoord2fv(&fdata[4]); - glVertex2fv(&fdata[18]); - glTexCoord2fv(&fdata[8]); - glVertex2fv(&fdata[20]); - glTexCoord2fv(&fdata[12]); - glVertex2fv(&fdata[22]); - glEnd(); - } - xpos += cd->movex; - } - str++; - } -} - -int -texfntinit(char *file) -{ - static int once = 0; - static texfnt *tfnt; - if (!once) { - tfnt = readtexfont(file); - if (!tfnt) { - fprintf(stderr, "texfntinit: can't open input font %s\n", file); - return -1; - } - texfont(tfnt); - once = 1; - } - return 0; -} - -float -texfntwidth(char *str) -{ - return texstrwidth(str) * 12.5 / 6.; -} - -void -texfntstroke(char *s, float xoffset, float yoffset) -{ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glPushMatrix(); - glTranslatef(xoffset, yoffset, 0.0); - glScalef(12.5, 12.5, 12.5); - texcharstr(s); - glPopMatrix(); - glDisable(GL_BLEND); -} diff --git a/lib/glut-3.7.6/progs/advanced/textmap.h b/lib/glut-3.7.6/progs/advanced/textmap.h deleted file mode 100644 index 8e9c0055e41b444614c5115c8d6ac24a8899fd3b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textmap.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef TEXTMAPDEF -#define TEXTMAPDEF - -#define LETTER_INDEX 1 - -typedef struct texchardesc { - float movex; /* advance */ - int haveimage; - float llx, lly; /* geometry box */ - float urx, ury; - float tllx, tlly; /* texture box */ - float turx, tury; - float data[3 * 8]; -} texchardesc; - -typedef struct texfnt { - short charmin, charmax; - short nchars; - float pixhigh; - texchardesc *chars; - short rasxsize, rasysize; - unsigned short *rasdata; -} texfnt; - -texfnt *readtexfont(char *name); -float texstrwidth(char *str); -int texfntinit(char *file); -void texfntstroke(char *s, float xoffset, float yoffset); - -#endif diff --git a/lib/glut-3.7.6/progs/advanced/textrim.c b/lib/glut-3.7.6/progs/advanced/textrim.c deleted file mode 100644 index 10cc3b835921251350358800ad0d9348cd1927c6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textrim.c +++ /dev/null @@ -1,285 +0,0 @@ - -/* textrim.c - by David Blythe, SGI */ - -/* Trimming textures: demonstrates how alpha blending or alpha testing - can be used to "trim" the shape of textures to arbitrary shapes. - Alpha testing is generally cheaper than alpha blending, but - blending permits antialiased edges. */ - -/* Try: "textrim tree.rgb" where tree.rgb is a SGI .rgb file including - an alpha component. */ - -#include -#include -#include -#include -#include "texture.h" - -static float scale = 1.4; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) -{ - transx += (x - ox) / 500.; - transy -= (y - oy) / 500.; - ox = x; - oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) -{ - rotx += x - ox; - if (rotx > 360.) - rotx -= 360.; - else if (rotx < -360.) - rotx += 360.; - roty += y - oy; - if (roty > 360.) - roty -= 360.; - else if (roty < -360.) - roty += 360.; - ox = x; - oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - if (mot == PAN) - pan(x, y); - else if (mot == ROT) - rotate(x, y); -} - -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) { - switch (button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void -afunc(void) -{ - static int state; - if (state ^= 1) { - glAlphaFunc(GL_GREATER, .01); - glEnable(GL_ALPHA_TEST); - } else { - glDisable(GL_ALPHA_TEST); - } -} - -void -bfunc(void) -{ - static int state; - if (state ^= 1) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } else { - glDisable(GL_BLEND); - } -} - -void -up(void) -{ - scale += .1; -} - -void -down(void) -{ - scale -= .1; -} - -void -help(void) -{ - printf("Usage: textrim [image]\n"); - printf("'h' - help\n"); - printf("'a' - toggle alpha test\n"); - printf("'b' - toggle blend\n"); - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("left mouse - pan\n"); - printf("middle mouse - rotate\n"); -} - -void -init(char *filename) -{ - static unsigned *image; - static int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(1); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components != 4) { - printf("must be an RGBA image\n"); - exit(1); - } - } else { - int i, j; - unsigned char *img; - components = 4; - width = height = 512; - image = (unsigned *) malloc(width * height * sizeof(unsigned)); - img = (unsigned char *) image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width / 2, h2 = height / 2; - if (i & 32) - img[4 * (i + j * width) + 0] = 0xff; - else - img[4 * (i + j * width) + 1] = 0xff; - if (j & 32) - img[4 * (i + j * width) + 2] = 0xff; - if ((i - w2) * (i - w2) + (j - h2) * (j - h2) > 64 * 64 && - (i - w2) * (i - w2) + (j - h2) * (j - h2) < 300 * 300) - img[4 * (i + j * width) + 3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50., 1., .1, 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0., 0., -5.5); - glClearColor(.25f, .25f, .25f, .25f); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glScalef(scale, scale, 0.); - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); - glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex2f(-1.0, 1.0); - glEnd(); - glPopMatrix(); - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'A': - case 'a': - afunc(); - break; - case 'B': - case 'b': - bfunc(); - break; - case 'H': - case 'h': - help(); - break; - case '\033': - exit(0); - break; - default: - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_UP: - up(); - break; - case GLUT_KEY_DOWN: - down(); - break; - default: - return; - } - glutPostRedisplay(); -} - -void -menu(int value) -{ - key((unsigned char) value, 0, 0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); - (void) glutCreateWindow("textrim"); - init(argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(menu); - glutAddMenuEntry("Toggle alpha testing", 'a'); - glutAddMenuEntry("Toggle alpha blending", 'b'); - glutAddMenuEntry("Quit", '\033'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/textrim.dsp b/lib/glut-3.7.6/progs/advanced/textrim.dsp deleted file mode 100644 index 335b3b354f808865494733d5f6e1c37c08fcf733..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/textrim.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="textrim" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=textrim - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "textrim.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "textrim.mak" CFG="textrim - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "textrim - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "textrim - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "textrim - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "textrim - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "textrim - Win32 Release" -# Name "textrim - Win32 Debug" -# Begin Source File - -SOURCE=.\textrim.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/texture.c b/lib/glut-3.7.6/progs/advanced/texture.c deleted file mode 100644 index c53763507fea0fb4ad0ad46ed7f2f6e3acc9b23c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/texture.c +++ /dev/null @@ -1,245 +0,0 @@ - -/* texture.c - by David Blythe, SGI */ - -/* read_texture is a simplistic routine for reading an SGI .rgb image file. */ - -#include -#include -#include - -void -bwtorgba(unsigned char *b,unsigned char *l,int n) { - while(n--) { - l[0] = *b; - l[1] = *b; - l[2] = *b; - l[3] = 0xff; - l += 4; b++; - } -} - -void -rgbtorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *l,int n) { - while(n--) { - l[0] = r[0]; - l[1] = g[0]; - l[2] = b[0]; - l[3] = 0xff; - l += 4; r++; g++; b++; - } -} - -void -rgbatorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *a,unsigned char *l,int n) { - while(n--) { - l[0] = r[0]; - l[1] = g[0]; - l[2] = b[0]; - l[3] = a[0]; - l += 4; r++; g++; b++; a++; - } -} - -typedef struct _ImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short xsize, ysize, zsize; - unsigned int min, max; - unsigned int wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp, *tmpR, *tmpG, *tmpB; - unsigned long rleEnd; - unsigned int *rowStart; - int *rowSize; -} ImageRec; - -static void -ConvertShort(unsigned short *array, unsigned int length) { - unsigned short b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void -ConvertUint(unsigned *array, unsigned int length) { - unsigned int b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static ImageRec *ImageOpen(char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - ImageRec *image; - int swapFlag; - int x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) { - swapFlag = 1; - } else { - swapFlag = 0; - } - - image = (ImageRec *)malloc(sizeof(ImageRec)); - if (image == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - if ((image->file = fopen(fileName, "rb")) == NULL) { - perror(fileName); - exit(1); - } - - fread(image, 1, 12, image->file); - - if (swapFlag) { - ConvertShort(&image->imagic, 6); - } - - image->tmp = (unsigned char *)malloc(image->xsize*256); - image->tmpR = (unsigned char *)malloc(image->xsize*256); - image->tmpG = (unsigned char *)malloc(image->xsize*256); - image->tmpB = (unsigned char *)malloc(image->xsize*256); - if (image->tmp == NULL || image->tmpR == NULL || image->tmpG == NULL || - image->tmpB == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - - if ((image->type & 0xFF00) == 0x0100) { - x = image->ysize * image->zsize * (int) sizeof(unsigned); - image->rowStart = (unsigned *)malloc(x); - image->rowSize = (int *)malloc(x); - if (image->rowStart == NULL || image->rowSize == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - image->rleEnd = 512 + (2 * x); - fseek(image->file, 512, SEEK_SET); - fread(image->rowStart, 1, x, image->file); - fread(image->rowSize, 1, x, image->file); - if (swapFlag) { - ConvertUint(image->rowStart, x/(int) sizeof(unsigned)); - ConvertUint((unsigned *)image->rowSize, x/(int) sizeof(int)); - } - } - return image; -} - -static void -ImageClose(ImageRec *image) { - fclose(image->file); - free(image->tmp); - free(image->tmpR); - free(image->tmpG); - free(image->tmpB); - free(image); -} - -static void -ImageGetRow(ImageRec *image, unsigned char *buf, int y, int z) { - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((image->type & 0xFF00) == 0x0100) { - fseek(image->file, (long) image->rowStart[y+z*image->ysize], SEEK_SET); - fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize], - image->file); - - iPtr = image->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int)(pixel & 0x7F); - if (!count) { - return; - } - if (pixel & 0x80) { - while (count--) { - *oPtr++ = *iPtr++; - } - } else { - pixel = *iPtr++; - while (count--) { - *oPtr++ = pixel; - } - } - } - } else { - fseek(image->file, 512+(y*image->xsize)+(z*image->xsize*image->ysize), - SEEK_SET); - fread(buf, 1, image->xsize, image->file); - } -} - -unsigned * -read_texture(char *name, int *width, int *height, int *components) { - unsigned *base, *lptr; - unsigned char *rbuf, *gbuf, *bbuf, *abuf; - ImageRec *image; - int y; - - image = ImageOpen(name); - - if(!image) - return NULL; - (*width)=image->xsize; - (*height)=image->ysize; - (*components)=image->zsize; - base = (unsigned *)malloc(image->xsize*image->ysize*sizeof(unsigned)); - rbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - gbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - bbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - abuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - if(!base || !rbuf || !gbuf || !bbuf) - return NULL; - lptr = base; - for(y=0; yysize; y++) { - if(image->zsize>=4) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - ImageGetRow(image,abuf,y,3); - rgbatorgba(rbuf,gbuf,bbuf,abuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } else if(image->zsize==3) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - rgbtorgba(rbuf,gbuf,bbuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } else { - ImageGetRow(image,rbuf,y,0); - bwtorgba(rbuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } - } - ImageClose(image); - free(rbuf); - free(gbuf); - free(bbuf); - free(abuf); - - return (unsigned *) base; -} diff --git a/lib/glut-3.7.6/progs/advanced/texture.h b/lib/glut-3.7.6/progs/advanced/texture.h deleted file mode 100644 index c1e720c8815d8e78e5753c7f0fca9c3e1c348712..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/texture.h +++ /dev/null @@ -1,7 +0,0 @@ - -/* texture.h - by David Blythe, SGI */ - -/* Simple SGI .rgb image file loader routine. */ - -unsigned * -read_texture(char *name, int *width, int *height, int *components); diff --git a/lib/glut-3.7.6/progs/advanced/texwinalign.c b/lib/glut-3.7.6/progs/advanced/texwinalign.c deleted file mode 100644 index 18452c92e5b70777f43cf1972b42c196c00a21ba..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/texwinalign.c +++ /dev/null @@ -1,354 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This program demonstrates how to use the texture matrix - and texture coordinate generation (texgen) to generate - window space texture coordinates for arbitrary 3D geometry. - The basic technique is to generate texture coordinates - directly matching the object coordinates and using the - texture matrix to mimic the viewport, projection, and - modelview transformations to convert the texture coordinates - into window coordinates identically to how the actual - object coordinates are transformed into window space. It - is important to have perspective correct texturing if you - want perspective projections to look right. */ - -#include -#include - -GLfloat lightDiffuse[] = {1.0, 0.0, 0.0, 1.0}; /* Red diffuse light. */ -GLfloat lightPosition[] = {1.0, 1.0, 1.0, 0.0}; /* Infinite light location. */ - -GLfloat n[6][3] = { /* Normals for the 6 faces of a cube. */ - {-1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {1.0, 0.0, 0.0}, - {0.0, -1.0, 0.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0} }; -GLint faces[6][4] = { /* Vertex indices for the 6 faces of a cube. */ - {0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4}, - {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3} }; -GLfloat v[8][3]; /* Will be filled in with X,Y,Z vertexes. */ - -GLfloat angle = -20.0; -int animating = 1; - -#define TEX_WIDTH 16 -#define TEX_HEIGHT 16 - -/* Nice circle texture tiling pattern. */ -static char *circles[] = { - "....xxxx........", - "..xxxxxxxx......", - ".xxxxxxxxxx.....", - ".xxx....xxx.....", - "xxx......xxx....", - "xxx......xxx....", - "xxx......xxx....", - "xxx......xxx....", - ".xxx....xxx.....", - ".xxxxxxxxxx.....", - "..xxxxxxxx......", - "....xxxx........", - "................", - "................", - "................", - "................", -}; - -/* Nice grid texture tiling pattern. */ -static char *grid[] = { - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "..............xx", - "xxxxxxxxxxxxxxxx", - "xxxxxxxxxxxxxxxx", -}; - -static void -makeTexture(char *pattern[]) -{ - GLubyte floorTexture[TEX_WIDTH][TEX_HEIGHT][3]; - GLubyte *loc; - int s, t; - - /* Setup RGB image for the texture. */ - loc = (GLubyte*) floorTexture; - for (t = 0; t < TEX_HEIGHT; t++) { - for (s = 0; s < TEX_WIDTH; s++) { - if (pattern[t][s] == 'x') { - /* Nice green. */ - loc[0] = 0x6f; - loc[1] = 0x8f; - loc[2] = 0x1f; - } else { - /* Light gray. */ - loc[0] = 0xaa; - loc[1] = 0xaa; - loc[2] = 0xaa; - } - loc += 3; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, 3, TEX_WIDTH, TEX_HEIGHT, 0, - GL_RGB, GL_UNSIGNED_BYTE, floorTexture); -} - -void -drawBox(void) -{ - int i; - - for (i = 0; i < 6; i++) { - glBegin(GL_QUADS); - glNormal3fv(&n[i][0]); - glVertex3fv(&v[faces[i][0]][0]); - glVertex3fv(&v[faces[i][1]][0]); - glVertex3fv(&v[faces[i][2]][0]); - glVertex3fv(&v[faces[i][3]][0]); - glEnd(); - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glRotatef(angle, 0.0, 0.0, 1.0); - drawBox(); - glPopMatrix(); - glutSwapBuffers(); -} - -int windowWidth; -int windowHeight; -int slideX = 0, slideY = 0; - -void -configTextureMatrix(void) -{ - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - /* Shift texture in pixel units (slideX,slideY). You could use this - to copensate for a viewport origin different from the window - origin. */ - glTranslatef(slideX/(GLfloat)TEX_WIDTH, - slideY/(GLfloat)TEX_HEIGHT, - 0.0); - /* Scale based on the window size in pixel. */ - glScalef(windowWidth/(GLfloat)TEX_WIDTH, - windowHeight/(GLfloat)TEX_HEIGHT, - 1.0); - /* Mimic the scene's projection matrix setup. */ - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - /* Mimic the scene's view matrix setup. */ - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - /* Mimic the scene's model matrix setup. */ - /* Adjust cube position to be aesthetic angle. */ - glTranslatef(0.0, 0.0, -1.0); - glRotatef(60, 1.0, 0.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - /* Switch back to the modelview matrix. */ - glMatrixMode(GL_MODELVIEW); - -} - -void -idle(void) -{ - /* Slowly rotate object. */ - angle += 0.5; - if (angle > 360.0) { - angle -= 360.0; - } - /* Make sure the texture matrix mimics the changing - modelview matrix. */ - configTextureMatrix(); - glutPostRedisplay(); -} - -void -keyboard(unsigned char c, int x, int y) -{ - switch(c) { - case 27: /* Escape */ - exit(0); - break; - case 'h': - slideX--; - break; - case 'j': - slideY--; - break; - case 'k': - slideY++; - break; - case 'l': - slideX++; - break; - case 'r': - angle += 10; - break; - case 'a': - animating = !animating; - if (animating) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } - break; - } - configTextureMatrix(); - glutPostRedisplay(); -} - -void -reshape(int width, int height) -{ - windowWidth = width; - windowHeight = height; - glViewport(0, 0, width, height); - configTextureMatrix(); -} - -void -init(void) -{ - static GLfloat sPlane[4] = { 1.0, 0.0, 0.0, 0.0 }; - static GLfloat tPlane[4] = { 0.0, 1.0, 0.0, 0.0 }; - static GLfloat rPlane[4] = { 0.0, 0.0, 1.0, 0.0 }; - static GLfloat qPlane[4] = { 0.0, 0.0, 0.0, 1.0 }; - - /* Setup cube vertex data. */ - v[0][0] = v[1][0] = v[2][0] = v[3][0] = -1; - v[4][0] = v[5][0] = v[6][0] = v[7][0] = 1; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = -1; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = 1; - v[0][2] = v[3][2] = v[4][2] = v[7][2] = 1; - v[1][2] = v[2][2] = v[5][2] = v[6][2] = -1; - - /* Use depth buffering for hidden surface elimination. */ - glEnable(GL_DEPTH_TEST); - - /* Enable a single OpenGL light. */ - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuse); - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - glEnable(GL_LIGHT0); - - /* Setup the view of the cube. */ - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - - /* Texgen that maps object coordinates directly to texture - coordinates. */ - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGenfv(GL_S, GL_OBJECT_PLANE, sPlane); - glTexGenfv(GL_T, GL_OBJECT_PLANE, tPlane); - glTexGenfv(GL_R, GL_OBJECT_PLANE, rPlane); - glTexGenfv(GL_Q, GL_OBJECT_PLANE, qPlane); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - glEnable(GL_TEXTURE_GEN_Q); - - /* Enable texturing. Perspective correct texturing is - important to this demo! */ - glEnable(GL_TEXTURE_2D); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - /* Adjust cube position to be aesthetic orientation. */ - glTranslatef(0.0, 0.0, -1.0); - glRotatef(60, 1.0, 0.0, 0.0); -} - -void -menu(int selection) -{ - switch (selection) { - case 1: - glEnable(GL_LIGHTING); - glutPostRedisplay(); - break; - case 2: - glDisable(GL_LIGHTING); - glutPostRedisplay(); - break; - case 3: - keyboard('a', 0, 0); - break; - case 4: - makeTexture(circles); - break; - case 5: - makeTexture(grid); - break; - case 666: - exit(0); - } -} - -void -visibility(int state) -{ - if (state == GLUT_VISIBLE) { - if (animating) { - glutIdleFunc(idle); - } - } else { - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("window space aligned textures"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutVisibilityFunc(visibility); - init(); - makeTexture(grid); - glutCreateMenu(menu); - glutAddMenuEntry("Enable lighting", 1); - glutAddMenuEntry("Disable lighting", 2); - glutAddMenuEntry("Animating", 3); - glutAddMenuEntry("Circles", 4); - glutAddMenuEntry("Grid", 5); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/texwinalign.dsp b/lib/glut-3.7.6/progs/advanced/texwinalign.dsp deleted file mode 100644 index 894fb24e80067fd0b471f08a6a72a7543a4f524d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/texwinalign.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texwinalign" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texwinalign - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texwinalign.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texwinalign.mak" CFG="texwinalign - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texwinalign - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texwinalign - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texwinalign - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texwinalign - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texwinalign - Win32 Release" -# Name "texwinalign - Win32 Debug" -# Begin Source File - -SOURCE=.\texwinalign.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/tvertex.c b/lib/glut-3.7.6/progs/advanced/tvertex.c deleted file mode 100644 index 9211fd37ec94d2f04feba4db386355e900f656d4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/tvertex.c +++ /dev/null @@ -1,281 +0,0 @@ - -/* tvertex.c - by David Blythe (with help from Mark Kilgard), SGI */ - -/* T-vertex artifacts example. The moral: Avoid vertex edge junctions that - make a T-shape. */ - -#include -#include -#include -#include - -static float scale = 1.; -static float transx = 0, transy = 0; -static float rotx = 29, roty = -21; /* Initially askew. */ -static int ox = -1, oy = -1; -static int show_t = 1; -static int mot; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) -{ - transx += (x - ox) / 500.; - transy -= (y - oy) / 500.; - ox = x; - oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) -{ - rotx += x - ox; - if (rotx > 360.) - rotx -= 360.; - else if (rotx < -360.) - rotx += 360.; - roty += y - oy; - if (roty > 360.) - roty -= 360.; - else if (roty < -360.) - roty += 360.; - ox = x; - oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - if (mot == PAN) - pan(x, y); - else if (mot == ROT) - rotate(x, y); -} - -void -mouse(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN) { - switch (button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void -toggle_t(void) -{ - show_t ^= 1; -} - -void -wire(void) -{ - static int w; - - if (w ^= 1) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); -} - -void -light(void) -{ - static int l = 1; - - if (l ^= 1) - glEnable(GL_LIGHTING); - else - glDisable(GL_LIGHTING); -} - -void -up(void) -{ - scale += .1; -} - -void -down(void) -{ - scale -= .1; -} - -void -help(void) -{ - printf("Usage: tvertex\n"); - printf("'h' - help\n"); - printf("'l' - toggle lighting\n"); - printf("'t' - toggle T vertex\n"); - printf("'w' - toggle wireframe\n"); - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("left mouse - pan\n"); - printf("middle mouse - rotate\n"); -} - -void -init(void) -{ - GLfloat pos[4] = - {0.0, 0.0, 1.0, 1.0}; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50., 1., .1, 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0., 0., -3.5); - - /* The default light is "infinite"; a local light is important to ensure - varying lighting color calculations at the vertices. */ - glLightfv(GL_LIGHT0, GL_POSITION, pos); - - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glScalef(scale, scale, 1.); - if (show_t) { - glBegin(GL_QUADS); - glVertex2f(-1., 0.); - glVertex2f(0., 0.); - glVertex2f(0., 1.); - glVertex2f(-1., 1.); - - glVertex2f(0., 0.); - glVertex2f(1., 0.); - glVertex2f(1., 1.); - glVertex2f(0., 1.); - - glVertex2f(-1., -1.); - glVertex2f(1., -1.); - glVertex2f(1., 0.); - glVertex2f(-1., 0.); - glEnd(); - } else { - glBegin(GL_QUADS); - glVertex2f(-1., 0.); - glVertex2f(0., 0.); - glVertex2f(0., 1.); - glVertex2f(-1., 1.); - - glVertex2f(0., 0.); - glVertex2f(1., 0.); - glVertex2f(1., 1.); - glVertex2f(0., 1.); - - glVertex2f(-1., -1.); - glVertex2f(0., -1.); - glVertex2f(0., 0.); - glVertex2f(-1., 0.); - - glVertex2f(0., -1.); - glVertex2f(1., -1.); - glVertex2f(1., 0.); - glVertex2f(0., 0.); - glEnd(); - } - glPopMatrix(); - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 'l': - light(); - break; - case 't': - toggle_t(); - break; - case 'w': - wire(); - break; - case 'h': - help(); - break; - case '\033': - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_UP: - up(); - break; - case GLUT_KEY_DOWN: - down(); - break; - default: - return; - } - glutPostRedisplay(); -} - -void -menu(int value) -{ - key((unsigned char) value, 0, 0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); - (void) glutCreateWindow("T vertex artifact demo"); - init(); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(menu); - glutAddMenuEntry("Toggle T vertex", 't'); - glutAddMenuEntry("Toggle wireframe/solid", 'w'); - glutAddMenuEntry("Toggle lighting", 'l'); - glutAddMenuEntry("Quit", '\033'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/tvertex.dsp b/lib/glut-3.7.6/progs/advanced/tvertex.dsp deleted file mode 100644 index 4086336a8df073c2aead2536ab1e436ce57adcfd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/tvertex.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tvertex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tvertex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tvertex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tvertex.mak" CFG="tvertex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tvertex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tvertex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tvertex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tvertex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tvertex - Win32 Release" -# Name "tvertex - Win32 Debug" -# Begin Source File - -SOURCE=.\tvertex.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/videoresize.c b/lib/glut-3.7.6/progs/advanced/videoresize.c deleted file mode 100644 index b78b1e4c9cbf4caadc51e820d0044985101edbd7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/videoresize.c +++ /dev/null @@ -1,617 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* This demo shows off InfiniteReality's "dynamic video resize" (DVR) - capability. Dynamic video resizing let's you maintain a constant frame - rate even when the view becomes limited by your hardware's pixel fill - rate. The idea is simple: Draw the fill-limited frame into a smaller - area (ie, touch less pixels) and then have the video hardware "zoom" up - the image to fill the video screen. This trick does require special - hardware. - - As written with no command line options, this demo works well on a 1RM - InfiniteReality. It keeps a scene containing colored large orbs that - rotate around the viewer at a constant 60 frames/sec, even though the - number of viewable orbs is changing (hence the required fullscreen pixel - fill rate is changing too). The demo adapts the rendered image size and - video resizing based on the last frame to keep a constant frame rate. */ - -/**************************************************************** - -Command line arguments: - - -window ... run in a window instead of full screen and will not use - hardware resizing even if the hardware supports it. Good for - demos. - - -novidresize ... start without using video resize hardware even though - the system might really support video resizing. - - -debug ... output frame size to stdout. - - -target # ... sets the target frame rate in increments of 60th of - a second; the default is 1. - - -twosnaps ... sample the last frame rate as the average of the last - two frames; the default is to simply use the last frame. - - -nice ... better tesselate the orbs; nice if you have transformation - rate to burn (ie, use an InfiniteReality). - - -orbs # ... an initial number of orbs to populate the viewing space; - the default is 80. - -Example command lines: - - Because this program's behavior depends on adapting to the speed of the - system it is running at, a good demonstration of this program may depend - on the system performance. Adjust the command line options accordingly, - particularly -target and -orbs. - - InfiniteReality (1RM) ... "videoresize" - - (For the hardware listed below, you won't get actual video resizing - since the hardware lacks the support.) - - Indigo^2 XL 200Mhz ... "videoresize -geometry 800x600 -target 5 -orbs 40 -window" - -Key controls: - - ESC or q ... exit the demo. - - n ... disable dynamic video resizing. - - r ... enable dynamic video resizing (the default if hardware video - resizing is detected; otherwise no video resizing is the - default). - - NOTE: you can enable dynamic video resizing even without the - hardware and the demo will show you how the rendered area would - vary as if the feature were supported. - - h ... toggle use of hardware video resizing (only if in fullscreen - mode and the hardware supports the feature). - - m ... toggle display of the frame meter. Enabled by default. - - c ... toggle display of the cursor. Sometimes it is nice to see the - cursor when video resizing so that you can see the effect of the - video resizing since the cursor resizes too, but in general a - resizing cursor is quite distracting. The cursor is enabled if - hardware video resizing is to be used. - - Up arrow ... add 10 more orbs. - - Down arrow ... subtract 10 less orbs. - - Spacebar ... regenerate the set of viewing orbs. - - Right arrow ... increase rightward rotation. - - Left arrow ... increase rightward rotation. - -Frame meter: - - The frame meter shows how long each frame takes to render. It - operates differently depending on if video resizing is being - demonstrated or not. - - The meter line is BLUE when video resizing is not being demonstrated. - - When video resizing is being demonstrated, a GREEN meter line - indicates the frame is being shown at full (non-resized) resolution. - YELLOW indicates the frame is being video resized. RED indicates the - frame is being resized so much that dropping a frame is better than - the resulting poor resize quality (the demo won't zoom anymore than 8 - to 1). A smaller MAGENTA line shows a calculation of the - "unadjusted" frame rate for the displayed scene. When the MAGENTA - line is longer than the base line, it is showing a relative measure - of how much resizing was needed to keep the frame at a sustained - frame rate. - -Bugs: - - This program assumes a frame rate of 60 Hz. - - This program should use InfiniteReality's SGIX_instruments - extension for better fill rate measurement. - -*****************************************************************/ - -#include -#include -#include -#include -#include -#if !defined(_WIN32) -#include -#else -#define lrand48() (0) -#define srand48(x) (0) -#define getpid() (0) -#endif - -#define OVERLOAD 0 -#define ZOOMED 1 -#define UNZOOMED 2 -#define STATIC 3 -GLfloat state_colors[4][3] = -{ - {1.0, 0.0, 0.0}, - {0.8, 0.8, 0.0}, - {0.0, 0.7, 0.0}, - {0.3, 0.3, 0.8}, -}; -int state; - -extern void sphere(int level); - -GLdouble angle, speed = 0.5; - -GLfloat light0_ambient[] = -{0.1, 0.1, 0.1, 1.0}; -GLfloat light0_diffuse[] = -{0.5, 0.5, 0.5, 1.0}; -GLfloat light0_position[] = -{0.0, 0.0, 0.0, 1.0}; - -typedef struct { - GLfloat offset; - GLfloat distance; - GLfloat size; - GLfloat *color; -} Orb; - -Orb *orbs = NULL; -int num_orbs = 80; /* Good default for 1 RM InfiniteReality. */ -int fullscreen = 1; -int debug = 0; -int video_resizing = 1; -int hw_video_resizing = 1; /* Assume we have it until told otherwise. */ -int hw_exists = 0; -int frame_time = 15; -int sphere_quality = 1; -int max_w, max_h; -GLfloat W, H; -int delta_w_resize = 1, delta_h_resize = 1; -GLfloat target_frame_time = 1000.0 / 60.0; -int show_cursor = 1, show_meter = 1; - -#define NUM_SNAPS 2 -int snap[NUM_SNAPS] = -{0}; -int num_snaps = 1; -int frame = 0; - -GLfloat color[][3] = -{ - {0.0, 0.5, 0.0}, - {0.5, 0.5, 0.0}, - {1.0, 0.0, 0.5}, - {0.0, 1.0, 0.5}, - {1.0, 0.0, 0.0}, - {1.0, 0.0, 1.0}, - {0.0, 0.0, 0.8}, - {0.0, 0.2, 0.5}, - {1.0, 1.0, 0.0}, - {1.0, 1.0, 1.0}, - {0.3, 0.3, 0.3}, -}; -int num_colors = sizeof(color) / (sizeof(GLfloat) * 3); - -void -calculate_frame_rate(int delta) -{ - int sum, count, i; - - snap[frame] = delta; - frame += 1; - frame %= num_snaps; - - sum = 0; - count = 0; - for (i = 0; i < num_snaps; i++) { - if (snap[i] != 0) { - sum += snap[i]; - count++; - } - } - frame_time = sum / count; -} - -void -advancedAnimation(void) -{ - angle = (GLfloat) fmod(angle + speed, 360.0); - glutPostRedisplay(); -} - -void -resize(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.0, (GLfloat) w / (GLfloat) h, 1.0, 100.0); - glMatrixMode(GL_MODELVIEW); -} - -void -reshape(int w, int h) -{ - max_w = w; - max_h = h; - W = w; - H = h; - resize(w, h); -} - -void -do_video_resize_logic(void) -{ - GLfloat frame_ratio, adjusted_area, dimension_scale; - GLfloat area; - int Wint, Hint; - - if (frame_time > (target_frame_time * 0.92)) { - /* Shrink case. */ - frame_ratio = (target_frame_time * 0.92) / frame_time; - area = W * H; - adjusted_area = area * frame_ratio; - dimension_scale = sqrt(adjusted_area) / sqrt(area); - W = dimension_scale * W; - H = dimension_scale * H; - if (W < max_w / 8 || H < max_h / 8) { - W = max_w / 8; - H = max_h / 8; - state = OVERLOAD; - } else { - state = ZOOMED; - } - Wint = (((int) W) / delta_w_resize) * delta_w_resize; - Hint = (((int) H) / delta_h_resize) * delta_h_resize; - if (video_resizing) { - if (hw_video_resizing) - glutVideoResize(0, 0, -Wint, -Hint); - resize(Wint, Hint); - } - } else if (frame_time < (target_frame_time * 0.82)) { - /* Grow case. */ - frame_ratio = (target_frame_time * 0.82) / frame_time; - area = W * H; - adjusted_area = area * frame_ratio; - dimension_scale = sqrt(adjusted_area) / sqrt(area); - - /* Be a bit conservative about our growth. As Allan Greenspan would say, - "You don't want to overheat the economy; put on the brakes." */ - dimension_scale = (dimension_scale - 1.0) * 0.75 + 1.0; - if (dimension_scale > 1.5) { - dimension_scale = 1.5; - } - W = dimension_scale * W; - H = dimension_scale * H; - if (W > max_w || H > max_h) { - W = max_w; - H = max_h; - state = UNZOOMED; - } else { - state = ZOOMED; - } - Wint = (((int) W) / delta_w_resize) * delta_w_resize; - Hint = (((int) H) / delta_h_resize) * delta_h_resize; - if (video_resizing) { - if (hw_video_resizing) - glutVideoResize(0, 0, -Wint, -Hint); - resize(Wint, Hint); - } - } else { - if (!hw_video_resizing) { - /* We keep the meter constant size, so we must keep restoring our - viewport. */ - Wint = (((int) W) / delta_w_resize) * delta_w_resize; - Hint = (((int) H) / delta_h_resize) * delta_h_resize; - glViewport(0, 0, Wint, Hint); - } - } - if (debug) - printf("%gx%g\n\n", W, H); -} - -void -display(void) -{ - int i, start, stop; - - if (video_resizing) - do_video_resize_logic(); - - start = glutGet(GLUT_ELAPSED_TIME); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0.0, 0.0, 1.0, - 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0); - glTranslatef(0.0, 0.0, -1.0); - - for (i = 0; i < num_orbs; i++) { - glPushMatrix(); - glRotatef(angle + orbs[i].offset, 0.0, 1.0, 0.0); - glTranslatef(0.0, 0.0, orbs[i].distance); - glScalef(orbs[i].size, orbs[i].size, orbs[i].size); - glColor3fv(orbs[i].color); - glCallList(1); - glPopMatrix(); - } - - if (show_meter) { - if (!hw_video_resizing) { - /* Make sure the meter stays constant size in window mode. */ - glViewport(0, 0, max_w, max_h); - } - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, 3000, 0, 3000); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - - glColor3fv(state_colors[state]); - glRecti(100, 100, 100 + frame_time * 8, 200); - if (video_resizing) { - float render_area = W * H, full_area = max_w * max_h; - float advantage = sqrt(full_area / render_area); - - glColor3f(1.0, 0.0, 1.0); - glRecti(100, 140, 100 + frame_time * advantage * 8, 160); - } - glColor3f(1.0, 1.0, 1.0); - glBegin(GL_LINES); - for (i = 0; i < 21; i++) { - glVertex2f(100 + i * 16.6 * 8, 80); - glVertex2f(100 + i * 16.6 * 8, 220); - } - glEnd(); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - } - glFinish(); - stop = glutGet(GLUT_ELAPSED_TIME); - - glutSwapBuffers(); - - calculate_frame_rate(stop - start); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(advancedAnimation); - else - glutIdleFunc(NULL); -} - -void -set_cursor(int on) -{ - if (on) { - glutSetCursor(GLUT_CURSOR_INHERIT); - } else { - glutSetCursor(GLUT_CURSOR_NONE); - } -} - -void -generate_orbs(void) -{ - int i, r, angle, chance, delta, d; - - if (orbs) - free(orbs); - orbs = (Orb *) malloc(num_orbs * sizeof(Orb)); - - i = 0; - angle = 0; - while (i < num_orbs) { - angle += 37; - angle %= 360; - r = (int) lrand48(); - chance = abs(r % 360 - 180); - delta = chance - abs(angle - 180); - if (delta > 0) { - orbs[i].color = color[lrand48() % num_colors]; - orbs[i].offset = angle; - d = (r % 20) + (delta / 180.0) * 10; - orbs[i].distance = d + 3.0; - orbs[i].size = 1.4 * exp(d / 8.0) / exp(1.0); - i++; - } - } -} - -/* ARGSUSED */ -void -keyboard(unsigned char k, int x, int y) -{ - switch (k) { - case 27: - case 'q': - case 'Q': - exit(0); - break; - case 'R': - case 'r': - video_resizing = 1; - break; - case 'H': - case 'h': - if (hw_exists) { - hw_video_resizing = 1 - hw_video_resizing; - if (!hw_video_resizing) { - glutVideoResize(0, 0, max_w, max_h); - resize(max_w, max_h); - } - } - break; - case 'N': - case 'n': - video_resizing = 0; - if (hw_video_resizing) - glutVideoResize(0, 0, max_w, max_h); - resize(max_w, max_h); - state = STATIC; - break; - case 'D': - case 'd': - debug = 1; - break; - case 'M': - case 'm': - show_meter = 1 - show_meter; - break; - case ' ': - generate_orbs(); - break; - case 'C': - case 'c': - show_cursor = 1 - show_cursor; - set_cursor(show_cursor); - break; - } -} - -/* ARGSUSED */ -void -special(int k, int x, int y) -{ - switch (k) { - case GLUT_KEY_RIGHT: - speed -= 0.25; - break; - case GLUT_KEY_LEFT: - speed += 0.25; - break; - case GLUT_KEY_UP: - num_orbs += 10; - generate_orbs(); - break; - case GLUT_KEY_DOWN: - num_orbs -= 10; - generate_orbs(); - break; - } -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-orbs")) { - i++; - if (i >= argc) { - fprintf(stderr, "videoresize: need number of orbs\n"); - exit(1); - } - num_orbs = atoi(argv[i]); - if (num_orbs < 1) { - fprintf(stderr, "videoresize: number of orbs must be 1 or more\n"); - exit(1); - } - } else if (!strcmp(argv[i], "-target")) { - i++; - if (i >= argc) { - fprintf(stderr, "videoresize: need target number of frames\n"); - exit(1); - } - target_frame_time = atoi(argv[i]) * 1000.0 / 60.0; - if (target_frame_time <= 0.0) { - fprintf(stderr, "videoresize: target frames must be 1 or more\n"); - exit(1); - } - } else if (!strcmp(argv[i], "-novidresize")) { - hw_video_resizing = 0; - } else if (!strcmp(argv[i], "-debug")) { - debug = 1; - } else if (!strcmp(argv[i], "-window")) { - fullscreen = 0; - } else if (!strcmp(argv[i], "-twosnaps")) { - num_snaps = 2; - } else if (!strcmp(argv[i], "-nice")) { - sphere_quality = 2; - } else { - printf("usage: videoresize [-window] [-twosnaps] [-nice] [-target #] [-orbs #]\n"); - printf(" -target # = target number of frame intervals to stay under (default=%g)\n", target_frame_time); - printf(" -orbs # = number of orbs to randomly position (default=%d)\n", num_orbs); - printf(" -window = do not go fullscreen\n"); - printf(" -nice = use better tesselated spheres\n"); - printf(" -novidresize = even if videoresizing is supported, don't use it\n"); - printf(" -twosnaps = averages over last two frames instead of just estimating\n"); - printf(" based on the last frame\n"); - exit(1); - } - } - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutCreateWindow("Dynamic video resizing for constant frame rates"); - if (fullscreen) { - glutFullScreen(); - if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) { - delta_w_resize = glutVideoResizeGet(GLUT_VIDEO_RESIZE_WIDTH_DELTA); - delta_h_resize = glutVideoResizeGet(GLUT_VIDEO_RESIZE_HEIGHT_DELTA); - show_cursor = 0; - glutSetupVideoResizing(); - hw_exists = 1; - } else { - hw_video_resizing = 0; - } - } else { - hw_video_resizing = 0; - } - if (video_resizing) { - state = UNZOOMED; - } else { - state = STATIC; - } - glutReshapeFunc(reshape); - glDisable(GL_CULL_FACE); /* Makes us more fill limited. */ - glEnable(GL_LIGHT0); - glColorMaterial(GL_FRONT, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_NORMALIZE); - glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light0_position); - - glNewList(1, GL_COMPILE); - sphere(sphere_quality); - glEndList(); - - srand48(getpid() * 16 + glutGet(GLUT_ELAPSED_TIME)); - generate_orbs(); - - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glutKeyboardFunc(keyboard); - glutSpecialFunc(special); - set_cursor(show_cursor); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/videoresize.dsp b/lib/glut-3.7.6/progs/advanced/videoresize.dsp deleted file mode 100644 index 1fc4f307dd94a661e3b300852b0ee20b717de399..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/videoresize.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="videoresize" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=videoresize - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "videoresize.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "videoresize.mak" CFG="videoresize - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "videoresize - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "videoresize - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "videoresize - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "videoresize - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "videoresize - Win32 Release" -# Name "videoresize - Win32 Debug" -# Begin Source File - -SOURCE=.\sphere.c -# End Source File -# Begin Source File - -SOURCE=.\videoresize.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/vox.c b/lib/glut-3.7.6/progs/advanced/vox.c deleted file mode 100644 index bc20efb41747157af104b1ccfe05a81c7d61dd11..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/vox.c +++ /dev/null @@ -1,892 +0,0 @@ -/** - * - * vox.c : GLUT example for volume rendering - * - * Author : Yusuf Attarwala - * SGI - Applications - * - * Mods by Mark Kilgard. - * - * cc vox.c -o vox -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm - * - * Voxel Head is a simple volume rendering example using OpenGL 3d textures. - * This version has limited features (intentional), to keep the code simple. - * - * i.e. - there is no control for changing alpha values. - * - it just deals with one block of texture (no tiling) - * - there are no clipping planes - * - it only works with one data set, so it assumes that texture data - * is in powers of 2. - * - * Some of these features will be implemented in future releases. - * - * The technique to create polygonal slices thru voxel space is as - * follows: - * - * Instead of recomputing polygonal slices perpendicular to every - * viewing vector, it uses the same set of polygonal slices for a - * range of -45 to 45 degrees. Outside this range, it recomputes - * another set of slices and so on. - * - * These slices are then rendered back to front with 3d texture and - * blending enabled. - * - * It uses GLUT for handling events, windows etc. - * - * This program runs with good performance on RealityEngine, VTX, - * InfiniteReality, or Maximum IMPACT. In IRIX 6.2, a software - * implementation of OpenGL's 3D texture mapping extension is - * available, but performance is very poor. If you are on a slow - * machine, you can run "vox -sb" and still get a good feel for how - * the program performs volume rendering since you can see the 3D - * slices be rendered back to front with blending. - * - */ - -#include -#include -#ifndef _WIN32 -#include -#else -#define R_OK 04 /* Win32 doesn't define this */ -/* Win32 defines these, but with a leading _ */ -#define pclose _pclose -#define popen _popen -/* Win32 doesn't have a re-entrand rand() */ -#define rand_r(x) rand() -#endif -#include -#include - -#include - -#define ABS(a) (((a) >= 0) ? (a) : -(a)) -#define _XY 1 -#define _YZ 2 -#define _ZX 3 -#define _MXY 4 -#define _MYZ 5 -#define _MZX 6 - -/* pop up menu entries */ -#define SPIN_ON 1 -#define SPIN_OFF 2 -#define MENU_HELP 3 -#define MENU_EXIT 4 - -/* global variables */ - -int width, height; /* window width, height */ -float left, right, bottom, top, nnear, ffar; /* ortho, view volume */ -float vol_width, vol_height, vol_depth; /* volume dimensions */ -float bminx, bmaxx, bminy, bmaxy, bminz, bmaxz, bdiag; /* bounding box */ -int n_slices; /* number of slices */ -int tex3dSupported = 1; -float slice_poly[3][4][3]; -float slice_tcoord[3][4][3]; -float anglex, angley, anglez; - -unsigned char *voxels; - -void -readVoxelData(void) -{ - FILE *file; - int i, j, k, using_pipe; - unsigned char *vptr; - unsigned char *vp, *vx; - - /* see if the hardware supports 3d texture */ -#ifdef GL_EXT_texture3D - if (!glutExtensionSupported("GL_EXT_texture3D")) { - printf("\n==================================================================\n"); - printf("This hardware (%s) does not support 3d texture extentions\n", - (char *) (glGetString(GL_RENDERER))); - printf("==================================================================\n"); - - tex3dSupported = 0; - } -#else - printf("\n==================================================================\n"); - printf("Not API support for GL_EXT_texture3D extension when compiled.\n"); - printf("==================================================================\n"); -#endif - /* open vox.bin data file */ - if ((file = fopen("vox.bin", "r")) == NULL) { -#ifndef _WIN32 - if (!access("vox.bin.gz", R_OK)) { - if ((file = popen("gzcat vox.bin.gz", "r")) == NULL) { - fprintf(stderr, "cannot popen input file vox.bin.gz (missing gzcat?)\n"); - exit(1); - } - } else if (!access("vox.bin.Z", R_OK)) { - if ((file = popen("zcat vox.bin.Z", "r")) == NULL) { - fprintf(stderr, "cannot popen input file vox.bin.Z (missing zcat?)\n"); - exit(1); - } - } else { - fprintf(stderr, "cannot find vox.bin, vox.bin.gz, or vox.bin.Z\n"); - exit(1); - } - using_pipe = 1; -#else - fprintf(stderr, "cannot find vox.bin\n"); - exit(1); -#endif - } else { - using_pipe = 0; - } - vol_width = 128; /* hard coded for demo */ - vol_height = 128; - vol_depth = 64; - n_slices = 128; - - if (tex3dSupported) { - unsigned long size = (unsigned long) (vol_width * vol_height * vol_depth); - - vptr = (unsigned char *) malloc(size); - - fread(vptr, sizeof(char), size, file); - if (using_pipe) { - pclose(file); - } else { - fclose(file); - } - - /* size of voxels is twice as the size of vptr, to duplicate alpha value - = intensity */ - voxels = (unsigned char *) malloc(2 * size); - - /* for now duplicate, alpha value = intensity */ - vx = voxels; - vp = vptr; - for (i = 0; i < vol_width; i++) - for (j = 0; j < vol_height; j++) - for (k = 0; k < vol_depth; k++) { - *vx++ = *vp; - *vx++ = *vp++; - } - - free(vptr); - } - /* compute bounding box extents */ - - bminx = -(float) vol_width / 2.0; - bmaxx = (float) vol_width / 2.0; - bminy = -(float) vol_height / 2.0; - bmaxy = (float) vol_height / 2.0; - bminz = -(float) vol_depth / 2.0; - bmaxz = (float) vol_depth / 2.0; - - bdiag = sqrt((bmaxx) * (bmaxx) + (bmaxy) * (bmaxy) + (bmaxz) * (bmaxz)); - - /* compute view volume extents */ - - left = -1.1 * bdiag; - right = 1.1 * bdiag; - bottom = -1.1 * bdiag; - top = 1.1 * bdiag; - nnear = -1.0 * bdiag; - ffar = 2 * 1.1 * bdiag; - - /* define the polygon dimensions on which the texture will be mapped */ - /* xy plane */ - slice_poly[0][0][0] = -vol_width / 2.0; - slice_poly[0][0][1] = -vol_height / 2.0; - slice_poly[0][0][2] = 0.0; - - slice_poly[0][1][0] = vol_width / 2.0; - slice_poly[0][1][1] = -vol_height / 2.0; - slice_poly[0][1][2] = 0.0; - - slice_poly[0][2][0] = vol_width / 2.0; - slice_poly[0][2][1] = vol_height / 2.0; - slice_poly[0][2][2] = 0.0; - - slice_poly[0][3][0] = -vol_width / 2.0; - slice_poly[0][3][1] = vol_height / 2.0; - slice_poly[0][3][2] = 0.0; - - /* yz plane */ - slice_poly[1][0][0] = 0.0; - slice_poly[1][0][1] = -vol_height / 2.0; - slice_poly[1][0][2] = -vol_depth / 2.0; - - slice_poly[1][1][0] = 0.0; - slice_poly[1][1][1] = vol_height / 2.0; - slice_poly[1][1][2] = -vol_depth / 2.0; - - slice_poly[1][2][0] = 0.0; - slice_poly[1][2][1] = vol_height / 2.0; - slice_poly[1][2][2] = vol_depth / 2.0; - - slice_poly[1][3][0] = 0.0; - slice_poly[1][3][1] = -vol_height / 2.0; - slice_poly[1][3][2] = vol_depth / 2.0; - - /* zx plane */ - slice_poly[2][0][0] = -vol_width / 2.0; - slice_poly[2][0][1] = 0.0; - slice_poly[2][0][2] = -vol_depth / 2.0; - - slice_poly[2][1][0] = -vol_width / 2.0; - slice_poly[2][1][1] = 0.0; - slice_poly[2][1][2] = vol_depth / 2.0; - - slice_poly[2][2][0] = vol_width / 2.0; - slice_poly[2][2][1] = 0.0; - slice_poly[2][2][2] = vol_depth / 2.0; - - slice_poly[2][3][0] = vol_width / 2.0; - slice_poly[2][3][1] = 0.0; - slice_poly[2][3][2] = -vol_depth / 2.0; - - /* texture coordinates */ - - slice_tcoord[0][0][0] = 0.0; - slice_tcoord[0][0][1] = 0.0; - slice_tcoord[0][1][0] = 1.0; - slice_tcoord[0][1][1] = 0.0; - slice_tcoord[0][2][0] = 1.0; - slice_tcoord[0][2][1] = 1.0; - slice_tcoord[0][3][0] = 0.0; - slice_tcoord[0][3][1] = 1.0; - - slice_tcoord[1][0][1] = 0.0; - slice_tcoord[1][0][2] = 1.0; - slice_tcoord[1][1][1] = 1.0; - slice_tcoord[1][1][2] = 1.0; - slice_tcoord[1][2][1] = 1.0; - slice_tcoord[1][2][2] = 0.0; - slice_tcoord[1][3][1] = 0.0; - slice_tcoord[1][3][2] = 0.0; - - slice_tcoord[2][0][2] = 0.0; - slice_tcoord[2][0][0] = 0.0; - slice_tcoord[2][1][2] = 1.0; - slice_tcoord[2][1][0] = 0.0; - slice_tcoord[2][2][2] = 1.0; - slice_tcoord[2][2][0] = 1.0; - slice_tcoord[2][3][2] = 0.0; - slice_tcoord[2][3][0] = 1.0; - -} - -void -randomTick(void) -{ - static unsigned int seed = 0; - static int changeSeed = 25; - float fltran; - - if (changeSeed++ >= 25) { - seed++; - if (seed > 256) - seed = 0; - changeSeed = 0; - } - fltran = (float) (rand_r(&seed) / 30000.0); - - anglex = (anglex > 360.0) ? 0.0 : (anglex + fltran); - angley = (angley > 360.0) ? 0.0 : (angley + fltran); - anglez = (anglez > 360.0) ? 0.0 : (anglez + fltran); -} - -void -animate(void) -{ - randomTick(); - glutPostRedisplay(); -} - -void -printCheatSheet(void) -{ - printf("\n\n-------------------------\n"); - printf("OpenGL 3d texture example\n\n"); - - printf("Keyboard shortcuts\n"); - printf("s key : zoom out (small)\n"); - printf("l key : zoom in (large)\n"); - printf("x key : rotate about screen x\n"); - printf("y key : rotate about screen y\n"); - printf("z key : rotate about screen z\n"); - printf("esc key : quit\n"); -} - -void -menu(int choice) -{ - /* simple GLUT popup menu stuff */ - switch (choice) { - case SPIN_ON: - glutChangeToMenuEntry(1, "Random Spin OFF", SPIN_OFF); - glutIdleFunc(animate); - break; - case SPIN_OFF: - glutChangeToMenuEntry(1, "Random Spin ON", SPIN_ON); - glutIdleFunc(NULL); - break; - case MENU_HELP: - printCheatSheet(); - break; - case MENU_EXIT: - exit(0); - break; - } -} - -void -setMatrix(void) -{ - /* feel like using ortho projection */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(left, right, bottom, top, nnear, ffar); - - /* boring view matrix */ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void -load3DTexture(void) -{ - printf("setting up 3d textures...\n"); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - -#ifdef GL_EXT_texture3D - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_R_EXT, GL_REPEAT); - - glTexImage3DEXT(GL_TEXTURE_3D_EXT, 0, GL_LUMINANCE8_ALPHA8_EXT, - vol_width, vol_height, vol_depth, - 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, voxels); -#endif - - if (tex3dSupported) { - /* enable texturing, blending etc */ - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } - setMatrix(); -} - -void -init(void) -{ - /* angle of rotation about coordinate axes */ - anglex = angley = anglez = 0.0; -} - -void -invert4d(float from[4][4], float to[4][4]) -{ - - /* 4x4 matrix inversion routine */ - - float wtemp[4][8]; - register float m0, m1, m2, m3, s; - register float *r0, *r1, *r2, *r3, *rtemp; - - r0 = wtemp[0]; - r1 = wtemp[1]; - r2 = wtemp[2]; - r3 = wtemp[3]; - r0[0] = from[0][0]; /* build up [A][I] */ - r0[1] = from[0][1]; - r0[2] = from[0][2]; - r0[3] = from[0][3]; - r0[4] = 1.0; - r0[5] = 0.0; - r0[6] = 0.0; - r0[7] = 0.0; - r1[0] = from[1][0]; - r1[1] = from[1][1]; - r1[2] = from[1][2]; - r1[3] = from[1][3]; - r1[4] = 0.0; - r1[5] = 1.0; - r1[6] = 0.0; - r1[7] = 0.0; - r2[0] = from[2][0]; - r2[1] = from[2][1]; - r2[2] = from[2][2]; - r2[3] = from[2][3]; - r2[4] = 0.0; - r2[5] = 0.0; - r2[6] = 1.0; - r2[7] = 0.0; - r3[0] = from[3][0]; - r3[1] = from[3][1]; - r3[2] = from[3][2]; - r3[3] = from[3][3]; - r3[4] = 0.0; - r3[5] = 0.0; - r3[6] = 0.0; - r3[7] = 1.0; - if (r0[0] == 0.0) { /* swap rows if needed */ - if (r1[0] == 0.0) { - if (r2[0] == 0.0) { - if (r3[0] == 0.0) - goto singular; - rtemp = r0; - r0 = r3; - r3 = rtemp; - } else { - rtemp = r0; - r0 = r2; - r2 = rtemp; - } - } else { - rtemp = r0; - r0 = r1; - r1 = rtemp; - } - } - m1 = r1[0] / r0[0]; /* eliminate first variable */ - m2 = r2[0] / r0[0]; - m3 = r3[0] / r0[0]; - s = r0[1]; - r1[1] = r1[1] - m1 * s; - r2[1] = r2[1] - m2 * s; - r3[1] = r3[1] - m3 * s; - s = r0[2]; - r1[2] = r1[2] - m1 * s; - r2[2] = r2[2] - m2 * s; - r3[2] = r3[2] - m3 * s; - s = r0[3]; - r1[3] = r1[3] - m1 * s; - r2[3] = r2[3] - m2 * s; - r3[3] = r3[3] - m3 * s; - s = r0[4]; - if (s != 0.0) { - r1[4] = r1[4] - m1 * s; - r2[4] = r2[4] - m2 * s; - r3[4] = r3[4] - m3 * s; - } - s = r0[5]; - if (s != 0.0) { - r1[5] = r1[5] - m1 * s; - r2[5] = r2[5] - m2 * s; - r3[5] = r3[5] - m3 * s; - } - s = r0[6]; - if (s != 0.0) { - r1[6] = r1[6] - m1 * s; - r2[6] = r2[6] - m2 * s; - r3[6] = r3[6] - m3 * s; - } - s = r0[7]; - if (s != 0.0) { - r1[7] = r1[7] - m1 * s; - r2[7] = r2[7] - m2 * s; - r3[7] = r3[7] - m3 * s; - } - if (r1[1] == 0.0) { /* swap rows if needed */ - if (r2[1] == 0.0) { - if (r3[1] == 0.0) - goto singular; - rtemp = r1; - r1 = r3; - r3 = rtemp; - } else { - rtemp = r1; - r1 = r2; - r2 = rtemp; - } - } - m2 = r2[1] / r1[1]; /* eliminate second variable */ - m3 = r3[1] / r1[1]; - r2[2] = r2[2] - m2 * r1[2]; - r3[2] = r3[2] - m3 * r1[2]; - r3[3] = r3[3] - m3 * r1[3]; - r2[3] = r2[3] - m2 * r1[3]; - s = r1[4]; - if (s != 0.0) { - r2[4] = r2[4] - m2 * s; - r3[4] = r3[4] - m3 * s; - } - s = r1[5]; - if (s != 0.0) { - r2[5] = r2[5] - m2 * s; - r3[5] = r3[5] - m3 * s; - } - s = r1[6]; - if (s != 0.0) { - r2[6] = r2[6] - m2 * s; - r3[6] = r3[6] - m3 * s; - } - s = r1[7]; - if (s != 0.0) { - r2[7] = r2[7] - m2 * s; - r3[7] = r3[7] - m3 * s; - } - if (r2[2] == 0.0) { /* swap last 2 rows if needed */ - if (r3[2] == 0.0) - goto singular; - rtemp = r2; - r2 = r3; - r3 = rtemp; - } - m3 = r3[2] / r2[2]; /* eliminate third variable */ - r3[3] = r3[3] - m3 * r2[3]; - r3[4] = r3[4] - m3 * r2[4]; - r3[5] = r3[5] - m3 * r2[5]; - r3[6] = r3[6] - m3 * r2[6]; - r3[7] = r3[7] - m3 * r2[7]; - if (r3[3] == 0.0) - goto singular; - s = 1.0 / r3[3]; /* now back substitute row 3 */ - r3[4] = r3[4] * s; - r3[5] = r3[5] * s; - r3[6] = r3[6] * s; - r3[7] = r3[7] * s; - m2 = r2[3]; /* now back substitute row 2 */ - s = 1.0 / r2[2]; - r2[4] = s * (r2[4] - r3[4] * m2); - r2[5] = s * (r2[5] - r3[5] * m2); - r2[6] = s * (r2[6] - r3[6] * m2); - r2[7] = s * (r2[7] - r3[7] * m2); - m1 = r1[3]; - r1[4] = (r1[4] - r3[4] * m1); - r1[5] = (r1[5] - r3[5] * m1); - r1[6] = (r1[6] - r3[6] * m1); - r1[7] = (r1[7] - r3[7] * m1); - m0 = r0[3]; - r0[4] = (r0[4] - r3[4] * m0); - r0[5] = (r0[5] - r3[5] * m0); - r0[6] = (r0[6] - r3[6] * m0); - r0[7] = (r0[7] - r3[7] * m0); - m1 = r1[2]; /* now back substitute row 1 */ - s = 1.0 / r1[1]; - r1[4] = s * (r1[4] - r2[4] * m1); - r1[5] = s * (r1[5] - r2[5] * m1); - r1[6] = s * (r1[6] - r2[6] * m1); - r1[7] = s * (r1[7] - r2[7] * m1); - m0 = r0[2]; - r0[4] = (r0[4] - r2[4] * m0); - r0[5] = (r0[5] - r2[5] * m0); - r0[6] = (r0[6] - r2[6] * m0); - r0[7] = (r0[7] - r2[7] * m0); - m0 = r0[1]; /* now back substitute row 0 */ - s = 1.0 / r0[0]; - r0[4] = s * (r0[4] - r1[4] * m0); - r0[5] = s * (r0[5] - r1[5] * m0); - r0[6] = s * (r0[6] - r1[6] * m0); - r0[7] = s * (r0[7] - r1[7] * m0); - to[0][0] = r0[4]; /* copy results back */ - to[0][1] = r0[5]; - to[0][2] = r0[6]; - to[0][3] = r0[7]; - to[1][0] = r1[4]; - to[1][1] = r1[5]; - to[1][2] = r1[6]; - to[1][3] = r1[7]; - to[2][0] = r2[4]; - to[2][1] = r2[5]; - to[2][2] = r2[6]; - to[2][3] = r2[7]; - to[3][0] = r3[4]; - to[3][1] = r3[5]; - to[3][2] = r3[6]; - to[3][3] = r3[7]; - return; -singular: - printf("ERROR : non_invertable transform\n"); - return; -} - -void -normalize(float *xn, float *yn, float *zn) -{ - double denom; - - denom = sqrt((double) ((*xn * *xn) + (*yn * *yn) + (*zn * *zn))); - - *xn = *xn / denom; - *yn = *yn / denom; - *zn = *zn / denom; -} - -int -getViewAxis(void) -{ - float viewDir[3]; - float mat[4][4], vinv[4][4]; - float maxf, xy, yz, zx; - int im; - - /* out of 3 orthogonal set of planes in world coords, find out which one - has maximum angle from the line of sight. - - we will use these set of planes for creating polygonal slices thru the - voxel space */ - - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) mat); - invert4d(mat, vinv); - - viewDir[0] = -vinv[2][0]; - viewDir[1] = -vinv[2][1]; - viewDir[2] = -vinv[2][2]; - - normalize(&viewDir[0], &viewDir[1], &viewDir[2]); - - xy = viewDir[2]; /* simplified because 0*xx + 0*yy + 1*zz */ - yz = viewDir[0]; - zx = viewDir[1]; - - maxf = ABS(xy); - im = (xy < 0.0) ? _XY : _MXY; - - if (maxf <= ABS(yz)) { - maxf = ABS(yz); - im = (yz < 0.0) ? _YZ : _MYZ; - } - if (maxf <= ABS(zx)) { - maxf = ABS(zx); - im = (zx < 0.0) ? _ZX : _MZX; - } - return (im); -} - -#define DRAW_SLICE \ - if (tex3dSupported) {\ - glBegin(GL_POLYGON);\ - for (p=0;p<4;p++) {\ - glTexCoord3fv(slice_tcoord[myaxis][p]);\ - glVertex3fv(slice_poly[myaxis][p]);\ - }\ - glEnd();\ - } \ - else {\ - glBegin(GL_LINE_LOOP);\ - for (p=0;p<4;p++){\ - glVertex3fv(slice_poly[myaxis][p]);\ - }\ - glEnd();\ - } - -void -drawScene(void) -{ - - int i, p; - float tc; - int viewAxis, myaxis; - int sign; - - static int myaxis_lut[] = - {0, 0, 1, 2, 0, 1, 2}; - - /* clear background, z buffer etc */ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - - /* apply all the modeling transformations */ - glTranslatef(0.0, 0.0, -bdiag); - glRotatef(anglex, 1.0, 0.0, 0.0); - glRotatef(angley, 0.0, 1.0, 0.0); - glRotatef(anglez, 0.0, 0.0, 1.0); - - /* getViewAxis(), determines which set of polygons need to be used for - texturing, depending upon the viewing direction */ - - viewAxis = getViewAxis(); - myaxis = myaxis_lut[viewAxis]; - - glColor3f(1.0, 1.0, 1.0); - -#ifdef GL_EXT_texture3D - if (tex3dSupported) - glEnable(GL_TEXTURE_3D_EXT); -#endif - - switch (viewAxis) { - case _XY: - case _MXY: - - sign = (viewAxis == _XY) ? 1 : -1; - tc = (viewAxis == _XY) ? 0.0 : 1.0; - - glTranslatef(0.0, 0.0, -sign * vol_depth / 2.0); - for (i = 0; i < n_slices; i++) { - - slice_tcoord[0][0][2] = slice_tcoord[0][1][2] = - slice_tcoord[0][2][2] = slice_tcoord[0][3][2] = tc; - - tc += sign * 1.0 / n_slices; - glTranslatef(0.0, 0.0, sign * vol_depth / (n_slices + 1.0)); - - DRAW_SLICE; - } - break; - case _YZ: - case _MYZ: - - sign = (viewAxis == _YZ) ? 1 : -1; - tc = (viewAxis == _YZ) ? 0.0 : 1.0; - - glTranslatef(-sign * vol_width / 2.0, 0.0, 0.0); - for (i = 0; i < n_slices; i++) { - - slice_tcoord[1][0][0] = slice_tcoord[1][1][0] = - slice_tcoord[1][2][0] = slice_tcoord[1][3][0] = tc; - - tc += sign * 1.0 / n_slices; - glTranslatef(sign * vol_width / (n_slices + 1.0), 0.0, 0.0); - - DRAW_SLICE; - } - break; - case _ZX: - case _MZX: - - sign = (viewAxis == _ZX) ? 1 : -1; - tc = (viewAxis == _ZX) ? 0.0 : 1.0; - - glTranslatef(0.0, -sign * vol_height / 2.0, 0.0); - for (i = 0; i < n_slices; i++) { - - slice_tcoord[2][0][1] = slice_tcoord[2][1][1] = - slice_tcoord[2][2][1] = slice_tcoord[2][3][1] = tc; - - tc += sign * 1.0 / n_slices; - glTranslatef(0.0, sign * vol_height / (n_slices + 1.0), 0.0); - - DRAW_SLICE; - - } - break; - } - -#ifdef GL_EXT_texture3D - if (tex3dSupported) - glDisable(GL_TEXTURE_3D_EXT); -#endif - - glPopMatrix(); - - glutSwapBuffers(); -} - -void -resize(int w, int h) -{ - /* things you do, when the user resizes the window */ - - width = w; - height = h; - - glViewport(0, 0, w, h); - setMatrix(); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - /* handle key board input */ - - switch (c) { - case 27: - exit(0); - break; - case 'x': - anglex += 1.0; - drawScene(); - break; - case 'y': - angley += 1.0; - drawScene(); - break; - case 'z': - anglez += 1.0; - drawScene(); - break; - case 'm': - n_slices++; - drawScene(); - break; - case 'e': - n_slices--; - if (n_slices < 4) - n_slices = 4; - drawScene(); - break; - case 's': - if (left < right + 10.0) { - left -= 1.0; - right += 1.0; - bottom -= 1.0; - top += 1.0; - setMatrix(); - drawScene(); - } - break; - case 'l': - left += 1.0; - right -= 1.0; - bottom += 1.0; - top -= 1.0; - setMatrix(); - drawScene(); - break; - default: - break; - } -} - -void -main(int argc, char **argv) -{ - int i, mode = GLUT_DOUBLE; - - glutInit(&argc, argv); - - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-no3Dtex")) { - tex3dSupported = 0; - } else if (!strcmp(argv[i], "-sb")) { - mode = GLUT_SINGLE; - } - } - - /* let glut do all the X Stuff */ - glutInitDisplayMode(GLUT_RGB | mode); - glutCreateWindow("Voxel Head"); - - /* init our variables, etc */ - init(); - - /* read texture data from a file */ - readVoxelData(); - - /* set up OpenGL texturing */ - if (tex3dSupported) - load3DTexture(); - - /* register specific routines to glut */ - glutDisplayFunc(drawScene); - glutReshapeFunc(resize); - glutKeyboardFunc(keyboard); - - /* create popup menu for glut */ - glutCreateMenu(menu); - - glutAddMenuEntry("Random Spin ON", SPIN_ON); - glutAddMenuEntry("Help", MENU_HELP); - glutAddMenuEntry("Exit", MENU_EXIT); - - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* loop for ever */ - glutMainLoop(); -} diff --git a/lib/glut-3.7.6/progs/advanced/vox.dsp b/lib/glut-3.7.6/progs/advanced/vox.dsp deleted file mode 100644 index 0039ea4f50dbfe4fde068d152ec1e1cf114ae585..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/vox.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vox" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=vox - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "vox.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "vox.mak" CFG="vox - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "vox - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "vox - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "vox - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "vox - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "vox - Win32 Release" -# Name "vox - Win32 Debug" -# Begin Source File - -SOURCE=.\vox.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/warp.c b/lib/glut-3.7.6/progs/advanced/warp.c deleted file mode 100644 index d6f4b1ef1d5c7b0837db6c5987dfc49a92bf5d0d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/warp.c +++ /dev/null @@ -1,284 +0,0 @@ - -/* warp.c - by David Blythe, SGI */ - -/* Image warping operations can be done via OpenGL texture mapping. */ - -#include -#include -#include -#include -#include "texture.h" - -static unsigned *image; -static int width, height, components; -static float incr = .05, dir = 1.0; - -#define MAXMESH 32 - -float Ml[4 * 2 * (MAXMESH + 1) * 2 * (MAXMESH + 1)]; - -float N = 1.5; -float B = -1.5; - -void -mesh1(float x0, float x1, float y0, float y1, - float s0, float s1, float t0, float t1, float z, int nx, int ny) -{ - float y, x, s, t, dx, dy, ds, dt, vb[3], tb[2]; - float v; - float *mp = Ml; - - dx = (x1 - x0) / nx; - dy = (y1 - y0) / ny; - ds = (s1 - s0) / nx; - dt = (t1 - t0) / ny; - y = y0; - t = t0; - vb[2] = z; - while (y < y1) { - x = x0; - s = s0; - while (x <= x1) { - tb[0] = s; - tb[1] = t; - vb[0] = x; - vb[1] = y; - v = N * N - x * x - y * y; - if (v < 0.0) - v = 0.0; - vb[2] = sqrt(v) + B; - if (vb[2] < 0.) - vb[2] = 0.0; - *mp++ = tb[0]; - *mp++ = tb[1]; - mp += 2; - *mp++ = vb[0]; - *mp++ = vb[1]; - *mp++ = vb[2]; - mp++; - tb[1] = t + dt; - vb[1] = y + dy; - v = N * N - x * x - (y + dy) * (y + dy); - if (v < 0.0) - v = 0.0; - vb[2] = sqrt(v) + B; - if (vb[2] < 0.) - vb[2] = 0.0; - *mp++ = tb[0]; - *mp++ = tb[1]; - mp += 2; - *mp++ = vb[0]; - *mp++ = vb[1]; - *mp++ = vb[2]; - mp++; - x += dx; - s += ds; - } - y += dy; - t += dt; - } -} - -void -drawmesh(int nx, int ny) -{ - float *mp = Ml; - int i, j; - - glColor4f(1, 1, 1, 1); - for (i = ny + 1; i; i--) { - glBegin(GL_TRIANGLE_STRIP); - for (j = nx + 1; j; j--) { - glTexCoord2fv(mp); - glVertex3fv(mp + 4); - glTexCoord2fv(mp + 8); - glVertex3fv(mp + 12); - mp += 16; - } - glEnd(); - } -} - -void -move(void) -{ - if (N > 2.1 || N < 1.5) - dir = -dir; - N += incr * dir; - mesh1(-1.5, 1.5, -1.5, 1.5, 0.0, 1.0, 0.0, 1.0, 0.0, MAXMESH, MAXMESH); - glutPostRedisplay(); -} - -void -alphaup(void) -{ - incr += .01; - if (incr > .1) - incr = .1; - glutPostRedisplay(); -} - -void -alphadown(void) -{ - incr -= .01; - if (incr < 0) - incr = 0; - glutPostRedisplay(); -} - -void -wire(void) -{ - static int wire_mode; - if (wire_mode ^= 1) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); -} - -void -help(void) -{ - printf("'h' - help\n"); - printf("'w' - wire frame\n"); - printf("UP - faster\n"); - printf("DOWN - slower\n"); -} - -void -init(char *filename) -{ - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(1); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components < 3 || components > 4) { - printf("must be RGB or RGBA image\n"); - exit(1); - } - } else { - int i, j; - components = 4; - width = height = 512; - image = (unsigned *) malloc(width * height * sizeof(unsigned)); - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - if (i & 64) - image[i + j * width] = 0xff; - else - image[i + j * width] = 0xff00; - if (j & 64) - image[i + j * width] |= 0xff0000; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90., 1., .1, 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0., 0., -1.5); - glClearColor(.25, .25, .25, 0.); - -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - drawmesh(MAXMESH, MAXMESH); - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case '\033': - exit(0); - break; - case 'h': - help(); - break; - case 'w': - wire(); - break; - } -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_UP: - alphaup(); - break; - case GLUT_KEY_DOWN: - alphadown(); - break; - } -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(move); - else - glutIdleFunc(NULL); -} - -void -menu(int value) -{ - if(value < 0) - special(-value, 0, 0); - else - key((unsigned char) value, 0, 0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); - (void) glutCreateWindow("warp"); - init(argv[1]); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutVisibilityFunc(visible); - glutCreateMenu(menu); - glutAddMenuEntry("Toggle wireframe", 'w'); - glutAddMenuEntry("Quicken warping", -GLUT_KEY_UP); - glutAddMenuEntry("Slow warping", -GLUT_KEY_DOWN); - glutAddMenuEntry("Quit", '\033'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/warp.dsp b/lib/glut-3.7.6/progs/advanced/warp.dsp deleted file mode 100644 index d6d9d5c0d5367dc5e1ca95873c984c61f55a5a29..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/warp.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="warp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=warp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "warp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "warp.mak" CFG="warp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "warp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "warp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "warp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "warp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "warp - Win32 Release" -# Name "warp - Win32 Debug" -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# Begin Source File - -SOURCE=.\warp.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced/zcomposite.c b/lib/glut-3.7.6/progs/advanced/zcomposite.c deleted file mode 100644 index 3bce5ebdaff3125ba9d5fa0387754e912dd75595..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/zcomposite.c +++ /dev/null @@ -1,437 +0,0 @@ - -/* zcomposite.c - by Tom McReynolds, SGI */ - -/* Compositing images that include depth information. */ - -/* To use this program, you select a region of the "room" scene by - rubber-banding the region with the left mouse button. Once a - region is selected, position the region with the middle mouse - button. The region will be composited using the region image and - the region's depth information. With the right mouse button, you - can shift the region's depth values nearer or further away. */ - -#include -#include -#include - -/* Create a single component texture map */ -GLfloat * -make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -GLboolean stencil = GL_TRUE; - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 't': /* toggle using stencil */ - if (stencil == GL_TRUE) - stencil = GL_FALSE; - else - stencil = GL_TRUE; - glutPostRedisplay(); - break; - case '\033': - exit(0); - break; - } -} - -enum { - SPHERE = 1, CONE -}; -enum { - X, Y, Z -}; - -int startx, starty; -int wid, ht; -int oldwid = 0, oldht = 0; - -const int WINDIM = 512; -const GLfloat FRUSTDIM = 110.f; -const GLfloat FRUSTNEAR = 320.f; -const GLfloat FRUSTFAR = 540.f; -const GLfloat FRUSTDIFF = 540.f - 320.f; - -GLboolean drawmode = GL_FALSE; -GLboolean depthmode = GL_FALSE; -GLboolean rubberbandmode = GL_FALSE; -GLfloat *color; -GLfloat *depth; -GLfloat depthbias = 0.f; -GLfloat raspos[] = -{0.f, 0.f, -430.f}; - -int winWidth = 512; -int winHeight = 512; - -GLfloat sx = 0; -GLfloat sy = 0; - -/* Overlay Stuff */ -int transparent; -int red; -int overlaySupport = 0; - -void -setRasterPosXY(int x, int y) -{ - raspos[X] = (x - winWidth / 2) * sx; - raspos[Y] = (y - winHeight / 2) * sy; - - glRasterPos3fv(raspos); - - glutPostRedisplay(); -} - -void -setRasterPosZ(int y) -{ - raspos[Z] = -(FRUSTNEAR + y * FRUSTDIFF / winHeight); - - depthbias = (y - winHeight / 2.f) / winHeight; - - glRasterPos3fv(raspos); - - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - y = winHeight - y; - if (drawmode) - setRasterPosXY(x, y); - - if (rubberbandmode) { - wid = x - startx; - ht = y - starty; - if (overlaySupport) glutPostOverlayRedisplay(); - } - if (depthmode) - setRasterPosZ(y); -} - -/* redraw function for overlay: used to show selected region */ -void -overlay(void) -{ - if (glutLayerGet(GLUT_OVERLAY_DAMAGED)) { - glClear(GL_COLOR_BUFFER_BIT); - } else { - glIndexi(transparent); - glBegin(GL_LINE_LOOP); - glVertex2i(startx, starty); - glVertex2i(startx + oldwid, starty); - glVertex2i(startx + oldwid, starty + oldht); - glVertex2i(startx, starty + oldht); - glEnd(); - } - - glIndexi(red); - glBegin(GL_LINE_LOOP); - glVertex2i(startx, starty); - glVertex2i(startx + wid, starty); - glVertex2i(startx + wid, starty + ht); - glVertex2i(startx, starty + ht); - glEnd(); - - oldwid = wid; - oldht = ht; - - glFlush(); -} - -/* used to get current width and height of viewport */ -void -reshape(int wid, int ht) -{ - if (overlaySupport) { - glutUseLayer(GLUT_OVERLAY); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, wid, 0, ht); /* 1 to 1 with window */ - glMatrixMode(GL_MODELVIEW); - glViewport(0, 0, wid, ht); - } - - glutUseLayer(GLUT_NORMAL); - glViewport((GLint) (-wid * .1), (GLint) (-ht * .1), - (GLuint) (wid * 1.2), (GLuint) (ht * 1.2)); - - winWidth = wid; - winHeight = ht; - - sx = 2 * FRUSTDIM / (winWidth * 1.2); - sy = 2 * FRUSTDIM / (winHeight * 1.2); -} - -void -mouse(int button, int state, int x, int y) -{ - y = winHeight - y; /* flip y orientation */ - if (state == GLUT_DOWN) - switch (button) { - case GLUT_LEFT_BUTTON: /* select an image */ - startx = x; - starty = y; - wid = 0; - ht = 0; - rubberbandmode = GL_TRUE; - if (overlaySupport) glutShowOverlay(); - break; - case GLUT_MIDDLE_BUTTON: - glutUseLayer(GLUT_NORMAL); - if (color && depth) { - drawmode = GL_TRUE; - setRasterPosXY(x, y); - } - break; - case GLUT_RIGHT_BUTTON: /* change depth */ - glutUseLayer(GLUT_NORMAL); - if (color && depth) { - depthmode = GL_TRUE; - setRasterPosZ(y); - } - break; - } else /* GLUT_UP */ - switch (button) { - case GLUT_LEFT_BUTTON: - rubberbandmode = GL_FALSE; - if (overlaySupport) glutHideOverlay(); - wid = x - startx; - ht = y - starty; - if (wid < 0) { - wid = -wid; - startx = x; - } - if (ht < 0) { - ht = -ht; - starty = y; - } - color = (GLfloat *) realloc(color, wid * ht * 3 * sizeof(GLfloat)); - depth = (GLfloat *) realloc(depth, wid * ht * sizeof(GLfloat)); - - glutUseLayer(GLUT_NORMAL); - glReadPixels(startx, starty, wid, ht, GL_RGB, GL_FLOAT, color); - glReadPixels(startx, starty, wid, ht, GL_DEPTH_COMPONENT, GL_FLOAT, - depth); - break; - case GLUT_MIDDLE_BUTTON: - drawmode = GL_FALSE; - break; - case GLUT_RIGHT_BUTTON: /* change depth */ - depthmode = GL_FALSE; - break; - } -} - -/* Called when window needs to be redrawn */ -void -redraw(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = - {1.f, 1.f, 1.f, 1.f}; - - glutUseLayer(GLUT_NORMAL); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - /* Note: wall verticies are ordered so they are all front facing this lets - me do back face culling to speed things up. */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* Since we want to turn texturing on for floor only, we have to make floor - a separate glBegin()/glEnd() sequence. You can't turn texturing on and - off between begin and end calls */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f(100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f(100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f(100.f, -100.f, -320.f); - glVertex3f(100.f, 100.f, -320.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(100.f, -100.f, -520.f); - glVertex3f(100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glPushMatrix(); - glTranslatef(-80.f, -80.f, -420.f); - glCallList(SPHERE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-20.f, -100.f, -500.f); - glCallList(CONE); - glPopMatrix(); - - if (stencil) { - glEnable(GL_STENCIL_TEST); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glStencilFunc(GL_ALWAYS, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - glPixelTransferf(GL_DEPTH_BIAS, depthbias); - - glDrawPixels(wid, ht, GL_DEPTH_COMPONENT, GL_FLOAT, depth); - - glPixelTransferf(GL_DEPTH_BIAS, 0.f); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glStencilFunc(GL_EQUAL, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glDisable(GL_DEPTH_TEST); - - glDrawPixels(wid, ht, GL_RGB, GL_FLOAT, color); - - glEnable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - } else - glDrawPixels(wid, ht, GL_RGB, GL_FLOAT, color); - - glutSwapBuffers(); -} - -const int TEXDIM = 256; - -/* Parse arguments, and set up interface between OpenGL and window system */ -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = - {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = - {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = - {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *obj; - - glutInit(&argc, argv); - glutInitWindowSize(WINDIM, WINDIM); - - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL | GLUT_DOUBLE); - (void) glutCreateWindow("compositing images with depth"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutReshapeFunc(reshape); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, FRUSTNEAR, FRUSTFAR); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - obj = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(obj, 20.f, 20, 20); - glEndList(); - - glNewList(CONE, GL_COMPILE); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(obj, GLU_INSIDE); - gluDisk(obj, 0., 20., 20, 1); - gluQuadricOrientation(obj, GLU_OUTSIDE); - gluCylinder(obj, 20., 0., 60., 20, 20); - glEndList(); - - gluDeleteQuadric(obj); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - /* storage for saved image */ - color = 0; - depth = 0; - - glReadBuffer(GL_FRONT); /* so glReadPixel() always get the right image */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - if (glutLayerGet(GLUT_OVERLAY_POSSIBLE)) { - glutEstablishOverlay(); - glutHideOverlay(); - transparent = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(transparent); - red = (transparent + 1) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - glutSetColor(red, 1.0, 0.0, 0.0); /* Red. */ - glutOverlayDisplayFunc(overlay); - overlaySupport = 1; - } else { - printf("Running without overlay rubber banding support.\n"); - } - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced/zcomposite.dsp b/lib/glut-3.7.6/progs/advanced/zcomposite.dsp deleted file mode 100644 index f0341110460f55393bf4ce9c75059c19d7f6f59c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced/zcomposite.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zcomposite" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=zcomposite - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zcomposite.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zcomposite.mak" CFG="zcomposite - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zcomposite - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "zcomposite - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "zcomposite - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "zcomposite - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "zcomposite - Win32 Release" -# Name "zcomposite - Win32 Debug" -# Begin Source File - -SOURCE=.\zcomposite.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97.dsw b/lib/glut-3.7.6/progs/advanced97.dsw deleted file mode 100644 index c9bcfffdb59a3db7e2a52ea39750987d89ba0855..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97.dsw +++ /dev/null @@ -1,779 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\advanced97\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name accconvolve - End Project Dependency - Begin Project Dependency - Project_Dep_Name accumaa - End Project Dependency - Begin Project Dependency - Project_Dep_Name alphablend - End Project Dependency - Begin Project Dependency - Project_Dep_Name alphablendnosort - End Project Dependency - Begin Project Dependency - Project_Dep_Name billboard - End Project Dependency - Begin Project Dependency - Project_Dep_Name bubble - End Project Dependency - Begin Project Dependency - Project_Dep_Name bump - End Project Dependency - Begin Project Dependency - Project_Dep_Name chromakey - End Project Dependency - Begin Project Dependency - Project_Dep_Name chromakey_fancy - End Project Dependency - Begin Project Dependency - Project_Dep_Name cloud - End Project Dependency - Begin Project Dependency - Project_Dep_Name cloudl - End Project Dependency - Begin Project Dependency - Project_Dep_Name complexity - End Project Dependency - Begin Project Dependency - Project_Dep_Name csg - End Project Dependency - Begin Project Dependency - Project_Dep_Name decal - End Project Dependency - Begin Project Dependency - Project_Dep_Name dissolve - End Project Dependency - Begin Project Dependency - Project_Dep_Name explode - End Project Dependency - Begin Project Dependency - Project_Dep_Name fire - End Project Dependency - Begin Project Dependency - Project_Dep_Name genspheremap - End Project Dependency - Begin Project Dependency - Project_Dep_Name highlight - End Project Dependency - Begin Project Dependency - Project_Dep_Name interp - End Project Dependency - Begin Project Dependency - Project_Dep_Name lightmap - End Project Dependency - Begin Project Dependency - Project_Dep_Name lightp - End Project Dependency - Begin Project Dependency - Project_Dep_Name line - End Project Dependency - Begin Project Dependency - Project_Dep_Name multiaccumaa - End Project Dependency - Begin Project Dependency - Project_Dep_Name multialphablend - End Project Dependency - Begin Project Dependency - Project_Dep_Name multialphablendnosort - End Project Dependency - Begin Project Dependency - Project_Dep_Name multimirror - End Project Dependency - Begin Project Dependency - Project_Dep_Name multiscreendoor - End Project Dependency - Begin Project Dependency - Project_Dep_Name multispheremap - End Project Dependency - Begin Project Dependency - Project_Dep_Name noise - End Project Dependency - Begin Project Dependency - Project_Dep_Name nthsurfdemo - End Project Dependency - Begin Project Dependency - Project_Dep_Name paint - End Project Dependency - Begin Project Dependency - Project_Dep_Name projtex - End Project Dependency - Begin Project Dependency - Project_Dep_Name sbias - End Project Dependency - Begin Project Dependency - Project_Dep_Name screendoor - End Project Dependency - Begin Project Dependency - Project_Dep_Name smoke - End Project Dependency - Begin Project Dependency - Project_Dep_Name softshadow2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name spectral - End Project Dependency - Begin Project Dependency - Project_Dep_Name tess - End Project Dependency - Begin Project Dependency - Project_Dep_Name usespheremap - End Project Dependency - Begin Project Dependency - Project_Dep_Name vapor - End Project Dependency - Begin Project Dependency - Project_Dep_Name volume - End Project Dependency - Begin Project Dependency - Project_Dep_Name warp - End Project Dependency - Begin Project Dependency - Project_Dep_Name water - End Project Dependency - Begin Project Dependency - Project_Dep_Name zcomposite - End Project Dependency - Begin Project Dependency - Project_Dep_Name texmovie - End Project Dependency - Begin Project Dependency - Project_Dep_Name texpage - End Project Dependency - Begin Project Dependency - Project_Dep_Name textile - End Project Dependency - Begin Project Dependency - Project_Dep_Name underwater - End Project Dependency - Begin Project Dependency - Project_Dep_Name texgen - End Project Dependency -}}} - -############################################################################### - -Project: "accconvolve"=".\advanced97\accconvolve.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "accumaa"=".\advanced97\accumaa.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "alphablend"=".\advanced97\alphablend.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "alphablendnosort"=".\advanced97\alphablendnosort.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "billboard"=".\advanced97\billboard.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "bubble"=".\advanced97\bubble.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "bump"=".\advanced97\bump.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "chromakey"=".\advanced97\chromakey.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "chromakey_fancy"=".\advanced97\chromakey_fancy.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "cloud"=".\advanced97\cloud.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "cloudl"=".\advanced97\cloudl.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "complexity"=".\advanced97\complexity.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "csg"=".\advanced97\csg.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "decal"=".\advanced97\decal.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dissolve"=".\advanced97\dissolve.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "explode"=".\advanced97\explode.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "fire"=".\advanced97\fire.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "genspheremap"=".\advanced97\genspheremap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "highlight"=".\advanced97\highlight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "interp"=".\advanced97\interp.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "lightmap"=".\advanced97\lightmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "lightp"=".\advanced97\lightp.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "line"=".\advanced97\line.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multiaccumaa"=".\advanced97\multiaccumaa.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multialphablend"=".\advanced97\multialphablend.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multialphablendnosort"=".\advanced97\multialphablendnosort.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multimirror"=".\advanced97\multimirror.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multiscreendoor"=".\advanced97\multiscreendoor.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "multispheremap"=".\advanced97\multispheremap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "noise"=".\advanced97\noise.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "nthsurfdemo"=".\advanced97\nthsurfdemo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "paint"=".\advanced97\paint.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "projtex"=".\advanced97\projtex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sbias"=".\advanced97\sbias.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "screendoor"=".\advanced97\screendoor.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "smoke"=".\advanced97\smoke.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "softshadow2"=".\advanced97\softshadow2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "spectral"=".\advanced97\spectral.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tess"=".\advanced97\tess.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texgen"=".\advanced97\texgen.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texmovie"=".\advanced97\texmovie.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texpage"=".\advanced97\texpage.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "textile"=".\advanced97\textile.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "underwater"=".\advanced97\underwater.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "usespheremap"=".\advanced97\usespheremap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "vapor"=".\advanced97\vapor.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "volume"=".\advanced97\volume.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "warp"=".\advanced97\warp.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "water"=".\advanced97\water.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zcomposite"=".\advanced97\zcomposite.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/advanced97/Imakefile b/lib/glut-3.7.6/progs/advanced97/Imakefile deleted file mode 100644 index 694bdd4d5e1c3e4ef0211b4ec8c10f2f11c0c481..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/Imakefile +++ /dev/null @@ -1,77 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -#include "../../Glut.cf" - -TARGETS = accconvolve alphablend alphablendnosort billboard \ - bubble bump chromakey chromakey_fancy cloud cloudl complexity csg decal dissolve \ - explode fire genspheremap highlight interp lightmap lightp line \ - multiaccumaa multialphablend multialphablendnosort multimirror \ - multiscreendoor multispheremap noise nthsurfdemo paint projtex sbias \ - screendoor smoke softshadow2 spectral tess texgen texmovie texpage \ - textile underwater usespheremap vapor volume warp water zcomposite - -SRCS = accconvolve.c accumaa.c alphablend.c alphablendnosort.c \ - billboard.c bubble.c bump.c chromakey.c chromakey_fancy.c cloud.c \ - cloudl.c complexity.c csg.c d.c decal.c dissolve.c explode.c fire.c genspheremap.c \ - highlight.c interp.c lightmap.c lightp.c line.c multiaccumaa.c \ - multialphablend.c multialphablendnosort.c multimirror.c \ - multiscreendoor.c multispheremap.c noise.c nthsurfdemo.c paint.c \ - projtex.c sbias.c screendoor.c sm.c smoke.c softshadow2.c spectral.c \ - sphere.c tess.c texgen.c texmovie.c texpage.c textile.c texture.c \ - underwater.c usespheremap.c vapor.c volume.c warp.c water.c \ - zcomposite.c - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(accconvolve,accconvolve.o texture.o) -SimpleGlutProgramTarget(alphablend) -SimpleGlutProgramTarget(alphablendnosort) -NormalGlutProgramTarget(billboard,billboard.o texture.o) -NormalGlutProgramTarget(bubble,bubble.o texture.o) -NormalGlutProgramTarget(bump,bump.o texture.o) -NormalGlutProgramTarget(chromakey,chromakey.o texture.o) -NormalGlutProgramTarget(chromakey_fancy,chromakey_fancy.o texture.o) -NormalGlutProgramTarget(cloud,cloud.o texture.o) -NormalGlutProgramTarget(cloudl,cloudl.o texture.o) -SimpleGlutProgramTarget(complexity) -SimpleGlutProgramTarget(csg) -SimpleGlutProgramTarget(decal) -SimpleGlutProgramTarget(dissolve) -NormalGlutProgramTarget(explode,explode.o texture.o) -NormalGlutProgramTarget(fire,fire.o texture.o sm.o d.o) -NormalGlutProgramTarget(genspheremap,genspheremap.o texture.o) -NormalGlutProgramTarget(highlight,highlight.o texture.o) -NormalGlutProgramTarget(interp,interp.o texture.o) -NormalGlutProgramTarget(lightmap,lightmap.o texture.o) -NormalGlutProgramTarget(lightp,lightp.o texture.o) -SimpleGlutProgramTarget(line) -SimpleGlutProgramTarget(multiaccumaa) -SimpleGlutProgramTarget(multialphablend) -SimpleGlutProgramTarget(multialphablendnosort) -SimpleGlutProgramTarget(multimirror) -SimpleGlutProgramTarget(multiscreendoor) -NormalGlutProgramTarget(multispheremap,multispheremap.o texture.o) -SimpleGlutProgramTarget(noise) -SimpleGlutProgramTarget(nthsurfdemo) -NormalGlutProgramTarget(paint,paint.o texture.o) -NormalGlutProgramTarget(projtex,projtex.o texture.o) -NormalGlutProgramTarget(sbias,sbias.o texture.o) -SimpleGlutProgramTarget(screendoor) -NormalGlutProgramTarget(smoke,smoke.o texture.o) -SimpleGlutProgramTarget(softshadow2) -SimpleGlutProgramTarget(spectral) -NormalGlutProgramTarget(tess,tess.o sphere.o) -SimpleGlutProgramTarget(texgen) -NormalGlutProgramTarget(texmovie,texmovie.o texture.o) -NormalGlutProgramTarget(texpage,texpage.o texture.o) -NormalGlutProgramTarget(textile,textile.o texture.o) -NormalGlutProgramTarget(underwater,underwater.o texture.o) -NormalGlutProgramTarget(usespheremap,usespheremap.o texture.o) -NormalGlutProgramTarget(vapor,vapor.o texture.o) -NormalGlutProgramTarget(volume,volume.o texture.o) -NormalGlutProgramTarget(warp,warp.o texture.o) -NormalGlutProgramTarget(water,water.o texture.o) -SimpleGlutProgramTarget(zcomposite) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/advanced97/_all.dsp b/lib/glut-3.7.6/progs/advanced97/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/accconvolve.c b/lib/glut-3.7.6/progs/advanced97/accconvolve.c deleted file mode 100644 index 528d037d08d034bf13d19e48ceb771fed3ca37c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/accconvolve.c +++ /dev/null @@ -1,223 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -static char defaultFile[] = "../data/mandrill.rgb"; -GLuint *img; -GLsizei w, h; -GLint comp; - -GLfloat kernScale; - -/* a few filters... */ -GLfloat horizontalEdge3x3[] = { - -1, -1, -1, - 2, 2, 2, - -1, -1, -1, -}; - -GLfloat verticalEdge3x3[] = { - -1, 2, -1, - -1, 2, -1, - -1, 2, -1, -}; - -GLfloat allEdge3x3[] = { - -2, 1, -2, - 1, 4, 1, - -2, 1, -2, -}; - -GLfloat smooth3x3[] = { - 1, 2, 1, - 2, 4, 2, - 1, 2, 1, -}; - -GLfloat highpass3x3[] = { - -1, -1, -1, - -1, 9, -1, - -1, -1, -1, -}; - -GLfloat laplacian5x5[] = { - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 24, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -}; - -GLfloat box3x3[] = { - 1, 1, 1, - 1, 1, 1, - 1, 1, 1, -}; - -GLfloat box5x5[] = { - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, -}; - -struct Kernel { - const char *name; - GLfloat *kern; - GLsizei w, h; -} filters[] = { - {"horizontal edge detect", horizontalEdge3x3, 3, 3}, - {"vertical edge detect", verticalEdge3x3, 3, 3}, - {"all edge detect", allEdge3x3, 3, 3}, - {"3x3 smooth", smooth3x3, 3, 3}, - {"3x3 highpass", highpass3x3, 3, 3}, - {"5x5 laplacian", laplacian5x5, 5, 5}, - {"3x3 box", box3x3, 3, 3}, - {"5x5 box", box5x5, 5, 5}, -}; -struct Kernel *kern; - -void kern_normalize(void) -{ - GLfloat total, scale, *k; - int i; - - k = kern->kern; - total = 0; - for (i = 0; i < kern->w*kern->h; i++) { - total += *k++; - } - - if (!total) { - /* kernel sums to 0... */ - return; - } else { - scale = 1. / total; - k = kern->kern; - for (i = 0; i < kern->w * kern->h; i++) { - *k *= scale; - k++; - } - } -} - -GLfloat acc_kern_scale(void) -{ - GLfloat minPossible = 0, maxPossible = 1; - GLfloat *k; - int i; - - k = kern->kern; - for (i = 0; i < kern->w*kern->h; i++) { - if (*k < 0) { - minPossible += *k; - } else { - maxPossible += *k; - } - k++; - } - - return(1. / ((-minPossible > maxPossible) ? -minPossible : maxPossible)); -} - -void init(void) -{ - kern = &filters[4]; - kern_normalize(); - kernScale = acc_kern_scale(); -} - -void load_img(const char *fname) -{ - img = read_texture(fname, &w, &h, &comp); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } -} - -void reshape(GLsizei winW, GLsizei winH) -{ - glViewport(0, 0, w, h); - glLoadIdentity(); - glOrtho(0, winW, 0, winH, 0, 5); -} - -void acc_convolve(void) -{ - int x, y; - - for (y = 0; y < kern->h; y++) { - for (x = 0; x < kern->w; x++) { - glRasterPos2i(0, 0); - glBitmap(0, 0, 0, 0, -x, -y, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img); - glAccum(GL_ACCUM, kern->kern[y*kern->w + x]*kernScale); - } - } - glAccum(GL_RETURN, 1./kernScale); -} - -void draw(void) -{ - GLenum err; - - glutSetCursor(GLUT_CURSOR_WAIT); - - glClear(GL_COLOR_BUFFER_BIT | GL_ACCUM_BUFFER_BIT); - - acc_convolve(); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSetCursor(GLUT_CURSOR_INHERIT); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if (key == 27) exit(0); -} - -void menu(int val) -{ - kern = &filters[val]; - kern_normalize(); - kernScale= acc_kern_scale(); - draw(); -} - -main(int argc, char *argv[]) -{ - int i; - - glutInit(&argc, argv); - if (argc > 1) { - load_img(argv[1]); - } else { - load_img(defaultFile); - } - glutInitWindowSize(w, h); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_ACCUM); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - - glutCreateMenu(menu); - for (i = 0; i < sizeof(filters) / sizeof(filters[0]); i++) { - glutAddMenuEntry(filters[i].name, i); - } - glutAttachMenu(GLUT_RIGHT_BUTTON); - - init(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/accconvolve.dsp b/lib/glut-3.7.6/progs/advanced97/accconvolve.dsp deleted file mode 100644 index 24abc527543deb65939f5db4cf28f1ceded43a5f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/accconvolve.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="accconvolve" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=accconvolve - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "accconvolve.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "accconvolve.mak" CFG="accconvolve - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "accconvolve - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "accconvolve - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "accconvolve - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "accconvolve - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "accconvolve - Win32 Release" -# Name "accconvolve - Win32 Debug" -# Begin Source File - -SOURCE=.\accconvolve.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/accumaa.c b/lib/glut-3.7.6/progs/advanced97/accumaa.c deleted file mode 100644 index ba1591ba31a15b3838e2ffce669408dcc7d01ef3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/accumaa.c +++ /dev/null @@ -1,272 +0,0 @@ -#include -#include -#include - -const GLdouble FRUSTDIM = 100.f; - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum {SPHERE = 1, CONE}; - -void -render(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); - - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - - glPushMatrix(); - glTranslatef(-80.f, -60.f, -420.f); - glCallList(SPHERE); - glPopMatrix(); - - - glPushMatrix(); - glTranslatef(-20.f, -80.f, -500.f); - glCallList(CONE); - glPopMatrix(); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - - glFlush(); /* high end machines may need this */ -} - -/* compute scale factor for window->object space transform */ -/* could use gluUnProject(), but probably too much trouble */ -void -computescale(GLfloat *sx, GLfloat *sy) -{ - enum {XORG, YORG, WID, HT}; - GLint viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - - *sx = 2 * FRUSTDIM/viewport[WID]; - *sy = 2 * FRUSTDIM/viewport[WID]; -} - -enum {NONE, AA}; - -int rendermode = NONE; - -void -menu(int selection) -{ - rendermode = selection; - glutPostRedisplay(); -} - -/* Called when window needs to be redrawn */ -void redraw(void) -{ - int i, j; - int min, max; - int count; - GLfloat invx, invy; - GLfloat scale, dx, dy; - - switch(rendermode) { - case NONE: - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, 320., 640.); - glMatrixMode(GL_MODELVIEW); - render(); - break; - case AA: - min = -2; - max = -min + 1; - count = -2 * min + 1; - count *= count; - - /* uniform scaling, less than one pixel wide */ - scale = -.9f/min; - - computescale(&invx, &invy); - - glutSetCursor(GLUT_CURSOR_WAIT); - - glClear(GL_ACCUM_BUFFER_BIT); - - for(j = min; j < max; j++) { - for(i = min; i < max; i++) { - printf("pass %d of %d\n", - (j-min)*(max-min)+i-min+1,(max-min)*(max-min)); - dx = invx * scale * i; - dy = invy * scale * j; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM + dx, - FRUSTDIM + dy, - -FRUSTDIM + dx, - FRUSTDIM + dy, - 320., 640.); - glMatrixMode(GL_MODELVIEW); - render(); - glAccum(GL_ACCUM, 1.f/count); - } - } - glAccum(GL_RETURN, 1.f); - glutSetCursor(GLUT_CURSOR_INHERIT); - break; - } - - glutSwapBuffers(); -} - -void key(unsigned char key, int x, int y) -{ - if(key == '\033') - exit(0); -} - - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_ACCUM|GLUT_DOUBLE); - (void)glutCreateWindow("Anti-aliasing with Accum"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - - glutCreateMenu(menu); - glutAddMenuEntry("Aliased View", NONE); - glutAddMenuEntry("AntiAliased", AA); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glReadBuffer(GL_BACK); /* input to accum buffer */ - - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/accumaa.dsp b/lib/glut-3.7.6/progs/advanced97/accumaa.dsp deleted file mode 100644 index af9f9cab29bcd59b12604953dbef5dc8f95ebc21..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/accumaa.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="accumaa" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=accumaa - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "accumaa.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "accumaa.mak" CFG="accumaa - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "accumaa - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "accumaa - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "accumaa - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "accumaa - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "accumaa - Win32 Release" -# Name "accumaa - Win32 Debug" -# Begin Source File - -SOURCE=.\accumaa.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/alphablend.c b/lib/glut-3.7.6/progs/advanced97/alphablend.c deleted file mode 100644 index 1fb6c2cad8401760d53601c737a3b301c2897f69..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/alphablend.c +++ /dev/null @@ -1,176 +0,0 @@ -#include -#include -#include -#include -#include - -GLUquadricObj *cone, *base, *qsphere; - -void init(void) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - cone = gluNewQuadric(); - base = gluNewQuadric(); - qsphere = gluNewQuadric(); - gluQuadricOrientation(base, GLU_INSIDE); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 2.577, 0, 0, -5, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, -1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, 1, -1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - glEnd(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluCylinder(cone, .3, 0, 1.25, 20, 1); - gluDisk(base, 0., .3, 20, 1); - - glPopMatrix(); -} - -void draw_sphere(GLdouble angle) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, .5f}; - - glPushMatrix(); - glTranslatef(0, -.3, 0); - glRotatef(angle, 0, 1, 0); - glTranslatef(0, 0, .6); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qsphere, .3, 20, 20); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME)/1000.0; -} - -void draw(void) -{ - GLenum err; - GLdouble secs; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - draw_room(); - draw_cone(); - - secs = get_secs(); - glEnable(GL_BLEND); - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - draw_sphere(secs * 360. / 10.); - glCullFace(GL_BACK); - draw_sphere(secs * 360. / 10.); - glDisable(GL_CULL_FACE); - glDisable(GL_BLEND); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - static int idle = 1; - if (key == 27) exit(0); - idle = (idle == 0); - if (idle) { - glutIdleFunc(draw); - } else { - glutIdleFunc(0); - } -} - -main(int argc, char *argv[]) -{ - glutInitWindowSize(512, 512); - glutInitWindowPosition(0, 0); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/alphablend.dsp b/lib/glut-3.7.6/progs/advanced97/alphablend.dsp deleted file mode 100644 index a72842f5902a45ed9f239c214cb3af326ea19649..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/alphablend.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="alphablend" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=alphablend - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "alphablend.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "alphablend.mak" CFG="alphablend - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "alphablend - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "alphablend - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "alphablend - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "alphablend - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "alphablend - Win32 Release" -# Name "alphablend - Win32 Debug" -# Begin Source File - -SOURCE=.\alphablend.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/alphablendnosort.c b/lib/glut-3.7.6/progs/advanced97/alphablendnosort.c deleted file mode 100644 index 883dc6e8eff8dae0c3a8416a082be603953e0b23..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/alphablendnosort.c +++ /dev/null @@ -1,171 +0,0 @@ -#include -#include -#include -#include -#include - -GLUquadricObj *cone, *base, *qsphere; - -void init(void) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - cone = gluNewQuadric(); - base = gluNewQuadric(); - qsphere = gluNewQuadric(); - gluQuadricOrientation(base, GLU_INSIDE); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 2.577, 0, 0, -5, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, -1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, 1, -1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - glEnd(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluCylinder(cone, .3, 0, 1.25, 20, 1); - gluDisk(base, 0., .3, 20, 1); - - glPopMatrix(); -} - -void draw_sphere(GLdouble angle) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, .5f}; - - glPushMatrix(); - glTranslatef(0, -.3, 0); - glRotatef(angle, 0, 1, 0); - glTranslatef(0, 0, .6); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qsphere, .3, 20, 20); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw(void) -{ - GLenum err; - GLdouble secs; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - draw_room(); - draw_cone(); - - glEnable(GL_BLEND); - secs = get_secs(); - draw_sphere(secs * 360. / 10.); - glDisable(GL_BLEND); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - static int idle = 1; - if (key == 27) exit(0); - idle = (idle == 0); - if (idle) { - glutIdleFunc(draw); - } else { - glutIdleFunc(0); - } -} - -main(int argc, char *argv[]) -{ - glutInitWindowSize(512, 512); - glutInitWindowPosition(0, 0); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/alphablendnosort.dsp b/lib/glut-3.7.6/progs/advanced97/alphablendnosort.dsp deleted file mode 100644 index 1d086ea45098ae67aa6d6bdefad4b998bb4c5118..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/alphablendnosort.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="alphablendnosort" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=alphablendnosort - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "alphablendnosort.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "alphablendnosort.mak" CFG="alphablendnosort - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "alphablendnosort - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "alphablendnosort - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "alphablendnosort - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "alphablendnosort - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "alphablendnosort - Win32 Release" -# Name "alphablendnosort - Win32 Debug" -# Begin Source File - -SOURCE=.\alphablendnosort.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/billboard.c b/lib/glut-3.7.6/progs/advanced97/billboard.c deleted file mode 100644 index 1f46ee35128795321b9e245bdcfae867000dea47..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/billboard.c +++ /dev/null @@ -1,339 +0,0 @@ -#include -#include -#include -#include "texture.h" -#include - -#ifndef __sgi -/* Most math.h's do not define float versions of the trig functions. */ -#define sinf sin -#define cosf cos -#define atan2f atan2 -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -static int billboard = 1, texture = 1; -static float scale = 1.; -static float transx = 1.0, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(const int x, const int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(const int x, const int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void afunc(void) { - static int state; - if (state ^= 1) { - glAlphaFunc(GL_GREATER, .01); - glEnable(GL_ALPHA_TEST); - } else { - glDisable(GL_ALPHA_TEST); - } -} - -void demofunc(void) { - static float deltax = -.03; - static float deltay = 2.; - - transx += deltax; - if (transx > 2.0 || transx < -2.0) deltax = -deltax; - - rotx += deltay; - if (rotx > 360.f || rotx < 0.f) deltay = -deltay; - glutPostRedisplay(); -} - -void dfunc(void) { - static int demo; - if (demo ^= 1) { - glutIdleFunc(demofunc); - } else { - glutIdleFunc(0); - } -} - -void bfunc(void) { - static int state; - if (state ^= 1) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } else { - glDisable(GL_BLEND); - } -} - -void ffunc(void) { - billboard ^= 1; -} - -void tfunc(void) { - texture ^= 1; -} - -void up(void) { scale += .1; } -void down(void) { scale -= .1; } - -void help(void) { - printf("Usage: billboard [image]\n"); - printf("'h' - help\n"); - printf("'a' - toggle alpha test\n"); - printf("'b' - toggle blend\n"); - printf("'d' - toggle demo mode\n"); - printf("'f' - toggle fixed mode\n"); - printf("'t' - toggle texturing\n"); - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("left mouse - pan\n"); - printf("right mouse - rotate\n"); -} - -void init(char *filename) { - static unsigned *image; - static int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components != 4) { - printf("must be an RGBA image\n"); - exit(EXIT_FAILURE); - } - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 256; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if ((i & 32) ^ (j & 32)) { - img[4*(i+j*width)+0] = 0xff; - img[4*(i+j*width)+1] = 0xff; - img[4*(i+j*width)+2] = 0xff; - } else { - img[4*(i+j*width)+0] = 0x0; - img[4*(i+j*width)+1] = 0x0; - img[4*(i+j*width)+2] = 0x0; - } - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - glClearColor(.25f, .25f, .25f, .25f); - glEnable(GL_DEPTH_TEST); -} - -static void calcMatrix(void); - -void display(void) { -#if NATE - float mat[16]; -#endif - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glLoadIdentity(); -#define RAD(x) (((x)*M_PI)/180.) - gluLookAt(-sinf(RAD(rotx))*5.5,transy,cosf(RAD(rotx))*5.5, 0.,0.,0., 0.,1.,0.); - -#if NATE - glGetFloatv(GL_MODELVIEW_MATRIX, mat); -#endif - /* floor */ - glDisable(GL_TEXTURE_2D); - glColor4f(0.2, 0.8, 0.2, 1.); - glBegin(GL_POLYGON); - glVertex3f(-2.0, -1.0, -2.0); - glVertex3f( 2.0, -1.0, -2.0); - glVertex3f( 2.0, -1.0, 2.0); - glVertex3f(-2.0, -1.0, 2.0); - glEnd(); - - glPushMatrix(); -#if 0 - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); -#endif - glTranslatef(0.f, 0.f, -transx); - if (billboard) calcMatrix(); - glScalef(scale,scale,1.); - if (texture) glEnable(GL_TEXTURE_2D); - glColor4f(1.f, 1.f, 1.f, 1.f); - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); - glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex2f(-1.0, 1.0); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'a': afunc(); break; - case 'd': dfunc(); break; - case 'b': bfunc(); break; - case 'f': ffunc(); break; - case 't': tfunc(); break; - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/*ARGSUSED*/ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - } - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow("billboard"); - init(argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; -} - -void -buildRot(float theta, float x, float y, float z, float m[16]) { - float d = x*x + y*y + z*z; - float ct = cosf(RAD(theta)), st = sinf(RAD(theta)); - - /* normalize */ - if (d > 0) { - d = 1/d; - x *= d; - y *= d; - z *= d; - } - - m[ 0] = 1; m[ 1] = 0; m[ 2] = 0; m[ 3] = 0; - m[ 4] = 0; m[ 5] = 1; m[ 6] = 0; m[ 7] = 0; - m[ 8] = 0; m[ 9] = 0; m[10] = 1; m[11] = 0; - m[12] = 0; m[13] = 0; m[14] = 0; m[15] = 1; - - /* R = uu' + cos(theta)*(I-uu') + sin(theta)*S - * - * S = 0 -z y u' = (x, y, z) - * z 0 -x - * -y x 0 - */ - - m[0] = x*x + ct*(1-x*x) + st*0; - m[4] = x*y + ct*(0-x*y) + st*-z; - m[8] = x*z + ct*(0-x*z) + st*y; - - m[1] = y*x + ct*(0-y*x) + st*z; - m[5] = y*y + ct*(1-y*y) + st*0; - m[9] = y*z + ct*(0-y*z) + st*-x; - - m[2] = z*x + ct*(0-z*x) + st*-y; - m[6] = z*y + ct*(0-z*y) + st*x; - m[10]= z*z + ct*(1-z*z) + st*0; -} - -static void -calcMatrix(void) { - float mat[16]; - - glGetFloatv(GL_MODELVIEW_MATRIX, mat); - buildRot(-180*atan2f(mat[8], mat[10])/M_PI, 0, 1, 0, mat); - glMultMatrixf(mat); -} diff --git a/lib/glut-3.7.6/progs/advanced97/billboard.dsp b/lib/glut-3.7.6/progs/advanced97/billboard.dsp deleted file mode 100644 index cf025d1e7a0ff46511d35a0ae255a931ccd8881f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/billboard.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="billboard" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=billboard - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "billboard.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "billboard.mak" CFG="billboard - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "billboard - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "billboard - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "billboard - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "billboard - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "billboard - Win32 Release" -# Name "billboard - Win32 Debug" -# Begin Source File - -SOURCE=.\billboard.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/bubble.c b/lib/glut-3.7.6/progs/advanced97/bubble.c deleted file mode 100644 index 8665c2ca287661b5036edf7dcdba83f278c812b7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/bubble.c +++ /dev/null @@ -1,450 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -/* Most math.h's do not define float versions of the trig functions. */ -#define sinf(x) ((float)sin((x))) -#define cosf(x) ((float)cos((x))) -#endif - -static float transp = .5f; -static int normals; -static float phase = .05; -static int tess = 10; -static float freq = 10.f, scale = .03; -static float transx = 1.0, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(const int x, const int y) { - transx += (x-ox)/5.; - transy -= (y-oy)/5.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(const int x, const int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void init(char *fname) { - int width, height, components; - GLubyte *image; - - glClearColor(0.0, 0.0, 0.0, 0.0); - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_SMOOTH); - - if (!(image = (GLubyte *)read_texture(fname, &width, &height, &components))) { - perror(fname); - exit(EXIT_FAILURE); - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, image); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_NORMALIZE); - glFrontFace(GL_CW); - glCullFace(GL_BACK); - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); -#if 1 - glMaterialf (GL_FRONT, GL_SHININESS, 64.0); - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - { - GLfloat pos[4] = { 0, 0, 1, 1}; - glLightfv(GL_LIGHT0, GL_POSITION, pos); - } -#endif - { int e; if (e = glGetError()) printf("error %x\n", e); } - -#if 0 - glClearColor(.2,.2f,.58f,1.f); -#endif - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glEnable(GL_BLEND); -} - -#if 0 -cube(void) { - glBegin(GL_QUAD_STRIP); - glVertex3f(-1.,-1.,-1.); - glVertex3f(-1., 1.,-1.); - glVertex3f( 1.,-1.,-1.); - glVertex3f( 1., 1.,-1.); - glVertex3f(-1.,-1.,-1.); - glVertex3f(-1.,-1.,-1.); - glVertex3f(-1.,-1.,-1.); - glEnd(); -} -#endif - -/* - * bilinear (longitude/lattitude) tesselation - * x = cos(theta)*cos(phi) - * y = sin(phi) - * z = sin(theta)*cos(phi) - */ - -float *normalize(float *v) { - static float vv[3]; - float len; - - len = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; - vv[0] = v[0]/len; vv[1] = v[1]/len; vv[2] = v[2]/len; - return vv; -} - -void -bubble(float rad) { - float v[3],s; - float phi, mod; - static float off; - int i, j; -#define N tess - off += phase; -#if 0 - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); -#endif -#if 1 - /* top cap */ - glBegin(GL_TRIANGLE_FAN); - glNormal3f(0.f, 1.f, 0.f); - glVertex3f(0.f, 1.f, 0.f); - v[1] = rad*sinf(phi = M_PI*(N+2)/(2*N)); - mod = 1+scale*sinf(freq*v[1]+off); - s = cosf(phi)*rad*mod; - for(i = 0; i <= 2*N; i++) { - v[0] = s*cosf((M_PI/N)*i); - v[2] = s*sinf((M_PI/N)*i); - glNormal3fv(v); - glVertex3fv(v); - } - glEnd(); -#endif -#if 1 - for(i = 1; i < N-1; i++) { - float v0[3], v1[3], s0, s1; - v0[1] = rad*sinf(phi=M_PI/2+M_PI/N*i); s0 = rad*cosf(phi); - mod = mod = 1+scale*sin(freq*v0[1]+off); s0 *= mod; - v1[1] = rad*sinf(phi=M_PI/2+M_PI/N*(i+1)); s1 = rad*cosf(phi); - mod = mod = 1+scale*sin(freq*v1[1]+off); s1 *= mod; - glBegin(GL_TRIANGLE_STRIP); - for(j = 0; j <= 2*N; j++) { - float x, z; - v0[0] = s0*(x = sinf(M_PI/N*j)); - v0[2] = s0*(z = cosf(M_PI/N*j)); - v1[0] = s1*x; v1[2] = s1*z; - glNormal3fv(normalize(v1)); - glVertex3fv(v1); - glNormal3fv(normalize(v0)); - glVertex3fv(v0); - } - glEnd(); -#if 1 - if (normals) { - float nscale = 1.2; - /*glDisable(GL_LIGHTING);*/ - glBegin(GL_LINES); - /*glColor3f(1.f, 1.f, 0.f);*/ - for(j = 0; j <= 2*N; j++) { - GLfloat x[3], x1, z1, *vv; - v0[0] = s0*(x1 = sinf(M_PI/N*j)); - v0[2] = s0*(z1 = cosf(M_PI/N*j)); - glVertex3fv(vv = normalize(v0)); - x[0] = nscale*vv[0]; x[1] = nscale*vv[1]; x[2] = nscale*vv[2]; - glVertex3fv(x); - - v1[0] = s1*x1; v1[2] = s1*z1; - glVertex3fv(vv = normalize(v1)); - x[0] = nscale*vv[0]; x[1] = nscale*vv[1]; x[2] = nscale*vv[2]; - glVertex3fv(x); - } - glEnd(); - /*glEnable(GL_LIGHTING);*/ - } -#endif - } -#endif -#if 1 - /* bottom cap */ - glBegin(GL_TRIANGLE_FAN); - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(0.f, -1.f, 0.f); - v[1] = -rad*sinf(phi=M_PI*(N+2)/(2*N)); - mod = 1+scale*sin(freq*v[1]+off); - s = cosf(phi)*rad*mod; - for(i = 2*N; i >= 0; --i) { - v[0] = s*cosf((M_PI/N)*i); - v[2] = s*sinf((M_PI/N)*i); - glNormal3fv(v); - glVertex3fv(v); - } - glEnd(); -#endif -} - -void display(void) { -#if 0 - static float phase; -#endif - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - -#if 0 - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - s = sinf(phase); t = s; phase += M_PI/25.f; - if (phase > 2*M_PI) phase -= 2*M_PI; - glTranslatef(.5f, -0.5f, 0.f); - glScalef(.1f, .1f, 1.f); - glTranslatef(s, t, 0.f); - glMatrixMode(GL_MODELVIEW); -#endif - - glPushMatrix(); - glTranslatef(0., 0., -100.+transx); - glRotatef(roty, 1.0, 0.0, 0.0); - glScalef(10.f, 10.f, 10.f); - glColor4f(1.f,1.f,1.f,transp); - bubble(1.0f); - glPopMatrix (); -#if 0 - glMatrixMode(GL_TEXTURE); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); -#endif - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -#if 0 - if (w <= h) - glOrtho (-3.5, 3.5, -3.5*(GLfloat)h/(GLfloat)w, - 3.5*(GLfloat)h/(GLfloat)w, -3.5, 10.5); - else - glOrtho (-3.5*(GLfloat)w/(GLfloat)h, - 3.5*(GLfloat)w/(GLfloat)h, -3.5, 3.5, -3.5, 10.5); -#endif - gluPerspective(40., 1.0, 10.0, 200000.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void ffunc(void) { - static int state = 1; - if (state ^= 1) - glBlendFunc(GL_SRC_ALPHA, GL_SRC_ALPHA); - else - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void tfunc(void) { - static int state = 1; - if (state ^= 1) - glEnable(GL_TEXTURE_2D); - else - glDisable(GL_TEXTURE_2D); -} - -void lfunc(void) { - static int state = 1; - if (state ^= 1) - glEnable(GL_LIGHTING); - else - glDisable(GL_LIGHTING); - glEnable(GL_COLOR_MATERIAL); -} - -void bfunc(void) { - static int state = 1; - if (state ^= 1) { - glEnable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - } else { - glDisable(GL_BLEND); - glEnable(GL_DEPTH_TEST); - } -} - -void cfunc(void) { - static int state = 1; - if (state ^= 1) - glEnable(GL_CULL_FACE); - else - glDisable(GL_CULL_FACE); -} - -void wfunc(void) { - static int state; - glPolygonMode(GL_FRONT_AND_BACK, (state ^= 1) ? GL_LINE : GL_FILL); -} - -void ufunc(void) { - tess *= 2; - if (tess > 160) tess = 160; -} -void Ufunc(void) { - tess /= 2; - if (tess < 10) tess = 10; -} - -void pfunc(void) { - phase += .01; -} - -void Pfunc(void) { - phase -= .01; -} - -void nfunc(void) { - normals ^= 1; -} - -void xfunc(void) { - transp += .1; -} - -void Xfunc(void) { - transp -= .1; -} - -void yfunc(void) { - static int state; - if (state ^= 1) - /*glClearColor(.2,.2f,.58f,0.f);*/ - glClearColor(.0,.0f,.65,0.f); - else - glClearColor(0.f, 0.f, 0.f, 0.f); -} - -void up(void) { - scale += .01f; -} -void down(void) { - scale -= .01f; -} -void left(void) { - freq -= 1.f; -} -void right(void) { - freq += 1.f; -} - -/*ARGSUSED1*/ -void key (unsigned char key, int x, int y) { - switch (key) { - case 'b': bfunc(); break; - case 'c': cfunc(); break; - case 'l': lfunc(); break; - case 't': tfunc(); break; - case 'f': ffunc(); break; - case 'n': nfunc(); break; - case 'u': ufunc(); break; - case 'U': Ufunc(); break; - case 'p': pfunc(); break; - case 'P': Pfunc(); break; - case 'w': wfunc(); break; - case 'x': xfunc(); break; - case 'X': Xfunc(); break; - case 'y': yfunc(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } -} - -/*ARGSUSED1*/ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - case GLUT_KEY_LEFT: left(); break; - case GLUT_KEY_RIGHT:right(); break; - } -} - -void animate(void) { - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInitWindowSize(256, 256); - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowPosition(100, 100); - glutCreateWindow (argv[0]); - init(argc > 1 ? argv[1] : "../data/spheremap.rgb"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutIdleFunc(animate); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/bubble.dsp b/lib/glut-3.7.6/progs/advanced97/bubble.dsp deleted file mode 100644 index eff920522dd7a7b6552930386ea5bebe9295eefe..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/bubble.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bubble" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bubble - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bubble.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bubble.mak" CFG="bubble - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bubble - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bubble - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bubble - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bubble - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bubble - Win32 Release" -# Name "bubble - Win32 Debug" -# Begin Source File - -SOURCE=.\bubble.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/bump.c b/lib/glut-3.7.6/progs/advanced97/bump.c deleted file mode 100644 index 8684f713ed34d1a0b0d8eae554f5d89bf60994d7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/bump.c +++ /dev/null @@ -1,879 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define sqrtf(x) (float)sqrt((x)) -#define cosf(x) (float)cos((x)) -#define sinf(x) (float)sin((x)) -#endif - -#ifdef GL_EXT_blend_subtract -#if defined(_WIN32) && !defined(MESA) -#include -PFNGLBLENDEQUATIONEXTPROC glBlendEquationEXT = NULL; -#endif -static int hasBlendSubtract = 0; -#else -static const int hasBlendSubtract = 0; -#endif - -int winWidth = 512; -int winHeight = 512; - -#ifndef FALSE -enum {FALSE, TRUE}; -#endif -enum {S, T}; /* make array indexing more intuitive */ -enum {X, Y, Z, W}; -enum {R, G, B, A}; -enum {DEFAULT_TEX, ACCUM_TEX, ADD_TEX, SUB_TEX}; /* texture names */ -enum {LIGHT_XY, LIGHT_Z, PGON}; /* what should move */ - -int dblbuf = TRUE; -int accum = FALSE; -int color = FALSE; -int wire = FALSE; -int textureOnly = FALSE; -int lightOnly = FALSE; -int bindtex = FALSE; -int embossed = FALSE; -int steps_xz = 20, steps_y = 20; - -int texture_width; -int texture_height; - -/* is bumpmap shifting on? */ -int bumpEnabled = FALSE; - -int move = LIGHT_XY; - -/* current tangent vector */ -GLfloat curTangent[3]; - -/* current texture coordinate */ -GLfloat curTex[2]; - - -/* current normal */ -GLfloat curNormal[3]; - -/* current light position */ -GLfloat curLight[3]; -GLfloat lightpos[4] = {100.f, 100.f, 100.f, 1.f}; -GLfloat angles[2]; /* x and y angle */ - -unsigned *bumptex; /* pointer to bumpmap texture */ -GLfloat bumpscale = .39f; /* scale down bumpmap texture (a smidgen under .4) */ - -/* TEST PROGRAM */ - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - -#define CHECK_ERROR(str) \ -{ \ - GLenum error; \ - if(error = glGetError()) \ - printf("GL Error: %s (%s)\n", gluErrorString(error), str); \ -} - -void -bumpEnable(void) -{ - bumpEnabled = TRUE; -} - -void -bumpDisable(void) -{ - bumpEnabled = FALSE; -} - -void -reshape(int wid, int ht) -{ - winWidth = wid; - winHeight = ht; - glViewport(0, 0, wid, ht); -} - - - -void -mouse(int button, int state, int x, int y) -{ - if(state == GLUT_DOWN) - switch(button) - { - case GLUT_LEFT_BUTTON: /* move the light */ - move = LIGHT_XY; - lightpos[X] = (x - winWidth/2) * 300.f/winWidth; - lightpos[Y] = (winHeight/2 - y) * 300.f/winHeight; - glutPostRedisplay(); - break; - case GLUT_MIDDLE_BUTTON: - move = PGON; - angles[X] = (x - winWidth/2) * 180.f/winWidth; - angles[Y] = (y - winHeight/2) * 180.f/winHeight; - glutPostRedisplay(); - break; - case GLUT_RIGHT_BUTTON: /* move the polygon */ - move = LIGHT_Z; - lightpos[Z] = (winHeight/2 - y) * 300.f/winWidth; - glutPostRedisplay(); - break; - } -} - -void -motion(int x, int y) -{ - switch(move) - { - case LIGHT_XY: - lightpos[X] = (x - winWidth/2) * 300.f/winWidth; - lightpos[Y] = (winHeight/2 - y) * 300.f/winHeight; - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glutPostRedisplay(); - break; - case LIGHT_Z: - lightpos[Z] = (winHeight/2 - y) * 300.f/winWidth; - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glutPostRedisplay(); - break; - case PGON: - angles[X] = (x - winWidth/2) * 180.f/winWidth; - angles[Y] = (y - winHeight/2) * 180.f/winHeight; - glutPostRedisplay(); - break; - } -} - - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - GLfloat *texture; - - /* assumed format; LUMINANCE */ - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 3) & 0x1) ^ ((t >> 3) & 0x1); - } - } - return texture; -} - -/* get current light position in object space */ -void -bumpLightPos(GLfloat *x, GLfloat *y, GLfloat *z) -{ - GLdouble mvmatrix[16]; - GLint viewport[4]; - static GLdouble projmatrix[16]; /* to make them zero */ - GLfloat light[4]; - GLdouble Ex, Ey, Ez; - GLdouble Ox, Oy, Oz; - - CHECK_ERROR("bumpLightPos"); - glGetLightfv(GL_LIGHT0, GL_POSITION, light); - Ex = light[X]; Ey = light[Y]; Ez = (light[Z] + 1)/2.; - - CHECK_ERROR("bumpLightPos"); - glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix); - - /* identity projection matrix */ - projmatrix[0] = projmatrix[5] = projmatrix[10] = projmatrix[15] = 1.; - - /* identity viewport */ - viewport[0] = viewport[1] = -1; - viewport[2] = viewport[3] = 2; - - /* - ** use the inverse of the modelview matrix to - ** transform light from eye to object space - */ - gluUnProject(Ex, Ey, Ez, mvmatrix, projmatrix, viewport, &Ox, &Oy, &Oz); - - *x = Ox; *y = Oy; *z = Oz; - CHECK_ERROR("bumpLightPos"); -} - - -/* compute binormal from current normal and tangent vector, using cross prod */ -/* assuming normal and tangent are already normalized */ -void -biNormal(GLfloat *x, GLfloat *y, GLfloat *z) -{ - /* normal tangent = binormal */ - - *x = curNormal[Y] * curTangent[Z] - curNormal[Z] * curTangent[Y]; - *y = curNormal[Z] * curTangent[X] - curNormal[X] * curTangent[Z]; - *z = curNormal[X] * curTangent[Y] - curNormal[Y] * curTangent[X]; -} - -void -Normalize2f(GLfloat *x, GLfloat *y) -{ - GLfloat len; - len = *x * *x + *y * *y; - len = sqrtf(len); - - *x /= len; - *y /= len; -} - -/* rotate point by supplied rotatation matrix */ -void -Rotate(GLfloat *rot, GLfloat *light, GLfloat *s, GLfloat *t) -{ - GLfloat r; - r = rot[3] * light[X] + rot[4] * light[Y] + rot[5] * light[Z]; - if(r < 0.f) /* light below surface */ - { - *s = 0.f; - *t = 0.f; - return; - } - *s = rot[0] * light[X] + rot[1] * light[Y] + rot[2] * light[Z]; - *t = rot[6] * light[X] + rot[7] * light[Y] + rot[8] * light[Z]; - Normalize2f(s, t); -} - - -/* find out where the current normal is */ -void -bumpNormal3f(GLfloat x, GLfloat y, GLfloat z) -{ - curNormal[X] = x; - curNormal[Y] = y; - curNormal[Z] = z; - glNormal3f(x, y, z); -} - -void -bumpTangent3f(GLfloat x, GLfloat y, GLfloat z) -{ - curTangent[X] = x; - curTangent[Y] = y; - curTangent[Z] = z; -} - -/* save the texture coordinate call; will shift to do bumpmapping */ -void -bumpTexCoord2f(GLfloat s, GLfloat t) -{ - curTex[S] = s; - curTex[T] = t; -} - -/* -** use current tangent vector to compute texture coordinate shift -** then apply it by passing through vertex call -*/ -void -bumpVertex3f(GLfloat x, GLfloat y, GLfloat z) -{ - - GLfloat Light[3]; /* light in tangent space */ - GLfloat length; - GLfloat s, t; /* tranformed light, used to shift */ - GLfloat rot[9]; /* rotation matrix (just enought for x and y */ - GLfloat Bx, By, Bz; /* binormal axis */ - - if(bumpEnabled) - { - - /* get current light position */ - Light[X] = curLight[X]; - Light[Y] = curLight[Y]; - Light[Z] = curLight[Z]; - - /* find light vector from vertex */ - Light[X] -= x; Light[Y] -= y; Light[Z] -= z; - - length = 1.f/ sqrtf(Light[X] * Light[X] + - Light[Y] * Light[Y] + - Light[Z] * Light[Z]); - - Light[X] *= length; Light[Y] *= length; Light[Z] *= length; - - /* create rotation matrix (rotate into tangent space) */ - - biNormal(&Bx, &By, &Bz); /* find binormal axis */ - - rot[0] = curTangent[X]; rot[1] = curTangent[Y]; rot[2] = curTangent[Z]; - rot[3] = curNormal[X]; rot[4] = curNormal[Y]; rot[5] = curNormal[Z]; - rot[6] = Bx; rot[7] = By; rot[8] = Bz; - - Rotate(rot, Light, &s, &t); - - /* shift coordinates in opposite direction of desired texture shift */ - glTexCoord2f(curTex[S] - s/texture_width, curTex[T] - t/texture_height); - } - else - glTexCoord2f(curTex[S], curTex[T]); - - glVertex3f(x, y, z); /* pass on the vertex call */ -} - -void -bumpBegin(GLenum prim) -{ - if(bumpEnabled) - { - /* get light position; map back from eye to object space */ - bumpLightPos(&curLight[X], &curLight[Y], &curLight[Z]); - } - glBegin(prim); -} - -void draw(void) -{ - int i, j; - GLfloat Vx, Vy, Vz; /* vertex */ - GLfloat Tx, Ty, Tz; /* tangent */ - GLfloat Nx, Ny, Nz; /* normal */ - GLfloat c, s; /* cos, sin */ - - CHECK_ERROR("start of draw()"); - - - Ny = 0.f; - Ty = 0.f; - /* v(i, j) v(i+1, j), v(i+1, j+1), v(i, j+1) */ - bumpBegin(GL_QUADS); - for(j = 0; j < steps_y; j ++) - for(i = 0; i < steps_xz; i++) /* 180 -> 0 degrees */ - { - /* v(i, j) */ - c = cosf(M_PI * (1.f - (GLfloat)i/(steps_xz - 1))); - s = sinf(M_PI * (1.f - (GLfloat)i/(steps_xz - 1))); - Vx = 100 * c; - Vy = j * 200.f/steps_y - 100.f; - Vz = 100 * s - 100.f; - Nx = c; - Nz = s; - Tx = s; - Ty = -c; - Tz = 0; - bumpNormal3f(Nx, Ny, Nz); - bumpTangent3f(Tx, Ty, Tz); - bumpTexCoord2f(i/(GLfloat)steps_xz, j/(GLfloat)steps_y); - bumpVertex3f(Vx, Vy, Vz); - - /* v(i+1, j) */ - c = cosf(M_PI * (1.f - (GLfloat)(i + 1)/(steps_xz - 1))); - s = sinf(M_PI * (1.f - (GLfloat)(i + 1)/(steps_xz - 1))); - Vx = 100 * c; - Vz = 100 * s - 100.f; - Nx = c; - Nz = s; - Tx = s; - Ty = -c; - bumpNormal3f(Nx, Ny, Nz); - bumpTangent3f(Tx, Ty, Tz); - bumpTexCoord2f((i + 1)/(GLfloat)steps_xz, j/(GLfloat)steps_y); - bumpVertex3f(Vx, Vy, Vz); - - /* v(i+1, j+1) */ - Vy = (j + 1) * 200.f/steps_y - 100.f; - bumpNormal3f(Nx, Ny, Nz); - bumpTangent3f(Tx, Ty, Tz); - bumpTexCoord2f((i + 1)/(GLfloat)steps_xz, (j + 1)/(GLfloat)steps_y); - bumpVertex3f(Vx, Vy, Vz); - - /* v(i, j+1) */ - c = cosf(M_PI * (1.f - (GLfloat)i/(steps_xz - 1))); - s = sinf(M_PI * (1.f - (GLfloat)i/(steps_xz - 1))); - Vx = 100 * c; - Vz = 100 * s - 100.f; - Nx = c; - Nz = s; - Tx = s; - Ty = -c; - bumpNormal3f(Nx, Ny, Nz); - bumpTangent3f(Tx, Ty, Tz); - bumpTexCoord2f(i/(GLfloat)steps_xz, (j + 1)/(GLfloat)steps_y); - bumpVertex3f(Vx, Vy, Vz); - } - glEnd(); - - CHECK_ERROR("end of draw()"); -} - - - -/* Called when window needs to be redrawn */ -void redraw_blendext(void) -{ - GLUquadricObj *obj; - void draw(void); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - - glLoadIdentity(); - - gluLookAt(0., 0., 650., 0., 0., 0., 0., 1., 0.); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - glPushMatrix(); - glTranslatef(lightpos[X], lightpos[Y], lightpos[Z]); - obj = gluNewQuadric(); - gluSphere(obj, 7., 10, 10); - gluDeleteQuadric(obj); - glPopMatrix(); - - glRotatef(angles[X], 0.f, 1.f, 0.f); - glRotatef(angles[Y], 1.f, 0.f, 0.f); - - if(textureOnly) - { - glEnable(GL_TEXTURE_2D); - draw(); - glDisable(GL_TEXTURE_2D); - } - else if(lightOnly) - { - /* draw "z" diffuse component */ - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - draw(); - glDisable(GL_LIGHTING); - } - else /* bumpmapping */ - { - - /* find N dot L */ - - /* draw "z" diffuse component */ - /* also do ambient here */ - if(!embossed) - { - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - draw(); - glDisable(GL_LIGHTING); - } - /* add in shifted values */ - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - bumpEnable(); /* shift texture coords */ - draw(); - bumpDisable(); - -#ifdef GL_EXT_blend_subtract - if (hasBlendSubtract) { - /* subtract unshifted */ - glBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT_EXT); - draw(); - glBlendEquationEXT(GL_FUNC_ADD_EXT); - } -#endif - glDisable(GL_BLEND); - glDisable(GL_TEXTURE_2D); - - if(color) - { - /* Modulate the color texture with N dot L */ - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_DST_COLOR, GL_ZERO); - glBindTexture(GL_TEXTURE_2D, 1); /* use color texture */ - draw(); - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_BLEND); - glDisable(GL_TEXTURE_2D); - } - - } - - /* scale up the image */ - - glPixelTransferf(GL_RED_SCALE, 2.f); - glPixelTransferf(GL_GREEN_SCALE, 2.f); - glPixelTransferf(GL_BLUE_SCALE, 2.f); - glCopyPixels(0, 0, winWidth, winHeight, GL_COLOR); - - CHECK_ERROR("OpenGL Error in redraw()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - -/* Called when window needs to be redrawn */ -void redraw_accum(void) -{ - GLUquadricObj *obj; - void draw(void); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - - glLoadIdentity(); - - gluLookAt(0., 0., 650., 0., 0., 0., 0., 1., 0.); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - glRotatef(angles[X], 0.f, 1.f, 0.f); - glRotatef(angles[Y], 1.f, 0.f, 0.f); - - if(textureOnly) - { - glEnable(GL_TEXTURE_2D); - draw(); - glDisable(GL_TEXTURE_2D); - } - else if(lightOnly) - { - /* draw "z" diffuse component */ - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - draw(); - glDisable(GL_LIGHTING); - } - else /* bumpmapping */ - { - - CHECK_ERROR("start"); - /* draw "z" diffuse component */ - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - draw(); - glAccum(GL_LOAD, .5f); - CHECK_ERROR("load"); - glDisable(GL_LIGHTING); - - /* draw shifted */ - glEnable(GL_TEXTURE_2D); - bumpEnable(); - draw(); - glAccum(GL_ACCUM, .5f); - bumpDisable(); - - /* subtract unshifted */ - draw(); - glAccum(GL_ACCUM, -.5f); - - glDisable(GL_TEXTURE_2D); - glAccum(GL_RETURN, 2.f); - - if(color) - { - /* Modulate the color texture with N dot L */ - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_DST_COLOR, GL_ZERO); - glBindTexture(GL_TEXTURE_2D, 1); /* use color texture */ - draw(); - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_BLEND); - glDisable(GL_TEXTURE_2D); - } - - } - - - - CHECK_ERROR("OpenGL Error in redraw()"); - - glPushMatrix(); - glLoadIdentity(); - gluLookAt(0., 0., 650., 0., 0., 0., 0., 1., 0.); - glTranslatef(lightpos[X], lightpos[Y], lightpos[Z]); - obj = gluNewQuadric(); - gluSphere(obj, 7., 10, 10); - gluDeleteQuadric(obj); - glPopMatrix(); - - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) - { - case 't': - if(textureOnly) - textureOnly = FALSE; - else - textureOnly = TRUE; - glutPostRedisplay(); - break; - case 'l': - if(lightOnly) - lightOnly = FALSE; - else - lightOnly = TRUE; - glutPostRedisplay(); - break; - case 'e': - if(embossed) - embossed = FALSE; - else - embossed = TRUE; - glutPostRedisplay(); - break; - case 'B': /* make bumps taller */ - bumpscale += .01f; - printf("bump map scale = %.2f\n", bumpscale); - glPixelTransferf(GL_RED_SCALE, bumpscale); - glPixelTransferf(GL_GREEN_SCALE, bumpscale); - glPixelTransferf(GL_BLUE_SCALE, bumpscale); - - - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, - texture_width, texture_height, 0, GL_RGBA, - GL_UNSIGNED_BYTE, bumptex); - glutPostRedisplay(); - break; - case 'b': /* make bumps flatter */ - bumpscale -= .01f; - if(bumpscale < 0.f) - bumpscale = 0.f; - printf("bump map scale = %.2f\n", bumpscale); - glPixelTransferf(GL_RED_SCALE, bumpscale); - glPixelTransferf(GL_GREEN_SCALE, bumpscale); - glPixelTransferf(GL_BLUE_SCALE, bumpscale); - - - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, - texture_width, texture_height, 0, GL_RGBA, - GL_UNSIGNED_BYTE, bumptex); - glutPostRedisplay(); - break; - case 'c': - if(color == TRUE) - color = FALSE; - else - color = TRUE; - glutPostRedisplay(); - break; - case 'w': - if(wire == TRUE) - { - glPolygonMode(GL_FRONT, GL_FILL); - wire = FALSE; - } - else - { - glPolygonMode(GL_FRONT, GL_LINE); - wire = TRUE; - } - glutPostRedisplay(); - break; - case 'x': - steps_xz -= 2; - if(steps_xz < 1) - steps_xz = 1; - glutPostRedisplay(); - break; - case 'X': - steps_xz += 2; - glutPostRedisplay(); - break; - case 'y': - steps_y -= 2; - if(steps_y < 1) - steps_y = 1; - glutPostRedisplay(); - break; - case 'Y': - steps_y += 2; - glutPostRedisplay(); - break; - case '\033': - exit(0); - break; - case 'h': - case '?': - default: - fprintf(stderr, - "Keyboard commands:\n" - "t-texture only\n" - "l-light only\n" - "c-color texture\n" - "e-embossed (horizontal part)\n" - "w-toggle wireframe\n" - "B-increase bumps b-decrease bumps\n"); - break; - } - -} - - - -main(int argc, char *argv[]) -{ - unsigned *tex; - GLfloat lightpos[4]; - GLfloat diffuse[4]; - GLboolean valid; - int texcomps, texwid, texht; - const char *version; - char varray[32]; - - glutInit(&argc, argv); - glutInitWindowSize(winWidth, winHeight); - if(argc > 1) - { - char *args = argv[1]; - int done = FALSE; - while(!done) - { - switch(*args) - { - case 's': /* single buffer */ - printf("Single Buffered\n"); - dblbuf = FALSE; - break; - case 'a': /* use accumulation buffer */ - printf("Use accumulation buffer\n"); - accum = TRUE; - break; - case '-': /* do nothing */ - break; - case 0: - done = TRUE; - break; - } - args++; - } - } - if(dblbuf) - if(accum) - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH|GLUT_ACCUM); - else - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - else - if(accum) - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_ACCUM); - else - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH); - - (void)glutCreateWindow("bump mapping example program"); - if(accum) - glutDisplayFunc(redraw_accum); - else - glutDisplayFunc(redraw_blendext); - - glutKeyboardFunc(key); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutReshapeFunc(reshape); - - - - version = (char *) glGetString(GL_VERSION); - strncpy(varray, version, strcspn(version, " ")); - printf("%s\n", version); - if(atof(varray) > 1.f) - bindtex = TRUE; - else - bindtex = FALSE; - - glRasterPos3i(-1, -1, -1); - glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid); - if(!valid) - printf("invalid raster position!\n"); - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-150., 150., -150., 150., 500., 800.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - - diffuse[R] = diffuse[G] = diffuse[B] = .4f; - diffuse[A] = 1.f; - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); - bumptex = read_texture("../data/opengl.bw", &texture_width, - &texture_height, &texcomps); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - if(!accum) - { - /* scale to match maximum z (default Kd = .8, default Ld = 1. */ - /* divide by 2 to stay in range of 0 to 1 */ - glPixelTransferf(GL_RED_SCALE, bumpscale); - glPixelTransferf(GL_GREEN_SCALE, bumpscale); - glPixelTransferf(GL_BLUE_SCALE, bumpscale); - } - - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, - texture_width, texture_height, 0, GL_RGBA, - GL_UNSIGNED_BYTE, bumptex); - - tex = read_texture("../data/plank.rgb", &texwid, &texht, &texcomps); - - glBindTexture(GL_TEXTURE_2D, 1); /* for color */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glPixelTransferf(GL_RED_SCALE, 1.f); - glPixelTransferf(GL_GREEN_SCALE, 1.f); - glPixelTransferf(GL_BLUE_SCALE, 1.f); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, - texwid, texht, 0, GL_RGBA, - GL_UNSIGNED_BYTE, tex); - - glBindTexture(GL_TEXTURE_2D, 0); - - free(tex); - - lightpos[X] = lightpos[Y] = 0.f; - lightpos[Z] = -90.f; - lightpos[W] = 1.f; - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glDisable(GL_DITHER); - - CHECK_ERROR("end of main"); - -#ifdef GL_EXT_blend_subtract - if(!glutExtensionSupported("GL_EXT_blend_subtract")) { - fprintf(stderr, - "bump: requires OpenGL blend subtract extension to operate correctly.\n"); - hasBlendSubtract = 0; - } else { - hasBlendSubtract = 1; -#if defined(_WIN32) && !defined(MESA) - glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC) wglGetProcAddress("glBlendEquationEXT"); - if (glBlendEquationEXT == NULL) { - hasBlendSubtract = 0; - } -#endif - } -#endif - - key('?', 0, 0); /* startup message */ - glutMainLoop(); - return(0); -} diff --git a/lib/glut-3.7.6/progs/advanced97/bump.dsp b/lib/glut-3.7.6/progs/advanced97/bump.dsp deleted file mode 100644 index f50d90f3236c1cb85f8d30926ff26940b8c64710..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/bump.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bump" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bump - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bump.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bump.mak" CFG="bump - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bump - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bump - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bump - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bump - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bump - Win32 Release" -# Name "bump - Win32 Debug" -# Begin Source File - -SOURCE=.\bump.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/chromakey.c b/lib/glut-3.7.6/progs/advanced97/chromakey.c deleted file mode 100644 index 4479227a05b9a60faddfb8e382f73a6739616a2e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/chromakey.c +++ /dev/null @@ -1,262 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -static char defaultFile0[] = "../data/sgi.bw"; -static char defaultFile1[] = "../data/mandrill.rgb"; -static char defaultFile2[] = "../data/brick.rgb"; -GLuint *img0, *img1, *img2; -GLsizei w, h; -GLsizei w0, w1, w2, h0, h1, h2; -GLint comp; -GLfloat key[3] = {0, 0, 0}; - -#define RW 0.3086 -#define GW 0.6094 -#define BW 0.0820 - -void init(void) -{ -} - -GLuint *load_img(const char *fname, GLsizei *imgW, GLsizei *imgH) -{ - GLuint *img; - - img = read_texture(fname, imgW, imgH, &comp); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } - - return img; -} - -GLuint * -resize_img(GLuint *img, GLsizei curW, GLsizei curH) -{ - - glPixelZoom((float)w / (float)curW, (float)h / (float)curH); - glRasterPos2i(0, 0); - glDrawPixels(curW, curH, GL_RGBA, GL_UNSIGNED_BYTE, img); - free(img); - img = (GLuint *)malloc(w * h * sizeof(GLuint)); - if (!img) { - fprintf(stderr, "Malloc of %d bytes failed.\n", - curW * curH * sizeof(GLuint)); - exit(1); - } - glPixelZoom(1, 1); - glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, img); - - return img; -} - -void reshape(GLsizei winW, GLsizei winH) -{ - glViewport(0, 0, 2*w, 2*h); - glLoadIdentity(); - glOrtho(0, 2*w, 0, 2*h, 0, 5); -} - -void compute_matte(void) -{ - glClear(GL_ACCUM_BUFFER_BIT); - - /* draw rectangle in (key color + 1) / 2 */ - glBegin(GL_QUADS); - glColor3f(key[0], key[1], key[2]); - glVertex2f(0, 0); - glVertex2f(w, 0); - glVertex2f(w, h); - glVertex2f(0, h); - glEnd(); - glFlush(); - - /* negate & accumulate */ - glAccum(GL_LOAD, -1); - - /* compute & return (image - key) */ - glRasterPos2f(0, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img0); - glAccum(GL_ACCUM, 1); - glAccum(GL_RETURN, 1); - - /* move to right hand side of window */ - glRasterPos2f(w, 0); - glCopyPixels(0, 0, w, h, GL_COLOR); - - /* compute & return (key - image) */ - glEnable(GL_SCISSOR_TEST); - glScissor(0, 0, w, h); - glAccum(GL_MULT, -1); - glAccum(GL_RETURN, 1); - glScissor(0, 0, 2*w, h); - glDisable(GL_SCISSOR_TEST); - - /* assemble to get fabs(key - image) */ - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - glRasterPos2i(0, 0); - glCopyPixels(w, 0, w, h, GL_COLOR); - glDisable(GL_BLEND); - - /* assemble into alpha channel */ - { - GLfloat mat[] = { - RW, RW, RW, RW, - GW, GW, GW, GW, - BW, BW, BW, BW, - 0, 0, 0, 0, - }; - glMatrixMode(GL_COLOR); - glLoadMatrixf(mat); - - glRasterPos2i(w, 0); - glCopyPixels(0, 0, w, h, GL_COLOR); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - } - - /* copy matte to right */ - glRasterPos2i(0, 0); - glCopyPixels(w, 0, w, h, GL_COLOR); - - /* draw the third image */ - glColorMask(1, 1, 1, 0); - glRasterPos2i(w, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img2); - glColorMask(1, 1, 1, 1); - - glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA); - glEnable(GL_BLEND); - glRasterPos2i(w, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img1); - - /* this is for matte display... */ - glColor3f(1, 1, 1); - glBegin(GL_QUADS); - glVertex2f(0, 0); - glVertex2f(w, 0); - glVertex2f(w, h); - glVertex2f(0, h); - glEnd(); - - glDisable(GL_BLEND); -} - -void draw(void) -{ - GLenum err; - static int first = 1; - - if (first) { - printf("Scaling images to %d by %d\n", w, h); - - - if (w0 != w || h0 != h) { - img0 = resize_img(img0, w0, h0); - - } - if (w1 != w || h1 != h) { - img1 = resize_img(img1, w1, h1); - } - if (w2 != w || h2 != h) { - img2 = resize_img(img2, w2, h2); - } - first = 0; - } - - - glClear(GL_COLOR_BUFFER_BIT); - compute_matte(); - - glRasterPos2i(w/2, h); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img0); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); -} - -/* ARGSUSED */ -void button(int button, int state, int xpos, int ypos) -{ - if (state != GLUT_UP) return; - - ypos = 2*h - ypos; - glReadPixels(xpos, ypos, 1, 1, GL_RGB, GL_FLOAT, key); - printf("Key is (%f %f %f)\n", key[0], key[1], key[2]); - draw(); -} - -/* ARGSUSED1 */ -void keyPress(unsigned char whichKey, int x, int y) -{ - if (whichKey == 27) exit(0); -} - -void show_usage(void) -{ - fprintf(stderr, "Usage:\n"); - fprintf(stderr, "chromakey mattefile file0 file1 [matteR matteG matteB]\n"); - fprintf(stderr, "chromakey mattefileAndfile0 file1 [matteR matteG matteB]\n"); -} - -main(int argc, char *argv[]) -{ - char *fileName0 = defaultFile0, *fileName1 = defaultFile1, - *fileName2 = defaultFile2; - - glutInit(&argc, argv); - if (argc > 1) { - fileName0 = fileName1 = argv[1]; - } - if (argc > 2) { - fileName2 = argv[2]; - } - if (argc > 3) { - fileName1 = fileName2; - fileName2 = argv[3]; - } - if (argc > 4) { - if (argc == 6 || argc == 7) { - key[0] = atof(argv[argc-3]); - key[1] = atof(argv[argc-2]); - key[2] = atof(argv[argc-1]); - } else { - show_usage(); - exit(1); - } - } - - printf("Matte file is %s\n", fileName0); - printf("Image file 1 is %s\n", fileName1); - printf("Image file 2 is %s\n", fileName2); - printf("Key is (%f %f %f)\n", key[0], key[1], key[2]); - img0 = load_img(fileName0, &w0, &h0); - img1 = load_img(fileName1, &w1, &h1); - img2 = load_img(fileName2, &w2, &h2); - -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - w = MAX(MAX(w0, w1), w2); - h = MAX(MAX(h0, h1), h2); - - glutInitWindowSize(2*w, 2*h); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGBA | GLUT_ACCUM | GLUT_ALPHA); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutKeyboardFunc(keyPress); - glutReshapeFunc(reshape); - glutMouseFunc(button); - - - init(); - - reshape(w, h); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/chromakey.dsp b/lib/glut-3.7.6/progs/advanced97/chromakey.dsp deleted file mode 100644 index b3ef23f7ca66773cc555128d839adbe7a0a2865b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/chromakey.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="chromakey" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=chromakey - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "chromakey.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "chromakey.mak" CFG="chromakey - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "chromakey - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "chromakey - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "chromakey - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "chromakey - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "chromakey - Win32 Release" -# Name "chromakey - Win32 Debug" -# Begin Source File - -SOURCE=.\chromakey.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/chromakey_fancy.c b/lib/glut-3.7.6/progs/advanced97/chromakey_fancy.c deleted file mode 100644 index ab42afb3b0c3400a5645effdbdaac5f825babec1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/chromakey_fancy.c +++ /dev/null @@ -1,325 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -static char defaultFile0[] = "../data/swamp.rgb"; -static char defaultFile1[] = "../data/swamp.rgb"; -static char defaultFile2[] = "../data/mandrill.rgb"; -GLuint *img0, *img1, *img2; -GLsizei w, h; -GLsizei w0, w1, w2, h0, h1, h2; -GLint comp; -GLfloat key[3] = {0, 0, 0}; - -#define RW 0.3086 -#define GW 0.6094 -#define BW 0.0820 - -/* key values less than or equal to lower fudge map to totally - * transparent... */ -GLfloat lowerfudge = .2; -GLfloat upperfudge = .8; - -void init(void) -{ -} - -GLuint *load_img(const char *fname, GLsizei *imgW, GLsizei *imgH) -{ - GLuint *img; - - img = read_texture(fname, imgW, imgH, &comp); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } - - return img; -} - -GLuint * -resize_img(GLuint *img, GLsizei curW, GLsizei curH) -{ - - glPixelZoom((float)w / (float)curW, (float)h / (float)curH); - glRasterPos2i(0, 0); - glDrawPixels(curW, curH, GL_RGBA, GL_UNSIGNED_BYTE, img); - free(img); - img = (GLuint *)malloc(w * h * sizeof(GLuint)); - if (!img) { - fprintf(stderr, "Malloc of %d bytes failed.\n", - curW * curH * sizeof(GLuint)); - exit(1); - } - glPixelZoom(1, 1); - glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, img); - - return img; -} - -void reshape(GLsizei winW, GLsizei winH) -{ - glViewport(0, 0, 2*w, 2*h); - glLoadIdentity(); - glOrtho(0, 2*w, 0, 2*h, 0, 5); -} - -void compute_matte(void) -{ - glClear(GL_ACCUM_BUFFER_BIT); - - /* draw rectangle in (key color + 1) / 2 */ - glBegin(GL_QUADS); - glColor3f(key[0], key[1], key[2]); - glVertex2f(0, 0); - glVertex2f(w, 0); - glVertex2f(w, h); - glVertex2f(0, h); - glEnd(); - glFlush(); - - /* negate & accumulate */ - glAccum(GL_LOAD, -1); - - /* compute & return (image - key) */ - glRasterPos2f(0, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img0); - glAccum(GL_ACCUM, 1); - glAccum(GL_RETURN, 1); - - /* move to right hand side of window */ - glRasterPos2f(w, 0); - glCopyPixels(0, 0, w, h, GL_COLOR); - - /* compute & return (key - image) */ - glEnable(GL_SCISSOR_TEST); - glScissor(0, 0, w, h); - glAccum(GL_MULT, -1); - glAccum(GL_RETURN, 1); - glScissor(0, 0, 2*w, h); - glDisable(GL_SCISSOR_TEST); - - /* assemble to get fabs(key - image) */ - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - glRasterPos2i(0, 0); - glCopyPixels(w, 0, w, h, GL_COLOR); - glDisable(GL_BLEND); - - /* assemble into alpha channel */ - { - GLfloat mat[] = { - RW, RW, RW, RW, - GW, GW, GW, GW, - BW, BW, BW, BW, - 0, 0, 0, 0, - }; - glMatrixMode(GL_COLOR); - glLoadMatrixf(mat); - - glRasterPos2i(w, 0); - glCopyPixels(0, 0, w, h, GL_COLOR); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - - /* do a second copy because sbias comes after color matrix in the - * transfer pipeline. could avoid this by using the post color matrix - * scale bias... */ - if (upperfudge - lowerfudge) { - glPixelTransferf(GL_ALPHA_SCALE, 1./(upperfudge - lowerfudge)); - glPixelTransferf(GL_ALPHA_BIAS, -lowerfudge/(upperfudge - lowerfudge)); - } else { - /* move such that upper/lowerfudge maps to .5, then quantize with - * 2-entry pixel map. */ - GLushort quantize[] = {0, 0xffff}; - glPixelTransferf(GL_ALPHA_BIAS, .5 - upperfudge); - glPixelMapusv(GL_PIXEL_MAP_A_TO_A, 2, quantize); - glPixelTransferi(GL_MAP_COLOR, 1); - } - glRasterPos2i(w, 0); - glCopyPixels(w, 0, w, h, GL_COLOR); - glPixelTransferf(GL_ALPHA_SCALE, 1); - glPixelTransferf(GL_ALPHA_BIAS, 0); - glPixelTransferi(GL_MAP_COLOR, 0); - } - - - /* copy matte to right */ - glRasterPos2i(0, 0); - glCopyPixels(w, 0, w, h, GL_COLOR); - - /* draw the third image */ - glColorMask(1, 1, 1, 0); - glRasterPos2i(w, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img2); - glColorMask(1, 1, 1, 1); - - glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA); - glEnable(GL_BLEND); - glRasterPos2i(w, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img1); - - /* this is for matte display... */ - glColor3f(1, 1, 1); - glBegin(GL_QUADS); - glVertex2f(0, 0); - glVertex2f(w, 0); - glVertex2f(w, h); - glVertex2f(0, h); - glEnd(); - - glDisable(GL_BLEND); -} - -void draw(void) -{ - GLenum err; - static int first = 1; - - if (first) { - printf("Scaling images to %d by %d\n", w, h); - - - if (w0 != w || h0 != h) { - img0 = resize_img(img0, w0, h0); - - } - if (w1 != w || h1 != h) { - img1 = resize_img(img1, w1, h1); - } - if (w2 != w || h2 != h) { - img2 = resize_img(img2, w2, h2); - } - first = 0; - } - - - glClear(GL_COLOR_BUFFER_BIT); - compute_matte(); - - glRasterPos2i(w/2, h); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img0); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); -} - -/* ARGSUSED */ -void button(int button, int state, int xpos, int ypos) -{ - if (state != GLUT_UP) return; - - ypos = 2*h - ypos; - glReadPixels(xpos, ypos, 1, 1, GL_RGB, GL_FLOAT, key); - printf("Key is (%f %f %f)\n", key[0], key[1], key[2]); - draw(); -} - -/* ARGSUSED1 */ -void keyPress(unsigned char whichKey, int x, int y) -{ - if (whichKey == 27) exit(0); -} - -void change_lower_fudge(int val) -{ - lowerfudge = (float)val / 100.; - if (upperfudge < lowerfudge) upperfudge = lowerfudge; - draw(); -} - -void change_upper_fudge(int val) -{ - upperfudge = (float)val / 100.; - if (lowerfudge > upperfudge) lowerfudge = upperfudge; - draw(); -} - -void show_usage(void) -{ - fprintf(stderr, "Usage:\n"); - fprintf(stderr, "chromakey mattefile file0 file1 [matteR matteG matteB]\n"); - fprintf(stderr, "chromakey mattefileAndfile0 file1 [matteR matteG matteB]\n"); -} - -main(int argc, char *argv[]) -{ - char *fileName0 = defaultFile0, *fileName1 = defaultFile1, - *fileName2 = defaultFile2; - - glutInit(&argc, argv); - if (argc > 1) { - fileName0 = fileName1 = argv[1]; - } - if (argc > 2) { - fileName2 = argv[2]; - } - if (argc > 3) { - fileName1 = fileName2; - fileName2 = argv[3]; - } - if (argc > 4) { - if (argc == 6 || argc == 7) { - key[0] = atof(argv[argc-3]); - key[1] = atof(argv[argc-2]); - key[2] = atof(argv[argc-1]); - } else { - show_usage(); - exit(1); - } - } - - printf("Matte file is %s\n", fileName0); - printf("Image file 1 is %s\n", fileName1); - printf("Image file 2 is %s\n", fileName2); - printf("Key is (%f %f %f)\n", key[0], key[1], key[2]); - printf("Transparent boundary is %f\n", lowerfudge); - printf("Opaque boundary is %f\n", upperfudge); - img0 = load_img(fileName0, &w0, &h0); - img1 = load_img(fileName1, &w1, &h1); - img2 = load_img(fileName2, &w2, &h2); - -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - w = MAX(MAX(w0, w1), w2); - h = MAX(MAX(h0, h1), h2); - - glutInitWindowSize(2*w, 2*h); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGBA | GLUT_ACCUM | GLUT_ALPHA); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutKeyboardFunc(keyPress); - glutReshapeFunc(reshape); - glutMouseFunc(button); - - { - int lowerFudgeMenu, upperFudgeMenu; - lowerFudgeMenu = glutCreateMenu(change_lower_fudge); - glutAddMenuEntry("0", 0); - glutAddMenuEntry(".1", 20); - glutAddMenuEntry(".25", 20); - glutAddMenuEntry(".5", 50); - glutAddMenuEntry(".75", 75); - upperFudgeMenu = glutCreateMenu(change_upper_fudge); - glutAddMenuEntry(".25", 20); - glutAddMenuEntry(".5", 50); - glutAddMenuEntry(".75", 75); - glutAddMenuEntry(".9", 90); - glutAddMenuEntry("1", 100); - glutCreateMenu(0); - glutAddSubMenu("Transparent boundary", lowerFudgeMenu); - glutAddSubMenu("Opaque boundary", upperFudgeMenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - } - - init(); - - reshape(w, h); - glutMainLoop(); - return 0; -} - - diff --git a/lib/glut-3.7.6/progs/advanced97/chromakey_fancy.dsp b/lib/glut-3.7.6/progs/advanced97/chromakey_fancy.dsp deleted file mode 100644 index 503ddc01eddc9c5bbbb089a49c8a777c81a8b4ff..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/chromakey_fancy.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="chromakey_fancy" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=chromakey_fancy - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "chromakey_fancy.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "chromakey_fancy.mak" CFG="chromakey_fancy - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "chromakey_fancy - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "chromakey_fancy - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "chromakey_fancy - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "chromakey_fancy - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "chromakey_fancy - Win32 Release" -# Name "chromakey_fancy - Win32 Debug" -# Begin Source File - -SOURCE=.\chromakey_fancy.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/cloud.c b/lib/glut-3.7.6/progs/advanced97/cloud.c deleted file mode 100644 index 2cfc6b65ae30dc46da698d7cbf7319182aff8409..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/cloud.c +++ /dev/null @@ -1,243 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define expf(x) ((float)exp((x))) -#endif - -static float ttrans[2]; -static float scale = 1.; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -#if NATE -void -wire(void) { - static int w; - if (w ^= 1) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); -} -#endif - -void up(void) { scale += .1; } -void down(void) { scale -= .1; } - -void -animate(void) { - ttrans[0] += .01; - if (ttrans[0] == 1.0) ttrans[0] = 0; - ttrans[1] += .005; - if (ttrans[1] == 1.0) ttrans[1] = 0; - glutPostRedisplay(); -} - -void help(void) { - printf("Usage: cloud [image]\n"); - printf("'h' - help\n"); -#if NATE - printf("'w' - toggle wireframe\n"); -#endif - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("left mouse - pan\n"); - printf("right mouse - rotate\n"); -} - -void init(char *filename) { - GLfloat cloud_color[4] = { 1., 1., 1., 0., }; - GLfloat fog_color[4], fog_density = 0.05, density, far_cull; - unsigned *image; - int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components != 1) { - printf("must be a bw image\n"); - exit(EXIT_FAILURE); - } - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 512; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if (i & 32) - img[4*(i+j*width)+0] = 0xff; - else - img[4*(i+j*width)+1] = 0xff; - if (j&32) - img[4*(i+j*width)+2] = 0xff; - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, cloud_color); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,far_cull = 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - - density = 1.- expf(-5.5 * fog_density * fog_density * - far_cull * far_cull); - -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#define MIN(a,b) ((a) < (b) ? (a) : (b)) - density = MAX(MIN(density, 1.), 0.); - - fog_color[0] = .23 + density *.57; - fog_color[1] = .35 + density *.45; - fog_color[2] = .78 + density *.22; - - glClearColor(fog_color[0], fog_color[1], fog_color[2], 1.f); - - glFogi(GL_FOG_MODE, GL_EXP2); - glFogf(GL_FOG_DENSITY, fog_density); - glFogfv(GL_FOG_COLOR, fog_color); - if (fog_density > 0) - glEnable(GL_FOG); -} - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glScalef(scale,scale,1.); - glScalef(10,1,10); - glColor3f(.19, .25, .70); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - glTranslatef(ttrans[0], ttrans[1], 0.); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1., 1., -1.); - glTexCoord2f(0, 5); glVertex3f(-1., 1., 1.); - glTexCoord2f(5, 5); glVertex3f( 1., 1., 1.); - glTexCoord2f(5, 0); glVertex3f( 1., 1., -1.); - glEnd(); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { -#if NATE - case 'w': wire(); break; -#endif - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/*ARGSUSED1*/ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - } -} - -int main(int argc, char** argv) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - (void)glutCreateWindow(argv[0]); - init(argc == 1 ? "../data/clouds.bw" : argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/cloud.dsp b/lib/glut-3.7.6/progs/advanced97/cloud.dsp deleted file mode 100644 index 13b30cd56dd0d6b5e4e3cf81c9ac2454d93d7b16..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/cloud.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cloud" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cloud - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cloud.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cloud.mak" CFG="cloud - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cloud - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cloud - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cloud - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cloud - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cloud - Win32 Release" -# Name "cloud - Win32 Debug" -# Begin Source File - -SOURCE=.\cloud.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/cloudl.c b/lib/glut-3.7.6/progs/advanced97/cloudl.c deleted file mode 100644 index 8e001c2900fa1611af542393a801d54d28f6c921..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/cloudl.c +++ /dev/null @@ -1,285 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define expf(x) ((float)exp((x))) -#endif - -static float ttrans[2]; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void -animate(void) { - ttrans[0] += .010f; - if (ttrans[0] == 1.0f) ttrans[0] = 0.0f; - ttrans[1] -= .020f; - if (ttrans[1] <= 0.0f) ttrans[1] = 1.0f; - glutPostRedisplay(); -} - -void xfunc(void) { - static state = 1; - glutIdleFunc((state ^= 1) ? animate : NULL); -} - -void help(void) { - printf("Usage: cloudl [image]\n"); - printf("'h' - help\n"); - printf("'x' - toggle cloud motion\n"); - printf("left mouse - pan\n"); - printf("middle mouse - rotate\n"); -} - -void init(char *filename) { - GLfloat fog_color[4], fog_density = 0.05, density, far_cull; - unsigned *image; - int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components != 1 && components != 2) { - printf("must be a l or la image\n"); - exit(EXIT_FAILURE); - } - if (components == 1) { - /* hack for RE */ - int i; - GLubyte *p = (GLubyte *)image; - for(i = 0; i < width*height; i++) { - p[i*4+3] = p[i*4+0]; - } - components = 2; - } - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 512; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if (i & 32) - img[4*(i+j*width)+0] = 0xff; - else - img[4*(i+j*width)+1] = 0xff; - if (j&32) - img[4*(i+j*width)+2] = 0xff; - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - /*glEnable(GL_TEXTURE_2D);*/ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,far_cull = 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - - density = 1.- expf(-5.5 * fog_density * fog_density * - far_cull * far_cull); - -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#define MIN(a,b) ((a) < (b) ? (a) : (b)) - density = MAX(MIN(density, 1.), 0.); - - fog_color[0] = .23*.2 + density *.57*.2; - fog_color[1] = .35*.2 + density *.45*.2; - fog_color[2] = .78*.5 + density *.22*.2; - - glClearColor(fog_color[0], fog_color[1], fog_color[2], 1.f); - - glFogi(GL_FOG_MODE, GL_EXP2); - glFogf(GL_FOG_DENSITY, fog_density); - glFogfv(GL_FOG_COLOR, fog_color); - if (fog_density > 0) - glEnable(GL_FOG); - glLineWidth(2.0f); - glEnable(GL_LINE_SMOOTH); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glPointSize(10.f); - glEnable(GL_POINT_SMOOTH); - glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); -} - -void draw_base(void) { - glColor4f(.1, .3, .1, 1.0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1.f, 0.f, -1.f); - glTexCoord2f(0, 1); glVertex3f(-1.f, 0.f, 1.f); - glTexCoord2f(1, 1); glVertex3f( 1.f, 0.f, 1.f); - glTexCoord2f(1, 0); glVertex3f( 1.f, 0.f, -1.f); - glEnd(); -} - -void draw_runway(void) { - glColor4f(.1, .1, .1, 1.0); - glPushMatrix(); - glScalef(.1f, 1.f, 1.f); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1.f, 0.f, -1.f); - glTexCoord2f(0, 1); glVertex3f(-1.f, 0.f, 1.f); - glTexCoord2f(1, 1); glVertex3f( 1.f, 0.f, 1.f); - glTexCoord2f(1, 0); glVertex3f( 1.f, 0.f, -1.f); - glEnd(); - glPopMatrix(); -} - -void draw_lights(void) { - int i; - - glEnable(GL_BLEND); - glColor4f(.7f, .7f, .1f, 1.0); - glPushMatrix(); - glScalef(.1f, 1.f, 1.f); - glEnable(GL_POINT_SMOOTH); - for(i = 0; i <= 20; i++) { - glPointSize((float)i/2.); - glBegin(GL_POINTS); - glVertex3f(-1.f, 0.f, -1.f+2.f/20*i); - glVertex3f( 1.f, 0.f, -1.f+2.f/20*i); - glEnd(); - } - glPopMatrix(); - glDisable(GL_BLEND); -} - -void -draw_clouds(void) { - glEnable(GL_BLEND); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - glTranslatef(ttrans[0], ttrans[1], 0.); - glColor4f(1.f, 1.f, 1.f, 1.0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1., .2, -1.); - glTexCoord2f(0, 5); glVertex3f(-1., .2, 1.); - glTexCoord2f(5, 5); glVertex3f( 1., .2, 1.); - glTexCoord2f(5, 0); glVertex3f( 1., .2, -1.); - glEnd(); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); -} - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glScalef(10,1,10); - glTranslatef(0.f,-1.f,0.f); - draw_base(); - draw_runway(); - draw_lights(); - draw_clouds(); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'x': xfunc(); break; - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - (void)glutCreateWindow(argv[0]); - init(argc == 1 ? "../data/clouds.bw" : argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/cloudl.dsp b/lib/glut-3.7.6/progs/advanced97/cloudl.dsp deleted file mode 100644 index c32a3d43a4fea41a13c6561b3ba93646957e9896..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/cloudl.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cloudl" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cloudl - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cloudl.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cloudl.mak" CFG="cloudl - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cloudl - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cloudl - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cloudl - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cloudl - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cloudl - Win32 Release" -# Name "cloudl - Win32 Debug" -# Begin Source File - -SOURCE=.\cloudl.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/complexity.c b/lib/glut-3.7.6/progs/advanced97/complexity.c deleted file mode 100644 index 8f334b2c20ce340fad2282eac44c3e9128f1a094..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/complexity.c +++ /dev/null @@ -1,234 +0,0 @@ -/* This program demonstrates how to use the stencil buffer to visualize -** the depth complexity of a scene. -*/ - -#include -#include -#include - -/* show contents of stencil buffer */ -int winwid = 512; -int winht = 512; -GLubyte *stencil = 0; /* so realloc works the first time */ - -void resize(int wid, int ht) -{ - winwid = wid; - winht = ht; - stencil = (GLubyte *)realloc((void*)stencil, - winwid * winht * sizeof(GLubyte)); - glViewport(0, 0, wid, ht); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if(key == '\033') - exit(0); -} - -int rotate = 0; -GLfloat udangle = 0.f; -GLfloat lrangle = 0.f; - -void motion(int x, int y) -{ - if(rotate) - { - udangle = (y - winht/2) * 360./winht; - lrangle = (x - winwid/2) * 360./winwid; - } - glutPostRedisplay(); -} - -void mouse(int button, int state, int x, int y) -{ - if(state == GLUT_DOWN) - switch(button) - { - case GLUT_LEFT_BUTTON: /* rotate the scene up and down */ - case GLUT_MIDDLE_BUTTON: /* rotate the scene left and right */ - rotate = 1; - motion(x, y); - break; - } - else - rotate = 0; /* overkill; cover right button too */ -} - - -/* read back stencil buffer, store in memory, draw back colorized */ -void showstencil(void) -{ - glReadPixels(0, 0, winwid, winht, GL_STENCIL_INDEX, - GL_UNSIGNED_BYTE, stencil); - - glRasterPos2i(-1, -1); - glDrawPixels(winwid, winht, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, stencil); -} - - -int showdepth = 0; -int depthtest = 1; -/* Called when window needs to be redrawn */ -void redraw(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); - - glEnable(GL_STENCIL_TEST); - if(depthtest) - glEnable(GL_DEPTH_TEST); - - glPushMatrix(); - glRotatef(lrangle, 0.f, 1.f, 0.f); - glRotatef(udangle, 1.f, 0.f, 0.f); - glCallList(1); /* draw scene */ - glPopMatrix(); - - glDisable(GL_STENCIL_TEST); - glFlush(); /* high end machines may need this */ - - if(depthtest) - glDisable(GL_DEPTH_TEST); - - if(showdepth) - showstencil(); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - glutSwapBuffers(); -} - -/* menu entries mapped to actions */ -enum {RENDER, SHOW_STENCIL, DEPTH_TEST}; -void menu(int choice) -{ - switch(choice) - { - case RENDER: - showdepth = 0; - break; - case SHOW_STENCIL: - showdepth = 1; - break; - case DEPTH_TEST: - depthtest = !depthtest; - if(depthtest) - /* show how many pixels were discarded by depth test */ - glStencilOp(GL_KEEP, GL_INCR, GL_KEEP); - else - /* show how many pixels were written to frame buffer */ - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); - break; - } - glutPostRedisplay(); -} - -typedef struct { - GLfloat r; - GLfloat g; - GLfloat b; -} Color; - -/* color map to indicate different depth complexities */ -Color map[] = { - {0.f, 0.f, 0.f,}, - {0.f, .25f, 0.f,}, - {0.f, .5f, 0.f,}, - {0.f, .75f, 0.f,}, - {0.f, 1.f, 0.f,}, - {.25f, 1.f, 0.f,}, - {.5f, 1.f, 0.f,}, - {.75f, 1.f, 0.f,}, - {1.f, 1.f, 0.f,}, - {1.f, .75f, 0.f,}, - {1.f, .5f, 0.f,}, - {1.f, .25f, 0.f,}, - {1.f, .0f, 0.f,}, - {1.f, .0f, 0.f,}, - {1.f, .0f, 0.f,}, - {1.f, .0f, 0.f,} -}; - -/* mapsize should be a power of two */ -#define mapsize 16 -GLfloat lightpos[4] = {.5f, .5f, -1.f, 1.f}; -main(int argc, char *argv[]) -{ - GLfloat rmap[mapsize], gmap[mapsize], bmap[mapsize]; - int i; - - glutInit(&argc, argv); - glutInitWindowSize(winwid, winht); - glutInitDisplayMode(GLUT_RGBA|GLUT_STENCIL|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow("visualizing depth complexity"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutReshapeFunc(resize); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glutCreateMenu(menu); - glutAddMenuEntry("Draw Scene", RENDER); - glutAddMenuEntry("Show Stencil", SHOW_STENCIL); - glutAddMenuEntry("Toggle Depth Test", DEPTH_TEST); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glStencilFunc(GL_ALWAYS, ~0, ~0); - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); - - /* draw an interesting scene */ - glNewList(1, GL_COMPILE); - /* center */ - glPushMatrix(); - glScalef(.2f, .2f, .2f); - glutSolidTetrahedron(); - glPopMatrix(); - /* right */ - glTranslatef(.4f, 0.f, 0.f); - glutSolidSphere(.25, 8, 8); - /* left */ - glTranslatef(-.8f, 0.f, 0.f); - glutSolidSphere(.25, 8, 8); - /* bottom */ - glTranslatef(.4f, -.4f, 0.f); - glutSolidSphere(.25, 8, 8); - /* top */ - glTranslatef(0.f, .8f, 0.f); - glutSolidSphere(.25, 8, 8); - - /* lefttop */ - glTranslatef(-.5f, .1f, 0.f); - glutSolidCube(.3); - /* righttop */ - glTranslatef(1.f, 0.f, 0.f); - glutSolidCube(.3); - /* rightbot */ - glTranslatef(0.f, -1.f, 0.f); - glutSolidCube(.3); - /* rightbot */ - glTranslatef(-1.f, 0.f, 0.f); - glutSolidCube(.3); - glEndList(); - - /* color ramp to show increasing complexity */ - /* black shading to green to yellow to red */ - for(i = 0; i < mapsize; i++) - { - rmap[i] = map[i].r; - gmap[i] = map[i].g; - bmap[i] = map[i].b; - } - - glPixelMapfv(GL_PIXEL_MAP_I_TO_R, mapsize, rmap); - glPixelMapfv(GL_PIXEL_MAP_I_TO_G, mapsize, gmap); - glPixelMapfv(GL_PIXEL_MAP_I_TO_B, mapsize, bmap); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/complexity.dsp b/lib/glut-3.7.6/progs/advanced97/complexity.dsp deleted file mode 100644 index f507b449e9a0e71ba77e2891dbd1cffeccb60181..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/complexity.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="complexity" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=complexity - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "complexity.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "complexity.mak" CFG="complexity - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "complexity - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "complexity - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "complexity - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "complexity - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "complexity - Win32 Release" -# Name "complexity - Win32 Debug" -# Begin Source File - -SOURCE=.\complexity.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/csg.c b/lib/glut-3.7.6/progs/advanced97/csg.c deleted file mode 100644 index ab10611141d439d08469a26dfabd908506c1767c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/csg.c +++ /dev/null @@ -1,1408 +0,0 @@ -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define TRUE 1 -#define FALSE 0 - -/* - * #define the following symbol if you know your glClear honors the - * stencil mask. The O2 workstation stencil clear doesn't appear - * to honor the mask, so we use a workaround. The workaround may work - * on any other OpenGL which has this clear bug. - */ -#undef CLEAR_HONORS_STENCIL_MASK - - -GLUquadricObj *quadric; - - -int doCSG = 0; -int whereToStop = -1; -typedef enum {CONTINUE, STOP} progressEnum; -int whichTree = 0; -int showSurfaces = 1; -int showOnlyCurrent = 0; -int stenSize; -enum {COLOR, DEPTH, STENCILVALUES, STENCILPLANES} bufferInterest = COLOR; - - -void drawFace(void) -{ - glBegin(GL_QUADS); - glNormal3i(0, 0, 1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glEnd(); -} - - -void drawBox(void) -{ - glPushMatrix(); - - drawFace(); - - glRotatef(90, 1, 0, 0); - drawFace(); - - glRotatef(90, 1, 0, 0); - drawFace(); - - glRotatef(90, 1, 0, 0); - drawFace(); - - glPopMatrix(); - - glPushMatrix(); - - glRotatef(90, 0, 1, 0); - drawFace(); - - glRotatef(180, 0, 1, 0); - drawFace(); - - glPopMatrix(); -} - - -void drawCylinder(void) -{ - glPushMatrix(); - - glTranslatef(0, 0, -.5); - gluCylinder(quadric, 1, 1, 1, 30, 5); - - glRotatef(180, 0, 1, 0); - gluDisk(quadric, 0, 1, 30, 2); - - glPopMatrix(); - - glPushMatrix(); - - glTranslatef(0, 0, .5); - gluDisk(quadric, 0, 1, 30, 2); - - glPopMatrix(); -} - - -void drawCone(void) -{ - glPushMatrix(); - - glTranslatef(0, 0, -.5); - gluCylinder(quadric, 1, 0, 1, 30, 5); - - glRotatef(180, 0, 1, 0); - gluDisk(quadric, 0, 1, 30, 2); - - glPopMatrix(); -} - - -void drawSphere(void) -{ - gluSphere(quadric, 1, 30, 20); -} - - -struct transformation { - float translation[3]; - float rotation[4]; - float scale[3]; -}; - - -struct primitive { - float color[4]; - void (*draw)(void); - struct transformation xform; -}; - - -struct transformation globalXform = { - 0, 0, 0, - 1, 0, 0, 0, - 1, 1, 1 -}; - - -struct primitive prims[20] = { - { - {.5, .5, 1}, - drawBox, - { - -3, 0, 0, - 1, 0, 0, 0, - 1, 1, 1 - } - }, - { - {1, .5, .5}, - drawCylinder, - { - -1, 0, 0, - 1, 0, 0, 0, - 1, 1, 1 - } - }, - { - {.5, 1, .5}, - drawCone, - { - 1, 0, 0, - 1, 0, 0, 0, - 1, 1, 1 - } - }, - { - {1, .5, 1}, - drawSphere, - { - 3, 0, 0, - 1, 0, 0, 0, - 1, 1, 1 - } - } -}; - - -int numPrims = 4; -int curPrim = 0; - - -void drawXform(struct transformation *xform, int applyScale) -{ - glTranslatef(xform->translation[0], xform->translation[1], xform->translation[2]); - glRotatef(xform->rotation[3] / M_PI * 180, xform->rotation[0], xform->rotation[1], xform->rotation[2]); - if(applyScale) - glScalef(xform->scale[0], xform->scale[1], xform->scale[2]); -} - - -int magicTranspHack = 0; - - -void drawPrim(int i) -{ - struct primitive *p = &prims[i]; - struct transformation *xform = &p->xform; - - if(magicTranspHack) - { - float c[4]; - c[0] = p->color[0]; - c[1] = p->color[1]; - c[2] = p->color[2]; - c[3] = .25; - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); - } - else - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, p->color); - glPushMatrix(); - drawXform(xform, TRUE); - p->draw(); - glPopMatrix(); -} - - -struct product { - int targetPrim; - int frontFace; - int whichSurface; - int numTrimPrims; - int *trimmingPrims; - int *isComplemented; -}; - - -int prodAtrimmingPrims1[] = {1}; -int prodAisComplemented1[] = {1}; -int prodBtrimmingPrims1[] = {0}; -int prodBisComplemented1[] = {0}; - - -int prodAtrimmingPrims2[] = {1}; -int prodAisComplemented2[] = {0}; -int prodBtrimmingPrims2[] = {0}; -int prodBisComplemented2[] = {1}; - - -int prodAtrimmingPrims3[] = {1}; -int prodAisComplemented3[] = {0}; -int prodBtrimmingPrims3[] = {0}; -int prodBisComplemented3[] = {0}; - - -int prodAtrimmingPrims4[] = {1, 2, 3}; -int prodAisComplemented4[] = {0, 1, 1}; -int prodBtrimmingPrims4[] = {1, 0, 2}; -int prodBisComplemented4[] = {0, 0, 1}; -int prodCtrimmingPrims4[] = {1, 0, 3}; -int prodCisComplemented4[] = {0, 0, 1}; -int prodDtrimmingPrims4[] = {0, 2, 3}; -int prodDisComplemented4[] = {0, 1, 1}; - - -struct product products[][4] = { - { /* A - B */ - { - 0, 1, 0, - 1, - prodAtrimmingPrims1, - prodAisComplemented1, - }, - { - 1, 0, 0, - 1, - prodBtrimmingPrims1, - prodBisComplemented1, - }, - }, - - { /* B - A */ - { - 0, 0, 0, - 1, - prodAtrimmingPrims2, - prodAisComplemented2, - }, - { - 1, 1, 0, - 1, - prodBtrimmingPrims2, - prodBisComplemented2, - }, - }, - - { /* A and B */ - { - 0, 1, 0, - 1, - prodAtrimmingPrims3, - prodAisComplemented3, - }, - { - 1, 1, 0, - 1, - prodBtrimmingPrims3, - prodBisComplemented3, - }, - }, - - { /* A and B - D - C */ - { - 0, 1, 0, - 3, - prodAtrimmingPrims4, - prodAisComplemented4, - }, - { - 3, 0, 0, - 3, - prodBtrimmingPrims4, - prodBisComplemented4, - }, - { - 2, 0, 0, - 3, - prodCtrimmingPrims4, - prodCisComplemented4, - }, - { - 1, 1, 0, - 3, - prodDtrimmingPrims4, - prodDisComplemented4, - }, - }, -}; - - -int numProducts[4] = {2, 2, 2, 4}; - - -int winWidth, winHeight; -GLfloat *depthSave = NULL; -GLubyte *stencilSave = NULL; -GLubyte *colorSave = NULL; - - -void resizeBuffers(void) -{ - if(colorSave != NULL) - free(colorSave); - colorSave = malloc(winWidth * winHeight * 4 * sizeof(GLubyte)); - if(depthSave != NULL) - free(depthSave); - depthSave = malloc(winWidth * winHeight * sizeof(GLfloat)); - stencilSave = (GLubyte *)depthSave; -} - - -void pushOrthoView(float left, float right, float bottom, float top, - float znear, float zfar) -{ - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(left, right, bottom, top, znear, zfar); -} - - -void popView(void) -{ - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - - -void copyDepthToColor(GLenum whichColorBuffer) -{ - int x, y; - GLfloat max, min; - GLint previousColorBuffer; - - glReadPixels(0, 0, winWidth, winHeight, GL_DEPTH_COMPONENT, GL_FLOAT, - depthSave); - - /* I'm sure this could be done much better with OpenGL */ - max = 0; - min = 1; - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - if(depthSave[winWidth * y + x] < min) - min = depthSave[winWidth * y + x]; - if(depthSave[winWidth * y + x] > max && depthSave[winWidth * y + x] < .999) - max = depthSave[winWidth * y + x]; - } - - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - if(depthSave[winWidth * y + x] <= max) - depthSave[winWidth * y + x] = 1 - (depthSave[winWidth * y + x] - min) / (max - min); - else - depthSave[winWidth * y + x] = 0; - } - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glGetIntegerv(GL_DRAW_BUFFER, &previousColorBuffer); - glDrawBuffer(whichColorBuffer); - glDrawPixels(winWidth, winHeight, GL_LUMINANCE , GL_FLOAT, depthSave); - glDrawBuffer(previousColorBuffer); - glEnable(GL_DEPTH_TEST); - popView(); -} - - -unsigned char stencilValueToColorMap[][3] = -{ - {255, 0, 0}, /* red */ - {255, 218, 0}, /* yellow */ - {72, 255, 0}, /* yellowish green */ - {0, 255, 145}, /* bluish cyan */ - {0, 145, 255}, /* cyanish blue */ - {72, 0, 255}, /* purplish blue */ - {255, 0, 218}, /* reddish purple */ -}; - - -void copyStencilValuesToColor(GLenum whichColorBuffer) -{ - int x, y; - GLint previousColorBuffer; - - glReadPixels(0, 0, winWidth, winHeight, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, - stencilSave); - - /* I'm sure this could be done much better with OpenGL */ - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - int stencilValue; - - stencilValue = stencilSave[winWidth * y + x]; - - colorSave[(winWidth * y + x) * 3 + 0] = - stencilValueToColorMap[stencilValue % 7][0]; - colorSave[(winWidth * y + x) * 3 + 1] = - stencilValueToColorMap[stencilValue % 7][1]; - colorSave[(winWidth * y + x) * 3 + 2] = - stencilValueToColorMap[stencilValue % 7][2]; - } - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glGetIntegerv(GL_DRAW_BUFFER, &previousColorBuffer); - glDrawBuffer(whichColorBuffer); - glDrawPixels(winWidth, winHeight, GL_RGB, GL_UNSIGNED_BYTE, colorSave); - glDrawBuffer(previousColorBuffer); - glEnable(GL_DEPTH_TEST); - popView(); -} - - -/* - * XXX This function should make colors that identify individual bits in - * the stencil buffer, but it seems like too hard a problem to solve - * in five minutes. Fix later. - */ -void copyStencilPlanesToColor(GLenum whichColorBuffer) -{ - int x, y; - GLint previousColorBuffer; - - glReadPixels(0, 0, winWidth, winHeight, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, - stencilSave); - - /* I'm sure this could be done much better with OpenGL */ - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - /* Have to think of something clever to do here */ - } - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glGetIntegerv(GL_DRAW_BUFFER, &previousColorBuffer); - glDrawBuffer(whichColorBuffer); - glDrawPixels(winWidth, winHeight, GL_RGB, GL_UNSIGNED_BYTE, colorSave); - glDrawBuffer(previousColorBuffer); - glEnable(GL_DEPTH_TEST); - popView(); -} - - -void copyInterest(void) -{ - switch(bufferInterest) { - case COLOR: - break; /* Well, that's already there. */ - - case STENCILVALUES: - copyStencilValuesToColor(GL_BACK); - break; - - case STENCILPLANES: - copyStencilPlanesToColor(GL_BACK); - break; - - case DEPTH: - copyDepthToColor(GL_BACK); - break; - } -} - - -void axisamountToMat(float aa[], float mat[]) -{ - float c, s, t; - - c = (float)cos(aa[3]); - s = (float)sin(aa[3]); - t = 1.0f - c; - - mat[0] = t * aa[0] * aa[0] + c; - mat[1] = t * aa[0] * aa[1] + s * aa[2]; - mat[2] = t * aa[0] * aa[2] - s * aa[1]; - mat[3] = t * aa[0] * aa[1] - s * aa[2]; - mat[4] = t * aa[1] * aa[1] + c; - mat[5] = t * aa[1] * aa[2] + s * aa[0]; - mat[6] = t * aa[0] * aa[2] + s * aa[1]; - mat[7] = t * aa[1] * aa[2] - s * aa[0]; - mat[8] = t * aa[2] * aa[2] + c; -} - - -void matToAxisamount(float mat[], float aa[]) -{ - float c; - float s; - - c = (mat[0] + mat[4] + mat[8] - 1.0f) / 2.0f; - aa[3] = (float)acos(c); - s = (float)sin(aa[3]); - if(fabs(s / M_PI - (int)(s / M_PI)) < .0000001) - { - aa[0] = 0.0f; - aa[1] = 1.0f; - aa[2] = 0.0f; - } - else - { - aa[0] = (mat[5] - mat[7]) / (2.0f * s); - aa[1] = (mat[6] - mat[2]) / (2.0f * s); - aa[2] = (mat[1] - mat[3]) / (2.0f * s); - } -} - - -void multMat(float m1[], float m2[], float r[]) -{ - float t[9]; - int i; - - t[0] = m1[0] * m2[0] + m1[1] * m2[3] + m1[2] * m2[6]; - t[1] = m1[0] * m2[1] + m1[1] * m2[4] + m1[2] * m2[7]; - t[2] = m1[0] * m2[2] + m1[1] * m2[5] + m1[2] * m2[8]; - t[3] = m1[3] * m2[0] + m1[4] * m2[3] + m1[5] * m2[6]; - t[4] = m1[3] * m2[1] + m1[4] * m2[4] + m1[5] * m2[7]; - t[5] = m1[3] * m2[2] + m1[4] * m2[5] + m1[5] * m2[8]; - t[6] = m1[6] * m2[0] + m1[7] * m2[3] + m1[8] * m2[6]; - t[7] = m1[6] * m2[1] + m1[7] * m2[4] + m1[8] * m2[7]; - t[8] = m1[6] * m2[2] + m1[7] * m2[5] + m1[8] * m2[8]; - for(i = 0; i < 9; i++) - { - r[i] = t[i]; - } -} - - -void rotateTrackball(int dx, int dy, float rotation[4]) -{ - float dist; - float oldMat[9]; - float rotMat[9]; - float newRot[4]; - - dist = (float)sqrt((double)(dx * dx + dy * dy)); - if(fabs(dist) < 0.99) - return; - - newRot[0] = (float) dy / dist; - newRot[1] = (float) dx / dist; - newRot[2] = 0.0f; - newRot[3] = (float)M_PI * dist / winWidth; - - axisamountToMat(rotation, oldMat); - axisamountToMat(newRot, rotMat); - multMat(oldMat, rotMat, oldMat); - matToAxisamount(oldMat, rotation); - - dist = (float)sqrt(rotation[0] * rotation[0] + rotation[1] * rotation[1] + - rotation[2] * rotation[2]); - - rotation[0] /= dist; - rotation[1] /= dist; - rotation[2] /= dist; -} - - -struct transformation *curXform; - - -void init(void) -{ - glMatrixMode(GL_PROJECTION); - glFrustum(-.33, .33, -.33, .33, .5, 40); - - glMatrixMode(GL_MODELVIEW); - gluLookAt(0, 0, 7, 0, 0, 0, 0, 1, 0); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glEnable(GL_NORMALIZE); - - quadric = gluNewQuadric(); - - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - - curXform = &prims[0].xform; -} - - -void setupLight(void) -{ - static GLfloat lightpos[] = {0, 1, 0, 0}; - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); -} - - -void redrawNoCSG(void) -{ - int i; - - glDisable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - glDepthMask(GL_TRUE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - drawXform(&globalXform, FALSE); - - for(i = 0; i < numPrims; i++) - { - if(i == curPrim || !showOnlyCurrent) - drawPrim(i); - } - - glPopMatrix(); - - copyInterest(); - - glutSwapBuffers(); -} - - -int whereSoFar; - - -GLfloat *depthResults = NULL; - - -void saveDepth(void) -{ - depthResults = realloc(depthResults, winWidth * winHeight * - sizeof(GLfloat)); - glReadPixels(0, 0, winWidth, winHeight, GL_DEPTH_COMPONENT, GL_FLOAT, - depthResults); -} - - -void restoreDepth(void) -{ - glStencilMask(0); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glDepthMask(GL_TRUE); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_ALWAYS); - glDisable(GL_STENCIL_TEST); - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - - glDrawPixels(winWidth, winHeight, GL_DEPTH_COMPONENT, GL_FLOAT, - depthResults); - - popView(); -} - - -#define COPY_AND_RETURN_IF_DONE(s) \ - { \ - if(whereSoFar++ == whereToStop) { \ - printf("%s\n", s); \ - return(STOP); \ - } \ - } - - -#define COPY_AND_GOTO_IF_DONE(s) \ - { \ - if(whereSoFar++ == whereToStop) { \ - printf("%s\n", s); \ - goto doneWithFrame; \ - } \ - } - - -int sCountMask = 0x01; /* 1-convexity maximum */ -int sCountShift = 0; -int sPMask = 1; -int sPShift = 0; - - -void drawFarRect(void) -{ - pushOrthoView(0, 1, 0, 1, 0, 1); - - /* Can I just draw & let be clipped? */ - glBegin(GL_QUADS); - glVertex3f(0, 0, -1); - glVertex3f(1, 0, -1); - glVertex3f(1, 1, -1); - glVertex3f(0, 1, -1); - glEnd(); - - popView(); -} - - -progressEnum renderPrimDepths(int targetPrim, int frontFace, int whichSurface) -{ - glClear(GL_DEPTH_BUFFER_BIT); - - - glDepthFunc(GL_ALWAYS); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glStencilMask(sCountMask); - -#ifndef CLEAR_HONORS_STENCIL_MASK /* see comment at beginning of source */ - - glDisable(GL_CULL_FACE); - glDisable(GL_DEPTH_TEST); - glDepthMask(GL_FALSE); - - glStencilFunc(GL_ALWAYS, 0, 0); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - drawFarRect(); - - COPY_AND_RETURN_IF_DONE("After clearing p bit in stencil"); - -#else - - glClearStencil(0); - glClear(GL_STENCIL_BUFFER_BIT); - -#endif - - glEnable(GL_CULL_FACE); - if(frontFace) - glCullFace(GL_BACK); - else - glCullFace(GL_FRONT); - - glEnable(GL_DEPTH_TEST); - glDepthMask(GL_TRUE); - - glStencilFunc(GL_EQUAL, whichSurface, sCountMask); - glStencilOp(GL_INCR, GL_INCR, GL_INCR); - - drawPrim(targetPrim); - - return(CONTINUE); -} - - -progressEnum trimWithPrimitive(int trimPrim, int isComplemented) -{ - glDepthFunc(GL_LESS); - glEnable(GL_STENCIL_TEST); - glDepthMask(GL_FALSE); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glStencilMask(sPMask); - glDisable(GL_CULL_FACE); - -#ifndef CLEAR_HONORS_STENCIL_MASK /* see comment at beginning of source */ - - glDisable(GL_DEPTH_TEST); - - glStencilFunc(GL_ALWAYS, isComplemented ? (1 << sPShift) : 0, 0); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - drawFarRect(); - -#else - - glClearStencil(isComplemented ? (1 << sPShift) : 0); - glClear(GL_STENCIL_BUFFER_BIT); - -#endif - - glEnable(GL_DEPTH_TEST); - glStencilFunc(GL_ALWAYS, 0, 0); - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - drawPrim(trimPrim); - - COPY_AND_RETURN_IF_DONE("After setting stencil to mark depths " - "inside trimming primitive"); - - /* stencil == 0 where pixels were not inside */ - /* so now set Z to far where stencil == 0, everywhere pixels trimmed */ - - glStencilFunc(GL_EQUAL, 0, sPMask); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glDepthMask(1); - glDepthFunc(GL_ALWAYS); - glDisable(GL_LIGHTING); - drawFarRect(); - glEnable(GL_LIGHTING); - - COPY_AND_RETURN_IF_DONE("After clearing depths where target outside " - "trimming primitive"); - - return(CONTINUE); -} - - -progressEnum markProductPixels(int product, int accumBit) -{ - int i; - - struct product *p; - - p = &products[whichTree][product]; - - if(renderPrimDepths(p->targetPrim, p->frontFace, p->whichSurface) == STOP) - return(STOP); - - COPY_AND_RETURN_IF_DONE("After rendering target depths"); - - for(i = 0; i < p->numTrimPrims; i++) - { - if(trimWithPrimitive(p->trimmingPrims[i], p->isComplemented[i]) == STOP) - return(STOP); - } - - COPY_AND_RETURN_IF_DONE("After target has been trimmed by all " - "trimming primitives"); - - /* set accumulator stencil bit for this primitive everywhere depth != far */ - glStencilFunc(GL_ALWAYS, 1 << accumBit, 0); - glStencilOp(GL_KEEP, GL_ZERO, GL_REPLACE); - glStencilMask(1 << accumBit); - glDepthMask(0); - glDepthFunc(GL_GREATER); - glDisable(GL_LIGHTING); - drawFarRect(); - glEnable(GL_LIGHTING); - - COPY_AND_RETURN_IF_DONE("After setting accumulator where depths != far"); - - return(CONTINUE); -} - - -progressEnum drawProduct(int product, int accumBit) -{ - struct product *p; - p = &products[whichTree][product]; - - glEnable(GL_CULL_FACE); - if(p->frontFace) - glCullFace(GL_BACK); - else - glCullFace(GL_FRONT); - - glDepthMask(GL_TRUE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_EQUAL, 1 << accumBit, 1 << accumBit); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - drawPrim(p->targetPrim); - - COPY_AND_RETURN_IF_DONE("After drawing target color and depth"); - - return(CONTINUE); -} - - -void redrawCSG(void) -{ - int i; - int accumBit; - int firstProduct; - int lastProduct; - - whereSoFar = 0; - glDepthMask(GL_TRUE); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glClear(GL_COLOR_BUFFER_BIT); - - /* Only have to do this if you're going to look at the stencil buffer */ - glClearStencil(0); - glStencilMask((1 << stenSize) - 1); - glClear(GL_STENCIL_BUFFER_BIT); - - glPushMatrix(); - - drawXform(&globalXform, FALSE); - - firstProduct = 0; - - while(firstProduct != numProducts[whichTree]) { - - /* - * set lastProduct so that accum bits for first to last fit in - * stencil buffer minus bits needed for surface counting bits - */ - lastProduct = firstProduct + (stenSize - 1) - 1; - if(lastProduct >= numProducts[whichTree]) - lastProduct = numProducts[whichTree] - 1; - - if(firstProduct > 0) /* know depth is clear before 1st group */ - saveDepth(); - - accumBit = 1; /* first available after counting bits */ - - for(i = firstProduct; i <= lastProduct; i++) - if(markProductPixels(i, accumBit++) == STOP) - goto doneWithFrame; - - COPY_AND_GOTO_IF_DONE("After marking \"inside\" target accumulators"); - - if(firstProduct > 0) /* know depth was clear before first group */ - restoreDepth(); - else { - glDepthMask(GL_TRUE); - glClear(GL_DEPTH_BUFFER_BIT); - } - - accumBit = 1; /* first available after counting bits */ - - for(i = firstProduct; i <= lastProduct; i++) - if(drawProduct(i, accumBit++) == STOP) - goto doneWithFrame; - - COPY_AND_GOTO_IF_DONE("After drawing all target colors and depths"); - - firstProduct = lastProduct + 1; - } - - if(showSurfaces) { - glDisable(GL_STENCIL_TEST); - glDepthMask(GL_FALSE); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - glEnable(GL_BLEND); - magicTranspHack = 1; - for(i = 0; i < numProducts[whichTree]; i++) - { - struct product *p; - p = &products[whichTree][i]; - - if(i == curPrim || !showOnlyCurrent) - drawPrim(p->targetPrim); - } - magicTranspHack = 0; - glDisable(GL_BLEND); - } - -doneWithFrame: - - glPopMatrix(); - - copyInterest(); - glutSwapBuffers(); -} - - -enum trackballModeEnum { - ROTATE, - TRANSLATEXY, - TRANSLATEZ, - SCALEX, - SCALEY, - SCALEZ -} trackballMode = ROTATE; - - -/* ARGSUSED1 */ -void special(int thing, int x, int y) -{ - switch(thing) { - case GLUT_KEY_F1: - prims[curPrim].draw = drawBox; - glutPostRedisplay(); - break; - - case GLUT_KEY_F2: - prims[curPrim].draw = drawCylinder; - glutPostRedisplay(); - break; - - case GLUT_KEY_F3: - prims[curPrim].draw = drawCone; - glutPostRedisplay(); - break; - - case GLUT_KEY_F4: - prims[curPrim].draw = drawSphere; - glutPostRedisplay(); - break; - } -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch(key) - { - case '1': - case '2': - case '3': - case '4': - whichTree = key - '1'; - glutPostRedisplay(); - break; - - case 'r': - trackballMode = ROTATE; - break; - - case 't': - trackballMode = TRANSLATEXY; - break; - - case 'T': - trackballMode = TRANSLATEZ; - break; - - case 'x': - trackballMode = SCALEX; - break; - - case 'y': - trackballMode = SCALEY; - break; - - case 'z': - trackballMode = SCALEZ; - break; - - case 'q': case 'Q': case '\033': - exit(0); - break; - - case '<': case ',': - if(curXform != &globalXform) - { - curPrim = (curPrim - 1 + numPrims) % numPrims; - curXform = &prims[curPrim].xform; - printf("Manipulating transformation for object %d\n", curPrim); - } - else - { - printf("Have to toggle out of global mode first\n"); - } - glutPostRedisplay(); - break; - - case '>': case '.': - if(curXform != &globalXform) - { - curPrim = (curPrim + 1) % numPrims; - curXform = &prims[curPrim].xform; - printf("Manipulating transformation for object %d\n", curPrim); - } - else - { - printf("Have to toggle out of global mode first\n"); - } - break; - - case 'g': - if(curXform == &globalXform){ - curXform = &prims[curPrim].xform; - printf("Manipulating transformation for object %d\n", curPrim); - }else{ - curXform = &globalXform; - printf("Manipulating global transformation\n"); - } - break; - - case '+': case '=': - whereToStop++; - glutPostRedisplay(); - break; - - case '-': case '_': - whereToStop--; - glutPostRedisplay(); - break; - - case 's': - glutPostRedisplay(); - showSurfaces = !showSurfaces; - break; - - case 'c': - doCSG = ! doCSG; - if(doCSG) - glutDisplayFunc(redrawCSG); - else - glutDisplayFunc(redrawNoCSG); - glutPostRedisplay(); - break; - - case ' ': - showOnlyCurrent = !showOnlyCurrent; - glutPostRedisplay(); - break; - } -} - - -static int ox, oy; - -/* ARGSUSED */ -void button(int b, int state, int x, int y) -{ - ox = x; - oy = y; -} - -void motion(int x, int y) -{ - int dx, dy; - - dx = x - ox; - dy = y - oy; - - ox = x; - oy = y; - - switch(trackballMode) { - case ROTATE: - rotateTrackball(dx, dy, curXform->rotation); - break; - - case SCALEX: - curXform->scale[0] += (dx + dy) / 40.0f; - if(curXform->scale[0] < 1/40.0) - curXform->scale[0] = 1/40.0; - break; - - case SCALEY: - curXform->scale[1] += (dx + dy) / 40.0f; - if(curXform->scale[1] < 1/40.0) - curXform->scale[1] = 1/40.0; - break; - - case SCALEZ: - curXform->scale[2] += (dx + dy) / 40.0f; - if(curXform->scale[2] < 1/40.0) - curXform->scale[2] = 1/40.0; - break; - - case TRANSLATEXY: - curXform->translation[0] += dx / 40.0f; - curXform->translation[1] -= dy / 40.0f; - break; - - case TRANSLATEZ: - curXform->translation[2] += (dx + dy) / 40.0f; - break; - } - glutPostRedisplay(); -} - - -void reshape(int width, int height) -{ - glViewport(0, 0, width, height); - winWidth = width; - winHeight = height; - resizeBuffers(); - glutPostRedisplay(); -} - - -int mainMenu; - - -void mainMenuFunc(int choice) -{ - switch(choice) - { - case 1: - doCSG = !doCSG; - if(doCSG) { - printf("CSG expression on\n"); - glutDisplayFunc(redrawCSG); - glutChangeToMenuEntry(1, "Turn off CSG", 0); - } - else { - printf("CSG expression off\n"); - glutDisplayFunc(redrawNoCSG); - glutChangeToMenuEntry(1, "Turn on CSG", 0); - } - glutPostRedisplay(); - break; - case 2: - showSurfaces = !showSurfaces; - if(showSurfaces) { - printf("Transparent surfaces on\n"); - glutChangeToMenuEntry(2, "(s) Don't show objects transparent in CSG", 2); - } - else { - printf("Transparent surfaces off\n"); - glutChangeToMenuEntry(2, "(s) Show objects transparent in CSG", 2); - } - glutPostRedisplay(); - break; - } -} - - -void interestBufferFunc(int data) -{ - char *s; - - bufferInterest = data; - - switch(data) { - case COLOR: - s = "color"; - break; - - case STENCILVALUES: - s = "stencil values"; - break; - - case STENCILPLANES: - s = "individual stencil plane converage"; - break; - - case DEPTH: - s = "depth"; - break; - } - printf("Now displaying %s data\n", s); - glutPostRedisplay(); -} - - -void csgMenuFunc(int data) -{ - whichTree = data; - glutPostRedisplay(); -} - - -void whichObjectFunc(int data) -{ - switch(data) - { - case 0: - case 1: - case 2: - case 3: - curPrim = data; - curXform = &prims[curPrim].xform; - printf("Editing object %d\n", data); - break; - - case 4: - curXform = &globalXform; - printf("Editing global transformation %d\n", data); - break; - } -} - - -void morphMenuFunc(int data) -{ - switch(data) { - case 0: - prims[curPrim].draw = drawBox; - glutPostRedisplay(); - break; - - case 1: - prims[curPrim].draw = drawCylinder; - glutPostRedisplay(); - break; - - case 2: - prims[curPrim].draw = drawCone; - glutPostRedisplay(); - break; - - case 3: - prims[curPrim].draw = drawSphere; - glutPostRedisplay(); - break; - } -} - - -void helpFakeFunc(int d) -{ -} - - -int main(int argc, char **argv) -{ - int bufferMenu; - int csgMenu; - int whichObjectMenu; - int morphMenu; - int helpFakeMenu; - - glutInitWindowSize(512,512); - glutInit(&argc, argv); - glutInitDisplayString("samples stencil>=3 rgb double depth"); - /* glutInitDisplayMode(GLUT_DOUBLE|GLUT_STENCIL|GLUT_DEPTH|GLUT_RGBA); */ - (void)glutCreateWindow("csg using stencil"); - glutDisplayFunc(redrawNoCSG); - glutKeyboardFunc(keyboard); - glutSpecialFunc(special); - glutMotionFunc(motion); - glutMouseFunc(button); - glutReshapeFunc(reshape); - - glGetIntegerv(GL_STENCIL_BITS, &stenSize); - printf("%d bits of stencil available in this visual\n", stenSize); - - printf("Hit 'S' to turn stencil on/off\n"); - - bufferMenu = glutCreateMenu(interestBufferFunc); - glutAddMenuEntry("Color data", COLOR); - glutAddMenuEntry("Stencil values", STENCILVALUES); - glutAddMenuEntry("Coverage in each stencil plane", STENCILPLANES); - glutAddMenuEntry("Depth data", DEPTH); - - csgMenu = glutCreateMenu(csgMenuFunc); - glutAddMenuEntry("(1) obj 1 MINUS obj 2", 0); - glutAddMenuEntry("(2) obj 2 MINUS obj 1", 1); - glutAddMenuEntry("(3) obj 1 AND obj 2", 2); - glutAddMenuEntry("(4) (obj 1 AND obj 2) MINUS (obj 3 or obj 4)", 3); - - whichObjectMenu = glutCreateMenu(whichObjectFunc); - glutAddMenuEntry("Object 1 (blue)", 0); - glutAddMenuEntry("Object 2 (peach)", 1); - glutAddMenuEntry("Object 3 (green)", 2); - glutAddMenuEntry("Object 4 (purple)", 3); - glutAddMenuEntry("(g) Toggle between global and local", 4); - - morphMenu = glutCreateMenu(morphMenuFunc); - glutAddMenuEntry("(F1) Box", 0); - glutAddMenuEntry("(F2) Cylinder", 1); - glutAddMenuEntry("(F3) Cone", 2); - glutAddMenuEntry("(F4) Sphere", 3); - - helpFakeMenu = glutCreateMenu(helpFakeFunc); - glutAddMenuEntry("Click the left mouse button and drag to manipulate\n", 0); - glutAddMenuEntry("Push 'r' to rotate like a trackball\n", 0); - glutAddMenuEntry("Push 't' to translate in the X-Y plane\n", 0); - glutAddMenuEntry("Push 'T' to translate in the Z axis\n", 0); - glutAddMenuEntry("Push 'X' to scale in X\n", 0); - glutAddMenuEntry("Push 'X' to scale in Y\n", 0); - glutAddMenuEntry("Push 'Z' to scale in Z\n", 0); - - mainMenu = glutCreateMenu(mainMenuFunc); - glutAddMenuEntry("(c) Turn on CSG", 1); - glutAddMenuEntry("(s) Show objects transparent in CSG", 2); - glutAddSubMenu("Buffer of interest", bufferMenu); - glutAddSubMenu("Which CSG expression", csgMenu); - glutAddSubMenu("Object for manipulation", whichObjectMenu); - glutAddSubMenu("Turn current object into...", morphMenu); - glutAddSubMenu("Help with moving and rotating:", helpFakeMenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - init(); - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/csg.dsp b/lib/glut-3.7.6/progs/advanced97/csg.dsp deleted file mode 100644 index 5157a741d7931ad1af9ebc24cffb7f9c7d5a1162..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/csg.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="csg" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=csg - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "csg.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "csg.mak" CFG="csg - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "csg - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "csg - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "csg - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "csg - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "csg - Win32 Release" -# Name "csg - Win32 Debug" -# Begin Source File - -SOURCE=.\csg.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/d.c b/lib/glut-3.7.6/progs/advanced97/d.c deleted file mode 100644 index ff0cd8b3356f73344aacefb7426492e9cb2227b7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/d.c +++ /dev/null @@ -1,129 +0,0 @@ -#include -#include "stdlib.h" -#include "math.h" - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE, DINOSAUR -} displayLists; - -/* *INDENT-OFF* */ -GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -GLfloat lightZeroPosition[] = {10.0, 4.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, -2.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = dataSize / (int) (2 * sizeof(GLfloat)); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void -makeDinosaur(void) -{ - GLfloat bodyWidth = 3.0; - - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); - glNewList(DINOSAUR, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glEndList(); -} - -void -drawDinosaur(void) { - static int first = 1; - if (first) { - makeDinosaur(); - first = 0; - } - glCallList(DINOSAUR); -} diff --git a/lib/glut-3.7.6/progs/advanced97/decal.c b/lib/glut-3.7.6/progs/advanced97/decal.c deleted file mode 100644 index 6dc6c5726d0dc6bffeece0f22204e85206219b7f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/decal.c +++ /dev/null @@ -1,611 +0,0 @@ -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -GLUquadricObj *quadric; -GLfloat black[] = {0, 0, 0, 1}; -GLfloat white[] = {1, 1, 1, 1}; - - -int winWidth, winHeight; -GLfloat *depthSave = NULL; -GLubyte *stencilSave = NULL; -GLubyte *colorSave = NULL; - - -void resizeBuffers(void) -{ - colorSave = realloc(colorSave, winWidth * winHeight * 4 * sizeof(GLubyte)); - depthSave = realloc(depthSave, winWidth * winHeight * 4 * sizeof(GLfloat)); - stencilSave = (GLubyte *)depthSave; -} - - -void pushOrthoView(float left, float right, float bottom, float top, - float znear, float zfar) -{ - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(left, right, bottom, top, znear, zfar); -} - - -void popView(void) -{ - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - - -void copyDepthToColor(GLenum whichColorBuffer) -{ - int x, y; - GLfloat max, min; - GLint previousColorBuffer; - - glReadPixels(0, 0, winWidth, winHeight, GL_DEPTH_COMPONENT, GL_FLOAT, - depthSave); - - /* I'm sure this could be done much better with OpenGL */ - max = 0; - min = 1; - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - if(depthSave[winWidth * y + x] < min) - min = depthSave[winWidth * y + x]; - if(depthSave[winWidth * y + x] > max && depthSave[winWidth * y + x] < .999) - max = depthSave[winWidth * y + x]; - } - - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - if(depthSave[winWidth * y + x] <= max) - depthSave[winWidth * y + x] = 1 - (depthSave[winWidth * y + x] - min) / (max - min); - else - depthSave[winWidth * y + x] = 0; - } - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glGetIntegerv(GL_DRAW_BUFFER, &previousColorBuffer); - glDrawBuffer(whichColorBuffer); - glDrawPixels(winWidth, winHeight, GL_LUMINANCE , GL_FLOAT, depthSave); - glDrawBuffer(previousColorBuffer); - glEnable(GL_DEPTH_TEST); - popView(); -} - - -unsigned char colors[][3] = -{ - {255, 0, 0}, /* red */ - {255, 218, 0}, /* yellow */ - {72, 255, 0}, /* yellowish green */ - {0, 255, 145}, /* bluish cyan */ - {0, 145, 255}, /* cyanish blue */ - {72, 0, 255}, /* purplish blue */ - {255, 0, 218}, /* reddish purple */ -}; - - -void copyStencilToColor(GLenum whichColorBuffer) -{ - int x, y; - GLint previousColorBuffer; - - glReadPixels(0, 0, winWidth, winHeight, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, - stencilSave); - - /* I'm sure this could be done much better with OpenGL */ - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - int stencilValue; - - stencilValue = stencilSave[winWidth * y + x]; - - colorSave[(winWidth * y + x) * 3 + 0] = colors[stencilValue % 7][0]; - colorSave[(winWidth * y + x) * 3 + 1] = colors[stencilValue % 7][1]; - colorSave[(winWidth * y + x) * 3 + 2] = colors[stencilValue % 7][2]; - } - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glGetIntegerv(GL_DRAW_BUFFER, &previousColorBuffer); - glDrawBuffer(whichColorBuffer); - glDrawPixels(winWidth, winHeight, GL_RGB, GL_UNSIGNED_BYTE, colorSave); - glDrawBuffer(previousColorBuffer); - glEnable(GL_DEPTH_TEST); - popView(); -} - - -int useStencil = 0; -int stage = 6; -typedef enum {COLOR, DEPTH, STENCIL} DataChoice; -DataChoice dataChoice = COLOR; - -void init(void) -{ - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - quadric = gluNewQuadric(); - - glMatrixMode(GL_PROJECTION); - glFrustum(-.33, .33, -.33, .33, .5, 40); - - glMatrixMode(GL_MODELVIEW); - gluLookAt(-4, 10, 6, 0, 0, 0, 0, 1, 0); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glEnable(GL_NORMALIZE); - - /* - * only need this to clear stencil and only need to clear stencil - * when you're looking at it; the algorithm works without it. - */ - glClearStencil(5); -} - - -void setupLight(void) -{ - static GLfloat lightpos[] = {0, 1, 0, 0}; - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); -} - - -void setupNormalDrawingState(void) -{ - glDisable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - glDepthMask(1); -} - -void setupBasePolygonState(int maxDecal) -{ - glEnable(GL_DEPTH_TEST); - if(useStencil) { - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, maxDecal + 1, 0xff); - glStencilOp(GL_KEEP, GL_REPLACE, GL_ZERO); - } -} - - -void setupDecalState(int decalNum) -{ - if(useStencil) { - glDisable(GL_DEPTH_TEST); - glDepthMask(0); - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_GREATER, decalNum, 0xff); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - } -} - - -void drawAirplane(void) -{ - GLfloat airplaneColor[4] = {.75, .75, .75, 1}; - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, airplaneColor); - - glDisable(GL_CULL_FACE); - - glPushMatrix(); - glTranslatef(0, 0, -2.5); - - gluCylinder(quadric, .5, .5, 5, 10, 10); - - glPushMatrix(); - glTranslatef(0, 0, 5); - gluCylinder(quadric, .5, 0, 1, 10, 10); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0, 0, 3); - glScalef(3, .1, 1); - gluSphere(quadric, 1, 10, 10); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0, 0, .5); - glScalef(2, .1, .5); - gluSphere(quadric, 1, 10, 10); - glPopMatrix(); - - glEnable(GL_CULL_FACE); - - glBegin(GL_TRIANGLES); - glNormal3f(1, 0, 0); - glVertex3f(0, 1.5, 0); - glVertex3f(0, .5, 1); - glVertex3f(0, .5, 0); - glNormal3f(-1, 0, 0); - glVertex3f(0, 1.5, 0); - glVertex3f(0, .5, 0); - glVertex3f(0, .5, 1); - glEnd(); - - glDisable(GL_CULL_FACE); - - glRotatef(180, 0, 1, 0); - gluDisk(quadric, 0, .5, 10, 10); - - glPopMatrix(); - - glEnable(GL_CULL_FACE); -} - - -void drawGround(void) -{ - GLfloat groundColor[4] = {.647, .165, .165, 1}; - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, groundColor); - - glBegin(GL_QUADS); - glNormal3i(0, 1, 0); - glVertex3f(10, 0, 10); - glVertex3f(10, 0, -10); - glVertex3f(-10, 0, -10); - glVertex3f(-10, 0, 10); - glEnd(); -} - - -void drawAsphalt(void) -{ - GLfloat asphaltColor[4] = {.25, .25, .25, 1}; - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, asphaltColor); - - glBegin(GL_QUADS); - glNormal3i(0, 1, 0); - glVertex3f(5, 0, 9.5); - glVertex3f(5, 0, -9.5); - glVertex3f(-5, 0, -9.5); - glVertex3f(-5, 0, 9.5); - glEnd(); -} - - -int numStripes = 5; -float stripeGap = .66; - - -void drawStripes(void) -{ - GLfloat stripeColor[4] = {1, 1, 0, 1}; - int i; - float stripeLength; - - stripeLength = (16 - stripeGap * (numStripes - 1)) / numStripes; - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, stripeColor); - - glBegin(GL_QUADS); - - glNormal3i(0, 1, 0); - - glVertex3f(4.5, 0, 8.5); - glVertex3f(4.5, 0, -8.5); - glVertex3f(3.5, 0, -8.5); - glVertex3f(3.5, 0, 8.5); - - glVertex3f(-3.5, 0, 8.5); - glVertex3f(-3.5, 0, -8.5); - glVertex3f(-4.5, 0, -8.5); - glVertex3f(-4.5, 0, 8.5); - - for(i = 0; i < numStripes; i++) { - glVertex3f(.5, 0, 8 - i * (stripeLength + stripeGap)); - glVertex3f(.5, 0, 8 - i * (stripeLength + stripeGap) - stripeLength); - glVertex3f(-.5, 0, 8 - i * (stripeLength + stripeGap) - stripeLength); - glVertex3f(-.5, 0, 8 - i * (stripeLength + stripeGap)); - } - glEnd(); -} - - -void redraw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* Only need this if you care to look at the stencil buffer */ - if(dataChoice == STENCIL) - glClear(GL_STENCIL_BUFFER_BIT); - - glPushMatrix(); - glScalef(.5, .5, .5); - - if(stage == 1) - goto doneWithFrame; - - setupLight(); - - setupNormalDrawingState(); - glPushMatrix(); - glTranslatef(0, 1, 4); - glRotatef(135, 0, 1, 0); - drawAirplane(); - glPopMatrix(); - - if(stage == 2) - goto doneWithFrame; - - setupBasePolygonState(3); /* 2 decals */ - drawGround(); - - if(stage == 3) - goto doneWithFrame; - - setupDecalState(1); /* decal # 1 = the runway asphalt */ - drawAsphalt(); - - if(stage == 4) - goto doneWithFrame; - - setupDecalState(2); /* decal # 2 = yellow paint on the runway */ - drawStripes(); - - if(stage == 5) - goto doneWithFrame; - - setupDecalState(3); /* decal # 3 = the plane's shadow */ - glDisable(GL_LIGHTING); - glEnable(GL_BLEND); - glPushMatrix(); - glColor4f(0, 0, 0, .5); - glTranslatef(0, 0, 4); - glRotatef(135, 0, 1, 0); - glScalef(1, 0, 1); - drawAirplane(); - glPopMatrix(); - glDisable(GL_BLEND); - glEnable(GL_LIGHTING); - -doneWithFrame: - - setupNormalDrawingState(); - - glPopMatrix(); - - switch(dataChoice) { - case COLOR: - break; /* color already in back buffer */ - - case STENCIL: - copyStencilToColor(GL_BACK); - break; - - case DEPTH: - copyDepthToColor(GL_BACK); - break; - } - - glutSwapBuffers(); -} - - -void reshape(int width, int height) -{ - glViewport(0, 0, width, height); - winWidth = width; - winHeight = height; - resizeBuffers(); - glutPostRedisplay(); -} - - -static int ox, oy; -static int mode; - - -/* ARGSUSED */ -void button(int b, int state, int x, int y) -{ - ox = x; - oy = y; - mode = b; -} - - -void motion(int x, int y) -{ - static float ang = 0; - static float height = 10; - float eyex, eyez; - - if(mode == GLUT_LEFT_BUTTON) - { - ang += (x - ox) / 512.0 * M_PI; - height += (y - oy) / 512.0 * 10; - eyex = cos(ang) * 7; - eyez = sin(ang) * 7; - glLoadIdentity(); - gluLookAt(eyex, height, eyez, 0, 0, 0, 0, 1, 0); - glutPostRedisplay(); - ox = x; - oy = y; - } -} - - -void changeData(int data) -{ - char *s; - - dataChoice = data; - glutPostRedisplay(); - - switch(data) { - case COLOR: - s = "color"; - break; - - case STENCIL: - s = "stencil"; - break; - - case DEPTH: - s = "depth"; - break; - } - printf("Now displaying %s data\n", s); -} - - -void changeStage(int data) -{ - char *s; - - stage = data; - glutPostRedisplay(); - switch(data) { - case 1: - s = "clearing"; - break; - - case 2: - s = "drawing airplane"; - break; - - case 3: - s = "drawing ground"; - break; - - case 4: - s = "drawing asphalt"; - break; - - case 5: - s = "drawing paint"; - break; - - case 6: - s = "drawing shadow"; - break; - } - printf("Now displaying frame after %s\n", s); -} - - -int mainMenu; - -void stencilDecalEnable(int enabled) -{ - glutSetMenu(mainMenu); - if(enabled){ - glutChangeToMenuEntry(1, "Turn off stencil decal", 0); - printf("Stencil decaling turned on\n"); - glutPostRedisplay(); - } else { - glutChangeToMenuEntry(1, "Turn on stencil decal", 1); - printf("Stencil decaling turned off\n"); - glutPostRedisplay(); - } - useStencil = enabled; -} - - -/* - * Basically shortcuts for menu items - */ -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch(key) { - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - changeStage(key - '0'); - break; - - case 's': case 'S': - stencilDecalEnable(! useStencil); - break; - - case 'q': case 'Q': case '\033': - exit(0); - break; - - default: - fprintf(stderr, "Push right mouse button for menu\n"); - break; - } -} - - -int main(int argc, char **argv) -{ - int bufferMenu; - int finishMenu; - int stenSize; - - glutInitWindowSize(winWidth = 512, winHeight = 512); - glutInit(&argc, argv); - glutInitDisplayString("samples stencil>=3 rgb double depth"); - /* glutInitDisplayMode(GLUT_DOUBLE|GLUT_STENCIL|GLUT_DEPTH|GLUT_ALPHA); */ - (void)glutCreateWindow("decaling using stencil"); - glutDisplayFunc(redraw); - glutKeyboardFunc(keyboard); - glutMotionFunc(motion); - glutMouseFunc(button); - glutReshapeFunc(reshape); - - resizeBuffers(); - glGetIntegerv(GL_STENCIL_BITS, &stenSize); - fprintf(stderr, "(%d bits of stencil available in this visual)\n", stenSize); - - fprintf(stderr, "Hit 'h' for help message\n"); - - finishMenu = glutCreateMenu(changeStage); - glutAddMenuEntry("Clearing screen", 1); - glutAddMenuEntry("Drawing airplane", 2); - glutAddMenuEntry("Drawing ground ", 3); - glutAddMenuEntry("Drawing asphalt", 4); - glutAddMenuEntry("Drawing paint", 5); - glutAddMenuEntry("Drawing shadow", 6); - - bufferMenu = glutCreateMenu(changeData); - glutAddMenuEntry("Color data", COLOR); - glutAddMenuEntry("Stencil data", STENCIL); - glutAddMenuEntry("Depth data", DEPTH); - - mainMenu = glutCreateMenu(stencilDecalEnable); - glutAddMenuEntry("Turn on stencil decal", 1); - glutAddSubMenu("Visible buffer", bufferMenu); - glutAddSubMenu("Finish frame after...", finishMenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - init(); - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/decal.dsp b/lib/glut-3.7.6/progs/advanced97/decal.dsp deleted file mode 100644 index b0c8bccdd45f10b76ca26129f9e9b8e4b3a5bc87..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/decal.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="decal" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=decal - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "decal.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "decal.mak" CFG="decal - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "decal - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "decal - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "decal - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "decal - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "decal - Win32 Release" -# Name "decal - Win32 Debug" -# Begin Source File - -SOURCE=.\decal.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/dissolve.c b/lib/glut-3.7.6/progs/advanced97/dissolve.c deleted file mode 100644 index a09011cc627cc0e169b55e54dd297eb8c6b61625..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/dissolve.c +++ /dev/null @@ -1,443 +0,0 @@ -/* -** An Example of dissolve, using stencil -*/ -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#define drand48() ((double)rand()/RAND_MAX) -#endif - -int winWidth = 512; -int winHeight = 512; - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -enum {SPHERE = 1, CONE}; - - - - -GLfloat angle = 0.f; /* angle of rotating object in layer 0 */ - -enum {X, Y}; -GLboolean eraser = GL_FALSE; -GLint layer = 1; -GLint eraserpos[2] = {512/8, 512/12}; - -/* draw eraser and erase what's underneath */ - -GLubyte *eraserpix = 0; -int erasersize = 0; -int eraserWidth; -int eraserHeight; -void -makeEraser(void) -{ - int i; - int x, y; - int dx, dy; - float d; - - eraserWidth = winWidth / 6; - eraserHeight = winHeight / 6; - erasersize = 4 * eraserWidth * eraserHeight; - eraserpix = (GLubyte *)realloc(eraserpix, erasersize * sizeof(GLubyte)); - - - /* make it not erase */ - (void)memset(eraserpix, 0, erasersize * sizeof(GLubyte)); - - i = 0; - for(y = 0; y < eraserHeight; y++) - for(x = 0; x < eraserWidth; x++) - { - dx = x - eraserWidth / 2; - dy = y - eraserHeight / 2; - d = sqrt(dx * dx + dy * dy); - if(pow(drand48(), .75) * eraserWidth / 2 > d) - { - eraserpix[i + 0] = 255; - eraserpix[i + 1] = 255; - eraserpix[i + 2] = 255; - eraserpix[i + 3] = 255; - } - i += 4; - } -} - - -/* left button, first layer, middle button, second layer */ -/* ARGSUSED */ -void -mouse(int button, int state, int x, int y) -{ - if(state == GLUT_DOWN) { - eraser = GL_TRUE; - if(button == GLUT_LEFT_BUTTON) - layer = 1; - else /* GLUT_MIDDLE: GLUT_RIGHT is for menu */ - layer = 0; - } else { /* GLUT_UP */ - eraser = GL_FALSE; - } - glutPostRedisplay(); -} - - -enum {CLEAR}; /* menu choices */ -GLboolean clearstencil = GL_TRUE; - -void -menu(int choice) -{ - switch(choice) { - case CLEAR: - clearstencil = GL_TRUE; - break; - } - glutPostRedisplay(); -} - -/* used to get current width and height of viewport */ -void -reshape(int wid, int ht) -{ - glViewport(0, 0, wid, ht); - winWidth = wid; - winHeight = ht; - clearstencil = GL_TRUE; - makeEraser(); - glutPostRedisplay(); -} - - - -void -draweraser(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, winWidth, 0, winHeight); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - /* replace with this layer */ - glStencilFunc(GL_ALWAYS, layer, 0); - glStencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE); - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_NOTEQUAL, 0); - glRasterPos2i(eraserpos[X], eraserpos[Y]); - glBitmap(0, 0, 0.f, 0.f, -winWidth/8.f, -winHeight/12.f, 0); - glDrawPixels(eraserWidth, eraserHeight, GL_RGBA, GL_UNSIGNED_BYTE, eraserpix); - glDisable(GL_ALPHA_TEST); -} - - -void -drawlayer2(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, winWidth, 0, winHeight); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - glEnable(GL_TEXTURE_2D); - - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(0, 0); - glTexCoord2i(1, 0); - glVertex2i(winWidth, 0); - glTexCoord2i(1, 1); - glVertex2i(winWidth, winHeight); - glTexCoord2i(0, 1); - glVertex2i(0, winHeight); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - -} - -void -drawlayer1(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-100., 100., -100., 100., 320., 640.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glPushMatrix(); - glTranslatef(-80.f, -80.f, -420.f); - glCallList(SPHERE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-20.f, -100.f, -500.f); - glCallList(CONE); - glPopMatrix(); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); -} - - -void -drawlayer0(void) -{ - static GLfloat lightpos[] = {50.f, 50.f, 0.f, 1.f}; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-50.f, 50.f, -50.f, 50.f, 0.f, 100.f); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.f, 0.f, -50.f); - glRotatef(angle, 0.f, 1.f, 0.f); - glRotatef(90.f, 0.f, 0.f, 1.f); - glTranslatef(0.f, -25.f, 0.f); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glCullFace(GL_BACK); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glCallList(CONE); - -} - -void -redraw(void) -{ - if(glutLayerGet(GLUT_NORMAL_DAMAGED) || - clearstencil == GL_TRUE) { - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); - clearstencil = GL_FALSE; - } else - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - glStencilFunc(GL_EQUAL, 2, (unsigned)~0); - drawlayer2(); - - glStencilFunc(GL_EQUAL, 1, (unsigned)~0); - drawlayer1(); - - glStencilFunc(GL_EQUAL, 0, (unsigned)~0); - drawlayer0(); - - if(eraser) - draweraser(); - - glutSwapBuffers(); -} - -void -idle(void) -{ - angle += 1.f; - glutPostRedisplay(); -} - - -void -passive(int x, int y) -{ - - eraserpos[X] = x; - eraserpos[Y] = winHeight - y; -} - - -void -motion(int x, int y) -{ - - eraserpos[X] = x; - eraserpos[Y] = winHeight - y; - - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) { - case '\033': - exit(0); - } -} - -const int TEXDIM = 256; -GLfloat *tex = 0; - -main(int argc, char *argv[]) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(winWidth, winHeight); - glutInitDisplayMode(GLUT_DOUBLE|GLUT_STENCIL|GLUT_DEPTH); - (void)glutCreateWindow("dissolve"); - glutDisplayFunc(redraw); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutPassiveMotionFunc(passive); - glutKeyboardFunc(key); - glutIdleFunc(idle); - glutReshapeFunc(reshape); - - glutCreateMenu(menu); - glutAddMenuEntry("Clear Stencil", CLEAR); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(base, GLU_INSIDE); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - makeEraser(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glClearStencil(2); - glEnable(GL_STENCIL_TEST); /* used all the time */ - - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/dissolve.dsp b/lib/glut-3.7.6/progs/advanced97/dissolve.dsp deleted file mode 100644 index 330ae94dbb921702a34b573be0f40831364dbc8a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/dissolve.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dissolve" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dissolve - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dissolve.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dissolve.mak" CFG="dissolve - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dissolve - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dissolve - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dissolve - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dissolve - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dissolve - Win32 Release" -# Name "dissolve - Win32 Debug" -# Begin Source File - -SOURCE=.\dissolve.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/explode.c b/lib/glut-3.7.6/progs/advanced97/explode.c deleted file mode 100644 index 3efac3797404bd0af577a5f0b371429822b475c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/explode.c +++ /dev/null @@ -1,388 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -#ifndef __sgi -/* Most math.h's do not define float versions of the trig functions. */ -#define sinf sin -#define cosf cos -#define atan2f atan2 -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -static int texture = 1; -static float rot = 0; -static float opacity = 1.0; -static float intensity = 1.0; -static float size = .001, delta = 0; -static float scale = 1.; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void afunc(void) { - static int state; - if (state ^= 1) { - glAlphaFunc(GL_GREATER, .01); - glEnable(GL_ALPHA_TEST); - } else { - glDisable(GL_ALPHA_TEST); - } -} - -void bfunc(void) { - static int state; - if (state ^= 1) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } else { - glDisable(GL_BLEND); - } -} - -void tfunc(void) { - texture ^= 1; -} - -void up(void) { scale += .1; } -void down(void) { scale -= .1; } -void left(void) { intensity -= .05f; if (intensity < 0.f) intensity = 0.0f; } -void right(void) { intensity += .05f; if (intensity > 1.f) intensity = 1.0f; } - -void help(void) { - printf("Usage: explode [image]\n"); - printf("'h' - help\n"); - printf("'a' - toggle alpha test\n"); - printf("'b' - toggle blend\n"); - printf("'t' - toggle texturing\n"); - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("'LEFT' - darken\n"); - printf("'RIGHT' - brighten\n"); - printf("left mouse - pan\n"); - printf("right mouse - rotate\n"); -} - -void init(char *filename) { - static unsigned *image; - static int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components != 2 && components != 4) { - printf("must be an RGBA or LA image\n"); - exit(EXIT_FAILURE); - } - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 512; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if (i & 32) - img[4*(i+j*width)+0] = 0xff; - else - img[4*(i+j*width)+1] = 0xff; - if (j&32) - img[4*(i+j*width)+2] = 0xff; - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,20.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - glClearColor(.25f, .25f, .75f, .25f); - - glAlphaFunc(GL_GREATER, 0.016); - glEnable(GL_ALPHA_TEST); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_DEPTH_TEST); - - glEnable(GL_LIGHT0); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_NORMALIZE); -} - -void -animate(void) { - if (delta > 10) { - delta = 0.f; - size = 0.f; - opacity = 1.f; - rot = 0.f; - } - size += .08f; - delta += .07f; - rot += .9f; - opacity -= .005f; - - glutPostRedisplay(); -} - -void -cube(void) { - glBegin(GL_QUADS); - glNormal3f(0.f, 0.f, -1.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - - glNormal3f(0.f, 0.f, 1.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - - glNormal3f(0.f, -1.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); - - glNormal3f( 1.f, 0.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, 1.0); - - glNormal3f(-1.f, 0.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); - glEnd(); -} - -static void calcMatrix(void); - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glLoadIdentity(); -#define RAD(x) (((x)*M_PI)/180.) - gluLookAt(-sinf(RAD(rotx))*5.5,transy,cosf(RAD(rotx))*5.5, 0.,0.,0., 0.,1.,0.); - - /* floor */ - glColor4f(0.f,.2f,0.f,1.f); - glBegin(GL_POLYGON); - glVertex3f(-4.0, -1.0, -4.0); - glVertex3f( 4.0, -1.0, -4.0); - glVertex3f( 4.0, -1.0, 4.0); - glVertex3f(-4.0, -1.0, 4.0); - glEnd(); - - glEnable(GL_LIGHTING); - glPushMatrix(); - glColor3f(.3f,.3f,.3f); - glPushMatrix(); - glTranslatef(-1.f, -1.+.2f, -1.5f); - glScalef(.2f,.2f, .2f); - cube(); - glPopMatrix(); - glDisable(GL_LIGHTING); - - glTranslatef(-1.f, -1.f, -1.5f); - calcMatrix(); - glScalef(size,size,1.); - if (texture) glEnable(GL_TEXTURE_2D); - glColor4f(intensity, intensity, intensity, opacity); - glDepthMask(0); - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0); - glEnd(); - glDepthMask(1); - glPopMatrix(); - glDisable(GL_TEXTURE_2D); - - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'a': afunc(); break; - case 'b': bfunc(); break; - case 'h': help(); break; - case 't': tfunc(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - case GLUT_KEY_LEFT: left(); break; - case GLUT_KEY_RIGHT:right(); break; - } -} - -int main(int argc, char** argv) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow(argv[0]); - init(argc == 1 ? "../data/explosion.rgba" : argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} - -void -printmat(float *m) { - int i; - for(i = 0; i < 4; i++) { - printf("%f %f %f %f\n", m[4*i+0], m[4*i+1], m[4*i+2], m[4*i+3]); - } -} - -void -buildRot(float theta, float x, float y, float z, float m[16]) { - float d = x*x + y*y + z*z; - float ct = cosf(RAD(theta)), st = sinf(RAD(theta)); - - /* normalize */ - if (d > 0) { - d = 1/d; - x *= d; - y *= d; - z *= d; - } - - m[ 0] = 1; m[ 1] = 0; m[ 2] = 0; m[ 3] = 0; - m[ 4] = 0; m[ 5] = 1; m[ 6] = 0; m[ 7] = 0; - m[ 8] = 0; m[ 9] = 0; m[10] = 1; m[11] = 0; - m[12] = 0; m[13] = 0; m[14] = 0; m[15] = 1; - - /* R = uu' + cos(theta)*(I-uu') + sin(theta)*S - * - * S = 0 -z y u' = (x, y, z) - * z 0 -x - * -y x 0 - */ - - m[0] = x*x + ct*(1-x*x) + st*0; - m[4] = x*y + ct*(0-x*y) + st*-z; - m[8] = x*z + ct*(0-x*z) + st*y; - - m[1] = y*x + ct*(0-y*x) + st*z; - m[5] = y*y + ct*(1-y*y) + st*0; - m[9] = y*z + ct*(0-y*z) + st*-x; - - m[2] = z*x + ct*(0-z*x) + st*-y; - m[6] = z*y + ct*(0-z*y) + st*x; - m[10]= z*z + ct*(1-z*z) + st*0; -} - -static void -calcMatrix(void) { - float mat[16]; - - glGetFloatv(GL_MODELVIEW_MATRIX, mat); - - buildRot(-180*atan2f(mat[8], mat[10])/M_PI, 0, 1, 0, mat); - glMultMatrixf(mat); -} diff --git a/lib/glut-3.7.6/progs/advanced97/explode.dsp b/lib/glut-3.7.6/progs/advanced97/explode.dsp deleted file mode 100644 index 8eaa5981788a698b8b37ae93023df7fd9bf0628c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/explode.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="explode" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=explode - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "explode.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "explode.mak" CFG="explode - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "explode - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "explode - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "explode - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "explode - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "explode - Win32 Release" -# Name "explode - Win32 Debug" -# Begin Source File - -SOURCE=.\explode.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/fire.c b/lib/glut-3.7.6/progs/advanced97/fire.c deleted file mode 100644 index 983191ee4d74fad59c1de0d274bc90c14ede25c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/fire.c +++ /dev/null @@ -1,480 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" -#include "sm.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -/* Most math.h's do not define float versions of the trig functions. */ -#define sinf(x) ((float)sin((x))) -#define cosf(x) ((float)cos((x))) -#define atan2f(y, x) ((float)atan2((y), (x))) -#endif - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - -static void *smoke; -static int marshmallow; -static int the_texture; -static int texture_count; -static int texture = 1; -static float rot = 0; -static float opacity = 1.0; -static float intensity = 1.0; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void afunc(void) { - static int state; - if (state ^= 1) - glEnable(GL_ALPHA_TEST); - else - glDisable(GL_ALPHA_TEST); -} - -void bfunc(void) { - static int state; - if (state ^= 1) - glEnable(GL_BLEND); - else - glDisable(GL_BLEND); -} - -void mfunc(void) { - marshmallow += 1; - if (marshmallow > 2) marshmallow = 0; -} - -void sfunc(void) { - the_texture++; - if (the_texture >= texture_count) the_texture = 0; -} - -void tfunc(void) { - static int state; - if (state ^= 1) - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - else - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); -} - -void fourfunc(void) { - static int state; - GLenum wrap; - int i; - - glMatrixMode(GL_TEXTURE); - if (state ^= 1) { - wrap = GL_REPEAT; - glScalef(4.f, 4.f, 1.f); - } else { - wrap = GL_CLAMP; - glLoadIdentity(); - } - glMatrixMode(GL_MODELVIEW); - - for(i = 0; i < texture_count; i++) { - glBindTexture(GL_TEXTURE_2D, i+1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap); - } -} - -void help(void) { - printf("Usage: fire image0 ... imagen\n"); - printf("'h' - help\n"); - printf("'a' - toggle alpha test\n"); - printf("'b' - toggle blend\n"); - printf("'s' - single step\n"); - printf("'t' - toggle MODULATE or REPLACE\n"); - printf("'m' - marshmallow\n"); - printf("'x' - toggle animation\n"); - printf("left mouse - pan\n"); - printf("right mouse - rotate\n"); -} - -void init(int argc, char *argv[]) { - unsigned *image; - int i, width, height, components; - GLfloat pos[] = { 0.f, 1.f, 1.f, 0.f}; - - glEnable(GL_TEXTURE_2D); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - for(i = 0; i < argc; i++) { - image = read_texture(argv[i], &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - argv[i]); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - glBindTexture(GL_TEXTURE_2D, i+1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image); - texture_count++; - } - - glBindTexture(GL_TEXTURE_2D, 1+texture_count); - image = read_texture("../data/smoke.bw", &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", "smoke.la"); - exit(EXIT_FAILURE); - } - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image); - smoke = new_smoke(0.f, 0.f, 0.f, .0f, 2.5f, 0.f, 25, .4f, 1+texture_count); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glEnable(GL_TEXTURE_2D); - glClearColor(.25f, .25f, .25f, .25f); - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,20.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - glClearColor(.25f, .25f, .75f, .25f); - - glAlphaFunc(GL_GREATER, 0.016f); - glEnable(GL_ALPHA_TEST); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - glEnable(GL_NORMALIZE); -} - -void -animate(void) { - static int cnt; - if (cnt++ == 2) { - the_texture++; - if (the_texture >= texture_count) the_texture = 0; - cnt = 0; - } - update_smoke(smoke, .003); - glutPostRedisplay(); -} - -void -xfunc(void) { - static int state = 1; - glutIdleFunc((state ^= 1) ? animate : NULL); -} - -void -cube(void) { - glBegin(GL_QUADS); - glNormal3f(0.f, 0.f, -1.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - - glNormal3f(0.f, 0.f, 1.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - - glNormal3f(0.f, -1.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); - - glNormal3f( 1.f, 0.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, 1.0); - - glNormal3f(-1.f, 0.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); - glEnd(); -} - -void -logs(void) { - static GLUquadricObj *quadric; - - if (!quadric) { - quadric = gluNewQuadric(); - glNewList(100, GL_COMPILE); - gluQuadricOrientation(quadric, GLU_OUTSIDE); - glTranslatef(0.f, 0.f, -2.f); - gluCylinder(quadric, .5, .5, 4., 5, 1); - glTranslatef(0.f, 0.f, 4.f); - gluDisk(quadric, 0., .5, 10, 1); - glTranslatef(0.f, 0.f, -4.f); - gluQuadricOrientation(quadric, GLU_INSIDE); - gluDisk(quadric, 0., .5, 10, 1); - glEndList(); - } - glPushMatrix(); - glTranslatef(0.f, -.5f, 0.f); - glColor3f(.55f, .14f, .14f); - glPushMatrix(); - glRotatef(55., 0., 1., 0.); - glCallList(100); - glPopMatrix(); - glPushMatrix(); - glRotatef(-55., 0., 1., 0.); - glCallList(100); - glPopMatrix(); - if (marshmallow) { - glPushMatrix(); - glColor4f(1.f, 1.f, 1.f, 1.f); - glTranslatef(0.f, 1.7f, 0.f); - glRotatef(45.f, 0.f, 0.f, 1.f); - glRotatef(90.f, 0.f, 1.f, 0.f); - glScalef(1., 1., .25f); - glCallList(100); - glPopMatrix(); - - glPushMatrix(); - glColor4f(.1f, .1f, .1f, 1.f); - glTranslatef(1.5f, 3.4f, 0.f); - glRotatef(45.f, 0.f, 0.f, 1.f); - glRotatef(90.f, 0.f, 1.f, 0.f); - glScalef(.2f, .2f, 1.f); - glCallList(100); - glPopMatrix(); - - if (marshmallow == 2) { - extern void drawDinosaur(void); - glDisable(GL_COLOR_MATERIAL); - glPushMatrix(); - glTranslatef(10.f, 0.f, 0.f); - glRotatef(180.f, 0.f, 1.f, 0.f); - glScalef(.5f, .5f, .5f); - drawDinosaur(); - glPopMatrix(); - } - } - glPopMatrix(); -} -static void calcMatrix(void); - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glLoadIdentity(); -#define RAD(x) (((x)*M_PI)/180.) - gluLookAt(-sinf(RAD(rotx))*5.5,transy,cosf(RAD(rotx))*5.5, 0.,0.,0., 0.,1.,0.); - - glTranslatef(0.f, 0.f, transx*10.f); - - /* floor */ - glColor4f(0.f,.2f,0.f,1.f); - glBegin(GL_POLYGON); - glVertex3f(-4.0, -1.0, -4.0); - glVertex3f( 4.0, -1.0, -4.0); - glVertex3f( 4.0, -1.0, 4.0); - glVertex3f(-4.0, -1.0, 4.0); - glEnd(); - - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_LIGHTING); - glColor3f(.1f,.1f,.1f); - glPushMatrix(); - glTranslatef(-1.f, -1.+.2f, -1.5f); - glScalef(.2f,.2f, .2f); - logs(); - /*cube();*/ - glDisable(GL_LIGHTING); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-1.f, -1.f+.2f, -1.5f); - calcMatrix(); - draw_smoke(smoke); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(/*(delta/2.f*/-1.f, /*delta*/-.25f, -1.5f); - calcMatrix(); - glScalef(1.f,1.f,1.); - if (texture) { - glBindTexture(GL_TEXTURE_2D, the_texture+1); - glEnable(GL_TEXTURE_2D); - } - glColor4f(intensity, intensity, intensity, opacity); - glRotatef(rot, 0., 0., 1.); - glDepthMask(0); - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0); - glEnd(); - glDepthMask(1); - glPopMatrix(); - glDisable(GL_TEXTURE_2D); - - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'a': afunc(); break; - case 'b': bfunc(); break; - case 'h': help(); break; - case 'm': mfunc(); break; - case 's': sfunc(); break; - case 't': tfunc(); break; - case 'x': xfunc(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow(argv[0]); - init(argc-1, argv+1); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} - -void -buildRot(float theta, float x, float y, float z, float m[16]) { - float d = x*x + y*y + z*z; - float ct = cosf(RAD(theta)), st = sinf(RAD(theta)); - - /* normalize */ - if (d > 0) { - d = 1/d; - x *= d; - y *= d; - z *= d; - } - - m[ 0] = 1; m[ 1] = 0; m[ 2] = 0; m[ 3] = 0; - m[ 4] = 0; m[ 5] = 1; m[ 6] = 0; m[ 7] = 0; - m[ 8] = 0; m[ 9] = 0; m[10] = 1; m[11] = 0; - m[12] = 0; m[13] = 0; m[14] = 0; m[15] = 1; - - /* R = uu' + cos(theta)*(I-uu') + sin(theta)*S - * - * S = 0 -z y u' = (x, y, z) - * z 0 -x - * -y x 0 - */ - - m[0] = x*x + ct*(1-x*x) + st*0; - m[4] = x*y + ct*(0-x*y) + st*-z; - m[8] = x*z + ct*(0-x*z) + st*y; - - m[1] = y*x + ct*(0-y*x) + st*z; - m[5] = y*y + ct*(1-y*y) + st*0; - m[9] = y*z + ct*(0-y*z) + st*-x; - - m[2] = z*x + ct*(0-z*x) + st*-y; - m[6] = z*y + ct*(0-z*y) + st*x; - m[10]= z*z + ct*(1-z*z) + st*0; -} - -static void -calcMatrix(void) { - float mat[16]; - - glGetFloatv(GL_MODELVIEW_MATRIX, mat); - - buildRot(-180*atan2f(mat[8], mat[10])/M_PI, 0, 1, 0, mat); - glMultMatrixf(mat); -} diff --git a/lib/glut-3.7.6/progs/advanced97/fire.dsp b/lib/glut-3.7.6/progs/advanced97/fire.dsp deleted file mode 100644 index 6cc12662dea2112322ea141c1a06aea1aa3b1f4c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/fire.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fire" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fire - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fire.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fire.mak" CFG="fire - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fire - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fire - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fire - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fire - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fire - Win32 Release" -# Name "fire - Win32 Debug" -# Begin Source File - -SOURCE=.\d.c -# End Source File -# Begin Source File - -SOURCE=.\fire.c -# End Source File -# Begin Source File - -SOURCE=.\sm.c -# End Source File -# Begin Source File - -SOURCE=.\sm.h -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/genspheremap.c b/lib/glut-3.7.6/progs/advanced97/genspheremap.c deleted file mode 100644 index 259dbac5ea8c098d6cdfd788d7927faaa15df60a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/genspheremap.c +++ /dev/null @@ -1,291 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifdef _WIN32 -#include -#define sleep(x) Sleep((x*1000)) -#else -#include -#endif - -#include - -const char defaultBaseName[] = "../data/"; - -GLuint *faces[6]; -GLsizei faceW[6], faceH[6]; - -GLfloat angle1[6] = {90, 180, 270, 0, 90, -90}; -GLfloat axis1[6][3] = {{0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {1,0,0}, {1,0,0}}; -GLfloat angle2[6] = {0, 0, 0, 0, 180, 180}; -GLfloat axis2[6][3] = {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,1,0}, {0,1,0}}; - -GLuint *load_texture(const char *fname, GLsizei *w, GLsizei *h) -{ - int comps; - GLuint *img; - int i; - - img = read_texture(fname, w, h, &comps); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } - - for (i = 0; i < *w * *h; i++) { - img[i] |= 0xff; - } - - return img; -} - -void set_texture_border(GLuint val, GLuint mask, - GLsizei w, GLsizei h, GLuint *pix) -{ - int x, y; - - val &= mask; - mask = ~mask; - - /* top & bottom rows */ - for (x = 0; x < w; x++) { - pix[x] = (pix[x] & mask) | val; - pix[x + (h-1)*w] = (pix[x + (h-1)*w] & mask) | val; - } - - for (y = 0; y < h; y++) { - pix[y*w] = (pix[y*w] & mask) | val; - pix[y*w + (w-1)] = (pix[y*w + (w-1)] & mask) | val; - } -} - -void init(void) -{ - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - glLoadIdentity(); - glOrtho(-2, 2, -2, 2, 0, 5); -} - -void draw_special_sphere(int tess) -{ - float r = 1.0, r1, r2, z1, z2; - float theta, phi; - int nlon = tess, nlat = tess; - int i, j; - - glBegin(GL_TRIANGLE_FAN); - theta = M_PI*1.0/nlat; - r2 = r*sin(theta); z2 = r*cos(theta); - glNormal3f(0.0, 0.0, 1.0); - glVertex4f(0.0, 0.0, r*r, r); - for (j = 0, phi = 0.0; j <= nlon; j++, phi = 2*M_PI*j/nlon) { - glNormal3f(r2*cos(phi), r2*sin(phi), z2); - glVertex4f(r2*cos(phi)*z2, r2*sin(phi)*z2, z2*z2, z2); /* top */ - } - glEnd(); - - for (i = 2; i < nlat; i++) { - theta = M_PI*i/nlat; - r1 = r*sin(M_PI*(i-1)/nlat); z1 = r*cos(M_PI*(i-1)/nlat); - r2 = r*sin(theta); z2 = r*cos(theta); - - if (fabs(z1) < 0.01 || fabs(z2) < 0.01) - break; - - glBegin(GL_QUAD_STRIP); - for (j = 0, phi = 0; j <= nlat; j++, phi = 2*M_PI*j/nlon) { - glNormal3f(r1*cos(phi), r1*sin(phi), z1); - glVertex4f(r1*cos(phi)*z1, r1*sin(phi)*z1, z1*z1, z1); - glNormal3f(r2*cos(phi), r2*sin(phi), z2); - glVertex4f(r2*cos(phi)*z2, r2*sin(phi)*z2, z2*z2, z2); - } - glEnd(); - } -} - -void render_spheremap(int width, int height) -{ - GLfloat p[4]; - int i; - - glColor4f(1, 1, 1, 1); - - glEnable(GL_TEXTURE_2D); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - - p[0] = 2.0; p[1] = p[2] = p[3] = 0.0; /* 2zx */ - glTexGenfv(GL_S, GL_OBJECT_PLANE, p); - - glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - p[0] = 0.0; p[1] = 2.0; p[2] = p[3] = 0.0; /* 2zy */ - glTexGenfv(GL_T, GL_OBJECT_PLANE, p); - - glTexGenf(GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - p[0] = p[1] = 0.0; p[2] = 0.0; p[3] = 2.0; /* 2z */ - glTexGenfv(GL_R, GL_OBJECT_PLANE, p); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, 1.0, 100); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 6, - 0, 0, 0, - 0, 1, 0); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClearDepth(1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - for (i = 0; i < 6; i++) { - glTexImage2D(GL_TEXTURE_2D, 0, 4, faceW[i], faceH[i], 0, - GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid *)faces[i]); - - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glScalef(0.5, 0.5, 1.0); - glTranslatef(1.0, 1.0, 0.0); - glFrustum(-1.01, 1.01, -1.01, 1.01, 1.0, 100.0); - if (angle2[i]) { - glRotatef(angle2[i], axis2[i][0], axis2[i][1], axis2[i][2]); - } - glRotatef(angle1[i], axis1[i][0], axis1[i][1], axis1[i][2]); - - /* XXX atul does another angle thing here... */ - /* XXX atul does a third angle thing here... */ - - glTranslatef(0.0, 0.0, -1.00); - - glMatrixMode(GL_MODELVIEW); - glClear(GL_DEPTH_BUFFER_BIT); - draw_special_sphere(20); - - sleep(1); - } - - glDisable(GL_BLEND); - glDisable(GL_CULL_FACE); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glMatrixMode(GL_TEXTURE); - glPopMatrix(); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glDisable(GL_TEXTURE_GEN_R); - - glDisable(GL_TEXTURE_2D); -} - -void draw(void) -{ - GLenum err; - - glClear(GL_COLOR_BUFFER_BIT); - - render_spheremap(256, 256); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if (key == 27) exit(0); -} - -void show_usage(void) -{ - fprintf(stderr, "Usage:\n"); - fprintf(stderr, "genspheremap -- use default files" - "(%s00.rgb through %s05.rgb)\n", defaultBaseName, defaultBaseName); - fprintf(stderr, "genspheremap baseName -- use files of the form " - "baseName0.rgb through baseName5.rgb\n"); - fprintf(stderr, "genspheremap f0.rgb f1.rgb f2.rgb f3.rgb f4.rgb f5.rgb\n"); -} - -main(int argc, char *argv[]) -{ - const char *baseName; - char fname[128]; - int i; - - glutInitWindowSize(512, 512); - glutInitWindowPosition(0, 0); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - if (argc == 1 || argc == 2) { - if (argc == 1) baseName = defaultBaseName; - else baseName = argv[1]; - assert(strlen(baseName) < 128 - (strlen("0.rgb") + 1)); - for (i = 0; i < 6; i++) { - sprintf(fname, "%s%02d.rgb", baseName, i); - faces[i] = load_texture(fname, &faceW[i], &faceH[i]); - } - } else if (argc == 7) { - for (i = 0; i < 6; i++) { - faces[i] = load_texture(fname, &faceW[i], &faceH[i]); - } - } else { - show_usage(); - exit(1); - } - - for (i = 0; i < 6; i++) { - set_texture_border(0x00, 0xff, faceW[i], faceH[i], faces[i]); - } - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/genspheremap.dsp b/lib/glut-3.7.6/progs/advanced97/genspheremap.dsp deleted file mode 100644 index cde6871fbe13fa51f4422502f603a156970bbb5b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/genspheremap.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="genspheremap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=genspheremap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "genspheremap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "genspheremap.mak" CFG="genspheremap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "genspheremap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "genspheremap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "genspheremap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "genspheremap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "genspheremap - Win32 Release" -# Name "genspheremap - Win32 Debug" -# Begin Source File - -SOURCE=.\genspheremap.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/highlight.c b/lib/glut-3.7.6/progs/advanced97/highlight.c deleted file mode 100644 index 591e66c08a0cdc334b954247b04c4f4c13db091b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/highlight.c +++ /dev/null @@ -1,704 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - -#define CHECK_ERROR(str) \ -{ \ - GLenum error; \ - if(error = glGetError()) \ - printf("GL Error: %s (%s)\n", gluErrorString(error), str); \ -} - -#ifndef FALSE -enum {FALSE, TRUE}; -#endif -enum {X, Y, Z, W}; -enum {OBJ_ANGLE, LIGHT_ANGLE, OBJ_TRANSLATE}; -enum {SURF_TEX, HIGHLIGHT_TEX}; - -/* window dimensions */ -int winWidth = 512; -int winHeight = 512; -int active; -int dblbuf = TRUE; -int highlight = TRUE; -int gouraud = FALSE; -int texmap = FALSE; -int notex = FALSE; /* don't texture gouraud */ - -int object = 2; -int maxobject = 2; - -GLfloat lightangle[2] = {0.f, 0.f}; -GLfloat objangle[2] = {0.f, 0.f}; -GLfloat objpos[2] = {0.f, 0.f}; - -GLfloat color[4] = {1.f, 1.f, 1.f, 1.f}; -GLfloat zero[4] = {0.f, 0.f, 0.f, 1.f}; -GLfloat one[4] = {1.f, 1.f, 1.f, 1.f}; - -int texdim = 128; -GLfloat *lighttex = 0; -GLfloat lightpos[4] = {0.f, 0.f, 1.f, 0.f}; -GLboolean lightchanged[2] = {GL_TRUE, GL_TRUE}; -enum {UPDATE_OGL, UPDATE_TEX}; - - -/* draw a highly tesselated sphere with a specular highlight */ -void -makeHighlight(int shinyness) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); /* starts as modelview */ - glLoadIdentity(); - glTranslatef(0.f, 0.f, -texdim/2.f); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(-texdim/2., texdim/2., -texdim/2., texdim/2., 0., texdim/2.); - - glPushAttrib(GL_LIGHTING_BIT|GL_VIEWPORT_BIT); - glViewport(0, 0, texdim, texdim); - glEnable(GL_LIGHTING); - - glLightfv(GL_LIGHT0, GL_DIFFUSE, zero); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); /* light direction */ - - /* XXX TODO, range check an report errors */ - glMateriali(GL_FRONT, GL_SHININESS, shinyness); /* cosine power */ - glMaterialfv(GL_FRONT, GL_AMBIENT, zero); - glMaterialfv(GL_FRONT, GL_DIFFUSE, zero); - glMaterialfv(GL_FRONT, GL_SPECULAR, color); - glDisable(GL_TEXTURE_2D); - - glCallList(1); - - glEnable(GL_TEXTURE_2D); - glPopAttrib(); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glReadPixels(0, 0, texdim, texdim, GL_RGB, GL_FLOAT, lighttex); - - glBindTexture(GL_TEXTURE_2D, HIGHLIGHT_TEX); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, texdim, texdim, 0, GL_RGB, - GL_FLOAT, lighttex); -} - -void -reshape(int wid, int ht) -{ - winWidth = wid; - winHeight = ht; - glViewport(0, 0, wid, ht); -} - - -void -motion(int x, int y) -{ - - switch(active) - { - case OBJ_ANGLE: - objangle[X] = (x - winWidth/2) * 360./winWidth; - objangle[Y] = (y - winHeight/2) * 360./winHeight; - glutPostRedisplay(); - break; - case LIGHT_ANGLE: - lightangle[X] = (x - winWidth/2) * 2 * M_PI/winWidth; - lightangle[Y] = (winHeight/2 - y) * 2 * M_PI/winHeight; - - lightpos[Y] = sin(lightangle[Y]); - lightpos[X] = cos(lightangle[Y]) * sin(lightangle[X]); - lightpos[Z] = cos(lightangle[Y]) * cos(lightangle[X]); - lightpos[W] = 0.; - lightchanged[UPDATE_OGL] = GL_TRUE; - lightchanged[UPDATE_TEX] = GL_TRUE; - glutPostRedisplay(); - break; - case OBJ_TRANSLATE: - objpos[X] = (x - winWidth/2) * 100./winWidth; - objpos[Y] = (winHeight/2 - y) * 100./winHeight; - glutPostRedisplay(); - break; - } -} - -void -mouse(int button, int state, int x, int y) -{ - if(state == GLUT_DOWN) - switch(button) - { - case GLUT_LEFT_BUTTON: /* move the light */ - active = OBJ_ANGLE; - motion(x, y); - break; - case GLUT_MIDDLE_BUTTON: - active = LIGHT_ANGLE; - motion(x, y); - break; - case GLUT_RIGHT_BUTTON: /* move the polygon */ - active = OBJ_TRANSLATE; - motion(x, y); - break; - } -} - -/* draw the object unlit without surface texture */ -void redraw_white(void) -{ - glPushMatrix(); /* assuming modelview */ - glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - /* draw the specular highlight */ - - glCallList(object); - - glEnable(GL_TEXTURE_2D); - - glPopMatrix(); /* assuming modelview */ - - CHECK_ERROR("OpenGL Error in redraw_tex()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - -/* just draw textured highlight */ -void redraw_tex_highlight(void) -{ - if(lightchanged[UPDATE_TEX]) - { - makeHighlight(128); - lightchanged[UPDATE_TEX] = GL_FALSE; - } - - - glPushMatrix(); /* assuming modelview */ - glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - - glClearColor(.1f, .1f, .1f, 1.f); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glClearColor(0.f, 0.f, 0.f, 1.f); - - /* draw the specular highlight */ - glBindTexture(GL_TEXTURE_2D, HIGHLIGHT_TEX); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - - glCallList(object); - - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - - glPopMatrix(); /* assuming modelview */ - - CHECK_ERROR("OpenGL Error in redraw_tex()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -/* just draw opengl highlight */ -void redraw_gouraud_highlight(void) -{ - if(lightchanged[UPDATE_OGL]) - { - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - lightchanged[UPDATE_OGL] = GL_FALSE; - } - - glPushAttrib(GL_LIGHTING); - glPushMatrix(); /* assuming modelview */ - glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - - glClearColor(.1f, .1f, .1f, 1.f); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glClearColor(0.f, 0.f, 0.f, 1.f); - - /* draw the specular highlight */ - - glEnable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - - glMaterialfv(GL_FRONT, GL_SPECULAR, color); /* turn on ogl highlights */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, zero); /* turn off ogl diffuse */ - glMaterialfv(GL_FRONT, GL_AMBIENT, zero); /* turn off ogl diffuse */ - - /* draw the specular highlight */ - glCallList(object); - - glEnable(GL_TEXTURE_2D); - glPopMatrix(); /* assuming modelview */ - glPopAttrib(); - - CHECK_ERROR("OpenGL Error in redraw_tex()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - - -/* show highlight texture map */ -void redraw_map(void) -{ - if(lightchanged[UPDATE_TEX]) - { - makeHighlight(128); - lightchanged[UPDATE_TEX] = GL_FALSE; - } - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - glBindTexture(GL_TEXTURE_2D, HIGHLIGHT_TEX); - glDisable(GL_LIGHTING); - - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(-1, -1); - - glTexCoord2i(1, 0); - glVertex2i(1, -1); - - glTexCoord2i(1, 1); - glVertex2i(1, 1); - - glTexCoord2i(0, 1); - glVertex2i(-1, 1); - glEnd(); - - glEnable(GL_LIGHTING); - - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - CHECK_ERROR("OpenGL Error in redraw_map()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - - -/* multipass, use texture to make highlight */ -void redraw_tex(void) -{ - if(lightchanged[UPDATE_TEX]) - { - makeHighlight(128); - lightchanged[UPDATE_TEX] = GL_FALSE; - } - if(lightchanged[UPDATE_OGL]) - { - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - lightchanged[UPDATE_OGL] = GL_FALSE; - } - - glPushMatrix(); /* assuming modelview */ - glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - /* draw the diffuse portion of the light */ - glEnable(GL_LIGHTING); - - glBindTexture(GL_TEXTURE_2D, SURF_TEX); - - if(notex) - glDisable(GL_TEXTURE_2D); - glCallList(object); - if(notex) - glEnable(GL_TEXTURE_2D); - - glDisable(GL_LIGHTING); - - /* draw the specular highlight */ - glEnable(GL_BLEND); - glBindTexture(GL_TEXTURE_2D, HIGHLIGHT_TEX); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glDepthFunc(GL_LEQUAL); - - glCallList(object); - - glDepthFunc(GL_LESS); - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glDisable(GL_BLEND); - - glPopMatrix(); /* assuming modelview */ - - CHECK_ERROR("OpenGL Error in redraw_tex()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -/* multipass; use opengl to make highlight */ -void redraw_phong(void) -{ - if(lightchanged[UPDATE_OGL]) - { - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - lightchanged[UPDATE_OGL] = GL_FALSE; - } - - glPushAttrib(GL_LIGHTING); - glPushMatrix(); /* assuming modelview */ - glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - /* draw the diffuse portion of the light */ - glEnable(GL_LIGHTING); - - glBindTexture(GL_TEXTURE_2D, SURF_TEX); - - if(notex) - glDisable(GL_TEXTURE_2D); - glCallList(object); - if(notex) - glEnable(GL_TEXTURE_2D); - - /* turn off texturing so phong highlight color is pure */ - glDisable(GL_TEXTURE_2D); - - glMaterialfv(GL_FRONT, GL_SPECULAR, color); /* turn on ogl highlights */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, zero); /* turn off ogl diffuse */ - glMaterialfv(GL_FRONT, GL_AMBIENT, zero); /* turn off ogl diffuse */ - - /* draw the specular highlight */ - glEnable(GL_BLEND); - glDepthFunc(GL_LEQUAL); - - glCallList(object); - - glEnable(GL_TEXTURE_2D); - glDepthFunc(GL_LESS); - glDisable(GL_BLEND); - - glPopMatrix(); /* assuming modelview */ - glPopAttrib(); - - CHECK_ERROR("OpenGL Error in redraw_tex()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - -/* Use OpenGL lighting to get highlight */ -void redraw_original(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); /* assuming modelview */ - glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - - if(lightchanged[UPDATE_OGL]) - { - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - lightchanged[UPDATE_OGL] = GL_FALSE; - } - - glEnable(GL_LIGHTING); - - glBindTexture(GL_TEXTURE_2D, SURF_TEX); - glMaterialfv(GL_FRONT, GL_SPECULAR, color); /* turn on ogl highlights */ - if(notex) - glDisable(GL_TEXTURE_2D); - glCallList(object); - if(notex) - glEnable(GL_TEXTURE_2D); - glMaterialfv(GL_FRONT, GL_SPECULAR, zero); - - glDisable(GL_LIGHTING); - - glPopMatrix(); /* assuming modelview */ - - CHECK_ERROR("OpenGL Error in redraw()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -/* Draw with no highlight */ -void redraw_diffuse(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - - glPushMatrix(); /* assuming modelview */ - glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - - if(lightchanged[UPDATE_OGL]) - { - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - lightchanged[UPDATE_OGL] = GL_FALSE; - } - - /* draw the diffuse portion of the light */ - glEnable(GL_LIGHTING); - - glBindTexture(GL_TEXTURE_2D, SURF_TEX); - glCallList(object); - - glDisable(GL_LIGHTING); - - glPopMatrix(); /* assuming modelview */ - - CHECK_ERROR("OpenGL Error in redraw()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) - { - case 'u': /* unmodified highlight */ - printf("Use unmodified gouraud highlight\n"); - glutDisplayFunc(redraw_original); - glutPostRedisplay(); - break; - case 'd': - printf("Draw diffuse only\n"); - glutDisplayFunc(redraw_diffuse); - glutPostRedisplay(); - break; - case 'g': /* separate gouraud shaded highlight */ - printf("Use separate gouraud shaded highlight\n"); - glutDisplayFunc(redraw_phong); - glutPostRedisplay(); - break; - case 't': /* separate textured highlight */ - printf("Use separate texture highlight\n"); - glutDisplayFunc(redraw_tex); - glutPostRedisplay(); - break; - case 'o': - /* toggle object type */ - object++; - if(object > maxobject) - object = 2; - glutPostRedisplay(); - break; - case 'm': - /* show highlight texture map */ - printf("Show highlight texture map\n"); - glutDisplayFunc(redraw_map); - glutPostRedisplay(); - break; - case 'n': - if(notex) - notex = FALSE; - else - notex = TRUE; - glutPostRedisplay(); - break; - case 'h': - printf("Show textured phong highlight\n"); - glutDisplayFunc(redraw_tex_highlight); - glutPostRedisplay(); - break; - case 'p': - printf("Show gouraud-shaded phong highlight\n"); - glutDisplayFunc(redraw_gouraud_highlight); - glutPostRedisplay(); - break; - case 'w': - printf("Show white object\n"); - glutDisplayFunc(redraw_white); - glutPostRedisplay(); - break; - case '\033': - exit(0); - break; - default: - fprintf(stderr, "Keyboard commands:\n\n" - "u - (unmodified opengl lighting)\n" - "d - diffuse only\n" - "g - multipass gouraud highlight\n" - "t - multipass texture highlight\n" - "o - toggle object\n" - "m - show highlight texture map\n" - "n - toggle surface texturing\n" - "h - show textured phong highlight\n" - "p - show gouraud-shaded phong highlight\n" - "w - show unlit white object\n"); - break; - } - -} - - - -main(int argc, char *argv[]) -{ - GLuint *tex; - int texwid, texht, texcomps; - - GLUquadricObj *quadric; - - glutInitWindowSize(winWidth, winHeight); - glutInit(&argc, argv); - if(argc > 1) - { - char *args = argv[1]; - int done = FALSE; - while(!done) - { - switch(*args) - { - case 's': /* single buffer */ - printf("Single Buffered\n"); - dblbuf = FALSE; - break; - case '-': /* do nothing */ - break; - case 0: - done = TRUE; - break; - } - args++; - } - } - if(dblbuf) - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE); - else - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH); - (void)glutCreateWindow("example program"); - glutDisplayFunc(redraw_original); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutKeyboardFunc(key); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-100., 100., -100., 100., 300., 600.); - glMatrixMode(GL_MODELVIEW); - /* look at scene from (0, 0, 450) */ - gluLookAt(0., 0., 450., 0., 0., 0., 0., 1., 0.); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - - glMateriali(GL_FRONT, GL_SHININESS, 128); /* cosine power */ - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - glBlendFunc(GL_ONE, GL_ONE); - - lightchanged[UPDATE_TEX] = GL_TRUE; - lightchanged[UPDATE_OGL] = GL_TRUE; - - /* load pattern for current 2d texture */ - - tex = read_texture("../data/wood.rgb", &texwid, &texht, &texcomps); - - gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, texwid, texht, GL_RGBA, - GL_UNSIGNED_BYTE, tex); - free(tex); - CHECK_ERROR("end of main"); - - lighttex = (GLfloat *)malloc(texdim * texdim * sizeof(GL_FLOAT) * 3); - - - - /* XXX TODO use display list to avoid retesselating */ - glNewList(1, GL_COMPILE); - glutSolidSphere((GLdouble)texdim/2., 50, 50); - glEndList(); - - - glNewList(2, GL_COMPILE); - glutSolidTeapot(70.); - glEndList(); - - quadric = gluNewQuadric(); - gluQuadricTexture(quadric, GL_TRUE); - - glNewList(3, GL_COMPILE); - gluSphere(quadric, 70., 20, 20); - glEndList(); - - gluDeleteQuadric(quadric); - maxobject = 3; - - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/highlight.dsp b/lib/glut-3.7.6/progs/advanced97/highlight.dsp deleted file mode 100644 index 73006c38a6be7c845d398873a1a1626177dea221..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/highlight.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="highlight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=highlight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "highlight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "highlight.mak" CFG="highlight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "highlight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "highlight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "highlight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "highlight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "highlight - Win32 Release" -# Name "highlight - Win32 Debug" -# Begin Source File - -SOURCE=.\highlight.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/interp.c b/lib/glut-3.7.6/progs/advanced97/interp.c deleted file mode 100644 index 49e64511ea03dda10f2b903c99705f5ffc0b7232..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/interp.c +++ /dev/null @@ -1,261 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "texture.h" - -static char defaultFile[] = "../data/mandrill.rgb"; -GLuint *img, *black, *avgLum, *lum; -GLsizei w, h; -GLint comp; -GLboolean isIR; - -#define RW 0.3086 -#define GW 0.6094 -#define BW 0.0820 - -GLuint *in0, *in1; -GLfloat x = 1.; - -#define BRIGHTNESS 0 -#define CONTRAST 1 -#define SATURATION 2 -int nOperations = 3; -int operation = 0; - - -void set_img_pointers(void) -{ - switch(operation) { - case CONTRAST: - in0 = avgLum; - printf("modifying contrast\n"); - break; - case SATURATION: - in0 = lum; - printf("modifying saturation\n"); - break; - case BRIGHTNESS: - in0 = black; - printf("modifying brightness\n"); - break; - default: - assert(0); - } -} - -void init(void) -{ - const char *renderer; - - set_img_pointers(); - - renderer = (char*) glGetString(GL_RENDERER); - isIR = (renderer[0] == 'I' && renderer[1] == 'R'); -} - -GLuint *alloc_image(void) -{ - GLuint *ptr; - - ptr = (GLuint *)malloc(w * h * sizeof(GLuint)); - if (!ptr) { - fprintf(stderr, "malloc of %d bytes failed.\n", w * h * sizeof(GLuint)); - } - return ptr; -} - -void load_img(const char *fname) -{ - int i; - GLubyte *src, *dst; - GLfloat pix, avg; - - img = read_texture(fname, &w, &h, &comp); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } - - black = alloc_image(); - memset(black, 0, w * h * sizeof(GLuint)); - - lum = alloc_image(); - src = (GLubyte *)img; - dst = (GLubyte *)lum; - avg = 0.; - /* compute average luminance at same time that we set luminance image. - * note that little care is taken to avoid mathematical error when - * computing overall average... */ - for (i = 0; i < w * h; i++) { - pix = (float)src[0]*RW + (float)src[1]*GW + (float)src[2]*BW; - if (pix > 255) pix = 255; - dst[0] = dst[1] = dst[2] = pix; - avg += pix / 255.; - src += 4; - dst += 4; - } - - avgLum = alloc_image(); - pix = avg * 255. / (float)(w*h); - dst = (GLubyte *)avgLum; - for (i = 0; i < w * h; i++) { - dst[0] = dst[1] = dst[2] = pix; - dst += 4; - } -} - -void reshape(GLsizei winW, GLsizei winH) -{ - glViewport(0, 0, w, h); - glLoadIdentity(); - glOrtho(0, winW, 0, winH, 0, 5); -} - -void draw(void) -{ - GLenum err; - GLfloat s, absx, abs1minusx; - - glClear(GL_COLOR_BUFFER_BIT | GL_ACCUM_BUFFER_BIT); - glRasterPos2i(0, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, in0); - - absx = fabs(x); - abs1minusx = fabs(1.-x); - s = absx > abs1minusx ? absx : abs1minusx; - - if (!isIR) { - glAccum(GL_ACCUM, (1. - x) / s); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, in1); - glAccum(GL_ACCUM, x/s); - glAccum(GL_RETURN, s); - } else { - if (fabs(x) < 1. && fabs(1. - x) < 1) { - glAccum(GL_ACCUM, 1. - x); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, in1); - glAccum(GL_ACCUM, x); - glAccum(GL_RETURN, 1); - } else { - absx = fabs(x); - abs1minusx = fabs(1.-x); - s = absx > abs1minusx ? absx : abs1minusx; - - glAccum(GL_ACCUM, .8 * ((1. - x) / s)); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, in1); - glAccum(GL_ACCUM, .8 * x/s); - glAccum(GL_RETURN, 1.2 * s); - } - } - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int xpos, int ypos) -{ - if (key == 27) exit(0); - - operation = (operation + 1) % nOperations; - set_img_pointers(); - draw(); -} - -int mouseOriginX; -int moveCalled = 0; -float deltaSinceDraw = 0.; - -void idle(void); - -void clamp_x(void) -{ - if (x > 3.99 && isIR) x = 3.99; - else if (x < -4. && isIR) x = -4.; -} - -/* ARGSUSED */ -void button(int button, int state, int xpos, int ypos) -{ - if (state == GLUT_DOWN) { - mouseOriginX = xpos; - deltaSinceDraw = 0; - glutIdleFunc(idle); - return; - } - - if (!moveCalled) { - if (button == GLUT_MIDDLE_BUTTON) x = 1.; - else x = (float)xpos / ((float)w / 2.); - clamp_x(); - deltaSinceDraw = 100000.; - } - moveCalled = 0; - if (deltaSinceDraw) draw(); - printf("x = %f\n", x); - glutIdleFunc(NULL); -} - -void menu(int val) -{ - operation = val; - set_img_pointers(); - draw(); -} - -void idle(void) -{ - if (deltaSinceDraw) { - x += deltaSinceDraw; - clamp_x(); - draw(); - deltaSinceDraw = 0; - } -} - -/* ARGSUSED */ -void motion(int xpos, int ypos) -{ - float delta = xpos - mouseOriginX; - mouseOriginX = xpos; - moveCalled = 1; - delta /= w/2.; - deltaSinceDraw += delta; -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - if (argc > 1) { - load_img(argv[1]); - } else { - load_img(defaultFile); - } - in0 = black; - in1 = img; - operation = BRIGHTNESS; - glutInitWindowSize(w, h); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_ACCUM | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutKeyboardFunc(key); - glutMotionFunc(motion); - glutMouseFunc(button); - glutReshapeFunc(reshape); - - glutCreateMenu(menu); - glutAddMenuEntry("Change brightness", 0); - glutAddMenuEntry("Change contrast", 1); - glutAddMenuEntry("Change saturation", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - init(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/interp.dsp b/lib/glut-3.7.6/progs/advanced97/interp.dsp deleted file mode 100644 index 48b1ae41e02c73f45ac2d77ca5ce69b6020a1d99..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/interp.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="interp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=interp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "interp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "interp.mak" CFG="interp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "interp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "interp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "interp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "interp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "interp - Win32 Release" -# Name "interp - Win32 Debug" -# Begin Source File - -SOURCE=.\interp.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/lightmap.c b/lib/glut-3.7.6/progs/advanced97/lightmap.c deleted file mode 100644 index e4a073d8e2b10256e9771a3710c9ca1942c9af74..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/lightmap.c +++ /dev/null @@ -1,1052 +0,0 @@ -#include -#include -#include -#include "texture.h" -#include - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define sqrtf(x) (float)sqrt((x)) -#endif - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - -#define CHECK_ERROR(str) \ -{ \ - GLenum error; \ - if(error = glGetError()) \ - printf("GL Error: %s (%s)\n", gluErrorString(error), str); \ -} - -/* display lists */ -enum {SPHERE = 1, CONE, LIGHT, DISK, FLOOR, BACK, LEFT, RIGHT, CEIL}; - -/* texture objects */ -enum {DEFAULT, LIGHTMAP, SURFMAP}; - -enum {NONE, LIGHT_XY, LIGHT_Z, LIGHT_INTENS}; - -#ifndef TRUE -enum {FALSE, TRUE}; -#endif -enum {X, Y, Z, W}; -enum {R, G, B, A}; - -GLfloat staticlightpos[] = {50.f, 70.f, -10.f, 1.f}; -GLfloat lightpos[] = {50.f, 70.f, -10.f, 1.f}; -GLfloat intensity = 1.f; -GLfloat nearScale = .49f, farScale = .0001f; - -int dblbuf = TRUE; -int action = NONE; -int winWidth = 512; -int winHeight = 512; -int curtess = 1; /* current tessellation level */ -int lasttess = 1; /* last set tessellation level */ - -void -reshape(int wid, int ht) -{ - winWidth = wid; - winHeight = ht; - glViewport(0, 0, wid, ht); -} - -void -motion(int x, int y) -{ - switch(action) - { - case LIGHT_XY: - lightpos[X] = (x - winWidth/2) * 200.f/winWidth; - lightpos[Y] = (winHeight/2 - y) * 200.f/winHeight; - glutPostRedisplay(); - break; - case LIGHT_Z: - lightpos[Z] = (winHeight/2 - y) * 200.f/winWidth; - glutPostRedisplay(); - break; - case LIGHT_INTENS: - intensity = x/(GLfloat)winWidth; - glutPostRedisplay(); - break; - } -} - -void -mouse(int button, int state, int x, int y) -{ - if(state == GLUT_DOWN) - switch(button) - { - case GLUT_LEFT_BUTTON: /* move the light */ - action = LIGHT_XY; - motion(x, y); - break; - case GLUT_MIDDLE_BUTTON: - action = LIGHT_INTENS; - motion(x, y); - break; - case GLUT_RIGHT_BUTTON: /* move the polygon */ - action = LIGHT_Z; - motion(x, y); - break; - } -} - - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 3) & 0x1) ^ ((t >> 3) & 0x1); - } - } - return texture; -} - -/* make tesselated surface for display list dlist */ -/* normal tells you surface position and orientation */ -/* count = tesselation count */ -void -tess_surface(GLuint dlist, int count) -{ - int i, j; - GLfloat x0, y0, z0; - GLfloat over[3], up[3]; /* axes */ - int Sindex, Tindex; /* active texture axes */ - - glNewList(dlist, GL_COMPILE); - glBegin(GL_QUADS); - - switch(dlist) - { - case FLOOR: - glNormal3f( 0.f, 1.f, 0.f); - x0 = -100.f; y0 = -100.f; z0 = 100.f; - over[X] = 1.f/count; over[Y] = 0.f; over[Z] = 0.f; - up[X] = 0.f; up[Y] = 0.f; up[Z] = -1.f/count; - Sindex = X; Tindex = Z; - break; - case CEIL: - glNormal3f( 0.f, -1.f, 0.f); - x0 = -100.f; y0 = 100.f; z0 = 100.f; - over[X] = 0.f; over[Y] = 0.f; over[Z] = -1.f/count; - up[X] = 1.f/count; up[Y] = 0.f; up[Z] = 0.f; - Sindex = X; Tindex = Z; - break; - case LEFT: - glNormal3f( 1.f, 0.f, 0.f); - x0 = -100.f; y0 = -100.f; z0 = 100.f; - over[X] = 0.f; over[Y] = 0.f; over[Z] = -1.f/count; - up[X] = 0.f; up[Y] = 1.f/count; up[Z] = 0.f; - Sindex = Z; Tindex = Y; - break; - case RIGHT: - glNormal3f(-1.f, 0.f, 0.f); - x0 = 100.f; y0 = -100.f; z0 = 100.f; - over[X] = 0.f; over[Y] = 1.f/count; over[Z] = 0.f; - up[X] = 0.f; up[Y] = 0.f; up[Z] = -1.f/count; - Sindex = Z; Tindex = Y; - break; - case BACK: - glNormal3f( 0.f, 0.f, 1.f); - x0 = -100.f; y0 = -100.f; z0 = -100.f; - over[X] = 1.f/count; over[Y] = 0.f; over[Z] = 0.f; - up[X] = 0.f; up[Y] = 1.f/count; up[Z] = 0.f; - Sindex = X; Tindex = Y; - break; - default: - fprintf(stderr, "tess_surface(): bad display list argument %d\n", - dlist); - glEnd(); - glEndList(); - return; - } - - for(j = 0; j < count; j++) - for(i = 0; i < count; i++) - { - glTexCoord2f(i * over[Sindex], j * up[Tindex]); - glVertex3f(x0 + i * 200 * over[X] + j * 200 * up[X], - y0 + i * 200 * over[Y] + j * 200 * up[Y], - z0 + i * 200 * over[Z] + j * 200 * up[Z]); - glTexCoord2f((i + 1) * over[Sindex], j * up[Tindex]); - glVertex3f(x0 + (i + 1) * 200 * over[X] + j * 200 * up[X], - y0 + (i + 1) * 200 * over[Y] + j * 200 * up[Y], - z0 + (i + 1) * 200 * over[Z] + j * 200 * up[Z]); - glTexCoord2f((i + 1) * over[Sindex], (j + 1) * up[Tindex]); - glVertex3f(x0 + (i + 1) * 200 * over[X] + (j + 1) * 200 * up[X], - y0 + (i + 1) * 200 * over[Y] + (j + 1) * 200 * up[Y], - z0 + (i + 1) * 200 * over[Z] + (j + 1) * 200 * up[Z]); - glTexCoord2f(i * over[Sindex], (j + 1) * up[Tindex]); - glVertex3f(x0 + i * 200 * over[X] + (j + 1) * 200 * up[X], - y0 + i * 200 * over[Y] + (j + 1) * 200 * up[Y], - z0 + i * 200 * over[Z] + (j + 1) * 200 * up[Z]); - } - glEnd(); - glEndList(); -} - - - - - -static GLfloat zero[] = {0.f, 0.f, 0.f, 1.f}; -static GLfloat one[] = {1.f, 1.f, 1.f, 1.f}; -static GLfloat diff[] = {.25f, .25f, .25f, .25f}; - - -/* create a lightmap simulating a local light with attenuation */ -void -make_lightmap(GLenum light, int dim) -{ - GLfloat quadratic, linear, constant; - GLfloat diffuse[4], ambient[4]; /* light color */ - GLfloat *texture; - GLfloat dist, scale, edge; - int size; - int i, j; - - glPushAttrib(GL_TEXTURE_BIT); - /* get from light to simplify api */ - glGetLightfv(light, GL_QUADRATIC_ATTENUATION, &quadratic); - glGetLightfv(light, GL_LINEAR_ATTENUATION, &linear); - glGetLightfv(light, GL_CONSTANT_ATTENUATION, &constant); - - glGetLightfv(light, GL_AMBIENT, ambient); - glGetLightfv(light, GL_DIFFUSE, diffuse); - - size = dim + 2; - texture = (GLfloat *)malloc(sizeof(GLfloat) * 3 * size * size); - - dist = dim/2; /* 1 in from border */ - edge = 1.f/(constant + linear * dist + quadratic * dist * dist); - - for(j = 0; j < size; j++) - for(i = 0; i < size; i++) - { - dist = sqrtf((float)((size/2.f - i) * (size/2.f - i) + - (size/2.f - j) * (size/2.f - j))); - scale = 1.f/(constant + linear * dist + quadratic * dist * dist); - if(dist >= dim/2) - { - texture[3 * (i + size * j) + 0] = - diffuse[R] * edge + ambient[R]; - texture[3 * (i + size * j) + 1] = - diffuse[G] * edge + ambient[G]; - texture[3 * (i + size * j) + 2] = - diffuse[B] * edge + ambient[B]; - } - else - { - texture[3 * (i + size * j) + 0] = - diffuse[R] * scale + ambient[R]; - texture[3 * (i + size * j) + 1] = - diffuse[G] * scale + ambient[G]; - texture[3 * (i + size * j) + 2] = - diffuse[B] * scale + ambient[B]; - } - } - - glBindTexture(GL_TEXTURE_2D, LIGHTMAP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, - size, size, 1, GL_RGB, GL_FLOAT, texture); - free(texture); - glPopAttrib(); -} - -/* draw a highly tesselated disk with local light */ -void -draw_lightmap(int dim, int dist) -{ - GLUquadricObj *qobj; - GLfloat *texture; - GLfloat light[4] = {0.f, 0.f, 1.f, 1.f}; - - texture = (GLfloat *)malloc(sizeof(GLfloat) * 3 * dim * dim); - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); /* starts as modelview */ - glLoadIdentity(); - glTranslatef(0.f, 0.f, -dist); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(-dim/2., dim/2., -dim/2., dim/2., 0., (double)dist); - - glPushAttrib(GL_LIGHTING_BIT|GL_VIEWPORT_BIT); - glViewport(0, 0, dim, dim); - glEnable(GL_LIGHTING); - - light[Z] = dist; - glLightfv(GL_LIGHT0, GL_POSITION, light); /* light position */ - - /* XXX TODO, range check an report errors */ - glDisable(GL_TEXTURE_2D); - - qobj = gluNewQuadric(); - gluDisk(qobj, 0., dim/2. * sqrt(2.), dim/4, dim/4); - gluDeleteQuadric(qobj); - - glEnable(GL_TEXTURE_2D); - glPopAttrib(); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glReadPixels(0, 0, dim, dim, GL_RGB, GL_FLOAT, texture); - - glBindTexture(GL_TEXTURE_2D, LIGHTMAP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, dim, dim, 0, GL_RGB, - GL_FLOAT, texture); - - free(texture); -} - - -int texdim = 256; - - -/* draw the lightmap texture */ -void redraw_lightmap(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushAttrib(GL_LIGHTING_BIT|GL_TEXTURE_BIT); - - /* assume GL_MODELVIEW */ - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, LIGHTMAP); - glDisable(GL_LIGHTING); - - glColor3f(1.f, 1.f, 1.f); - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(-1, -1); - - glTexCoord2i(1, 0); - glVertex2i(1, -1); - - glTexCoord2i(1, 1); - glVertex2i(1, 1); - - glTexCoord2i(0, 1); - glVertex2i(-1, 1); - glEnd(); - - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glPopAttrib(); - - CHECK_ERROR("OpenGL Error in redraw_map()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -/* draw the lightmap texture */ -void redraw_combomap(void) -{ - GLfloat scale; - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushAttrib(GL_LIGHTING_BIT|GL_TEXTURE_BIT|GL_COLOR_BUFFER_BIT| - GL_DEPTH_BUFFER_BIT); - - /* assume GL_MODELVIEW */ - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - - glEnable(GL_TEXTURE_2D); - glDisable(GL_LIGHTING); - - - glBindTexture(GL_TEXTURE_2D, SURFMAP); - - glColor3f(intensity, intensity, intensity); - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(-1, -1); - - glTexCoord2i(5, 0); - glVertex2i(1, -1); - - glTexCoord2i(5, 5); - glVertex2i(1, 1); - - glTexCoord2i(0, 5); - glVertex2i(-1, 1); - glEnd(); - - glEnable(GL_BLEND); - glDepthFunc(GL_LEQUAL); - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - glBindTexture(GL_TEXTURE_2D, LIGHTMAP); - - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - glTranslatef(.5f, .5f, 0.f); - scale = .25f + (lightpos[Z] + 100.f) * 3.75f/200.f; - glScalef(scale, scale, 0.f); - glTranslatef(-.5f, -.5f, 0.f); - glTranslatef(-lightpos[X]/200.f, -lightpos[Y]/200.f, 0.f); - - glColor3f(1.f, 1.f, 1.f); - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(-1, -1); - - glTexCoord2i(1, 0); - glVertex2i(1, -1); - - glTexCoord2i(1, 1); - glVertex2i(1, 1); - - glTexCoord2i(0, 1); - glVertex2i(-1, 1); - glEnd(); - - /* GL_TEXTURE */ - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glPopAttrib(); - - CHECK_ERROR("OpenGL Error in redraw_combomap()"); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -/* draw the openGL scene with lighting off */ -void render_scene(int tess) -{ - /* material properties for objects in scene */ - - /* update tessellation if it changed */ - if(tess != lasttess) - { - tess_surface(FLOOR, tess); - tess_surface(CEIL, tess); - tess_surface(LEFT, tess); - tess_surface(RIGHT, tess); - tess_surface(BACK, tess); - lasttess = tess; - } - glPushAttrib(GL_LIGHTING_BIT|GL_TEXTURE_BIT); - - /* floor */ - glColor3f(.5f, .35f, .35f); /* reddish */ - glEnable(GL_TEXTURE_2D); - glCallList(FLOOR); - glDisable(GL_TEXTURE_2D); - - /* ceiling */ - glColor3f(.35f, .5f, .35f); /* greenish */ - glCallList(CEIL); - - /* right wall */ - glColor3f(.35f, .35f, .5f); /* bluish */ - glCallList(RIGHT); - - /* left wall */ - glCallList(LEFT); - - /* back wall */ - glCallList(BACK); - - /* draw the sphere */ - - glCallList(SPHERE); - - /* draw the cone */ - glCallList(CONE); - - /* draw the light */ - glPushMatrix(); - glTranslatef(lightpos[X], lightpos[Y], lightpos[Z]); - glCallList(LIGHT); - glPopMatrix(); - - glPopAttrib(); - CHECK_ERROR("OpenGL Error in render_unlit()"); -} - -void -redraw_opengl(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glPushAttrib(GL_LIGHTING_BIT); - - glEnable(GL_LIGHTING); - glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); /* opengl lit */ - - - render_scene(curtess); - - glPopAttrib(); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - -void -redraw_unlit(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glPushAttrib(GL_LIGHTING_BIT); - - glDisable(GL_LIGHTING); - render_scene(1); - - glPopAttrib(); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - -/* draw the scene white, modulated by lightmap */ -/* unlit, uncolored simulated by lighting */ -/* texgen overrides texture coords */ -void render_white(void) -{ - GLfloat scale; - - /* texgen used to override texure coords */ - static GLfloat XZs[] = {1/200.f, 0.f, 0.f, .5f}; - static GLfloat XZt[] = {0.f, 0.f, 1/200.f, .5f}; - - static GLfloat YZs[] = {0.f, 0.f, 1/200.f, .5f}; - static GLfloat YZt[] = {0.f, 1/200.f, 0.f, .5f}; - - static GLfloat XYs[] = {1/200.f, 0.f, 0.f, .5f}; - static GLfloat XYt[] = {0.f, 1/200.f, 0.f, .5f}; - - /* material properties for objects in scene */ - - glPushAttrib(GL_LIGHTING_BIT|GL_TEXTURE_BIT); - - glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - - glEnable(GL_LIGHTING); - - /* simulate unlit, color = white */ - glLightfv(GL_LIGHT0, GL_AMBIENT, diff); - glMaterialfv(GL_FRONT, GL_DIFFUSE, zero); - glColorMaterial(GL_FRONT, GL_AMBIENT); - glEnable(GL_COLOR_MATERIAL); - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, LIGHTMAP); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - - glTexGenfv(GL_S, GL_OBJECT_PLANE, XZs); - glTexGenfv(GL_T, GL_OBJECT_PLANE, XZt); - - glLoadIdentity(); - glTranslatef(.5f, .5f, 0.f); - scale = nearScale - (nearScale - farScale)/200.f * (100.f + lightpos[Y]); - glScalef(scale, scale, 1.f); - glTranslatef(-.5f, -.5f, 0.f); - glTranslatef(-lightpos[X]/200.f, -lightpos[Z]/200.f, 0.f); - /* add intensity (colorchange) */ - - scale = lightpos[Y] + 100; - scale /= 200.f; - scale *= scale; - scale = 1.f/(1.f + scale); - scale = 1.f; - glColor3f(scale, scale, scale); - - /* floor */ - glCallList(FLOOR); - - glLoadIdentity(); - glTranslatef(.5f, .5f, 0.f); - scale = nearScale - (nearScale - farScale)/200.f * (100.f - lightpos[Y]); - glScalef(scale, scale, 1.f); - glTranslatef(-.5f, -.5f, 0.f); - glTranslatef(-lightpos[X]/200.f, -lightpos[Z]/200.f, 0.f); - - scale = 100 - lightpos[Y]; - scale /= 100.f; - scale *= scale; - scale = 1.f/(1.f + scale); - scale = 1.f; - glColor3f(scale, scale, scale); - - /* ceiling */ - glCallList(CEIL); - - glTexGenfv(GL_S, GL_OBJECT_PLANE, YZs); - glTexGenfv(GL_T, GL_OBJECT_PLANE, YZt); - glLoadIdentity(); - glTranslatef(.5f, .5f, 0.f); - scale = nearScale - (nearScale - farScale)/200.f * (100.f - lightpos[X]); - glScalef(scale, scale, 1.f); - glTranslatef(-.5f, -.5f, 0.f); - glTranslatef(-lightpos[Z]/200.f, -lightpos[Y]/200.f, 0.f); - - scale = 100 - lightpos[X]; - scale /= 100.f; - scale *= scale; - scale = 1.f/(1.f + scale); - scale = 1.f; - glColor3f(scale, scale, scale); - - /* right wall */ - glCallList(RIGHT); - - glLoadIdentity(); - glTranslatef(.5f, .5f, 0.f); - scale = nearScale - (nearScale - farScale)/200.f * (100.f + lightpos[X]); - glScalef(scale, scale, 1.f); - glTranslatef(-.5f, -.5f, 0.f); - glTranslatef(-lightpos[Z]/200.f, -lightpos[Y]/200.f, 0.f); - - scale = lightpos[X] + 100; - scale /= 100.f; - scale *= scale; - scale = 1.f/(1.f + scale); - scale = 1.f; - glColor3f(scale, scale, scale); - - /* left wall */ - glCallList(LEFT); - - glTexGenfv(GL_S, GL_OBJECT_PLANE, XYs); - glTexGenfv(GL_T, GL_OBJECT_PLANE, XYt); - glLoadIdentity(); - glTranslatef(.5f, .5f, 0.f); - scale = nearScale - (nearScale - farScale)/200.f * (100.f + lightpos[Z]); - glScalef(scale, scale, 1.f); - glTranslatef(-.5f, -.5f, 0.f); - glTranslatef(-lightpos[X]/200.f, -lightpos[Y]/200.f, 0.f); - - scale = lightpos[Z] + 100; - scale /= 100.f; - scale *= scale; - scale = 1.f/(1.f + scale); - scale = 1.f; - glColor3f(scale, scale, scale); - - /* back wall */ - glCallList(BACK); - - /* done with texture matrix */ - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - /* no contribution to highly tesselated objects */ - glMaterialfv(GL_FRONT, GL_AMBIENT, zero); - glLightfv(GL_LIGHT0, GL_AMBIENT, zero); - - /* draw the sphere */ - - glCallList(SPHERE); - - /* draw the cone */ - glCallList(CONE); - - glPopAttrib(); - CHECK_ERROR("OpenGL Error in render_white()"); -} - -void -redraw_white(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - render_white(); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - -void -redraw_lightmapped(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushAttrib(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_LIGHTING_BIT); - glDisable(GL_LIGHTING); - render_scene(1); - glEnable(GL_LIGHTING); - glEnable(GL_BLEND); - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - glDepthFunc(GL_LEQUAL); - render_white(); - glPopAttrib(); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -void -redraw_maponly(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushAttrib(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_LIGHTING_BIT); - glDisable(GL_LIGHTING); - render_scene(1); - glEnable(GL_LIGHTING); - glEnable(GL_BLEND); - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - glDepthFunc(GL_LEQUAL); - render_white(); - glBlendFunc(GL_ONE, GL_ONE); - glDisable(GL_LIGHTING); /* add in unlit scene again */ - render_scene(1); - - glPopAttrib(); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - -void -redraw_complete(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushAttrib(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_LIGHTING_BIT); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); /* opengl lit */ - glDisable(GL_LIGHTING); - render_scene(1); - glEnable(GL_LIGHTING); - glEnable(GL_BLEND); - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - glDepthFunc(GL_LEQUAL); - render_white(); - glBlendFunc(GL_ONE, GL_ONE); - glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - render_scene(1); - - glPopAttrib(); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); -} - - - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) - { - case 'l': /* show lightmap */ - glutDisplayFunc(redraw_lightmap); - glutPostRedisplay(); - break; - case 'w': /* show white scene modulated by lightmap */ - glutDisplayFunc(redraw_white); - glutPostRedisplay(); - break; - case 'm': /* unlit scene modified by lightmap */ - glutDisplayFunc(redraw_lightmapped); - glutPostRedisplay(); - break; - case 'u': /* draw scene without lighting */ - glutDisplayFunc(redraw_unlit); - glutPostRedisplay(); - break; - case 'o': /* draw scene lit using OpenGL */ - glutDisplayFunc(redraw_opengl); - glutPostRedisplay(); - break; - case 'a': /* show scene lit with OpenGL and lightmaps */ - glutDisplayFunc(redraw_complete); - glutPostRedisplay(); - break; - case 'p': /* show scene lit with pure lightmaps */ - glutDisplayFunc(redraw_maponly); - glutPostRedisplay(); - break; - case 'x': /* surface texture with lightmap combined */ - glutDisplayFunc(redraw_combomap); - glutPostRedisplay(); - break; - case 'T': /* surface texture with lightmap combined */ - curtess++; - glutPostRedisplay(); - break; - case 't': /* surface texture with lightmap combined */ - curtess--; - if(curtess < 1) - curtess = 1; - glutPostRedisplay(); - break; - case '1': /* surface texture with lightmap combined */ - curtess = 1; - glutPostRedisplay(); - break; - case 'y': - farScale -= .0001f; - if(farScale < .0001f) - farScale = .0001f; - printf("farScale = %.4f\n", farScale); - glutPostRedisplay(); - break; - case 'Y': - farScale += .0001f; - printf("farScale = %.4f\n", farScale); - glutPostRedisplay(); - break; - case 'z': - nearScale -= .01f; - if(nearScale < .01f) - nearScale = .01f; - printf("nearScale = %.2f\n", nearScale); - glutPostRedisplay(); - break; - case 'Z': - nearScale += .01f; - printf("nearScale = %.2f\n", nearScale); - glutPostRedisplay(); - break; - case '\033': - exit(0); - break; - case '?': - case 'h': - default: - fprintf(stderr, - "Keyboard Commands\n" - "l - draw lightmap\n" - "w - draw white scene modulated by lightmap\n" - "m - draw unlit scene modified by lightmap\n" - "u - draw unlit scene\n" - "o - draw scene lit by OpenGL\n" - "a - draw scene lit by OpenGL (tess = 1) + lightmaps\n" - "p - draw scene lit only by lightmaps\n" - "x - interactive lightmap on brick wall\n" - "T - increase surface tessellation\n" - "t - decrease surface tessellation\n" - "1 - set tessellation to one\n" - "y - decrease far scale for lightmaps\n" - "Y - increase far scale for lightmaps\n" - "z - decrease near scale for lightmaps\n" - "Z - increase near scale for lightmaps\n"); - break; - } - glutPostRedisplay(); -} - - - - -main(int argc, char *argv[]) -{ - GLfloat *tex; - - GLUquadricObj *qobj; - - glutInit(&argc, argv); - glutInitWindowSize(winWidth, winHeight); - if(argc > 1) - { - char *args = argv[1]; - int done = FALSE; - while(!done) - { - switch(*args) - { - case 's': /* single buffer */ - printf("Single Buffered\n"); - dblbuf = FALSE; - break; - case '-': /* do nothing */ - break; - case 0: - done = TRUE; - break; - } - args++; - } - } - - if(dblbuf) - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE); - else - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH); - - - (void)glutCreateWindow("example program"); - glutDisplayFunc(redraw_opengl); - glutKeyboardFunc(key); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutReshapeFunc(reshape); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-100., 100., -100., 100., 300., 501.); - glMatrixMode(GL_MODELVIEW); - /* look at scene from (0, 0, 400) */ - gluLookAt(0., 0., 400., 0., 0., 0., 0., 1., 0.); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, staticlightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - - /* make a display list containing a sphere */ - glNewList(SPHERE, GL_COMPILE); - { - glPushMatrix(); - glTranslatef(0.f, -80.f, -80.f); - qobj = gluNewQuadric(); - gluQuadricTexture(qobj, GL_TRUE); - glColor3f(.5f, .25f, 0.f); - gluSphere(qobj, 20.f, 20, 20); - gluDeleteQuadric(qobj); - glPopMatrix(); - } - glEndList(); - - /* make a display list containing a sphere */ - glNewList(LIGHT, GL_COMPILE); - { - qobj = gluNewQuadric(); - glColor3f(1.f, 1.f, 1.f); - glPushAttrib(GL_LIGHTING_BIT); - glDisable(GL_LIGHTING); - gluSphere(qobj, 3.f, 20, 20); - glPopAttrib(); - gluDeleteQuadric(qobj); - } - glEndList(); - - /* create a display list containing a cone */ - glNewList(CONE, GL_COMPILE); - { - glPushMatrix(); - glTranslatef(-60.f, -100.f, -5.f); - - qobj = gluNewQuadric(); - gluQuadricTexture(qobj, GL_TRUE); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glColor3f(0.f, .25f, .5f); - - gluCylinder(qobj, 20., 0., 60., 20, 20); - gluDeleteQuadric(qobj); - - qobj = gluNewQuadric(); - gluQuadricOrientation(qobj, GLU_INSIDE); - gluDisk(qobj, 0., 20., 20, 1); - gluDeleteQuadric(qobj); - glPopMatrix(); - } - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(128, 128); - - /* makes texturing faster, and looks better than GL_LINEAR */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, 1, 128, 128, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - { - GLuint *surftex; - int texwid, texht, texcomps; - surftex = read_texture("../data/brick.rgb", &texwid, &texht, &texcomps); - - glBindTexture(GL_TEXTURE_2D, SURFMAP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, texwid, texht, 0, GL_RGBA, - GL_UNSIGNED_BYTE, surftex); - - } - - glBindTexture(GL_TEXTURE_2D, DEFAULT); - - tess_surface(FLOOR, 1); - tess_surface(CEIL, 1); - tess_surface(LEFT, 1); - tess_surface(RIGHT, 1); - tess_surface(BACK, 1); - - /* 1/80 intensity at edges */ - glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 100.f/(texdim * texdim/4)); - /* 1/2 intensity at edges */ - glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 1.f/texdim/2); - glLightfv(GL_LIGHT1, GL_DIFFUSE, one); - - make_lightmap(GL_LIGHT1, 128); - - key('?', 0, 0); - - CHECK_ERROR("end of main"); - - glutMainLoop(); - - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/lightmap.dsp b/lib/glut-3.7.6/progs/advanced97/lightmap.dsp deleted file mode 100644 index 350cbd1406fb9e2e57ff601184184087ef8c461d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/lightmap.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lightmap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=lightmap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lightmap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lightmap.mak" CFG="lightmap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lightmap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "lightmap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lightmap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "lightmap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "lightmap - Win32 Release" -# Name "lightmap - Win32 Debug" -# Begin Source File - -SOURCE=.\lightmap.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/lightp.c b/lib/glut-3.7.6/progs/advanced97/lightp.c deleted file mode 100644 index 4f355856948d086b21f6844e4f5b1f9d46020413..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/lightp.c +++ /dev/null @@ -1,315 +0,0 @@ -#include -#include -#include -#include "texture.h" -#include - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define expf(x) ((float)exp((x))) -#define fabsf(x) ((float)fabs((x))) -#endif - -static int pstyle = 3; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void pfunc(void) { pstyle = (pstyle+1) % 4; } - -void help(void) { - printf("Usage: lightp [image]\n"); - printf("'h' - help\n"); - printf("'p' - toggle point mode\n"); - printf("left mouse - pan\n"); - printf("right mouse - rotate\n"); -} - -void init(char *filename) { - GLfloat fog_color[4], fog_density = 0.05, density, far_cull; - unsigned *image; - int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components != 1 && components != 2) { - printf("must be a l or la image\n"); - exit(EXIT_FAILURE); - } - if (components == 1) { - /* hack for RE */ - int i; - GLubyte *p = (GLubyte *)image; - for(i = 0; i < width*height; i++) { - p[i*4+3] = p[i*4+0]; - } - components = 2; - } - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 512; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if (i & 32) - img[4*(i+j*width)+0] = 0xff; - else - img[4*(i+j*width)+1] = 0xff; - if (j&32) - img[4*(i+j*width)+2] = 0xff; - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - /*glEnable(GL_TEXTURE_2D);*/ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,far_cull = 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - - density = 1.- expf(-5.5 * fog_density * fog_density * - far_cull * far_cull); - -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#define MIN(a,b) ((a) < (b) ? (a) : (b)) - density = MAX(MIN(density, 1.), 0.); - - fog_color[0] = .23*.19 + density *.57*.19; - fog_color[1] = .35*.19 + density *.45*.19; - fog_color[2] = .78*.19 + density *.22*.19; - - glClearColor(fog_color[0], fog_color[1], fog_color[2], 1.f); - - glFogi(GL_FOG_MODE, GL_EXP2); - glFogf(GL_FOG_DENSITY, fog_density); - glFogfv(GL_FOG_COLOR, fog_color); - if (fog_density > 0) - glEnable(GL_FOG); - glLineWidth(2.0f); - glEnable(GL_LINE_SMOOTH); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glPointSize(10.f); - glEnable(GL_POINT_SMOOTH); - glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); -} - -void draw_base(void) { - glColor4f(.1, .3, .1, 1.0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1.f, 0.f, -1.f); - glTexCoord2f(0, 1); glVertex3f(-1.f, 0.f, 1.f); - glTexCoord2f(1, 1); glVertex3f( 1.f, 0.f, 1.f); - glTexCoord2f(1, 0); glVertex3f( 1.f, 0.f, -1.f); - glEnd(); -} - -void draw_runway(void) { - glColor4f(.1, .1, .1, 1.0); - glPushMatrix(); - glScalef(.1f, 1.f, 1.f); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1.f, 0.f, -1.f); - glTexCoord2f(0, 1); glVertex3f(-1.f, 0.f, 1.f); - glTexCoord2f(1, 1); glVertex3f( 1.f, 0.f, 1.f); - glTexCoord2f(1, 0); glVertex3f( 1.f, 0.f, -1.f); - glEnd(); - glPopMatrix(); -} - -/* v0 = v1*mat */ -void xform(float *v0, float *mat, float *v1) { - v0[0] = v1[0]*mat[0] + v1[1]*mat[4] + v1[2]*mat[8] + v1[3]*mat[12]; - v0[1] = v1[1]*mat[1] + v1[1]*mat[5] + v1[2]*mat[9] + v1[3]*mat[13]; - v0[2] = v1[2]*mat[2] + v1[1]*mat[6] + v1[2]*mat[10] + v1[3]*mat[14]; - v0[3] = v1[3]*mat[3] + v1[1]*mat[7] + v1[2]*mat[11] + v1[3]*mat[15]; -} - -/* m0 = m1*m2 */ -void xformm(float *m0, float *m1, float *m2) { - int i, j; - for(i = 0; i < 4; i++) { - for(j = 0; j < 4; j++) { - m0[4*i+j] = m1[4*i+0]*m2[4*0+j] + m1[4*i+1]*m2[4*1+j] + m1[4*i+2]*m2[4*2+j] + m1[4*i+3]*m2[4*3+j]; - } - } -} - -void draw_quad(float x, float y, float z) { - glPushMatrix(); - glTranslatef(x, y, z); - glRotatef(90.f, 1.f, 0.f, 0.f); - glScalef(.03f, .03f, .03f); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1.f, 0.f, -1.f); - glTexCoord2f(0, 1); glVertex3f(-1.f, 0.f, 1.f); - glTexCoord2f(1, 1); glVertex3f( 1.f, 0.f, 1.f); - glTexCoord2f(1, 0); glVertex3f( 1.f, 0.f, -1.f); - glEnd(); - glPopMatrix(); -} - -void draw_lights(void) { - int i; - GLfloat mat[16], matv[16], matp[16]; - float v0[4], v1[4], v[4]; - - glEnable(GL_BLEND); - glColor4f(1.f, 1.f, 1.f, 1.0); - glPushMatrix(); - if (pstyle != 3) { - glScalef(.1f, 1.f, 1.f); - if (pstyle == 0) glDisable(GL_POINT_SMOOTH); - else glEnable(GL_POINT_SMOOTH); - if (pstyle == 1) glPointSize(13.f); - glGetFloatv(GL_MODELVIEW_MATRIX, matv); - glGetFloatv(GL_PROJECTION_MATRIX, matp); - xformm(mat, matv, matp); - v[0] = -1.f; - v[1] = 0.0f; - v[3] = 1.0f; - for(i = 0; i <= 20; i++) { - if (pstyle == 2) { - float s; - v[2] = -1.f+2.f/20*i; - v[0] -= 1.; - xform(v0, mat, v); - v[0] += 2.; - xform(v1, mat, v); - v[0] -= 1.; - s = fabsf(v0[0]/v0[3] - v1[0]/v1[3]); - glPointSize(10.f*s); - } - glBegin(GL_POINTS); - glVertex3f(-1.f, 0.f, -1.f+2.f/20*i); - glVertex3f( 1.f, 0.f, -1.f+2.f/20*i); - glEnd(); - } - } else { - glEnable(GL_TEXTURE_2D); - glScalef(1.f, 10.f, 1.f); - for(i = 0; i <= 20; i++) { - float v = -1.f+2.f/20*i; - draw_quad(-.1f, 0.f, v); - draw_quad( .1f, 0.f, v); - } - glDisable(GL_TEXTURE_2D); - } - glPopMatrix(); - glDisable(GL_BLEND); -} - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glScalef(10.f,1.f,10.f); - glTranslatef(0.f,-.4f,0.f); - draw_base(); - draw_runway(); - draw_lights(); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'p': pfunc(); break; - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - (void)glutCreateWindow(argv[0]); - init(argc == 1 ? "../data/light.bw" : argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/lightp.dsp b/lib/glut-3.7.6/progs/advanced97/lightp.dsp deleted file mode 100644 index 2c14fee20a483c2974d0564ed136959053d8164f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/lightp.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lightp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=lightp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lightp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lightp.mak" CFG="lightp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lightp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "lightp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lightp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "lightp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "lightp - Win32 Release" -# Name "lightp - Win32 Debug" -# Begin Source File - -SOURCE=.\lightp.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/line.c b/lib/glut-3.7.6/progs/advanced97/line.c deleted file mode 100644 index c757f64abbcdfe6137985abc38597e0595b3f91a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/line.c +++ /dev/null @@ -1,224 +0,0 @@ -#include -#include -#include - -#define CHECK_ERROR(str) \ -{ \ - GLenum error; \ - if(error = glGetError()) \ - printf("GL Error: %s (%s)\n", gluErrorString(error), str); \ -} - -int winWidth = 512; -int winHeight = 512; -GLboolean smooth = GL_FALSE; -GLboolean dblbuf = GL_TRUE; -GLfloat objangle[2] = {0.f, 0.f}; -GLfloat scale = 1.f; -int active; - -enum {X, Y, Z}; -enum {OBJ_ANGLE, OBJ_SCALE}; -enum {NOLIST, PLANE}; /* display lists */ - -/* load data structure from file */ -enum {VERTS, END}; - - -void -reshape(int wid, int ht) -{ - winWidth = wid; - winHeight = ht; - glViewport(0, 0, wid, ht); -} - -void -motion(int x, int y) -{ - - switch(active) - { - case OBJ_ANGLE: - objangle[X] = (x - winWidth/2) * 360./winWidth; - objangle[Y] = (y - winHeight/2) * 360./winHeight; - glutPostRedisplay(); - break; - case OBJ_SCALE: - scale = x * 5./winWidth; - objangle[Y] = (y - winHeight/2) * 360./winHeight; - glutPostRedisplay(); - break; - } -} - -void -mouse(int button, int state, int x, int y) -{ - if(state == GLUT_DOWN) - switch(button) - { - case GLUT_LEFT_BUTTON: /* rotate the object */ - active = OBJ_ANGLE; - motion(x, y); - break; - case GLUT_RIGHT_BUTTON: /* scale the object */ - active = OBJ_SCALE; - motion(x, y); - break; - } -} - - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) - { - case 's': /* toggle line smoothing */ - if(smooth) - { - glDisable(GL_LINE_SMOOTH); - glDisable(GL_BLEND); - smooth = GL_FALSE; - printf("Turn off OpenGL line smoothing\n"); - } - else - { - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - printf("Turn on OpenGL line smoothing\n"); - smooth = GL_TRUE; - } - glutPostRedisplay(); - break; - case '\033': - exit(0); - break; - case '?': - case 'h': - case 'H': - default: - fprintf(stderr, "Keyboard commands:\n\n" - "s - toggle smooth line mode\n"); - break; - } - -} - - -void -loader(char *fname) -{ - FILE *fp; - GLfloat x, y, z; - int state = END; - int read; - - fp = fopen(fname, "r"); - if (!fp) { - printf("can't open file %s\n", fname); - exit(1); - } - - glNewList(PLANE, GL_COMPILE); - while(!feof(fp)) - { - switch(state) - { - case END: - read = fscanf(fp, " v"); - if(read < 0) /* hit eof */ - break; - state = VERTS; - glBegin(GL_LINE_STRIP); - break; - case VERTS: - read = fscanf(fp, " %f %f %f", &x, &y, &z); - if(read == 3) - glVertex3f(x, y, z); - else - { - fscanf(fp, " e"); - glEnd(); - state = END; - } - break; - } - } - glEndList(); - fclose(fp); -} - -void redraw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - glScalef(scale, scale, scale); - - glCallList(PLANE); - - glPopMatrix(); - - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); - - CHECK_ERROR("OpenGL Error in redraw()"); -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(winWidth, winHeight); - if(argc > 1) - { - char *args = argv[1]; - GLboolean done = GL_FALSE; - while(!done) - { - switch(*args) - { - case 's': /* single buffer */ - printf("Single Buffered\n"); - dblbuf = GL_FALSE; - break; - case '-': /* do nothing */ - break; - case 0: - done = GL_TRUE; - break; - } - args++; - } - } - if(dblbuf) - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - else - glutInitDisplayMode(GLUT_RGBA); - - (void)glutCreateWindow("load and draw a wireframe image"); - glutDisplayFunc(redraw); - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutMotionFunc(motion); - glutMouseFunc(mouse); - - glMatrixMode(GL_PROJECTION); - glOrtho(-1., 1., -1., 1., -5., 5.); - glMatrixMode(GL_MODELVIEW); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); - - loader("../data/f15.data"); - - CHECK_ERROR("OpenGL Error in main()"); - - key('?', 0, 0); /* print usage message */ - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced97/line.dsp b/lib/glut-3.7.6/progs/advanced97/line.dsp deleted file mode 100644 index e5375ba63a4b67edde813eba64ea9c25916b4eb7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/line.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="line" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=line - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "line.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "line.mak" CFG="line - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "line - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "line - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "line - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "line - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "line - Win32 Release" -# Name "line - Win32 Debug" -# Begin Source File - -SOURCE=.\line.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/multiaccumaa.c b/lib/glut-3.7.6/progs/advanced97/multiaccumaa.c deleted file mode 100644 index 092c4c9aa4f4136a0a21abf73311448f2199e612..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multiaccumaa.c +++ /dev/null @@ -1,436 +0,0 @@ -#include -#include - -#ifdef _WIN32 -#include -#define sleep(x) Sleep(1000*x) -#else -#include -#endif - -#include - -const GLdouble FRUSTDIM = 100.f; -int win_width = 256; -int win_height = 256; -int show_results = GL_TRUE; -int object_offset, font_offset; - -enum {SPHERE, CONE}; - -/*{0x00, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x03, 0x03},*/ -GLubyte rasters[][13] = { -{0x00, 0x00, 0x3c, 0x66, 0xc3, 0xe3, 0xf3, 0xdb, 0xcf, 0xc7, 0xc3, 0x66, 0x3c}, -{0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x38, 0x18}, -{0x00, 0x00, 0xff, 0xc0, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0xe7, 0x7e}, -{0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0x7e, 0x07, 0x03, 0x03, 0xe7, 0x7e}, -{0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xff, 0xcc, 0x6c, 0x3c, 0x1c, 0x0c}, -{0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff}, -{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc7, 0xfe, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e}, -{0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03, 0xff}, -{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xe7, 0x7e, 0xe7, 0xc3, 0xc3, 0xe7, 0x7e}, -{0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x03, 0x7f, 0xe7, 0xc3, 0xc3, 0xe7, 0x7e}, -}; - -GLfloat mults[] = {1., 1./2., 2./3., 3./4., 4./5., 5./6., 6./7., 7./8., 8./9., 9./10.}; - - -/* -** Create a single component texture map -*/ - -void make_font(void) -{ - GLuint i; - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - font_offset = glGenLists (10); - for (i = 0; i < 10; i++) { - glNewList(i+font_offset, GL_COMPILE); - glBitmap(8, 13, 0.0, 2.0, 10.0, 0.0, rasters[i]); - glEndList(); - } -} - -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -void print_frame_number(GLuint frame) -{ - GLuint f1, f2; - - glPushAttrib( GL_ENABLE_BIT | GL_CURRENT_BIT); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho (0.0, win_width, 0.0, win_height, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - - glColor3f(1.0, 0.0, 0.0); - - f1 = frame/10; - if (f1 > 0) { - glRasterPos2i(50, win_height - 50); - glCallList(font_offset + f1); - } - else - glRasterPos2i(60, win_height - 50); - f2 = frame - f1*10; - glCallList(font_offset + f2); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glPopAttrib(); -} - -void -render(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); - - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - - glPushMatrix(); - glTranslatef(-80.f, -60.f, -420.f); - glCallList(object_offset + SPHERE); - glPopMatrix(); - - - glPushMatrix(); - glTranslatef(-20.f, -80.f, -500.f); - glCallList(object_offset + CONE); - glPopMatrix(); - - if(glGetError()) /* to catch programming errors; should never happen */ - printf("Oops! I screwed up my OpenGL calls somewhere\n"); - - glFlush(); /* high end machines may need this */ -} - -/* compute scale factor for window->object space transform */ -/* could use gluUnProject(), but probably too much trouble */ -void -computescale(GLfloat *sx, GLfloat *sy) -{ - enum {XORG, YORG, WID, HT}; - GLint viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - - *sx = 2 * FRUSTDIM/viewport[WID]; - *sy = 2 * FRUSTDIM/viewport[WID]; -} - -enum {NONE, AA, AA_NEW}; - -int rendermode = NONE; - -void -menu(int selection) -{ - rendermode = selection; - glutPostRedisplay(); -} - - - -/* Called when window needs to be redrawn */ -void redraw(void) -{ - GLfloat invx, invy; - GLfloat scale, dx, dy; - int i, j; - int min, max; - int count, nframes; - - switch(rendermode) { - case NONE: - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, 320., 640.); - glMatrixMode(GL_MODELVIEW); - render(); - glutSwapBuffers(); - break; - case AA: - min = -1; - max = -min + 1; - count = -2 * min + 1; - count *= count; - /* uniform scaling, less than one pixel wide */ - scale = -.9f/min; - - computescale(&invx, &invy); - - glClear(GL_ACCUM_BUFFER_BIT); - - for(j = min, nframes = 1; j < max; j++) { - for(i = min; i < max; i++, nframes++) { - dx = invx * scale * i; - dy = invy * scale * j; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM + dx, - FRUSTDIM + dy, - -FRUSTDIM + dx, - FRUSTDIM + dy, - 320., 640.); - glMatrixMode(GL_MODELVIEW); - render(); - glAccum(GL_ACCUM, 1.f/count); - - if (show_results) { - if (nframes == 1) { - glutSwapBuffers(); - glDrawBuffer(GL_FRONT); - } else if (nframes == 2) { - glDrawBuffer(GL_FRONT); - glAccum(GL_RETURN, 3.99); - } else { - glDrawBuffer(GL_FRONT); - glAccum(GL_RETURN, (GLfloat)count/(GLfloat)nframes); - } - print_frame_number(nframes); - glFlush(); - printf("frame number %d\n",nframes); - glDrawBuffer(GL_BACK); - sleep(3); - } - } - } - if (!show_results) { - glAccum(GL_RETURN, 1.f); - glutSwapBuffers(); - } - break; - case AA_NEW: - min = -2; - max = -min + 1; - count = -2 * min + 1; - count *= count; - /* uniform scaling, less than one pixel wide */ - scale = -.9f/min; - - computescale(&invx, &invy); - - glClear(GL_ACCUM_BUFFER_BIT); - - for(j = min, nframes = 1; j < max; j++) { - for(i = min; i < max; i++, nframes++) { - dx = invx * scale * i; - dy = invy * scale * j; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-FRUSTDIM + dx, - FRUSTDIM + dy, - -FRUSTDIM + dx, - FRUSTDIM + dy, - 320., 640.); - glMatrixMode(GL_MODELVIEW); - render(); - if (nframes == 1) - glAccum(GL_ACCUM, 1.); - else - glAccum(GL_ACCUM, .5); - - if (show_results) { - glDrawBuffer(GL_FRONT); - glAccum(GL_RETURN, 1.); - print_frame_number(nframes); - glFlush(); - printf("frame number %d\n",nframes); - glDrawBuffer(GL_BACK); - sleep(3); - } - - if (nframes < count) { - glAccum(GL_RETURN, 1.); - glAccum(GL_LOAD, .5); - } - - } - } - if (!show_results) { - glAccum(GL_RETURN, 1.f); - glutSwapBuffers(); - } - break; - } - -} - -void reshape(int w, int h) -{ - if (w < h) { - win_height = win_width = w; - } else { - win_height = win_width = h; - } - glViewport(0, 0, win_width, win_height); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if(key == '\033') - exit(0); -} - - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(win_width, win_height); - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_ACCUM|GLUT_DOUBLE); - (void)glutCreateWindow("Accum antialias"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - - glutCreateMenu(menu); - glutAddMenuEntry("Aliased View", NONE); - glutAddMenuEntry("AntiAliased View", AA); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - make_font(); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, 320., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - object_offset = glGenLists(2); - glNewList(object_offset + SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(object_offset + CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - glReadBuffer(GL_BACK); /* input to accum buffer */ - - glutMainLoop(); - - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/multiaccumaa.dsp b/lib/glut-3.7.6/progs/advanced97/multiaccumaa.dsp deleted file mode 100644 index 062a308191f545183786b2fb3fccc3488ebce8b1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multiaccumaa.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multiaccumaa" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multiaccumaa - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multiaccumaa.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multiaccumaa.mak" CFG="multiaccumaa - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multiaccumaa - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multiaccumaa - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multiaccumaa - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multiaccumaa - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multiaccumaa - Win32 Release" -# Name "multiaccumaa - Win32 Debug" -# Begin Source File - -SOURCE=.\multiaccumaa.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/multialphablend.c b/lib/glut-3.7.6/progs/advanced97/multialphablend.c deleted file mode 100644 index a9548540f42f062b897c0ea827c60df6c0f6ad29..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multialphablend.c +++ /dev/null @@ -1,202 +0,0 @@ -#include -#include -#include -#include -#include - -GLUquadricObj *cone, *base, *qsphere; - -#ifndef __sgi -#define trunc(x) ((double)((int)(x))) -#endif - -void init(void) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - cone = gluNewQuadric(); - base = gluNewQuadric(); - qsphere = gluNewQuadric(); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 2.577, 0, 0, -5, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, -1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, 1, -1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - glEnd(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, .5f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - - /* base is coplanar with floor, so turn off depth testing */ - glDisable(GL_DEPTH_TEST); - gluDisk(base, 0., .3, 20, 1); - glEnable(GL_DEPTH_TEST); - - gluCylinder(cone, .3, 0, 1.25, 20, 1); - - glPopMatrix(); -} - -void draw_sphere(GLdouble angle) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, .5f}; - - glPushMatrix(); - glTranslatef(0, -.3, 0); - glRotatef(angle, 0, 1, 0); - glTranslatef(.6, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qsphere, .3, 20, 20); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw(void) -{ - GLenum err; - GLdouble secs, degrees; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* one revolution every 10 seconds... */ - secs = get_secs(); - secs = secs - 10.*trunc(secs / 10.); - degrees = (secs/10.) * (360.); - - draw_room(); - - glEnable(GL_BLEND); - glEnable(GL_CULL_FACE); - if (degrees < 180) { - /* sphere behind cone */ - glCullFace(GL_FRONT); - draw_sphere(degrees); - draw_cone(); - glCullFace(GL_BACK); - draw_sphere(degrees); - draw_cone(); - } else { - /* cone behind sphere */ - glCullFace(GL_FRONT); - draw_cone(); - draw_sphere(degrees); - glCullFace(GL_BACK); - draw_cone(); - draw_sphere(degrees); - } - glDisable(GL_CULL_FACE); - glDisable(GL_BLEND); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - static int idle = 1; - if (key == 27) exit(0); - idle = (idle == 0); - if (idle) { - glutIdleFunc(draw); - } else { - glutIdleFunc(0); - } - -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(256, 256); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/multialphablend.dsp b/lib/glut-3.7.6/progs/advanced97/multialphablend.dsp deleted file mode 100644 index 101aa76f2a09358cf6b484586160d2e84348da09..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multialphablend.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multialphablend" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multialphablend - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multialphablend.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multialphablend.mak" CFG="multialphablend - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multialphablend - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multialphablend - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multialphablend - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multialphablend - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multialphablend - Win32 Release" -# Name "multialphablend - Win32 Debug" -# Begin Source File - -SOURCE=.\multialphablend.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/multialphablendnosort.c b/lib/glut-3.7.6/progs/advanced97/multialphablendnosort.c deleted file mode 100644 index d97a5464f65bbd46a6ee26b22d3ec5943fe913e2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multialphablendnosort.c +++ /dev/null @@ -1,190 +0,0 @@ -#include -#include -#include -#include -#include - -GLUquadricObj *cone, *base, *qsphere; - -#ifndef __sgi -#define trunc(x) ((double)((int)(x))) -#endif - -void init(void) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - cone = gluNewQuadric(); - base = gluNewQuadric(); - qsphere = gluNewQuadric(); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 2.577, 0, 0, -5, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, -1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, 1, -1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - glEnd(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, .5f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - - /* base is coplanar with floor, so turn off depth testing */ - glDisable(GL_DEPTH_TEST); - gluDisk(base, 0., .3, 20, 1); - glEnable(GL_DEPTH_TEST); - - gluCylinder(cone, .3, 0, 1.25, 20, 1); - - glPopMatrix(); -} - -void draw_sphere(GLdouble angle) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, .5f}; - - glPushMatrix(); - glTranslatef(0, -.3, 0); - glRotatef(angle, 0, 1, 0); - glTranslatef(.6, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qsphere, .3, 20, 20); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw(void) -{ - GLenum err; - GLdouble secs, degrees; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* one revolution every 10 seconds... */ - secs = get_secs(); - secs = secs - 10.*trunc(secs / 10.); - degrees = (secs/10.) * (360.); - - draw_room(); - - glEnable(GL_BLEND); - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - draw_cone(); - draw_sphere(degrees); - glCullFace(GL_BACK); - draw_cone(); - draw_sphere(degrees); - glDisable(GL_CULL_FACE); - glDisable(GL_BLEND); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - static int idle = 1; - if (key == 27) exit(0); - idle = (idle == 0); - if (idle) { - glutIdleFunc(draw); - } else { - glutIdleFunc(0); - } -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(256, 256); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/multialphablendnosort.dsp b/lib/glut-3.7.6/progs/advanced97/multialphablendnosort.dsp deleted file mode 100644 index 4d0980b9f1aab319fce8aed8d3944a2fb47b4c48..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multialphablendnosort.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multialphablendnosort" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multialphablendnosort - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multialphablendnosort.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multialphablendnosort.mak" CFG="multialphablendnosort - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multialphablendnosort - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multialphablendnosort - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multialphablendnosort - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multialphablendnosort - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multialphablendnosort - Win32 Release" -# Name "multialphablendnosort - Win32 Debug" -# Begin Source File - -SOURCE=.\multialphablendnosort.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/multimirror.c b/lib/glut-3.7.6/progs/advanced97/multimirror.c deleted file mode 100644 index c8401613ec03ed01cfa071b7646db99970c2a035..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multimirror.c +++ /dev/null @@ -1,367 +0,0 @@ -#include -#include -#include -#include -#include - -GLUquadricObj *cone, *base, *qsphere; - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -#define trunc(x) ((double)((int)(x))) -#endif - -int draw_passes = 8; - -int headsUp = 0; - -typedef struct { - GLfloat verts[4][3]; - GLfloat scale[3]; - GLfloat trans[3]; -} Mirror; - -Mirror mirrors[] = { - /* mirror on the left wall */ - {{{-1., -.75, -.75}, {-1., .75, -.75}, {-1., .75, .75}, {-1, -.75, .75}}, - {-1, 1, 1}, {2, 0, 0}}, - - /* mirror on right wall */ - {{{1., -.75, .75}, {1., .75, .75}, {1., .75, -.75}, {1., -.75, -.75}}, - {-1, 1, 1}, {-2, 0, 0}}, -}; -int nMirrors = 2; - -void init(void) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - glEnable(GL_CULL_FACE); - - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - cone = gluNewQuadric(); - qsphere = gluNewQuadric(); -} - -void make_viewpoint(void) -{ - if (headsUp) { - float width = (1 + 2*(draw_passes/nMirrors)) * 1.25; - float height = (width / tan((30./360.) * (2.*M_PI))) + 1; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, height - 3, height + 3); - gluLookAt(0, height, 0, - 0, 0, 0, - 0, 0, 1); - } else { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 4 + 2*(draw_passes / nMirrors)); - gluLookAt(-2, 0, .75, - 0, 0, 0, - 0, 1, 0); - } - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - make_viewpoint(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, 1, -1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, -1, 1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, -1, 1); - glVertex3f(1, 1, 1); - glVertex3f(1, 1, -1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - /* back wall */ - glNormal3f(0, 0, -1); - glVertex3f(-1, 1, 1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(-1, -1, 1); - glEnd(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - - gluCylinder(cone, .3, 0, 1.25, 20, 1); - - glPopMatrix(); -} - -void draw_sphere(GLdouble secs) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - GLfloat angle; - - /* one revolution every 10 seconds... */ - secs = secs - 10.*trunc(secs / 10.); - angle = (secs/10.) * (360.); - - glPushMatrix(); - glTranslatef(0, -.3, 0); - glRotatef(angle, 0, 1, 0); - glTranslatef(.6, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qsphere, .3, 20, 20); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw_mirror(Mirror *m) -{ - glBegin(GL_QUADS); - glVertex3fv(m->verts[0]); - glVertex3fv(m->verts[1]); - glVertex3fv(m->verts[2]); - glVertex3fv(m->verts[3]); - glEnd(); -} - -/* A note on matrix management: it would be easier to use push and - * pop to save and restore the matrices, but the projection matrix stack - * is very shallow, so we just undo what we did. In the extreme this - * could lead to mathematic error. */ - -GLenum reflect_through_mirror(Mirror *m, GLenum cullFace) -{ - GLenum newCullFace = ((cullFace == GL_FRONT) ? GL_BACK : GL_FRONT); - - glMatrixMode(GL_PROJECTION); - glScalef(m->scale[0], m->scale[1], m->scale[2]); - glTranslatef(m->trans[0], m->trans[1], m->trans[2]); - glMatrixMode(GL_MODELVIEW); - - /* must flip the cull face since reflection reverses the orientation - * of the polygons */ - glCullFace(newCullFace); - - return newCullFace; -} - -void undo_reflect_through_mirror(Mirror *m, GLenum cullFace) -{ - glMatrixMode(GL_PROJECTION); - glTranslatef(-m->trans[0], -m->trans[1], -m->trans[2]); - glScalef(1./m->scale[0], 1./m->scale[1], 1./m->scale[2]); - glMatrixMode(GL_MODELVIEW); - - glCullFace(cullFace); -} - -void draw_scene(GLdouble secs, int passes, GLenum cullFace, - GLuint stencilVal, GLuint mirror) -{ - GLenum newCullFace; - int passesPerMirror, passesPerMirrorRem; - unsigned int curMirror, drawMirrors; - int i; - - /* one pass to draw the real scene */ - passes--; - - /* only draw in my designated locations */ - glStencilFunc(GL_EQUAL, stencilVal, 0xffffffff); - - /* draw things which may obscure the mirrors first */ - draw_sphere(secs); - draw_cone(); - - /* now draw the appropriate number of mirror reflections. for - * best results, we perform a depth-first traversal by allocating - * a number of passes for each of the mirrors. */ - if (mirror != 0xffffffff) { - passesPerMirror = passes / (nMirrors - 1); - passesPerMirrorRem = passes % (nMirrors - 1); - if (passes > nMirrors - 1) drawMirrors = nMirrors - 1; - else drawMirrors = passes; - } else { - /* mirror == -1 means that this is the initial scene (there was no - * mirror) */ - passesPerMirror = passes / nMirrors; - passesPerMirrorRem = passes % nMirrors; - if (passes > nMirrors) drawMirrors = nMirrors; - else drawMirrors = passes; - } - for (i = 0; drawMirrors > 0; i++) { - curMirror = i % nMirrors; - if (curMirror == mirror) continue; - drawMirrors--; - - /* draw mirror into stencil buffer but not color or depth buffers */ - glColorMask(0, 0, 0, 0); - glDepthMask(0); - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); - draw_mirror(&mirrors[curMirror]); - glColorMask(1, 1, 1, 1); - glDepthMask(1); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - /* draw reflected scene */ - newCullFace = reflect_through_mirror(&mirrors[curMirror], cullFace); - if (passesPerMirrorRem) { - draw_scene(secs, passesPerMirror + 1, newCullFace, stencilVal + 1, - curMirror); - passesPerMirrorRem--; - } else { - draw_scene(secs, passesPerMirror, newCullFace, stencilVal + 1, - curMirror); - } - undo_reflect_through_mirror(&mirrors[curMirror], cullFace); - - /* back to our stencil value */ - glStencilFunc(GL_EQUAL, stencilVal, 0xffffffff); - } - - draw_room(); -} - -void draw(void) -{ - GLenum err; - GLfloat secs = get_secs(); - - glDisable(GL_STENCIL_TEST); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - if (!headsUp) glEnable(GL_STENCIL_TEST); - draw_scene(secs, draw_passes, GL_BACK, 0, (unsigned)-1); - glDisable(GL_STENCIL_TEST); - - if (headsUp) { - /* draw a red floor on the original scene */ - glDisable(GL_LIGHTING); - glBegin(GL_QUADS); - glColor3f(1, 0, 0); - glVertex3f(-1, -.95, 1); - glVertex3f(1, -.95, 1); - glVertex3f(1, -.95, -1); - glVertex3f(-1, -.95, -1); - glEnd(); - glEnable(GL_LIGHTING); - } - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) { - case '.': case '>': case '+': case '=': - draw_passes++; - printf("Passes = %d\n", draw_passes); - make_viewpoint(); - break; - case ',': case '<': case '-': case '_': - draw_passes--; - if (draw_passes < 1) draw_passes = 1; - printf("Passes = %d\n", draw_passes); - make_viewpoint(); - break; - case 'h': case 'H': - /* heads up mode */ - headsUp = (headsUp == 0); - make_viewpoint(); - break; - case 27: - exit(0); - } -} - -#define MIN_COLOR_BITS 4 -#define MIN_DEPTH_BITS 8 - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(256, 256); - glutInitWindowPosition(0, 0); - if (argc > 1) { - glutInitDisplayString("samples stencil>=3 rgb depth"); - } else { - glutInitDisplayString("samples stencil>=3 rgb double depth"); - } - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/multimirror.dsp b/lib/glut-3.7.6/progs/advanced97/multimirror.dsp deleted file mode 100644 index b1b1d23e89bb095fdfa1f6843bee5d23ccfecfcb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multimirror.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multimirror" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multimirror - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multimirror.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multimirror.mak" CFG="multimirror - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multimirror - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multimirror - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multimirror - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multimirror - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multimirror - Win32 Release" -# Name "multimirror - Win32 Debug" -# Begin Source File - -SOURCE=.\multimirror.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/multiscreendoor.c b/lib/glut-3.7.6/progs/advanced97/multiscreendoor.c deleted file mode 100644 index 3340042d26989b21bef1122f07eaeda579bb99ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multiscreendoor.c +++ /dev/null @@ -1,195 +0,0 @@ -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifdef _WIN32 -#define trunc(x) ((double)((int)(x))) -#define random() ((long)rand() + (rand() << 15) + (rand() << 30)) -#endif - -GLUquadricObj *cone, *base, *qsphere; - -GLuint conePattern[32], spherePattern[32]; - -void create_stipple_pattern(GLuint *pat, GLfloat opacity) -{ - int x, y; - long threshold = (float)0x7fffffff * (1. - opacity); - - for (y = 0; y < 32; y++) { - pat[y] = 0; - for (x = 0; x < 32; x++) { - if (random() > threshold) pat[y] |= (1 << x); - } - } -} - -void init(void) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - cone = gluNewQuadric(); - base = gluNewQuadric(); - qsphere = gluNewQuadric(); - gluQuadricOrientation(base, GLU_INSIDE); - - create_stipple_pattern(spherePattern, .5); - create_stipple_pattern(conePattern, .5); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 2.577, 0, 0, -5, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, -1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, 1, -1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - glEnd(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluCylinder(cone, .3, 0, 1.25, 20, 1); - gluDisk(base, 0., .3, 20, 1); - - glPopMatrix(); -} - -void draw_sphere(GLdouble angle) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -.3, 0); - glRotatef(angle, 0, 1, 0); - glTranslatef(0, 0, .6); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qsphere, .3, 20, 20); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw(void) -{ - GLenum err; - GLdouble secs; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - draw_room(); - - /* draw the transparent objects... */ - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple((GLubyte *)conePattern); - draw_cone(); - - glPolygonStipple((GLubyte *)spherePattern); - secs = get_secs(); - draw_sphere(secs * 360. / 10.); - glDisable(GL_POLYGON_STIPPLE); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if (key == 27) exit(0); -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(256, 256); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/multiscreendoor.dsp b/lib/glut-3.7.6/progs/advanced97/multiscreendoor.dsp deleted file mode 100644 index 729dd123e3cc125b484994ea0565235c6f1d096a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multiscreendoor.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multiscreendoor" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multiscreendoor - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multiscreendoor.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multiscreendoor.mak" CFG="multiscreendoor - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multiscreendoor - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multiscreendoor - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multiscreendoor - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multiscreendoor - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multiscreendoor - Win32 Release" -# Name "multiscreendoor - Win32 Debug" -# Begin Source File - -SOURCE=.\multiscreendoor.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/multispheremap.c b/lib/glut-3.7.6/progs/advanced97/multispheremap.c deleted file mode 100644 index b2ab0cc6476ca14b3654577a2be3478e0457ed19..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multispheremap.c +++ /dev/null @@ -1,737 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -#define trunc(x) ((double)((int)(x))) -#endif - -GLUquadricObj *cone, *base, *qsphere; - -static char defaultFile[] = "../data/mandrill.rgb"; -GLuint floorList; - -GLboolean animate = 1, useSphereMaps = 1; - -GLsizei w = 256, h = 256; - -#define LEFT 3 -#define RIGHT 1 -#define FRONT 2 -#define BACK 0 -#define TOP 4 -#define BOTTOM 5 - -GLuint *faceMap[6]; -GLsizei faceW = 128; - -GLuint *sphereMap[2]; -GLuint sphereW = 256; - -GLfloat angle1[6] = {90, 180, 270, 0, 90, -90}; -GLfloat axis1[6][3] = {{0,1,0}, {0,1,0}, {0,1,0}, {0,1,0}, {1,0,0}, {1,0,0}}; -GLfloat angle2[6] = {0, 0, 0, 0, 180, 180}; -GLfloat axis2[6][3] = {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,1,0}, {0,1,0}}; - -#define TORUS_BIT 1 -#define SPHERE_BIT 2 - -void reset_textures(void) -{ - unsigned int i; - - /* make sphereMap[0] start out all red... */ - for (i = 0; i < sphereW*sphereW; i++) sphereMap[0][i] = 0xff0000ff; - /* make sphereMap[1] start out all green... */ - for (i = 0; i < sphereW*sphereW; i++) sphereMap[1][i] = 0x00ff00ff; -} - -void realloc_textures(void) -{ - static int first = 1; - int i; - - if (!first) { - for (i = 0; i < 6; i++) free(faceMap[i]); - } else { - first = 0; - } - - for (i = 0; i < 6; i++) { - faceMap[i] = (GLuint *)malloc(faceW*faceW*sizeof(GLuint)); - if (!faceMap[i]) { - fprintf(stderr, "malloc of %d bytes failed.\n", - faceW*faceW*sizeof(GLuint)); - } - } - - sphereMap[0] = (GLuint *)malloc(sphereW * sphereW * sizeof(GLuint)); - sphereMap[1] = (GLuint *)malloc(sphereW * sphereW * sizeof(GLuint)); - reset_textures(); -} - -void eliminate_alpha(GLsizei w, GLsizei h, GLuint *map) -{ - int x, y; - - /* top & bottom rows */ - for (x = 0; x < w; x++) { - map[x] &= 0xffffff00; - map[x + (h-1)*w] &= 0xffffff00; - } - - for (y = 0; y < h; y++) { - map[y*w] &= 0xffffff00; - map[y*w + (w-1)] &= 0xffffff00; - } -} - -void init(const char *fname) -{ - GLuint *img; - GLsizei w, h; - int comps; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - cone = gluNewQuadric(); - base = gluNewQuadric(); - qsphere = gluNewQuadric(); - - img = read_texture(fname, &w, &h, &comps); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } - floorList = glGenLists(1); - glNewList(floorList, GL_COMPILE); - glTexImage2D(GL_TEXTURE_2D, 0, 4, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, img); - glEndList(); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - free(img); - - glClearColor(.25, .25, .5, 1.0); - - realloc_textures(); -} - -void reshape(GLsizei winW, GLsizei winH) -{ - w = winW/2; - - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(-1, 0, 2.577, 0, 0, -5, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wallMat[] = {1.f, 1.f, 1.f, 1.f}; - - glPushMatrix(); - glScalef(3, 2, 3); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wallMat); - - /* floor, textured */ - glColor3f(1, 1, 1); - glEnable(GL_TEXTURE_2D); - glCallList(floorList); - glBegin(GL_QUADS); - glNormal3f(0, 1, 0); - glTexCoord2f(0, 0); - glVertex3f(-1, -1, 1); - glTexCoord2f(1, 0); - glVertex3f(1, -1, 1); - glTexCoord2f(1, 1); - glVertex3f(1, -1, -1); - glTexCoord2f(0, 1); - glVertex3f(-1, -1, -1); - glEnd(); - glDisable(GL_TEXTURE_2D); - - /* ceiling */ - glColor3f(wallMat[0] * 1., wallMat[1] * 1., wallMat[2] * 1.); - glBegin(GL_QUADS); - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glColor3f(wallMat[0] * .75, wallMat[1] * .75, wallMat[2] * .75); - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, 1, -1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, -1, 1); - - /* right wall */ - glColor3f(wallMat[0] * .25, wallMat[1] * .25, wallMat[2] * .25); - glNormal3f(-1, 0, 0); - glVertex3f(1, -1, 1); - glVertex3f(1, 1, 1); - glVertex3f(1, 1, -1); - glVertex3f(1, -1, -1); - - /* far wall */ - glColor3f(wallMat[0] * .5, wallMat[1] * .5, wallMat[2] * .5); - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - /* back wall */ - glColor3f(wallMat[0] * .5, wallMat[1] * .5, wallMat[2] * .5); - glNormal3f(0, 0, -1); - glVertex3f(-1, 1, 1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(-1, -1, 1); - - glEnd(); - - glPopMatrix(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - - /* base is coplanar with floor, so turn off depth testing */ - glDisable(GL_DEPTH_TEST); - gluDisk(base, 0., .3, 20, 1); - glEnable(GL_DEPTH_TEST); - - gluCylinder(cone, .3, 0, 1.25, 20, 1); - - glPopMatrix(); -} - -void draw_cube(void) -{ - glBegin(GL_QUADS); - - glNormal3f(0, -1, 0); - glVertex3f(-.25, -.25, -.25); - glVertex3f(.25, -.25, -.25); - glVertex3f(.25, -.25, .25); - glVertex3f(-.25, -.25, .25); - - glNormal3f(0, 1, 0); - glVertex3f(-.25, .25, .25); - glVertex3f(.25, .25, .25); - glVertex3f(.25, .25, -.25); - glVertex3f(-.25, .25, -.25); - - glNormal3f(1, 0, 0); - glVertex3f(.25, -.25, -.25); - glVertex3f(.25, .25, -.25); - glVertex3f(.25, .25, .25); - glVertex3f(.25, -.25, .25); - - glNormal3f(-1, 0, 0); - glVertex3f(-.25, -.25, .25); - glVertex3f(-.25, .25, .25); - glVertex3f(-.25, .25, -.25); - glVertex3f(-.25, -.25, -.25); - - glNormal3f(0, 0, -1); - glVertex3f(-.25, .25, -.25); - glVertex3f(.25, .25, -.25); - glVertex3f(.25, -.25, -.25); - glVertex3f(-.25, -.25, -.25); - - glNormal3f(0, 0, 1); - glVertex3f(-.25, -.25, .25); - glVertex3f(.25, -.25, .25); - glVertex3f(.25, .25, .25); - glVertex3f(-.25, .25, .25); - - glEnd(); -} - -void draw_sphere(GLdouble angle) -{ - static GLfloat sphere_mat[] = {.2f, .7f, .2f, 1.f}; - - glTexImage2D(GL_TEXTURE_2D, 0, 4, sphereW, sphereW, 0, - GL_RGBA, GL_UNSIGNED_BYTE, sphereMap[1]); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - if (useSphereMaps) glEnable(GL_TEXTURE_2D); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - - glPushMatrix(); - glRotatef(45, 0, 0, 1); - glRotatef(angle, 0, 1, 0); - glTranslatef(1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - glColor3fv(sphere_mat); -#if 1 - { - GLUquadricObj *sphere = gluNewQuadric(); - gluSphere(sphere, .6, 64, 64); - gluDeleteQuadric(sphere); - } -#else - draw_cube(); -#endif - - glPopMatrix(); - - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glDisable(GL_TEXTURE_2D); -} - -void draw_torus(GLdouble angle) -{ - angle = 0; - - glTexImage2D(GL_TEXTURE_2D, 0, 4, sphereW, sphereW, 0, - GL_RGBA, GL_UNSIGNED_BYTE, sphereMap[0]); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - if (useSphereMaps) glEnable(GL_TEXTURE_2D); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - - glColor3f(1, .5, .5); - - glPushMatrix(); - glRotatef(angle, 1, 0, 0); - glRotatef(0, 0, 1, 0); - -#if 0 - glutSolidTorus(.2, .25, 32, 32); -#else - { - GLUquadricObj *sphere = gluNewQuadric(); - gluSphere(sphere, .2, 64, 64); - } -#endif - - glPopMatrix(); - - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glDisable(GL_TEXTURE_2D); -} - -void draw_scene(GLdouble degrees, GLint bits) -{ - glEnable(GL_CULL_FACE); - draw_room(); - - if (bits & TORUS_BIT) draw_torus(degrees); - if (bits & SPHERE_BIT) draw_sphere(degrees); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw_special_sphere(int tess) -{ - float r = 1.0, r1, r2, z1, z2; - float theta, phi; - int nlon = tess, nlat = tess; - int i, j; - - glBegin(GL_TRIANGLE_FAN); - theta = M_PI*1.0/nlat; - r2 = r*sin(theta); z2 = r*cos(theta); - glNormal3f(0.0, 0.0, 1.0); - glVertex4f(0.0, 0.0, r*r, r); - for (j = 0, phi = 0.0; j <= nlon; j++, phi = 2*M_PI*j/nlon) { - glNormal3f(r2*cos(phi), r2*sin(phi), z2); - glVertex4f(r2*cos(phi)*z2, r2*sin(phi)*z2, z2*z2, z2); /* top */ - } - glEnd(); - - for (i = 2; i < nlat; i++) { - theta = M_PI*i/nlat; - r1 = r*sin(M_PI*(i-1)/nlat); z1 = r*cos(M_PI*(i-1)/nlat); - r2 = r*sin(theta); z2 = r*cos(theta); - - if (fabs(z1) < 0.01 || fabs(z2) < 0.01) - break; - - glBegin(GL_QUAD_STRIP); - for (j = 0, phi = 0; j <= nlat; j++, phi = 2*M_PI*j/nlon) { - glNormal3f(r1*cos(phi), r1*sin(phi), z1); - glVertex4f(r1*cos(phi)*z1, r1*sin(phi)*z1, z1*z1, z1); - glNormal3f(r2*cos(phi), r2*sin(phi), z2); - glVertex4f(r2*cos(phi)*z2, r2*sin(phi)*z2, z2*z2, z2); - } - glEnd(); - } -} - -void render_spheremap(void) -{ - GLfloat p[4]; - int i; - - glColor4f(1, 1, 1, 1); - -#if 1 - glEnable(GL_TEXTURE_2D); -#endif - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - - p[0] = 2.0; p[1] = p[2] = p[3] = 0.0; /* 2zx */ - glTexGenfv(GL_S, GL_OBJECT_PLANE, p); - - glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - p[0] = 0.0; p[1] = 2.0; p[2] = p[3] = 0.0; /* 2zy */ - glTexGenfv(GL_T, GL_OBJECT_PLANE, p); - - glTexGenf(GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - p[0] = p[1] = 0.0; p[2] = 0.0; p[3] = 2.0; /* 2z */ - glTexGenfv(GL_R, GL_OBJECT_PLANE, p); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-.98, .98, -.98, .98, 1.0, 100); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 6, - 0, 0, 0, - 0, 1, 0); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - -#if 1 - glClearColor(0.25, 0.25, 0.5, 1.0); - glClearDepth(1.0); - glClear(/* GL_COLOR_BUFFER_BIT | */GL_DEPTH_BUFFER_BIT); -#endif - - for (i = 0; i < 6; i++) { - glTexImage2D(GL_TEXTURE_2D, 0, 4, faceW, faceW, 0, - GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid *)faceMap[i]); - - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glScalef(0.5, 0.5, 1.0); - glTranslatef(1.0, 1.0, 0.0); - glFrustum(-1.01, 1.01, -1.01, 1.01, 1.0, 100.0); - if (angle2[i]) { - glRotatef(angle2[i], axis2[i][0], axis2[i][1], axis2[i][2]); - } - glRotatef(angle1[i], axis1[i][0], axis1[i][1], axis1[i][2]); - - /* XXX atul does another angle thing here... */ - /* XXX atul does a third angle thing here... */ - - glTranslatef(0.0, 0.0, -1.00); - - glMatrixMode(GL_MODELVIEW); - glClear(GL_DEPTH_BUFFER_BIT); - draw_special_sphere(20); - } - - glDisable(GL_BLEND); - glDisable(GL_CULL_FACE); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glMatrixMode(GL_TEXTURE); - glPopMatrix(); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glDisable(GL_TEXTURE_GEN_R); - - glDisable(GL_TEXTURE_2D); -} - -void make_projection(int face, GLfloat xpos, GLfloat ypos, GLfloat zpos) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90, 1, .01, 10); - if (angle2[face]) { - glRotatef(angle2[face], axis2[face][0], axis2[face][1], axis2[face][2]); - } - glRotatef(angle1[face], axis1[face][0], axis1[face][1], axis1[face][2]); - gluLookAt(xpos, ypos, zpos, - ypos, ypos, zpos - 1, - 0, 1, 0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw(void) -{ - static int frame = 0; - GLenum err; - GLdouble secs; - static double degrees = 0; - GLfloat sphereX, sphereY, sphereZ; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* one revolution every 10 seconds... */ - if (animate) { - secs = get_secs(); - secs = secs - 10.*trunc(secs / 10.); - degrees = (secs/10.) * (360.); - } - - if (frame == 0) { - /* switch the viewport and draw the faces of the cube from the - * point of view of the square... */ - - glViewport(w + 0*faceW, 0, faceW, faceW); - make_projection(LEFT, 0, 0, 0); - draw_scene(degrees, -1 & ~TORUS_BIT); - glReadPixels(w + 0*faceW, 0, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[LEFT]); - eliminate_alpha(faceW, faceW, faceMap[LEFT]); - - glViewport(w + 1*faceW, 0, faceW, faceW); - make_projection(RIGHT, 0, 0, 0); - draw_scene(degrees, -1 & ~TORUS_BIT); - glReadPixels(w + 1*faceW, 0, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[RIGHT]); - eliminate_alpha(faceW, faceW, faceMap[RIGHT]); - - glViewport(w + 2*faceW, 0, faceW, faceW); - make_projection(BOTTOM, 0, 0, 0); - draw_scene(degrees, -1 & ~TORUS_BIT); - glReadPixels(w + 2*faceW, 0, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[BOTTOM]); - eliminate_alpha(faceW, faceW, faceMap[BOTTOM]); - - glViewport(w + 0*faceW, faceW, faceW, faceW); - make_projection(TOP, 0, 0, 0); - draw_scene(degrees, -1 & ~TORUS_BIT); - glReadPixels(w + 0*faceW, faceW, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[TOP]); - eliminate_alpha(faceW, faceW, faceMap[TOP]); - - glViewport(w + 1*faceW, faceW, faceW, faceW); - make_projection(FRONT, 0, 0, 0); - draw_scene(degrees, -1 & ~TORUS_BIT); - glReadPixels(w + 1*faceW, faceW, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[FRONT]); - eliminate_alpha(faceW, faceW, faceMap[FRONT]); - - glViewport(w + 2*faceW, faceW, faceW, faceW); - make_projection(BACK, 0, 0, 0); - draw_scene(degrees, -1 & ~TORUS_BIT); - glReadPixels(w + 2*faceW, faceW, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[BACK]); - eliminate_alpha(faceW, faceW, faceMap[BACK]); - - /* create the sphere map for the cube... */ - glViewport(w, 2*faceW, sphereW, sphereW); - render_spheremap(); - glReadPixels(w, 2*faceW, sphereW, sphereW, GL_RGBA, GL_UNSIGNED_BYTE, - sphereMap[0]); - } else { - sphereX = - sphereY = cos((degrees/360.) * 2.*M_PI); - sphereZ = -sin((degrees/360.) * 2.*M_PI); - - glViewport(w + 0*faceW, 0, faceW, faceW); - make_projection(LEFT, sphereX, sphereY, sphereZ); - draw_scene(degrees, -1 & ~SPHERE_BIT); - glReadPixels(w + 0*faceW, 0, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[LEFT]); - eliminate_alpha(faceW, faceW, faceMap[LEFT]); - - glViewport(w + 1*faceW, 0, faceW, faceW); - make_projection(RIGHT, sphereX, sphereY, sphereZ); - draw_scene(degrees, -1 & ~SPHERE_BIT); - glReadPixels(w + 1*faceW, 0, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[RIGHT]); - eliminate_alpha(faceW, faceW, faceMap[RIGHT]); - - glViewport(w + 2*faceW, 0, faceW, faceW); - make_projection(BOTTOM, sphereX, sphereY, sphereZ); - draw_scene(degrees, -1 & ~SPHERE_BIT); - glReadPixels(w + 2*faceW, 0, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[BOTTOM]); - eliminate_alpha(faceW, faceW, faceMap[BOTTOM]); - - glViewport(w + 0*faceW, faceW, faceW, faceW); - make_projection(TOP, sphereX, sphereY, sphereZ); - draw_scene(degrees, -1 & ~SPHERE_BIT); - glReadPixels(w + 0*faceW, faceW, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[TOP]); - eliminate_alpha(faceW, faceW, faceMap[TOP]); - - glViewport(w + 1*faceW, faceW, faceW, faceW); - make_projection(FRONT, sphereX, sphereY, sphereZ); - draw_scene(degrees, -1 & ~SPHERE_BIT); - glReadPixels(w + 1*faceW, faceW, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[FRONT]); - eliminate_alpha(faceW, faceW, faceMap[FRONT]); - - glViewport(w + 2*faceW, faceW, faceW, faceW); - make_projection(BACK, sphereX, sphereY, sphereZ); - draw_scene(degrees, -1 & ~SPHERE_BIT); - glReadPixels(w + 2*faceW, faceW, faceW, faceW, - GL_RGBA, GL_UNSIGNED_BYTE, faceMap[BACK]); - eliminate_alpha(faceW, faceW, faceMap[BACK]); - - /* create the sphere map for the cube... */ - glViewport(w + sphereW, 2*faceW, sphereW, sphereW); - render_spheremap(); - glReadPixels(w+sphereW, 2*faceW, sphereW, sphereW, - GL_RGBA, GL_UNSIGNED_BYTE, sphereMap[1]); - } - frame = (frame == 0); - - /* draw both spheremaps */ - glViewport(w, 2*faceW, 2*sphereW, sphereW); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, 2*sphereW, 0, sphereW, 0, 1); - glRasterPos2i(0, 0); - glDrawPixels(sphereW, sphereW, GL_RGBA, GL_UNSIGNED_BYTE, sphereMap[0]); - glRasterPos2i(sphereW, 0); - glDrawPixels(sphereW, sphereW, GL_RGBA, GL_UNSIGNED_BYTE, sphereMap[1]); - - - /* draw the scene for the viewer's visual gratification... */ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 0, - 0, 0, -1, - 0, 1, 0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -2.577); - draw_scene(degrees, -1); - glLoadIdentity(); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - static int idle = 1; - switch(key) { - case 'a': case 'A': - animate = (animate == 0); - printf("%sanimating\n", animate ? "" : "not "); - break; - case 'd': case 'D': - printf("drawing\n"); - draw(); - break; - case 'r': case 'R': - printf("resetting sphere maps...\n"); - reset_textures(); - draw(); - break; - case 't': case 'T': - useSphereMaps = (useSphereMaps == 0); - printf("%susing sphere maps\n", useSphereMaps ? "" : "not "); - break; - case 27: - exit(0); - default: - if (idle) { - glutIdleFunc(0); - } else { - glutIdleFunc(draw); - } - idle = (idle == 0); - printf("%sdrawing when idle\n", idle ? "" : "not "); - break; - } -} - -main(int argc, char *argv[]) -{ - glutInitWindowSize(w*2, h); - glutInitWindowPosition(0, 0); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(defaultFile); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/multispheremap.dsp b/lib/glut-3.7.6/progs/advanced97/multispheremap.dsp deleted file mode 100644 index e12a25484dceed0386d2857f98c3882b9dcbadf5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/multispheremap.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multispheremap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multispheremap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multispheremap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multispheremap.mak" CFG="multispheremap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multispheremap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multispheremap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multispheremap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multispheremap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multispheremap - Win32 Release" -# Name "multispheremap - Win32 Debug" -# Begin Source File - -SOURCE=.\multispheremap.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/noise.c b/lib/glut-3.7.6/progs/advanced97/noise.c deleted file mode 100644 index 38562429a1fd2300978fbf8de4bfb5f3f3d2bf80..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/noise.c +++ /dev/null @@ -1,263 +0,0 @@ -/* noise.c - by Simon Hui, 3Dfx Interactive */ - -/* create an octave by filtering randomly generated noise */ - -#include -#include -#include -#include - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - - -static GLint texxsize = 256, texysize = 256; -static GLint winxsize = 512, winysize = 512; -static GLint freq = 4; - -/* texture object names */ -static GLuint basistex = 1; -static GLuint noisetex = 2; - -void -init_texture(void) { - int i, j, n; - int w, h; - GLubyte *basis, *tex; - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - basis = (GLubyte *) malloc(texxsize * texysize); - w = texxsize / 2; - h = texysize / 2; - for (j=0; j < h; j++) { - for (i=0; i < w; i++) { - GLint r; - float u = i / (w - 1.0); - float v = j / (h - 1.0); - float f = 3 * u * u - 2 * u * u * u; - float g = 3 * v * v - 2 * v * v * v; - - /* basis is a bicubic spline */ - r = f * g * 0xff; - - /* reflect around x and y axes */ - basis[j * texxsize + i] = r; - basis[j * texxsize + texxsize-i-1] = r; - basis[(texysize-j-1) * texxsize + i] = r; - basis[(texysize-j-1) * texxsize + texxsize-i-1] = r; - } - } - glBindTexture(GL_TEXTURE_2D, basistex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, texxsize, texysize, 0, - GL_RED, GL_UNSIGNED_BYTE, basis); - free(basis); - - tex = (GLubyte *) malloc(4 * texxsize * texysize); - for (n=0; n < 4; n++) { - for (j=0; j < texysize; j++) { - for (i=0; i < texxsize; i++) { - int r = rand(); - - /* mix it up a little more */ - r = ((r & 0xff) + ((r & 0xff00) >> 8)) & 0xff; - - tex[j*texxsize + i] = r; - } - } - glBindTexture(GL_TEXTURE_2D, noisetex + n); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, texxsize, texysize, 0, - GL_RED, GL_UNSIGNED_BYTE, tex); - } - free(tex); -} - -void -init(void) { - glClearColor(0.0, 0.0, 0.0, 1.0); - glMatrixMode(GL_PROJECTION); - glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glViewport(0, 0, winxsize, winysize); - glBlendFunc(GL_DST_COLOR, GL_ZERO); - - glEnable(GL_TEXTURE_2D); - init_texture(); -} - -void -draw_basis(int tsize, int ssize, int xadj, int yadj) { - float tilessize = 1.0 / ssize; - float tiletsize = 1.0 / tsize; - float xoff = (xadj - 0.5) * 0.5 * tilessize; - float yoff = (yadj - 0.5) * 0.5 * tiletsize; - float xo, yo; - int i, j; - - glBindTexture(GL_TEXTURE_2D, basistex); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - - /* draw as many copies of the basis function as needed for this frequency */ - for (j=0; j < tsize; j++) { - for (i=0; i < ssize; i++) { - xo = xoff + i * tilessize; - yo = yoff + j * tiletsize; - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0.f, 0.f); glVertex2f(xo, yo); - glTexCoord2f(0.f, 1.f); glVertex2f(xo, yo + tiletsize); - glTexCoord2f(1.f, 0.f); glVertex2f(xo + tilessize, yo); - glTexCoord2f(1.f, 1.f); glVertex2f(xo + tilessize, yo + tiletsize); - glEnd(); - } - } - glFinish(); -} - -void -draw_noise_texture(int tsize, int ssize, int xadj, int yadj, int texname) { - float tilessize = 1.0 / ssize; - float tiletsize = 1.0 / tsize; - float xoff = (xadj - 0.5) * 0.5 * tilessize; - float yoff = (yadj - 0.5) * 0.5 * tiletsize; - float scale = 1.0 / (texxsize / ssize); - - glBindTexture(GL_TEXTURE_2D, texname); - - /* scale the texture matrix to get a noise pattern of desired frequency */ - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glScalef(scale,scale,scale); - - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0.f, 0.f); glVertex2f(xoff, yoff); - glTexCoord2f(0.f, 1.f); glVertex2f(xoff, yoff+1.0); - glTexCoord2f(1.f, 0.f); glVertex2f(xoff + 1.0, yoff); - glTexCoord2f(1.f, 1.f); glVertex2f(xoff + 1.0, yoff + 1.0); - glEnd(); - glFlush(); -} - -/* menu choices */ -enum { - BASIS, NOISE, BASIS_TIMES_NOISE, OCTAVE, HIGHER_FREQ, LOWER_FREQ, QUIT=27 -}; - -GLint showmode = BASIS_TIMES_NOISE; - -void -display(void) { - switch (showmode) { - - case BASIS: - glClear(GL_COLOR_BUFFER_BIT); - draw_basis(freq, freq, 0, 0); - break; - - case NOISE: - glClear(GL_COLOR_BUFFER_BIT); - draw_noise_texture(freq, freq, 0, 0, noisetex); - break; - - case BASIS_TIMES_NOISE: - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(freq, freq, 0, 0); - glEnable(GL_BLEND); - draw_noise_texture(freq, freq, 0, 0, noisetex); - glDisable(GL_BLEND); - break; - - case OCTAVE: - - /* put four sets together to get the final octave */ - - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(freq, freq, 0, 0); - glEnable(GL_BLEND); - draw_noise_texture(freq, freq, 0, 0, noisetex); - glAccum(GL_LOAD, 1.0); - - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(freq, freq, 1, 0); - glEnable(GL_BLEND); - draw_noise_texture(freq, freq, 1, 0, noisetex + 1); - glAccum(GL_ACCUM, 1.0); - - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(freq, freq, 0, 1); - glEnable(GL_BLEND); - draw_noise_texture(freq, freq, 0, 1, noisetex + 2); - glAccum(GL_ACCUM, 1.0); - - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(freq, freq, 1, 1); - glEnable(GL_BLEND); - draw_noise_texture(freq, freq, 1, 1, noisetex + 3); - glAccum(GL_ACCUM, 1.0); - - glDisable(GL_BLEND); - glClear(GL_COLOR_BUFFER_BIT); - glAccum(GL_RETURN, 1.0); - break; - } - glFlush(); -} - -void -reshape(int w, int h) { - glViewport(0, 0, w, h); - glutPostRedisplay(); -} - -void -menu(int value) { - switch (value) { - case BASIS: - case NOISE: - case BASIS_TIMES_NOISE: - case OCTAVE: - showmode = value; - break; - case HIGHER_FREQ: - if (freq < texxsize) freq *= 2; - break; - case LOWER_FREQ: - freq /= 2; - if (freq < 2) freq = 2; - break; - case QUIT: - exit(0); - } - glutPostRedisplay(); -} - -int -main(int argc, char** argv) { - glutInitWindowSize(winxsize, winysize); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA | GLUT_ACCUM); - (void)glutCreateWindow("filtered noise function"); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutCreateMenu(menu); - glutAddMenuEntry("Show One Basis", BASIS); - glutAddMenuEntry("Show One Noise", NOISE); - glutAddMenuEntry("Show One Basis x Noise", BASIS_TIMES_NOISE); - glutAddMenuEntry("Show Octave", OCTAVE); - glutAddMenuEntry("Higher Frequency", HIGHER_FREQ); - glutAddMenuEntry("Lower Frequency", LOWER_FREQ); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced97/noise.dsp b/lib/glut-3.7.6/progs/advanced97/noise.dsp deleted file mode 100644 index dd1da5816cc2f478675d86a489887a6a06f3a0fd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/noise.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="noise" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=noise - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "noise.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "noise.mak" CFG="noise - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "noise - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "noise - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "noise - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "noise - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "noise - Win32 Release" -# Name "noise - Win32 Debug" -# Begin Source File - -SOURCE=.\noise.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/nthsurfdemo.c b/lib/glut-3.7.6/progs/advanced97/nthsurfdemo.c deleted file mode 100644 index a0ff8a9ccaa1a2b1eb22913066a45e0d027ef205..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/nthsurfdemo.c +++ /dev/null @@ -1,590 +0,0 @@ -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define TRUE 1 -#define FALSE 0 - -int whichSurface = 0; -int takeSnapshot = 0; - - -int winWidth, winHeight; -GLfloat *depthSave = NULL; -GLubyte *stencilSave = NULL; -GLubyte *colorSave = NULL; - - -void resizeBuffers(void) -{ - colorSave = realloc(colorSave, winWidth * winHeight * 4 * sizeof(GLubyte)); - depthSave = realloc(depthSave, winWidth * winHeight * 4 * sizeof(GLfloat)); - stencilSave = (GLubyte *)depthSave; -} - - -void pushOrthoView(float left, float right, float bottom, float top, - float znear, float zfar) -{ - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(left, right, bottom, top, znear, zfar); -} - - -void popView(void) -{ - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - - -void copyDepthToColor(GLenum whichColorBuffer) -{ - int x, y; - GLfloat max, min; - GLint previousColorBuffer; - - glReadPixels(0, 0, winWidth, winHeight, GL_DEPTH_COMPONENT, GL_FLOAT, - depthSave); - - /* I'm sure this could be done much better with OpenGL */ - max = 0; - min = 1; - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - if(depthSave[winWidth * y + x] < min) - min = depthSave[winWidth * y + x]; - if(depthSave[winWidth * y + x] > max && depthSave[winWidth * y + x] < .999) - max = depthSave[winWidth * y + x]; - } - - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - if(depthSave[winWidth * y + x] <= max) - depthSave[winWidth * y + x] = 1 - (depthSave[winWidth * y + x] - min) / (max - min); - else - depthSave[winWidth * y + x] = 0; - } - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glGetIntegerv(GL_DRAW_BUFFER, &previousColorBuffer); - glDrawBuffer(whichColorBuffer); - glDrawPixels(winWidth, winHeight, GL_LUMINANCE , GL_FLOAT, depthSave); - glDrawBuffer(previousColorBuffer); - glEnable(GL_DEPTH_TEST); - popView(); -} - - -unsigned char colors[][3] = -{ - {255, 0, 0}, /* red */ - {255, 218, 0}, /* yellow */ - {72, 255, 0}, /* yellowish green */ - {0, 255, 145}, /* bluish cyan */ - {0, 145, 255}, /* cyanish blue */ - {72, 0, 255}, /* purplish blue */ - {255, 0, 218}, /* reddish purple */ -}; - - -void copyStencilToColor(GLenum whichColorBuffer) -{ - int x, y; - GLint previousColorBuffer; - - glReadPixels(0, 0, winWidth, winHeight, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, - stencilSave); - - /* I'm sure this could be done much better with OpenGL */ - for(y = 0; y < winHeight; y++) - for(x = 0; x < winWidth; x++) { - int stencilValue; - - stencilValue = stencilSave[winWidth * y + x]; - - colorSave[(winWidth * y + x) * 3 + 0] = colors[stencilValue % 7][0]; - colorSave[(winWidth * y + x) * 3 + 1] = colors[stencilValue % 7][1]; - colorSave[(winWidth * y + x) * 3 + 2] = colors[stencilValue % 7][2]; - } - - pushOrthoView(0, 1, 0, 1, 0, 1); - glRasterPos3f(0, 0, -.5); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glGetIntegerv(GL_DRAW_BUFFER, &previousColorBuffer); - glDrawBuffer(whichColorBuffer); - glDrawPixels(winWidth, winHeight, GL_RGB, GL_UNSIGNED_BYTE, colorSave); - glDrawBuffer(previousColorBuffer); - glEnable(GL_DEPTH_TEST); - popView(); -} - - -#if 0 - -GLushort rrow[1280], grow[1280], brow[1280], arow[1280]; - - -#define iopen junk -#include -#undef iopen - - -IMAGE *iopen(char *file, char *mode, ...); -int putrow(IMAGE *image, unsigned short *buff, int y, int z); -int iclose(IMAGE *); - - -void saveSGIImage(char *name, int doAlphaToo) -{ - IMAGE *img; - FILE *fp; - GLubyte *pixels; - int x, y; - int numComp = doAlphaToo ? 4 : 3; - - pixels = malloc(winWidth * winHeight * numComp * sizeof(GLubyte)); - - glReadPixels(0, 0, winWidth, winHeight, doAlphaToo ? GL_RGBA : GL_RGB, - GL_UNSIGNED_BYTE, pixels); - - img = iopen(name, "w", RLE(1), numComp, winWidth, winHeight, numComp); - - for(y = 0; y < winHeight; y++) { - for(x = 0; x < winWidth; x++) { - rrow[x] = pixels[(y * winWidth + x) * numComp + 0]; - grow[x] = pixels[(y * winWidth + x) * numComp + 1]; - brow[x] = pixels[(y * winWidth + x) * numComp + 2]; - if(doAlphaToo) - arow[x] = pixels[(y * winWidth + x) * numComp + 3]; - } - putrow(img, rrow, y, 0); - putrow(img, grow, y, 1); - putrow(img, brow, y, 2); - if(doAlphaToo) - putrow(img, arow, y, 3); - } - iclose(img); - - free(pixels); -} - -#endif - - -struct transformation { - float translation[3]; - float rotation[4]; - float scale[3]; -}; - - -void drawXform(struct transformation *xform, int applyScale) -{ - glTranslatef(xform->translation[0], xform->translation[1], xform->translation[2]); - glRotatef(xform->rotation[3] / M_PI * 180, xform->rotation[0], xform->rotation[1], xform->rotation[2]); - if(applyScale) - glScalef(xform->scale[0], xform->scale[1], xform->scale[2]); -} - - -enum trackballModeEnum { - ROTATE, - TRANSLATEXY, - TRANSLATEZ, - SCALEX, - SCALEY, - SCALEZ -} trackballMode = ROTATE; - - -struct transformation xform = -{ - 0, 0, 0, - -0.65, -0.75, -0.04, 0.89, - .7, .7, 2, -}; - - -void axisamountToMat(float aa[], float mat[]) -{ - float c, s, t; - - c = (float)cos(aa[3]); - s = (float)sin(aa[3]); - t = 1.0f - c; - - mat[0] = t * aa[0] * aa[0] + c; - mat[1] = t * aa[0] * aa[1] + s * aa[2]; - mat[2] = t * aa[0] * aa[2] - s * aa[1]; - mat[3] = t * aa[0] * aa[1] - s * aa[2]; - mat[4] = t * aa[1] * aa[1] + c; - mat[5] = t * aa[1] * aa[2] + s * aa[0]; - mat[6] = t * aa[0] * aa[2] + s * aa[1]; - mat[7] = t * aa[1] * aa[2] - s * aa[0]; - mat[8] = t * aa[2] * aa[2] + c; -} - - -void matToAxisamount(float mat[], float aa[]) -{ - float c; - float s; - - c = (mat[0] + mat[4] + mat[8] - 1.0f) / 2.0f; - aa[3] = (float)acos(c); - s = (float)sin(aa[3]); - if(fabs(s / M_PI - (int)(s / M_PI)) < .0000001) - { - aa[0] = 0.0f; - aa[1] = 1.0f; - aa[2] = 0.0f; - } - else - { - aa[0] = (mat[5] - mat[7]) / (2.0f * s); - aa[1] = (mat[6] - mat[2]) / (2.0f * s); - aa[2] = (mat[1] - mat[3]) / (2.0f * s); - } -} - - -void multMat(float m1[], float m2[], float r[]) -{ - float t[9]; - int i; - - t[0] = m1[0] * m2[0] + m1[1] * m2[3] + m1[2] * m2[6]; - t[1] = m1[0] * m2[1] + m1[1] * m2[4] + m1[2] * m2[7]; - t[2] = m1[0] * m2[2] + m1[1] * m2[5] + m1[2] * m2[8]; - t[3] = m1[3] * m2[0] + m1[4] * m2[3] + m1[5] * m2[6]; - t[4] = m1[3] * m2[1] + m1[4] * m2[4] + m1[5] * m2[7]; - t[5] = m1[3] * m2[2] + m1[4] * m2[5] + m1[5] * m2[8]; - t[6] = m1[6] * m2[0] + m1[7] * m2[3] + m1[8] * m2[6]; - t[7] = m1[6] * m2[1] + m1[7] * m2[4] + m1[8] * m2[7]; - t[8] = m1[6] * m2[2] + m1[7] * m2[5] + m1[8] * m2[8]; - for(i = 0; i < 9; i++) - { - r[i] = t[i]; - } -} - - -void rotateTrackball(int dx, int dy, float rotation[4]) -{ - float dist; - float oldMat[9]; - float rotMat[9]; - float newRot[4]; - - dist = (float)sqrt((double)(dx * dx + dy * dy)); - if(fabs(dist) < 0.99) - return; - - newRot[0] = (float) dy / dist; - newRot[1] = (float) dx / dist; - newRot[2] = 0.0f; - newRot[3] = (float)M_PI * dist / winWidth; - - axisamountToMat(rotation, oldMat); - axisamountToMat(newRot, rotMat); - multMat(oldMat, rotMat, oldMat); - matToAxisamount(oldMat, rotation); - - dist = (float)sqrt(rotation[0] * rotation[0] + rotation[1] * rotation[1] + - rotation[2] * rotation[2]); - - rotation[0] /= dist; - rotation[1] /= dist; - rotation[2] /= dist; -} - - -int stage = 6; -typedef enum {COLOR, DEPTH, STENCIL} BufferInterest; - -BufferInterest bufferInterest = COLOR; - - -void init(void) -{ - GLfloat defaultMat[] = {.75, .25, .25, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - glMatrixMode(GL_PROJECTION); - glFrustum(-.33, .33, -.33, .33, .5, 40); - - glMatrixMode(GL_MODELVIEW); - gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); */ - - glEnable(GL_NORMALIZE); - - glEnable(GL_STENCIL_TEST); - glStencilOp(GL_INCR, GL_INCR, GL_INCR); - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, defaultMat); - - glLineWidth(3); - glShadeModel(GL_FLAT); -} - - -void redraw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - glPushMatrix(); - - drawXform(&xform, TRUE); - - glEnable(GL_STENCIL_TEST); - if(whichSurface < 2) - glStencilFunc(GL_EQUAL, whichSurface, 0xff); - else - glStencilFunc(GL_ALWAYS, 0, 0); - - glutSolidTorus(2, 4, 20, 20); - - /* glDisable(GL_STENCIL_TEST); */ - /* glDisable(GL_LIGHTING); */ - /* glColor3f(1, 1, 1); */ - /* glutWireTorus(2, 4, 20, 20); */ - /* glEnable(GL_LIGHTING); */ - - glPopMatrix(); - - switch(bufferInterest) { - case COLOR: - break; /* color already in back buffer */ - - case STENCIL: - copyStencilToColor(GL_BACK); - break; - - case DEPTH: - copyDepthToColor(GL_BACK); - break; - } - - if(takeSnapshot) { - takeSnapshot = 0; - /* saveSGIImage("snap.rgb", FALSE); */ - /* printf("Saved RGBA image in snap.rgba\n"); */ - } - - glutSwapBuffers(); -} - - -void reshape(int width, int height) -{ - glViewport(0, 0, width, height); - winWidth = width; - winHeight = height; - resizeBuffers(); - glutPostRedisplay(); -} - - -void changeData(int data) -{ - char *s; - - bufferInterest = (BufferInterest) data; - glutPostRedisplay(); - - switch(data) { - case COLOR: - s = "color"; - break; - - case STENCIL: - s = "stencil"; - break; - - case DEPTH: - s = "depth"; - break; - } - printf("Now displaying %s data\n", s); -} - - -int mainMenu; - - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch(key) - { - case '1': - case '2': - case '3': - whichSurface = key - '1'; - glutPostRedisplay(); - break; - - case 'r': - trackballMode = ROTATE; - break; - - case 't': - trackballMode = TRANSLATEXY; - break; - - case 'T': - trackballMode = TRANSLATEZ; - break; - - case 'x': - trackballMode = SCALEX; - break; - - case 'y': - trackballMode = SCALEY; - break; - - case 'z': - trackballMode = SCALEZ; - break; - - case 'q': case 'Q': case '\033': - exit(0); - break; - - case '+': case '=': - stage++; - glutPostRedisplay(); - break; - - case '-': case '_': - stage--; - glutPostRedisplay(); - break; - - case 's': - printf("%f %f %f %f\n", xform.rotation[0], xform.rotation[1], - xform.rotation[2], xform.rotation[3]); - glutPostRedisplay(); - break; - } -} - - -static int ox, oy; - - -/* ARGSUSED */ -void button(int b, int state, int x, int y) -{ - ox = x; - oy = y; -} - - -void motion(int x, int y) -{ - int dx, dy; - - dx = x - ox; - dy = y - oy; - - ox = x; - oy = y; - - switch(trackballMode) { - case ROTATE: - rotateTrackball(dx, dy, xform.rotation); - break; - - case SCALEX: - xform.scale[0] += (dx + dy) / 20.0f; - break; - - case SCALEY: - xform.scale[1] += (dx + dy) / 20.0f; - break; - - case SCALEZ: - xform.scale[2] += (dx + dy) / 20.0f; - break; - - case TRANSLATEXY: - xform.translation[0] += dx / 20.0f; - xform.translation[1] -= dy / 20.0f; - break; - - case TRANSLATEZ: - xform.translation[2] += (dx + dy) / 20.0f; - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED */ -void mainMenuFunc(int menu) -{ - /* */ -} - - -int main(int argc, char **argv) -{ - int bufferMenu; - int stenSize; - - glutInit(&argc, argv); - glutInitWindowSize(winWidth = 256, winHeight = 256); - glutInitDisplayMode(GLUT_DOUBLE|GLUT_STENCIL|GLUT_DEPTH|GLUT_ALPHA); - (void)glutCreateWindow("torus depth"); - glutDisplayFunc(redraw); - glutKeyboardFunc(keyboard); - glutMotionFunc(motion); - glutMouseFunc(button); - glutReshapeFunc(reshape); - - resizeBuffers(); - glGetIntegerv(GL_STENCIL_BITS, &stenSize); - fprintf(stderr, "(%d bits of stencil available in this visual)\n", stenSize); - - fprintf(stderr, "Hit 'h' for help message\n"); - - bufferMenu = glutCreateMenu(changeData); - glutAddMenuEntry("Color data", COLOR); - glutAddMenuEntry("Stencil data", STENCIL); - glutAddMenuEntry("Depth data", DEPTH); - - mainMenu = glutCreateMenu(mainMenuFunc); - glutAddSubMenu("Visible buffer", bufferMenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - init(); - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/nthsurfdemo.dsp b/lib/glut-3.7.6/progs/advanced97/nthsurfdemo.dsp deleted file mode 100644 index 3d444ee6c182cb805e3e4594fdaf7a8152b3adc2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/nthsurfdemo.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="nthsurfdemo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=nthsurfdemo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "nthsurfdemo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "nthsurfdemo.mak" CFG="nthsurfdemo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "nthsurfdemo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "nthsurfdemo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "nthsurfdemo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "nthsurfdemo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "nthsurfdemo - Win32 Release" -# Name "nthsurfdemo - Win32 Debug" -# Begin Source File - -SOURCE=.\nthsurfdemo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/paint.c b/lib/glut-3.7.6/progs/advanced97/paint.c deleted file mode 100644 index 3595cdfccd0323e0623a7cb1248124b4bb9ede57..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/paint.c +++ /dev/null @@ -1,266 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -#define trunc(x) ((double)((int)(x))) -#endif - -#define RW 0.3086 -#define GW 0.6094 -#define BW 0.0820 - -static char defaultFile0[] = "../data/mandrill.rgb"; -static char defaultFile1[] = "../data/sgi.bw"; -static char defaultBrushFile[] = "../data/brush.rgb"; -GLuint *img0, *img1, *brush; -GLsizei w0, w1, wbrush, h0, h1, hbrush; -GLsizei w, h; - -GLint comp; - -void init(void) -{ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); -} - -GLuint *load_img(const char *fname, GLsizei *imgW, GLsizei *imgH) -{ - GLuint *img; - - img = read_texture(fname, imgW, imgH, &comp); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } - - return img; -} - -GLuint * -resize_img(GLuint *img, GLsizei curW, GLsizei curH) -{ - /* save & set buffer settings */ - glPushAttrib(GL_COLOR_BUFFER_BIT | GL_PIXEL_MODE_BIT); - glDrawBuffer(GL_BACK); - glReadBuffer(GL_BACK); - - glPixelZoom((float)w / (float)curW, (float)h / (float)curH); - glRasterPos2i(0, 0); - glDrawPixels(curW, curH, GL_RGBA, GL_UNSIGNED_BYTE, img); - free(img); - img = (GLuint *)malloc(w * h * sizeof(GLuint)); - if (!img) { - fprintf(stderr, "Malloc of %d bytes failed.\n", - curW * curH * sizeof(GLuint)); - exit(1); - } - glPixelZoom(1, 1); - glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, img); - - glPopAttrib(); - - return img; -} - -GLuint * -convert_to_luminance(GLuint *img, GLsizei w, GLsizei h) -{ - GLubyte *newImg, *src, *dst; - GLfloat val; - int i; - - newImg = (GLubyte *)malloc(w * h); - if (!newImg) { - fprintf(stderr, "malloc of %d bytes failed\n", w*h); - exit(1); - } - - src = (GLubyte *)img; - dst = newImg; - for (i = 0; i < w*h; i++) { - val = ((float)(*src++) * RW + - (float)(*src++) * GW + - (float)(*src++) * BW); - src++; - if (val > 255) val = 255; - *dst++ = val; - } - free(img); - - /* casting a ubyte ptr to a uint pointer is sloppy since it can - * lead to alignment errors, but since the pointer came from - * malloc we know it's legal in this case... */ - return (GLuint *)newImg; -} - -void reshape(GLsizei winW, GLsizei winH) -{ - glViewport(0, 0, w, h); - glLoadIdentity(); - glOrtho(0, winW, 0, winH, 0, 5); -} - -void draw(void) -{ - static int first = 1; - GLenum err; - - if (first) { - printf("Scaling images to %d by %d\n", w, h); - - if (w0 != w || h0 != h) { - img0 = resize_img(img0, w0, h0); - - } - if (w1 != w || h1 != h) { - img1 = resize_img(img1, w1, h1); - } - - first = 0; - } - - glClear(GL_COLOR_BUFFER_BIT); - glRasterPos2i(0, 0); - glDrawBuffer(GL_BACK); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img1); - glDrawBuffer(GL_FRONT); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img0); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); -} - -int lastX, lastY, curX, curY; - -int get_msecs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void idle(void) -{ - int x = curX - (wbrush/2); - int y = h - (curY + (hbrush/2)); - int msecs; - static int last_msecs = -1; - - /* do not do this more than 60 times a second. Otherwise it's - * to fast for use on high-end systems */ - msecs = get_msecs(); - if (fabs(last_msecs - msecs) < 1000./60.) { - return; - } - last_msecs = msecs; - - /* we draw the brush using a drawpixels command. on systems with - * hardware-accelerated texture mapping it would be better to use - * that. - * - * we use the bitmap hack to set the rasterpos because we don't - * know that the position will be within the window. - */ - glRasterPos2i(0, 0); - glBitmap(0, 0, 0, 0, x, y, 0); - glColorMask(0, 0, 0, 1); - glDrawBuffer(GL_BACK); - glDrawPixels(wbrush, hbrush, GL_ALPHA, GL_UNSIGNED_BYTE, brush); - glColorMask(1, 1, 1, 1); - - glReadBuffer(GL_BACK); - glDrawBuffer(GL_FRONT); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glCopyPixels(x, y, wbrush, hbrush, GL_COLOR); - glDisable(GL_BLEND); - - glColorMask(1, 1, 1, 1); -} - -void motion(int xpos, int ypos) -{ - curX = xpos; - curY = ypos; -} - -/* ARGSUSED */ -void button(int button, int state, int xpos, int ypos) -{ - if (state == GLUT_DOWN) { - glutIdleFunc(idle); - lastX = lastY = -1; - curX = xpos; - curY = ypos; - return; - } else { - glutIdleFunc(0); - } -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if (key == 27) exit(0); -} - -void -show_usage(void) -{ - fprintf(stderr, "Usage:\n"); - fprintf(stderr, "paint [imagefile0] [imagefile1] [brush]\n"); -} - -main(int argc, char *argv[]) -{ - const char *fileName0 = defaultFile0, *fileName1 = defaultFile1, - *brushName = defaultBrushFile; - - glutInit(&argc, argv); - if (argc > 1) { - fileName0 = argv[1]; - } - if (argc > 2) { - fileName1 = argv[2]; - } - if (argc > 3) { - brushName = argv[3]; - } - if (argc > 4) { - show_usage(); - exit(1); - } - printf("Image file 1 is %s\n", fileName0); - printf("Image file 2 is %s\n", fileName1); - printf("Brush file is %s\n", brushName); - - img0 = load_img(fileName0, &w0, &h0); - img1 = load_img(fileName1, &w1, &h1); - brush = load_img(brushName, &wbrush, &hbrush); - brush = convert_to_luminance(brush, wbrush, hbrush); - -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - w = MAX(w0, w1); - h = MAX(h0, h1); - - glutInitWindowSize(w, h); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(button); - glutMotionFunc(motion); - init(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/paint.dsp b/lib/glut-3.7.6/progs/advanced97/paint.dsp deleted file mode 100644 index adc57ccbc24505eea89583cfd788bbd3833df949..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/paint.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="paint" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=paint - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "paint.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "paint.mak" CFG="paint - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "paint - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "paint - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "paint - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "paint - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "paint - Win32 Release" -# Name "paint - Win32 Debug" -# Begin Source File - -SOURCE=.\paint.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/projtex.c b/lib/glut-3.7.6/progs/advanced97/projtex.c deleted file mode 100644 index 9fd8f2ea118e2d152b668e5845ca04ab9c6311cd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/projtex.c +++ /dev/null @@ -1,837 +0,0 @@ -/* -** Demonstrates simple projective texture mapping. -** -** Button1 changes view, Button2 moves texture. -** -** (See: Segal, Korobkin, van Widenfelt, Foran, and Haeberli -** "Fast Shadows and Lighting Effects Using Texture Mapping", SIGGRAPH '92) -** -** 1994,1995 -- David G Yu -** -** cc -o projtex projtex.c texture.c -lglut -lGLU -lGL -lX11 -lm -*/ -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -int winWidth, winHeight; - -GLboolean redrawContinuously; - -float angle, axis[3]; -enum MoveModes { MoveNone, MoveView, MoveObject, MoveTexture }; -enum MoveModes mode = MoveNone; - -GLfloat objectXform[4][4]; -GLfloat textureXform[4][4]; - -void (*drawObject)(void); -void (*loadTexture)(void); -GLboolean textureEnabled = GL_TRUE; -GLboolean showProjection = GL_TRUE; -GLboolean linearFilter = GL_TRUE; - -char *texFilename = NULL; - -GLfloat zoomFactor = 1.0; - -/*****************************************************************/ - -/* matrix = identity */ -void -matrixIdentity(GLfloat matrix[16]) -{ - matrix[ 0] = 1.0; - matrix[ 1] = 0.0; - matrix[ 2] = 0.0; - matrix[ 3] = 0.0; - matrix[ 4] = 0.0; - matrix[ 5] = 1.0; - matrix[ 6] = 0.0; - matrix[ 7] = 0.0; - matrix[ 8] = 0.0; - matrix[ 9] = 0.0; - matrix[10] = 1.0; - matrix[11] = 0.0; - matrix[12] = 0.0; - matrix[13] = 0.0; - matrix[14] = 0.0; - matrix[15] = 1.0; -} - -/* matrix2 = transpose(matrix1) */ -void -matrixTranspose(GLfloat matrix2[16], GLfloat matrix1[16]) -{ - matrix2[ 0] = matrix1[ 0]; - matrix2[ 1] = matrix1[ 4]; - matrix2[ 2] = matrix1[ 8]; - matrix2[ 3] = matrix1[12]; - - matrix2[ 4] = matrix1[ 1]; - matrix2[ 5] = matrix1[ 5]; - matrix2[ 6] = matrix1[ 9]; - matrix2[ 7] = matrix1[13]; - - matrix2[ 8] = matrix1[ 2]; - matrix2[ 9] = matrix1[ 6]; - matrix2[10] = matrix1[10]; - matrix2[11] = matrix1[14]; - - matrix2[12] = matrix1[ 3]; - matrix2[13] = matrix1[ 7]; - matrix2[14] = matrix1[14]; - matrix2[15] = matrix1[15]; -} - -/*****************************************************************/ - -/* load SGI .rgb image (pad with a border of the specified width and color) */ -static void -imgLoad(char *filenameIn, int borderIn, GLfloat borderColorIn[4], - int *wOut, int *hOut, GLubyte **imgOut) -{ - int border = borderIn; - int width, height; - int w, h; - GLubyte *image, *img, *p; - int i, j, components; - - image = (GLubyte *)read_texture(filenameIn, &width, &height, &components); - w = width + 2*border; - h = height + 2*border; - img = (GLubyte *) calloc(w*h, 4*sizeof(unsigned char)); - - p = img; - for (j=-border; j 1.0) { - glDisable(GL_DEPTH_TEST); - glCopyPixels(0, 0, winWidth/zoomFactor, winHeight/zoomFactor, GL_COLOR); - glEnable(GL_DEPTH_TEST); - } - glFlush(); - glutSwapBuffers(); - checkErrors(); -} - -/*****************************************************************/ - -/* simple trackball-like motion control */ -GLboolean trackingMotion = GL_FALSE; -float lastPos[3]; -int lastTime; - -void -ptov(int x, int y, int width, int height, float v[3]) -{ - float d, a; - - /* project x,y onto a hemi-sphere centered within width, height */ - v[0] = (2.0*x - width) / width; - v[1] = (height - 2.0*y) / height; - d = sqrt(v[0]*v[0] + v[1]*v[1]); - v[2] = cos((M_PI/2.0) * ((d < 1.0) ? d : 1.0)); - a = 1.0 / sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - v[0] *= a; - v[1] *= a; - v[2] *= a; -} - -void -startMotion(int x, int y, int but, int time) -{ - if (but == GLUT_LEFT_BUTTON) { - mode = MoveView; - } else if (but == GLUT_RIGHT_BUTTON) { - mode = MoveTexture; - } else { - return; - } - - trackingMotion = GL_TRUE; - redrawContinuously = GL_FALSE; - lastTime = time; - ptov(x, y, winWidth, winHeight, lastPos); -} - -/*ARGSUSED*/ -void -stopMotion(int x, int y, int but, int time) -{ - if ((but == GLUT_LEFT_BUTTON && mode == MoveView) || - (but == GLUT_RIGHT_BUTTON && mode == MoveTexture)) - { - trackingMotion = GL_FALSE; - } else { - return; - } - - if (time == lastTime) { - redrawContinuously = GL_TRUE; - glutIdleFunc(display); - } else { - angle = 0.0; - redrawContinuously = GL_FALSE; - glutIdleFunc(0); - } - if (!redrawContinuously) { - mode = MoveNone; - } -} - -void -trackMotion(int x, int y) -{ - if (trackingMotion) { - float curPos[3], dx, dy, dz; - - ptov(x, y, winWidth, winHeight, curPos); - - dx = curPos[0] - lastPos[0]; - dy = curPos[1] - lastPos[1]; - dz = curPos[2] - lastPos[2]; - angle = 90.0 * sqrt(dx*dx + dy*dy + dz*dz); - - axis[0] = lastPos[1]*curPos[2] - lastPos[2]*curPos[1]; - axis[1] = lastPos[2]*curPos[0] - lastPos[0]*curPos[2]; - axis[2] = lastPos[0]*curPos[1] - lastPos[1]*curPos[0]; - - lastTime = glutGet(GLUT_ELAPSED_TIME); - lastPos[0] = curPos[0]; - lastPos[1] = curPos[1]; - lastPos[2] = curPos[2]; - glutPostRedisplay(); - } -} - -/*****************************************************************/ - -void -object(void) -{ - static int object; - object++; object %= 3; - switch (object) { - case 0: - drawObject = drawCube; - break; - case 1: - drawObject = drawDodecahedron; - break; - case 2: - drawObject = drawSphere; - break; - default: - break; - } -} - -void -texture(void) -{ - static int texture; - - texture++; texture %= 3; - switch (texture) { - case 0: - loadTexture = NULL; - textureEnabled = GL_FALSE; - break; - case 1: - loadTexture = loadImageTexture; - (*loadTexture)(); - textureEnabled = GL_TRUE; - break; - case 2: - loadTexture = loadSpotlightTexture; - (*loadTexture)(); - textureEnabled = GL_TRUE; - break; - default: - break; - } -} - -void help(void) { - printf("'h' - help\n"); - printf("'l' - toggle linear/nearest filter\n"); - printf("'s' - toggle projection frustum\n"); - printf("'t' - toggle projected texture\n"); - printf("'o' - toggle object\n"); - printf("'z' - increase zoom factor\n"); - printf("'Z' - decrease zoom factor\n"); - printf("left mouse - move view\n"); - printf("right mouse - move projection\n"); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case '\033': - exit(EXIT_SUCCESS); - break; - case 'l': - linearFilter = !linearFilter; - (*loadTexture)(); - break; - case 's': - showProjection = !showProjection; - break; - case 't': - texture(); - break; - case 'o': - object(); - break; - case 'z': - zoomFactor += 1.0; - glPixelZoom(zoomFactor, zoomFactor); - glViewport(0, 0, winWidth/zoomFactor, winHeight/zoomFactor); - break; - case 'Z': - zoomFactor -= 1.0; - if (zoomFactor < 1.0) zoomFactor = 1.0; - glPixelZoom(zoomFactor, zoomFactor); - glViewport(0, 0, winWidth/zoomFactor, winHeight/zoomFactor); - break; - case 'h': help(); break; - } - glutPostRedisplay(); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) - startMotion(x, y, button, glutGet(GLUT_ELAPSED_TIME)); - else if (state == GLUT_UP) - stopMotion(x, y, button, glutGet(GLUT_ELAPSED_TIME)); - glutPostRedisplay(); -} - -void -reshape(int w, int h) -{ - winWidth = w; - winHeight = h; - glViewport(0, 0, w/zoomFactor, h/zoomFactor); -} - -void -usage(char **argv) -{ - fprintf(stderr, "usage: %s \n", argv[0]); - fprintf(stderr, "\n"); -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE); - (void)glutCreateWindow("projtex"); - if (argc > 1) { - texFilename = argv[argc-1]; - } else { - texFilename = "../data/fendi.rgb"; - } - loadTexture = loadImageTexture; - drawObject = drawCube; - initialize(); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(trackMotion); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/projtex.dsp b/lib/glut-3.7.6/progs/advanced97/projtex.dsp deleted file mode 100644 index ed88e0922fe09bcdb670391268430c6a7cb6f34c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/projtex.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="projtex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=projtex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "projtex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "projtex.mak" CFG="projtex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "projtex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "projtex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "projtex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "projtex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "projtex - Win32 Release" -# Name "projtex - Win32 Debug" -# Begin Source File - -SOURCE=.\projtex.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/sbias.c b/lib/glut-3.7.6/progs/advanced97/sbias.c deleted file mode 100644 index e0e1fe7a763f9310a993f62c17cfc741f2a9540d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/sbias.c +++ /dev/null @@ -1,192 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -static char defaultFile[] = "../data/mandrill.rgb"; -GLuint *img; -GLsizei w, h; -GLint comp; - -GLfloat scale[] = {1, 1, 1}, bias[] = {0, 0, 0}; -GLboolean changeScale = 1, changeBias = 1; -GLboolean changeR = 1, changeG = 1, changeB = 1; - -void init(void) -{ - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_BACK); -} - -void load_img(const char *fname) -{ - img = read_texture(fname, &w, &h, &comp); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } -} - -void reshape(GLsizei winW, GLsizei winH) -{ - glViewport(0, 0, w, h); - glLoadIdentity(); - glOrtho(0, winW, 0, winH, 0, 5); -} - -void draw(void) -{ - GLenum err; - - glPixelTransferf(GL_RED_SCALE, 1); - glPixelTransferf(GL_GREEN_SCALE, 1); - glPixelTransferf(GL_BLUE_SCALE, 1); - glPixelTransferf(GL_RED_BIAS, 0); - glPixelTransferf(GL_GREEN_BIAS, 0); - glPixelTransferf(GL_BLUE_BIAS, 0); - - glClear(GL_COLOR_BUFFER_BIT); - glDrawBuffer(GL_BACK); - glRasterPos2i(0, 0); - glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, img); - - - glPixelTransferf(GL_RED_SCALE, scale[0]); - glPixelTransferf(GL_GREEN_SCALE, scale[1]); - glPixelTransferf(GL_BLUE_SCALE, scale[2]); - glPixelTransferf(GL_RED_BIAS, bias[0]); - glPixelTransferf(GL_GREEN_BIAS, bias[1]); - glPixelTransferf(GL_BLUE_BIAS, bias[2]); - glDrawBuffer(GL_FRONT); - glCopyPixels(0, 0, w, h, GL_COLOR); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - char change[][30] = {"Not changing", "Changing"}; - - switch(key) { - case 27: - exit(0); - case 's': case 'S': - changeScale = (changeScale == 0); - printf("%s scale\n", change[changeScale]); - break; - case 'i': case 'I': - changeBias = (changeBias == 0); - printf("%s bias\n", change[changeBias]); - break; - case 'r': case 'R': - changeR = (changeR == 0); - printf("%s red channel\n", change[changeR]); - break; - case 'g': case 'G': - changeG = (changeG == 0); - printf("%s green channel\n", change[changeG]); - break; - case 'b': case 'B': - changeB = (changeB == 0); - printf("%s blue channel\n", change[changeB]); - break; - case ' ': - changeScale = changeBias = changeR = changeG = changeB = 1; - scale[0] = scale[1] = scale[2] = 1; - bias[0] = bias[1] = bias[2] = 0; - printf("Resetting all\n"); - draw(); - break; - case '?': - printf("Scale:\n"); - printf("\tR: %f\n", scale[0]); - printf("\tG: %f\n", scale[1]); - printf("\tB: %f\n", scale[2]); - printf("Bias:\n"); - printf("\tR: %f\n", bias[0]); - printf("\tG: %f\n", bias[1]); - printf("\tB: %f\n\n", bias[2]); - } -} - -int lastX, lastY, curX, curY; - -void idle(void) -{ - float dScale, dBias; - - if (lastX != curX || lastY != curY) { - if (changeScale) { - dScale = (curX - lastX) / (float)w; - if (changeR) scale[0] += dScale; - if (changeG) scale[1] += dScale; - if (changeB) scale[2] += dScale; - } - if (changeBias) { - dBias = (curY - lastY) / (float)h; - if (changeR) bias[0] += dBias; - if (changeG) bias[1] += dBias; - if (changeB) bias[2] += dBias; - } - - glPixelTransferf(GL_RED_SCALE, scale[0]); - glPixelTransferf(GL_GREEN_SCALE, scale[1]); - glPixelTransferf(GL_BLUE_SCALE, scale[2]); - glPixelTransferf(GL_RED_BIAS, bias[0]); - glPixelTransferf(GL_GREEN_BIAS, bias[1]); - glPixelTransferf(GL_BLUE_BIAS, bias[2]); - - glRasterPos2i(0, 0); - glCopyPixels(0, 0, w, h, GL_COLOR); - - lastX = curX; - lastY = curY; - } -} - -void motion(int xpos, int ypos) -{ - curX = xpos; - curY = (h - ypos); -} - -/* ARGSUSED */ -void button(int button, int state, int xpos, int ypos) -{ - if (state == GLUT_DOWN) { - glutIdleFunc(idle); - curX = lastX = xpos; - curY = lastY = (h - ypos); - return; - } else { - glutIdleFunc(0); - } -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - if (argc > 1) { - load_img(argv[1]); - } else { - load_img(defaultFile); - } - glutInitWindowSize(w, h); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutMouseFunc(button); - glutMotionFunc(motion); - init(); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/sbias.dsp b/lib/glut-3.7.6/progs/advanced97/sbias.dsp deleted file mode 100644 index 4b82758a23afdd6660a5715ddc195d782ffff428..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/sbias.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sbias" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sbias - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sbias.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sbias.mak" CFG="sbias - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sbias - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sbias - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sbias - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sbias - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sbias - Win32 Release" -# Name "sbias - Win32 Debug" -# Begin Source File - -SOURCE=.\sbias.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/screendoor.c b/lib/glut-3.7.6/progs/advanced97/screendoor.c deleted file mode 100644 index 64575d53af10d469aa9e05e3cd95df5b530cb10b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/screendoor.c +++ /dev/null @@ -1,194 +0,0 @@ -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -#define trunc(x) ((double)((int)(x))) -#endif - -#ifdef _WIN32 -#define random() ((long)rand() + (rand() << 15) + (rand() << 30)) -#endif - -GLUquadricObj *cone, *base, *qsphere; - -void create_stipple_pattern(GLuint *pat, GLfloat opacity) -{ - int x, y; - long threshold = (float)0x7fffffff * (1. - opacity); - - for (y = 0; y < 32; y++) { - pat[y] = 0; - for (x = 0; x < 32; x++) { - if (random() > threshold) pat[y] |= (1 << x); - } - } -} - -void init(void) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - GLuint spherePattern[32]; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - cone = gluNewQuadric(); - base = gluNewQuadric(); - qsphere = gluNewQuadric(); - gluQuadricOrientation(base, GLU_INSIDE); - - create_stipple_pattern(spherePattern, .5); - glPolygonStipple((GLubyte *)spherePattern); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 2.577, 0, 0, -5, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, -1, 1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, 1, -1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - glEnd(); -} - -void draw_cone(void) -{ - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -1, 0); - glRotatef(-90, 1, 0, 0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluCylinder(cone, .3, 0, 1.25, 20, 1); - gluDisk(base, 0., .3, 20, 1); - - glPopMatrix(); -} - -void draw_sphere(GLdouble angle) -{ - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - - glPushMatrix(); - glTranslatef(0, -.3, 0); - glRotatef(angle, 0, 1, 0); - glTranslatef(0, 0, .6); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(qsphere, .3, 20, 20); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw(void) -{ - GLenum err; - GLdouble secs; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - draw_room(); - draw_cone(); - secs = get_secs(); - - /* draw the transparent object... */ - glEnable(GL_POLYGON_STIPPLE); - draw_sphere(secs * 360. / 10.); - glDisable(GL_POLYGON_STIPPLE); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - if (key == 27) exit(0); -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(256, 256); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/screendoor.dsp b/lib/glut-3.7.6/progs/advanced97/screendoor.dsp deleted file mode 100644 index ef9450d917fe34695a357025a16ea0fc7593ab0d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/screendoor.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="screendoor" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=screendoor - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "screendoor.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "screendoor.mak" CFG="screendoor - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "screendoor - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "screendoor - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "screendoor - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "screendoor - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "screendoor - Win32 Release" -# Name "screendoor - Win32 Debug" -# Begin Source File - -SOURCE=.\screendoor.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/sm.c b/lib/glut-3.7.6/progs/advanced97/sm.c deleted file mode 100644 index 7f214a60b7fb2f34a6c5cf09f9e983f107dd83a8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/sm.c +++ /dev/null @@ -1,112 +0,0 @@ -#include "stdlib.h" -#include "math.h" -#include -#include "sm.h" - -#ifdef _WIN32 -#define drand48() ((double)rand()/RAND_MAX) -#define srand48(x) (srand((x))) -#endif - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - -typedef struct elem { - float x, y, z; /* current position */ - float dx, dy, dz; /* displacement */ - float size; /* scale factor */ - float ts; /* time stamp */ - float opacity; /* alpha value */ -} elem_t; - -typedef struct smoke { - float ox, oy, oz; /* origin */ - float dx, dy, dz; /* drift */ - int elems; - float intensity; - float min_size; - float max_size; - unsigned texture; - elem_t *elem; -} smoke_t; - -void * -new_smoke(float x, float y, float z, float dx, float dy, float dz, - int elems, float intensity, unsigned texture) { - int i; - smoke_t *s = malloc(sizeof(smoke_t)); - - s->ox = x; s->oy = y, s->oz = z; - s->dx = dx; s->dy = dy; s->dz = dz; - s->min_size = .1f; - s->max_size = 1.0; - s->elems = elems; - s->elem = malloc(sizeof(elem_t)*elems); - for(i = 0; i < elems; i++) { - s->elem[i].ts = (float)i/elems;; - s->elem[i].dx = -drand48()*1.5f; - s->elem[i].dy = drand48()*1.5f; - s->elem[i].dz = drand48()*1.5f; - } - s->intensity = intensity; - s->texture = texture; - return s; -} - -void -delete_smoke(void *smoke) { - smoke_t *s = smoke; - free(s->elem); - free(s); -} - -void -draw_smoke(void *smoke) { - smoke_t *s = smoke; - int i; - - glEnable(GL_BLEND); - glDepthMask(0); -#if 1 - glEnable(GL_TEXTURE_2D); -#else - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); -#endif - glBindTexture(GL_TEXTURE_2D, s->texture); - for(i = 0; i < s->elems; i++) { - elem_t *e = s->elem+i; - glPushMatrix(); - glTranslatef(e->x, e->y, e->z); - glScalef(e->size, e->size, 1.); - glColor4f(s->intensity,s->intensity,s->intensity,e->opacity); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1., -1., -0.); - glTexCoord2f(0, 1); glVertex3f(-1., 1., 0.); - glTexCoord2f(1, 1); glVertex3f( 1., 1., 0.); - glTexCoord2f(1, 0); glVertex3f( 1., -1., -0.); - glEnd(); - glPopMatrix(); - } - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glDisable(GL_TEXTURE_2D); - glDepthMask(1); - glDisable(GL_BLEND); -} - -void -update_smoke(void *smoke, float tick) { - smoke_t *s = smoke; - int i; - - for(i = 0; i < s->elems; i++) { - elem_t *e = s->elem+i; - e->ts += tick; - if (e->ts > 1.0) e->ts = 0; - e->x = s->ox + s->dx*e->ts + e->dx*e->ts; - e->y = s->oy + s->dy*e->ts + e->dy*e->ts; - e->z = s->oz + s->dz*e->ts + e->dz*e->ts; - e->size = s->min_size + e->ts*s->max_size; - e->opacity = (1.0-e->ts); - } -} diff --git a/lib/glut-3.7.6/progs/advanced97/sm.h b/lib/glut-3.7.6/progs/advanced97/sm.h deleted file mode 100644 index ae7eb30f6ab3c780cb1717df7716a722ec4fbc62..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/sm.h +++ /dev/null @@ -1,5 +0,0 @@ -void* new_smoke(float x, float y, float z, float dx, float dy, float dz, - int elems, float intensity, unsigned texture); -void delete_smoke(void *smoke); -void draw_smoke(void *smoke); -void update_smoke(void *smoke, float tick); diff --git a/lib/glut-3.7.6/progs/advanced97/smoke.c b/lib/glut-3.7.6/progs/advanced97/smoke.c deleted file mode 100644 index 5e8874b72e049d7147f703276d035c9bbcb417fa..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/smoke.c +++ /dev/null @@ -1,397 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -/* Most math.h's do not define float versions of the trig functions. */ -#define sinf sin -#define cosf cos -#define atan2f atan2 -#endif - -static int texture = 1; -static float rot = 0; -static float opacity = 1.0; -static float intensity = 1.0; -static float size = .001, delta = 0; -static float scale = 1.; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void afunc(void) { - static int state; - if (state ^= 1) { - glAlphaFunc(GL_GREATER, .01); - glEnable(GL_ALPHA_TEST); - } else { - glDisable(GL_ALPHA_TEST); - } -} - -void bfunc(void) { - static int state; - if (state ^= 1) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } else { - glDisable(GL_BLEND); - } -} - -void tfunc(void) { - texture ^= 1; -} - -void up(void) { scale += .1; } -void down(void) { scale -= .1; } -void left(void) { intensity -= .05f; if (intensity < 0.f) intensity = 0.0f; } -void right(void) { intensity += .05f; if (intensity > 1.f) intensity = 1.0f; } - -void help(void) { - printf("Usage: smoke [image]\n"); - printf("'h' - help\n"); - printf("'a' - toggle alpha test\n"); - printf("'b' - toggle blend\n"); - printf("'t' - toggle texturing\n"); - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("'LEFT' - darken\n"); - printf("'RIGHT' - brighten\n"); - printf("left mouse - pan\n"); - printf("right mouse - rotate\n"); -} - -void init(char *filename) { - static unsigned *image; - static int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } -#if 0 - if (components == 1) { - GLubyte *p = (GLubyte *)image; - int i; - for (i = 0; i < width*height; i++) { - p[i*4+3] = p[i*4+0]; - } - components = 2; - } -#endif - if (components != 2 && components != 4) { - printf("must be an RGBA or LA image\n"); - exit(EXIT_FAILURE); - } - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 512; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if (i & 32) - img[4*(i+j*width)+0] = 0xff; - else - img[4*(i+j*width)+1] = 0xff; - if (j&32) - img[4*(i+j*width)+2] = 0xff; - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,20.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - glClearColor(.25f, .25f, .75f, .25f); - - glAlphaFunc(GL_GREATER, 0.016); - glEnable(GL_ALPHA_TEST); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - glEnable(GL_NORMALIZE); -} - -void -animate(void) { - if (delta > 8) { - delta = 0.f; - size = 0.f; - opacity = 1.f; - rot = 0.f; - } - size += .02f; - delta += .03f; - rot += .9f; - opacity -= .005f; - - glutPostRedisplay(); -} - -void -cube(void) { - glBegin(GL_QUADS); - glNormal3f(0.f, 0.f, -1.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - - glNormal3f(0.f, 0.f, 1.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - - glNormal3f(0.f, -1.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); - - glNormal3f( 1.f, 0.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, 1.0); - - glNormal3f(-1.f, 0.f, 0.f); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); - glEnd(); -} -static void calcMatrix(void); - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glLoadIdentity(); -#define RAD(x) (((x)*M_PI)/180.) - gluLookAt(-sinf(RAD(rotx))*5.5,transy,cosf(RAD(rotx))*5.5, 0.,0.,0., 0.,1.,0.); - - /* floor */ - glColor4f(0.f,.2f,0.f,1.f); - glBegin(GL_POLYGON); - glVertex3f(-4.0, -1.0, -4.0); - glVertex3f( 4.0, -1.0, -4.0); - glVertex3f( 4.0, -1.0, 4.0); - glVertex3f(-4.0, -1.0, 4.0); - glEnd(); - - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_LIGHTING); - glColor3f(.3f,.3f,.3f); - glPushMatrix(); - glTranslatef(-1.f, -1.+.2f, -1.5f); - glScalef(.2f,.2f, .2f); - cube(); - glDisable(GL_LIGHTING); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(delta/2.f-1.f, delta-1.f, -1.5f); - calcMatrix(); - glScalef(size,size,1.); - if (texture) glEnable(GL_TEXTURE_2D); - glColor4f(intensity, intensity, intensity, opacity); - glRotatef(rot, 0., 0., 1.); - glDepthMask(0); - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0); - glEnd(); - glDepthMask(1); - glPopMatrix(); - glDisable(GL_TEXTURE_2D); - - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'a': afunc(); break; - case 'b': bfunc(); break; - case 'h': help(); break; - case 't': tfunc(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - case GLUT_KEY_LEFT: left(); break; - case GLUT_KEY_RIGHT:right(); break; - } -} - -int main(int argc, char** argv) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow("smoke"); - init(argc == 1 ? "../data/smoke.bw" : argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} - -void -printmat(float *m) { - int i; - for(i = 0; i < 4; i++) { - printf("%f %f %f %f\n", m[4*i+0], m[4*i+1], m[4*i+2], m[4*i+3]); - } -} - -void -buildRot(float theta, float x, float y, float z, float m[16]) { - float d = x*x + y*y + z*z; - float ct = cosf(RAD(theta)), st = sinf(RAD(theta)); - - /* normalize */ - if (d > 0) { - d = 1/d; - x *= d; - y *= d; - z *= d; - } - - m[ 0] = 1; m[ 1] = 0; m[ 2] = 0; m[ 3] = 0; - m[ 4] = 0; m[ 5] = 1; m[ 6] = 0; m[ 7] = 0; - m[ 8] = 0; m[ 9] = 0; m[10] = 1; m[11] = 0; - m[12] = 0; m[13] = 0; m[14] = 0; m[15] = 1; - - /* R = uu' + cos(theta)*(I-uu') + sin(theta)*S - * - * S = 0 -z y u' = (x, y, z) - * z 0 -x - * -y x 0 - */ - - m[0] = x*x + ct*(1-x*x) + st*0; - m[4] = x*y + ct*(0-x*y) + st*-z; - m[8] = x*z + ct*(0-x*z) + st*y; - - m[1] = y*x + ct*(0-y*x) + st*z; - m[5] = y*y + ct*(1-y*y) + st*0; - m[9] = y*z + ct*(0-y*z) + st*-x; - - m[2] = z*x + ct*(0-z*x) + st*-y; - m[6] = z*y + ct*(0-z*y) + st*x; - m[10]= z*z + ct*(1-z*z) + st*0; -} - -static void -calcMatrix(void) { - float mat[16]; - - glGetFloatv(GL_MODELVIEW_MATRIX, mat); - - buildRot(-180*atan2f(mat[8], mat[10])/M_PI, 0, 1, 0, mat); - glMultMatrixf(mat); -} diff --git a/lib/glut-3.7.6/progs/advanced97/smoke.dsp b/lib/glut-3.7.6/progs/advanced97/smoke.dsp deleted file mode 100644 index f1de91b747cd07c1761455a54a54eb40065805e9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/smoke.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="smoke" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=smoke - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "smoke.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "smoke.mak" CFG="smoke - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "smoke - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "smoke - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "smoke - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "smoke - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "smoke - Win32 Release" -# Name "smoke - Win32 Debug" -# Begin Source File - -SOURCE=.\smoke.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/softshadow2.c b/lib/glut-3.7.6/progs/advanced97/softshadow2.c deleted file mode 100644 index d791e70fb4400e82d87859d899bd8f491c36a912..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/softshadow2.c +++ /dev/null @@ -1,632 +0,0 @@ - -/* softshadow2.c - by Simon Hui, 3Dfx Interactive */ - -/* Soft shadows using a shadow texture per polygon. Based on an algorithm */ -/* described by Paul Heckbert and Michael Herf of CMU; see their web site */ -/* http://www.cs.cmu.edu/ph/shadow.html for details. */ -/* */ -/* This program shows two methods of using precomputed, per-polygon textures */ -/* to display soft shadows. The first method is a simplified version of */ -/* Heckbert and Herf's algorithm: for each polygon a texture is created that */ -/* encodes the full radiance, including illumination and shadows, of the */ -/* polygon. The texture is created in a preprocessing step by rendering the */ -/* entire scene onto the polygon from the point of view of the light. The */ -/* advantage of this method is that the scene can be rerendered quickly (if */ -/* only the eye moves and the scene is static), since all lighting effects */ -/* have been precomputed and encoded in the texture. This method requires */ -/* GL_RGB textures. */ -/* */ -/* The second method uses the texture as an occlusion map: the texels */ -/* encode only the amount of occlusion by shadowing objects, not the full */ -/* radiance. The texture is then used to modulate the lighting of the */ -/* polygon during the rendering pass. This has the disadvantage of */ -/* requiring OpenGL lighting during scene rendering, but it does retain some */ -/* of the benefit of the first method in that all shadow effects are */ -/* precomputed. This method requires GL_LUMINANCE textures. */ -/* */ -/* The reason for including the occlusion map method is that some OpenGL */ -/* implementations support GL_RGB textures with low color resolution, */ -/* resulting in noticeable banding when using radiance maps. However, these */ -/* implementations may support a higher color resolution for GL_LUMINANCE */ -/* textures. */ -/* */ -/* To use occlusion maps instead of rediance maps, run this program with */ -/* "-o" on the command line. */ - -#include -#include -#include -#include - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#define glCopyTexImage2D glCopyTexImage2DEXT -#endif - -/* whether to use radiance maps or occlusion maps */ -static GLboolean radianceMap = GL_TRUE; - -static GLint winxsize = 480, winysize = 480; -static GLint texxsize = 128, texysize = 128; - -/* texture object names */ -const GLuint floorTexture = 1; -const GLuint shadowTextures = 2; - -static GLfloat lightpos[4] = { 70.f, 70.f, -320.f, 1.f }; - -/* number of shadow textures to make and use */ -static GLint numShadowTex; - -/* list of polygons that have shadow textures */ -GLfloat pts[][4][3] = { - /* floor */ - -100.f, -100.f, -320.f, - -100.f, -100.f, -520.f, - 100.f, -100.f, -320.f, - 100.f, -100.f, -520.f, - - /* left wall */ - -100.f, -100.f, -320.f, - -100.f, 100.f, -320.f, - -100.f, -100.f, -520.f, - -100.f, 100.f, -520.f, - - /* back wall */ - -100.f, -100.f, -520.f, - -100.f, 100.f, -520.f, - 100.f, -100.f, -520.f, - 100.f, 100.f, -520.f, - - /* right wall */ - 100.f, -100.f, -520.f, - 100.f, 100.f, -520.f, - 100.f, -100.f, -320.f, - 100.f, 100.f, -320.f, - - /* ceiling */ - -100.f, 100.f, -520.f, - -100.f, 100.f, -320.f, - 100.f, 100.f, -520.f, - 100.f, 100.f, -320.f, - - /* blue panel */ - -60.f, -40.f, -400.f, - -60.f, 70.f, -400.f, - -30.f, -40.f, -480.f, - -30.f, 70.f, -480.f, - - /* yellow panel */ - -40.f, -50.f, -400.f, - -40.f, 50.f, -400.f, - -10.f, -50.f, -450.f, - -10.f, 50.f, -450.f, - - /* red panel */ - -20.f, -60.f, -400.f, - -20.f, 30.f, -400.f, - 10.f, -60.f, -420.f, - 10.f, 30.f, -420.f, - - /* green panel */ - 0.f, -70.f, -400.f, - 0.f, 10.f, -400.f, - 30.f, -70.f, -395.f, - 30.f, 10.f, -395.f, -}; - -GLfloat materials[][4] = { - 1.0f, 1.0f, 1.0f, 1.0f, /* floor */ - 1.0f, 1.0f, 1.0f, 1.0f, /* left wall */ - 1.0f, 1.0f, 1.0f, 1.0f, /* back wall */ - 1.0f, 1.0f, 1.0f, 1.0f, /* right wall */ - 1.0f, 1.0f, 1.0f, 1.0f, /* ceiling */ - 0.2f, 0.5f, 1.0f, 1.0f, /* blue panel */ - 1.0f, 0.6f, 0.0f, 1.0f, /* yellow panel */ - 1.0f, 0.2f, 0.2f, 1.0f, /* red panel */ - 0.3f, 0.9f, 0.6f, 1.0f, /* green panel */ -}; - -/* some simple vector utility routines */ - -void -vcopy(GLfloat a[3], GLfloat b[3]) -{ - b[0] = a[0]; - b[1] = a[1]; - b[2] = a[2]; -} - -void -vnormalize(GLfloat v[3]) -{ - float m = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - v[0] /= m; - v[1] /= m; - v[2] /= m; -} - -void -vadd(GLfloat a[3], GLfloat b[3], GLfloat c[3]) -{ - c[0] = a[0] + b[0]; - c[1] = a[1] + b[1]; - c[2] = a[2] + b[2]; -} - -void -vsub(GLfloat a[3], GLfloat b[3], GLfloat c[3]) -{ - c[0] = a[0] - b[0]; - c[1] = a[1] - b[1]; - c[2] = a[2] - b[2]; -} - -void -vcross(GLfloat a[3], GLfloat b[3], GLfloat c[3]) -{ - c[0] = a[1] * b[2] - a[2] * b[1]; - c[1] = -(a[0] * b[2] - a[2] * b[0]); - c[2] = a[0] * b[1] - a[1] * b[0]; -} - -float -vdot(GLfloat a[3], GLfloat b[3]) -{ - return (a[0]*b[0] + a[1]*b[1] + a[2]*b[2]); -} - -void -findNormal(GLfloat pts[][3], GLfloat normal[3]) { - GLfloat a[3], b[3]; - - vsub(pts[1], pts[0], a); - vsub(pts[2], pts[0], b); - vcross(b, a, normal); - vnormalize(normal); -} - -static GLfloat origin[4] = { 0.f, 0.f, 0.f, 1.f }; -static GLfloat black[4] = { 0.f, 0.f, 0.f, 1.f }; -static GLfloat ambient[4] = { 0.2f, 0.2f, 0.2f, 1.f }; - -void -make_shadow_texture(int index, GLfloat eyept[3], GLfloat dx, GLfloat dy) -{ - GLfloat xaxis[3], yaxis[3], zaxis[3]; - GLfloat cov[3]; /* center of view */ - GLfloat pte[3]; /* plane to eye */ - GLfloat eye[3]; - GLfloat tmp[3], normal[3], dist; - GLfloat (*qpts)[3] = pts[index]; - GLfloat left, right, bottom, top; - GLfloat znear = 10.f, zfar = 600.f; - GLint n; - - /* For simplicity, we don't compute the transformation matrix described */ - /* in Heckbert and Herf's paper. The transformation and frustum used */ - /* here is much simpler. */ - - vcopy(eyept, eye); - vsub(qpts[1], qpts[0], yaxis); - vsub(qpts[2], qpts[0], xaxis); - vcross(yaxis, xaxis, zaxis); - - vnormalize(zaxis); - vnormalize(xaxis); /* x-axis of eye coord system, in object space */ - vnormalize(yaxis); /* y-axis of eye coord system, in object space */ - - /* jitter the eyepoint */ - eye[0] += xaxis[0] * dx; - eye[1] += xaxis[1] * dx; - eye[2] += xaxis[2] * dx; - eye[0] += yaxis[0] * dy; - eye[1] += yaxis[1] * dy; - eye[2] += yaxis[2] * dy; - - /* center of view is just eyepoint offset in direction of normal */ - vadd(eye, zaxis, cov); - - /* set up viewing matrix */ - glPushMatrix(); - glLoadIdentity(); - gluLookAt(eye[0], eye[1], eye[2], - cov[0], cov[1], cov[2], - yaxis[0], yaxis[1], yaxis[2]); - - /* compute a frustum that just encloses the polygon */ - vsub(qpts[0], eye, tmp); /* from eye to 0th vertex */ - left = vdot(tmp, xaxis); - vsub(qpts[2], eye, tmp); /* from eye to 2nd vertex */ - right = vdot(tmp, xaxis); - vsub(qpts[0], eye, tmp); /* from eye to 0th vertex */ - bottom = vdot(tmp, yaxis); - vsub(qpts[1], eye, tmp); /* from eye to 1st vertex */ - top = vdot(tmp, yaxis); - - /* scale the frustum values based on the distance to the polygon */ - vsub(qpts[0], eye, pte); - dist = fabs(vdot(zaxis, pte)); - left *= (znear/dist); - right *= (znear/dist); - bottom *= (znear/dist); - top *= (znear/dist); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glFrustum(left, right, bottom, top, znear, zfar); - glMatrixMode(GL_MODELVIEW); - - if (radianceMap) { - glEnable(GL_LIGHTING); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, materials[index]); - } else { - glDisable(GL_LIGHTING); - } - glDisable(GL_TEXTURE_2D); - - for (n=0; n < numShadowTex; n++) { - qpts = pts[n]; - - if (radianceMap) { - glColor3f(1.f, 1.f, 1.f); - findNormal(qpts, normal); - glNormal3fv(normal); - if (n == index) { - /* draw this poly with ambient and diffuse lighting */ - glEnable(GL_LIGHT0); - } else { - /* draw other polys with ambient lighting only */ - glDisable(GL_LIGHT0); - } - } else { - if (n == index) { - /* this poly has full intensity, no occlusion */ - glColor3f(1.f, 1.f, 1.f); - } else { - /* all other polys just occlude the light */ - glColor3f(0.f, 0.f, 0.f); - } - } - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(qpts[0]); - glVertex3fv(qpts[1]); - glVertex3fv(qpts[2]); - glVertex3fv(qpts[3]); - glEnd(); - } - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); -} - -void make_all_shadow_textures(float eye[3], float dx, float dy) { - GLint texPerRow; - GLint n; - GLfloat x, y; - - texPerRow = (winxsize / texxsize); - for (n=0; n < numShadowTex; n++) { - y = (n / texPerRow) * texysize; - x = (n % texPerRow) * texxsize; - glViewport(x, y, texxsize, texysize); - make_shadow_texture(n, eye, dx, dy); - } - glViewport(0, 0, winxsize, winysize); -} - -void store_all_shadow_textures(void) { - GLint texPerRow; - GLint n, x, y; - GLubyte *texbuf; - - texbuf = (GLubyte *) malloc(texxsize * texysize * sizeof(int)); - - /* how many shadow textures can fit in the window */ - texPerRow = (winxsize / texxsize); - - for (n=0; n < numShadowTex; n++) { - GLenum format; - - x = (n % texPerRow) * texxsize; - y = (n / texPerRow) * texysize; - - glBindTexture(GL_TEXTURE_2D, shadowTextures + n); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - if (radianceMap) { - format = GL_RGB; - } else { - format = GL_LUMINANCE; - } - glCopyTexImage2D(GL_TEXTURE_2D, 0, format, x, y, texxsize, texysize, 0); - } - free(texbuf); -} - -/* menu choices */ -enum { - NOSHADOWS, SOFTSHADOWS, HARDSHADOWS, VIEWTEXTURE, VIEWSCENE, QUIT -}; - -GLint shadowMode = HARDSHADOWS; -GLboolean viewTextures = GL_FALSE; - -void -redraw(void) -{ - GLint n; - GLfloat normal[3]; - GLfloat (*qpts)[3]; - - glPushMatrix(); - glLoadIdentity(); - if (radianceMap && (shadowMode != NOSHADOWS)) { - glLightfv(GL_LIGHT0, GL_POSITION, origin); - } else { - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - } - glPopMatrix(); - - if (shadowMode == SOFTSHADOWS) { - GLfloat jitterSize; - GLfloat dx, dy; - GLint numSteps, i, j; - - /* size of the area to jitter the light in */ - jitterSize = 15.0; - - /* number of times along x and y to jitter */ - numSteps = 5; - - glClear(GL_ACCUM_BUFFER_BIT); - for (j=0; j < numSteps; j++) { - for (i=0; i < numSteps; i++) { - - /* compute jitter amount, centering the jitter steps around zero */ - dx = (i - (numSteps - 1.0) / 2.0) / (numSteps - 1.0) * jitterSize; - dy = (j - (numSteps - 1.0) / 2.0) / (numSteps - 1.0) * jitterSize; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - make_all_shadow_textures(lightpos, dx, dy); - glAccum(GL_ACCUM, 1.0 / (numSteps * numSteps)); - if (viewTextures) { - glutSwapBuffers(); - } - } - } - glAccum(GL_RETURN, 1.0); - store_all_shadow_textures(); - - } else if (shadowMode == HARDSHADOWS) { - - /* make shadow textures from just one frame */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_ACCUM_BUFFER_BIT); - make_all_shadow_textures(lightpos, 0, 0); - store_all_shadow_textures(); - if (viewTextures) { - glutSwapBuffers(); - } - } - if (viewTextures) { - glutSwapBuffers(); - return; - } - - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); - glLoadIdentity(); - - glColor3f(1.f, 1.f, 1.f); - if (shadowMode == NOSHADOWS) { - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDisable(GL_TEXTURE_2D); - for (n=0; n < numShadowTex; n++) { - qpts = pts[n]; - findNormal(qpts, normal); - glNormal3fv(normal); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, materials[n]); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0,0); glVertex3fv(qpts[0]); - glTexCoord2f(0,1); glVertex3fv(qpts[1]); - glTexCoord2f(1,0); glVertex3fv(qpts[2]); - glTexCoord2f(1,1); glVertex3fv(qpts[3]); - glEnd(); - } - } else { - glEnable(GL_TEXTURE_2D); - - if (radianceMap) { - glDisable(GL_LIGHTING); - for (n=0; n < numShadowTex; n++) { - qpts = pts[n]; - glBindTexture(GL_TEXTURE_2D, shadowTextures + n); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0,0); glVertex3fv(qpts[0]); - glTexCoord2f(0,1); glVertex3fv(qpts[1]); - glTexCoord2f(1,0); glVertex3fv(qpts[2]); - glTexCoord2f(1,1); glVertex3fv(qpts[3]); - glEnd(); - } - } else { - - /* Unfortunately, using the texture as an occlusion map requires two */ - /* passes: one in which the occlusion map modulates the diffuse */ - /* lighting, and one in which the ambient lighting is added in. It's */ - /* incorrect to modulate the ambient lighting, but if the result is */ - /* acceptable to you, you can include it in the first pass and */ - /* omit the second pass. */ - - /* draw only with diffuse light, modulating it with the texture */ - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, black); - for (n=0; n < numShadowTex; n++) { - qpts = pts[n]; - findNormal(qpts, normal); - glNormal3fv(normal); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, materials[n]); - glBindTexture(GL_TEXTURE_2D, shadowTextures + n); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0,0); glVertex3fv(qpts[0]); - glTexCoord2f(0,1); glVertex3fv(qpts[1]); - glTexCoord2f(1,0); glVertex3fv(qpts[2]); - glTexCoord2f(1,1); glVertex3fv(qpts[3]); - glEnd(); - } - - /* add in the ambient lighting */ - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - glDepthFunc(GL_LEQUAL); - for (n=0; n < numShadowTex; n++) { - qpts = pts[n]; - glColor4f(ambient[0] * materials[n][0], - ambient[1] * materials[n][1], - ambient[2] * materials[n][2], - ambient[3] * materials[n][3]); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0,0); glVertex3fv(qpts[0]); - glTexCoord2f(0,1); glVertex3fv(qpts[1]); - glTexCoord2f(1,0); glVertex3fv(qpts[2]); - glTexCoord2f(1,1); glVertex3fv(qpts[3]); - glEnd(); - } - /* restore the ambient colors to their defaults */ - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); - } - } - - /* blend in the checkerboard floor */ - glEnable(GL_BLEND); - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - glDepthFunc(GL_LEQUAL); - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, floorTexture); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, materials[0]); - glTranslatef(0.0f, 0.05f, 0.0f); - glColor3f(1.f, 1.f, 1.f); - glBegin(GL_TRIANGLE_STRIP); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2f(0.f, 0.f); glVertex3fv(pts[0][0]); - glTexCoord2f(0.f, 1.f); glVertex3fv(pts[0][1]); - glTexCoord2f(1.f, 0.f); glVertex3fv(pts[0][2]); - glTexCoord2f(1.f, 1.f); glVertex3fv(pts[0][3]); - glEnd(); - - /* undo some state settings that we did above */ - glDisable(GL_BLEND); - glDisable(GL_TEXTURE_2D); - glDepthFunc(GL_LESS); - glTranslatef(0.0f, -0.05f, 0.0f); - -glutSwapBuffers(); -} - -void -menu(int mode) -{ - switch (mode) { - case NOSHADOWS: - case SOFTSHADOWS: - case HARDSHADOWS: - shadowMode = mode; - break; - case VIEWTEXTURE: - viewTextures = GL_TRUE; - break; - case VIEWSCENE: - viewTextures = GL_FALSE; - break; - case QUIT: - exit(0); - } - glutPostRedisplay(); -} - -/* Make a checkerboard texture for the floor. */ -GLfloat * -make_texture(int maxs, int maxt) -{ - GLint s, t; - static GLfloat *texture; - - texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat)); - for (t = 0; t < maxt; t++) { - for (s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char key, int x, int y) -{ - if (key == 27) /* ESC */ - exit(0); -} - -int -main(int argc, char *argv[]) -{ - GLfloat *tex; - GLint i; - - for (i = 1; i < argc; ++i) { - if (!strcmp("-o", argv[i])) { - /* use textures as occlusion maps rather than radiance maps */ - radianceMap = GL_FALSE; - } - } - - glutInit(&argc, argv); - glutInitWindowSize(winxsize, winysize); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_ACCUM | GLUT_SINGLE); - (void) glutCreateWindow("soft shadows"); - glutDisplayFunc(redraw); - glutKeyboardFunc(keyboard); - - glutCreateMenu(menu); - glutAddMenuEntry("No Shadows", NOSHADOWS); - glutAddMenuEntry("Soft Shadows", SOFTSHADOWS); - glutAddMenuEntry("Hard Shadows", HARDSHADOWS); - glutAddMenuEntry("View Textures", VIEWTEXTURE); - glutAddMenuEntry("View Scene", VIEWSCENE); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* set up perspective projection */ - glMatrixMode(GL_PROJECTION); - glFrustum(-30., 30., -30., 30., 100., 640.); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glCullFace(GL_BACK); - glLightfv(GL_LIGHT0, GL_AMBIENT, black); - - /* number of shadow textures to make */ - numShadowTex = sizeof(pts) / sizeof(pts[0]); - - tex = make_texture(texxsize, texysize); - glBindTexture(GL_TEXTURE_2D, floorTexture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, 1, texxsize, texysize, 0, GL_RED, GL_FLOAT, - tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - free(tex); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced97/softshadow2.dsp b/lib/glut-3.7.6/progs/advanced97/softshadow2.dsp deleted file mode 100644 index 91d6619373a5c94f5dc78432859d365a67c96283..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/softshadow2.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="softshadow2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=softshadow2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "softshadow2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "softshadow2.mak" CFG="softshadow2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "softshadow2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "softshadow2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "softshadow2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "softshadow2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "softshadow2 - Win32 Release" -# Name "softshadow2 - Win32 Debug" -# Begin Source File - -SOURCE=.\softshadow2.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/spectral.c b/lib/glut-3.7.6/progs/advanced97/spectral.c deleted file mode 100644 index 4335f04c0e7eba15e13afaccc005ea5730b64688..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/spectral.c +++ /dev/null @@ -1,518 +0,0 @@ -/* spectral.c - by Simon Hui, 3Dfx Interactive */ - -/* make a noise texture from multiple frequencies of noise */ - -#include -#include -#include -#include - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - -static int texxsize = 256, texysize = 256; -static int winxsize = 512, winysize = 512; - -/* the highest and lowest octaves in the final noise */ -static int minoctave = 1; -static int maxoctave = 6; - -static GLenum ifmt = GL_LUMINANCE; - -/* texture object names */ -static GLuint basistex = 1; -static GLuint noisetex = 2; -static GLuint spectraltex = 6; -static GLuint abstex = 7; - -int -logOf(int n) { - int i=0; - for (i=-1; n > 0; i++) { - n >>= 1; - } - return i; -} - -void -init_texture(void) { - int i, j, n; - int w, h; - unsigned char *basis, *tex; - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - basis = (unsigned char *) malloc(texxsize * texysize); - w = texxsize / 2; - h = texysize / 2; - for (j=0; j < h; j++) { - for (i=0; i < w; i++) { - GLint r; - float u = i / (w - 1.0); - float v = j / (h - 1.0); - float f = 3 * u * u - 2 * u * u * u; - float g = 3 * v * v - 2 * v * v * v; - - /* basis is a bicubic spline */ - r = f * g * 0xff; - - /* reflect around x and y axes */ - basis[j * texxsize + i] = r; - basis[j * texxsize + texxsize-i-1] = r; - basis[(texysize-j-1) * texxsize + i] = r; - basis[(texysize-j-1) * texxsize + texxsize-i-1] = r; - } - } - glBindTexture(GL_TEXTURE_2D, basistex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, texxsize, texysize, 0, - GL_RED, GL_UNSIGNED_BYTE, basis); - free(basis); - - tex = (unsigned char *) malloc(4 * texxsize * texysize); - for (n=0; n < 4; n++) { - for (j=0; j < texysize; j++) { - for (i=0; i < texxsize; i++) { - int r = rand(); - - /* mix it up a little more */ - r = ((r & 0xff) ^ ((r & 0xff00) >> 8)) & 0xff; - - /* For simplicity and because some opengl implementations offer */ - /* more texture color depth for luminance textures than rgb ones, */ - /* we use a luminance texture for the random noise. However, you */ - /* can make the texture rgb instead, and store different random */ - /* values for r, g, and b; this is especially useful if using */ - /* noise distortion below, because you'll get different distortion */ - /* values for s and t. */ - tex[j*texxsize + i] = r; - } - } - glBindTexture(GL_TEXTURE_2D, noisetex + n); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, texxsize, texysize, 0, - GL_RED, GL_UNSIGNED_BYTE, tex); - } - free(tex); -} - -void -init(void) { - glClearColor(0.0, 0.0, 0.0, 1.0); - glMatrixMode(GL_PROJECTION); - glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glViewport(0, 0, winxsize, winysize); - glDisable(GL_DITHER); - init_texture(); -} - -void -draw_basis(int tsize, int ssize, int xadj, int yadj) { - float tilessize = 1.0 / ssize; - float tiletsize = 1.0 / tsize; - float xoff = (xadj - 0.5) * 0.5 * tilessize; - float yoff = (yadj - 0.5) * 0.5 * tiletsize; - float xo, yo; - int i, j; - - glBindTexture(GL_TEXTURE_2D, basistex); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - - /* draw as many copies of the basis function as needed for this frequency */ - for (j=0; j < tsize; j++) { - for (i=0; i < ssize; i++) { - xo = xoff + i * tilessize; - yo = yoff + j * tiletsize; - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0.f, 0.f); glVertex2f(xo, yo); - glTexCoord2f(0.f, 1.f); glVertex2f(xo, yo + tiletsize); - glTexCoord2f(1.f, 0.f); glVertex2f(xo + tilessize, yo); - glTexCoord2f(1.f, 1.f); glVertex2f(xo + tilessize, yo + tiletsize); - glEnd(); - } - } - glFinish(); -} - -void -draw_noise_texture(int tsize, int ssize, int xadj, int yadj, int texname) { - float tilessize = 1.0 / ssize; - float tiletsize = 1.0 / tsize; - float xoff = (xadj - 0.5) * 0.5 * tilessize; - float yoff = (yadj - 0.5) * 0.5 * tiletsize; - float scale = 1.0 / (texxsize / ssize); - - glBindTexture(GL_TEXTURE_2D, texname); - - /* scale the texture matrix to get a noise pattern of desired frequency */ - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glScalef(scale,scale,scale); - - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0.f, 0.f); glVertex2f(xoff, yoff); - glTexCoord2f(0.f, 1.f); glVertex2f(xoff, yoff + 1.0); - glTexCoord2f(1.f, 0.f); glVertex2f(xoff + 1.0, yoff); - glTexCoord2f(1.f, 1.f); glVertex2f(xoff + 1.0, yoff + 1.0); - glEnd(); - glFlush(); -} - -static float wscale = 0.60; -static unsigned int **octbufs, *spectralbuf, *absbuf; - -void -make_octaves(void) { - int w, h, i; - int octaves = maxoctave - minoctave + 1; - float weight, sumweight; - - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - glEnable(GL_TEXTURE_2D); - - /* find the total weight */ - weight = 1.0; - sumweight = 0; - for (i=0; i < octaves; i++) { - sumweight += weight; - weight *= wscale; - } - octbufs = (unsigned int **) malloc(octaves * sizeof(unsigned int *)); - - weight = 1.0; - w = h = (1 << minoctave); - for (i=0; i < octaves; i++) { - octbufs[i] = (unsigned int *) malloc(sizeof(unsigned int) * - winxsize * winysize); - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(w, h, 0, 0); - glEnable(GL_BLEND); - draw_noise_texture(w, h, 0, 0, noisetex); - glAccum(GL_LOAD, 1.0); - - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(w, h, 1, 0); - glEnable(GL_BLEND); - draw_noise_texture(w, h, 1, 0, noisetex + 1); - glAccum(GL_ACCUM, 1.0); - - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(w, h, 0, 1); - glEnable(GL_BLEND); - draw_noise_texture(w, h, 0, 1, noisetex + 2); - glAccum(GL_ACCUM, 1.0); - - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_BLEND); - draw_basis(w, h, 1, 1); - glEnable(GL_BLEND); - draw_noise_texture(w, h, 1, 1, noisetex + 3); - glAccum(GL_ACCUM, 1.0); - - glDisable(GL_BLEND); - glAccum(GL_RETURN, 1.0); - glReadPixels(0, 0, winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - octbufs[i]); - w <<= 1; - h <<= 1; - } - glDisable(GL_TEXTURE_2D); -} - -static GLboolean need_remake_octaves = GL_TRUE; -static GLboolean need_remake_spectral = GL_TRUE; -static GLboolean need_remake_abs_noise = GL_TRUE; - -void -make_spectral_noise(void) { - int i; - int octaves = maxoctave - minoctave + 1; - float weight, sumweight; - - if (need_remake_octaves) { - make_octaves(); - need_remake_octaves = GL_FALSE; - } - /* find the total weight */ - weight = 1.0; - sumweight = 0; - for (i=0; i < octaves; i++) { - sumweight += weight; - weight *= wscale; - } - glClear(GL_COLOR_BUFFER_BIT | GL_ACCUM_BUFFER_BIT); - weight = 1.0; - for (i=0; i < octaves; i++) { - glDrawPixels(winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) octbufs[i]); - glAccum(GL_ACCUM, weight/sumweight); - weight *= wscale; - } - - /* save image in a texture */ - glAccum(GL_RETURN, 1.0); - spectralbuf = (unsigned int *) malloc(4 * winxsize * winysize); - glReadPixels(0, 0, winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - spectralbuf); - glBindTexture(GL_TEXTURE_2D, spectraltex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, ifmt, winxsize, winysize, 0, - GL_RGBA, GL_UNSIGNED_BYTE, spectralbuf); -} - -void -make_abs_noise(void) { - unsigned int *negbuf = (unsigned int *) malloc(4 * winxsize * winysize); - unsigned int *posbuf = (unsigned int *) malloc(4 * winxsize * winysize); - - if (need_remake_spectral) { - make_spectral_noise(); - need_remake_spectral = GL_FALSE; - } - glDrawPixels(winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) spectralbuf); - glAccum(GL_LOAD, 1.0); - - /* make it signed */ - glAccum(GL_ADD, -0.5); - - /* get the positive part of the noise */ - glAccum(GL_RETURN, 2.0); - glReadPixels(0, 0, winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) negbuf); - - /* invert the negative part of the noise */ - glAccum(GL_RETURN, -2.0); - glReadPixels(0, 0, winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) posbuf); - - /* add positive and inverted negative together, and you get abs() */ - glClear(GL_COLOR_BUFFER_BIT); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - glDrawPixels(winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) posbuf); - glDrawPixels(winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) negbuf); - - /* invert the colors so that peaks are bright instead of dark */ - glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO); - glColor4f(1,1,1,1); - glBegin(GL_TRIANGLE_STRIP); - glVertex2f(0,0); - glVertex2f(0,1); - glVertex2f(1,0); - glVertex2f(1,1); - glEnd(); - glDisable(GL_BLEND); - - free(posbuf); - free(negbuf); - - /* save image in a texture */ - absbuf = (unsigned int *) malloc(4 * winxsize * winysize); - glReadPixels(0, 0, winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) absbuf); - glBindTexture(GL_TEXTURE_2D, abstex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, ifmt, winxsize, winysize, 0, - GL_RGBA, GL_UNSIGNED_BYTE, absbuf); -} - -static GLboolean show_abs = GL_FALSE; -static GLboolean show_distort = GL_FALSE; -static GLboolean mapcolors = GL_FALSE; -static float distfactor = 0.20; - -void -display(void) { - if (need_remake_spectral) { - make_spectral_noise(); - need_remake_spectral = GL_FALSE; - } - if (show_abs) { - if (need_remake_abs_noise) { - make_abs_noise(); - need_remake_abs_noise = GL_FALSE; - } - glBindTexture(GL_TEXTURE_2D, abstex); - } else { - glBindTexture(GL_TEXTURE_2D, spectraltex); - } - - glClear(GL_COLOR_BUFFER_BIT); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - - if (show_distort) { - /* Use values in the spectral texture to distort the texture being */ - /* viewed, by jittering the texture coordinates. */ - - float x, y0, y1; - float s, t0, t1; - float ds, dt; - unsigned int pix0, pix1; - int vrows = 64, vcols = 64; - int i, j; - - for (j=0; j < (vrows - 1); j++) { - t0 = y0 = j / (vrows - 1.0); - t1 = y1 = (j + 1) / (vrows - 1.0); - - glBegin(GL_TRIANGLE_STRIP); - for (i=0; i < vcols; i++) { - s = x = i / (vcols - 1.0); - pix0 = spectralbuf[j * winxsize + i]; - pix1 = spectralbuf[(j+1) * winxsize + i]; - - /* Use green component of noise to distort S coord, */ - /* and blue component to distort T coord. Subtract */ - /* 127.5 to make it signed, and scale by distfactor.*/ - - ds = ((pix0 & 0x00ff0000) >> 16); - dt = ((pix0 & 0x0000ff00) >> 8); - ds = (ds - 127.5) / 127.5 * distfactor; - dt = (dt - 127.5) / 127.5 * distfactor; - glTexCoord2f(s + ds, t0 + dt); glVertex2f(x, y0); - ds = ((pix1 & 0x00ff0000) >> 16); - dt = ((pix1 & 0x0000ff00) >> 8); - ds = (ds - 127.5) / 127.5 * distfactor; - dt = (dt - 127.5) / 127.5 * distfactor; - glTexCoord2f(s + ds, t1 + dt); glVertex2f(x, y1); - } - glEnd(); - } - } else { - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0, 0); glVertex2f(0, 0); - glTexCoord2f(0, 1); glVertex2f(0, 1); - glTexCoord2f(1, 0); glVertex2f(1, 0); - glTexCoord2f(1, 1); glVertex2f(1, 1); - glEnd(); - } - glDisable(GL_TEXTURE_2D); - - if (mapcolors) { - /* Map the gray values of the image into colors so that the texture */ - /* looks like flames. We do that by defining appropriate splines for */ - /* red, green, and blue. */ - - float r, g, b; - float rt = 0.8; - float gt = 0.3; - float bt = 0.1; - int i, j; - unsigned char *c; - unsigned int *mapbuf = (unsigned int *) malloc(4 * winxsize * winysize); - - glReadPixels(0, 0, winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - mapbuf); - - for (j=0; j < winysize; j++) { - for (i=0; i < winxsize; i++) { - c = (unsigned char *) &mapbuf[j * winxsize + i]; - r = c[0] / 255.0; - g = c[1] / 255.0; - b = c[2] / 255.0; - - if (r < (1-rt)) { - r = 0.0; - } else { - float k = (r - (1.0 - rt)) / rt; - r = (3.0*k*k - 2.0*k*k*k) * 255.0; - } - if (g < (1-gt)) { - g = 0.0; - } else { - float k = (g - (1.0 - gt)) / gt; - g = (3.0*k*k - 2.0*k*k*k) * 255.0; - } - if (b < (1-bt)) { - b = 0.0; - } else { - float k = (b - (1.0 - bt)) / bt; - b = (3.0*k*k - 2.0*k*k*k) * 255.0; - } - c[0] = r; - c[1] = g; - c[2] = b; - } - } - glDrawPixels(winxsize, winysize, GL_RGBA, GL_UNSIGNED_BYTE, - (GLvoid *) mapbuf); - free(mapbuf); - } - glFlush(); -} - -void -reshape(int w, int h) { - glViewport(0, 0, w, h); - glutPostRedisplay(); -} - -enum { - TOGGLE_ABS, TOGGLE_DISTORT, MORE_DISTORT, LESS_DISTORT, TOGGLE_MAP_COLORS, - FIRE, QUIT -}; - -void -menu(int value) { - switch (value) { - case TOGGLE_ABS: - show_abs = !show_abs; - break; - case TOGGLE_DISTORT: - show_distort = !show_distort; - break; - case MORE_DISTORT: - if (distfactor > 0.05) distfactor -= 0.05; - break; - case LESS_DISTORT: - if (distfactor < 1.00) distfactor += 0.05; - break; - case TOGGLE_MAP_COLORS: - mapcolors = !mapcolors; - break; - case FIRE: - mapcolors = GL_TRUE; - show_distort = GL_TRUE; - show_abs = GL_TRUE; - break; - case QUIT: - exit(0); - } - glutPostRedisplay(); -} - -int -main(int argc, char** argv) { - glutInit(&argc, argv); - glutInitWindowSize(winxsize, winysize); - glutInitDisplayMode(GLUT_RGBA | GLUT_ACCUM); - (void)glutCreateWindow("spectral noise function"); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutCreateMenu(menu); - glutAddMenuEntry("Toggle Absolute Value", TOGGLE_ABS); - glutAddMenuEntry("Toggle Noise Distortion", TOGGLE_DISTORT); - glutAddMenuEntry("Decrease Distortion", MORE_DISTORT); - glutAddMenuEntry("Increase Distortion", LESS_DISTORT); - glutAddMenuEntry("Toggle Color Mapping", TOGGLE_MAP_COLORS); - glutAddMenuEntry("Simulation of Fire", FIRE); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced97/spectral.dsp b/lib/glut-3.7.6/progs/advanced97/spectral.dsp deleted file mode 100644 index f40c17c644d8dc3d4f77530da59f6b147cce55cd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/spectral.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="spectral" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=spectral - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "spectral.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "spectral.mak" CFG="spectral - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "spectral - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "spectral - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "spectral - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "spectral - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "spectral - Win32 Release" -# Name "spectral - Win32 Debug" -# Begin Source File - -SOURCE=.\spectral.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/sphere.c b/lib/glut-3.7.6/progs/advanced97/sphere.c deleted file mode 100644 index 0d29758040b3b1f60ed857921e4313099d660746..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/sphere.c +++ /dev/null @@ -1,185 +0,0 @@ -#include -#include -#include - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define sqrtf(x) ((float)sqrt((x))) -#endif - -/* sphere tessellation code based on code originally - * written by Jon Leech (leech@cs.unc.edu) 3/24/89 - */ - -typedef struct { - float x, y, z; -} point; - -typedef struct { - point pt[3]; -} triangle; - -/* six equidistant points lying on the unit sphere */ -#define XPLUS { 1, 0, 0 } /* X */ -#define XMIN { -1, 0, 0 } /* -X */ -#define YPLUS { 0, 1, 0 } /* Y */ -#define YMIN { 0, -1, 0 } /* -Y */ -#define ZPLUS { 0, 0, 1 } /* Z */ -#define ZMIN { 0, 0, -1 } /* -Z */ - -/* for icosahedron */ -#define CZ (0.866025403) /* cos(30) */ -#define SZ (0.5) /* sin(30) */ -#define C1 (0.951056516) /* cos(18), */ -#define S1 (0.309016994) /* sin(18) */ -#define C2 (0.587785252) /* cos(54), */ -#define S2 (0.809016994) /* sin(54) */ -#define X1 (C1*CZ) -#define Y1 (S1*CZ) -#define X2 (C2*CZ) -#define Y2 (S2*CZ) - -#define Ip0 {0., 0., 1.} -#define Ip1 {-X2, -Y2, SZ} -#define Ip2 {X2, -Y2, SZ} -#define Ip3 {X1, Y1, SZ} -#define Ip4 {0, CZ, SZ} -#define Ip5 {-X1, Y1, SZ} - -#define Im0 {-X1, -Y1, -SZ} -#define Im1 {0, -CZ, -SZ} -#define Im2 {X1, -Y1, -SZ} -#define Im3 {X2, Y2, -SZ} -#define Im4 {-X2, Y2, -SZ} -#define Im5 {0., 0., -1.} - -/* vertices of a unit icosahedron */ -static triangle icosahedron[20]= { - /* front pole */ - { {Ip0, Ip1, Ip2}, }, - { {Ip0, Ip5, Ip1}, }, - { {Ip0, Ip4, Ip5}, }, - { {Ip0, Ip3, Ip4}, }, - { {Ip0, Ip2, Ip3}, }, - - /* mid */ - { {Ip1, Im0, Im1}, }, - { {Im0, Ip1, Ip5}, }, - { {Ip5, Im4, Im0}, }, - { {Im4, Ip5, Ip4}, }, - { {Ip4, Im3, Im4}, }, - { {Im3, Ip4, Ip3}, }, - { {Ip3, Im2, Im3}, }, - { {Im2, Ip3, Ip2}, }, - { {Ip2, Im1, Im2}, }, - { {Im1, Ip2, Ip1}, }, - - /* back pole */ - { {Im3, Im2, Im5}, }, - { {Im4, Im3, Im5}, }, - { {Im0, Im4, Im5}, }, - { {Im1, Im0, Im5}, }, - { {Im2, Im1, Im5}, }, -}; - -/* normalize point r */ -static void -normalize(point *r) { - float mag; - - mag = r->x * r->x + r->y * r->y + r->z * r->z; - if (mag != 0.0f) { - mag = 1.0f / sqrtf(mag); - r->x *= mag; - r->y *= mag; - r->z *= mag; - } -} - -/* linearly interpolate between a & b, by fraction f */ -static void -lerp(point *a, point *b, float f, point *r) { - r->x = a->x + f*(b->x-a->x); - r->y = a->y + f*(b->y-a->y); - r->z = a->z + f*(b->z-a->z); -} - -void -sphere(int maxlevel) { - int nrows = 1 << maxlevel; - int s; - - /* iterate over the 20 sides of the icosahedron */ - for(s = 0; s < 20; s++) { - int i; - triangle *t = &icosahedron[s]; - for(i = 0; i < nrows; i++) { - /* create a tstrip for each row */ - /* number of triangles in this row is number in previous +2 */ - /* strip the ith trapezoid block */ - point v0, v1, v2, v3, va, vb; - int j; - lerp(&t->pt[1], &t->pt[0], (float)(i+1)/nrows, &v0); - lerp(&t->pt[1], &t->pt[0], (float)i/nrows, &v1); - lerp(&t->pt[1], &t->pt[2], (float)(i+1)/nrows, &v2); - lerp(&t->pt[1], &t->pt[2], (float)i/nrows, &v3); - glBegin(GL_TRIANGLE_STRIP); -#define V(v) { point x; x = v; normalize(&x); glNormal3fv(&x.x); glVertex3fv(&x.x); } - V(v0); - V(v1); - for(j = 0; j < i; j++) { - /* calculate 2 more vertices at a time */ - lerp(&v0, &v2, (float)(j+1)/(i+1), &va); - lerp(&v1, &v3, (float)(j+1)/i, &vb); - V(va); - V(vb); - } - V(v2); -#undef V - glEnd(); - } - } -} - -float * -sphere_tris(int maxlevel) { - int nrows = 1 << maxlevel; - int s, n; - float *buf, *b; - - n = 20*(1 << (maxlevel * 2)); - b = buf = (float *)malloc(n*3*3*sizeof(float)); - - /* iterate over the 20 sides of the icosahedron */ - for(s = 0; s < 20; s++) { - int i; - triangle *t = &icosahedron[s]; - for(i = 0; i < nrows; i++) { - /* create a tstrip for each row */ - /* number of triangles in this row is number in previous +2 */ - /* strip the ith trapezoid block */ - point v0, v1, v2, v3, va, vb, x1, x2; - int j; - lerp(&t->pt[1], &t->pt[0], (float)(i+1)/nrows, &v0); - lerp(&t->pt[1], &t->pt[0], (float)i/nrows, &v1); - lerp(&t->pt[1], &t->pt[2], (float)(i+1)/nrows, &v2); - lerp(&t->pt[1], &t->pt[2], (float)i/nrows, &v3); -#define V(a, c, v) { point x = v; normalize(&a); normalize(&c); normalize(&x); \ - b[0] = a.x; b[1] = a.y; b[2] = a.z; \ - b[3] = c.x; b[4] = c.y; b[5] = c.z; \ - b[6] = x.x; b[7] = x.y; b[8] = x.z; b+=9; } - x1 = v0; - x2 = v1; - for(j = 0; j < i; j++) { - /* calculate 2 more vertices at a time */ - lerp(&v0, &v2, (float)(j+1)/(i+1), &va); - lerp(&v1, &v3, (float)(j+1)/i, &vb); - V(x1,x2,va); x1 = x2; x2 = va; - V(vb,x2,x1); x1 = x2; x2 = vb; - } - V(x1, x2, v2); -#undef V - } - } - return buf; -} diff --git a/lib/glut-3.7.6/progs/advanced97/tess.c b/lib/glut-3.7.6/progs/advanced97/tess.c deleted file mode 100644 index 91daaa724f2ea0177faa7ef53bb67e7260c13f33..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/tess.c +++ /dev/null @@ -1,185 +0,0 @@ -#include -#include -#include - -static GLfloat spin = 0; -static int level = 4; -static int model = 0; -static GLfloat rotx, roty; -static int ox = -1, oy = -1; -static int mot; -#define PAN 1 -#define ROT 2 - -void -movelight(int x, int y) { - spin += (x-ox); - ox = x; oy = y; - if (spin > 360.) spin -= 360.; - if (spin < -360.) spin -= -360.; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) movelight(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void togglewire(void) { - static int toggle = 0; - toggle ^= 1; - glPolygonMode(GL_FRONT_AND_BACK, toggle ? GL_LINE : GL_FILL); -} - -extern void sphere(int level); -void genmodel(void) { - - glNewList(1, GL_COMPILE); - if (model) { - GLUquadricObj *q = gluNewQuadric(); - gluSphere(q, 1.0, 10*level, 10*level); - gluDeleteQuadric(q); - } else { - sphere(level-1); - } - glEndList(); -} - -void togglemodel(void) { - model ^= 1; - genmodel(); -} - -void levelup(void) { - level += 1; - if (level > 7) level = 7; - genmodel(); -} - -void leveldown(void) { - level -= 1; - if (level <= 0) level = 1; - genmodel(); -} - -void help(void) { - printf("'h' - help\n"); - printf("'t' - tessellation style\n"); - printf("'UP' - increase tessellation\n"); - printf("'DOWN' - decrease tessellation\n"); - printf("left mouse - rotate sphere\n"); - printf("right mouse - move light\n"); -} - -void init(void) { - GLfloat specular[4] = { 1., 1., 1., 1. }; - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - genmodel(); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 30); -} - -void display(void) { - GLfloat position[] = { 0.0, 0.0, 3.5, 1.0 }; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glTranslatef(0.0, 0.0, -5.0); - - glPushMatrix(); - glRotatef(spin, 1.0, 0.0, 0.0); - glRotatef(0.0, 1.0, 0.0, 0.0); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glPopMatrix(); - - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glCallList(1); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 't': togglemodel(); break; - case 'w': togglewire(); break; - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/*ARGSUSED1*/ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: levelup(); break; - case GLUT_KEY_DOWN: leveldown(); break; - } - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/tess.dsp b/lib/glut-3.7.6/progs/advanced97/tess.dsp deleted file mode 100644 index 1daf5a7044b3f9e37f4abb10623496cbcd2a7c0c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/tess.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tess" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tess - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tess.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tess.mak" CFG="tess - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tess - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tess - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tess - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tess - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tess - Win32 Release" -# Name "tess - Win32 Debug" -# Begin Source File - -SOURCE=.\sphere.c -# End Source File -# Begin Source File - -SOURCE=.\tess.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/texgen.c b/lib/glut-3.7.6/progs/advanced97/texgen.c deleted file mode 100644 index 19f10d58205d383d80bd7d6ee44e7379ee46fe17..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texgen.c +++ /dev/null @@ -1,292 +0,0 @@ -#include -#include -#include -#include - -#ifndef __sgi -/* Most math.h's do not define float versions of math functions. */ -#define floorf(x) ((float)floor((x))) -#endif - -static float transx = 1.0, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(const int x, const int y) { - transx += (x-ox)/5.; - transy -= (y-oy)/5.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(const int x, const int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -#define stripeImageWidth 32 -GLubyte stripeImage[4*stripeImageWidth]; - -void makeStripeImage(void) { - int j; - - for (j = 0; j < stripeImageWidth; j++) { - stripeImage[4*j] = (GLubyte) ((j<=4) ? 255 : 0); - stripeImage[4*j+1] = (GLubyte) ((j>4) ? 255 : 0); - stripeImage[4*j+2] = (GLubyte) 0; - stripeImage[4*j+3] = (GLubyte) 255; - } -} - -void -hsv_to_rgb(float h,float s,float v,float *r,float *g,float *b) -{ - int i; - float f, p, q, t; - - h *= 360.0; - if (s==0) { - *r = v; - *g = v; - *b = v; - } else { - if (h==360) - h = 0; - h /= 60; - i = floorf(h); - f = h - i; - p = v*(1.0-s); - q = v*(1.0-(s*f)); - t = v*(1.0-(s*(1.0-f))); - switch (i) { - case 0 : - *r = v; - *g = t; - *b = p; - break; - case 1 : - *r = q; - *g = v; - *b = p; - break; - case 2 : - *r = p; - *g = v; - *b = t; - break; - case 3 : - *r = p; - *g = q; - *b = v; - break; - case 4 : - *r = t; - *g = p; - *b = v; - break; - case 5 : - *r = v; - *g = p; - *b = q; - break; - } - } -} - -GLubyte rainbow[4*stripeImageWidth]; -void makeRainbow(void) { - int j; - for (j = 0; j < stripeImageWidth; j++) { - float r, g, b; - hsv_to_rgb((float)j/(stripeImageWidth-1.f), 1.0, 1.0, &r, &g, &b); - rainbow[4*j] = r*255; - rainbow[4*j+1] = g*255; - rainbow[4*j+2] = b*255; - rainbow[4*j+3] = (GLubyte) 255; - } -} - -/* planes for texture coordinate generation */ -static GLfloat xequalzero[] = {1.0, 0.0, 0.0, 0.0}; -static GLfloat slanted[] = {1.0, 1.0, 1.0, 0.0}; -static GLfloat *currentCoeff; -static GLenum currentPlane; -static GLint currentGenMode; - -void init(void) { - glClearColor (0.0, 0.0, 0.0, 0.0); - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_SMOOTH); - - makeStripeImage(); - makeRainbow(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage1D(GL_TEXTURE_1D, 0, 4, stripeImageWidth, 0, - GL_RGBA, GL_UNSIGNED_BYTE, stripeImage); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - currentCoeff = xequalzero; - currentGenMode = GL_OBJECT_LINEAR; - currentPlane = GL_OBJECT_PLANE; - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode); - glTexGenfv(GL_S, currentPlane, currentCoeff); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_1D); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glFrontFace(GL_CW); - glCullFace(GL_BACK); - glMaterialf (GL_FRONT, GL_SHININESS, 64.0); -} - -void tfunc(void) { - static int state; - if (state ^= 1) { - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage1D(GL_TEXTURE_1D, 0, 4, stripeImageWidth, 0, - GL_RGBA, GL_UNSIGNED_BYTE, rainbow); - } else { - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage1D(GL_TEXTURE_1D, 0, 4, stripeImageWidth, 0, - GL_RGBA, GL_UNSIGNED_BYTE, stripeImage); - } - glutPostRedisplay(); -} - -void display(void) { -#if 0 - static GLUquadricObj *q = NULL; -#endif - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(0., 0., transx); - glRotatef(rotx, 1.0, 0.0, 0.0); - glRotatef(45.0, 0.0, 0.0, 1.0); - glutSolidTeapot(2.0); -#if 0 - if (!q) q = gluNewQuadric(); - gluQuadricTexture(q, GL_TRUE); - gluCylinder(q, 1.0, 2.0, 3.0, 10, 10); -#endif - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-3.5, 3.5, -3.5*(GLfloat)h/(GLfloat)w, - 3.5*(GLfloat)h/(GLfloat)w, -3.5, 3.5); - else - glOrtho (-3.5*(GLfloat)w/(GLfloat)h, - 3.5*(GLfloat)w/(GLfloat)h, -3.5, 3.5, -3.5, 3.5); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/*ARGSUSED1*/ -void keyboard (unsigned char key, int x, int y) { - switch (key) { - case 'e': - case 'E': - currentGenMode = GL_EYE_LINEAR; - currentPlane = GL_EYE_PLANE; - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode); - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 'o': - case 'O': - currentGenMode = GL_OBJECT_LINEAR; - currentPlane = GL_OBJECT_PLANE; - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode); - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 's': - case 'S': - currentCoeff = slanted; - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 'x': - case 'X': - currentCoeff = xequalzero; - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 't': tfunc(); break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char*argv[]) { - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(256, 256); - glutInitWindowPosition(100, 100); - glutInit(&argc, argv); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/texgen.dsp b/lib/glut-3.7.6/progs/advanced97/texgen.dsp deleted file mode 100644 index 307792e3103498161037f3b9152b143bc2170197..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texgen.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texgen" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texgen - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texgen.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texgen.mak" CFG="texgen - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texgen - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texgen - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texgen - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texgen - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texgen - Win32 Release" -# Name "texgen - Win32 Debug" -# Begin Source File - -SOURCE=.\texgen.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/texmovie.c b/lib/glut-3.7.6/progs/advanced97/texmovie.c deleted file mode 100644 index 767ec7440597c23b799552cc01e309da6743f463..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texmovie.c +++ /dev/null @@ -1,192 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glBindTexture glBindTextureEXT -#endif - -static int the_texture; -static int texture_count; -static int shrink = 1; - -void afunc(void) { - static int state; - if (state ^= 1) - glEnable(GL_ALPHA_TEST); - else - glDisable(GL_ALPHA_TEST); -} - -void bfunc(void) { - static int state; - if (state ^= 1) - glEnable(GL_BLEND); - else - glDisable(GL_BLEND); -} - -void sfunc(void) { - shrink ^= 1; -} - -void tfunc(void) { - static int state; - if (state ^= 1) - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - else - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); -} - -void fourfunc(void) { - static int state; - GLenum wrap; - int i; - - glMatrixMode(GL_TEXTURE); - if (state ^= 1) { - wrap = GL_REPEAT; - glScalef(4.f, 4.f, 1.f); - } else { - wrap = GL_CLAMP; - glLoadIdentity(); - } - glMatrixMode(GL_MODELVIEW); - - for(i = 0; i < texture_count; i++) { - glBindTexture(GL_TEXTURE_2D, i+1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap); - } -} - -void help(void) { - printf("Usage: texmovie image0 ... imagen\n"); - printf("'h' - help\n"); - printf("'a' - toggle alpha test\n"); - printf("'b' - toggle blend\n"); - printf("'s' - toggle shrink\n"); - printf("'t' - toggle MODULATE or REPLACE\n"); - printf("'4' - toggle repeat by 4\n"); -} - -void init(int argc, char *argv[]) { - unsigned *image; - int i, width, height, components; - - glEnable(GL_TEXTURE_2D); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - if (argv[0] == NULL) { - char name[256]; - for (i = 0; i < 32; i++) { - sprintf(name, "../data/flame/f%02d", i); - image = read_texture(name, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", argv[i]); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - glBindTexture(GL_TEXTURE_2D, i+1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image); - texture_count++; - } - } - - for(i = 0; i < argc; i++) { - image = read_texture(argv[i], &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - argv[i]); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - glBindTexture(GL_TEXTURE_2D, i+1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image); - texture_count++; - } - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glEnable(GL_TEXTURE_2D); - glClearColor(.25f, .25f, .25f, .25f); - - glAlphaFunc(GL_GREATER, 0.f); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void -animate(void) { - - the_texture++; - if (the_texture >= texture_count) the_texture = 0; - - glutPostRedisplay(); -} - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT); - - glBindTexture(GL_TEXTURE_2D, the_texture+1); - glPushMatrix(); - if (shrink) glScalef(.5f, .5f, 1.f); - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); - glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex2f(-1.0, 1.0); - glEnd(); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'a': afunc(); break; - case 'b': bfunc(); break; - case 'h': help(); break; - case 's': sfunc(); break; - case 't': tfunc(); break; - case '4': fourfunc(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInitWindowSize(256, 256); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - (void)glutCreateWindow(argv[0]); - init(argc-1, argv+1); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/texmovie.dsp b/lib/glut-3.7.6/progs/advanced97/texmovie.dsp deleted file mode 100644 index 08524b53a64c6f4cb32f38ccc04b73241a6df5f5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texmovie.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texmovie" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texmovie - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texmovie.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texmovie.mak" CFG="texmovie - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texmovie - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texmovie - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texmovie - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texmovie - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texmovie - Win32 Release" -# Name "texmovie - Win32 Debug" -# Begin Source File - -SOURCE=.\texmovie.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/texpage.c b/lib/glut-3.7.6/progs/advanced97/texpage.c deleted file mode 100644 index 21418eaeb35540106d3642ea573f9885b1830daf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texpage.c +++ /dev/null @@ -1,503 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" -#include - -#if !defined(GL_VERSION_1_1) && !defined(GL_VERSION_1_2) -#define glTexSubImage2D glTexSubImage2DEXT -#endif - -static unsigned *image, *bgdtile; -static int width, height, components; -static int grid, zoom, texture; - - -#define TSIZE 128 -#define TILES 16 -#define TILESIZE 32 -static struct tile { - void *data; -} tiles[TILES][TILES]; - -static int x = TILES*TILESIZE/2, y = TILES*TILESIZE/2; - -/* - * make an rgb tile for the background. - */ -static void -background_tile(void) { - int i,j,grid; - unsigned char *ptr; - - bgdtile = (unsigned *) malloc(TILESIZE*TILESIZE*sizeof(unsigned)); - grid = 8; - ptr = (unsigned char *) bgdtile; - for (i=0; i= TILES/2-w2 && i < TILES/2-w2+w && j >= TILES/2-h2 && j < TILES/2-h2+h) { - /* interior */ - int x, y, k; - tiles[j][i].data = malloc(TILESIZE*TILESIZE*sizeof(*image)); - x = TILESIZE*(i-TILES/2+w2); - y = TILESIZE*(j-TILES/2+h2); - for(k = 0; k < TILESIZE; k++) - memcpy((unsigned *)tiles[j][i].data+k*TILESIZE, - image+width*(y+k)+x, TILESIZE*sizeof *image); - } - else - tiles[j][i].data = bgdtile; - } - } - for(i = 0; i < TILES; i++) { - for(j = 0; j < TILES; j++) { - printf("%d ", tiles[j][i].data != bgdtile); - } - printf("\n"); - } -} - -#define MAXMESH 64 - -static float Ml[4*2*(MAXMESH+1)*2 * (MAXMESH+1)]; - -static void -mesh0(float x0, float x1, float y0, float y1, - float s0, float s1, float t0, float t1, float z, int nx,int ny) -{ - float y,x,s,t,dx,dy,ds,dt,vb[3],tb[2]; - float *mp = Ml; - - dx = (x1-x0)/nx; - dy = (y1-y0)/ny; - ds = (s1-s0)/nx; - dt = (t1-t0)/ny; - y = y0; - t = t0; - vb[2] = z; - while (y < y1) { - x = x0; - s = s0; - while(x <= x1) { - tb[0] = s; tb[1] = t; - vb[0] = x; vb[1] = y; - vb[2] = 0.0; - *mp++ = tb[0]; - *mp++ = tb[1]; - mp += 2; - *mp++ = vb[0]; - *mp++ = vb[1]; - *mp++ = vb[2]; - mp++; - tb[1] = t+dt; - vb[1] = y+dy; - vb[2] = 0.0; - *mp++ = tb[0]; - *mp++ = tb[1]; - mp += 2; - *mp++ = vb[0]; - *mp++ = vb[1]; - *mp++ = vb[2]; - mp++; - x += dx; - s += ds; - } - y += dy; - t += dt; - } -} - -static void -drawmesh(int nx,int ny) { - float *mp = Ml; - int i,j; - - glPushMatrix(); - if (zoom) glScalef(1.5f, 1.5f, 1.f); - glColor4f(1,1,1,1); - for (i = ny+1; i; i--) { - glBegin(GL_TRIANGLE_STRIP); - for (j = nx+1; j; j--) { - glTexCoord2fv(mp); - glVertex3fv(mp+4); - glTexCoord2fv(mp+8); - glVertex3fv(mp+12); mp += 16; - } - glEnd(); - } - glPopMatrix(); -} - -static void -help(void) { - printf("'h' - help\n"); - printf("'left' - pan left\n"); - printf("'right' - pan right\n"); - printf("'up' - pan up\n"); - printf("'down' - pan down\n"); - printf("'t' - toggle texture memory display\n"); - printf("'g' - toggle grid\n"); - printf("'x' - toggle auto pan\n"); - printf("'z' - toggle zoom\n"); -} - -static void -gfunc(void) { - grid ^= 1; -} - -static void -tfunc(void) { - texture ^= 1; -} - -static void anim(void); - -static void -xfunc(void) { - static int state; - glutIdleFunc((state ^= 1) ? anim : NULL); -} - -static void -zfunc(void) { - zoom ^= 1; -} - -#define CLAMP(v) { int w = TSIZE/2; \ - if (v < w) v = w; \ - else if (v > TILES*TILESIZE-w) v = TILES*TILESIZE-w; } -static void -up(void) { - y += 8; - CLAMP(y); -} - -static void -pfunc(void) { - static int delta = -1; - int xx = x + delta; - x += delta; CLAMP(x); - y += delta; CLAMP(y); - if (x != xx) delta = -delta; -} - -static void -down(void) { - y -= 8; - CLAMP(y); -} - -static void -right(void) { - x += 8; - CLAMP(x); -} - -static void -left(void) { - x -= 8; - CLAMP(x); -} - -static void -anim(void) { - static int delta = -1; - int xx = x + delta; - x += delta; - CLAMP(x); - y += delta; - CLAMP(y); - if (x != xx) delta = -delta; - glutPostRedisplay(); -} - - -static void -loadtiles(void) { - int lx, rx, ty, by; /* image bounding box */ - static int ox = TILES*TILESIZE/2, oy = TILES*TILESIZE/2; /* image origin */ - static int ot = 0, os = 0; - int dx = 0, dy = 0, nx = -1, ny = -1; - float trx, try; -#define S_TSIZE (TSIZE-TILESIZE) /* visible portion of texture = TSIZE less one tile for slop */ - - /* calculate tile #'s at corners of visible region */ - lx = x - S_TSIZE/2; - rx = lx + S_TSIZE; - by = y - S_TSIZE/2; - ty = by + S_TSIZE; - lx /= TILESIZE; rx /= TILESIZE; - by /= TILESIZE; ty /= TILESIZE; - - dx = ((x - S_TSIZE/2)/TILESIZE) - ((ox - S_TSIZE/2)/TILESIZE); - - nx = lx; ny = by; - if (dx < 0) { - /* add on left */ - os -= TILESIZE; - if (os < 0) os += TSIZE; - nx = lx; - } else if (dx > 0) { - nx = rx; - } - - dy = ((y - S_TSIZE/2) / TILESIZE) - ((oy - S_TSIZE/2) / TILESIZE); - if (dy > 0) { - /* add on bottom */ - ny = ty; - } else if (dy < 0) { - /* add on top */ - ot -= TILESIZE; - if (ot < 0) ot += TSIZE; - ny = by; - } -if (dx || dy) printf("dx %d dy %d lx %d rx %d by %d ty %d nx %d ny %d os %d ot %d\n", dx, dy, lx, rx, by, ty, nx, ny, os, ot); - if (dx) { - int t; - for(t = 0; t < TSIZE; t += TILESIZE) { - glTexSubImage2D(GL_TEXTURE_2D, 0, os, (t+ot) % TSIZE, TILESIZE, - TILESIZE, GL_RGBA, GL_UNSIGNED_BYTE, - tiles[ny+t/TILESIZE][nx].data); -printf("load %d %d %d %d\n", nx, ny+t/TILESIZE, os, (t+ot) % TSIZE); - } - } - - if (dy) { - int s; - for(s = 0; s < TSIZE; s += TILESIZE) { - glTexSubImage2D(GL_TEXTURE_2D, 0, (s+os) % TSIZE, ot, TILESIZE, - TILESIZE, GL_RGBA, GL_UNSIGNED_BYTE, - tiles[ny][nx+s/TILESIZE].data); -printf("load %d %d %d %d\n", nx+s/TILESIZE, ny, (s+os) % TSIZE, ot); - } - } - if (dx > 0) { - os += TILESIZE; - if (os >= TSIZE) os -= TSIZE; - } - if (dy > 0) { - ot += TILESIZE; - if (ot >= TSIZE) ot -= TSIZE; - } - ox = x; oy = y; - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - trx = (float)((x-TILES*TILESIZE/2) % TSIZE)/TSIZE; - try = (float)((y-TILES*TILESIZE/2) % TSIZE)/TSIZE; - glTranslatef(trx, try, 0.f); - glMatrixMode(GL_MODELVIEW); -} - -static void -init(char *filename) { - int i; - - mesh0(-1.f,1.f,-1.f,1.f,0.f,1.f,0.f,1.f,0.f,64,64); - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components < 3 || components > 4) { - printf("must be RGB or RGBA image\n"); - exit(EXIT_FAILURE); - } - } else { - int i, j; - components = 4; width = height = TSIZE; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - if (i & 1) - image[i+j*width] = 0xff; - else - image[i+j*width] = 0xff00; - if (j&1) - image[i+j*width] |= 0xff0000; - } - - } - if (width % TILESIZE || height % TILESIZE) { -#define TXSIZE 192 - unsigned *newimage = malloc(TXSIZE*TXSIZE*sizeof *newimage); - gluScaleImage(GL_RGBA, width, height, GL_UNSIGNED_BYTE, image, - TXSIZE, TXSIZE, GL_UNSIGNED_BYTE, newimage); - free(image); - image = newimage; width = height = TXSIZE; components = 4; - } - tile_image(image); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TSIZE, - TSIZE, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - for(i = 0; i < TILES; i++) { - int j; - for(j = 0; j < TILES; j++) { - glTexSubImage2D(GL_TEXTURE_2D, 0, i*TILESIZE, j*TILESIZE, TILESIZE, - TILESIZE, GL_RGBA, GL_UNSIGNED_BYTE, - tiles[(TILES-TSIZE/TILESIZE)/2+j][(TILES-TSIZE/TILESIZE)/2+i].data); - } - } - glEnable(GL_TEXTURE_2D); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90.,1.,.1,10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-1.0); - glLineWidth(3.0); - glClearColor(.25, .25, .25, .25); - - /* start at center of image */ - x = TILES*TILESIZE/2; - y = TILES*TILESIZE/2; -} - -void -showgrid(void) { - GLfloat mat[16]; - int i; - - glPushMatrix(); - glDisable(GL_TEXTURE_2D); - glPushMatrix(); - glColor3f(0.f, 0.f, 0.f); - if (!zoom) glScalef(1.f/1.5f, 1.f/1.5f, 1.f); - glBegin(GL_LINE_LOOP); - glVertex2f(-1.f,-1.f); - glVertex2f(-1.f, 1.f); - glVertex2f( 1.f, 1.f); - glVertex2f( 1.f,-1.f); - glEnd(); - glPopMatrix(); - - glGetFloatv(GL_TEXTURE_MATRIX,mat); - glPushMatrix(); - if (zoom) glScalef(1.5f,1.5f,1.f); - glTranslatef(-1.f,-1.f,-1.f); - glScalef(2.f,2.f,1.f); - glTranslatef(-mat[12], -mat[13], 1.0f); -#if 1 - glColor3f(1.f,1.f,1.f); -#else - glColor3f(1.f,0.f,0.f); -#endif - glBegin(GL_LINES); - for(i = -TSIZE; i <= 2*TSIZE; i+=TILESIZE) { - GLfloat x = (GLfloat)i/(GLfloat)TSIZE; - glVertex2f(-1.f,x); - glVertex2f(2.f,x); - glVertex2f(x,-1.f); - glVertex2f(x,2.f); - } - glEnd(); - glPopMatrix(); - glEnable(GL_TEXTURE_2D); - glPopMatrix(); -} - -static void -drawtexture(void) { - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - glLoadIdentity(); - glColor3f(1.f,1.f,1.f); - glBegin(GL_QUADS); - glTexCoord2f(0.f, 0.f); glVertex2f(-1.f, -1.f); - glTexCoord2f(0.f, 1.f); glVertex2f(-1.f, 1.f); - glTexCoord2f(1.f, 1.f); glVertex2f( 1.f, 1.f); - glTexCoord2f(1.f, 0.f); glVertex2f( 1.f, -1.f); - glEnd(); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); -} - -static void -display(void) { - glClear(GL_COLOR_BUFFER_BIT); - loadtiles(); - if (texture) { - drawtexture(); - } else { - drawmesh(64,64); - if (grid) showgrid(); - } - glutSwapBuffers(); -} - -static void -reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED1*/ -static void -key(unsigned char key, int x, int y) { - switch(key) { - case 'h': help(); break; - case 'g': gfunc(); break; - case 't': tfunc(); break; - case 'z': zfunc(); break; - case 'x': xfunc(); break; - case 'p': pfunc(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/*ARGSUSED1*/ -static void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - case GLUT_KEY_LEFT: left(); break; - case GLUT_KEY_RIGHT:right(); break; - } - glutPostRedisplay(); -} - -int main(int argc, char* argv[]) { - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - (void)glutCreateWindow(argv[0]); - init(argv[1] ? argv[1] : "../data/fendi.rgb"); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/texpage.dsp b/lib/glut-3.7.6/progs/advanced97/texpage.dsp deleted file mode 100644 index b3502b33d15dec260e7eb2f9b7b2723bf11907f2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texpage.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texpage" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texpage - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texpage.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texpage.mak" CFG="texpage - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texpage - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texpage - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texpage - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texpage - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texpage - Win32 Release" -# Name "texpage - Win32 Debug" -# Begin Source File - -SOURCE=.\texpage.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/textile.c b/lib/glut-3.7.6/progs/advanced97/textile.c deleted file mode 100644 index 1b60f3092ff61a8430823718b49645bcdb6687bd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/textile.c +++ /dev/null @@ -1,365 +0,0 @@ -/* -** cc -o textile textile.c -lGLU -lGL -lglut -lXmu -lX11 -lm -*/ -#include -#include -#include -#include -#include -#include "texture.h" - -int maxTextureSize; -int maxTextureLevel; - -int imageWidth, imageHeight; -GLubyte *imageData; - -int texWidthLevel0, texHeightLevel0; -int texWidthTiles, texHeightTiles; -GLubyte **texImageLevel; - -GLboolean useBorder = GL_TRUE; -GLboolean useClamp = GL_TRUE; -GLboolean useLinear = GL_TRUE; -GLboolean useMipmap = GL_TRUE; -GLboolean useTextureTiling = GL_TRUE; - -/* (int)floor(log2(a)) */ -static int -iflog2(unsigned int a) -{ - int x = 0; - while (a >>= 1) ++x; - return x; -} - -static void -initialize(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-0.5, 0.5, -0.5, 0.5, 0.5, 1.5); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -0.90); - glRotatef( 45.0, 0, 1, 0); - glTranslatef(-0.5, -0.5, 0.0); - -#if 0 - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); -#else - maxTextureSize = 32; -#endif - maxTextureLevel = iflog2(maxTextureSize); - - texImageLevel = (GLubyte **) calloc(maxTextureLevel+1, sizeof(GLubyte *)); - if (texImageLevel == NULL) { - fprintf(stderr, "texture level image allocation failed\n"); - exit(EXIT_FAILURE); - } - glClearColor(0.1, 0.1, 0.1, 0.1); -} - -static void -imgLoad(char *filename_in, int *w_out, int *h_out, GLubyte **img_out) -{ - int comp; - - *img_out = (GLubyte *)read_texture(filename_in, w_out, h_out, &comp); - if (img_out == NULL) { - fprintf(stderr, "unable to read %s\n", filename_in); - exit(EXIT_FAILURE); - } - if (comp != 3 && comp != 4) { - fprintf(stderr, "%s: image is not RGB or RGBA\n", filename_in); - exit(EXIT_FAILURE); - } -} - -static void -buildMipmaps(void) -{ - int level, levelWidth, levelHeight; - - if (useTextureTiling) { - int width2 = iflog2(imageWidth); - int height2 = iflog2(imageHeight); - - width2 = (width2 > maxTextureLevel) ? width2 : maxTextureLevel; - height2 = (height2 > maxTextureLevel) ? height2 : maxTextureLevel; - - texWidthLevel0 = 1 << width2; - texHeightLevel0 = 1 << height2; - texWidthTiles = texWidthLevel0 >> maxTextureLevel; - texHeightTiles = texHeightLevel0 >> maxTextureLevel; - } else { - texWidthLevel0 = maxTextureSize; - texHeightLevel0 = maxTextureSize; - texWidthTiles = 1; - texHeightTiles = 1; - } - - texImageLevel[0] = (GLubyte *) - calloc(1, (texWidthLevel0+2)*(texHeightLevel0+2)*4*sizeof(GLubyte)); - - glPixelStorei(GL_PACK_ROW_LENGTH, texWidthLevel0+2); - glPixelStorei(GL_PACK_SKIP_PIXELS, 1); - glPixelStorei(GL_PACK_SKIP_ROWS, 1); - - gluScaleImage(GL_RGBA, imageWidth, imageHeight, - GL_UNSIGNED_BYTE, imageData, - texWidthLevel0, texHeightLevel0, - GL_UNSIGNED_BYTE, texImageLevel[0]); - - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 1); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 1); - - levelWidth = texWidthLevel0; - levelHeight = texHeightLevel0; - for (level=0; level 1) ? levelWidth / 2 : 1; - int newLevelHeight = (levelHeight > 1) ? levelHeight / 2 : 1; - - texImageLevel[level+1] = (GLubyte *) - calloc(1, (newLevelWidth+2)*(newLevelHeight+2)*4*sizeof(GLubyte)); - - glPixelStorei(GL_PACK_ROW_LENGTH, newLevelWidth+2); - glPixelStorei(GL_UNPACK_ROW_LENGTH, levelWidth+2); - - gluScaleImage(GL_RGBA, levelWidth, levelHeight, - GL_UNSIGNED_BYTE, texImageLevel[level], - newLevelWidth, newLevelHeight, - GL_UNSIGNED_BYTE, texImageLevel[level+1]); - - levelWidth = newLevelWidth; - levelHeight = newLevelHeight; - } - - glPixelStorei(GL_PACK_ROW_LENGTH, 0); - glPixelStorei(GL_PACK_SKIP_PIXELS, 0); - glPixelStorei(GL_PACK_SKIP_ROWS, 0); - - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); -} - -static void -freeMipmaps(void) -{ - int i; - - for (i=0; i<=maxTextureLevel; ++i) { - if (texImageLevel[i] != NULL) { - free(texImageLevel[i]); - texImageLevel[i] = NULL; - } - } -} - -static void -loadTile(int row, int col) -{ - int border = useBorder ? 1 : 0; - int level, levelWidth, levelHeight; - - levelWidth = texWidthLevel0; - levelHeight = texHeightLevel0; - for (level=0; level<=maxTextureLevel; ++level) { - int tileWidth = levelWidth / texWidthTiles; - int tileHeight = levelHeight / texHeightTiles; - int skipPixels = col * tileWidth + (1 - border); - int skipRows = row * tileHeight + (1 - border); - - glPixelStorei(GL_UNPACK_ROW_LENGTH, levelWidth+2); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, skipPixels); - glPixelStorei(GL_UNPACK_SKIP_ROWS, skipRows); - - glTexImage2D(GL_TEXTURE_2D, level, 4, - tileWidth + 2*border, tileHeight + 2*border, - border, GL_RGBA, GL_UNSIGNED_BYTE, texImageLevel[level]); - - if (levelWidth > 1) levelWidth = levelWidth / 2; - if (levelHeight > 1) levelHeight = levelHeight / 2; - } - - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); -} - -static void -redraw(void) -{ - GLenum minFilterMode, magFilterMode, wrapMode; - char *minFilterName, *magFilterName, *wrapName; - int i, j; - - if (useLinear) { - if (useMipmap) { - minFilterMode = GL_LINEAR_MIPMAP_LINEAR; - minFilterName = "LINEAR_MIPMAP_LINEAR"; - } else { - minFilterMode = GL_LINEAR; - minFilterName = "LINEAR"; - } - magFilterMode = GL_LINEAR; - magFilterName = "LINEAR"; - } else { - if (useMipmap) { - minFilterMode = GL_NEAREST_MIPMAP_LINEAR; - minFilterName = "NEAREST_MIPMAP_LINEAR"; - } else { - minFilterMode = GL_NEAREST; - minFilterName = "NEAREST"; - } - magFilterMode = GL_NEAREST; - magFilterName = "NEAREST"; - } - - if (useClamp) { - wrapMode = GL_CLAMP; - wrapName = "CLAMP"; - } else { - wrapMode = GL_REPEAT; - wrapName = "REPEAT"; - } - - fprintf(stderr, "tile(%s) ", useTextureTiling ? "yes" : "no"); - fprintf(stderr, "border(%s) ", useBorder ? "yes" : "no"); - fprintf(stderr, "filter(%s, %s) ", minFilterName, magFilterName); - fprintf(stderr, "wrap(%s) ", wrapName); - fprintf(stderr, "\n"); - - glClear(GL_COLOR_BUFFER_BIT); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilterMode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilterMode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapMode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapMode); - - buildMipmaps(); - - glEnable(GL_TEXTURE_2D); - - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=textile - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "textile.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "textile.mak" CFG="textile - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "textile - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "textile - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "textile - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "textile - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "textile - Win32 Release" -# Name "textile - Win32 Debug" -# Begin Source File - -SOURCE=.\textile.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/texture.c b/lib/glut-3.7.6/progs/advanced97/texture.c deleted file mode 100644 index e3d28c0906bfd0dc058594a9652a3e108a2ff0d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texture.c +++ /dev/null @@ -1,256 +0,0 @@ -#include -#include -#include - -void -bwtorgba(unsigned char *b,unsigned char *l,int n) { - while(n--) { - l[0] = *b; - l[1] = *b; - l[2] = *b; - l[3] = 0xff; - l += 4; b++; - } -} - -void -latorgba(unsigned char *b, unsigned char *a,unsigned char *l,int n) { - while(n--) { - l[0] = *b; - l[1] = *b; - l[2] = *b; - l[3] = *a; - l += 4; b++; a++; - } -} - -void -rgbtorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *l,int n) { - while(n--) { - l[0] = r[0]; - l[1] = g[0]; - l[2] = b[0]; - l[3] = 0xff; - l += 4; r++; g++; b++; - } -} - -void -rgbatorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *a,unsigned char *l,int n) { - while(n--) { - l[0] = r[0]; - l[1] = g[0]; - l[2] = b[0]; - l[3] = a[0]; - l += 4; r++; g++; b++; a++; - } -} - -typedef struct _ImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short xsize, ysize, zsize; - unsigned int min, max; - unsigned int wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp, *tmpR, *tmpG, *tmpB; - unsigned long rleEnd; - unsigned int *rowStart; - int *rowSize; -} ImageRec; - -static void -ConvertShort(unsigned short *array, long length) { - unsigned b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void -ConvertLong(unsigned *array, long length) { - unsigned b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static ImageRec *ImageOpen(const char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - ImageRec *image; - int swapFlag; - int x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) { - swapFlag = 1; - } else { - swapFlag = 0; - } - - image = (ImageRec *)malloc(sizeof(ImageRec)); - if (image == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - if ((image->file = fopen(fileName, "rb")) == NULL) { - perror(fileName); - exit(1); - } - - fread(image, 1, 12, image->file); - - if (swapFlag) { - ConvertShort(&image->imagic, 6); - } - - image->tmp = (unsigned char *)malloc(image->xsize*256); - image->tmpR = (unsigned char *)malloc(image->xsize*256); - image->tmpG = (unsigned char *)malloc(image->xsize*256); - image->tmpB = (unsigned char *)malloc(image->xsize*256); - if (image->tmp == NULL || image->tmpR == NULL || image->tmpG == NULL || - image->tmpB == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - - if ((image->type & 0xFF00) == 0x0100) { - x = image->ysize * image->zsize * sizeof(unsigned); - image->rowStart = (unsigned *)malloc(x); - image->rowSize = (int *)malloc(x); - if (image->rowStart == NULL || image->rowSize == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - image->rleEnd = 512 + (2 * x); - fseek(image->file, 512, SEEK_SET); - fread(image->rowStart, 1, x, image->file); - fread(image->rowSize, 1, x, image->file); - if (swapFlag) { - ConvertLong(image->rowStart, x/(int)sizeof(unsigned)); - ConvertLong((unsigned *)image->rowSize, x/(int)sizeof(int)); - } - } - return image; -} - -static void -ImageClose(ImageRec *image) { - fclose(image->file); - free(image->tmp); - free(image->tmpR); - free(image->tmpG); - free(image->tmpB); - free(image); -} - -static void -ImageGetRow(ImageRec *image, unsigned char *buf, int y, int z) { - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((image->type & 0xFF00) == 0x0100) { - fseek(image->file, (long) image->rowStart[y+z*image->ysize], SEEK_SET); - fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize], - image->file); - - iPtr = image->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int)(pixel & 0x7F); - if (!count) { - return; - } - if (pixel & 0x80) { - while (count--) { - *oPtr++ = *iPtr++; - } - } else { - pixel = *iPtr++; - while (count--) { - *oPtr++ = pixel; - } - } - } - } else { - fseek(image->file, 512+(y*image->xsize)+(z*image->xsize*image->ysize), - SEEK_SET); - fread(buf, 1, image->xsize, image->file); - } -} - -unsigned * -read_texture(char *name, int *width, int *height, int *components) { - unsigned *base, *lptr; - unsigned char *rbuf, *gbuf, *bbuf, *abuf; - ImageRec *image; - int y; - - image = ImageOpen(name); - - if(!image) - return NULL; - (*width)=image->xsize; - (*height)=image->ysize; - (*components)=image->zsize; - base = (unsigned *)malloc(image->xsize*image->ysize*sizeof(unsigned)); - rbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - gbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - bbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - abuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - if(!base || !rbuf || !gbuf || !bbuf) - return NULL; - lptr = base; - for(y=0; yysize; y++) { - if(image->zsize>=4) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - ImageGetRow(image,abuf,y,3); - rgbatorgba(rbuf,gbuf,bbuf,abuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } else if(image->zsize==3) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - rgbtorgba(rbuf,gbuf,bbuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } else if(image->zsize==2) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,abuf,y,1); - latorgba(rbuf,abuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } else { - ImageGetRow(image,rbuf,y,0); - bwtorgba(rbuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } - } - ImageClose(image); - free(rbuf); - free(gbuf); - free(bbuf); - free(abuf); - - return (unsigned *) base; -} diff --git a/lib/glut-3.7.6/progs/advanced97/texture.dsp b/lib/glut-3.7.6/progs/advanced97/texture.dsp deleted file mode 100644 index 876c7f0f344f78c13751f96160998541eb0a00e5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texture.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texture" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texture - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texture.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texture.mak" CFG="texture - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texture - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texture - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texture - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texture - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texture - Win32 Release" -# Name "texture - Win32 Debug" -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/texture.h b/lib/glut-3.7.6/progs/advanced97/texture.h deleted file mode 100644 index 34012bdf3b5b3692fdde0708790f8b1ea38631b8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/texture.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * read_texture() - read in an image file in SGI 'libimage' format - * currently its very simple minded and converts all images - * to RGBA8 regardless of the input format and returns the - * original number of components in the appropriate parameter. - * - * - * the components are converted as follows - * L -> LLL 1.0 - * LA -> LLL A - * RGB -> RGB 1.0 - * RGBA -> RGB A - * - */ -unsigned * -read_texture(const char *name, int *width, int *height, int *components); diff --git a/lib/glut-3.7.6/progs/advanced97/underwater.c b/lib/glut-3.7.6/progs/advanced97/underwater.c deleted file mode 100644 index 4727f5a03240594bbd8b1dece3707cce4b187591..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/underwater.c +++ /dev/null @@ -1,220 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define expf(x) ((float)exp((x))) -#define sinf(x) ((float)sin((x))) -#endif - -static float transx = 1.0, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -#define PAN 1 -#define ROT 2 - -void -pan(const int x, const int y) { - transx += (x-ox)/5.; - transy -= (y-oy)/5.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(const int x, const int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -static GLfloat s_plane[4] = { 1.0, 0., 0., 0.}; -static GLfloat t_plane[4] = { 0., 0., 1.0, 0.}; -static GLfloat fog_params[5] = {.015, .1, .2, .2, .1}; - -void init(void) { - int width, height, components; - GLubyte *image; - - glClearColor (0.0, 0.0, 0.0, 0.0); - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_SMOOTH); - - if (!(image = (GLubyte *)read_texture("../data/sea.rgb", &width, &height, &components))) { - perror("sea.rgb"); - exit(EXIT_FAILURE); - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, image); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGenfv(GL_S, GL_EYE_PLANE, s_plane); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGenfv(GL_T, GL_EYE_PLANE, t_plane); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glFrontFace(GL_CW); - glCullFace(GL_BACK); - glMaterialf (GL_FRONT, GL_SHININESS, 64.0); - - glClearColor(.09f,.18f,.18f,1.f); - - glFogi(GL_FOG_MODE, GL_EXP); - glFogf(GL_FOG_DENSITY, fog_params[0]); - glFogfv(GL_FOG_COLOR, fog_params+1); - glEnable(GL_FOG); - { - GLfloat pos[] = {0.,150.,1.,1.}; - glLightfv(GL_LIGHT0, GL_POSITION, pos); - } -} - -void display(void) { - GLfloat s, t; - static float phase; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - s = sinf(phase); t = s; phase += M_PI/25.f; - if (phase > 2*M_PI) phase -= 2*M_PI; - glTranslatef(.5f, -0.5f, 0.f); - glScalef(.1f, .1f, 1.f); - glTranslatef(s, t, 0.f); - glMatrixMode(GL_MODELVIEW); - - glPushMatrix(); - glColor4f(.09, .18, .18, 1.f); - glDisable(GL_TEXTURE_2D); - glTranslatef(0., 0., -160.); - glScalef(200., 200., 1.); - glBegin(GL_POLYGON); - glVertex3f(-1.,-1.,0.); - glVertex3f( 1.,-1.,0.); - glVertex3f( 1., 1.,0.); - glVertex3f(-1., 1.,0.); - glEnd(); - glPopMatrix(); - glPushMatrix(); - glEnable(GL_TEXTURE_2D); - glTranslatef(0., 0., -100.+transx); - glRotatef(rotx, 0.0, 1.0, 0.0); - glScalef(10.f, 10.f, 10.f); - glutSolidTeapot(2.0); - glPopMatrix (); - glMatrixMode(GL_TEXTURE); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40., 1.0, 10.0, 200000.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void ffunc(void) { - static int state = 1; - if (state ^= 1) - glEnable(GL_FOG); - else - glDisable(GL_FOG); -} - -void help(void) { - printf("Usage: smoke [image]\n"); - printf("'h' - help\n"); - printf("'f' - toggle fog\n"); - printf("left mouse - pan\n"); - printf("right mouse - rotate\n"); -} - -/*ARGSUSED1*/ -void key (unsigned char key, int x, int y) { - switch (key) { - case 'f': ffunc(); break; - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } -} - -void animate(void) { - glutPostRedisplay(); -} - -int main(int argc, char** argv) { - glutInitWindowSize(256, 256); - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowPosition(100, 100); - glutCreateWindow (argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutIdleFunc(animate); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/underwater.dsp b/lib/glut-3.7.6/progs/advanced97/underwater.dsp deleted file mode 100644 index 4f42b32ec91c72476c0ad5c7e3533f143e3f95d0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/underwater.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="underwater" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=underwater - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "underwater.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "underwater.mak" CFG="underwater - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "underwater - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "underwater - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "underwater - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "underwater - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "underwater - Win32 Release" -# Name "underwater - Win32 Debug" -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# Begin Source File - -SOURCE=.\underwater.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/usespheremap.c b/lib/glut-3.7.6/progs/advanced97/usespheremap.c deleted file mode 100644 index 81ff5c2bf8db44ab23c5f72f6986d4b07f9c118e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/usespheremap.c +++ /dev/null @@ -1,252 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "texture.h" - -#ifndef __sgi -#define trunc(x) ((double)((int)(x))) -#endif - -GLsizei sphereTexW, sphereTexH, padSphereTexW, padSphereTexH; -GLint sphereTexComp; - - -const char defaultSphereMap[] = "../data/spheremap.rgb"; -int drawTorus = 1; - - -int roundup(int n) -{ - int val = 1; - while (val < n) val <<= 1; - return val; -} - -void create_texture(const char *fname, GLsizei *w, GLsizei *h, - GLsizei *padW, GLsizei *padH, GLint *comps) -{ - GLuint *img, *padImg = NULL; - int y; - - img = read_texture(fname, w, h, comps); - if (!img) { - fprintf(stderr, "Could not open %s\n", fname); - exit(1); - } - - /* if width & height are not powers of two, pad image with black */ - if (*w & (*w - 1)) { - *padW = roundup(*w); - } else { - *padW = *w; - } - if (*h & (*h - 1)) { - *padH = roundup(*h); - } else { - *padH = *h; - } - - if (*padW != *w || *padH != *h) { -printf("rounding %s up...\n", fname); - padImg = (GLuint *)malloc(*padW * *padH * sizeof(GLuint)); - if (!padImg) { - fprintf(stderr, "Malloc of %d bytes failed.\n", - *padW * *padH * sizeof(GLuint)); - exit(1); - } - memset(padImg, 0, *padW * *padH * sizeof(GLuint)); - for (y = 0; y < *h; y++) { - memcpy(&padImg[y * *padW], &img[y * *w], *w * sizeof(GLuint)); - } - } - - /* you should use texture objects here if your system supports them... */ -printf("w = %d h = %d\n", *padW, *padH); - glTexImage2D(GL_TEXTURE_2D, 0, 4, *padW, *padH, 0, - GL_RGBA, GL_UNSIGNED_BYTE, img); - - free(img); - if (padImg) free(padImg); -} - -void init(const char *sphereFile) -{ - static GLfloat lightpos[] = {.5, .75, 1.5, 1}; - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - create_texture(sphereFile, &sphereTexW, &sphereTexH, - &padSphereTexW, &padSphereTexH, &sphereTexComp); -} - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, 1, .01, 10); - gluLookAt(0, 0, 0, - 0, 0, -1, - 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void draw_room(void) -{ - /* material for the walls, floor, ceiling */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - glBegin(GL_QUADS); - - /* floor */ - glNormal3f(0, 1, 0); - glVertex3f(-1, -1, 1); - glVertex3f(1, -1, 1); - glVertex3f(1, -1, -1); - glVertex3f(-1, -1, -1); - - /* ceiling */ - glNormal3f(0, -1, 0); - glVertex3f(-1, 1, -1); - glVertex3f(1, 1, -1); - glVertex3f(1, 1, 1); - glVertex3f(-1, 1, 1); - - /* left wall */ - glNormal3f(1, 0, 0); - glVertex3f(-1, -1, -1); - glVertex3f(-1, 1, -1); - glVertex3f(-1, 1, 1); - glVertex3f(-1, -1, 1); - - /* right wall */ - glNormal3f(-1, 0, 0); - glVertex3f(1, -1, 1); - glVertex3f(1, 1, 1); - glVertex3f(1, 1, -1); - glVertex3f(1, -1, -1); - - /* far wall */ - glNormal3f(0, 0, 1); - glVertex3f(-1, -1, -1); - glVertex3f(1, -1, -1); - glVertex3f(1, 1, -1); - glVertex3f(-1, 1, -1); - - glEnd(); - -} - -void draw_torus(GLdouble angle) -{ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, - GL_NEAREST); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glEnable(GL_CULL_FACE); - - glPushMatrix(); - glTranslatef(0, 0, -3); - glRotatef(angle, 1, 1, 0); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - - if (drawTorus) { - glutSolidTorus(.4, .75, 32, 32); - } else { - GLUquadricObj *sphere = gluNewQuadric(); - gluSphere(sphere, 1, 32, 32); - } - - glDisable(GL_TEXTURE_2D); - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glEnable(GL_LIGHTING); - glDisable(GL_CULL_FACE); - - glPopMatrix(); -} - -GLdouble get_secs(void) -{ - return glutGet(GLUT_ELAPSED_TIME) / 1000.0; -} - -void draw(void) -{ - GLenum err; - GLdouble secs, degrees; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* one revolution every 10 seconds... */ - secs = get_secs(); - secs = secs - 10.*trunc(secs / 10.); - degrees = (secs/10.) * (360.); - -#if 0 - draw_room(); -#endif - draw_torus(degrees); - - err = glGetError(); - if (err != GL_NO_ERROR) printf("Error: %s\n", gluErrorString(err)); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - static int idle = 1; - if (key == 27) exit(0); - if (key == 'o' || key == 'O') { - drawTorus = (drawTorus == 0); - draw(); - } else { - if (idle) { - glutIdleFunc(0); - } else { - glutIdleFunc(draw); - } - idle = (idle == 0); - } -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(256, 256); - glutInitWindowPosition(0, 0); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glutDisplayFunc(draw); - glutIdleFunc(draw); - glutKeyboardFunc(key); - glutReshapeFunc(reshape); - init(defaultSphereMap); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/advanced97/usespheremap.dsp b/lib/glut-3.7.6/progs/advanced97/usespheremap.dsp deleted file mode 100644 index ce04921b3c44d6d803e78f7590ec49ec0b159009..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/usespheremap.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="usespheremap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=usespheremap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "usespheremap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "usespheremap.mak" CFG="usespheremap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "usespheremap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "usespheremap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "usespheremap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "usespheremap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "usespheremap - Win32 Release" -# Name "usespheremap - Win32 Debug" -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# Begin Source File - -SOURCE=.\usespheremap.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/vapor.c b/lib/glut-3.7.6/progs/advanced97/vapor.c deleted file mode 100644 index f51625849dcde6d3ea6a26588e7b2a347748df3b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/vapor.c +++ /dev/null @@ -1,376 +0,0 @@ -#include -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -/* Most math.h's do not define float versions of the trig functions. */ -#define sinf sin -#define cosf cos -#define atan2f atan2 -#endif - - -/* taken from skyfly */ -static float paper_plane_vertexes[] = { -/*Nx Ny Nz Vx Vy Vz */ -/* ---------------------------- Top view of plane, middle stretched open */ - 0.2, 0., .98, -.10, 0, .02,/* vertex #'s 4 (.48,0,-.06) */ - 0., 0., 1., -.36, .20, -.04,/* . */ - 0., 0., 1., .36, .01, 0,/* ... */ - 0., 0.,-1., -.32, .02, 0,/* . +X */ - 0., 1., 0., .48, 0, -.06,/* 2 . 6,8 ^ */ - 0., 1., 0., -.30, 0, -.12,/* . . . | */ - 0.,-1., 0., .36, -.01, 0,/* .. . .. | */ - 0.,-1., 0., -.32, -.02, 0,/* . . . | */ - 0., 0.,-1., .36, -.01, 0,/* . . . . . +Y<-----* */ - 0., 0.,-1., -.36, -.20, -.04,/* . . . for this picture */ - -0.2, 0., .98, -.10, 0, .02,/* . . . . . coord system rot. */ - -0.2, 0., -.98, -.10, 0, .02,/* . . . 90 degrees */ - 0., 0., -1., -.36, .20, -.04,/* . . . . . */ - 0., 0., -1., .36, .01, 0,/* . # . # marks */ - 0., 0., 1., -.32, .02, 0,/* . . . . . (0,0) origin */ - 0., -1., 0., .48, 0, -.06,/* . . . (z=0 at top */ - 0., -1., 0., -.30, 0, -.12,/* . 0 . 10 . of plane) */ - 0.,1., 0., .36, -.01, 0,/* . . . . . */ - 0.,1., 0., -.32, -.02, 0,/* . . . . . . . */ - 0., 0.,1., .36, -.01, 0,/* . . . . . */ - 0., 0.,1., -.36, -.20, -.04,/* 1.......3.5.7.......9 */ - 0.2, 0., -.98, -.10, 0, .02,/* (-.36,.2,-.04) */ -}; - -#define MAX_TIME (2*196) -#define MAX_VAPOR 1024 -int vapors = 0; -static struct vapor { - float x, y, z; - int time; - float size; -} vapor[MAX_VAPOR]; - -static float ttrans[2]; -static float scale = 1.; -static float transx, transy, rotx, roty; -static int ox = -1, oy = -1; -static int show_t = 0; -static int mot; -#define PAN 1 -#define ROT 2 - -static int _time = 1; -static float _x = -1.; -static float _y = .75; - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void toggle_t(void) { - show_t ^= 1; -} - -void wire(void) { - static int w; - if (w ^= 1) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); -} - -void light(void) { - static int l; - if (l ^= 1) - glEnable(GL_LIGHTING); - else - glDisable(GL_LIGHTING); -} - -void up(void) { scale += .1; } -void down(void) { scale -= .1; } - -void -draw_plane(void) { - glEnable(GL_LIGHTING); - glShadeModel(GL_FLAT); - glRotatef(-120.f, 1.f, 0.f, 0.f); -#define nv(p) glNormal3fv(paper_plane_vertexes+6*p); glVertex3fv(paper_plane_vertexes+6*p+3) - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - glBegin(GL_TRIANGLE_STRIP); - nv(0); nv(1); nv(2); nv(3); nv(4); nv(5); nv(6); nv(7); nv(8); nv(9); nv(10); - glEnd(); - glCullFace(GL_BACK); - glBegin(GL_TRIANGLE_STRIP); - nv(11); nv(12); nv(13); nv(14); nv(15); nv(16); nv(17); nv(18); nv(19); nv(20); nv(21); - glEnd(); - glDisable(GL_CULL_FACE); - glShadeModel(GL_SMOOTH); - glDisable(GL_LIGHTING); -#undef nv -} - -void -add_vapor(void) { - int i; - /* garbage collect */ - for(i = 0; i < vapors; i++) - if (_time - vapor[i].time > MAX_TIME) { - memcpy(vapor+i, vapor+i+1, (vapors-i-1)*sizeof vapor[0]); - vapors--; - } - if (vapors >= MAX_VAPOR) { - printf("max_vapors\n"); - return; - } - vapor[vapors].time = _time; - vapor[vapors].x = -.6f + _x; - vapor[vapors].y = _y; - vapor[vapors].z = 0.f; - vapor[vapors].size = 1.f; - vapors++; - if (_x > 8.5) { - _y = .75f; - _x = -2.f; - vapors = 0; - } -} - -void -animate(void) { - static int cnt = 0; - ttrans[0] += .01; - if (ttrans[0] == 1.0) ttrans[0] = 0; - ttrans[1] += .005; - if (ttrans[1] == 1.0) ttrans[1] = 0; - _y -= .01f; - _x +=.025f; - if (cnt++ & 1) add_vapor(); - _time++; - glutPostRedisplay(); -} - -void help(void) { - printf("Usage: vapor [image]\n"); - printf("'h' - help\n"); - printf("'l' - toggle lighting\n"); - printf("'t' - toggle wireframe\n"); - printf("'UP' - scale up\n"); - printf("'DOWN' - scale down\n"); - printf("left mouse - pan\n"); - printf("middle mouse - rotate\n"); -} - -void init(char *filename) { - static GLfloat plane_mat[] = { 1.f, 1.f, .2f, 1.f }; - static unsigned *image; - static int width, height, components, i; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components != 2 && components != 4) { - printf("must be an rgba or la image\n"); - exit(EXIT_FAILURE); - } - for(i = 0; i < width*height; i++) - image[i] = image[i] | 0xffffff00; - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 512; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if (i & 32) - img[4*(i+j*width)+0] = 0xff; - else - img[4*(i+j*width)+1] = 0xff; - if (j&32) - img[4*(i+j*width)+2] = 0xff; - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - - glEnable(GL_LIGHT0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, plane_mat); - - glClearColor(0.1, 0.1, 0.6, 1.0); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GREATER, 0./255.); - - glEnable(GL_DEPTH_TEST); -} - -void -draw_vapor(void) { - int i; - float intensity = .9f; - float t; - struct vapor *v; - - glDepthMask(0); - glEnable(GL_TEXTURE_2D); - - for(i = 0; i < vapors; i++) { - v = vapor+i; - t = _time - v->time; - - glPushMatrix(); - glTranslatef(v->x, v->y, v->z); - glScalef(.5*(t+40)/MAX_TIME, .5*(t+40)/MAX_TIME, 1.); - glColor4f(intensity,intensity,intensity,10./(t+0.f)); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1., -1., -0.); - glTexCoord2f(0, 1); glVertex3f(-1., 1., 0.); - glTexCoord2f(1, 1); glVertex3f( 1., 1., 0.); - glTexCoord2f(1, 0); glVertex3f( 1., -1., -0.); - glEnd(); - if (show_t) { - glDisable(GL_TEXTURE_2D); - glColor4f(0.,0.,0.,1.0); - glBegin(GL_LINE_LOOP); - glVertex3f(-1., -1., -0.); - glVertex3f(-1., 1., 0.); - glVertex3f( 1., 1., 0.); - glVertex3f( 1., -1., -0.); - glEnd(); - glEnable(GL_TEXTURE_2D); - } - glPopMatrix(); - } - glDisable(GL_TEXTURE_2D); - glDepthMask(1); -} - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glPushMatrix(); - glColor4f(1.f,1.f,.2f,1.f); - glTranslatef(_x, _y+.05f, 0.f); - glScalef(2.f,2.f,2.f); - glRotatef(-10.f, 0.f, 0.f, 1.f); - draw_plane(); - glPopMatrix(); - draw_vapor(); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'l': light(); break; - case 't': toggle_t(); break; - case 'w': wire(); break; - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/*ARGSUSED1*/ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - } -} - -int main(int argc, char** argv) { - glutInitWindowSize(256, 256); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH); - (void)glutCreateWindow(argv[0]); - init(argc == 1 ? "../data/smoke.bw" : argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/vapor.dsp b/lib/glut-3.7.6/progs/advanced97/vapor.dsp deleted file mode 100644 index 6d9799dfb7b5f2aa51ce3a02044fb1b7d8570e1c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/vapor.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vapor" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=vapor - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "vapor.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "vapor.mak" CFG="vapor - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "vapor - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "vapor - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "vapor - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "vapor - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "vapor - Win32 Release" -# Name "vapor - Win32 Debug" -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# Begin Source File - -SOURCE=.\vapor.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/volume.c b/lib/glut-3.7.6/progs/advanced97/volume.c deleted file mode 100644 index c9d39e09f981c4f068801f6d8d839125fcc484f8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/volume.c +++ /dev/null @@ -1,666 +0,0 @@ -#include -#include -#include "texture.h" -#include -#include -#include - -/* nonzero if not power of 2 */ -#define NOTPOW2(num) ((num) & (num - 1)) - -int -makepow2(int val) -{ - int power = 0; - if(!val) - return 0; - - while(val >>= 1) - power++; - - return(1 << power); -} - -#define CHECK_ERROR(str) \ -{ \ - GLenum error; \ - if(error = glGetError()) \ - printf("GL Error: %s (%s)\n", gluErrorString(error), str); \ -} - -enum {X, Y, Z, W}; -enum {R, G, B, A}; -enum {OVER, ATTENUATE, NONE, LASTOP}; /* blend modes */ -/* mouse modes */ -enum {OBJ_ANGLE, SLICES, CUTTING, GEOMXY, GEOMZ, MINBOOST, BOOSTWID, BOOST}; -enum {NOLIST, SPHERE}; /* display list */ - -/* window dimensions */ -int winWidth = 512; -int winHeight = 512; -int active; -int operator = OVER; -GLboolean texture = GL_TRUE; -GLboolean dblbuf = GL_TRUE; -GLboolean cut = GL_FALSE; -GLboolean geom = GL_FALSE; -GLboolean map = GL_FALSE; -GLint cutbias = 50; -int hasBlendColor = 0; -#if defined(_WIN32) && !defined(MESA) -#include -PFNGLBLENDCOLOREXTPROC glBlendColorEXT; -#endif - -GLfloat objangle[2] = {0.f, 0.f}; -GLfloat objpos[3] = {0.f, 0.f, 0.f}; - - -GLfloat minboost = 0.f, boostwid = .03f, boost = 3.f; /* transfer function */ - -/* 3d texture data that's read in */ -/* XXX TODO; make command line arguments */ -int Texwid = 128; /* dimensions of each 2D texture */ -int Texht = 128; -int Texdepth = 69; /* number of 2D textures */ - -/* Actual dimensions of the texture (restricted to max 3d texture size) */ -int texwid, texht, texdepth; -int slices; -GLubyte *tex3ddata; /* pointer to 3D texture data */ - - -GLfloat *lighttex = 0; -GLfloat lightpos[4] = {0.f, 0.f, 1.f, 0.f}; -GLboolean lightchanged[2] = {GL_TRUE, GL_TRUE}; - - -void -reshape(int wid, int ht) -{ - winWidth = wid; - winHeight = ht; - glViewport(0, 0, wid, ht); -} - - -void -motion(int x, int y) -{ - switch(active) - { - case OBJ_ANGLE: - objangle[X] = (x - winWidth/2) * 360./winWidth; - objangle[Y] = (y - winHeight/2) * 360./winHeight; - glutPostRedisplay(); - break; - case SLICES: - slices = x * texwid/winWidth; - glutPostRedisplay(); - break; - case CUTTING: - cutbias = (x - winWidth/2) * 300/winWidth; - glutPostRedisplay(); - break; - case GEOMXY: - objpos[X] = (x - winWidth/2) * 300/winWidth; - objpos[Y] = (winHeight/2 - y) * 300/winHeight; - glutPostRedisplay(); - break; - case GEOMZ: - objpos[Z] = (x - winWidth/2) * 300/winWidth; - glutPostRedisplay(); - break; - case MINBOOST: - minboost = x * .25f/winWidth; - glutPostRedisplay(); - break; - case BOOSTWID: - boostwid = x * .5f/winWidth; - glutPostRedisplay(); - break; - case BOOST: - boost = x * 20.f/winWidth; - glutPostRedisplay(); - break; - } -} - -void -mouse(int button, int state, int x, int y) -{ - if(state == GLUT_DOWN) - switch(button) - { - case GLUT_LEFT_BUTTON: /* rotate the data volume */ - if(map) - active = MINBOOST; - else - active = OBJ_ANGLE; - motion(x, y); - break; - case GLUT_MIDDLE_BUTTON: - if(map) - active = BOOSTWID; - else - if(cut) - active = CUTTING; /* move cutting plane */ - else - active = GEOMXY; /* move geometry */ - motion(x, y); - break; - case GLUT_RIGHT_BUTTON: /* move the polygon */ - if(map) - active = BOOST; - else - if(geom) - active = GEOMZ; - else - active = SLICES; - motion(x, y); - break; - } -} - -/* use pixel path to remap 3D texture data */ -void -remaptex(void) -{ - int i, size; - GLfloat *map; - - glPixelTransferi(GL_MAP_COLOR, GL_TRUE); - - glGetIntegerv(GL_MAX_PIXEL_MAP_TABLE, &size); - - map = (GLfloat *)malloc(sizeof(GLfloat) * size); - for(i = 0; i < size;i++) - { - map[i] = (GLfloat)i/(size - 1); - if(((GLfloat)i/size > minboost) && - ((GLfloat)i/size < minboost + boostwid)) - { - map[i] *= boost; - } - else - map[i] /= boost; - } - - glPixelMapfv(GL_PIXEL_MAP_R_TO_R, size, map); - glPixelMapfv(GL_PIXEL_MAP_G_TO_G, size, map); - glPixelMapfv(GL_PIXEL_MAP_B_TO_B, size, map); - glPixelMapfv(GL_PIXEL_MAP_A_TO_A, size, map); - -#ifdef GL_EXT_texture3D - glTexImage3DEXT(GL_TEXTURE_3D_EXT, 0, GL_LUMINANCE_ALPHA, - texwid, texht, texdepth, - 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex3ddata); -#endif - - glPixelTransferi(GL_MAP_COLOR, GL_FALSE); - free(map); - - CHECK_ERROR("OpenGL Error in remaptex()"); -} - - -GLdouble clipplane0[] = {-1., 0., 0., 100.}; /* x < 100 out */ -GLdouble clipplane1[] = { 1., 0., 0., 100.}; /* x > 100 out */ -GLdouble clipplane2[] = { 0., -1., 0., 100.}; /* y < 100 out */ -GLdouble clipplane3[] = { 0., 1., 0., 100.}; /* y > 100 out */ -GLdouble clipplane4[] = { 0., 0., -1., 100.}; /* z < 100 out */ -GLdouble clipplane5[] = { 0., 0., 1., 100.}; /* z > 100 out */ - -/* define a cutting plane */ -GLdouble cutplane[] = {0.f, -.5f, -2.f, 50.f}; - -/* draw the object unlit without surface texture */ -void redraw(void) -{ - int i; - GLfloat offS, offT, offR; /* mapping texture to planes */ - - offS = 200.f/texwid; - offT = 200.f/texht; - offR = 200.f/texdepth; - - clipplane0[W] = 100.f - offS; - clipplane1[W] = 100.f - offS; - clipplane2[W] = 100.f - offT; - clipplane3[W] = 100.f - offT; - clipplane4[W] = 100.f - offR; - clipplane5[W] = 100.f - offR; - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - if(map) - remaptex(); - - /* GL_MODELVIEW */ - if(cut) - { - cutplane[W] = cutbias; - glClipPlane(GL_CLIP_PLANE5, cutplane); - } - - glPushMatrix(); /* identity */ - glRotatef(objangle[X], 0.f, 1.f, 0.f); - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - glClipPlane(GL_CLIP_PLANE0, clipplane0); - glClipPlane(GL_CLIP_PLANE1, clipplane1); - glClipPlane(GL_CLIP_PLANE2, clipplane2); - glClipPlane(GL_CLIP_PLANE3, clipplane3); - glClipPlane(GL_CLIP_PLANE4, clipplane4); - if(!cut) - glClipPlane(GL_CLIP_PLANE5, clipplane5); - glPopMatrix(); /* back to identity */ - - /* draw opaque geometry here */ - glDisable(GL_CLIP_PLANE0); - glDisable(GL_CLIP_PLANE1); - glDisable(GL_CLIP_PLANE2); - glDisable(GL_CLIP_PLANE3); - glDisable(GL_CLIP_PLANE4); - if(geom) - { - if(!cut) - glDisable(GL_CLIP_PLANE5); - glPushMatrix(); - glTranslatef(objpos[X], objpos[Y], objpos[Z]); - glCallList(SPHERE); - glPopMatrix(); - } - glMatrixMode(GL_TEXTURE); - glEnable(GL_CLIP_PLANE0); - glEnable(GL_CLIP_PLANE1); - glEnable(GL_CLIP_PLANE2); - glEnable(GL_CLIP_PLANE3); - glEnable(GL_CLIP_PLANE4); - glEnable(GL_CLIP_PLANE5); - - glMatrixMode(GL_TEXTURE); - glPushMatrix(); /* identity */ - glTranslatef( .5f, .5f, .5f); - glRotatef(objangle[Y], 1.f, 0.f, 0.f); - glRotatef(objangle[X], 0.f, 0.f, 1.f); - glTranslatef( -.5f, -.5f, -.5f); - - switch(operator) - { - case OVER: - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - break; - case ATTENUATE: -#ifdef GL_EXT_blend_color - if (hasBlendColor){ - glEnable(GL_BLEND); - glBlendFunc(GL_CONSTANT_ALPHA_EXT, GL_ONE); - glBlendColorEXT(1.f, 1.f, 1.f, 1.f/slices); - } else -#endif - { - fprintf(stderr, "volume: attenuate not supported!\n"); - } - break; - case NONE: - /* don't blend */ - break; - } - - if(texture) { -#ifdef GL_EXT_texture3D - glEnable(GL_TEXTURE_3D_EXT); -#endif - } else { -#ifdef GL_EXT_texture3D - glDisable(GL_TEXTURE_3D_EXT); -#endif - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - } - - - - for(i = 0; i < slices; i++) - { - glBegin(GL_QUADS); - glVertex3f(-100.f, -100.f, - -100.f + offR + i * (200.f - 2 * offR)/(slices - 1)); - glVertex3f( 100.f, -100.f, - -100.f + offR + i * (200.f - 2 * offR)/(slices - 1)); - glVertex3f( 100.f, 100.f, - -100.f + offR + i * (200.f - 2 * offR)/(slices - 1)); - glVertex3f(-100.f, 100.f, - -100.f + offR + i * (200.f - 2 * offR)/(slices - 1)); - glEnd(); - } -#ifdef GL_EXT_texture3D - glDisable(GL_TEXTURE_3D_EXT); -#endif - if(!texture) - { - glDisable(GL_LIGHTING); - } - glDisable(GL_BLEND); - - glPopMatrix(); /* back to identity */ - glMatrixMode(GL_MODELVIEW); - - if(operator == ATTENUATE) - { - glPixelTransferf(GL_RED_SCALE, 3.f); /* brighten image */ - glPixelTransferf(GL_GREEN_SCALE, 3.f); - glPixelTransferf(GL_BLUE_SCALE, 3.f); - glCopyPixels(0, 0, winWidth, winHeight, GL_COLOR); - } - if(dblbuf) - glutSwapBuffers(); - else - glFlush(); - - CHECK_ERROR("OpenGL Error in redraw()"); -} - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) - { - case 'm': /* remap texture values */ - if(map) - { - fprintf(stderr, "remapping off\n"); - map = GL_FALSE; - } - else - { - fprintf(stderr, "remapping on:\n" - "left mouse moves emphasize value\n" - "middle mouse moves emphasize width\n" - "right mouse adjusts gain\n"); - map = GL_TRUE; - } - - remaptex(); - glutPostRedisplay(); - break; - case 'o': - operator++; - if(operator == LASTOP) - operator = OVER; - glutPostRedisplay(); - break; - case 't': - if(texture) - texture = GL_FALSE; - else - texture = GL_TRUE; - glutPostRedisplay(); - break; - case 'c': - if(cut) - { - fprintf(stderr, "cutting plane off\n"); - cut = GL_FALSE; - } - else - { - fprintf(stderr, - "Cutting plane on: " - "middle mouse (horizontal) moves cutting plane\n"); - cut = GL_TRUE; - } - glutPostRedisplay(); - break; - case 'g': /* toggle geometry */ - if(geom) - geom = GL_FALSE; - else - geom = GL_TRUE; - glutPostRedisplay(); - break; - case '\033': - exit(0); - break; - case '?': - case 'h': - default: - fprintf(stderr, - "Keyboard Commands\n" - "m - toggle transfer function (remapping)\n" - "o - toggle operator\n" - "t - toggle 3D texturing\n" - "c - toggle cutting plane\n" - "g - toggle geometry\n"); - break; - } -} - -GLubyte * -loadtex3d(int *texwid, int *texht, int *texdepth, int *texcomps) -{ - char *filename; - GLubyte *tex3ddata; - GLuint *texslice; /* 2D slice of 3D texture */ - GLint max3dtexdims; /* maximum allowed 3d texture dimension */ - GLint newval; - int i; - - /* load 3D texture data */ - filename = (char*)malloc(sizeof(char) * strlen("../data/skull/skullXX.la")); - - tex3ddata = (GLubyte *)malloc(Texwid * Texht * Texdepth * - 4 * sizeof(GLubyte)); - for(i = 0; i < Texdepth; i++) - { - sprintf(filename, "../data/skull/skull%d.la", i); - /* read_texture reads as RGBA */ - texslice = read_texture(filename, texwid, texht, texcomps); - memcpy(&tex3ddata[i * Texwid * Texht * 4], /* copy in a slice */ - texslice, - Texwid * Texht * 4 * sizeof(GLubyte)); - free(texslice); - } - free(filename); - - *texdepth = Texdepth; - - max3dtexdims = 0; -#ifdef GL_EXT_texture3D - glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE_EXT, &max3dtexdims); -#endif - - /* adjust width */ - newval = *texwid; - if(*texwid > max3dtexdims) - newval = max3dtexdims; - if(NOTPOW2(*texwid)) - newval = makepow2(*texwid); - if(newval != *texwid) - { - glPixelStorei(GL_UNPACK_ROW_LENGTH, *texwid); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, (*texwid - newval)/2); - *texwid = newval; - } - - /* adjust height */ - newval = *texht; - if(*texht > max3dtexdims) - newval = max3dtexdims; - if(NOTPOW2(*texht)) - newval = makepow2(*texht); - if(*texht > newval) - { -#ifdef GL_EXT_texture3D - glPixelStorei(GL_UNPACK_IMAGE_HEIGHT_EXT, *texht); -#endif - glPixelStorei(GL_UNPACK_SKIP_ROWS, (*texht - newval)/2); - *texht = newval; - } - - /* adjust depth */ - newval = *texdepth; - if(*texdepth > max3dtexdims) - newval = max3dtexdims; - if(NOTPOW2(*texdepth)) - newval = makepow2(*texdepth); - if(*texdepth > newval) - { - *texdepth = newval; - } - return tex3ddata; -} - - - -main(int argc, char *argv[]) -{ - int texcomps; - static GLfloat splane[4] = {1.f/200.f, 0.f, 0.f, .5f}; - static GLfloat rplane[4] = {0, 1.f/200.f, 0, .5f}; - static GLfloat tplane[4] = {0, 0, 1.f/200.f, .5f}; - static GLfloat lightpos[4] = {150., 150., 150., 1.f}; - - - glutInit(&argc, argv); - glutInitWindowSize(winWidth, winHeight); - if(argc > 1) - { - char *args = argv[1]; - GLboolean done = GL_FALSE; - while(!done) - { - switch(*args) - { - case 's': /* single buffer */ - printf("Single Buffered\n"); - dblbuf = GL_FALSE; - break; - case '-': /* do nothing */ - break; - case 0: - done = GL_TRUE; - break; - } - args++; - } - } - if(dblbuf) - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE); - else - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH); - - (void)glutCreateWindow("volume rendering demo"); - glutDisplayFunc(redraw); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutKeyboardFunc(key); - - /* Initialize OpenGL State */ - - /* draw a perspective scene */ -#if 0 - glMatrixMode(GL_PROJECTION); - /* cube, 300 on a side */ - glFrustum(-150., 150., -150., 150., 300., 600.); - glMatrixMode(GL_MODELVIEW); - /* look at scene from (0, 0, 450) */ - gluLookAt(0., 0., 450., 0., 0., 0., 0., 1., 0.); -#else - glMatrixMode(GL_PROJECTION); - /* cube, 300 on a side */ - glOrtho(-150., 150., -150., 150., -150., 150.); - glMatrixMode(GL_MODELVIEW); -#endif - - glEnable(GL_DEPTH_TEST); -#ifdef GL_EXT_texture3D - glEnable(GL_TEXTURE_3D_EXT); -#endif - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - - glTexGenfv(GL_S, GL_OBJECT_PLANE, splane); - glTexGenfv(GL_T, GL_OBJECT_PLANE, tplane); - glTexGenfv(GL_R, GL_OBJECT_PLANE, rplane); - -#ifdef GL_EXT_texture3D - /* to avoid boundary problems */ - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_R_EXT, GL_CLAMP); -#endif - - glEnable(GL_CLIP_PLANE0); - glEnable(GL_CLIP_PLANE1); - glEnable(GL_CLIP_PLANE2); - glEnable(GL_CLIP_PLANE3); - glEnable(GL_CLIP_PLANE4); - glEnable(GL_CLIP_PLANE5); - - glDisable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - - - tex3ddata = loadtex3d(&texwid, &texht, &texdepth, &texcomps); - - slices = texht; - -#ifdef GL_EXT_texture3D - glTexParameteri(GL_TEXTURE_3D_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage3DEXT(GL_TEXTURE_3D_EXT, 0, GL_LUMINANCE_ALPHA, - texwid, texht, texdepth, - 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex3ddata); -#endif - - /* make a display list containing a sphere */ - glNewList(SPHERE, GL_COMPILE); - { - static GLfloat lightpos[] = {150.f, 150.f, 150.f, 1.f}; - static GLfloat material[] = {1.f, .5f, 1.f, 1.f}; - GLUquadricObj *qobj = gluNewQuadric(); - glPushAttrib(GL_LIGHTING_BIT); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, material); - gluSphere(qobj, 20.f, 20, 20); - gluDeleteQuadric(qobj); - glPopAttrib(); - } - glEndList(); - - key('?', 0, 0); /* print usage message */ - - CHECK_ERROR("end of main"); - - if(!glutExtensionSupported("GL_EXT_texture3d")) { - fprintf(stderr, - "volume: requires OpenGL texture 3D extension to operate correctly.\n"); - } - hasBlendColor = glutExtensionSupported("GL_EXT_blend_color"); - if(!hasBlendColor) { - fprintf(stderr, - "volume: needs OpenGL blend color extension to attenuate.\n"); -#if defined(_WIN32) && !defined(MESA) - glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC) wglGetProcAddress("glBlendColorEXT"); - if (glBlendColorEXT == NULL) { - hasBlendColor = 0; - } -#endif - } - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/advanced97/volume.dsp b/lib/glut-3.7.6/progs/advanced97/volume.dsp deleted file mode 100644 index 6f861e108f5693f22881dc1254b0adf1f7110ac2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/volume.dsp +++ /dev/null @@ -1,89 +0,0 @@ -# Microsoft Developer Studio Project File - Name="volume" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=volume - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "volume.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "volume.mak" CFG="volume - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "volume - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "volume - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "volume - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "volume - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "volume - Win32 Release" -# Name "volume - Win32 Debug" -# Begin Source File - -SOURCE=.\volume.c -# PROP Exclude_From_Build 1 -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/warp.c b/lib/glut-3.7.6/progs/advanced97/warp.c deleted file mode 100644 index 069da6a5a7768134257623b9c02c5f9584edc3d7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/warp.c +++ /dev/null @@ -1,323 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -static unsigned *image; -static int width, height, components; -static float incr = .01, dir = 1.0; -static float scale = 1.0, tscale = 1.0, trotx, troty; - -static float transx = 1.0, transy, rotx, roty; -static int ox = -1, oy = -1; -static int mot = 0; -float *wrotx = &rotx, *wroty = &roty, *wscale = &scale; -#define PAN 1 -#define ROT 2 - -void -pan(const int x, const int y) { - transx += (x-ox)/5.; - transy -= (y-oy)/5.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(const int x, const int y) { - *wrotx += x-ox; - if (*wrotx > 360.) *wrotx -= 360.; - else if (*wrotx < -360.) *wrotx += 360.; - *wroty += y-oy; - if (*wroty > 360.) *wroty -= 360.; - else if (*wroty < -360.) *wroty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -#define MAXMESH 64 - -float Ml[4*2*(MAXMESH+1)*2 * (MAXMESH+1)]; - -float N = 1.5; -float B = -1.5; - -void -mesh1(float x0, float x1, float y0, float y1, - float s0, float s1, float t0, float t1, float z, int nx, int ny) -{ - float y,x,s,t,dx,dy,ds,dt,vb[3],tb[2]; - float v; - float *mp = Ml; - - dx = (x1-x0)/nx; - dy = (y1-y0)/ny; - ds = (s1-s0)/nx; - dt = (t1-t0)/ny; - y = y0; - t = t0; - vb[2] = z; - while (y < y1) { - x = x0; - s = s0; - while(x <= x1) { - tb[0] = s; tb[1] = t; - vb[0] = x; vb[1] = y; - v = N*N - x*x - y*y; - if (v < 0.0) v = 0.0; - vb[2] = sqrt(v) + B; - if (vb[2] < 0.) vb[2] = 0.0; - *mp++ = tb[0]; - *mp++ = tb[1]; - mp += 2; - *mp++ = vb[0]; - *mp++ = vb[1]; - *mp++ = vb[2]; - mp++; - tb[1] = t+dt; - vb[1] = y+dy; - v = N*N - x*x - (y+dy)*(y+dy); - if (v < 0.0) v = 0.0; - vb[2] = sqrt(v) + B; - if (vb[2] < 0.) vb[2] = 0.0; - *mp++ = tb[0]; - *mp++ = tb[1]; - mp += 2; - *mp++ = vb[0]; - *mp++ = vb[1]; - *mp++ = vb[2]; - mp++; - x += dx; - s += ds; - } - y += dy; - t += dt; - } -} - -void -drawmesh(int nx,int ny) { - float *mp = Ml; - int i,j; - - glColor4f(1,1,1,1); - for (i = ny+1; i; i--) { - glBegin(GL_TRIANGLE_STRIP); - for (j = nx+1; j; j--) { - glTexCoord2fv(mp); - glVertex3fv(mp+4); - glTexCoord2fv(mp+8); - glVertex3fv(mp+12); mp += 16; - } - glEnd(); - } -} - -void -move(void) { - if (N > 2.1 || N < 1.5) - dir = -dir; - N += incr*dir; - mesh1(-1.5,1.5,-1.5,1.5,0.0,1.0,0.0,1.0,0.0,64,64); - glutPostRedisplay(); -} - -void -alphaup(void) { - incr += .01; - if (incr > .1) incr = .1; - glutPostRedisplay(); -} - -void -alphadown(void) { - incr -= .01; - if (incr < 0) incr = 0; - glutPostRedisplay(); -} - -void -left(void) { - *wscale -= .1; -} - -void -right(void) { - *wscale += .1; -} - -void -wire(void) { - static int wire_mode; - if (wire_mode ^= 1) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); -} - -void -tfunc(void) { - static state; - if (state ^= 1) { - wrotx = &trotx; - wroty = &troty; - wscale = &tscale; - } else { - wrotx = &rotx; - wroty = &roty; - wscale = &scale; - } - -} - - -void -help(void) { - printf("'h' - help\n"); - printf("'w' - wire frame\n"); - printf("UP - faster\n"); - printf("DOWN - slower\n"); -} - -void -init(char *filename) { - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components < 3 || components > 4) { - printf("must be RGB or RGBA image\n"); - exit(EXIT_FAILURE); - } - } else { - int i, j; - components = 4; width = height = 128; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - if (i & 16) - image[i+j*width] = 0xff; - else - image[i+j*width] = 0xff00; - if (j&16) - image[i+j*width] |= 0xff0000; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90.,1.,.1,10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-1.5); - glClearColor(.25, .25, .25, 0.); - -} - -void -display(void) { - glClear(GL_COLOR_BUFFER_BIT); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - glTranslatef(.5f, .5f, .5f); - glRotatef(trotx, 0.f, 0.f, 1.f); - glScalef(tscale, tscale, tscale); - glTranslatef(-.5f, -.5f, -.5f); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glRotatef(rotx, 0.f, 0.f, 1.f); - glScalef(scale, scale, scale); - drawmesh(64,64); - glPopMatrix(); - glMatrixMode(GL_TEXTURE); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glutSwapBuffers(); -} - -void -reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case '\033': exit(0); break; - case 'h': help(); break; - case 't': tfunc(); break; - case 'w': wire(); break; - } -} - -/*ARGSUSED1*/ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: alphaup(); break; - case GLUT_KEY_DOWN: alphadown(); break; - case GLUT_KEY_LEFT: left(); break; - case GLUT_KEY_RIGHT:right(); break; - } -} - -int -main(int argc, char** argv) { - glutInitWindowSize(256, 256); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - (void)glutCreateWindow("warp"); - init(argv[1] ? argv[1] : "../data/mandrill.rgb"); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutIdleFunc(move); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/warp.dsp b/lib/glut-3.7.6/progs/advanced97/warp.dsp deleted file mode 100644 index d6d9d5c0d5367dc5e1ca95873c984c61f55a5a29..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/warp.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="warp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=warp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "warp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "warp.mak" CFG="warp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "warp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "warp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "warp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "warp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "warp - Win32 Release" -# Name "warp - Win32 Debug" -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# Begin Source File - -SOURCE=.\warp.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/water.c b/lib/glut-3.7.6/progs/advanced97/water.c deleted file mode 100644 index d8e1c371d8ba58d4856f80044047e038522a9cf4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/water.c +++ /dev/null @@ -1,322 +0,0 @@ -#include -#include -#include -#include -#include "texture.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef __sgi -/* Most math.h's do not define float versions of the math functions. */ -#define expf(x) ((float)exp((x))) -#define sinf(x) ((float)sin((x))) -#endif - -static int rgb; -static int mesh = 1; -static float ttrans[2]; -static float transx, transy, rotx, roty; -static float amplitude = 0.03; -static float freq = 5.0f; -static float phase = .00003; -static int ox = -1, oy = -1; -static int show_t = 1; -static int mot; -#define PAN 1 -#define ROT 2 - -void -pan(int x, int y) { - transx += (x-ox)/500.; - transy -= (y-oy)/500.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -rotate(int x, int y) { - rotx += x-ox; - if (rotx > 360.) rotx -= 360.; - else if (rotx < -360.) rotx += 360.; - roty += y-oy; - if (roty > 360.) roty -= 360.; - else if (roty < -360.) roty += 360.; - ox = x; oy = y; - glutPostRedisplay(); -} - -void -motion(int x, int y) { - if (mot == PAN) pan(x, y); - else if (mot == ROT) rotate(x,y); -} - -void -mouse(int button, int state, int x, int y) { - if(state == GLUT_DOWN) { - switch(button) { - case GLUT_LEFT_BUTTON: - mot = PAN; - motion(ox = x, oy = y); - break; - case GLUT_MIDDLE_BUTTON: - mot = ROT; - motion(ox = x, oy = y); - break; - case GLUT_RIGHT_BUTTON: - break; - } - } else if (state == GLUT_UP) { - mot = 0; - } -} - -void toggle_t(void) { - show_t ^= 1; -} - -void ffunc(void) { freq *= 2.f; } -void Ffunc(void) { freq /= 2.f; } -void mfunc(void) { mesh ^= 1; } - -void wire(void) { - static int w; - if (w ^= 1) { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glEnable(GL_BLEND); - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glDisable(GL_BLEND); - } -} - -void light(void) { - static int l; - if (l ^= 1) - glEnable(GL_LIGHTING); - else - glDisable(GL_LIGHTING); -} - -void up(void) { amplitude += .01; } -void down(void) { amplitude -= .01; } -void left(void) { phase -= .00001; } -void right(void) { phase += .00001; } - -void -animate(void) { - ttrans[0] += .005f; - if (ttrans[0] == 1.0f) ttrans[0] = 0.0f; - ttrans[1] -= .0025f; - if (ttrans[1] <= 0.0f) ttrans[1] = 1.0f; - glutPostRedisplay(); -} - -void xfunc(void) { - static state = 1; - glutIdleFunc((state ^= 1) ? animate : NULL); -} - -void help(void) { - printf("Usage: water [image]\n"); - printf("'h' - help\n"); - printf("'l' - toggle lighting\n"); - printf("'f' - increase frequency\n"); - printf("'F' - decrease frequency\n"); - printf("'m' - toggle mesh\n"); - printf("'t' - toggle wireframe\n"); - printf("'x' - toggle water motion\n"); - printf("'UP' - increase amplitude\n"); - printf("'DOWN' - decrease amplitude\n"); - printf("'RIGHT' - increase phase change\n"); - printf("'LEFT' - decreae phase change\n"); - printf("left mouse - pan\n"); - printf("middle mouse - rotate\n"); -} - -void init(char *filename) { - GLfloat cloud_color[4] = { 1., 1., 1., 0., }; - GLfloat fog_color[4], fog_density = 0.05, density, far_cull; - unsigned *image; - int width, height, components; - if (filename) { - image = read_texture(filename, &width, &height, &components); - if (image == NULL) { - fprintf(stderr, "Error: Can't load image file \"%s\".\n", - filename); - exit(EXIT_FAILURE); - } else { - printf("%d x %d image loaded\n", width, height); - } - if (components < 3) rgb = 0; - } else { - int i, j; - unsigned char *img; - components = 4; width = height = 512; - image = (unsigned *) malloc(width*height*sizeof(unsigned)); - img = (unsigned char *)image; - for (j = 0; j < height; j++) - for (i = 0; i < width; i++) { - int w2 = width/2, h2 = height/2; - if (i & 32) - img[4*(i+j*width)+0] = 0xff; - else - img[4*(i+j*width)+1] = 0xff; - if (j&32) - img[4*(i+j*width)+2] = 0xff; - if ((i-w2)*(i-w2) + (j-h2)*(j-h2) > 64*64 && - (i-w2)*(i-w2) + (j-h2)*(j-h2) < 300*300) img[4*(i+j*width)+3] = 0xff; - } - - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, cloud_color); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexImage2D(GL_TEXTURE_2D, 0, components, width, - height, 0, GL_RGBA, GL_UNSIGNED_BYTE, - image); - glEnable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.,1.,.1,far_cull = 10.); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.,0.,-5.5); - - density = 1.- expf(-5.5 * fog_density * fog_density * - far_cull * far_cull); - -#define MAX(a,b) ((a) > (b) ? (a) : (b)) -#define MIN(a,b) ((a) < (b) ? (a) : (b)) - density = MAX(MIN(density, 1.), 0.); - - fog_color[0] = .23 + density *.57; - fog_color[1] = .35 + density *.45; - fog_color[2] = .78 + density *.22; - - glClearColor(fog_color[0], fog_color[1], fog_color[2], 1.f); - - glFogi(GL_FOG_MODE, GL_EXP2); - glFogf(GL_FOG_DENSITY, fog_density); - glFogfv(GL_FOG_COLOR, fog_color); - if (fog_density > 0) - glEnable(GL_FOG); - glLineWidth(2.0f); - glEnable(GL_LINE_SMOOTH); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - -void draw_mesh(void) { - if (mesh) { - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex3f(-1.f, 0.f, -1.f); - glTexCoord2f(0, 1); glVertex3f(-1.f, 0.f, 1.f); - glTexCoord2f(1, 1); glVertex3f( 1.f, 0.f, 1.f); - glTexCoord2f(1, 0); glVertex3f( 1.f, 0.f, -1.f); - glEnd(); - } else { -#define MESH 32 - int i, j; - static float off; - float d = 1.f/MESH; - for(i = 0; i < MESH; i++) { - glBegin(GL_TRIANGLE_STRIP); - for(j = 0; j < MESH; j++) { - float s = (float)j*d; - float t = (float)i*d; - float x = -1.0 + 2.f*s; - float z = -1.0 + 2.f*t; - float y = amplitude*sinf(freq*2.f*M_PI*t+off); - glTexCoord2f(s, t); glVertex3f(x, y, z); - s += d; t += d; - x = -1.0 + 2.f*s; - z = -1.0 + 2.f*t; - y = amplitude*sinf(freq*2.f*M_PI*t+off); - glTexCoord2f(s, t); glVertex3f(x, y, z); - off += phase; - } - glEnd(); - } - } -} - -void display(void) { - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(transx, transy, 0.f); - glRotatef(rotx, 0., 1., 0.); - glRotatef(roty, 1., 0., 0.); - glScalef(10,1,10); - if (!rgb) - glColor3f(.31, .41, .97); - else - glColor3f(1.f,1.f,1.f); - glTranslatef(0.f,-1.f,0.f); - glMatrixMode(GL_TEXTURE); - glPushMatrix(); - glTranslatef(ttrans[0], ttrans[1], 0.); - glScalef(10.f, 10.f,1.f); - draw_mesh(); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) { - glViewport(0, 0, w, h); -} - -/*ARGSUSED1*/ -void -key(unsigned char key, int x, int y) { - switch(key) { - case 'l': light(); break; - case 'f': ffunc(); break; - case 'F': Ffunc(); break; - case 't': toggle_t(); break; - case 'm': mfunc(); break; - case 'w': wire(); break; - case 'x': xfunc(); break; - case 'h': help(); break; - case '\033': exit(EXIT_SUCCESS); break; - default: break; - } - glutPostRedisplay(); -} - -/*ARGSUSED1*/ -void -special(int key, int x, int y) { - switch(key) { - case GLUT_KEY_UP: up(); break; - case GLUT_KEY_DOWN: down(); break; - case GLUT_KEY_LEFT: left(); break; - case GLUT_KEY_RIGHT:right(); break; - } -} - -int main(int argc, char** argv) { - glutInitWindowSize(256, 256); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); - (void)glutCreateWindow(argv[0]); - init(argc == 1 ? "../data/water.bw" : argv[1]); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutIdleFunc(animate); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/water.dsp b/lib/glut-3.7.6/progs/advanced97/water.dsp deleted file mode 100644 index 3569a1b46b00615322d8ce2be49076bbcbca2a0c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/water.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="water" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=water - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "water.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "water.mak" CFG="water - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "water - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "water - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "water - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "water - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "water - Win32 Release" -# Name "water - Win32 Debug" -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# Begin Source File - -SOURCE=.\water.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/advanced97/zcomposite.c b/lib/glut-3.7.6/progs/advanced97/zcomposite.c deleted file mode 100644 index c416db3e1e969a0835abab072b6aef5e9cd21f33..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/zcomposite.c +++ /dev/null @@ -1,430 +0,0 @@ -#include -#include -#include - -/* -** Create a single component texture map -*/ -GLfloat *make_texture(int maxs, int maxt) -{ - int s, t; - static GLfloat *texture; - - texture = (GLfloat *)malloc(maxs * maxt * sizeof(GLfloat)); - for(t = 0; t < maxt; t++) { - for(s = 0; s < maxs; s++) { - texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1); - } - } - return texture; -} - -GLboolean stencil = GL_TRUE; - -/* ARGSUSED1 */ -void key(unsigned char key, int x, int y) -{ - switch(key) { - case 't': /* toggle using stencil */ - if(stencil == GL_TRUE) - stencil = GL_FALSE; - else - stencil = GL_TRUE; - glutPostRedisplay(); - break; - case '\033': - exit(0); - break; - } -} - -enum {SPHERE = 1, CONE}; -enum {X, Y, Z}; - -int startx, starty; -int wid, ht; -int oldwid = 0, oldht = 0; - -const int WINDIM = 512; -const GLfloat FRUSTDIM = 110.f; -const GLfloat FRUSTNEAR = 320.f; -const GLfloat FRUSTFAR = 540.f; -const GLfloat FRUSTDIFF = 540.f - 320.f; - -GLboolean drawmode = GL_FALSE; -GLboolean depthmode = GL_FALSE; -GLboolean rubberbandmode = GL_FALSE; -GLfloat *color; -GLfloat *depth; -GLfloat depthbias = 0.f; -GLfloat raspos[] = {0.f, 0.f, -430.f}; - - -int winWidth = 512; -int winHeight = 512; - -GLfloat sx = 0; -GLfloat sy = 0; - - -/* Overlay Stuff */ -int transparent; -int red; - -void -setRasterPosXY(int x, int y) -{ - raspos[X] = (x - winWidth/2) * sx; - raspos[Y] = (y - winHeight/2) * sy; - - glRasterPos3fv(raspos); - - glutPostRedisplay(); -} - -void -setRasterPosZ(int y) -{ - raspos[Z] = -(FRUSTNEAR + y * FRUSTDIFF/winHeight); - - depthbias = (y - winHeight/2.f)/winHeight; - - glRasterPos3fv(raspos); - - glutPostRedisplay(); -} - - - -void -motion(int x, int y) -{ - y = winHeight - y; - if(drawmode) - setRasterPosXY(x, y); - - if(rubberbandmode) { - wid = x - startx; - ht = y - starty; - glutPostOverlayRedisplay(); - } - - if(depthmode) - setRasterPosZ(y); -} - -/* redraw function for overlay: used to show selected region */ -void -overlay(void) -{ - if(glutLayerGet(GLUT_OVERLAY_DAMAGED)) { - glClear(GL_COLOR_BUFFER_BIT); - } else { - glIndexi(transparent); - glBegin(GL_LINE_LOOP); - glVertex2i(startx, starty); - glVertex2i(startx + oldwid, starty); - glVertex2i(startx + oldwid, starty + oldht); - glVertex2i(startx, starty + oldht); - glEnd(); - } - - glIndexi(red); - glBegin(GL_LINE_LOOP); - glVertex2i(startx, starty); - glVertex2i(startx + wid, starty); - glVertex2i(startx + wid, starty + ht); - glVertex2i(startx, starty + ht); - glEnd(); - - oldwid = wid; - oldht = ht; - - glFlush(); -} - - -/* used to get current width and height of viewport */ -void -reshape(int wid, int ht) -{ - glutUseLayer(GLUT_OVERLAY); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, wid, 0, ht); /* 1 to 1 with window */ - glMatrixMode(GL_MODELVIEW); - glViewport(0, 0, wid, ht); - - glutUseLayer(GLUT_NORMAL); - glViewport((GLint) (-wid * .1), (GLint) (-ht * .1), - (GLsizei) (wid * 1.2), (GLsizei) (ht * 1.2)); - - winWidth = wid; - winHeight = ht; - - sx = 2 * FRUSTDIM/(winWidth * 1.2); - sy = 2 * FRUSTDIM/(winHeight * 1.2); -} - - -void -mouse(int button, int state, int x, int y) -{ - y = winHeight - y; /* flip y orientation */ - if(state == GLUT_DOWN) - switch(button) { - case GLUT_LEFT_BUTTON: /* select an image */ - startx = x; - starty = y; - wid = 0; ht = 0; - rubberbandmode = GL_TRUE; - glutShowOverlay(); - break; - case GLUT_MIDDLE_BUTTON: - glutUseLayer(GLUT_NORMAL); - if(color && depth) { - drawmode = GL_TRUE; - setRasterPosXY(x, y); - } - break; - case GLUT_RIGHT_BUTTON: /* change depth */ - glutUseLayer(GLUT_NORMAL); - if(color && depth) { - depthmode = GL_TRUE; - setRasterPosZ(y); - } - break; - } - else /* GLUT_UP */ - switch(button) { - case GLUT_LEFT_BUTTON: - rubberbandmode = GL_FALSE; - glutHideOverlay(); - wid = x - startx; - ht = y - starty; - if(wid < 0) { - wid = -wid; - startx = x; - } - if(ht < 0) { - ht = -ht; - starty = y; - } - color = (GLfloat *)realloc(color, wid * ht * 3 * sizeof(GLfloat)); - depth = (GLfloat *)realloc(depth, wid * ht * sizeof(GLfloat)); - - glutUseLayer(GLUT_NORMAL); - glReadPixels(startx, starty, wid, ht, GL_RGB, GL_FLOAT, color); - glReadPixels(startx, starty, wid, ht, GL_DEPTH_COMPONENT, GL_FLOAT, - depth); - break; - case GLUT_MIDDLE_BUTTON: - drawmode = GL_FALSE; - break; - case GLUT_RIGHT_BUTTON: /* change depth */ - depthmode = GL_FALSE; - break; - } -} - - -/* Called when window needs to be redrawn */ -void -redraw(void) -{ - /* material properties for objects in scene */ - static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f}; - - glutUseLayer(GLUT_NORMAL); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); - - /* - ** Note: wall verticies are ordered so they are all front facing - ** this lets me do back face culling to speed things up. - */ - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat); - - /* floor */ - /* make the floor textured */ - glEnable(GL_TEXTURE_2D); - - /* - ** Since we want to turn texturing on for floor only, we have to - ** make floor a separate glBegin()/glEnd() sequence. You can't - ** turn texturing on and off between begin and end calls - */ - glBegin(GL_QUADS); - glNormal3f(0.f, 1.f, 0.f); - glTexCoord2i(0, 0); - glVertex3f(-100.f, -100.f, -320.f); - glTexCoord2i(1, 0); - glVertex3f( 100.f, -100.f, -320.f); - glTexCoord2i(1, 1); - glVertex3f( 100.f, -100.f, -520.f); - glTexCoord2i(0, 1); - glVertex3f(-100.f, -100.f, -520.f); - glEnd(); - - glDisable(GL_TEXTURE_2D); - - /* walls */ - - glBegin(GL_QUADS); - /* left wall */ - glNormal3f(1.f, 0.f, 0.f); - glVertex3f(-100.f, -100.f, -320.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -320.f); - - /* right wall */ - glNormal3f(-1.f, 0.f, 0.f); - glVertex3f( 100.f, -100.f, -320.f); - glVertex3f( 100.f, 100.f, -320.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - - /* ceiling */ - glNormal3f(0.f, -1.f, 0.f); - glVertex3f(-100.f, 100.f, -320.f); - glVertex3f(-100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f( 100.f, 100.f, -320.f); - - /* back wall */ - glNormal3f(0.f, 0.f, 1.f); - glVertex3f(-100.f, -100.f, -520.f); - glVertex3f( 100.f, -100.f, -520.f); - glVertex3f( 100.f, 100.f, -520.f); - glVertex3f(-100.f, 100.f, -520.f); - glEnd(); - - glPushMatrix(); - glTranslatef(-40.f, -60.f, -400.f); - glScalef(2, 2, 2); - glCallList(SPHERE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(50.f, -120.f, -400.f); - glScalef(2, 2, 2); - glCallList(CONE); - glPopMatrix(); - - if(stencil) { - glEnable(GL_STENCIL_TEST); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glStencilFunc(GL_ALWAYS, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - glPixelTransferf(GL_DEPTH_BIAS, depthbias); - - glDrawPixels(wid, ht, GL_DEPTH_COMPONENT, GL_FLOAT, depth); - - glPixelTransferf(GL_DEPTH_BIAS, 0.f); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glStencilFunc(GL_EQUAL, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glDisable(GL_DEPTH_TEST); - - glDrawPixels(wid, ht, GL_RGB, GL_FLOAT, color); - - glEnable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - } else - glDrawPixels(wid, ht, GL_RGB, GL_FLOAT, color); - - glutSwapBuffers(); -} - - -const int TEXDIM = 256; -/* Parse arguments, and set up interface between OpenGL and window system */ -main(int argc, char *argv[]) -{ - GLfloat *tex; - static GLfloat lightpos[] = {50.f, 50.f, -320.f, 1.f}; - static GLfloat sphere_mat[] = {1.f, .5f, 0.f, 1.f}; - static GLfloat cone_mat[] = {0.f, .5f, 1.f, 1.f}; - GLUquadricObj *sphere, *cone, *base; - - glutInit(&argc, argv); - glutInitWindowSize(WINDIM, WINDIM); - - glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL|GLUT_DOUBLE); - (void)glutCreateWindow("compositing images with depth"); - glutDisplayFunc(redraw); - glutKeyboardFunc(key); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutReshapeFunc(reshape); - - /* draw a perspective scene */ - glMatrixMode(GL_PROJECTION); - glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, FRUSTNEAR, FRUSTFAR); - glMatrixMode(GL_MODELVIEW); - - /* turn on features */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - /* place light 0 in the right place */ - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - - /* remove back faces to speed things up */ - glCullFace(GL_BACK); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glNewList(SPHERE, GL_COMPILE); - /* make display lists for sphere and cone; for efficiency */ - sphere = gluNewQuadric(); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat); - gluSphere(sphere, 20.f, 20, 20); - gluDeleteQuadric(sphere); - glEndList(); - - glNewList(CONE, GL_COMPILE); - cone = gluNewQuadric(); - base = gluNewQuadric(); - glRotatef(-90.f, 1.f, 0.f, 0.f); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat); - gluQuadricOrientation(base, GLU_INSIDE); - gluDisk(base, 0., 20., 20, 1); - gluCylinder(cone, 20., 0., 60., 20, 20); - gluDeleteQuadric(cone); - gluDeleteQuadric(base); - glEndList(); - - /* load pattern for current 2d texture */ - tex = make_texture(TEXDIM, TEXDIM); - glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex); - free(tex); - - /* storage for saved image */ - color = 0; - depth = 0; - - glReadBuffer(GL_FRONT);/* so glReadPixel() always get the right image */ - - glutInitDisplayMode(GLUT_SINGLE|GLUT_INDEX); - if(glutLayerGet(GLUT_OVERLAY_POSSIBLE)) { - glutEstablishOverlay(); - glutHideOverlay(); - transparent = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(transparent); - red = (transparent + 1) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - glutSetColor(red, 1.0, 0.0, 0.0); /* Red. */ - glutOverlayDisplayFunc(overlay); - } - else - { - printf( "Overlay support unavailable - aborting.\n" ); - return 1; - } - - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/advanced97/zcomposite.dsp b/lib/glut-3.7.6/progs/advanced97/zcomposite.dsp deleted file mode 100644 index f0341110460f55393bf4ce9c75059c19d7f6f59c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/advanced97/zcomposite.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zcomposite" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=zcomposite - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zcomposite.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zcomposite.mak" CFG="zcomposite - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zcomposite - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "zcomposite - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "zcomposite - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "zcomposite - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "zcomposite - Win32 Release" -# Name "zcomposite - Win32 Debug" -# Begin Source File - -SOURCE=.\zcomposite.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/aux2glut.sed b/lib/glut-3.7.6/progs/aux2glut.sed deleted file mode 100644 index b35983b2f3ffa155e9474e0a90ca97d094f6f848..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/aux2glut.sed +++ /dev/null @@ -1,55 +0,0 @@ -# -# aux2glut.sed - a sed script for converting AUX code to GLUT -# -# You will still need to do some work, but this is a good start. -# -1i\ -/* aux2glut conversion Copyright (c) Mark J. Kilgard, 1994, 1995 */ -1i\ - -s/int main/void main/g -s/auxInitWindow/glutCreateWindow/g -s/AUX_SINGLE/GLUT_SINGLE/g -s/AUX_DOUBLE/GLUT_DOUBLE/g -s/AUX_RGB/GLUT_RGB/g -s/AUX_RGBA/GLUT_RGBA/g -s/AUX_ACCUM/GLUT_ACCUM/g -s/AUX_DEPTH/GLUT_DEPTH/g -s/AUX_STENCIL/GLUT_STENCIL/g -s/AUX_ALPHA/GLUT_ALPHA/g -s/AUX_MOUSEDOWN/GLUT_DOWN/g -s/AUX_MOUSEUP/GLUT_UP/g -s/AUX_LEFTBUTTON/GLUT_LEFT_BUTTON/g -s/AUX_MIDDLEBUTTON/GLUT_MIDDLE_BUTTON/g -s/AUX_RIGHTBUTTON/GLUT_RIGHT_BUTTON/g -s/(.*AUX_EVENTREC.*)/( int x, int y )/g -s/auxReshapeFunc/glutReshapeFunc/g -s/#include \"aux.h\"/#include /g -s/#include[ ]*\/#include /g -s/\(initialize.*$\)/glutInit(\&argc, argv); \1/g -s/auxInitDisplayMode/glutInitDisplayMode/g -s/auxMainLoop(display)/glutDisplayFunc(display); glutMainLoop()/g -s/auxMainLoop[ ]*([ ]*drawScene[ ]*)/glutDisplayFunc(drawScene); glutMainLoop()/g -s/auxAnimation.*$/glutIdleFunc(drawScene);/g -s/auxGetScreenSize.*$/width = glutGet(GLUT_SCREEN_WIDTH); height = glutGet(GLUT_SCREEN_HEIGHT);/g -s/auxGetSize.*$/width = glutGet(GLUT_WINDOW_WIDTH); height = glutGet(GLUT_WINDOW_HEIGHT);/g -s/auxInitPosition(\(.*\),\(.*\),\(.*\),\(.*\));/glutInitWindowPosition(\1,\2); glutInitWindowSize(\3,\4);/g -s/auxSwapBuffers/glutSwapBuffers/g -s/auxWireIcosahedron/glutWireIcosahedron/g -s/auxSolidIcosahedron/glutSolidIcosahedron/g -s/auxSolidTorus/glutSolidTorus/g -s/auxWireTorus/glutWireTorus/g -s/auxSolidCube/glutSolidCube/g -s/auxWireCube/glutWireCube/g -s/auxSolidSphere/glutSolidSphere/g -s/auxWireSphere/glutWireSphere/g -s/auxSolidCone/glutSolidCone/g -s/auxWireCone/glutWireCone/g -s/auxSolidOctahedron/glutSolidOctahedron/g -s/auxWireOctahedron/glutWireOctahedron/g -s/auxSolidTeapot/glutSoliddTeapot/g -s/auxWireTeapot/glutWireTeapot/g -s/auxKeyFunc(.*,/glutKeyboardFunc(/g -s/auxMouseFunc(.*AUX_MOUSELOC,.*NULL,/glutMouseMotion(/g -s/auxMouseFunc/glutMouseFunc/g -s/auxDeleteMouseFunc( .*$/glutMouseMotion( NULL );/g diff --git a/lib/glut-3.7.6/progs/bucciarelli.dsw b/lib/glut-3.7.6/progs/bucciarelli.dsw deleted file mode 100644 index 7db308007fe5f08e60774771e78279e2ce2535d5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli.dsw +++ /dev/null @@ -1,149 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\bucciarelli\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name fire - End Project Dependency - Begin Project Dependency - Project_Dep_Name glbpaltex - End Project Dependency - Begin Project Dependency - Project_Dep_Name gltest - End Project Dependency - Begin Project Dependency - Project_Dep_Name paltex - End Project Dependency - Begin Project Dependency - Project_Dep_Name ray - End Project Dependency - Begin Project Dependency - Project_Dep_Name teapot - End Project Dependency - Begin Project Dependency - Project_Dep_Name terrain - End Project Dependency - Begin Project Dependency - Project_Dep_Name tunnel - End Project Dependency -}}} - -############################################################################### - -Project: "fire"=".\bucciarelli\fire.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glbpaltex"=".\bucciarelli\glbpaltex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "gltest"=".\bucciarelli\gltest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "paltex"=".\bucciarelli\paltex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "ray"=".\bucciarelli\ray.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "teapot"=".\bucciarelli\teapot.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "terrain"=".\bucciarelli\terrain.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tunnel"=".\bucciarelli\tunnel.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/bucciarelli/Imakefile b/lib/glut-3.7.6/progs/bucciarelli/Imakefile deleted file mode 100644 index 9e1de31cfac55e7434bf2afaa263586342a3a5f5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/Imakefile +++ /dev/null @@ -1,22 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../Glut.cf" - -TARGETS = tunnel teapot fire terrain paltex gltest ray glbpaltx - -SRCS = dteapot.c fire.c glbpaltx.c gltest.c image.c paltex.c ray.c shadow.c \ - sources.c teapot.c terrain.c tunnel.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(ray) -SimpleGlutProgramTarget(gltest) -SimpleGlutProgramTarget(paltex) -SimpleGlutProgramTarget(glbpaltx) -SimpleGlutProgramTarget(terrain) -NormalGlutProgramTarget(tunnel,tunnel.o image.o sources.o) -NormalGlutProgramTarget(teapot,teapot.o image.o dteapot.o shadow.o) -NormalGlutProgramTarget(fire,fire.o image.o) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/bucciarelli/README b/lib/glut-3.7.6/progs/bucciarelli/README deleted file mode 100644 index 7c447402ea46be5a890db751d5553751eb87185a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/README +++ /dev/null @@ -1,155 +0,0 @@ - -INTRODUCTION ------------- - -This directory is usually included in the Mesa demos distribution or -in the GLUT distribution. - -I have written the demos included in this directory mainly for showing -the capabilities of the Mesa library when using the Voodoo driver. -However all the demos are written using the GLUT and OpenGL so they -work with any GLUT/OpenGL platform (tested: Linux+Mesa+Voodoo driver, -Linux+Mesa+X11 driver, Win95+Mesa+Voodoo driver and SGI Onyx IR thanks -to Mark Kilgard). - -All the demos make an heavy use of texture mapping, blending, etc. so -you _need_ some kind of hardware support for the OpenGL otherwise they -will run at ~1fps. You need also a OpenGL 1.1 compliant library. - -you can find some screenshot of these demos at -http://www-hmw.caribel.pisa.it/fxmesa/fxdemos.hmtl - -Write me if you find some bug in the demos. - -David Bucciarelli (tech.hmw@plus.it) - -Humanware s.r.l. -Via XXIV Maggio 62 -Pisa, Italy -Tel./Fax +39-50-554108 -email: info.hmw@plus.it -www: www-hmw.caribel.pisa.it - - -A BRIEF DESCRIPTION OF THE DEMOS --------------------------------- - -RAY ---- - -Sources: ray.c - -I'm using ray tracing to dynamically generate texture maps with -specular, diffuse, shadows, and mirror colors. Each frame the texture -maps of the plane and of the sphere are partially updated. With this -technique you can obtain true mirrors, shadows, specular highlights, -bump mapping, etc. in realtime. This demo is really CPU intensive -(~25fps on a PentiumII@300MHz with a Pure3D). - - -TUNNEL ------- - -Sources: tunnel.c image.c sources.c -Data: bw.rgb tile.rgb - -The model was designed and prelighted with Alias|Wavefront -PowerAnimator V8. Triangle strips were built with a tool written by -me and then statically included in the sources. - - -TEAPOT ------- - -Sources: teapot.c image.c dteapot.c shadow.c -Data: bw.rgb tile.rgb - -The shadow is drawn projecting the teapot geometry over the plane. All -other light effects are drawn using the standard OpenGL capabilities. - - -FIRE ----- - -Sources: fire.c image.c -Data: s128.rgb tree2.rgb - -The demo use a small particle system to draw some nice visual effect. -You can interactively change many parameters of the particle system -and you can choose the number of particles at the startup ('fire -4000'). This demo should be called fountain. - - -TERRAIN -------- - -Sources: mesaland.c - -This demo is base on another demo written by Mikael SkiZoWalker. -I have added the capabilities to freely fly around, view culling -and some nice color. - - -GLTEST ------- - -Sources: gltest.c - -This is a simple benchmark suite that I'm using in the development -of the Mesa/Voodoo driver. Type 'gltest >my.res' and you will get -some data about the performances of your OpenGL. Follow the -results with my PC (PentiumII@300MHz+Pure3D): - -Simple Points -587900.080674 Pnts/sec - -Smooth Lines -SIZE=480 => 39007.426183 Lins/sec -SIZE=250 => 74575.016485 Lins/sec -SIZE=100 => 179734.882409 Lins/sec -SIZE=050 => 183987.795297 Lins/sec -SIZE=025 => 183820.086309 Lins/sec - - -ZSmooth Triangles -SIZE=480 => 784.954997 Tris/sec -SIZE=250 => 2862.325889 Tris/sec -SIZE=100 => 17779.492938 Tris/sec -SIZE=050 => 159339.829844 Tris/sec -SIZE=025 => 428602.984008 Tris/sec - - -ZSmooth Tex Blend Triangles -SIZE=480 => 784.473931 Tris/sec -SIZE=250 => 2853.781513 Tris/sec -SIZE=100 => 17598.252146 Tris/sec -SIZE=050 => 152632.578337 Tris/sec -SIZE=025 => 377584.760048 Tris/sec - - -ZSmooth Tex Blend TMesh Triangles -SIZE=400 => 563.900695 Tris/sec, MPixel Fill/sec: 45.112056 -SIZE=250 => 1449.777225 Tris/sec, MPixel Fill/sec: 45.305538 -SIZE=100 => 8702.869121 Tris/sec, MPixel Fill/sec: 43.514346 -SIZE=050 => 31896.867466 Tris/sec, MPixel Fill/sec: 39.871084 -SIZE=025 => 114037.262894 Tris/sec, MPixel Fill/sec: 35.636645 -SIZE=010 => 220494.235839 Tris/sec, MPixel Fill/sec: 11.024712 -SIZE=005 => 225615.506651 Tris/sec, MPixel Fill/sec: 2.820194 -SIZE=002 => 225607.681439 Tris/sec, MPixel Fill/sec: 0.451215 - - -Color/Depth Buffer Clears -295.042474 Clrs/sec, MPixel Fill/sec: 90.553256 - - -PALTEX and GLBPALTX -------------------- - -Sources: paltex.c and glbpaltx.c - -The PALTEX example was written by Brian Paul and it shows the -capabilities of the GL_EXT_paletted_texture extension. I have written -the other example in order to show the capabilities of the -gl3DfxSetPaletteEXT() (it used only by GLQuake and Quake2). - - diff --git a/lib/glut-3.7.6/progs/bucciarelli/_all.dsp b/lib/glut-3.7.6/progs/bucciarelli/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/bw.rgb b/lib/glut-3.7.6/progs/bucciarelli/bw.rgb deleted file mode 100644 index 8e22a30a7b03e0c89b4b7e464b9487b00efc4e98..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/bucciarelli/bw.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/bucciarelli/dteapot.c b/lib/glut-3.7.6/progs/bucciarelli/dteapot.c deleted file mode 100644 index 312a0e1639623e697670ae84d4be0074e1a68857..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/dteapot.c +++ /dev/null @@ -1,196 +0,0 @@ -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** -(c) Copyright 1993, Silicon Graphics, Inc. - -ALL RIGHTS RESERVED - -Permission to use, copy, modify, and distribute this software -for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that -both the copyright notice and this permission notice appear in -supporting documentation, and that the name of Silicon -Graphics, Inc. not be used in advertising or publicity -pertaining to distribution of the software without specific, -written prior permission. - -THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU -"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR -OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF -MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO -EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE -ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, -INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, -SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR -NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY -OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR -PERFORMANCE OF THIS SOFTWARE. - -US Government Users Restricted Rights - -Use, duplication, or disclosure by the Government is subject to -restrictions set forth in FAR 52.227.19(c)(2) or subparagraph -(c)(1)(ii) of the Rights in Technical Data and Computer -Software clause at DFARS 252.227-7013 and/or in similar or -successor clauses in the FAR or the DOD or NASA FAR -Supplement. Unpublished-- rights reserved under the copyright -laws of the United States. Contractor/manufacturer is Silicon -Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA -94039-7311. - -OpenGL(TM) is a trademark of Silicon Graphics, Inc. -*/ - -/* Modified by David Bucciarelli */ - -#include - -/* Rim, body, lid, and bottom data must be reflected in x - and y; handle and spout data across the y axis only. */ - -long patchdata[][16] = -{ - /* rim */ - {102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15}, - /* body */ - {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27}, - {24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40}, - /* lid */ - {96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101, - 101, 0, 1, 2, 3,}, - {0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117}, - /* bottom */ - {118, 118, 118, 118, 124, 122, 119, 121, 123, 126, - 125, 120, 40, 39, 38, 37}, - /* handle */ - {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56}, - {53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 28, 65, 66, 67}, - /* spout */ - {68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83}, - {80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95} -}; -/* *INDENT-OFF* */ - -float cpdata[][3] = -{ - {0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0, - -0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125}, - {0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375, - 0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375, - 2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84, - 2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875}, - {1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75, - 1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35}, - {0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2, - 0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12, - 0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225}, - {1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225}, - {1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0, - -1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5, - -0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3, - 2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0, - 2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0, - 2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8}, - {-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3, - -0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3, - 1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2, - -0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0, - 1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0, - 0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66, - 0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1}, - {2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7, - -0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0, - 2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375}, - {3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475}, - {3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4}, - {2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0, - 3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8, - 3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4, - -0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0, - 2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4, - 2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3, - 2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4}, - {0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425, - -0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425, - 0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075}, - {0.84, -1.5, 0.075} -}; - -static float tex[2][2][2] = -{ - { {0, 0}, - {1, 0}}, - { {0, 1}, - {1, 1}} -}; - -/* *INDENT-ON* */ - -void teapot(GLint grid, GLdouble scale, GLenum type) -{ - float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3]; - long i, j, k, l; - - glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glEnable(GL_MAP2_VERTEX_3); - glEnable(GL_MAP2_TEXTURE_COORD_2); - glPushMatrix(); - glRotatef(270.0, 1.0, 0.0, 0.0); - glScalef(0.5 * scale, 0.5 * scale, 0.5 * scale); - glTranslatef(0.0, 0.0, -1.5); - for (i = 0; i < 10; i++) { - for (j = 0; j < 4; j++) { - for (k = 0; k < 4; k++) { - for (l = 0; l < 3; l++) { - p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; - q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l]; - if (l == 1) - q[j][k][l] *= -1.0; - if (i < 6) { - r[j][k][l] = - cpdata[patchdata[i][j * 4 + (3 - k)]][l]; - if (l == 0) - r[j][k][l] *= -1.0; - s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; - if (l == 0) - s[j][k][l] *= -1.0; - if (l == 1) - s[j][k][l] *= -1.0; - } - } - } - } - glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2, - &tex[0][0][0]); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &p[0][0][0]); - glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0); - glEvalMesh2(type, 0, grid, 0, grid); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &q[0][0][0]); - glEvalMesh2(type, 0, grid, 0, grid); - if (i < 6) { - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &r[0][0][0]); - glEvalMesh2(type, 0, grid, 0, grid); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, - &s[0][0][0]); - glEvalMesh2(type, 0, grid, 0, grid); - } - } - glPopMatrix(); - glPopAttrib(); -} - diff --git a/lib/glut-3.7.6/progs/bucciarelli/fire.c b/lib/glut-3.7.6/progs/bucciarelli/fire.c deleted file mode 100644 index 520119b0c9c769be59aa18be081a5cb38766d17c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/fire.c +++ /dev/null @@ -1,697 +0,0 @@ -/* - * This program is under the GNU GPL. - * Use at your own risk. - * - * written by David Bucciarelli (tech.hmw@plus.it) - * Humanware s.r.l. - */ - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#endif - -#include -#include "image.h" - -#if defined(GL_VERSION_1_1) -/* Routines called directly. */ -#elif defined(GL_EXT_texture_object) && defined(GL_EXT_copy_texture) && defined(GL_EXT_subtexture) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#else -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define vinit(a,i,j,k) {\ - (a)[0]=i;\ - (a)[1]=j;\ - (a)[2]=k;\ -} - -#define vinit4(a,i,j,k,w) {\ - (a)[0]=i;\ - (a)[1]=j;\ - (a)[2]=k;\ - (a)[3]=w;\ -} - - -#define vadds(a,dt,b) {\ - (a)[0]+=(dt)*(b)[0];\ - (a)[1]+=(dt)*(b)[1];\ - (a)[2]+=(dt)*(b)[2];\ -} - -#define vequ(a,b) {\ - (a)[0]=(b)[0];\ - (a)[1]=(b)[1];\ - (a)[2]=(b)[2];\ -} - -#define vinter(a,dt,b,c) {\ - (a)[0]=(dt)*(b)[0]+(1.0-dt)*(c)[0];\ - (a)[1]=(dt)*(b)[1]+(1.0-dt)*(c)[1];\ - (a)[2]=(dt)*(b)[2]+(1.0-dt)*(c)[2];\ -} - -#define clamp(a) ((a) < 0.0 ? 0.0 : ((a) < 1.0 ? (a) : 1.0)) - -#define vclamp(v) {\ - (v)[0]=clamp((v)[0]);\ - (v)[1]=clamp((v)[1]);\ - (v)[2]=clamp((v)[2]);\ -} - -static int WIDTH=640; -static int HEIGHT=480; - -#define FRAME 50 -#define DIMP 20.0 -#define DIMTP 16.0 - -#define RIDCOL 0.4 - -#define NUMTREE 50 -#define TREEINR 2.5 -#define TREEOUTR 8.0 - -#define AGRAV -9.8 - -typedef struct { - int age; - float p[3][3]; - float v[3]; - float c[3][4]; -} part; - -static float treepos[NUMTREE][3]; - -static float black[3]={0.0,0.0,0.0}; -static float blu[3]={0.0,0.2,1.0}; -static float blu2[3]={0.0,1.0,1.0}; - -static float fogcolor[4]={1.0,1.0,1.0,1.0}; - -static float q[4][3]={ - {-DIMP,0.0,-DIMP}, - {DIMP,0.0,-DIMP}, - {DIMP,0.0,DIMP}, - {-DIMP,0.0,DIMP} -}; - -static float qt[4][2]={ - {-DIMTP,-DIMTP}, - {DIMTP,-DIMTP}, - {DIMTP,DIMTP}, - {-DIMTP,DIMTP} -}; - -static int np; -static float eject_r,dt,maxage,eject_vy,eject_vl; -static short shadows; -static float ridtri; -static int fog=1; -static int help=1; -static int joyavailable=0; -static int joyactive=0; - -static part *p; - -static GLuint groundid; -static GLuint treeid; - -static float obs[3]={2.0,1.0,0.0}; -static float dir[3]; -static float v=0.0; -static float alpha=-90.0; -static float beta=90.0; - -static float gettime(void) -{ - static clock_t told=0; - clock_t tnew,ris; - - tnew=clock(); - - ris=tnew-told; - - told=tnew; - - return(ris/(float)CLOCKS_PER_SEC); -} - -float vrnd(void) -{ - return(((float)rand())/RAND_MAX); -} - -static void setnewpart(part *p) -{ - float a,v[3],*c; - - p->age=0; - - a=vrnd()*3.14159265359*2.0; - - vinit(v,sin(a)*eject_r*vrnd(),0.15,cos(a)*eject_r*vrnd()); - vinit(p->p[0],v[0]+vrnd()*ridtri,v[1]+vrnd()*ridtri,v[2]+vrnd()*ridtri); - vinit(p->p[1],v[0]+vrnd()*ridtri,v[1]+vrnd()*ridtri,v[2]+vrnd()*ridtri); - vinit(p->p[2],v[0]+vrnd()*ridtri,v[1]+vrnd()*ridtri,v[2]+vrnd()*ridtri); - - vinit(p->v,v[0]*eject_vl/(eject_r/2),vrnd()*eject_vy+eject_vy/2,v[2]*eject_vl/(eject_r/2)); - - c=blu; - - vinit4(p->c[0],c[0]*((1.0-RIDCOL)+vrnd()*RIDCOL), - c[1]*((1.0-RIDCOL)+vrnd()*RIDCOL), - c[2]*((1.0-RIDCOL)+vrnd()*RIDCOL), - 1.0); - vinit4(p->c[1],c[0]*((1.0-RIDCOL)+vrnd()*RIDCOL), - c[1]*((1.0-RIDCOL)+vrnd()*RIDCOL), - c[2]*((1.0-RIDCOL)+vrnd()*RIDCOL), - 1.0); - vinit4(p->c[2],c[0]*((1.0-RIDCOL)+vrnd()*RIDCOL), - c[1]*((1.0-RIDCOL)+vrnd()*RIDCOL), - c[2]*((1.0-RIDCOL)+vrnd()*RIDCOL), - 1.0); -} - -static void setpart(part *p) -{ - float fact; - - if(p->p[0][1]<0.1) { - setnewpart(p); - return; - } - - p->v[1]+=AGRAV*dt; - - vadds(p->p[0],dt,p->v); - vadds(p->p[1],dt,p->v); - vadds(p->p[2],dt,p->v); - - p->age++; - - if((p->age)>maxage) { - vequ(p->c[0],blu2); - vequ(p->c[1],blu2); - vequ(p->c[2],blu2); - } else { - fact=1.0/maxage; - vadds(p->c[0],fact,blu2); - vclamp(p->c[0]); - p->c[0][3]=fact*(maxage-p->age); - - vadds(p->c[1],fact,blu2); - vclamp(p->c[1]); - p->c[1][3]=fact*(maxage-p->age); - - vadds(p->c[2],fact,blu2); - vclamp(p->c[2]); - p->c[2][3]=fact*(maxage-p->age); - } -} - -static void drawtree(float x, float y, float z) -{ - glBegin(GL_QUADS); - glTexCoord2f(0.0,0.0); - glVertex3f(x-1.5,y+0.0,z); - - glTexCoord2f(1.0,0.0); - glVertex3f(x+1.5,y+0.0,z); - - glTexCoord2f(1.0,1.0); - glVertex3f(x+1.5,y+3.0,z); - - glTexCoord2f(0.0,1.0); - glVertex3f(x-1.5,y+3.0,z); - - - glTexCoord2f(0.0,0.0); - glVertex3f(x,y+0.0,z-1.5); - - glTexCoord2f(1.0,0.0); - glVertex3f(x,y+0.0,z+1.5); - - glTexCoord2f(1.0,1.0); - glVertex3f(x,y+3.0,z+1.5); - - glTexCoord2f(0.0,1.0); - glVertex3f(x,y+3.0,z-1.5); - - glEnd(); - -} - -static void calcposobs(void) -{ - dir[0]=sin(alpha*M_PI/180.0); - dir[2]=cos(alpha*M_PI/180.0)*sin(beta*M_PI/180.0); - dir[1]=cos(beta*M_PI/180.0); - - obs[0]+=v*dir[0]; - obs[1]+=v*dir[1]; - obs[2]+=v*dir[2]; -} - -static void printstring(void *font, char *string) -{ - int len,i; - - len=(int)strlen(string); - for(i=0;ijoy.wXpos) - min[0]=joy.wXpos; - center[0]=(max[0]+min[0])/2; - - if(max[1]joy.wYpos) - min[1]=joy.wYpos; - center[1]=(max[1]+min[1])/2; - - if(joyactive) { - if(fabs(center[0]-(float)joy.wXpos)>0.1*(max[0]-min[0])) - alpha+=2.5*(center[0]-(float)joy.wXpos)/(max[0]-min[0]); - if(fabs(center[1]-(float)joy.wYpos)>0.1*(max[1]-min[1])) - beta+=2.5*(center[1]-(float)joy.wYpos)/(max[1]-min[1]); - - if(joy.wButtons & JOY_BUTTON1) - v+=0.01; - if(joy.wButtons & JOY_BUTTON2) - v-=0.01; - } - } else - joyavailable=0; -#endif -} - -static void drawfire(void) -{ - static int count=0; - static char frbuf[80]; - int j; - float fr; - - dojoy(); - - glEnable(GL_DEPTH_TEST); - - if(fog) - glEnable(GL_FOG); - else - glDisable(GL_FOG); - - glDepthMask(GL_TRUE); - glClearColor(1.0,1.0,1.0,1.0); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - calcposobs(); - gluLookAt(obs[0],obs[1],obs[2], - obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], - 0.0,1.0,0.0); - - glColor4f(1.0,1.0,1.0,1.0); - - glEnable(GL_TEXTURE_2D); - - glBindTexture(GL_TEXTURE_2D,groundid); - glBegin(GL_QUADS); - glTexCoord2fv(qt[0]); - glVertex3fv(q[0]); - glTexCoord2fv(qt[1]); - glVertex3fv(q[1]); - glTexCoord2fv(qt[2]); - glVertex3fv(q[2]); - glTexCoord2fv(qt[3]); - glVertex3fv(q[3]); - glEnd(); - - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GEQUAL,0.9); - - glBindTexture(GL_TEXTURE_2D,treeid); - for(j=0;jsizeX, img->sizeY, GL_RGB, - GL_UNSIGNED_BYTE, (GLvoid *)(img->data)))) { - fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); - exit(-1); - } - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_LINEAR); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL); - - glGenTextures(1,&treeid); - glBindTexture(GL_TEXTURE_2D,treeid); - - if(!(img=ImageLoad("tree2.rgb"))) { - fprintf(stderr,"Error reading a texture.\n"); - exit(-1); - } - - for(y=0;y<128;y++) - for(x=0;x<128;x++) { - tex[x][y][0]=img->data[(y+x*128)*3]; - tex[x][y][1]=img->data[(y+x*128)*3+1]; - tex[x][y][2]=img->data[(y+x*128)*3+2]; - if((tex[x][y][0]==tex[x][y][1]) && (tex[x][y][1]==tex[x][y][2]) && (tex[x][y][2]==255)) - tex[x][y][3]=0; - else - tex[x][y][3]=255; - } - - if((gluerr=gluBuild2DMipmaps(GL_TEXTURE_2D, 4, 128, 128, GL_RGBA, - GL_UNSIGNED_BYTE, (GLvoid *)(tex)))) { - fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); - exit(-1); - } - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_LINEAR); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); -} - -static void inittree(void) -{ - int i; - float dist; - - for(i=0;iTREEOUTR)); -} - -int main(int ac,char **av) -{ - int i; - - fprintf(stderr,"Fire V1.5\nWritten by David Bucciarelli (tech.hmw@plus.it)\n"); - - /* Default settings */ - - WIDTH=640; - HEIGHT=480; - np=800; - eject_r=0.1; - dt=0.015; - eject_vy=4; - eject_vl=1; - shadows=1; - ridtri=0.1; - - maxage=1.0/dt; - - if(ac==2) - np=atoi(av[1]); - - if(ac==4) { - WIDTH=atoi(av[2]); - HEIGHT=atoi(av[3]); - } - - glutInitWindowPosition(0,0); - glutInitWindowSize(WIDTH,HEIGHT); - glutInit(&ac,av); - - glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE); - - glutCreateWindow("Fire"); - - reshape(WIDTH,HEIGHT); - - inittextures(); - - glShadeModel(GL_FLAT); - glEnable(GL_DEPTH_TEST); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - - glEnable(GL_FOG); - glFogi(GL_FOG_MODE,GL_EXP); - glFogfv(GL_FOG_COLOR,fogcolor); - glFogf(GL_FOG_DENSITY,0.1); -#ifdef FX - glHint(GL_FOG_HINT,GL_NICEST); -#endif - - p=malloc(sizeof(part)*np); - - for(i=0;i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fire - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fire.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fire.mak" CFG="fire - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fire - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fire - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fire - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fire - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fire - Win32 Release" -# Name "fire - Win32 Debug" -# Begin Source File - -SOURCE=.\fire.c -# End Source File -# Begin Source File - -SOURCE=.\image.c -# End Source File -# Begin Source File - -SOURCE=.\image.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/glbpaltex.dsp b/lib/glut-3.7.6/progs/bucciarelli/glbpaltex.dsp deleted file mode 100644 index 0c13c6cd34a189f2bc0bb3998f5159e3699b3cdd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/glbpaltex.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glbpaltex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glbpaltex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glbpaltex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glbpaltex.mak" CFG="glbpaltex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glbpaltex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glbpaltex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glbpaltex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "glbpaltex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "glbpaltex - Win32 Release" -# Name "glbpaltex - Win32 Debug" -# Begin Source File - -SOURCE=.\glbpaltx.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/glbpaltx.c b/lib/glut-3.7.6/progs/bucciarelli/glbpaltx.c deleted file mode 100644 index 202dcb41b3993b0b2b94f8c98e2fef16c05bee6d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/glbpaltx.c +++ /dev/null @@ -1,160 +0,0 @@ -/* glbpaltex.c */ - -/* - * Global Paletted texture demo. - */ - -#include -#include -#include -#include - -#if defined(FX) && defined(__WIN32__) -WINGDIAPI void APIENTRY gl3DfxSetPaletteEXT(GLuint *pal); -#else -void gl3DfxSetPaletteEXT(GLuint *pal); -#endif - -static float Rot = 0.0; - - -static void Idle( void ) -{ - Rot += 5.0; - glutPostRedisplay(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Rot, 0, 0, 1); - - glBegin(GL_POLYGON); - glTexCoord2f(0, 1); glVertex2f(-1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, 1); - glTexCoord2f(0, 0); glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -/* ARGSUSED1 */ -static void Key( unsigned char key, int x, int y ) -{ - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -/* ARGSUSED1 */ -static void SpecialKey( int key, int x, int y ) -{ - switch (key) { - case GLUT_KEY_UP: - break; - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ -#ifdef GL_3DFX_set_global_palette - GLubyte texture[8][8] = { /* PT = Paletted Texture! */ - { 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 100, 100, 100, 0, 180, 180, 180}, - { 0, 100, 0, 100, 0, 0, 180, 0}, - { 0, 100, 0, 100, 0, 0, 180, 0}, - { 0, 100, 100, 100, 0, 0, 180, 0}, - { 0, 100, 0, 0, 0, 0, 180, 0}, - { 0, 100, 0, 0, 0, 0, 180, 0}, - { 0, 100, 255, 0, 0, 0, 180, 250}, - }; - int i; - - GLubyte table[256][4]; - - if (!glutExtensionSupported("3DFX_set_global_palette")) { -#endif - printf("Sorry, 3DFX_set_global_palette not supported\n"); - exit(0); -#ifdef GL_3DFX_set_global_palette - } - - /* put some wacky colors into the texture palette */ - for (i=0;i<256;i++) { - table[i][2] = i; - table[i][1] = 0; - table[i][0] = 127 + i / 2; - table[i][3] = 255; - } - - gl3DfxSetPaletteEXT((GLuint *)table); - - glTexImage2D(GL_TEXTURE_2D, /* target */ - 0, /* level */ - GL_COLOR_INDEX8_EXT, /* internal format */ - 8, 8, /* width, height */ - 0, /* border */ - GL_COLOR_INDEX, /* texture format */ - GL_UNSIGNED_BYTE, /* texture type */ - texture); /* teh texture */ -#endif - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glEnable(GL_TEXTURE_2D); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 640, 480 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - - glutCreateWindow(argv[0]); - - Init(); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutIdleFunc( Idle ); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/bucciarelli/gltest.c b/lib/glut-3.7.6/progs/bucciarelli/gltest.c deleted file mode 100644 index b9ec29e8b7cc78f4f1d89218126f686194a3504a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/gltest.c +++ /dev/null @@ -1,535 +0,0 @@ -/* - * This program is under the GNU GPL. - * Use at your own risk. - * - * written by David Bucciarelli (tech.hmw@plus.it) - * Humanware s.r.l. - */ - -#include -#include -#include -#include -#include - -typedef struct { - char *name; - char *unit; - void (*init)(void); - int (*run)(int, int); - int type; - int numsize; - int size[10]; -} benchmark; - -static int frontbuffer=1; - -/***************************************************************************/ - -static void init_test01(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-0.5,639.5,-0.5,479.5); - glMatrixMode(GL_MODELVIEW); - - glShadeModel(GL_FLAT); - glDisable(GL_DEPTH_TEST); - - glClearColor(0.0,0.1,1.0,0.0); - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1.0,0.0,0.0); -} - -/* ARGSUSED */ -static int test01(int size, int num) -{ - int x,y; - - glBegin(GL_POINTS); - for(y=0;yinit(); - - stime=glutGet(GLUT_ELAPSED_TIME); - - dtime=0.0; - calibnum=0; - while(dtime<2.0) { - bmark->run(0,1); - glFinish(); - etime=glutGet(GLUT_ELAPSED_TIME); - dtime=(etime-stime)/1000.0; - calibnum++; - } - glPopAttrib(); - - fprintf(stderr,"Elapsed time for the calibration test (%d): %f\n",calibnum,dtime); - - num=(int)((BMARKS_TIME/dtime)*calibnum); - - if(num<1) - num=1; - - fprintf(stderr,"Selected number of benchmark iterations: %d\n",num); - - mintime=HUGE_VAL; - maxtime=-HUGE_VAL; - - for(tottime=0.0,j=0;j<5;j++) { - glPushAttrib(GL_ALL_ATTRIB_BITS); - bmark->init(); - - stime=glutGet(GLUT_ELAPSED_TIME); - numelem=bmark->run(0,num); - glFinish(); - etime=glutGet(GLUT_ELAPSED_TIME); - - glPopAttrib(); - - dtime=(etime-stime)/1000.0; - tottime+=dtime; - - fprintf(stderr,"Elapsed time for run %d: %f\n",j,dtime); - - if(dtimemaxtime) - maxtime=dtime; - } - - tottime-=mintime+maxtime; - - fprintf(stdout,"%s\n%f %s/sec",bmark->name,numelem/(tottime/3.0),bmark->unit); - - if(bmark->type==3) - fprintf(stdout,", MPixel Fill/sec: %f\n\n", - (numelem*bmark->size[0]*(float)bmark->size[0])/(1000000.0*tottime/3.0)); - else - fprintf(stdout,"\n\n"); -} - -/***************************************************************************/ - -static void dotest1param(benchmark *bmark) -{ - float stime,etime,dtime,tottime,maxtime,mintime; - int num,numelem,calibnum,j,k; - - fprintf(stdout,"%s\n",bmark->name); - - for(j=0;jnumsize;j++) { - fprintf(stderr,"Current size: %d\n",bmark->size[j]); - - glPushAttrib(GL_ALL_ATTRIB_BITS); - bmark->init(); - - stime=glutGet(GLUT_ELAPSED_TIME); - - dtime=0.0; - calibnum=0; - while(dtime<2.0) { - bmark->run(bmark->size[j],1); - glFinish(); - etime=glutGet(GLUT_ELAPSED_TIME); - dtime=(etime-stime)/1000.0; - calibnum++; - } - glPopAttrib(); - - fprintf(stderr,"Elapsed time for the calibration test (%d): %f\n",calibnum,dtime); - - num=(int)((BMARKS_TIME/dtime)*calibnum); - - if(num<1) - num=1; - - fprintf(stderr,"Selected number of benchmark iterations: %d\n",num); - - mintime=HUGE_VAL; - maxtime=-HUGE_VAL; - - for(numelem=1,tottime=0.0,k=0;k<5;k++) { - glPushAttrib(GL_ALL_ATTRIB_BITS); - bmark->init(); - - stime=glutGet(GLUT_ELAPSED_TIME); - numelem=bmark->run(bmark->size[j],num); - glFinish(); - etime=glutGet(GLUT_ELAPSED_TIME); - - glPopAttrib(); - - dtime=(etime-stime)/1000.0; - tottime+=dtime; - - fprintf(stderr,"Elapsed time for run %d: %f\n",k,dtime); - - if(dtimemaxtime) - maxtime=dtime; - } - - tottime-=mintime+maxtime; - - fprintf(stdout,"SIZE=%03d => %f %s/sec",bmark->size[j],numelem/(tottime/3.0),bmark->unit); - if(bmark->type==2) - fprintf(stdout,", MPixel Fill/sec: %f\n", - (numelem*bmark->size[j]*bmark->size[j]/2)/(1000000.0*tottime/3.0)); - else - fprintf(stdout,"\n"); - } - - fprintf(stdout,"\n\n"); -} - -/***************************************************************************/ - -static void display(void) -{ - int i; - - if(frontbuffer) - glDrawBuffer(GL_FRONT); - else - glDrawBuffer(GL_BACK); - - for(i=0;i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gltest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gltest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gltest.mak" CFG="gltest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gltest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gltest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gltest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gltest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gltest - Win32 Release" -# Name "gltest - Win32 Debug" -# Begin Source File - -SOURCE=.\gltest.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/image.c b/lib/glut-3.7.6/progs/bucciarelli/image.c deleted file mode 100644 index 1ebf3106eca4a6c9a57a91f789b5a68d581bcc69..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/image.c +++ /dev/null @@ -1,232 +0,0 @@ -#include -#include -#include -#include -#include "image.h" - -#define IMAGIC 0x01da -#define IMAGIC_SWAP 0xda01 - -#define SWAP_SHORT_BYTES(x) ((((x) & 0xff) << 8) | (((x) & 0xff00) >> 8)) -#define SWAP_LONG_BYTES(x) (((((x) & 0xff) << 24) | (((x) & 0xff00) << 8)) | \ -((((x) & 0xff0000) >> 8) | (((x) & 0xff000000) >> 24))) - - typedef struct - { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short sizeX, sizeY, sizeZ; - unsigned long min, max; - unsigned long wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp[5]; - unsigned long rleEnd; - unsigned long *rowStart; - unsigned long *rowSize; - } Image; - - -static Image *ImageOpen(char *fileName) -{ - Image *image; - unsigned long *rowStart, *rowSize, ulTmp; - int x, i; - - image = (Image *)malloc(sizeof(Image)); - if (image == NULL) - { - fprintf(stderr, "Out of memory!\n"); - exit(-1); - } - if ((image->file = fopen(fileName, "rb")) == NULL) - { - perror(fileName); - exit(-1); - } - /* - * Read the image header - */ - fread(image, 1, 12, image->file); - /* - * Check byte order - */ - if (image->imagic == IMAGIC_SWAP) - { - image->type = SWAP_SHORT_BYTES(image->type); - image->dim = SWAP_SHORT_BYTES(image->dim); - image->sizeX = SWAP_SHORT_BYTES(image->sizeX); - image->sizeY = SWAP_SHORT_BYTES(image->sizeY); - image->sizeZ = SWAP_SHORT_BYTES(image->sizeZ); - } - - for ( i = 0 ; i <= image->sizeZ ; i++ ) - { - image->tmp[i] = (unsigned char *)malloc(image->sizeX*256); - if (image->tmp[i] == NULL ) - { - fprintf(stderr, "Out of memory!\n"); - exit(-1); - } - } - - if ((image->type & 0xFF00) == 0x0100) /* RLE image */ - { - x = image->sizeY * image->sizeZ * sizeof(long); - image->rowStart = (unsigned long *)malloc(x); - image->rowSize = (unsigned long *)malloc(x); - if (image->rowStart == NULL || image->rowSize == NULL) - { - fprintf(stderr, "Out of memory!\n"); - exit(-1); - } - image->rleEnd = 512 + (2 * x); - fseek(image->file, 512, SEEK_SET); - fread(image->rowStart, 1, x, image->file); - fread(image->rowSize, 1, x, image->file); - if (image->imagic == IMAGIC_SWAP) - { - x /= sizeof(long); - rowStart = image->rowStart; - rowSize = image->rowSize; - while (x--) - { - ulTmp = *rowStart; - *rowStart++ = SWAP_LONG_BYTES(ulTmp); - ulTmp = *rowSize; - *rowSize++ = SWAP_LONG_BYTES(ulTmp); - } - } - } - return image; -} - -static void ImageClose( Image *image) -{ - int i; - - fclose(image->file); - for ( i = 0 ; i <= image->sizeZ ; i++ ) - free(image->tmp[i]); - free(image); -} - -static void ImageGetRow( Image *image, unsigned char *buf, int y, int z) -{ - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((image->type & 0xFF00) == 0x0100) /* RLE image */ - { - fseek(image->file, image->rowStart[y+z*image->sizeY], SEEK_SET); - fread(image->tmp[0], 1, (unsigned int)image->rowSize[y+z*image->sizeY], - image->file); - - iPtr = image->tmp[0]; - oPtr = buf; - for (;;) - { - pixel = *iPtr++; - count = (int)(pixel & 0x7F); - if (!count) - return; - if (pixel & 0x80) - { - while (count--) - { - *oPtr++ = *iPtr++; - } - } - else - { - pixel = *iPtr++; - while (count--) - { - *oPtr++ = pixel; - } - } - } - } - else /* verbatim image */ - { - fseek(image->file, 512+(y*image->sizeX)+(z*image->sizeX*image->sizeY), - SEEK_SET); - fread(buf, 1, image->sizeX, image->file); - } -} - -static void ImageGetRawData( Image *image, unsigned char *data) -{ - int i, j, k; - int remain; - - switch ( image->sizeZ ) - { - case 1: - remain = image->sizeX % 4; - break; - case 2: - remain = image->sizeX % 2; - break; - case 3: - remain = (image->sizeX * 3) & 0x3; - if (remain) - remain = 4 - remain; - break; - case 4: - remain = 0; - break; - } - - for (i = 0; i < image->sizeY; i++) - { - for ( k = 0; k < image->sizeZ ; k++ ) - ImageGetRow(image, image->tmp[k+1], i, k); - for (j = 0; j < image->sizeX; j++) - for ( k = 1; k <= image->sizeZ ; k++ ) - *data++ = *(image->tmp[k] + j); - data += remain; - } -} - -IMAGE *ImageLoad(char *fileName) -{ - Image *image; - IMAGE *final; - int sx; - - image = ImageOpen(fileName); - - final = (IMAGE *)malloc(sizeof(IMAGE)); - if (final == NULL) - { - fprintf(stderr, "Out of memory!\n"); - exit(-1); - } - final->imagic = image->imagic; - final->type = image->type; - final->dim = image->dim; - final->sizeX = image->sizeX; - final->sizeY = image->sizeY; - final->sizeZ = image->sizeZ; - - /* - * Round up so rows are long-word aligned - */ - sx = ( (image->sizeX) * (image->sizeZ) + 3) >> 2; - - final->data - = (unsigned char *)malloc( sx * image->sizeY * sizeof(unsigned int)); - - if (final->data == NULL) - { - fprintf(stderr, "Out of memory!\n"); - exit(-1); - } - - ImageGetRawData(image, final->data); - ImageClose(image); - return final; -} diff --git a/lib/glut-3.7.6/progs/bucciarelli/image.h b/lib/glut-3.7.6/progs/bucciarelli/image.h deleted file mode 100644 index 52ccd5b11bc0a4fb313f4c05686ecd4e5fad8b90..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/image.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __IMAGE_H__ -#define __IMAGE_H__ - -typedef struct -{ - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short sizeX, sizeY, sizeZ; - char name[128]; - unsigned char *data; -} IMAGE; - -IMAGE *ImageLoad(char *); - -#endif /* !__IMAGE_H__! */ diff --git a/lib/glut-3.7.6/progs/bucciarelli/mnt.bin b/lib/glut-3.7.6/progs/bucciarelli/mnt.bin deleted file mode 100644 index 0dc479b418a74a152387267ac83f54d130c46d68..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/mnt.bin +++ /dev/null @@ -1 +0,0 @@ -âããå½äãããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½çéëíÿû÷ŸŸ÷ŸŸŸŸ°±ÛÜÝÝÛŸûþÿîíìëëëëëìëëíïÿîìììëé½ååäãâãââãåèêëëèåãâãäå½çç½åããääåçèéêîÿûûûüü÷±ÛܲŸ÷úú÷±²°ûïîîîîïíëé½ãââââãåçåäããããâãâââãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäå½éìíîÿû÷ŸŸ÷÷Ÿ°±±±²ÝÞÞ²÷ûþïìéèèèèèèèççéëëêêêéèç½½½äãäåãããä½èêëèåââãå½çç½½½½èéèèèèèêííîîîîþú°ÜÞÛ±°°°±ÛÜ°úþÿÿÿÿïíëè½ãâââââä½ääãâãä½çåääåãâãäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½èìïÿþüú÷ŸŸ÷÷÷°±²²ÜÝÝݱŸ÷üîéç½åää½½åääå½½èèç½½åå½åääçèç½½å½èëìé½ãâã½èééèèèìíííìêéèêëêéèêìïüŸÜÞÝÜÛÜÜÜÝݱ÷üþüüüþîëèåââââââäåãâââãåèêèèèçåäåçåâââââââãããääãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçéêíîþú÷÷Ÿ°÷úþþû÷²ÝÝÝÞÝÛ±÷üíé½äãâããããââââãäãããäääå½çèêìëêè½½èêìëéåãäåèìëëìîÿþüûÿîëêéèç½½èëïú±ÜÞßÞÝÞÞÞÝÜ°÷üþÿþûûïìèäââââââäåââââã½êìëëêèç½èèåââââââãå½çèçåããââããããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½éëíîþ÷°°°°Ÿúüÿÿþû°ÜÝÝÝÝܱ÷þìçåãââââââââââââââãåååçéêíîîîìêéèéëîíéåää½êììíÿüûú÷Ÿúÿíëè½½ååèìÿú±ÜßßßÞÞÞÝÜÛ°÷üïïþûúÿìèäâââââäååãâããä½éìííìêèééèåãâââââäçèèèççççåå½çç½åäããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãâââââãââã½èêêëîü÷°°Ÿ÷÷üÿîîïþú°±ÛÜÛ±Ÿûþíê½ãâââââââââââââãå½çèéêìïïïîìëëêêëíëçäâäçêìíÿüúûú°²Ÿûïìêèç½çéìïûŸ²ÝÜÜÜܲ±²²°÷þïÿþûúüîéåãâââãäåååå½½çèêìîïîíëêéèåãââââä½èèèèéëìíëéëíìëéè½äããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåääããå½ääåèéëëìïûŸ°Ÿ÷úûþïîîÿþüú°ÛÜÛ±Ÿúüïëçäãâââââââââââãå½çèéëìîïþþïìëëêëìíêçåäåçéëîþú÷úŸÛܱ÷þîìêèçéëíÿûŸ²ÜÛ²±±ŸŸ°±Ÿûÿîïÿûúþíé½äãâââãä½çèçèêëíïÿÿÿþîíêèåããääåçèèèéêìïþüÿïÿþÿîìêç½½åãââââââãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããäå½çéççèèç½çèéêëíþúŸ°Ÿ÷üÿÿÿïïþüüüú°²Û²°úüîëéçåãâââââââââäå½çèèéëìïü÷÷üîìììììêéèèççèéëïü÷ŸŸ±ÛÝÛ°üïìêç½èëîþú±ÛÝÜÛ°÷÷÷Ÿ÷ûþîííïüûïëéçåäââââä½çççéëìïþþþûûþïìéèç½çèèêêêêëíîþûúûûûûþÿîëéééèåãââââããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½åå½êëêéééèçèèèéìïüúŸ°Ÿûÿîïÿÿÿþüüþû÷±ÜÛ°úüîëéç½äââââââââä½ççèéêéêíþú±²÷þïîîíëêëìëëêéêìïü÷Ÿ°²ÜÝÛŸüïíìé½èìïü÷±ÛÝܲŸúúûûúüïîííïüüîëéçåäââââââãä½êëìïþþüüþÿþïîíëèèèêëììíííîÿþûûûüÿîíëêëìëéçåå½äãããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããåçêëêéçç½çççèëîÿÿþüúûüïîïÿïîîïïþüú÷°÷ûüÿëéççåãâââââââãåççççêêéêìï÷²Û°úüÿîíëëíííìêêìíïÿüúŸ°±°÷ûÿïîíéçêíîïþúŸ±²±Ÿúûþüûÿîììíïïîëé½åãââââââââã½êëëîþüüþÿÿüüüÿíêêëíííîîíîïïÿüþþþÿïíììîíììëêëëçääãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½éêéè½½½çççêîþþÿÿþüüþþÿÿÿïíìíïþûúú÷ûþÿïìéç½ãâââââââãäçéç½éëëêêëÿŸÜÞÛ±ŸûþÿîïïîîîììîÿÿÿüûúŸ÷ûþÿÿÿÿïìêëííîÿû÷°°°Ÿúüþûûÿîííîííìêçåäâââââââââãèëëíïþþþÿÿþüüûþîííîîîïïïÿþÿÿþþïïÿþÿïîîîîïÿïîïîêçäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½çççççèéééìÿþüþÿÿþþüüüþÿîííîþú÷Ÿ÷úûüþÿíëèåãââââããäåçééçèêêêêêíü±ß¹ßÞÛ±Ÿ÷úúüÿïîííïüüüþþüûüÿïÿþüûüîíîîîîÿüúŸŸŸ÷úüüûûÿîììííìêéçåãââââââââã½êíîîîïïÿïïÿüûúüÿÿþþÿÿÿÿþüûþÿþÿïïÿþÿÿÿÿïïþûüþÿïìçãââââââââââââââââââââââââââââââââââââââââââââââââãââââââââââââââââââââââå½ççèèéëëìîïÿüþïîïÿþüüþïîîîÿû÷Ÿ°°Ÿ÷úüþîìèäâââââãä½çèèèèèêëêêìîü±ß›­¹ÞÛÛÛ²±÷üþÿïïû÷úúüþþþÿïîïþüüüþÿïïïïÿþúŸ°ŸŸŸ÷ûüþîììììëéç½åäâââââââââäèëïïîîîïïîîïÿþüþþÿÿïîîîîïþúüþÿïïÿÿÿÿþÿïïÿûûþÿïîë½ãâââââââââââââââââââââââââââââââââââââââââââââãä½çåäãâââââââââââââââââââä½½½½çèêëëëìíîíììíííîÿÿÿÿþþûŸ±±±±²°÷ûÿíêçäãâãäãäåååçèéèèêìëìíîû±Þ¹¹ôÝÛÛÝÝܱŸŸ÷ûû÷ŸŸ÷ûûþïïííîíììîÿÿîîïÿþüúŸŸ°²²Ÿúûüÿîíìêèäããäãââââââââãåéìÿÿÿîîïïïïîîÿüüÿïîíííííîü÷ûþÿïÿþÿïïïîîïþûúûÿïíê½ãââââââââââââââââââââââââââââââââââââââââââããåçéëìëéçåãâãäãâââââââââââââãåååäå½èêëëëëêêëììëëìïÿÿþû÷Ÿ²ÜÜÜÝÜ°÷ûþíé½åäãåååäääå½çééèëííîîÿú±ÝôôôÝÛÝßô¹ÞÜÜÛ²±²Û²°Ÿúüïíìììëééìïÿïïÿûúú÷°°²Üܱ°Ÿ÷ûÿïìé½ãââââââââââââã½êìîïîìëìíïÿÿþþÿïîîíîíìììíþúþÿïîîîííìëëíïþûŸúüÿíê½äããââââââââââââââââââââââââââââââââââââââääåçéêíîîîíìêç½çè½½åäããâââââââââââââäåçêëììëêééééééëîïþû°²ÛÝôôôôݱ÷úüíé½ååå½ççåãä½èéêêìîïîííÿü÷²ÞÞÞÞÞßô­œ­¹ôôÞÝÞÞܲ±°ûïìêêêèèêìïÿÿþûŸŸ°±ÛÛÜÝÞܲ±±÷ûþíéäâââââââââââââäçêìîîîìëëíïüûûþïïîííîîìëìîüúûÿïîííííëêëíïþúŸŸûÿíêè½ääãâââââââââââââââââââââââââââââââââââãåçèéëíïÿÿüþÿîíêéêéêêéè½ãâââââââââââââãä½èëëëêéç½çééêëíÿüŸÛÝÞô¹­­ôݱŸ÷üíêçå½èéêéç½½çéëííîÿþÿÿÿþû÷²ÝÝÞßßô¹œžžžœ­¹¹ôÞÜܲúïìêééèéìïþüüûŸ²²ÛÜÜÝÞÞÞÞÝÝܱ÷ûïê½ãâââââââââââä½éìíííííîïþüúú÷üÿïîííïïíëìÿú°Ÿûÿïîïïïîïïÿüûú÷úûÿîëêè½äãââââââââââââââââââââââââââââââââââä½çêëíîÿþüûûÿíëëééç½½½½½äââââââââââââââââãåçèéèç½½çéêìíïü÷±ÛÜÞßÞÞÝÛ±Ÿ÷ûïíìçå½éêêééééêìîîîïüûûûûûú°ÛÜÝÞÞßßô››œžœ››››­­ßÜ÷þîëìîîÿü÷ŸŸ÷Ÿ²ÜÜÝÝÜÝßßßßßÞÝ°úþîëçãââââââââââã½éëííîîíîïþû÷÷°±÷üÿîííîííìíïú±°÷üÿÿþþþüûû÷÷÷÷úûûüïììëéçåâââââââââââââââââââââââââââââââãäåçéêíîîÿüûú÷÷ÿíëêéçåäãâäåãâââââââââââââââââãä½ç½å½çéêìîïþú±ÛÝÝÞÞÞÝÛ±°÷ûÿîíìéçèêêéêëììíîïþþû÷°ŸŸ°±±ÛÝÝÞÞßôô¹­›œžžžžžžž›ßÜŸüïíïüúŸ±ÛÜÛ±²ÝßôôßÞÞôô¹¹ßÞݱúþïìéäââââââââââã½êëìîïïïïþ÷±²ÜÜÛ°÷þïìëìíîïÿþú°±°úüûúúúúû÷°÷÷÷úûûüÿïïîíëèäââââââââââââââââââââââââââââããäå½èêëîîïþûû÷ŸŸûÿëèåãâââãääâââââââââââââââââââãäääå½èêíÿüú°ÛÜÜÜÝÝÞßݲ°Ÿúþïîîîìêêëêêëìììíïû°°°°±²ÛÝßÞßôôôôßßô­›œ›››œž»º›ôݱúþþû÷±ÛÝßßÞÝÞß¹¹­›­¹­­›¹ßßß²÷ûþîëçäâââââââââãçììíÿþþüû÷±ÛÝÞÞÞÜ°ûïëêëíÿüüûŸ±±°÷÷÷ŸŸŸ÷Ÿ±±°ŸŸ÷ûüþþþüüüïë½ãââââââââââââââââââââââââââäçç½èêëìîÿÿÿüû÷Ÿ°°÷ÿê½äâââãäääâââââââââââââââââââââããäçéìïü÷²ÝÞÝÜÝÝÞÞÞÜÛ²Ÿúüþÿïÿïîíììëíííîÿú±ÛÛÛÛÛÝÞ¹œ››­­¹ôôô­žžžœ­­œ©ª¼»›Þ²÷ûûŸ²Ýô¹¹¹­¹¹­œžžœžœ¹ôôÞÛ±ŸúþîéåâââââââââãçìîïÿüûúŸ±±ÛÞßßÞÛŸüíéèéëîïÿû÷Ÿúúú÷÷÷Ÿ°°²²±±°Ÿúüÿïïþûûûïêåãââââââââââââââââââââââââãåçèéëìîÿüú÷÷÷Ÿ°°±Ÿ÷ûïëçäãââãå½½ãââââââââââââââââââââãä½èêíþû°ÜôßÝÝÞÞÞÜÛÛܲ°Ÿ÷úûüüþþïíííïþüúŸ²ÛÝÝÝÞô­œºœ›­¹¹¹›žºººž››ž©¼¶ø®œôܱŸŸ±Ûß­­¹­œžºººº›­­ßÝÝÝÛ°üíèåãââââââââãçíÿÿþû÷°ÛÝÝÝô¹ôÞ²÷þìéçèëëìïüûúú÷Ÿ°°±²ÛÛÛ²²²²°÷úþÿÿüú÷úÿëçäââââââââââââââââââââââãåèééêìîÿû÷Ÿ²ÜÜÛÛÛ±°Ÿ÷ûïë½åãââãä½çäââââââââââââââââââââãåçéìÿú÷±Þ­ôÞßôßÞܲÜÜÛ²²²±°Ÿ÷úúþïïÿû÷°ÛÝßßßß¹›žº©»®»ºžžœœººœœ®¶ýñ¶®º­ßݲ±²Þ­žœœž»¦»»»»©©œœ›ßÞßÞܱúÿìé½åâââââââäèìîÿüŸ±Üß­­­­­ôݱ÷þïëééêêëîþûŸ°±°±ÛÜÜÝÛ±°°²Û±°úüüüûŸ°÷üïê½ãâââââââââââãäääãââââäçêêêìîïþ÷±²ÛÞôßÝÝܱŸ÷÷þíèåãââââäççåäääãââââââââââââââââä½éíÿûŸ°²Þ­ôß¹­ôÞÛ²²²²ÝÞßßݲ°Ÿ÷üüûŸ±ÛÝô›œ››žº©»¦ªª®®¦©©»»»»»ººº»ªñæùæñ®œ­ôßô›žºº¦ªÈÈȼ¼ª¦»©ºž­ôÞÞÞݲŸþíêçãâââââã½éëîÿú±Üß¹œžž›­ÞÛ°úüïìëëëëëìïû°°°°°²ÛÜÜÛ°Ÿ°²ÜÛ°÷÷úû÷°°Ÿúþìçãâââââããããäåççç½äãââã½êììîÿüúŸÛÝßô›œ›ôÞݱ÷÷úþíèåââââãå½ååå½½ãââââââââââââââââäçêîüú÷°²ß­­­›­ôÝÛ±°±Üß¹›­ôÝÛ±Ÿ÷÷±ÜÝô›©¦®ª¦®Èȶø¶Èª¼¼¼ªª¦©»»¦ªª¶ýù§ù´¼»œ››žº©©»®¼ÈññññøÈ®¦»ž›ßÞÞÝÝÛŸüïëçãââââãåèèéíþ÷ÛÞô­››­››Þ²Ÿ÷üÿïîìëêéëíÿûûûüþüúŸ±ŸúúŸ±Û±±±±Ÿ÷Ÿ°ŸŸ÷ûïêçäâââãäå½½çè½äääãââââåéìïþü÷°²ÛÝôœº›ôÞÜ°ŸŸ÷ûÿìèäâââââââãå½½ãââââââââââââââââã½èëîïüú°Ý¹­›­­ôÝÛ±°²Ý¹››¹ÞÞݲ±±ÛÞ¹›žº©»»»»»¦¦¦¼øøøñýñø¶øø¶¼ª¼¼ª¼È¶ýæ·¸ý¶ª»œ©¦®ªÈøññøø¶¶¼®¦»ºž›ßÛ²±±±÷üïìèäâââââåèéèêîû±ÜÞ¹››¹¹››Þ±°ŸûþþþïíêêêëíïîíííîïüúúûûúŸ±±²²²±°°°°±±°úÿìçäâãäçèéêêé½ãââââââãåéìÿú÷±ÛÜÜÞ­©©›ôܱ°±±÷þîëçäââââââãäåäââââââââââââââââââäçêìíÿüŸÛß¹››­ôÝÜÛÛÜÞ­››¹ôôÞÝÜÝÞ­»®¼¼¼ª®ª®®ªøýñýµµ´µµýøøýýýý´´µ·¸ùæý¶®»º©»¦ªÈøýæµýýñø¶¼®¦»º›ôÛŸ÷÷úúüïíìèäâââãäèèèèêîú²Þ¹›œ›­­­­ßÛ²°úüüüÿîìëééêëëêëëëíïüûüþþû°²Û²±±±²²ÜÝܲŸûîêçååçéêìììëçäããââââãçëîüŸ±ÛÛÛÜôœ©®ª»­ßÛ±°ŸûÿïìèåââââââââãäââââââââââââââââââãåçéìïüŸÛßô¹¹¹ôÞÝÝÝÝß¹¹¹ô¹¹ôßßß­»ª¶ñ´ýñøøøñøøññ´æù§¸·µµµæ·¸§§¸··§¯§·µñ¶®¦¦¦¦¼ñµ·§ùæµýø¶¼®¦©¹ÜŸûüþÿïîîìëçäââãä½êéçéìÿ÷ÛÞ­œžž›¹­­¹ÞÛ²°ŸŸŸúþîìêéèèèéééêëíÿüþïïü°Ûܲ±²²ÛÝß¹Þܲ°üîëèéêìîîïïîê½äãããââäèíÿú°ÛÝÝÝÞ­ž©¼Èª»ž¹Ü±Ÿ÷üþïëçäââââââââääâââââââââââââââââââãåèëïû°ÛÝß¹¹¹ôÞÝÝÞÞßßßß¹››­¹­›»¼ñµù§·ææææµ´´µù¸¯¬«¬§·ù¸¯«¨¨¾¾«¬¬«¯¸¸ùµñȼ®¦ªÈ´·¬¾¯·æ´ýñȪ¦©žÞ±ûÿïîìëìíìêçåååå½êîìêëíþ°Üßô­œž››œž›ôÜÛÛÛ²±÷üïïíëéç½½å½çèëîîííïû±ÝßÝÜÛÜÝß¹­ßÝÛ²÷üíêìîïÿÿþÿÿíéçåååäâãèîûŸ±Ýßßß¹œ©ªÈ¼»žßܲ±Ÿûþîéåââââââââââãââââââââââââââââââââåèìÿú°²Ýô¹¹¹ôôÞÝÝÞÞÞß¹›žœ›œ®¶´æù¬¨«¯§¯§·ù·¸§¯¬¾¾«««¯¯¯¬«¾¨¨¨¨¾¾¾«§¸ùæ´ñ¶Èª¼¶øµ¸«¨«¯¸ùµñ¶ª©ž­Ý°þíìëêëíîíëéééééëîþïííïü°ÜÞô­›œœžºž›ÞÛÝÞÝܱ÷üÿíëéçäãäåå½êìììíïû²ß¹ôÞÞßß­žœôÞÝÛ²÷ÿíîÿþüüûüüîëéèèçåäåêþŸ²Ûß­­­œº»¼øȦœßÞݲ°÷ûîèäââââââââââââââââââââââââââââââãåéîûŸ°²Ýô¹­¹¹ôßÝÞßÞÞô›œ©»¼ñ§¯¬ÀŽÂÀÁÀ¾¬¯¬««¾¾¨¨¨¨ÀÁÀ¿¿¿¿ÀÀ¿¿¿¿¿¨¾¬¸´ýýñ¶øñýµù§¾¿¿¾¬§·´È©œôÝ°üíìëëíîîíìëêëíïïþûüüüüû°Üô›©©©©›ßÞß¹­­ÞÛ÷þìèåäâââââã½éêìíÿú²ß¹ôôôô¹›žž¹ÞÜܲ°úüüüüüüûúûÿîììêéç½éï÷²ÜÞ›ºº©»¦¼ø¼©œ¹ßÝÜÛ°ûíçãââââââââââââââââââââââââââââââãåéîúŸ±Üßôô¹›­ôÞÝÞÝÝÞô›žº©¦¦¼ýù¯¿¿Á’€’€’ÂÁÀÁÀÀÀÁÂŽŽŽŽŽŽŽŽÂÀ¿¿¿¨¨¬¸µ´´ýý´ææù¸¬¿Â¿¾«¬§·ùæø¦œÞ²Ÿþîîïïÿîíìëêëîþþüûüú÷úûú±Ý¹œ»»©©ºž­ôß¹››­ôÝ°þìèåäãããââã½èêíïþŸÜß¹¹¹¹¹¹›žž­ÞÜÛ²±ŸúûüþþüúŸ÷ûÿïîìêééíü°ÜÞ¹©»»©©»®È¶ª©­ÞÝÞÝ°ûíçãâââââââââââââââââââââââââââââä½èëÿúŸ±ÜÞßß¹œ¹ôÞÝÝÜÜÝß›ž©¦®¼ø¬¿ÂŽ’ÅÍÆÅÆÆÃ’’ŽŽ’ÃÃÃÃÀÃÃ’ÂÀÀÀÀ¿¾¬¸æææµæ··§¬¾ÁÂÀ¨¾¬¯§¸ùýªß²÷ÿîîïÿþïìëëëíÿþüúüÿþüÿÿûŸ±Üß›žžœ›­ôßÜÜÝÞßôßÝŸüïíêèèè½å½çéêíþûŸÛÞô¹¹¹ôßßô¹­ôÝÛܱ÷ûüþþïîïüúŸûÿÿïíìêêìïû±Ý­ž©º¦ª¼¦œ¹ßÞܱûïêåâââââââââââââââââââââââââââââåèëíïþûúŸ²ÝÝÝß¹ßÝÛÛÛܲ²Ý­¦¦®Èý·«¨ÁŽ€ÆÏÇÇÍÍÇÅÃÃÃÅÅÅÅÆÆÆÆÆÆÆ€ŽÂÁÁ¿¨¬§··ùù¸§§¯¬¨ÀÀ¨¾¬¸¸§¸ùñªß²ûîëêêìííìëëìîïïÿþïíïïîîþû÷°Üß­›­ôßÞÝܱ±²ÛÝÞÝÛŸûûþïîîìëêëíííþ÷±ÜÞô¹››­ôÞÝÝÞßÝÜܲ÷üþþþÿïïîÿúŸüïïïîíììíïüŸÜ¹œžº©¦¦©º›¹ôÞ²÷ÿíèãââââââââââââââââââââââââââââäéíÿþÿþüú÷²ÝÝÝÞßÜÛÛÜÝܲ±Ý›®ªÈøµ§«¨ÀÂ’ÆÐÏÏÏÐÏÍÆÆÆÍÍÍÇÇÆÆÇÆÇÍÏÍÏÐÏÅ€ŽÂÁÀ¨«¬¬¯§¸§¬««¬««¨¨¾¾«§¸¸¸¸·´È¹²üíéèèéêìíìêìïïîîíììíííîÿüû÷±Ýô­ôÞÝÝÝܲ±°±ÛÜÝܱ°Ÿ÷ûûüÿïÿüûüûŸ²ÜÞ¹››œ››¹ÞÜÜÞÞÝÝÛ°üïïïîïÿÿïÿûúþïíííîîïÿüúŸÛô­žœ››œººž›­ßÜŸþíë½ãââââââââââââââââââââââââââââ½ìÿûüþüûú÷±ÛÜÜÝÝÛÛÜÝÜÛ²Ûßœªø´æ¸¬¾¨¿Â€ÇÉÐÏÍÏÍÍÇÍÏÉÐÏÍÇÆÆÅÅÅÇÇÍÐÑ¥ÐÆ€ŽÂÀ¿¿¨¾¾¨¿Á¿«««««¬¬¯¸¸¸¸§¯¯ùý®œÛüëççèéêëíìëìíííííìììíîîïÿþú°ÛÞßÝÛÛÜÝÝÛ²°±²ÛÜÛ²²±°°Ÿ÷úú÷Ÿ±²ÛÝÝß¹››œœœœôÝÛ²ÛÝÝÛ±úþïíìíîÿÿïÿþüþïïïïïþûú÷÷°ÛÞ¹­¹¹­œœžžžœœ­Þ±ûîëèåãââââââââââââââââââââââââââãäéîûŸŸú÷÷÷Ÿ°±²ÛÛ²±²ÜÝܲ²Üôœªñ¸¬¾¨¨¿ŽÏ¥¥ÉÏÍÍÏÏÐÉÉÐÏÍÍÇÅÅÇÍÏÐÉÒÔÓ¥ÍÅ€ŽÁÁÁÀÀÁ۬«¬¬¬¯¸ù·¸¸§¬¬¯ù´¼Üûë½çèêëìíííííîïíììíîïíììîÿû÷°²ÜÛ²ÛÜÜÜÛ²±±±²²±²Û±±±±±°ŸŸ°ÛÝßÞÞô­­¹­­­¹ÝÛ°Ÿ÷ŸŸŸúüþþîíîïïïïïïÿÿþûúúúú÷÷÷Ÿ±ÛÜÞßô¹­››­œœ­¹ôÛ÷ÿëè½ãâââââââãäääããâââââââââââââä½çëÿú±²²²²±±°ŸŸŸ÷úŸ±Ûܲ±²Üß›º¦ø槾¿ÁÂÍ¥ÔÔÑÏÇÍÐÐÏÐÉÐÐÐÐÏÍÐÑÒÓÔÔ™™ÒÐÇÅ’ŽÁÀÀÁÀÁÂ’Å’À¾¬¬¬§···§¯¯§ñ¦›Ûûë½çéìîîïïïÿþÿïíìíïïïìëììïþüûŸ±±²ÜÜÛ²±°°±±±±°±²²ÛÜÜÜÛ±°ÛÞ¹­¹¹­›­¹­­¹ßܱŸ÷üþüüþþüþÿïÿÿÿïïïïïÿûŸ°°±±±ŸŸ°±²²ÜÝôôô¹ôôœž›ôÞÜŸþìèåãâââââãâã½ççç½åââââââââââââãçéìïþŸÛÞÞÞÝÛ²°úûþÿþúŸ±²±°²ÜÞ¹ž»È´§¨ÁŽ€ÅÍÉÔÖÊÒÉÏÐÉÐÏÉ¥¥ÑÑÑ¥¥Ò™ÊÖ××ÖÊÒÐÇÅ€ŽÀ¨¨ÀÀÁÆÍŽ¿«¬¬·æù·¸¯¯¸µÈ»›ÜúìçèëîÿþþüüûüüÿïîïÿïíêêëíïþþüûúúŸ±²±Ÿ÷Ÿ°²±±±±±²ÛÞô¹¹ôÞÞô­œžœœœžœ›œ›¹ßܱ÷üïíììíïïïÿþüüþÿÿÿÿïþ÷°²ÛÜÜÛ²²²²±±²ÜÝÞÞÞÞô­œ­ßܱûîéåãâââââäåå½èêêêé½ãâââââââââââãèìÿþû±ÝÞÞÞÞÝÛŸüïíîïÿü÷±ŸŸ²Üß­¦È´¸¾Á’ÅÏÉÓÖØÕ™ÑÐÏÏÍÐ¥ÒÔ™ÓÓÔÔ™Õ×ØØØÖÕÓÉÍÆÃŽ¿¾¾¿ÀÂ’ÍÐÆ€Á¾¬§ææù¸§¯¸ýÈ»œÝ÷íéëíïûúúŸ°ŸŸúüÿÿþþïìëëìíîÿÿþûúú÷°²°úúŸ±²±²²±°²Þ­œžžœ­¹›žººžžžžž›ßݲŸþíéééêëíïþûûûüÿÿÿïÿûŸ±ÛÝÝÝÜÜÜÜÜÛ±²²ÛÛ²²Ýô›ž›ß²Ÿþíèåãââââãå½çéêëêêéçäâââââââââââåëÿú÷°ÜÞßÞÞßܱúþîíííïþú÷Ÿ±Üß­œº¦È´¸¾Â€ÆÉљך×ÕÓ¥ÐÐÉ¥Ò™ÕÖÕÊÕÕךËËššØÖÔÑÐÆ’À¾¿ÁÂŽ€ÆÏÏÇŽ¿«¯¸æ·¸¸¸ùµñȦžÞŸÿìíÿûŸŸ°²ÜÛ±÷üþþüûÿîíîîïïÿü÷Ÿ°Ÿ°²Û°÷÷°²ÛÛÜÜÛÜÞ¹›žºº›­›œžžœ›œžžœ¹ÞÛ÷ÿëèééèêìïÿþþþîìíïÿûûúŸ²²²²ÛÛÛÛÝÜÛ±ŸŸ°°²Ý¹žºœôÜ°ûïêçäââââââãäçèèçèéè½äãââââââââãèîüŸŸ°ÛÞÞÝÝܲŸûÿÿþþþþþûŸ²ÜÞ­œ»ª¶´·¬¿ŽÅÉÒ™ÖØ×ÊÔÑ¥¥ÒÓ™Õ×Ø××××ØššËËËØ×ÊÔÐÆ’À¨Á’€ÆÇÍÅÃŽÀ¾«¯¸··ùùùµýøÈ»žß±þìÿ÷±Û²±²Ü±÷ûüÿþûûÿîîïÿþþü÷°ÛÜÛÛÜܲ±±²ÛÝÞßÞÞô¹›ž»»©ºœœ›œžœ­œº»»º­ßÜ÷ÿëéééèèêìîÿÿîëêìïüûüû÷°±²ÛÜÜÜÞßÞÜŸûûú÷°Ûôœºœ¹Ý²Ÿüíé½ãââââââãå½çççèéçåãâââââââä½ëÿ÷°Ÿ°²ÜÜÜÛ²°÷ûüûûúûüû÷°ÜÞ­¦¼¶ñµ·§¾ÂÅÉÓÊØš×™ÓÑ¥ÑÓÊÕ×ךššØØØššÌÌËš×ÕÓÐÆÃ’ÂÁ’ÅÆÆÇÆÆ’ŽÁÀ¨«¬§¸ùææ´ñ¶¼»žô±üïû±ÝÞÝÛÛ²ŸúúûþþüûûüüûúŸúúŸ²ÝÞÝÜÝÞÝÜÜÝÝÞ¹››œœœ»®¼ª®©ºž›­›œœ©»›ôÜ÷ÿìëéèçèéëíïïìêèêîüúú÷÷°ÛÝßôôôôßݱ÷úú÷Ÿ±Üôœºž­ßܱ÷þíêçäââââââãäç½½èèåãâãâââââåçêíþú÷÷Ÿ°±²±±±Ÿúûûûûûú÷Ÿ°±Ûßœ»®¼¶ýæ·«ÂÐљךÖÔÑ¥¥Ò™ÕÖÖךšššËšËá…ÌËšØÊÒÉÍÅÃ’€ÆÍÏÍÆÅÃÂÂÂÂÀ¨«¯·æææµý¶®œß²÷üŸÛÞôÝÛ²±°°÷ûüûûûú÷÷Ÿ°°ŸŸ²Üß¹ôßßÞßôôßô­žºº©®¼¶È¼¦©›­¹­œ©»žôÜŸüïìêèèéééëîìêéçéíü÷÷÷÷±Üß¹­›­¹ßݱ÷úúŸ±²ÜÞ›ºœ¹ÞÛ±÷þîë½ãââââââä½ååç½åäååãâââåéëíïüúŸŸŸŸŸŸŸ°°÷ûû÷÷÷÷ŸŸ°±±Üôž©®ªÈøý´µ¬ÁÃÍ¥ÓÖØÕÔÒ¥ÑÔÕ××ÖØËËÌááÌá ƒ…áÌšÕÔÑÐÇÆÅÆÇÐÉÍÆÅÃŽŽÁÀ¨¯ùæµµµµý¼©­ßÜ°ŸÛÝô¹ßܲ±±±÷ûûûüþþüû÷÷÷÷°Üß¹­­­¹ô­œœœ©»»¦®¦»®ª¶ñø¼¦»ºººžœ­­›œ¦­ßÛ±÷þïíììéçéêèèèéìÿüû÷Ÿ±Ûß­›œ›¹ßÞÝÛ°÷÷Ÿ±²ÛÞ›º›¹ôÝÜ°ûïë½ãâââââããããäå½çèèè½äãä½èêìîü÷±Ÿúûûûûúúûüû÷÷Ÿ°°°±±²Üßœ®¼¼¼Èññ´¸¨ŽÅÍ¥ÔÊ™™ÓÒÓ™ÖØššÌá…ƒƒƒ  Ù„„„Ù ËÖÔÑ¥ÐÆÃÅÇÇÆÅÅÀ’’ÂÁÁ¿«§´ýñøÈ®œßݲ°±ÛÝô­ôÝÛ²°Ÿûþþþÿîîîþûú÷Ÿ²Ýô¹›œœœ›žº»®ªª¼Èȼ¼¼Èø´ñ¼®¦©ºž›››ž©¦©ºœ¹ßݲŸúûþïëéèçååèëîþüú÷°Ûß›žºœôÞÞÞÛ°Ÿ°±±±ÛÞ›ºž›››¹Ý²÷þëçäââââããââãä½èééêëéèèèèéëìïû°²°÷ûüûûüüüüú÷÷Ÿ±²²²²²Ý­©ªª¦®¼¶øý·«ÂÃÇÐÑÔ™™™Ô™ÕØËÌá…ƒ†‡‘„ÙÙ‘‡‡‡‘„…ØÕÔÒÐÆÃÃÃÆÆÆÆÆÅÀÂÁÁÀ¾¯ùµñȪª»º­ÞÛÜÜÝÝÞ¹­¹ßÝÛ°÷üÿÿÿïííîþúŸ±ÛÝô­›œœžº»®¼¶¶øýµµýñññý´ñ¶¼ª®¦©ž››œ©¦¦»©º›ôßÝÛ±÷þíé½åäåèëîÿüúŸ°Ý­ž©»­ôÞÛ±°°±²²ÛÝß­žž­Þܲ÷ÿë½äãâââââãä½éêêêëíìììììîîîþ÷±Û²°úüþþÿÿïþû÷÷Ÿ°±±²ÛÜôœ¦®¦¦®®ªÈýù«Á’ÅÏ¥ÓÔ™™™ÊÖØË̃„‡‚ˆŠŠ‡ŠŠŠ‡‡‡‘ šÖ™ÑÐÍÆÅÅÃÅÇÇÇÅÃÀŽÂÁ¾¯·ý¼¦©œôÞÞôôôßßô¹¹¹¹ôݱûþïîíëìîÿ÷±ÜÞß¹­››œº©»®Èñýýæù·ùæµ´ý´´ýø¶ÈȪ¦ž›œ©¦¦¦¦¦©›­¹ÞÛŸüîéäâã½èìîïþû÷±Þ­©»»›ôܱ°±±²ÛÛÛÜÞô­œžœ›ôÞÝÛŸþìçäââââââãä½ééêêìíííîîïÿÿþû÷±Û²°úÿïïíìíïûŸŸŸ°±ÛÛÝô›¦¼¼ªª®®ªÈñ«ÀÃÇÐÑÒÓÔ™ÊÖØË „‡‚ˆ‰‰‰‰‰‰ˆŠ‘‡‘ Ë×ÊÓÑÐÍÇÅÃÃÆÍÏÏÆÃ’ÂÀ¾§¸ù´È®©ºž¹ß¹›œœ›­­¹­­­¹Þ²úþîìëêëíïüŸ²ÛÜÝÞô­›žžº©¦ª¶ýæ·¸·æµ´µæ´¶¼¼ªª®¦©©¦»©©¦®»ºœ¹ôÞ²Ÿûþíéäãäçèêëìíîÿ÷ܹ››œž›­Þ±ŸŸŸŸ°±±²²²²ÜÞßÜÛ±°Ÿ÷þíçãâââââââââãä½½½çèéêééëìïüûú°²²±úÿïíëêíþûŸ°°²ÜÝÞ¹œªøøøȼÈøñ´·¾ÁÃÅÍÐÉ¥ÒÔ՚˅ Ù†Š‰‰‚ŠŠ‘ Ìš×™Ò¥ÐÏÏÇÇÏÐÉÐÇÅÅ€ÂÀ¾¬§·´ø¼¦©œ¹­œžž›­¹ôôßݱ÷üíëêèêìîïûŸ±²²ÜÞô­››ž»®¶´æù¸¸ùù··µøȪ¼È¼ª®®¼È®©©¦¦©ºž¹ÞÞÜŸûþïìéåãå½½çèééêíû²Þßßô¹ôßÛ°Ÿ÷÷÷÷Ÿ±±°Ÿ÷Ÿ°Ÿúúüþþþíèäâââââââââââãäãããä½ç½½çëÿú÷÷Ÿ±²²÷þîìêêíüú°±²ÜÞô¹œ¦¶´µµñøýµæ§¾Á’ÃÆÇÏ¥ÓÊ×Ë… ƒƒ†‡‰¡¡¡‰ˆˆ‚‘Ù …Ì×ÊÔÒ¥ÉÐÉÑÒÑÉÍÆÅÅÿ«¬§§ùµ´ñȦºžž©©ž­¹ôßÞܲŸüíëéèéëíïþúŸ²ÛÜÜÞô¹­œ®øýµù§¸··¸¸§¯¸æýø¶¶È¼¶¶ñ´ý¶®»©ºž­ÞÜÝÛŸüïîëèååååååååä½ëþ°ÜÝÝÝÞÝÛ±Ÿúú÷÷ú÷ŸŸúüüüïîîíëêëë½ãââââââââââââââââââããâã½êÿ÷°±±²²±Ÿúïëééíþ÷±ÛÜÝôô¹œº»¼ýùùùæµæ·¯«¿ÂÃÅÆÆÏ¥Ó֚჆†††‡‚‰¡‹Œ¡¡‰ˆŠ‘„ƒƒƒÌÖ™ÓÓÔÔ™™ÔÒÉÍÆÅ’ŽÁ¨¬¯§·ææµñ¼¦©º»¦¦©œ¹ßÝÛ°÷üÿíëèåèëíîïþ÷±²ÛÛÜÞßô¹œº®¶ñµ·¯§¸¸§¬««¯ùµýøø¶øñ´ææñÈ®ž›ôÞÜÜÛ°ûÿíêè½½½½ååäãâäêïú±ÛÛÛܲ°Ÿ÷ûûûûûûúúþïîëéèèçåå½åâââââââââââââââââââââââãåêÿ÷°²ÛÜÜÛ±÷ÿíëëîû°ÛÝß¹­­›º»¼ñ游¸¸··¸¬¨ÀÁ’ÅÆÆÇÏ¥Ô֚ᆂ‚‡‘‡ˆ‰¡‹‹Œ¡ˆŠ‡‘‡‘‘ šÖÕÕÖÖÖÕ™Ó¥ÏÇÆÀ’ÂÀ«¯¸ùæ´øȪ¦¦®ªª¦ž­ÞÛ°úüÿîëé½äçêëëíÿüú÷÷Ÿ°±±²Üß›¼ñ¸¯§¸¸§§§§¸µýñýµæµñ¶®©ºž­ßÝÛÛ±úüÿîëéç½½½½çåãâã½êîü÷±²Ü²°Ÿ÷ûüþÿÿïïîëéçåäåäãââââââââââââââââââââââââââââãèíþú±ÛÜܱŸúüÿîîþ÷±Üß­ž¦¼ø´ù§§¯¬¬«¨Á’€ÃÃÅÇ¥ÓÕØ…‘ˆˆŠ‡Š‚ˆŒŒŒ¡ˆ‚ˆˆˆ‚„…ÌËšØ×ÕÊ™ÒÉÍÇÆÅ€Ž¨¬¸¸·ùµ´ñ¶ÈÈȶ¼¦ºœôܱúüïíëéçååèêéèëîïÿþüúúúŸ°±Ü­®ø測¬¯§§¸¸§¸µýýæù¸¸·ùµý¶ª¦©­ÞÝݲŸûþïîìëéç½½½çåãââã½éìþ÷²Ü²±°°÷üþÿîíëéçåãâââââââââââââââââââââââââââããââââã½êíþŸ²ÜÛ²±°úûüüúŸ²Þ­©»®ª¶ñ´¸¬«¾¨ÀÁŽ€ÃÅÅÇÉÓÊš ‡‰ˆ‚Š‚ˆ‰¡‹Î΋ŒÎΡ¡ŒŒ¡‰Š‘„ …áØÕÊ™ÓÑÐÇÇÅÀ€À«¬¯¯¸···ùæµ´ñññÈ»›Þ±úþïìêéç½åçèèç½éìììîþûú÷ŸŸ°Ü¹œ©¶æ¸¬«¬¯§¯¬¯§ùæµæù¸¯¯§·æ´øȼ¼¦º›ßÝܱ°÷üÿîìêçåäãäåääãããå½éíü°Û²±±±Ÿúþïíëè½äââââââââââââââââââââââââââââãäãâââââåçêïú°²ÛÜÜÛ±°úü÷±Ýô›º¦Èñ´µ·§¬¨¿ÀÂŽ€ÅÆÆÅÅÍÉÑÊØᆂ‚ŠŠˆ‰ŒÎ•¢¢¤¤•¤‹‹‹‹‹Œ‰ˆŠ‘Ù šÖÕÊ™ÔÑÏÆÀ’’’Á¿¨¨¾««¬¯§¸ùµýýñª›Ü÷ÿíëëéèç½½ççç½½èééëîïþûúú÷ŸÛô›¼ýù¯¬¬¯¬««¬¯·ù·§¯¯««¬¸´ñø¶¶ª©œßÝÛ±°÷úÿíëêçäââãååäãââãä½êîû°ŸŸŸŸúüÿîêçåãââââââââââââââââââââââââââââãääãâââââãäçìþŸ²ÜÝÝÜÛ±÷÷°ÛÞ›ž»È´æù·¸¯«¨ÁÂ’€ÃÃÆÆÅÆÍÍÍÇÆÇÐ¥ÒÊØ…‘ˆŠ‡Š‚¡Î•“ÚÚ““•Î΋‹Î‹Œ¡ˆŠ† Ë×ÖÊÊÊÒÏÆ€’’€ÂÂÂÁÀ¿¨¾«¬§ùµýñ¼©º›Üúïìêêéèèçç½½½åå½ééêêëîÿþüû÷²ß¹ž»È´·¸¸§¯«¾««¬¬¬¬¬¬¬¬¬§¸¸µ´ñȦº­ôßÛŸûüïìêéçäããå½åäãââããä½êïüþÿîíëêé½ãâââââââââââââââââââââââââââââââââââââââââäèëïû÷Ÿ±±±°÷÷÷°Ûôž©¼ø´æù¸¯¬¨Á’€ÃÅÅÅÅÍÐÐÏÏÏÏÉÒÔÕÌ„‚‰ˆˆˆ‰Œ‹¤¢¢•••ÎŒ¡‰ˆ‚‡†ƒ…ËšØÖÕÊÓ¥ÏÇ€ÃÅ€’ÂÁÀ¿«¯¸æ´È¦º­Þ²úþîìêéèçåäååå½ççççèêëíîÿú°Üô­œ®øµù¸§¯«¾¨¿¨¨¨¨¨¾««¬¯«¬¯¸·æý¶¦ºœô²Ÿúüïíëéç½½çééèåãââãâãäçëíìé½åääãââââââââââââââââââââââââââââââââââââââââââã½èëîþûúú÷Ÿ÷÷ŸŸ²ß›®Èñµù¯«¿Â’ÃÀÃÅÆÅÅÍÉÉɥѥÐÑÔÕšƒŠ‰¡ŒŒŒŒŒ‹Î¤¤Î¤¢ÎŒˆ‚ˆ‚‡††„ áááášÖÊÔÓ¥ÏÇÆÆÆÃÃ’ŽŽÂ¿¾¬·ùµø®­ôÝ°úþîìëèåãããåçéçååå½çéêìÿ÷²Þ­›ž®Èñ港¬¾¨ÀÀ¿ÀÁÁ¿¨¿¿¨ÀÀ¿¨¨¾§æø®œßܲ²°úüïíëêêëëêèåããäåååäå½½äãâââââââââââââââââââââââââââââââââââââââââââââââå½èëîÿûþþüûú°²Üôœ»ªø´ù·¯¾ÁŽ€ÅÆÃÃÆÇÍÏÉÑÑÒÒÓÑ¥ÓÊ×á„Š‰ŒŒŒÎ¤Î¤¤¤ÎΕ¢¤Œ‰‚Š‡‘‘††„ÙÙƒƒ áØÖÊ™ÑÉÉÐÏÍÇÇÇÍÇÅÀ’ŽÀ¿«§ùæø¦­ôÞܲ÷þîëè½ãâã½éé½åäãä½çèëÿ°Ýß­œž»ªøæ·¬¾¾¨ÀÀÁÂŽÁÀÁÂŽŽÂÂÁÀ¾¸´È»ž¹ßÞÝܱ÷ûÿîíííìëé½äää½åäãâââââââââââââââââââââââââââââââââââââââââââââââââââãå½éíÿüüÿïÿûŸ²Ýß›»ª¶æ·¯«¿Ž’ÅÇÍÆÆÅÆÏÏÐÉÑÓÔÔÓÑÑÔ×̃‘‚¡ÎÎΤ¢•¤¤Î‹Î•¢ÎŒˆŠ‡‘‘‘‡‡‘‘††„Ù ÌØ×ÕÔÒÒÑÉÏÏÐÐÐÏÇÆÅ€ŽÂÀ¾¯·µ¶¦º›¹ôôÞ²÷þîê½ãâã½çç½äãââäå½êÿ÷ÛÞ¹›œº©ª¶ñ´¸¯¾¿ÂŽŽŽ’’’ÂÀ¿¬ùýȦ©ž­ôÞÜÛ±Ÿúûþïîîíé½ääåäâââââââââââââââââââââââââââââââââââââââââââââââââââââä½çëîþúúüþûŸ±ÛÜÞô›»ªøµù¯¾ÀŽ€ÆÇÍÍÍÆÅÆÇÍÐ¥ÑÔ™ÓѥљØá„Š‰‹•¤‹Î¤ÎŒ¡¡¡‹¤•Î¡‰‚ŠŠ‘‘‡‚‚ŠŠŠ‡„Ùƒ…áËØÕÔÓÑÉÏÐ¥ÉÉÐÏÍÅ€’ŽÀ¾¬·µ¶®»ºžœ­ßÛŸüîèäââãäåç½åäâââãåêÿ÷²Ýô­›ž¦ªÈøñµù¬ÀŽ’€€’’€ÃÃÀŽÂ¨¯ù´ø¼»º›ßßßÞÝÛ²÷ûûûþíèäå½ãâââââââââââââââââââââââââââââââââââââââââââââââââââââä½êíïüúŸ÷úŸ±²ÛÜÞô­ž®¶´ù¯¾ÀŽÇÍÐÉ¥ÏÆÇÇÉÒÒÓÊÕÔÒ¥ÑÕš †‚¡Î¤‹Œ‹‹Œ¡‹Î‹Œ‚‡‡‡‡‚‰‰‰‰Š†„ÙÙÙ ÌØÕÔÑÐÏÉ¥¥¥¥ÉÏÆÅÀ¾¬·µýø¼®¦œ¹ÝŸüìçãââââãåååãââãäåéîû°ÛÝß¹›žº»®¼¶ý渨ÂÂŽ’€Ã€€€ÃÃÀÁ¾¯·µøª»›­­¹ôßÞÛ°°°ûïé½½åãâââââââââââââââââââââââââââââââââââââââââââââââââââââäèëíïþú°°±ÛÜÜÝÝô­œ®¶´ù§«¿ŽÃÇÐÑÒÑÐÏÐÉÒÔ™Õ××ÊÔÓÔÕËÙ‡ˆŒ‹‹Œ¡¡‰¡¡¡‰ˆˆ‡‘‘‡ˆ¡¡ŒŒŒŒ¡‚‘„†‘Š† Ì×Ô¥ÐÐÉ¥¥¥Ñ¥ÉÐÍÅÀ¨«¸ùæµýñ¶®º›Þ°þëçäãâââäåäääãäå½èëïú±ÛÜÞô­žº©®È¶¶ýù¾ÁÁÁ€À€€ÃÅÆÆÃÂÀ¾§ý¶ªž›­­››­ßÜÛ²úÿëèç½äâââââââââââââââââââââââââââââââââââââââââââââââââââââåèëíïüŸÛÛÜÝÝÝÝß¹œº©ª¶´ù¸¬¿ŽÃÍÑÔÔÓÑ¥¥ÒÓ™ÕÖØš×Õ™Ê×Ì„ŠˆŒ‹Œ¡¡‰‰¡¡¡ˆŠ‡‡††‘Š‰ŒŒ¡¡¡¡‰Š†„„‡Š† áØ™ÑÉÏÐɥѥÉÉÐÇÅÀ¨«¯ùùæµ´ñªžô²üìèåääãä½ççè½åçêëïþúŸ²ÜÞô­ž©®¼È¶ý¯¨ÀÀÁÂ’Ã’’€’€€Ã€ŽÀ¨¯ù´ø¼¦ž­¹­œ›¹ÞÞÞݱúîêè½äãâââââââââââââââââââââââââââââââââââââââââââââââââââä½éëíÿû±ÝÝßÞÜÝÞßô›ž»¼øµ¸¯«¿Â€ÇÑÊÕ™ÔÒÒÓÓÓÔÕ×Ø×ÕÊÖØ…„Š‰¡‹‹ŒŒŒ¡¡¡¡ˆ‡‘†„„„†‡‚‚‚‡‡‘†Ù á…Ù„ ËØÊÓÒÉÏÏÉÉÐÍÆÆÆÅÿ¾¬¸ùµýøÈ®©¹Ü÷þìèç½½½çèééèèëïü÷°±²Üß¹­œº©»¦ª¼¼Èñµ¸«¿¿ÀÁŽ’’’ŽŽŽÁ¿«¸ýȪ¦©›­œœ­¹ôôÞÛ÷þîëèåãâââââââââââââââââââââââââââââââââââââââââââââââââââåçéëîü÷Ûô¹ôÞÜÜÝÝß¹œªø´ù§¬¨ÀŽÃÏÓÖÕÊ™ÔÓÓÒÒ™Õ××ÖÕÕ×Ë…„Š‰ŒÎ¤Î‹‹Î‹ŒŒŒ¡¡ˆŠ‘„ÙƒÙÙ„†††„ƒƒ…ÌšØØËášÖ™ÒÑÑÐÍÏÏÏÏÆÃÃÀÁ¿¾¬·æµýø¶È¦ž¹Ý²ŸþíêëêéëììëêëîûŸÛÞßÞÞô­œº¦ª¼ª®®¼Èñ§¬«¨ÀÁŽŽŽÂŽŽÂÂÁ¾§ùµñȪª®»œžž­ôßݱ÷üïíé½ãââââââââââââââââââââââââââââââââââââââââââââââââââäèéëíþú°ßœ›­ßÝÝÜÛݹº®øµù¯¾¨¨ÀŽÅ¥™×ÖÕÕÊÔÓÓÔÊÖ×××ÖÖØÌ Ù‘‚¡Î¤Î‹Î΋‹Œ¡‰‚Š‘„ƒ  ƒƒ … áááÌš×ÕÊÖ×Õ™ÒÉÉÉÏÍÇÇÇÇÃ’ŽÂÂÂÁÀ¾§æñø¶ÈȪ©ºž­ôݲ÷þïîíìîïîííîü÷²ß¹­­­­œ»ª¶¶Èª®ª¼øµù¸¯¨ÀÀÁÂŽÂÀ¿ÀÁÁÀ¨¯ùæý¶¼Èȼ®©º›ôßݲ÷üïìéäââââââââââââââââââââââââââââââââââââââââââââââââââãçëëíÿú±Þœºœ­ôßÝÜÝ­©È´ù§¨ÀÀÀŽÃÍÒÊØ×ÖÖÖÊ™™™Õ×ØššØšÌ…ƒ„‘‚¡‹¤ÎΤ¤Î‹Œ¡‰‰ˆ‚‘Ù áááÌšššØššØÖ™ÓÔ™™ÔÒÉÏÏÐÏÇÆÅÅ’ÂÀ¨¿ÀÁÁ¾·ýø¶Èȼ¦ºœ¹ÞܱŸûþïîîïÿþÿþûŸÛßô­›žº©©»ªÈÈȼª®®¼øñ´§«¨¨¾¨À¨«««¾¨«¬¸ùæýø¶Èȼ¼»©©›¹ßݱûïìê½ãââââââââââââââââââââââââââââââââââââââââââââââââââäêîïü÷²Þœº©ºž›­ôÝÞ­©È´æ§¾ÀÁÇÉÓÊ×ÖÖ×ØØ××ØšËá…áÌÌ…ƒ„†‡ˆŒÎ•••¢“¢ÎŒŒˆ‚‡ƒáÌÌÌËšØØ×ÕÊÊ™ÔÓÑÑÑÑ¥ÐÍÇÍÍÅÃ’’’€ŽÀ«¯¬¾¨¿¯´ñøø¶È¦©©ž¹ßÝÛ±÷úþïîÿüûûû÷²Þ¹¹›žº»®¦®¼¶¶¶ÈÈ®¦ª¶¶ñµù§«¬¬¾¿¾¬§§¬¬¬§¸ùæµñ¶¶È¶¶ª®¦¦»ºœ¹ÞÛ°ûîëèäâââââââââââââââââââââââââââââââââââââââââââââââââãåèíü÷°Üôœ»®¦»ºœ¹ßÝ­º¼ý¯¿Ž€ÅÍÉÑÓÊ×ÖÖØËšËÌá… „†ƒ … Ù„‘‡‰‹¤¢“Ú”ö“•ÎŒˆ‡„…ÌÌÌËËšØÖÊÔÓÒ¥¥ÑÉÉÉÐÏÍÇÇÆ€ŽÂŽŽÀ«¯¸¸§¯¬¸æ´ýýýøȦ»»©ž­¹ßݲ°÷ûþÿÿþûú÷±Ý¹››žº©®¼¼¼È¶øñø¶ªªª¼¼¶ñµ¸¯¬¾¾¬§····¸¸·ùææ´´ýñø¶¶ø¶¼¦›Ý²°ûïìêåâââââââââââââââââââââââââââââââââââââââââââââââââãçêíû±Ûß›»®¼¼ª»ž­ÝÜôª´·«ÁÃÇÐ¥ÒÓÔÊ×ÖÕÖؚ̅ƒÙ‘‡Š‘†Ùكن‡ˆŒ•Ú”öööÚÚ¢¤¡Š„ áÌËš××ÖÕ™ÒÑ¥ÉÉÉÐÍÇÇÆÆÆÅÅÃ’ŽÀ¿¿¿¾¬§¸·¸§§·æ´´´´ñ¶ª¦»»œ¹Þܱ÷ûûþÿþû÷°²Þ¹›»®È¶ÈÈÈÈøñø¶¼ªªª¼È¶ñæ·¸§¯¬§¸ùµææµ´µ´´ýøøñ´ñ¶®­Ý±úþîìéäââââââââââââââââââââââââââââââââââââââââââââââââãçìÿú±Üôœ©®®®¼¶È¼ª»º›ÞÜß¼´·«ÂÍ¥ÒÔÓÔÊÖÖÕÖØË̃„‘Šˆˆ‚‡‘†ÙÙ„†Š¤“”ö”Ú”öÚ¢ŒŠ„ƒ áË×Õ™ÔÔÒÉÏÍÍÏÍÇÀÃÃÀ€ÁÁ¨¾¾««¯§§·ù·¸¸ùµµµ´ñ¶¼®¦»ºœ¹ßÜ°ûüþÿþþüú÷±Üß­»ª¼¼®®®ª¼Èȶ¼®ªÈÈȶñ´µæ·§§¸ùæµ´ññýýø¶Èȶ¶¶øñýøÈ®œ¹Ûúÿîìê½ãâââââââââââââââââââââââââââââââââââââââââââââãä½êïû±Ý¹œº®Èª®ªÈÈȪ¦©žßÝôž¦ñ¯À’ÅÏÑÓÓÔÊÖÕÖØššÌƒ†‡‚ˆ‰‚‡‡‡†„„†‘‚Œ•““¢“”””Ú‹ˆ‡†ƒáš×ÊÒÑ¥ÏÆÃÃÀ’’’ÂÀÀ¨«¬§¯¬¬¬§·ææùæ´´´ýøÈ®»©ž­ôßܲ÷üþÿþûûûû÷±Üô›©¦ªª®¦»»¦®®ªªªª¼¶Èȶøñý´µù¸¸¸æµýȪÈȼª®®®ª¼È¶ññ¶ª¦›Üúþÿîíèãââââââââââââââââââââââââââââââââââââââââââââä½çëîü°Ý­º¦È¶È¼È¶È¼¼®»¹ß­®ñ§¾Á€ÇÉÑÒÓ™ÕÊÖØššáƒ†‡Šˆ‰‚ŠŠŠ‘ÙÙ†‘ŠÎ¤••¢ÚÚö”Έ‡ÙáØÕÓÉÐÏÆÃ’ŽŽŽÁÁÂÂŽŽÀ¨«¬§¸·¸§¯¸µµµ´µææµ´´ýøȪ©ºº›ßßÞÜ°ûÿÿþ÷±°÷÷°Ûß¹œ»®®¦»©©©»¦¦®ªÈ¶ÈÈÈȼ¼¶ñµæææµøª»»¦®®®¦¦¦¦®¼¶¶ÈÈȦœÜŸúûþïêåâââââââââââââââââââââââââââââââââââââââââãä½éìïþû°Ý¹º¦®¼È¶¶øøø¼ªª®©º›¹œ©ªñæù§¾ŽÏ¥ÒÓÔ™™ÊÖØÌ…Ù†‘‡‚ˆ‚ŠŠ‚‘„„‘‘‘‚Œ¤¤¤•¢””•¡‰‚„ÌÖÔÐÇÆÅÃ’ŽÁÀ¿¾¾¾¨ÀÁ¿¾§ùæµýýµ·§·µ´ýýñýµææµý¶¼®žžœ¹ôßݲŸþïþú°Û±Ÿ°²Ýô›º©¦®¦»»©©»»»»¦¼Èȼ¼ªª®®¼ø´æµ´µµñ¼»º©¦¦¦»¦»¦ª¼¼ÈñýªÞ±Ÿúüþìçãâââââââââââââââââââââââââââââââââââââââãåèìïü÷±²Ý¹®øøøøñý´ý¶ª®®»©ž›»Èýæ·¯À€ÍÉÑÑÓÔ™Ê×Ì ƒ„†‘‡‚‰ˆ‚ˆˆŠ‘‘‡‘‡‚ˆ¡‹‹¤•¢””¢‹‚„ËÊ¥ÇÅÀ’ŽÀ¨«¯¯§¯¾¨¾¬·µýñøøýæ·¸·ù´ýñøñ´ææñȪ»œ›­ôßܲ°úþþûú°²²²ÛÜÞ¹ž©¦®®®®®®¦¦¦¦¦¦ª¼®¦»»»®ª¼Èñýýñøø¶®œ¹ô­©»¦»¦¼È¼Èøø®Þ±Ÿ÷ûÿëçãââââââââââââââââââââââââââââââââââââäääåèëïüŸ²ÝÞ¹ž»¶æææ´ý´µý¶ª®»ººœžª¶´´µù§¾ŽÇÏÉÒÔ™ÖË…… ƒ†‡ˆ‰‰‰ˆˆ‚‚ŠŠŠˆˆ‰¡ŒÎ•¢ÚÚ¤¡ˆ‡ÙÌ™ÉÍÅÀ’’Ž¿«¯§·ù·§§·µñ¶È¶øñ´æù·ùææ´ýýý´´øÈ®ž›¹ÝÛ°ŸúûûûûúŸ²ÛÝÝß¹›»®ªª¼È¶¶¼ªª¼ªªª®»º©¦®ª¶¶¶¶È¼ªª›ôÝÞ¹œ»¦»¦¼¶ÈÈø¶®ß²°÷üïê½ãâââââââââââââââââââââââââââââââââââäçç½èëîü÷²Þ¹›»¶§§·æææ´ø¼¦©ºººº¦¼ñ´´´æù¬Á’ÅÇÐÒ™ÖØá   ƒ„‡ˆ¡¡¡‰‰‰ˆˆˆ‰ŒÎ•“ÚÚ•¡Š† šÔÉÍÅÀ€’Ž¨¯¸·æµµææµ´øÈÈȶøñýµæ···µýñøýýøȦ©ºž›ßܱ°÷ûþüûúŸ±ÛÞ¹­žžž©¦ªÈøññø¶¶¶Èª®¦»©©º©»®Èȼª¼ª®»›ßÜÜÞ¹›œ»®¼¼È¶¶¶øññ¼©›Ý±úþîéåâââââââââââââââââââââââââââââââââââåéìëëíïþú°Ý¹ž¦¶µ§¾¬¸¸·æ´ýø¼¦»»»»»ª¶ñµµµæù¬¿Â€ÆÉÓÕØÌ…ƒÙ„††‘Š‰¡¡ŒŒ¡¡Œ¡¡¡‰‹¤¢Úö•‡ƒÌ×ÔÉÍÆÅÅ’Á¾¸ùæµµ´ýýýýøȼ¼È¶¶¶¶øýæù¸¸ùæ´ñøýýñ¶ª»ºœ­ßܱ÷ûþÿü÷Ÿ°Ûݹœºººº©»ª¶øñøññ¶È¼ª¦»ºººº©¦ªª®®®»©œôÝÛÛÝßô­»®¼È¶ÈÈøý´ýȦô²úÿìéåãââââââââââââââââââââââââââââââââã½ëíîîîþúŸ°Ûßœ®¶´¬À¨¬¬¯·ææµý¶ª¦®ªªª¶øýæµæ·¬¿Â€Ç¥ÔÖšá „†‘‘‘†‘ˆŒ‹‹‹‹‹ÎÎŒ¡¡¡‰ˆ‹¤“öö¤‰‘ ËÖÓÉÍÆÅ€À«§ùµ´´´ññø¶Èªª¼¼ªª¼¼Èøýæ·ùæ´ñ¶¶ñ´ñȼ¦º›¹ßݲŸûüû÷°°±²Ý¹œºººº»¦¦ª¼Èª¦»©žžž›››žºº›¹Þݲ°°±ÛÝ­º©¦¦®ÈñýñÈ»žß±ûîëé½ãâââââââââââââââââââââââââââââââãåéíîÿÿüŸÛÝßô›º»ª¶ý·¿ŽÁ¿¨¾§ùæý¶¼¼¼¼Èøý´µæ·¸§«À€ÍÑÔÊØÌ…ƒ„††††‘‚¡ŒŒÎ΋‹‹‹‹¡ˆ‚‰‹•“””¤‘ ØÔÉÇÅ€ŽÂÀ¿¨«§´ýýñøȪ¦©©ºº©¦ªÈøøÈȪ¦®¼ñµñȪ»ž¹ôßÝÛ²±°±²ÛÛ²ÛÝô›ºžžžžºººº©¦©ºžžžœ››­ô¹¹­œ›­­›œ›­ôÞÞÞ²Ÿ÷Ÿ°²Þôô›žº¦¼ñýý¶¦žÞ±ûîëêçäâââââââââââââââââââââââââââââââåèëîÿþû°Ý­œœž»®¼øµ§ÂÃ’ŽÂÀ«¸·ý¶¶Èȶñµææ·§¯¯¨ÁÅÏÑÓ™ØÌ Ù„„„„„„‡‚ˆŒÎ‹ŒŒ‹‹¡‰‚‚‚¡Î•“““·ƒØÓÍ€€€ŽÀ¨¨¿¿¾¯´ýýñ¶È®ºžœœ›››œžº©»»©©ºº»¼ýµñÈ®©ž¹ßÞÝÝÝÝÝÝÝÝÜÜÜÝß­œºžœ›œœœžºž›­­­­¹¹¹ôßÞÝÝÝÝÝÝÞßßßÞÝÝܲŸ÷÷÷±²ÛÜß¹œ©®¶ýµ¶»œß²ûîìéçåãâââââââââââââââââââââââââââââ½éëíÿþûŸÛôºº¦®¼¶ý«ŽÃ€Á«§·æñøøøøýµ···¸¯¬¾ÀŽ€ÆÏ¥ÓÊØá „„†„كل†‡ˆŒÎ‹Œ‹ÎŒ‚‡Šˆ¡Î•¢••Î¡ŠƒØÓÆ’ŽÁ¿¾¾¾¨¾¯ùµýñø¶ª»ž›¹ôßßô­›žžžœœžžœž®øý¶ª¦©œôÞÜÛÜÝßßÞÞÞÞÝÝÞß¹›œ¹¹­¹¹­­ôßßßßôôôÞÝÜÛ±°±²±±²²ÛÛÛÜÛ²°÷úú÷ŸŸŸ²ÜÞ¹œº¦È´µ¶¦¹ÛúÿìéçäâââââââââââââââââââââââââââââäèìïïþúŸ²Þ›º©»¦®¼¶ý§¨ÅÆÅÿ«¸´´µµ´æù·¯§§¬¾¨ÁŽÃÆÏÉÒÔÕš Ù†‘†„Ùƒ ƒ„‘‚¡Î‹Œ‹‹Œ‰‡‘‚ˆŒÎ¤¤¤Œ‰ŠƒØÒÅŽÂÀ¨¾¾¨¨¾¯·æ´ø¶¼¦º›ôÞÛ²²ÜÞ¹›­ôßßô¹¹›¦ÈøȪ¦›ôܲ²ÜÞôôßßßÞßßßô¹­œœœžž›­¹ßÞôßßÝÜÝÝÝÞÜÛÛ²±°÷Ÿ°±±±°°°°±±°Ÿúüûú÷÷÷°ÛÜÝß­ž©ªøñ¼©ž¹ÜŸþíêçäââââââââââââââââââââââââââââã½éìïü÷²ÝÝß­ž©¦¼¶ñµ¸¬¿’ÆÇÇÅ€Ž¿«¸¸¸·ùùù·¯«¬¬¿ÁŽ’ÍÉÒÓ™ÊÖË ƒÙÙÙ„‘†„Ù„‡‰¡Œ¡¡ŒŒ¡‰Š‘‘‡‚‰ŒÎ‹Œ‰‚†áÊɎŽ¿¾¾¨¨¬·æ´ñø¼®©ž¹Ü°úüüú°ÛÝÜÛ²ÛÝô¹›ž®¼®©º›ßÜÛÜÝÞßô­­­¹ôôô¹¹¹¹¹­›œœ›¹ßßÞÞÞÜÜÜÛÜܲ±±°ŸúúúŸ±±Ÿ÷úú÷ŸŸŸ÷ûþüüüûú°²ÜÜÝôœ©ª¶øª©­Ý±ûîêèåãââääãââââââââââââââââââââââäçêíÿ÷²Ýôô­››ž©®¶ø´·«ÀÅÍÏÍÇÅÃ’À«¾«¬¯¸¸¸¯¾¨¨¿ŽÃÅÍ¥ÔÊÊÊÖØÌ…   ƒ†Š‡‘†‘‚¡¡¡¡‰‚‘‘‘Š‰¡¡Œ¡ˆ‘ šÔÏÃŽŽŽÁ¿¨¨¨¬ùæ´ý¶ª»¹Ü÷üîííïþú°Ÿ÷Ÿ°²Üß¹›»ª»ºœ¹ßÞÝÝÞÝÞ¹›œ›­ôßôôÞÝÜÝß¹­­­­ßÝÝÜÛÜÛÛ²²°Ÿ÷÷úúüü÷°÷ûþÿÿþûúúúüÿïïÿþüú±Û²Ûݹ¦Èøªž¹Ý±ûîêçåãäåå½äâââââââââââââââââââââã½èëíþ÷²ß››œœžº¦¼ñ´ù¬ÀÍ¥ÉÏÍÇÆÿ¿¿¨¾«««¾¨ÀÁŽÃÆÍÐ¥ÓÕ××ךÌá… ƒÙ†‡ŠŠŠ‚‚‰¡¡¡‰‰‰ˆˆŠ‡‡‘Šˆ‰‰Œ‹ˆ† ËÔÐ’ŽÂŽŽÁ¿¿¨¬¸ùµø¼®›ÝŸüïíëéëíîþÿïÿüú°Üô­ž©»ºžœ­ôôßÞÝÝÝÞô›ºž›­¹ôÞܲ±²Ýßôô¹¹ÝÛ²±²²²°°Ÿúûú÷úüþüûûþïîììîþüüþïíììîïÿûŸ±²²ÛÝ›©ª¼®©ž¹Þ²úïêèççè½ççäãâãââââââââââââââââââ½éëìïûŸÜ­žž»¼ø´ù¯¿ŽÃÍÑÔÒÉÐÏÇÅ’ÂÁÁÀÀÁÁÁÀÁÂÃÅÍÉÑÒ™ÖØØØšÌáá…ƒÙ†‡ŠŠ‚ˆ‰¡¡¡ˆ‰‰‰ˆŠŠ‡‡‚ˆ‰‹Œ‚† šÔÐÁÂÂÀ¿¾«§ùýÈ®©žôÛúÿîëè½çéêëêêëíîþ°Ýô›žœ­¹ôôßÞÝÞÞß­œž›ôݲ±±±²ÛÜÞßݲŸûüüüüþþÿÿüûüþüþïìììéèèëîïîëèççèëíïþûŸ±²±Ûôœº»©º­ßÛŸûïíììëè½½åãâââââââââââââââââââãåêîÿü÷±Ý­žº©©»ªñµù¯¨ŽÃÍÒ™Õ™Ó¥ÏÇÅ€ŽŽŽÂÁÀÁŽŽ’ÏÑÒÓ™ÊÕÊ™Õ×Ëá… ƒ„†‘‘ŠŠ‚ˆˆˆ‰‰¡¡¡‰‚Š‡‚‚‚ˆ‰‰‡ÙÌեǀÂÁÂÂÂÁÁ¿¾¬¸µÈ»º›ßݱûïìé½äåçééèèèèêîú²ÜÝß¹¹¹ôôßÞÜÜÞôßô¹›žºº»©ž¹ßÝÛ²Ÿ÷Ÿ±ÛÝÛŸüïîîííííìíÿþþþüÿìêêéåäåéëëèåããä½éìîïþ÷±²±°Ý­žôݱŸûþÿÿïíé½½äãââââââââââââââââââã½êïûŸ±Ûôœ©¦ªªª¼ñ測¨ÂÃÇ¥™Ö×ÖÊÒÉÍÅÀÀÂÁÂŽ€ÅÐ¥ÒÓÔÔ™ÓÒÓÊØáƒÙÙÙ„††‡‡‚‚ˆˆ‰¡ŒŒ¡‰‚ŠŠ‚‚ŠŠ‚‚Š„…×ÒÍŽÀÀÁÁ¿¨¬·´ªœßÜÛ°ûîê½åãä½ççååå½èíû°°±ÜÝÝÝÞÞÝÜÛÜô¹­­­œº»®®©ž­ôÝÛ°ûúŸ±²Ÿþïíìëêêêêêìîÿÿüÿìè½ååãâä½ççåãâââä½éíÿü÷Ÿ°ŸŸÜ¹žºœ¹Þܲ÷ûþþÿïìé½åäãããâââââââââââââââäçìþ°Üô›©®¼¶øø¶ñ渫ÀŽ€ÆÐÓÕØÌš×™ÓÉÏÍÆÆÇÏÏÅ’ŽÁÁ€ÇÏ¥¥ÑÑ¥ÉÐ¥Ô×áÙ††„Ù†‘‡Š‚‰¡Œˆ‚Š‡‡‘††††ÙÌ×™¥ÇÃŽÁÁÂÂŽŽÂÁ¿¬ùýªº­Ý²ŸúÿìèäããäååäãâãåçëîüúŸ±²²ÛÜÜÛ²²Ýô­œ©¦®ªª¼¦ºž›ôÜŸüû÷ŸŸûïíìëêéèèéêëíïþüîê½ãããââããããâââââãä½êïüúú÷÷ŸÛß­žœ›¹ÞÝܱŸúüüüïìè½ååäããääããââãââââäåçéìþŸÜ¹©®ª¼øýýý´æ¸«Á€ÅÍ¥™×ჅËØÕÔÒ¥ÉÐÐÑÑÏÂŽ€ÍÉÉÐÏÏÏÐ¥Ô×˃††Ù„‘‡Š‚‰¡¡ŒŒŒ¡ŒŒ‰ˆŠŠ‘†ÙÙƒ á×ÔÑÉÍÅ’ÂÂÂÂÂÂÂÂÀ¬ñ®žô²÷ûþíé½ãââãããããããåçèêíÿþ÷°Ÿ÷°±±±²Ý¹›©©®ÈÈÈȼ»ºœôÜŸüþþÿïíëëììëêéêêêêëîþüíéäââââââââââââââââã½êîþþüüû°ÜßôôßÝÛ²²²²Ÿûûüÿïìêè½äãäåååäããääää½éìíÿú²Ý¹ž»ªÈȶñ´µù§¾Á’ÆÍÐÒÖáÙ‘†„ƒášÖÊÔÓÒÓÒÉÆ€€ÃÅÅÍÐÐÏÍÇÍÏÉÒ™×…„Ùƒ„‘‘‡‚‰¡¡‹‹Î‹¡‰‰‰ˆ‚†Ùƒ áÌ×™ÒÑÐÆ€ÂÁ¿¨¨¨¿¨§µÈ›Þ°üïíêçäâââââââãäââåççèéìïÿÿÿþüû÷±Ýô›œž»¼ñø¶È¼¦©ºœôÛ÷ÿïîìëêéëëëêêêëëëëíîÿÿîéäâââââââââââââââââãåéìíîïþ÷±²ÛÛÛ²±°±²Û±Ÿ÷úþÿîìé½åå½½çç½å½çèèêìïþú°Ûß­»ª¶ýñøýµæù¸¾Â€ÆÐÉ¥Ò™ËÙ‡‰‰Š„ƒ…š×ÖʙԥÍÆÅÆÆÇÍÆÅÇÇÍÍÍÇÇÏÉ¥ÓÖÌ ƒ„‘Š‡‡ŠˆŒÎ¤¤ÎŒ¡¡¡¡ˆ‘Ù…áÌš×ÊÔÓ¥ÍÅÃŽÀ¾««¬«¬·´®žôÛúïìé½äââââââââããâãääãäåçéêëìíîüŸÛÞô­›œº¦¶´ñ¶Èª»œß±ûïìéçç½çèéèççèéëìîïÿÿþîéåââââââââââââââââââãåèéëíïüúŸ°ŸŸŸŸ÷°²ÛÛ²±Ÿûÿïîëéèç½çéêêêëìíïÿüû÷±Üß›º®¼¶ýµ´ýý´æ·¯À’Í¥Ò™ÕØ ‡¡••¤Œ‰Š†…ËØ×ÕÔÑÉÏÏÍÍÏÏÍÇÆÅÆÍÍÍÍÍÏÉÓÕš…Ù‘ŠˆŠ‡Š‚¡‹¤¤ÎÎÎÎÎ΋‹ŠÙ…áËØÖÊÔÓ¥ÐÇÁ¨¬¯¯¯§µÈ›ÝŸÿìé½äãâââââââââââââââââãääåçéìþ°Üß¹›œžº®øæýø¼®©ž›Þ±úïêç½äå½çèèçççéìíîÿþþÿíéåâââââââââââââââââââãäçêìîÿþûúúûûûú÷°ÛÜÛ²°ûÿÿîìëêéçèëìíîîîÿûŸ°°²Üô›¦Èøñµæ´ýý´¸¾Ž€ÅÏÑ™ÖØᆉ¤ÚÚ“•‹‡„ …ÌØÊ™ÒÑ¥ÐÐÉÉÉÐÍÇÏÐÐÐÏÍÐÑÔÕš…„‘Š‚‚‚‚ˆ‹¤¢•¤¤Î‹‹‹‹Œ‰ŠÙáËØÖÕ™ÓÑ¥ÐÇ’Á¾§§¸¸ø¦º­Üúîëéåãââââââââââââââââââââââäçëþ°Þ¹›œžªñµñ¼®»ºœ¹Ü±úÿíê½ãäåçéèç½çêííîîïïïíêçäâââââââââââââââââââã½éëííîÿüþþþüû÷°²±ŸŸúþïîíììììééêìîïïÿü÷±²²Üß­ž®Èñ´ææµµµæ·¬¿Ž’ÃÇÑÔÊØ…†ˆŒ¤ÎÎŒŒˆ‡†Ùƒ Ë×ÊÔ™™ÒÑÑÒÒÒÑÒÒÑÉÐÐÉÒ™ÖØÌ ƒ„‘Š‚ˆˆ‰¡Î¤¤Î‹Œ‰ˆŠ‡‘†ƒáš×ÊÓÒÑÉÏÏÍÆÀ¬·µµñ®ž¹Ü÷üþíçäââââââââââââââââââââââåéíü±Þ¹­›œ©¼´ùæø¼¦»ºœôݲŸûïë½ãâäçèèçççëîîííîïïíëé½äâââââââââââââââââââäèêëìîÿþþüþÿþû°±÷úüþïïîîîíîîìëëíïÿþü÷±ÛÜÝß­ž¦¼øñ´ææùù·¯¾ÁŽÃÇÐљؠ‘‚Œ‰‰‰‚‡‡†„ƒáØÖÖ××Ê™™™™™ÕÖÕÔÑÉÑÒÊØËá ƒÙ„‡ˆ‰‰¡‹••¤‹Œ‰ˆ‡† á…ááËÖÔÑÐÐÐÍÆÇÆÅÅÀ¯ùµñ¶¼©›ßÛ°°÷ÿê½ãââââââââââââââââââââãçëÿ÷Ûß¹­œžº»¶æù´¶ª¦»ž¹Ý±Ÿûïê½ããä½ç½½çéìîïïîíííìëéèåãââââãäãäääããââââââã½èéëïþüüûüüþü÷Ÿ÷ûþþþÿïïîîÿþïííîïþûŸ±ÛÛÛÜß›»¼ø´´´µæù·§¾ÀÂŽ€ÆÏ¥Ôؠن‡‚Š‡‡Š‡‡ŠŠ‘„ ÌËšÌáËš×ÖÖךË×ÊÓÒÒÔÖËá ƒ„††‚¡ŒÎ••¤Œ‚‘Ù…šØØšš×ÔÉÍÆÅÅÅÅè¯ñȪ¦›ßÝÝܲûì½ãââââââââââââââââââââã½ëþŸÝ¹œ©»ªñ·µ¶¼®»ºœôÛŸúþíé½ääääåå½èêìíïÿïîííìëëêçåãââãåççççç½åãâââââãå½çëïüüûúúüüûúŸ÷üïïïïîîïïÿÿïïîîÿûŸ²²Û²²Üßœ©®¶ýµµµµæ·¯¨ÂŽ’ÃÇ¥™š… Ù†‘‘†‘‡‡Šˆ‚‡„Ùƒ     ÌšËÌ… ÌØÕ™™ÖË ƒƒÙ‘‘‡‰Œ¡¡Œ‹¤¤Î¡ˆ‘ƒáØÕ™ÊÕÖ™¥Ç€€ÃÃÃÃÀ¾§æø¼®©º›ô¹ßÞÛúí½ãââââââââââââââââââââã½ëü±Þ­»¦¦È´¸ñ¼¦ºœ¹Ý±ûïëèåãâââãååäå½çêíÿþþÿÿïïïîéåããå½èéèéêëëé½äãââââãåèìïþüúŸ÷ú÷÷ŸŸ÷üïììííìíîîíììíïü÷°²²²²ÜÝÞ›®Èøýµææù¸¬¨ÁÁÁŽ’ÃÆÉ™×Ì ††‘‘‡‡ŠŠŠ‰¡‰Š‡‡„Ù  ƒÙ áჄ†ƒ…ËšËá „ÙÙ†‡‡‚¡‹¡‰ˆ‰¡ŒŒ¡ˆ‡ƒËÖ™ÔÓÒÑÑÉÍ’ŽÁÁŽÂÂÁ¿¾¬·µñ¼¦­¹ô¹ßÛ÷ÿèäããââââââââââââââââââãçìû°Ýô›º©»¦ø測¸´¼©œôݲŸþìèåãââââãäãââãåèëïþüüüüüüþìèåä½éêéêìîÿïìéçåãâââãåéìïÿû÷°ŸŸ°°°Ÿúüïììëêêìëêééêíþû÷°±±²ÛÝÝß›º¦ª¶ýæù¸¯¾¿ÀÁÁÁ’ÃÅÇ¥™×̃††‘‡Š‡‡‡‚¡‹ˆ‰‚‡†ÙÙ„„كن‘‡†Ùƒ ƒÙ„‘††‘Š‚‰¡‹¡‰ˆˆ‰ˆŠ‘…×™ÒÑÉÍÆÆÅÃÂÀ¿¨¿À¨¨¾¬¯·æý¶¼»ººœ­­­ôÞ±üìççåââââââââââââââââââã½ìüŸÛݹž»®ø槫·ý®¹Ý±÷üïëçäâââââãäãââãäåéìîïþûûúúûïìè½çèêìîïüúþîëèåãâãä½çêíïüŸ±²²Û±Ÿ÷úüÿíëëêèçç½çèéêíÿþû÷°°±ÛÝß¹›žº¦Èý槬¨¿ÀÂŽÂÂÂŽ’ÅÇÉÒÖá Ù„‡‡ŠŠŠ‚‹‹¡¡¡ˆ‡‘‘†††‘‡Š‚ˆŠ‡‡‡‡‡ŠŠ‡‡‘‡Š‚‰¡‰‰‰‰¡¡‰Š„ÌÕÒÐÍÆÃ’ÂÀ¨¾«¯¯¬«««¯§·´ø¼ª©œ›››­Ý±üìé½ãââââââââââââââââââäéïû±Ý¹ž»ªø¯«ùø¦ô²÷þïíé½ãâââââãããââââãçëííþú÷úúúþîêççéëîÿüŸ°÷þîëè½½çèèéìîüŸÛÝÝÝݱúûüþïíëêéç½ää½éêìîÿüûúŸŸ±ÛÝßô¹­ž©¼ý§«¿ÀÂŽÂÁÁŽ’ÃÅÇÉÓ×Ì…ƒ†ŠŠŠŠ‚‰¡‹Î‹‹Î‹ˆŠ‘‘‘Š‚ˆ‰¡¡¡¡‰‰ˆˆ‚Š‡‡Šˆ‰‰‰‰ˆˆ‰‰‚†…×™ÑÏÆÃ’Ž¿¾¬¸¸¸·ù·§§§¸¸µñ¶¼®¦»©ºœ›­››ôÜ÷ïê½ãââââââââââââââââââãçíþŸÝ­»ªñ槯µÈ©œß²úÿìè½åãââââââââââââäçêëìïüüüûþíêç½çéìïÿü÷°Ÿúþíëëëííìíîþ÷²ÝÞÞÝÝ°ûþïîíêè½ääãâã½éêìíþú÷÷Ÿ°²ÛÜÝÞô›žªø´·¯¾¿ÁÁÂŽ’€ÃÃÅÏÓ×Ì…Ù‘‚‚ŠŠ‚ˆ¡ŒÎÎÎ΋¡ˆ‘Ù„†‘‡‚‰¡Œ‹Î‹ŒŒŒ‰‚ŠŠˆ‰ˆ‚‚‚‚Š‡‘„á×ÔÑÏÆ€ÂÀ¨¬·ùùùæµææùùùæý¶Èª®¦©ºž­¹­›­ß²ûíèåããââââââââââââââââââäéï÷Ü­žº©®¶µ¸¸ý®ºœôÛ÷ïêçååäâââââââââââãäçéêëíïïïïíé½½åçêíÿüû÷±±Ÿúüþÿþüþþüü÷°ÝôôÞÞÜŸüïìëëêé½ãâââãçéêëîþú÷Ÿ°²ÜÜÜÛÞ¹œžº®¶ýæ·¯¾¿ÀŽ’€€€ÃÀÃÏÔ×Ì…Ù‡‰‰ˆ‚Šˆ‹•••¤‹¡ˆ†ƒÙ„„‡‚‹¤¢Ú“•¤ÎŒ¡‰‚‚‰‰ˆ‚ˆ‚‡†ƒ ÌÖÓÉÇ’ŽÁ¿¨«¯·ææ´ýñøýµæµýø¼¼®®»º›ô¹››¹Þ±þìè½åäââââââââââââââââââãçíûÛ­œº»È´ø¦›Þ±ûïëè½äâââââââââââãããäåçéëìëììêåãããäçëÿþü÷±°±±±±±²²°Ÿ÷÷Ÿ²ß¹¹¹ßÜ°ûïëëëëëèäâââäçééëîÿüû÷±ÛÜÜÛÜÞô›ž¦Èñý渫¿Á’€ÃÃÅÃÍÒÕÌ „Š‰ˆŠŠˆŒ•“•¤‹¡ˆŠ„  ƒ„‡ˆ‹•“öò”“•¤‹¡‰‰¡¡‚‘ƒÌØÕÓÉÇÃŽÁÀ¿¨«¯¸ùææ´ý¶È¶øø¶¼ª®®¦¦ºº­ô­­­¹Þ±üîêèçåâââââââââââââââââââåêÿ±ß¹›ž©¼ñµµ¶»­Ý°þíëêçãââââââââââãäããããåèééééèçäâââã½ëïÿü÷±±²ÛÞßôôôÞÝÛ±²Üß¹­­ôݱûïëêêìíê½ãâã½èéêìïþüú°±²Û²ÛÜÞô­ž®¶¶øµ·¯¨ÁŽ€€€ÃÀÃÍÑÕÌ Ù‡ˆ‰ˆ‚‚Γ”¢ÎŒ‰‚‘Ù… Ù„‡¤“öòöö”¢ÎŒŒŒŒŒŒ¡ŒŒŒ‚‡†…×™ÒÐÆŽÀ¿¨¾¾¬§ùùùµ´ñ¶ªªª®®»©©©»»©ž­¹ôô¹ôݱûîìëé½ãââââââââââââââââââãèîŸÝÞ¹œ®ÈýýªœôÝ°þíëé½ãâââââââââââãããââä½ääååäåäãââäéíÿþûŸÛ²²Ýßô­­­¹ôÝÛÜÝß¹¹¹ßÝ°üïìêêìîìèäâã½èéëîïþú°±°Ÿ°±²ÛÞ¹ž®¶ñøñ´¸¯«¿ÁÂÁÂ’’ÃÍÒÕË…Ù†Šˆ‰ˆ‰‹¢“ڕ΋Œ‰‡„ƒÙÙÙ‘‰Œ•ÚÚ““Ú•ÎÎÎ΋Œ¡¡Œ¡Š†„ÙËÊÓÉÆ€ŽÁÀ¨¯§§§·ùùùµ´ñ¼¦¦®¦©©›¹ßÝÝÞÞݱ÷üîíëèåãââââââââââââââââââ½ëþŸÜß­žº©®øñªœôÜŸÿìëéçäââââââââââãäääââããââââââããâãçëïþüû±ÜÜÜÞô­œžœ›ßÞßô¹¹¹¹ôÞ±ûïíììîîìèåâãåçêíïþú°²²Ÿ÷÷°²Ûݹž©ªø´ýñ´·¸¯¾¨¨¾¨ÁŽÃÏÓÕØáÙ†‚‰Œ¤¢““•¤¤Î‡†††††‡‰¡¤“¢•¢¢••¢“•Î‹¡¡¡‚‘ƒƒá×Ô¥ÇÃŽÀ¿¾¯ùæù¸ùùæµ´ø®»»¦©º©œ¹ßÜÜÜÛ²²°÷üïîëè½ääãâââââââââââââââãèîü°Üô›žº»ÈȦº¹Ü°ûÿïíëèåãâââââââââãääãâââââââââââãã½éîÿüüú±ÜÜÝß­œ©©›ôô­›­›­¹ôÞ²÷ÿíìîïîëèåää½éìîþú°°±°ŸŸ°°²Üß­©ªñµýý´·§««¬¬¬«¿ÁÏÒ™×Ì †ˆ¡‹Î•¢“““¢¢••¡Š‡‘‡ŠŠ‚‰Œ¤¢•¤¤¤•Úöö¢‹‰ˆ‚Š‡„ …ËÕÒÏÁ¿«§´´µµùæµµ´¶®»©º©©©œ¹ÞÛ²±°°°÷ûþîìëéèèçåãââââââââââââââäêïú±Ýô›œžº©®»º­Þ²÷þÿïíëé½ãâââââââââãäãââââââââââââäåèêîÿüûú±ÛÛÝß­žº©»º›­­œœœ›­¹ôÞ²÷ÿìíïîíê½å½½çêíïüŸ±°ŸŸ°±±±ÛÞ¹žº»ªøýý´æ·¸§¬«¬¯¬¾¿Â€ÆÐÒÊØÌ †‰Œ‹¢Ú“¢“Ú“¢•¤¡‚‡‡‚‚ˆˆ¡Î•¢•¤¤•“ò£ò¢Œ‰‚Š‡†ƒáË×ԥǒÂÀ¾¯ùýøøøñ´æ´´µµñÈ®»ººžœºž­ßݲ±°Ÿ÷úûüÿîëêéèéè½äââââââââââââââåëÿ÷±ÛÞô›œž›ßÜ°üïîìêè½åãââââââââââââââââââââââââãåçéëíïþþüú÷Ÿ°²Ý¹œžœ›¹¹­­¹ôßÞݲŸüìèéëêêèççç½½éëîþ÷°Ÿ÷÷÷ŸŸ±Ýô›žº©¦¼øøýæ·ùù§«««¨ÀŽÃÅÏ¥Ô՚ბ‰ŒÎ••“ÚÚ¢Î΋Š‡‡Š‚‰Œ¤¢“Ú“ÚÚÚö—ò”¢ÎŒŒ‰‚‘„…ØÊÓÉÍÀ¾¯·´È¼ª®ª¼È¶ý´´ñÈ®©º›¹­žžžœ›¹ßÝÛ²²±Ÿûþþÿîìëé½åååääââââââââââââââåéîûŸ²²ÜÝß¹­­ß²ŸüïîëçåãâââââââââââââââââââââââââââäçéêëëíïïïþþüúŸ²Ýßô¹­¹ßôôßÞÞÝܲ°úïê½½çèçèèèéèçéêëîû÷Ÿ÷úûûú±Ýô­ž®¼¶¶ñæùùù§¬¾ÀÂÅÍÐÑÓ™Öšá„‚¡‹¤•“ÚÚ¤‹Œ¡ˆŠ‡‘‡ˆŒ¤¢”ööòòòò££öÚ¢Î΋¡‚‡†…×ÒЃ¿¬·µøª¦»©»»»ª¶ñ´ñ¶¦œ¹ß¹››­¹ßÝÜÜÛ²±°÷üÿïîíìêèåãââãäââââââââââââââåéíþúŸŸ°±ÛÝÞݲ÷þîìêçãâââââââââââââââââââââââââââãåçèéëéèêëëíîîÿüû÷°ÛÜÝÝÝÝÝÜÛÛÛ²°÷üîêçåå½½çéêëìéççèèëïüûûüþþû°ÝÞ¹›©®ª¼È¶´æù¸¬¿ÃÇÏÉÑÓÔÊ×˃Š¡‹‹Î‹Œ‹¤¢Ú¤¡‰‚Š‡†‚¡¤Úö—£––òÚ•Î΋‰‚Š†áÕÉÅ€Á¿«¸µø¼¦ºº¦Èñýñ¼žœ­ôßßßÞÞÝÝÜÛÛ²±°úüþÿÿïìêèåâââââãâââââââââââââãäèìïþûûûû÷÷÷ŸŸüîëé½äâââââââââââââââââââââââââââãä½ç½èêéèèèéêìîïþüüû÷Ÿ°±±²²°°²ÜÛ°ûïëçåååå½çéìîïìèèçèêíÿÿÿÿÿþú±ÝÞô­ž¦®¼¼Èñµæ·§«ÁÃÇÐ¥ÑÓ™ÊÕØᆈ΢•¤ŒŒ¢“¤Œˆ‚‚‡‘‰‹•”ò£–ijÄÄÄ–—”•¤¤ŒˆŠ‡†Ì™ÏÃÁ¿¾§æñ¼¦ºžœœœœœªøýø®ºœ­ôÞÞÝÜÜÝÜÜÛÛÛ²°÷üüþþþïíëçäâââââãâââââââââââââãåéëìîïÿÿÿþþüûûïìêèäââââââââââââââââââââââââââââââããã½èèèçççèëíîïïÿþüüûûû÷°Ÿ°ÛÞܱúÿìé½äåçççéëîïìêéèéêìîîïïÿþú°ÜÞÞÞô›¦¦®¼¶ý§¨ŽÃÇÏ¥ÑÒ™Õך…†ˆÎ“¢•ÎŒ¡‹•¢¤‹‰ˆˆ‡‡‰Œ¤¢”—£–––––££—ö¢ÎŒˆŠ‘†ƒØÓÇ€Á¾¯·´¶ª»›­­ôßßôœ»¼¶ª©º›¹¹¹ßÞÞÞÞÞÝÝÛ±÷ûûûüþþÿíêçåâââââãââââââãääããââãçëììììíîïþüûúþíêè½ãââââââââââââââââââââââââââââââââãåçèççç½çêíîííîííîÿÿÿü÷Ÿ°ÛÞÝÛ÷þîëçå½èèèêíÿÿîëééèèêëííîîÿûŸ²ÜÜÝÞ¹œž¦ªø槿ÃÅÍÉÑÔÕך̃‡¤““¢¢¤ÎΕ¢¤ÎŒ‰ˆ‚‚ŒÎ•Ú—£––––£ò—ò“‹‰‡‘„ÙáÕÑƾ¸ùý¼¦©­ôôôßÞÝß›º¦ª¦ºžœœ›¹ßßßôôßÞܱ÷ûúúûûüïìè½äâââââãââââãä½è½åääããèíîìêéêëíïÿüüÿëçåãââââââââââââââââââââââââââââââââââä½½åååå½èëëëêêèèéëìîÿûŸ±ÜÞݲ÷üïìè½çêëìïþüüïëéè½çèéëììíïþúŸ±²²ÜÞßô­­œ®¶µ§À’Í¥ÔÕØÌ ƒ†‚Œ•ÚÚ”ÚÚ¢ÎΤ¤¤¤¤Î‹¡¡ŒŒŒÎ“ö£ÄÄ£—öÚ””¤Š††Ù áÖÑŬ·µ¶»œ­¹ôßßßßÝÞô­»»©ºžœ¹ßßôßÞÞßݲŸ÷÷÷÷Ÿúþìçäâââââä½åäãããäçêéè½åä½êííëèççèëíîïïîé½ãââââââââââââââââââââââââââââââââââãå½åãäåå½èêêèèé½å½çêìíþ÷²Ýßܱ÷ûïëè½èêìïüú÷÷þìêéèèèèêëíîïÿû÷ŸŸ±²ÛÛÝßô›©¼´¯ÀÂ’ÅÏÒÕØჄ‘‚‰‹“”öòòö“¤Î¤•¢ÚÚ¢•ÎŒŒ¡ŒÎ¢”£Ä£ò”ÚÚÚΉ‡„Ùƒƒ…֥ÿ¯ý¼©ž­ôßßÞÝÞÞÝÜÝß­º©ºžœ›¹ôßÝÜÝÞÛ±Ÿ÷úúŸ±÷ÿêåãââââãåççåäääåçéééçççéìííëéç½½éëëëìëèåãâââââââââââââââââââââââââââââââââââã½ååäãäçêìëêêéç½äåéìîþ÷±ÛÛŸúüÿìèåãäçêíÿûúúþîíììëééëíïþÿÿþûúŸŸ°±ÛÞô¹œžÈæ¬ÀŽÃÇÐÒÊ×Ì „‡ˆ¡¤ÚòòòöÚ•¤Î¤•“ÚÚ•ÎŒ¡¡ŒŒ‹•”ò££—òò”Úöö¤‰‘Ùƒƒƒ…ÕÉ€¨§ñ¼®©ž¹ßÝÛÛÜÜÛÜÞßßß¹›œœ›­­›¹ôßݲ±ÛܲŸúûüû÷÷þîê½åäääääååãââããäåå½åå½çéëìêéè½äåçéêêêé½äââââââââââââââââââââââââââââââââââââãåååäãåèìîíìëéçåãåèìîþúŸ±°úÿïíéåãâã½êíÿüûúüÿïÿïîìëìïûúüþÿÿüûúŸ±²Ýô›œž¶ù«ÁÍÉÒ™×Ì †Š‰‹¢ö££—ö¢¤‹‹¤•¢““¤‹‰¡¡ŒÎ•Úöòö”öö”ö££¢‘ƒƒÙÙ Ö¥€¿§æýȼ®ž¹Þ²²²²ÛÝÝܲ±ÛÜÞßÞÞßôßÞܱŸŸ°²±÷ûüþüûûþîêèçç½½½åäââââââââãããä½èéééççççåå½èééèåãââââââââââââââââââââââââââââââââââââââãããâãäçëïîìêéè½ää½êíÿüú÷÷þíëêçäââãèìÿþüúŸŸúûüþþïíîü÷Ÿ÷úÿîïÿüú÷°Ûßô­œÈ¬ÀŽ€ÆÐÒ™ØáÙ‡‚‰‹¢ò£—”¢ÎŒ‹¤•¢““•¤¡ŒÎ΢”ò”ÚÚÚ”—–£“¡‘Ù„‘‘„šÒÀ¯ù´¶¼®»œôÛ±±ÛÝÝܲ÷ûúŸ±ÛÜÝÝÝÛ²ŸúúúŸ°÷úûüÿÿþüþïìêèç½½äãâââââââââããää½½½åäää½ççèèç½½äãââââââââââââââââââââââââââââââââââââââââââââä½ëîìêèéçåää½éíÿþþüüîêè½åãââåéíþþüŸ±±°Ÿ÷úûÿïü÷Ÿ±Ÿûïìíîÿþú°ÜÞô›ž»¶æ¯¨ÁÅÏ¥™Ø „‡Š‰‹Ú£–£ö“¤Î¤¤•“Ú““•‹¡ŒÎΕ“ö”Ú“Úö£–£“¡Š†‘ŠŠ†ËÒÅÁ¬·µñȪ®»º­ÜŸ°²ÜÝÛŸþîïþ÷±²²²±°÷üþþüûúúûüþïÿÿþþþïëéç½½½äââââââââââããäåãâââãä½çèèèç½äâââââââââââââââââââââââââââââââââââââââââââââääçëíìêèçåãâã½êíïîíííé½äããâââãçëïþûŸ±²²°÷úúûûú÷÷÷üÿîîîîïþú²ÜÞ­žº¦Èµ¸«¿Â€ÆÉÓÖჄ‘‚‹Ú—Ä–ö“¢¢••¢ÚÚ““¢Î‹Œ‹Î¤¤¢Ú”””””öò—ò•¡‚‘‘‡‘ƒØÒÆŽ«·´¶¼¼®»ºœÝŸŸ°²²Ÿüíêëíþúúûûúüÿîíîÿþüüþþÿÿþüüüüïëêéèèçåãããââââââââââââââããäåçèèèéçåãâââââââââââââââââââââââââââââââââââââââââââââã½éìëéç½äâââåèêëéèéèäâââââââã½êïüû°ÛÞݲ°°±°°°Ÿ÷ûÿïÿïîíîþ÷±ÜÞ­©®¶´·¬¾ÀÏÑÕÌ…ƒ‘ˆ‹Ú—Äò””Ú““Ú””Ú“•¤¤¤¤¤•¢Úö”ööòòò——ò“‹‰ŠŠ‡†ƒØÒǾ¸´¶¶¶ª»œÞ°Ÿ÷°°úîéççéìîïïïîíëêêìîïïÿÿÿþüüüûûüïíìëêééèççåãâââââââââââââäåå½èèèéêè½ãâââââââââââââââââââââââââââââââââââââââââââââãåçéèèçåãââãäå½çç½åãââââââââäçêîÿú²ßôßÝÜÝÝÜÛ±°÷üþüþÿïîïü÷±Üß­©ª¶ñ槫¿Â’ÅÐÊËá †ˆ‹“—ijĖ£òööòòöööÚ““Ú“¢“Ú”öò£££òòööòò“Ρ‰‚‘„ ÖÑÍ€¿§µñøø¼®œßÛ°Ÿ÷÷ÿê½äåçéêëìëëéèèèéêëíííïüûû÷Ÿúüïîìëêééèèèåãââââââââââââäççççèèéêé½ãââââââââââââââââââââââââââââââââââââââââââââââããäåå½åäââãââãåç½ãâââââââââã½éëîþŸÝ­­ôßÞßßÞܲŸúüüûüüüþÿü÷²ß›ž¦È¶ñ測¨ÁÂÃÏ™šá ‘ˆ‹“—Ä£—££ò”öö”“Ú”“““Ú”ö—–£—öÚÚÚöò“Ρ‰Š†ƒÌÊÉƨ¸µø¶È¼¦º›ôܱŸúþë½ããäå½çççèéèçç½å½êëìíÿüû÷ŸŸûþïíëëëëêèéè½ãââââââââââââ彽罽èéêéåâââââââââââââââââââââââââââââââââââââââââââââââââââãäääããããåççèåãâââââââââãçëïü÷±Ý­¹ßÜÛÛÝÝܱ÷ûûûûû÷úûþü°Þ›º©¦®ªÈýæ·§«¿ÂЙšáƒ†ˆ‹“ò££££–£—òòÚ“¢•¤¤••¤¤Î¤¢“ÚÚ¢•¤¤Î¤¢Ú•Œ‰ŠÙ…šÕÑÇ’À§µ¶¼®¦»›ôÞÛ°úþíçãâââââââä½éèèçäãåèêêëíïþûüþÿïíìëêêëéèèçåãââââââââââââãåäãââãäåäââââââââââââââââââââââââââââââââââââââââââââââââââââââãåäääåçééè½ãââââãå½åäåèîþ÷°±Ý¹ôÞÛ±²ÜÜܱ÷÷÷ûú÷ŸŸ÷ûû²¹º¦ª¼ª¼øµù¸¯¾¿ŽÐ™š…„‡ˆ‹“ö———£–£—òöÚ•‹¡¡Œ‹‹ŒŒ‹‹‹¡‰¡Œ¤•Î‚† šÊÒÍþøª¦©ºž­ßܲŸûþîêåâââââââââåçèçåããäçéêêëìïÿîîîíìììëììêèçåäãââââââââââââãäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½½åå½½çèè½ãâââä½êêéççêíþŸ²Ûß¹ôÞܲ²ÛÜÝÛ²±°÷÷Ÿ°ŸŸ÷ŸÝœ»Èøñ¶¶ý¸¬«¨Á’ÅÐÔš ‘‚΢”ò—————£òö¢Î‰‡‡‚‚ˆ‰‰‰‰ˆ‚‡††‘Šˆ‰¡ŒŒˆ‘Ù ØÔÑÐÅ¿§ýªž­ôÞܲŸúþïíéåââââââââââãååäããâäå½ççèêìíììêééêëìíîëçäââââââââââââââââãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½½½½½ååççåãââã½êîíìììíÿú²ÜÞô¹ôßݲ²ÛÝÝÜÜÛ±ŸŸŸŸ°°°Û¹ºªñ´´ýý測¾¨ÀÂÃÇÐÔš ‡ˆ¡¤¢”—££————ò”•¡‘ÙÙ„„†‡Š‡‘Ùƒ …… Ù†‡‚ˆˆ† ÌØÔÉÍ¿¯¶©œßܲ±Ÿúüÿîëèäâââââââââââããããããããäååå½çéêééèçççéìîïëçãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäååç½åäå½çåäâââ½êíîÿÿþûŸ±ÛÜÝÞßôßܲ²ÛÜÜÛÛÛ²°Ÿ÷úúŸ²Ýœ»Èýýýýµ·¯¾ÀÁÁÃÆÐÔš ‘Š¡Î•“öò———ò”“•¡‘…ËššššÌ………áÌËËËÌ…ƒ„††„áØÕ™ÉÅ’Ž¨§æñ¦ž¹Ý±Ÿ÷ûïìêèåãâââââââââââââââââââãåç½åääååå½åäãã½éëìèåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäåäåç½åää½çåäââäèëîÿüû÷°²ÛÝÝÞÞßßßܱ±°±±±±²²°÷ûûú°Ü­ºªñýý´æ·¯«¿ÀÁŽ’ÃÆə؅„‡‹•“”öò——ö¢¤ŒŠƒËÖÊÔÓÔÊÖÖ××××Ø×ØšÌÌá…áؙӥǒ¿§æñªº›ßÜ°÷ûÿìêèåãââââââââââââââââââââãåç½äââââããâââãåçéêè½ãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäååääãââä½åäãã½ëîüú°²ÜÝÝÞßßßßßßßܲŸúûûûûú÷÷úûû÷±Þœ©Èñµ·¸¯¬¾¨¿Â€ÃÆÏ¥Ô×Ë ‘‰‹¢”òòöòò¢‹¡ˆ‘…×™ÑÉÐÉ¥ÑÒÓÔ™™™™™™™Ô™ÖØ™ÑÐƀ¿¬·´È©›ßܱ÷þíêèåâââââââââââââââââââââââåè½äâââââââââãåçéëêçäââââââââââââââââââââââââââââãâââââââââââââââââââââââââââââââââââââââââââââââââãåçåäããââä½ååäåêîüúŸ²Ýôßß¹¹¹ôôôôôÞ²ŸúûüþþûŸŸ÷ûûŸ²ô¦¼ý·§¯¯¬¾¨¨ŽÃÅÍÐÉÓÊ×á„‚¡•”òòö”“Ή‚‘ šÊÑÐÇÅÆÆÆÍÐÉ¥ÑÒÒÑ¥ÉÐÑÔ™ÒÏ’ŽÁ«¸æñ®œ­ÞÛ°úïëèåãââââââââââââââââââââââã½çåãâââââââââãäçêëêèäââââââââââââââââââââââââââââââãââââããââââââââââââââââââââââââââââââââââââââââââä½åäãããä½ççççéëïþú÷°ÛÞÝÞÝÝßôô­­¹Ý²±±ŸûüûŸ±ŸŸúû÷²ôžªñù¸§¸¸¯«¬¾Á€ÅÍÏÉÑÔÕš…„ˆ‹•ÚÚ¢•¤‡„…šÊÑÐÍÆÃ’’€ÃÆÍÏÏÏÍÇÍÉÒÔÉÅ’ŽÁ¾·µý¶©›¹Þ°ûüÿë½ãâââââââââââââââââââââââââä½åãââââââââââã½ççç½ãâââââââââââââââââââââââââââââããââââãããâââââââââââââââââââââââââââââââââââââââââäå½åãâãåèêêêëìîïþûúŸ²ÜÜÛ²ÛÞß¹œœ­ÞÛÛÛ°÷÷÷²Û±Ÿúú°Ü¹œ®ñ·¸·ùù¸§¯«À’ÅÏÐÐÑÓ՚ბˆ‹•¤Î‹Š„áØÊÑÏÆÅÀÂÀÀÀÂ’ÆÅÅÅÆÏ¥ÒÏÃÀ¾¸µñ¶ªº­Þ²ûïíê½ãââââââââââââââââââââââââââãåäãââââââââââä½½ååäââââââââââââââââââââââââââââââããâãå½½½åäãäå½ååäãâââââââââââââââââââââââââââââââããäåäãããäçëíïþüüüüú÷Ÿ°±±±±²ÜÞ­ž¹ÞÞܱ°Ÿ°ÛÞÝÛ°°ÛÞ­ž©ªý·ùæù·¯¾ÂÃÇÐÉ¥Ò™ÖššÌÙŠ¡¤‹‚‘ÙáØÊÑÍÅÃÁÀ¿¨¾¬¬¨Á€ÅÅÆÏÉÆ€Á¾§æñ¼®©­Ü÷ïëèåãâââââââââââââââââââââââââââãååããããââââââããããääãããâââââââââââââââââââââââââââããâã½èéèç½½½èéèèççåãââããäâââââââââââââââââââââââââââãääãâãåèíÿú°°÷úúú÷ŸŸ°±±±²Ýßœºº›­¹ßÝÛÛÛÞßÞÝÛÜÞô›º¦È´ùùæµæù¸¬¿ÅÍÐ¥ÑÓ™Õ×ÖØ…‘ˆ¡‰‡„ Ë×™ÑÏŀ¨«¯§§§¸¸¯¨ÃÀÃÃÇÇÅ’À¬ùý¶®©ºž¹²üíéåâââââââââââââââââââââââââââââãçåääãââââââãäâââââãããââââââââââââââââââââââââââââãããä½è½å½çåå½çç½çè½½ççç½äãâââââââââââââââââââââââââääããäçêîþû÷°±°°Ÿ÷úú÷Ÿ°²ÛÝß­©žœœ­¹¹¹­­¹ôßÞô­ž®¶´µý´¸¯¨Â€ÆÐÉ¥ÓÊÕÕ™Ê؅ن†ÙÌÖ™ÒÏ’Ž¨¬§·µµæù¸«Á’’€ÃÅÆÅ€Ž¿¬ñª©ž­Þ±üìèäâââââââââââââââââââââââââââââãåãââââââââãääââââââââââââââââââââââââââââââââââââããããääãä½ç½ä½ç½çéëëëììëêè½ãâââââââââââââââââââââââãääå½èëîü÷Ÿ°²²²±°÷ûú÷Ÿ±ÜÞô­ž»»»©ºººžœ›­¹­œ¦¼ø´ææ´ýýæù§¾Á’ÆÏÐÉÓÕÊ™ÓÔÕš…ƒ…šÊÑÐÇ¿¨¬·æ´ñ¶ÈÈøýµù¯¿Ž€ÃÁ¨¬¶¦ºœ­ßÜŸþëçäâââââââââââââââââââââââââââââãäããââãäãâââââââââââââââââââââââââââââââââââââââââââââââãå½½åå½çèéëíîÿÿÿÿÿíéåäãâââââãäãââââââââââââââåçêêìíïú°²ÜÝݲ°Ÿ÷÷÷÷±Üß¹›ž»¦»©©»©»»®®®»ž›­¹­ž®ª¶ñýñøøññ´ù¯¨ÇÍÉÔÕ™ÓÒÓÊØÌÌÖÓÐǾ§ùµñÈ®©»¼¶ýæ·¬¿Â’’€’’€€Ž¿«§µÈ¦­ßܱûîê½ãâââââââââââââââââââââââââââââãäåååååäâââââââââââââââââââââââââââââââââââââââââââââââãäåääååçééêìïüûûûûûÿìéè½åäããä½çåãââââââââââââäçêííîïü÷±ÜÞôßܲ°ŸŸŸ°²Þ­œžº©»©©»¦»»ª¼ªª¦©œ­¹›©ªªÈ¶¶¶¶¶¶¶ñµ·«Â€ÆÇÏÒÔÓÑÑÑÔÕ××ÓÏŀ¨¸µ¶ª¦ž­¹¹œ©®¼ø´¯¨ÀÁŽŽÂÁ«§·ý¼»žôÛ±úïëçäâââââââââââââââââââââââââââââââãå½ççåãââââââââââââââââââââââââââââââââââââââââââââãäääääããäå½½½½éíïÿÿþþþïíêéèèåãäåçèåãããââââââââââäèéêìîþúŸ²Ý¹›œ¹ÞÛ°°°±Üß­››­›žº©¦¦»žœ›ôßô¹ž»¦ª¼¶ñýñøñ´µæ§¿ŽÃÅÍÐÐÐÍÍ¥Ó™™ÉÆ’Á«¸µ¶»ž›­¹ßÞô¹›ž»ªø´æù¸¬¬«««¯·´È¦œÞ±üíéåâââââââââââââââââââââââââââââââââãããäãââââââââââââââââââââââââââââââââââââââââââââââäçç½½åäãääå½å½êíîîïÿþþÿïíêêé½äå½çèçå½åãâââââââââä½çêìïûŸ±Ü¹œ­ÝÛÛÛÝô­›­¹ô¹›žžºº©œ­­¹¹ÞÝÝßœº»®¼ñ´´ýñ´´ý´·«Á’€’€ÃÅÆÍÉÒÒÏ€Á«·´È»ž¹ßÞÞßÞÜÛÛÜÞ­º¦¼¼Èø´æææµý¶¦›Ý÷îèäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåèééèç½åå½½ååçêìíîïÿþüüþïîìéç½½çèè½å½½äãããââââââãåçêìïüŸÜ¹›ž©¦©¹ßÞÞô›œ›­ôôôô¹›ºž›¹ßÞÞܱ±ÛÞ¹›º¦È´µµý´ýñøý渾ÁÀÀÁÂ’’€ÆÍÏŬý¼œôݲ°°°°°Ÿ°Ÿ°Ûßœ©©»¦ª¶øø¶È®ž›¹Ûûëåââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèééêêéèèéçççèéëìîîÿþüüüÿïìéééêëìëêéééèç½åäãäãããä½èëïüŸÛô›®È®œ¹¹­œžž›¹ôôßÞß­œœ¹¹ßÞܲ°°²Ýß­»¶µµ´ýññøøñ´ù¯¾««¾¨¿ÁÂ’€Å¾ñ¼©œßÜÛ°÷ûüûúúúûúŸÛß­­­­­›¦®¦»©ºœ­¹Þ°ïèãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½çèëîíììëééèèêììììííîÿÿîíëëëìíÿþüÿîííìëêêéèç½½ççéëïû°Üß›»ªÈ¶ª©ž­¹››­¹ôÝÝÝÞÜÜÞôœºž›­­­ôÞÝܲ±ÛÞô›º¦¶´´ýñ¶¶Èøý´æ·§¸§§§¯«¨¿¿À¾ùñ¼»­ÞÛ±úüÿîïÿþÿÿûúŸ°²ÜÝßôô­žœ­¹ôÞÝܱüìçãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½èíþÿïîíìêéêìíììëêêêìîíìííîÿþûŸ°ŸúûüþÿÿïîíìêééêìïûŸÜß›»¼øññ¼¦žžœ­ôÞÜÛÜܲ²Üßœœ›­¹¹¹ßÞÝÛ²²ÜÞ¹œª¶ññøȼ¼Èøýý´µæµµµµù¸¯¬¬¾¨«ùñª©›ôݲ÷üþîìíììëîÿþþû÷Ÿ±ÛÜÝÝßôÞÜÜÜÛ±Ÿûîêçãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåêÿ÷÷úüþÿîîîïïîíëéèééêëíîïþüû°ÛÝÞßÞܲŸúûüüþïíîïÿþú±Ýôž©ª¶ýµ´¶ª¦©©œ­ôÝÛÜÛ±±Üß­œœ›­¹ßÝÝÝÛ±°°Üô­œ®¼ø¶¼®®ªÈøññø¶È¼ª¼¶ýµæææùùæñ¼©œ¹ßܱ÷üþÿíìéèççêììíïÿþû÷°°±±±°±±±°÷üïê½äââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäåäââââââââââäèíúÛܲ°÷ûþþþÿþÿîìêêêêëíïÿüûúŸ²Þ¹›œ›¹Þ²°ŸŸ°÷úúúûûúŸÜô›º®øýææ´øȪ¦©œ›ßÛ²±±°°ÛÝß­­¹¹¹ßÜÜܱ°°²Ýß¹œº»ªÈ¼¦¦¦®¼¶øøȪ»©»®¼È¶¶¶øøø¼¦žôÞܱúþïîíìé½åää½èèéêìíîþüûûûüûûûúûþïìçäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½ç½äââââââââãåèêíúÛÛ±²±÷üþþþüþÿîîíîîîïüú÷ŸŸŸ±ÛÞô¹ôôÞÜÛ²²ÜÜÜÛÛ²±°ÛÞ›©¼ýµæµýø¼©ž›­¹Þ²°°°Ÿú÷°²Ýôôßô¹ÞÜÛ°°±²ÛÜÝÞôœ¦¼®¦®®®ªÈ¶Èª¦©ººº©»¦®ª®©¹Ý²Ÿûÿïíêèçåãâââääåçéééëíÿÿÿïÿÿÿïîëééèäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããââââââââââäçëíÿ°ÛÛÛÜÜ°úüþþüüûüüüüüûúŸŸ°±±°°°±ÛÝÞßßÞÝÝß¹­­­¹ôÞÝÞ¹žº»¶µæý¶®©­ßÞݲŸŸ°Ÿ÷ûúŸ²ÝßÞÝßôßݱŸ°±ÛÝÛÛÜÝ­º»®¦¦®¼ªª¼¼ª»ºž›¹¹¹­›œº›Þ±úþîìëéåääãââââââãåç½çèêììììíîìê½åå½åâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèíïûŸ²ÛÛÝݱŸ÷÷Ÿ°°°°±±±²²±±°°²Ü²±Ÿ÷Ÿ±ÛÜÞßô­œžºººž­­œªøµùµ¶®©žôݲ±°Ÿ÷úûûûúŸ±ÛÝÝÞô¹ßÜ°÷Ÿ±Ûݲ²²Ûß­©»¦ªÈª¦»»ºžœœœ­ÞÛ²²²ÛÝß­›¹Ý²Ÿûïëçåãâââââââââââãäååäåçéììíêçäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäéïþú°±ÛÜÞÞÜÛÛÛÛÜÜÜÜÝÞßÞÞÝÜÛ²ÜÜÛ²°Ÿ÷°²ÜÞôœº»¦®¦¦»»žž¦Èýµùùæø®©¹Ü±°Ÿ÷úûüüüû÷±²ÜÝÞßßÞÜ°÷°±Üݲ±±²Üß›º©¦ªª¦©©ž›››ôݱ÷ûüüûŸ²ÞßÜ°÷ûÿíçäââââââââââââââããââãäçéëêçãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåëÿüúŸ±ÛÝÞßßßôôßÞßßôô¹¹ô¹¹¹ÞÜÜÜÝÝÛ²²ÛÜÞô›©¦ªÈ¼ª®»©®Èøýµ·¸·ý¼®©›Ý±Ÿ÷úûþþüüüúŸŸ°²ÝÝÝÝÛŸúŸ²ÝÝÛ²ÛÝßô¹›©»»»©ºžœ­Ý°üïïïíîüŸ°°úüÿîë½ãâââââââââââââââââââââãå½åãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½ëþüü÷°²Ýß¹­­žœ­›œ›­­›œžœœ¹ßßÞßßßßôôôß¹žº»¦¼øýø¶¼®¦®¼øý´µæù·§§æøȪßÛ°Ÿ÷ûüüüþþûúúú°ÛÛÜܲŸ÷°ÛÝÞÜÜÝÞôôßô›œž»©©ºž¹ÜúïíììëìîþþÿïíëéåãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåêïÿüúŸ²Üß›žº©»ºœœºººœ›­ôßß¹›­­¹ô›º¦¼Èø´æµýø¼¼¶ýµæææææù¯¬·´ñ¼›Þ²°Ÿ÷úþÿÿÿþüûûú÷±Û²±±±±²ÜÝÝÞÞßßÞÜÜÜÞ¹œº»©œ¹Ûúïìëêêêêëëëè½äãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãââââââââââââââââãåêîÿþúŸ²Ý¹ž©¦ª¦©©©žžžº©ºœ¹ô¹›œ­­ôß­º®È¶øý´´µñøñ´æù·ù¸¬¬¸æý¶¦ß²°°°÷þïïîïïÿÿÿû°Û±°°°±±ÛÝÞÞÞÞÝܲ°²Ý¹ž»©ºž¹ÛûíëêéèçççççäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãâââââââââââââââääçëïïÿûŸ±Üô­œž¦»©ººž›­­›œºœ­­­›œ›ôÞÝÝß­©¦®®ªÈøøøýµ··ùùù¸¯¯¯¸ùµø¦œÞ²±±°÷üïíëëêëíïüŸÛ±Ÿ÷Ÿ÷÷±ÜÝÝÝÝÝÝÛÛÝß›º©ºž›ß±üíéççççççèçäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäççèìîîïû÷Ÿ±Ýß­œº¦»ºž›­ô¹­œœœ›­››­ßÜÛÛÜÞôœºº¦¼Èøýµ··ùùù§¯¯¯§·ý®žßÛ²°Ÿúüîêç½çéëîüŸÛ²°÷úûú±ÜÝÝÜÛÝÝÜÝß¹žºžœ¹Ý°ûíéç½½çççèçäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèëìììíîÿûúú°±Üô›º»ºœ›¹ôôßô­žººžœ›­¹Þ²°°±²Ý¹­››œ©®Èøýµù§¬¬¬¸æýªôܱŸúüïë½ããåèëíÿú²²°úþÿü°ÛÛÛ²ÜÝÝÞßô­œžœ¹Ý°ûíê½ääååå½çäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäçêìîííìíïþüüú÷Ÿ±Þœž­ôÞÞÞÞô­œžžžºž›­¹Ý±Ÿ÷Ÿ°ÛÞßßÞß¹ž»Èøýµùù¸¯¬¯·ææ´È©›Þ²Ÿúüîéäâãäèëíÿú±±Ÿûïïü÷°±±ÛÜÝÝÞßô­œœœžžž›¹Ü°üîëè½åäääååãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäçêííííîííïþþþú°±²Þ­ž›ôÝÛÛÜÝßßßßß¹››œ›­ôÞÜÛ±±°°²ÜÛ²ÛÜôœ®¶ýæ···ùù¸¬¬¯·æµ´¶¦žßÛ°÷üíçãââã½éíÿûŸ÷úüÿÿÿþûŸ±²ÛÜÜÝô¹­››­­››­ôÞÛŸüÿîìëéééè½äãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããåèëìììíïÿïïÿþþü÷±ÛÝÞô›ž­ßÛ²±²ÜÞÜÛÛÛÞô¹­¹ôÞÜÛÛÛ²±°°°Ÿ÷±Üß­ž©¼ñù§¸·ùù¸¯¬¬·æµý¶®ºœß²Ÿüì½ãâââåéíïþüüûüüþÿïþû÷Ÿ°°±Ýôôßô¹¹ôô­ôÞÝÜŸûþÿïîííëé½äãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââå½èëíìììîïÿïïïÿþûŸ²ÜÞÝÞôôßݲ°°²ÜÜÜÛ²²Ýô¹­ôßÝÛ²Û²±÷ûûûüþû°Ý¹ž®ø¸·ù·¸·¸¯¯¸ùæñ¼¦©ºôÛŸþë½ãââåèëìíîÿþþþþÿÿïîïþüüú°ÝôßÞÞÞßßô¹ôßßÞ±÷þÿÿþïîìé½äääãääãããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåçéìîÿïîîïïÿïïïÿþûŸ²ÜÜÜÜÞÞÞܱŸ°²ÛÜÜܲ±Üß¹­¹ôÞÜÜܲ±úüþþÿïþ÷Ûôœ¦¶µ··¸¸·ù·§§¸·æøª¦¦¹²÷ÿêåââãåèêêëíÿÿîïÿÿÿíëìîïÿü°ÝßÝÜÜÝÝß¹¹¹ôôÞ²÷üÿþþþïëçåäååå½åååäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçéëíïÿþïïíììíïÿþûûúŸ°±²ÜÝÝÛ²°÷Ÿ²ÜÝÞݲ±Üß­žž›¹ßôßܲŸûüüþüûú°Üôœ®ñæùææ·¸¸ùæñ¼®¦›Þ±þë½ãâââãçêêëîÿîììíííêéêíïÿü÷±²±±²²ÛÜÜÝÞÞÞÜ°üîíííìëèåãââââââââãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½èêëíîïîìììîÿþûûûúúúŸ±ÛÝÝÛ±ŸŸ±ÜÝßôôÝÜÞô›ººžœœ­ÞÛ±÷ûüûúú÷°Üß›ž©Èýµ´ýý´æùùæ´¶¼®©œôÜúíçäãâââãçêêëííìêééêëéèêíïþüûú÷°°ŸŸ±±±²ÛÛÛ²úîëééééè½åãâââââââãäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½çèéêììëìíîïÿÿÿþûûüû÷÷°²ÜÛ±±ÛÞô¹›œ›¹¹­œº»»»»»ž¹Þ²°úú÷ŸŸ°±Ýô­œº¦Èȼ¼ÈÈøýµ´´ñÈ»ôÛ÷ÿëçäãâââäçêêëëëêêéèèèççéìíïþüûú÷÷ú÷ŸŸ°±°°°Ÿþìèççç½äââââââââââääââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½½åååçêìîïïïïÿþüþüú÷÷ŸÛÝÛ²Ûݹœžžžž»¦®ª®®¦žôÞ²Ÿ÷ŸŸ°°²Ýô›œž¦»©»®ª¼¶ñýýø¼©›Ûúþîëçäãâââäçêêëëìëéèççèèçéëíÿÿÿþûúúúú÷÷Ÿ°÷ûûþíè½ååäââââââââââââãäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½½äããåèééêêëîÿÿþþüûûú°²Û²²Üô›ž©º»®®¦»»»»©ºœ›ßÛ±±°°Ÿ÷°²Ýôôô›ºº»ª¼¶ø¶È®ôŸþîíêçäãããä½éìëêêìêç½½½çççéíïÿîíîïîïïÿþüúúÿíìëçåäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½äãä½èèèççêìîïþþüüû÷°±²²ÜÞ¹œ©¦»©¦ª¼ªª¦»»»žžœ¹ßÝܲ±Ÿúú°ÛÜÛÛÞ­›››œ¦ªÈȼª»›Üûîíëêçäããäçéìíëéêìé½½çèééèëîÿÿíìëëêêëëìïþÿìéçåãããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãååããå½çç½å½çèêíÿüûûú÷÷÷Ÿ±ÛÞ¹œ»¦»©»ª¼¼È¶ª¦»©ººž­¹ôÞÛŸûúŸ°°°±ÛÜÜÝÞôœ©®¼ªª¦º¹²üîìêè½åää½èêììéèêëéééêëëëìíïÿïíìêêèçççèêëìê½ãââââââââââââââââââââââââââââãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½åãâââãäåääå½½èìïþûúúúûûúŸ²ß›©»»»®È¼¼¶ø¶ª»ºº©»ž›ô²ûþüúú÷ŸŸ°°°±²Ý­º¦¼¼¦º›Þ±üîëéç½½çççèêëêééêëëëëìììíîïîîîíëëéè½½å½çéêèäâââââââââââââââââââââââââââãääâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäååãâââââã½åååçèêíïïÿþûüüüûŸÜ¹žº©»®¼øÈÈø´ý¶®©©»»ºž­ßÛ÷ÿíïþûúúú÷÷Ÿ°±Ü¹ž»¼ª©žßÛŸüîëèç½½çç½½èççéêëìëêééêëìíìììíìëììëêéèèéêêçäããââââââââââââââââââââââââââãäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäãââââã½éçååçèêìîîîïþþþüú°Ü­ººº»®¶ñ¶¶ýµ´ñȦ¦¦¦¦ºœôÛŸþìëìîÿþþÿþúŸ°²Ýôœ©¼®©›Ü±úÿíëéèç½½åååääåèëîïíêéèéêìíìëìíëìíïîîíìëìëêçåååäâââââââââââââââââââââââââãäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäãâââãåèêçååå½èëîííîïÿþû÷±Ý­ºº©¦Èøøñý´´ýøȼª®»ž¹Ü°üíêèèêëíííïûŸ²Üß­»ª»ôÛŸüïíëéè½äãâãâââãçìîÿîìêèêìïÿîìëëëìïüüûþïîíêçççèéçäâââââââââââââââââââââââä½çåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãããâãååèêçåå½çèëìíîïÿþüŸ±Üß›º©¦¼¶øñ´µ´ýñøȪ¦©œß±ûïìèå½èêêêëîü°²Þ¹›»ª©žß²÷üïíìëéçäãããâââäèëîïîíêèëíïÿîìêéëîüú÷÷úüïíéçèêëêè½ãââââââââââââââââââââââä½çåäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãääåçç½çéêéééêìîïþûŸ²Ý¹›œºº©¦®ªÈñµýø¶Èª¦»œß°þïìçäåèêëëìÿú°²ÜÞ¹œ¦›Þ²°úÿíììêéç½åååååèëííìëêè½èêìíëéèéìïüú÷ŸŸ÷üîêèéêéèè½äãââââââââââââââââââââââäåääâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½çèéëëêéèèëîÿü°ÜÞ¹œžžººº©»®¶ñø¶ÈȪ¦»›ÝŸüÿíçääçêìíîü÷°±²Üß­º»œôܲ°ûîííììëéçççèêìííìëééç½çèêêèççéíÿüû÷Ÿ°Ÿûïëèéêèèççç½ãâââââââââââââââââââââãääãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½èéëìíëéççëïüŸÛݹžººººžžººººº»ª¶ññø¶ª¦»º­Ý±úþíçäåçêíîÿü÷°°±Ûݹ›ôÞÜŸþïîííííëêééëîîíìêêéçççèêéçççêîÿþúŸ°°Ÿûÿíëêéèèççèçåãâââââââââââââããâââââãäãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½éëííìêéèèëîû°Üßœººž©º»¼øýýñø¼®©¹Ü±÷þìçäåèëîÿüû÷Ÿ°°°Ûôž©ž­ßÝ°üÿïîîîîíìëëíïîìëëêèèèèèéèèééëîþûŸ°°°ŸûþîëêèèéèèèéçåâââââââââââââãââââââãäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçêëêèçéêëíÿûŸÛôœººººººžž®¶ýýññ¶ª©ºžß²÷üîê½ãäèëíîÿü÷÷Ÿ÷÷±Þ›œ­¹ßÝÜ°ûïííîíìììëêêëëìììêééèèééèêëêëîþúŸ÷÷Ÿ÷ûÿëèèèèééèç½äãââââââââââââââââââââããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçèç½çêíïÿþü÷Ûôœºº©ººººº¦Èýµý¶ø¶¦œ­Ý°ûïìê½ãåçêìîïü÷÷úüüŸÜô›­ôÞÜÛ²°ûÿîïïìêëìéçèçéëíîìééèéééêììëìîüú÷úúúúüïé½ççèéèè½äããââââââââââââââââââââãäãâããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäå½éìÿú÷úúŸ²ß›º©¦º»»¦ª¶ñµýøȼ©œ­ôÛ÷ÿëéè½å½çéìíïû÷úüÿüú±ÜßÞݲ°Ÿ÷úûüþÿïìêéè½½½½èëîÿíéèççèéêëëëìîþû÷÷úûüïìç½½çèéèçååäãããâââââââââââââââââããäââãããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåêï÷±±±±²ÛÞ¹žº»¦©ººº»¦ª¼¶ýæý¶È®ºœ¹Þ²ûîéççç½å½éëìïüúûÿïÿü÷±ÛÛ±Ÿúûûúúúüþïìéçç½ååäèìÿüïëé½çéêêëëëëíïüúúûþíëè½ää½éêèçåäããäãâââââââââââââââââãå½äããäãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåëü°ÛÜÞßß¹­›ž©©©»©©»®ÈøýµæñÈ®»­ÞÛ°ûíçääåäãåçèêìïþþïÿþûúú÷÷úûúúŸŸŸ÷ûÿîêçççåääåéíÿþïíêççèéééêêêëíîÿÿîëèç½äââäçêéçäããåäââââââââââââââââââã½çåãããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½îú±Þô›œžžž©©»¦®»©»®Èýµæùùý¼¦œ¹Ý±Ÿüë½ääãâãäå½èéìîîîïÿþþþüüüüû÷Ÿ°Ÿúþîëéçççåää½éìîþÿïìééèééêêéèêëíîìé½äääãââã½éêè½åååãâââââââââââââââãåäåçè½äãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåéÿ÷ܹœº©©»©©¦®®®¦»»®Èñæ·§¸µ¶»­ßÛ°úÿëç½½ããâââãä½èëëëìîîìíîÿþþûûûú÷üîìëéèç½åäåçéêíïîîììëêéêêêééëíîïìéåââââââã½éêéèçåãââââââââââãããââãå½½éëëé½äâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçêþ°Þ›©»¦¦®¦»¦ªª®¦¦»»ª¶´·§¯§æ¶»ž¹Ý²°úÿìéèçåäãââââãçèéêëìëêêëîïÿÿÿÿüúÿììêéèçèèççéééìîíííííìêééêêêëìîîëçäââââââä½çèçç½äââââââââââãääãããäåçéëííëé½äâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½èèêïŸÝ­œžºººº©»¦®¦»ºº»¼ñµ·¯««·´ª¹ÜÛ²÷þîìêéèçåãâââå½½èéêêêëêêìííììíÿüîìëêéèéêêééééêëíìëêêêêè½çèèèççéê½ãâââââââââââââââââââââââââããââââãåèèéíïíêçåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçèéèéî÷Üô¹­›œœœžº©¦¦»©žªø´·§«¾¸µÈ©­ßÝÜ°ûþÿíëëëèäãâäååå½èçéêëêééééêëëîþîìëëèèêììëêéééêêêéççç½ää½ç½äããå½ãââââââââââââââââââââââââââââââââãåèèéìïíêèçäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäçéëëìþŸÜô¹ô¹›œžº©»ž­­ž¦¼ýæ·¯«¸æø»œôÞÝ°úúûÿîîîêçååãããä½èééèéç½ååå½çéîþïìêè½çêìëêèçèéèèç½ååãâââäåãââââââââââââââââââââââââââââââââââââââãåç½çëîíëêêçåäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåêìîïÿúŸÛßßßô¹›žžº©©ž¹ßôœ©ªø´¸¯¸ø¦ž¹ßܱ°°°÷ûþïìêè½ããää½çèèèéè½ääãäåèëîìêçç½èêìëêéééèç½½åäãâââââââââââââââââââââââââââââââââââââââââââââãåååçêìêèéêéç½äââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåéíîÿþûú÷±ÛÛÛÜÞ¹›žºº©©ž¹ôô›º»®¶´¸ùµ¶¦­Þܲ²ÛÛ±úüÿíëèçååäãããääåçç½å½ääå½èéçåäåå½éëììëëéç½ç½½äâââââââââââââââââââââââââââââââââââââââââââââââãäää½é½åå½½½åäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããå½éìþüúŸŸ÷ûúŸŸŸ²Ûß›ººœôôô¹­ž®øµæ´¶®›ßÝÜÜÝݲŸúþîëéèççäâââââãäå½½½äãäå½åãâââãäèëììììé½åçççåãââââââââââââââââââââââââââââââââââââââââââââââââââä½äãâãäääãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½éêìîü°±²±°úüûúú÷°²Þ­žººººž¹ÞÞßßô¹œ©¼ñ´ýñ¶¼»º›ôßÞÞÝÛ²°úþïíëçäâââââââã½éèåâââääãâââââãåèééêìêççççç½åãâââââââââââââââââââââââââââââââââââââââââââââââââãäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ½ëîþú°ÛÞÞÜÛ±÷úúúú÷°²Þ­žººž¹ßÞÝÝÝÜß­»¼¶¶ø¶È¦œ­¹ßÞÝܲ°úþÿîë½ãââââââââ½êèäââããââââââââãåå½éëéè½½½½½åãââââââââââââââââââââââââââââââââââââââââââââââââââäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçìïû±ÝÞôßÝÜÛ±²²±±±²ÜÞ¹œœôÞÝÛÛܲ²ÛÝ­º©¦ª¼®»ºœ­­ôÞÝÛ±÷üÿíëêèäâââââââââ½êçãâââããââââââââââãåååããããããâââââââââââââââââââââââââââââââââââââââââââââââââââãåääââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèìÿŸÜß­¹ßÞÝÝßôßÞÝÝÝÞô­œ›¹Ýܲ±²±±°±²ßœº©»»©œ­­¹ÞܲŸûïîìé½ååâââââââââãçé½ãâââããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½½åãââããäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèëï÷Üôžœ­¹¹¹›œž›¹ßÞß¹¹¹ßÝÛ²°÷÷÷Ÿ°°°Ûôœºž›­¹¹ßÛ°úüîìêè½äääââââââââãå½½äãââãääãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãç½åããåçèèåãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåèêíúÛ­ºžžœžº©»©›ô¹­¹ßܱ²±Ÿûûûú÷ŸŸ±Ý­žœ­¹¹ô¹ßÝ°ûþïìëé½åãäãââââââââãäååääãâãääãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèç½ååçêëìé½ãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½éíúÜ›ºººžž¦®ª¦©ž­­›¹ßÛ±±±úÿïÿþþþü÷²ß­ôÝÝÝÝÝÛ±÷ûüÿîíéç½½åäãââââââââãä½ääãââãããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåè½åää½èëíëéåââããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½êþŸÝœ©©ºº©®¼¶È®º›››­ôܱŸúüïîîïîïÿü÷ÛÞÝÛÛÛ²±ŸŸ÷úüþÿîêçç½½åãâââââââââä½åääãââãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåè½äãä½éìîíêåãäååäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçíû±ßœ©ºº©¦Èø¶ª©›­ôܱúüÿïîîîïïïþú±Û²ÛÛÛ±°Ÿ÷÷÷ûûÿíêè½åååãâââââââââäåääääââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäç½å½èêëíîíêç½½èéèåãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåêÿŸ²Þœºº©®Èñ¶¼¦ž›­ôݱúÿïîíììíííïÿû÷Ÿ±±°÷÷úûûüþþîêèçåääãââââââââââããããããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåä½çêëìïÿîëéèéëíìèåãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãèíü°Ûßœºº»®È¶È®­ôôÞܲ°ûïìêéçç½åççèëíïÿÿïïîííìêéè½ääãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããä½ééëïþîëêêêëííé½ãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäéïú±Ý¹œžºº©¦¼Èª©›ÞÝÝÜÛ±Ÿüïê½åäãââââäåçèééééèéêçåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½èèéîþïíííìíîîëçäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçìüŸ²Þ¹­œººº©¦žôÜÛ²±°÷ûÿíçäââââââââââãäääããååãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½½êïüüþÿïïïïïìê½äãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½ëÿ÷±ÛÝß¹›œžžœ››žœ­ÝÛ°Ÿ÷ûüþîëçãââââââââââââââââããââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäçêÿúúûüþþÿÿïíêèåäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ½ëÿú±Üßßô­œœœ›­ôô¹­ôÞÛ°úûþïîìêèäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½èìþúûûüüüüÿïíëè½äãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäéîû±Üô›œžžœ­ßÞÞÞܱŸûþÿìêéè½äââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½éìþúûûûúûþÿïîíéçäãäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãèíû±Ý¹ž©©©ºœôÞÝܱúüÿïíìé½äãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèëïüþÿüüÿïîïîíìëéç½äâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ½ìû²ß­©¦¦»¦®¦º›ôÞܲ÷þïîìêé½ãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèêíïîîþûþïïÿÿïïïìêçäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäéÿ±ôœ©¦ªªªªª»º›ôÞݲ÷ûþîëè½ãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçêììîþûüüüûüþþþíé½äââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåéïŸÝ­žº»®®ªª¼¦ºœ­ôÞ²°÷üîéçäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäèëìîüûûú÷Ÿ÷ûûûïëçåäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçëï÷ܹžº¦®®ªÈ¶®©›ôݲ±úþíé½ãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçêìïþüüúŸ²±ŸŸ÷üïêçåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèìÿû±Þ­º¦¼¼Èñ´È»º›ôÝܲúþíèäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçêíïÿþüú°Û²±°ŸûþíéçäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãâãäåéîÿüŸÛ¹®È¶øýµ¶®ž­ßݲ÷þë½ãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèëîÿüû÷±Û²°°Ÿûÿíëè½äââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåççééêìîÿü÷²ô©®¼øµý¼»›ôÞÜ°þêåââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèêìïüú÷±Û±±°÷ûÿîíëéåããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèìîïïïïÿûúŸ²ßœ¦¼ñæùý¼œ­¹ßÝ°þëåââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãçèêíþüûŸ±Ÿ÷÷÷ûþþþîêç½åäãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½éíþû÷ŸŸúú÷Ÿ°Ûô©®¼øµæñª©œ­ßÜŸÿêäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½èéíÿþûŸ°÷úúúûûûüïìéèç½äâââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½éíþú°ÛÛÛ²²²²Ûݹ©®¼øµ´¶¦ºœ­Ý°üíçãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèëîïÿûú÷ûüûúúúûüïíêçåäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãèíïþ÷²ÛÜÜÜÛÛ²ÛÞ›º»ªøµæ´ø®žô²úÿëçãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèëíîþûûûüüûúûûüüÿîëèåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäéíîÿ÷²ÜÝÝÜܲ±±Ü¹»ªø´´ñȪ»›Ý°ûîëçäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåèêìïÿþüûüþþþþþüþïíìëçåãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåêîÿú±ÛÜÝÝÞÛ±°°Ü­¦ª¶ññ¶È®¹Û÷ÿíêçäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçèëîïþûúûüüþüþüÿîìíìé½äâââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½êíÿúŸ²ÜÝÝݲ²°°Ýœ»ªª¼¶¶¼¦žô±üìèåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçéëíïüú÷ú÷ûûüüüþîíîíëèåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½éìÿûŸ±²±°±±Ÿ°Ýœ©¦®È¶È¦ž¹ÝŸïèäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½èêìíïü÷°°Ÿ÷úúûüþÿîïïìèäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½éíÿû÷ŸúúŸŸŸ±Þž¦®¼ÈÈ»ž¹Ý°üìçãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçéìÿüúŸ±±±°÷úüüûüüþïëèäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåéíþüþþüúŸ±²ßœ®ªÈ¶È©›ß²úïêçäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäçêîüúúŸŸ°±°÷ûüûûûûþïêçãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäèìîîîÿþûŸ±Üß›¦ªÈȪ¹Ý²úïëçãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½êíÿÿüüûúûüüþþþþÿîëèåäââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââäéììíîîïü÷²Þßôœ¦ª¼®¹ÞÛ÷ÿëçãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããããããâããçêìíîÿÿïÿÿïïïïïïíëçåãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââã½êêêëìíîüŸÛßÞß›¦ª®º­Þ²úÿëèåäãããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½½½åäãääåéììíîîîííëêêëìììêèåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½èççèëìîü°ÜßÞß¹­œº¦»¹Ý±÷þíêè½½çåãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèéè½ää½çèêëìíîîíìêè½ççéêêè½äãâââââââââââââââââââââââââââââââââââââââââââââââââââãââââââââââãäå½½½èêìÿú±ÜÞßßßß­žºœ¹Ü°úüîëêêéè½åãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèêêè½½çèéëìííííìëè½ååääåçåäããââââââââââââââââââââââââââââââââââââââââââââââââââãåãââââââââããããäåçéíÿúŸ±ÛÝÞßÞÞ¹œ›­¹Þ²÷úþïîíìêéç½åãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåèéêëêêééêëìîïÿïîíëçåäãââãããâããââââââââââââââââââââââââââââââââââââââââââââââââââ½èåãâââââãäåäãããå½éíüŸ±±ÛÝÞÞÝÝô­¹ßܱŸúüþÿïìëêéèèçåãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããããä½èêëìííîíììíïÿþþÿïîìçåãâââââââããâââââââââââââââââââââââââââââââââââââââââââââââââäèêèçäãããåçèè½äãäåçêïû±²²ÜßßÞÜÜÝßßßÛŸúüþÿþÿìêéèèèèçäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãääãä½èëíîîîÿþÿíîîïþüþÿïíëçäâââââââãããââââââââââââââââââââââââââââââââââââââããâââââââãä½êìëé½ääåèëëéçåäåçèìÿ÷²ÛÛÞôßßÞÝÝÝÞôݱ÷úüÿÿïëèçç½½½çäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãããäçëîÿïîííìëëëëìíîíìëëè½äãââââââââââââââââââââââââââââââââââââââââââââââââââââââãäçêìîìé½åäåèëëëêèçççêîþ÷²²ÛÞÞÞßÞÝÝÞô­ßܱ°ûþÿïëèç½ääå½äâââââââââââââââââââââââââââââââââââââââââââââããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãääèìÿüÿíìëêéééèéêêéééêéè½åãâãããâââââââââââââââââââââââââââââââââââââââââââââââãää½êìîïíêçç½½èëìììëéçèëíÿ÷±²ÛÜÝÞßÞÞßß­­ôÞܲúþïíêè½äããä½äââââââââââââââââââââââââââââââââââââââââââââãäåäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½çêíÿüÿîìêèèéè½çèéèèèéèç½½ääääãâââââââââââââââââââââââââââââââââââââââââââââââä½çêìíïþïìêèççêííííëééêëìïûŸ±²²ÛÝÞÞôô¹›­¹ôݲúþïíëèåãââãäããããâââââââââââââââââââââââââââââââââââââââââãå½åãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½èéêíþüþîìèèééç½½çèçèééèèèç½çç½äââââââââââââââââââââââââââââââââââââââãâââââââãä½éëìîþûþïíëêêìíìíîíëëìëìïü÷°²ÛÜÝÞô¹ô¹ôÞÝܲŸûüÿîëçäããââââââäââââââââââââââââââââââââââââââââââââââââââãäãââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãåçèéëïÿþïíêéééèçççéêëìëëêëéèèèççåãâââââââââââââââââââââââââââââââââââââââââââââââã½èêíþúúüþÿîííííîïïîïîîÿüú÷°²ÛÜÝÞÞÞÝÝÝÜÛ²°÷úûÿíé½ääãâââââãäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½çèëíîÿþïìêêêêéééêëìíîííììëêéèççäâââââââââââââââââââââââââââââââââââââââââââââââââäçêíü÷÷÷Ÿúüþÿÿïþüüüüþüú÷÷Ÿ²ÜÜÝÞÞÝÝÜÛÛÛ²±°Ÿúþîëçãââââââââãäääããââââââââââââââââââââââââââââââââââââââããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãå½½½çéêìïÿíëëëëìëëìíîîîîííììëëêèèçäâââââââââââââââââââââââââââââââââââââââââââââââââã½êîû÷Ÿ±±±°Ÿ÷÷÷ŸŸ÷÷÷ûüû÷Ÿ°²ÜÞÞÞÞÝܲ²Û²°ŸŸ÷üïíêåãââââââââãäåå½äââââââââââââââââââââââââââââââââââââââããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââä½èç½èéééìïíììììììíïÿÿÿïîííííììéèèçåãââââââââââââââââããâââââââââââââââââââââââââââââââäéîü÷°°±ÛÛ²±°±²²±°÷úû÷°°°±ÛÝÝÜÜÝÛ±±°÷úüþþÿïìçääããâââââââããããââââââââââââââââââââââââââââââââââââââââããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââåè½½çèççêììííìëìíïïîîÿþÿïîíìëëêêèçåãâââââââââââââââãâââââââââââââââââââââââââââââââââãçìÿûûû÷Ÿ°°ŸŸŸ±±ŸŸŸŸŸ°°ŸŸŸ±±°±ÛÛ²°Ÿ÷ûþÿîîîìèåääääâââââââããââââââââââââââââââââââââââââââââââââââââââäããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããââã½ç½½½½å½èêìíììëíÿþïíîïÿÿÿÿîíìëêêèèçäãâââââââââââââââââââââââââââãäããââââââââââââââââââåéíþÿþüú÷÷÷ŸŸ°°Ÿ°±±²²°÷ú÷ŸŸ÷÷°±±Ÿúüîíììíêèåäãââãââââââââââââââââââââââââââââââââââââââââââââââââââãåããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããäåççååå½èèèèçèêìïüûþïííîÿüþÿïííìëêé½ääãââãããäããââââââââââââââââââã½ççååååäãââããããâââââãä½êîïÿÿþûŸ±²°Ÿ÷úŸ°²Û°÷ûüú÷÷úúûûúþïìêééêëçäãââââãââââââââââââââââââââââââââââââââââââââââââââââââââãåäãâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãä½ç½½½½½çèèèççèêíþú÷ûþîîïþúúüþþÿïíìêçååäãâäåååååäããâââââââââââââââåèêêéééè½äãäå½½äââââããä½êîïïÿþú°ÛܲŸúûú°ÜÜ°úüþüüûúüÿÿïìëêè½½èé½åäãããââââââââââââââââââââââââââââââââââââââââââââââââââââãäâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââääääå½çççèëëëìíïü÷Ÿ÷ûþþþû÷÷úûþïîíëêééç½ååçèç½çç½½½½åããââââââââââäçêêééè½åääåå½½åãâââãä½½èìïÿÿþûúŸÛݲŸüþüŸ²Û±÷þïïÿüüïíìëêêèåää½ç½åääããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââããä½½½½èíîïîÿûú°±ŸúûûúŸ°±°÷þîïîëéêëéèççéêêêëëéèééè½äãââââââââä½éëêéè½äããå½½½åäãâããäåçèêîÿÿþüûúŸ²ÜÛ°üÿü÷±Û±÷ÿííïÿÿîìêéèçäãããå½äãããâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââãäåçèêíïþþûúúŸŸ÷úúŸ±²ÛÛ²Ÿüÿÿïìëëëëêéêêëìíîíëêëêè½äãâââââââä½èêêè½äãããäå½½½åãâãããåçéêìïþüüüû÷°²Û²Ÿûüû÷±±°úÿíííîïíëéè½ä0 \ No newline at end of file diff --git a/lib/glut-3.7.6/progs/bucciarelli/paltex.c b/lib/glut-3.7.6/progs/bucciarelli/paltex.c deleted file mode 100644 index 13955bd5b104a0be7d9653d89abf9d4f6cb98c84..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/paltex.c +++ /dev/null @@ -1,175 +0,0 @@ -/* paltex.c */ - -/* - * Paletted texture demo. - */ - -#include -#include -#include -#ifdef _WIN32 -#include -#endif -#include - -#if defined(GL_EXT_paletted_texture) && defined(_WIN32) -void (*glColorTableEXT)(GLenum target, GLenum internalFormat, - GLsizei width, GLenum format, GLenum type, const GLvoid * data); -#endif - -static float Rot = 0.0; - - -static void Idle( void ) -{ - Rot += 5.0; - glutPostRedisplay(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Rot, 0, 0, 1); - - glBegin(GL_POLYGON); - glTexCoord2f(0, 1); glVertex2f(-1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, 1); - glTexCoord2f(0, 0); glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -/* ARGSUSED1 */ -static void Key( unsigned char key, int x, int y ) -{ - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -/* ARGSUSED1 */ -static void SpecialKey( int key, int x, int y ) -{ - switch (key) { - case GLUT_KEY_UP: - break; - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ -#ifdef GL_EXT_paletted_texture - GLubyte texture[8][8] = { /* PT = Paletted Texture! */ - { 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 100, 100, 100, 0, 180, 180, 180}, - { 0, 100, 0, 100, 0, 0, 180, 0}, - { 0, 100, 0, 100, 0, 0, 180, 0}, - { 0, 100, 100, 100, 0, 0, 180, 0}, - { 0, 100, 0, 0, 0, 0, 180, 0}, - { 0, 100, 0, 0, 0, 0, 180, 0}, - { 0, 100, 255, 0, 0, 0, 180, 250}, - }; - - GLubyte table[256][4]; - int i; - - if (!glutExtensionSupported("GL_EXT_paletted_texture")) { -#endif - printf("Sorry, GL_EXT_paletted_texture not supported\n"); - exit(0); -#ifdef GL_EXT_paletted_texture - } - - /* put some wacky colors into the texture palette */ - for (i=0;i<256;i++) { - table[i][0] = i; - table[i][1] = 0; - table[i][2] = 127 + i / 2; - table[i][3] = 255; - } - -#if defined(GL_EXT_paletted_texture) && defined(_WIN32) - glColorTableEXT = (void *) wglGetProcAddress("glColorTableEXT"); - if (!glColorTableEXT) { - fprintf(stderr, "wglGetProcAddress could not get glColorTableEXT\n"); - exit(1); - } -#endif - - glColorTableEXT(GL_TEXTURE_2D, /* target */ - GL_RGBA, /* internal format */ - 256, /* table size */ - GL_RGBA, /* table format */ - GL_UNSIGNED_BYTE, /* table type */ - table); /* the color table */ - - glTexImage2D(GL_TEXTURE_2D, /* target */ - 0, /* level */ - GL_COLOR_INDEX8_EXT, /* internal format */ - 8, 8, /* width, height */ - 0, /* border */ - GL_COLOR_INDEX, /* texture format */ - GL_UNSIGNED_BYTE, /* texture type */ - texture); /* teh texture */ -#endif - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glEnable(GL_TEXTURE_2D); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 640, 480 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - - glutCreateWindow(argv[0]); - - Init(); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutIdleFunc( Idle ); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/bucciarelli/paltex.dsp b/lib/glut-3.7.6/progs/bucciarelli/paltex.dsp deleted file mode 100644 index cadf48f90bff014136b1f01c252ae6fc61013db8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/paltex.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="paltex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=paltex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "paltex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "paltex.mak" CFG="paltex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "paltex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "paltex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "paltex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "paltex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "paltex - Win32 Release" -# Name "paltex - Win32 Debug" -# Begin Source File - -SOURCE=.\paltex.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/ray.c b/lib/glut-3.7.6/progs/bucciarelli/ray.c deleted file mode 100644 index 97a5a07044a77dab99fb49e082308ded5a0a3ca6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/ray.c +++ /dev/null @@ -1,862 +0,0 @@ -/* - * This program is under the GNU GPL. - * Use at your own risk. - * - * written by David Bucciarelli (tech.hmw@plus.it) - * Humanware s.r.l. - */ - -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#endif - -#include - -#if defined(GL_VERSION_1_1) -/* Routines called directly. */ -#elif defined(GL_EXT_texture_object) && defined(GL_EXT_copy_texture) && defined(GL_EXT_subtexture) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#define glTexSubImage2D(A,B,C,D,E,F,G,H,I) glTexSubImage2DEXT(A,B,C,D,E,F,G,H,I) -#else -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#define glTexSubImage2D(A,B,C,D,E,F,G,H,I) -#endif - -static int WIDTH=640; -static int HEIGHT=480; - -#define FRAME 50 - -#define BASESIZE 7.5f -#define SPHERE_RADIUS 0.75f - -#define TEX_CHECK_WIDTH 256 -#define TEX_CHECK_HEIGHT 256 -#define TEX_CHECK_SLOT_SIZE (TEX_CHECK_HEIGHT/16) -#define TEX_CHECK_NUMSLOT (TEX_CHECK_HEIGHT/TEX_CHECK_SLOT_SIZE) - -#define TEX_REFLECT_WIDTH 256 -#define TEX_REFLECT_HEIGHT 256 -#define TEX_REFLECT_SLOT_SIZE (TEX_REFLECT_HEIGHT/16) -#define TEX_REFLECT_NUMSLOT (TEX_REFLECT_HEIGHT/TEX_REFLECT_SLOT_SIZE) - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define EPSILON 0.0001 - -#define clamp255(a) ( (a)<(0.0f) ? (0.0f) : ((a)>(255.0f) ? (255.0f) : (a)) ) - -#define fabs(x) ((x)<0.0f?-(x):(x)) - -#define vequ(a,b) { (a)[0]=(b)[0]; (a)[1]=(b)[1]; (a)[2]=(b)[2]; } -#define vsub(a,b,c) { (a)[0]=(b)[0]-(c)[0]; (a)[1]=(b)[1]-(c)[1]; (a)[2]=(b)[2]-(c)[2]; } -#define dprod(a,b) ((a)[0]*(b)[0]+(a)[1]*(b)[1]+(a)[2]*(b)[2]) -#define vnormalize(a,b) { \ - register float m_norm; \ - m_norm=sqrt((double)dprod((a),(a))); \ - (a)[0] /=m_norm; \ - (a)[1] /=m_norm; \ - (a)[2] /=m_norm; } - -static GLubyte checkmap[TEX_CHECK_HEIGHT][TEX_CHECK_WIDTH][3]; -static GLuint checkid; -static int checkmap_currentslot=0; - -static GLubyte reflectmap[TEX_REFLECT_HEIGHT][TEX_REFLECT_WIDTH][3]; -static GLuint reflectid; -static int reflectmap_currentslot=0; - -static GLuint lightdlist; -static GLuint objdlist; - -static float lightpos[3]={2.1,2.1,2.8}; -static float objpos[3]={0.0,0.0,1.0}; - -static float sphere_pos[TEX_CHECK_HEIGHT][TEX_REFLECT_WIDTH][3]; - -static float fogcolor[4]={0.05,0.05,0.05,1.0}; - -static float obs[3]={7.0,0.0,2.0}; -static float dir[3]; -static float v=0.0; -static float alpha=-90.0; -static float beta=90.0; - -static int fog=1; -static int bfcull=1; -static int poutline=0; -static int help=1; -static int showcheckmap=1; -static int showreflectmap=1; -static int joyavailable=0; -static int joyactive=0; - -static float gettime(void) -{ - static float told=0.0f; - float tnew,ris; - - tnew=glutGet(GLUT_ELAPSED_TIME); - - ris=tnew-told; - - told=tnew; - - return ris/1000.0; -} - -static void calcposobs(void) -{ - dir[0]=sin(alpha*M_PI/180.0); - dir[1]=cos(alpha*M_PI/180.0)*sin(beta*M_PI/180.0); - dir[2]=cos(beta*M_PI/180.0); - - obs[0]+=v*dir[0]; - obs[1]+=v*dir[1]; - obs[2]+=v*dir[2]; -} - -/* ARGSUSED1 */ -static void special(int k, int x, int y) -{ - switch(k) { - case GLUT_KEY_LEFT: - alpha-=2.0; - break; - case GLUT_KEY_RIGHT: - alpha+=2.0; - break; - case GLUT_KEY_DOWN: - beta-=2.0; - break; - case GLUT_KEY_UP: - beta+=2.0; - break; - } -} - -/* ARGSUSED1 */ -static void key(unsigned char k, int x, int y) -{ - switch(k) { - case 27: - exit(0); - break; - - case 's': - lightpos[1]-=0.1; - break; - case 'd': - lightpos[1]+=0.1; - break; - case 'e': - lightpos[0]-=0.1; - break; - case 'x': - lightpos[0]+=0.1; - break; - case 'w': - lightpos[2]-=0.1; - break; - case 'r': - lightpos[2]+=0.1; - break; - - case 'j': - objpos[1]-=0.1; - break; - case 'k': - objpos[1]+=0.1; - break; - case 'i': - objpos[0]-=0.1; - break; - case 'm': - objpos[0]+=0.1; - break; - case 'u': - objpos[2]-=0.1; - break; - case 'o': - objpos[2]+=0.1; - break; - - case 'a': - v+=0.005; - break; - case 'z': - v-=0.005; - break; - - case 'g': - joyactive=(!joyactive); - break; - case 'h': - help=(!help); - break; - case 'f': - fog=(!fog); - break; - - case '1': - showcheckmap=(!showcheckmap); - break; - case '2': - showreflectmap=(!showreflectmap); - break; - - case 'b': - if(bfcull) { - glDisable(GL_CULL_FACE); - bfcull=0; - } else { - glEnable(GL_CULL_FACE); - bfcull=1; - } - break; - case 'p': - if(poutline) { - glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); - poutline=0; - } else { - glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); - poutline=1; - } - break; - } -} - -static void reshape(int w, int h) -{ - WIDTH=w; - HEIGHT=h; - glViewport(0,0,w,h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0,w/(float)h,0.8,40.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -static void printstring(void *font, char *string) -{ - int len,i; - - len=(int)strlen(string); - for(i=0;i0.0)) - return GL_FALSE; - - d=sqrt(d); - - t=b-d; - - if(t10)) - return GL_FALSE; - - y=(int)((ppos[1]+BASESIZE/2)*(10.0f/BASESIZE)); - if((y<0) || (y>10)) - return GL_FALSE; - - r=255.0f; - if(y & 1) { - if(x & 1) - g=255.0f; - else - g=0.0f; - } else { - if(x & 1) - g=0.0f; - else - g=255.0f; - } - b=0.0f; - - vsub(ldir,lightpos,ppos); - vnormalize(ldir,ldir); - - if(seelight(ppos,ldir)) { - c[0]=r*0.05f; - c[1]=g*0.05f; - c[2]=b*0.05f; - - return GL_TRUE; - } - - dfact=dprod(ldir,norm); - if(dfact<0.0f) - dfact=0.0f; - - vsub(vdir,obs,ppos); - vnormalize(vdir,vdir); - h[0]=0.5f*(vdir[0]+ldir[0]); - h[1]=0.5f*(vdir[1]+ldir[1]); - h[2]=0.5f*(vdir[2]+ldir[2]); - kfact=dprod(h,norm); - kfact=kfact*kfact*kfact*kfact*kfact*kfact*kfact*7.0f*255.0f; - - r=r*dfact+kfact; - g=g*dfact+kfact; - b=b*dfact+kfact; - - c[0]=clamp255(r); - c[1]=clamp255(g); - c[2]=clamp255(b); - - return GL_TRUE; -} - -static void updatecheckmap(int slot) -{ - float c[3],ppos[3]; - int x,y; - - glBindTexture(GL_TEXTURE_2D,checkid); - - ppos[2]=0.0f; - for(y=slot*TEX_CHECK_SLOT_SIZE;y<(slot+1)*TEX_CHECK_SLOT_SIZE;y++) { - ppos[1]=(y/(float)TEX_CHECK_HEIGHT)*BASESIZE-BASESIZE/2; - - for(x=0;xEPSILON) { - rdir[0]=rf*norm[0]-vdir[0]; - rdir[1]=rf*norm[1]-vdir[1]; - rdir[2]=rf*norm[2]-vdir[2]; - - t=-objpos[2]/rdir[2]; - - if(t>EPSILON) { - planepos[0]=objpos[0]+t*rdir[0]; - planepos[1]=objpos[1]+t*rdir[1]; - planepos[2]=0.0f; - - if(!colorcheckmap(planepos,rcol)) - rcol[0]=rcol[1]=rcol[2]=0.0f; - } else - rcol[0]=rcol[1]=rcol[2]=0.0f; - } else - rcol[0]=rcol[1]=rcol[2]=0.0f; - - dfact=0.1f*dprod(ldir,norm); - - if(dfact<0.0f) { - dfact=0.0f; - kfact=0.0f; - } else { - h[0]=0.5f*(vdir[0]+ldir[0]); - h[1]=0.5f*(vdir[1]+ldir[1]); - h[2]=0.5f*(vdir[2]+ldir[2]); - kfact=dprod(h,norm); - kfact*=kfact; - kfact*=kfact; - kfact*=kfact; - kfact*=kfact; - kfact*=10.0f; - } - - r=dfact+kfact; - g=dfact+kfact; - b=dfact+kfact; - - r*=255.0f; - g*=255.0f; - b*=255.0f; - - r+=rcol[0]; - g+=rcol[1]; - b+=rcol[2]; - - r=clamp255(r); - g=clamp255(g); - b=clamp255(b); - - reflectmap[y][x][0]=(GLubyte)r; - reflectmap[y][x][1]=(GLubyte)g; - reflectmap[y][x][2]=(GLubyte)b; - } - - glTexSubImage2D(GL_TEXTURE_2D,0,0,slot*TEX_REFLECT_SLOT_SIZE,TEX_REFLECT_WIDTH, - TEX_REFLECT_SLOT_SIZE,GL_RGB,GL_UNSIGNED_BYTE, - &reflectmap[slot*TEX_REFLECT_SLOT_SIZE][0][0]); -} - -static void drawbase(void) -{ - glColor3f(0.0,0.0,0.0); - glBindTexture(GL_TEXTURE_2D,checkid); - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE); - - glBegin(GL_QUADS); - glTexCoord2f(0.0f,0.0f); - glVertex3f(-BASESIZE/2.0f,-BASESIZE/2.0f,0.0f); - - glTexCoord2f(1.0f,0.0f); - glVertex3f(BASESIZE/2.0f,-BASESIZE/2.0f,0.0f); - - glTexCoord2f(1.0f,1.0f); - glVertex3f(BASESIZE/2.0f,BASESIZE/2.0f,0.0f); - - glTexCoord2f(0.0f,1.0f); - glVertex3f(-BASESIZE/2.0f,BASESIZE/2.0f,0.0f); - - glEnd(); -} - -static void drawobj(void) -{ - glColor3f(0.0,0.0,0.0); - glBindTexture(GL_TEXTURE_2D,reflectid); - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE); - - glPushMatrix(); - glTranslatef(objpos[0],objpos[1],objpos[2]); - glCallList(objdlist); - glPopMatrix(); -} - -static void dojoy(void) -{ -#ifdef _WIN32 - static UINT max[2]={0,0}; - static UINT min[2]={0xffffffff,0xffffffff},center[2]; - MMRESULT res; - JOYINFO joy; - - res=joyGetPos(JOYSTICKID1,&joy); - - if(res==JOYERR_NOERROR) { - joyavailable=1; - - if(max[0]joy.wXpos) - min[0]=joy.wXpos; - center[0]=(max[0]+min[0])/2; - - if(max[1]joy.wYpos) - min[1]=joy.wYpos; - center[1]=(max[1]+min[1])/2; - - if(joyactive) { - if(fabs(center[0]-(float)joy.wXpos)>0.1*(max[0]-min[0])) - alpha-=2.5*(center[0]-(float)joy.wXpos)/(max[0]-min[0]); - if(fabs(center[1]-(float)joy.wYpos)>0.1*(max[1]-min[1])) - beta+=2.5*(center[1]-(float)joy.wYpos)/(max[1]-min[1]); - - if(joy.wButtons & JOY_BUTTON1) - v+=0.005; - if(joy.wButtons & JOY_BUTTON2) - v-=0.005; - } - } else - joyavailable=0; -#endif -} - -static void updatemaps(void) -{ - updatecheckmap(checkmap_currentslot); - checkmap_currentslot=(checkmap_currentslot+1) % TEX_CHECK_NUMSLOT; - - updatereflectmap(reflectmap_currentslot); - reflectmap_currentslot=(reflectmap_currentslot+1) % TEX_REFLECT_NUMSLOT; -} - -static void draw(void) -{ - static int count=0; - static char frbuf[80]; - float fr; - - dojoy(); - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - if(fog) - glEnable(GL_FOG); - else - glDisable(GL_FOG); - - glPushMatrix(); - calcposobs(); - - gluLookAt(obs[0],obs[1],obs[2], - obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], - 0.0,0.0,1.0); - - drawbase(); - drawobj(); - - glColor3f(1.0,1.0,1.0); - glDisable(GL_TEXTURE_2D); - - glPushMatrix(); - glTranslatef(lightpos[0],lightpos[1],lightpos[2]); - glCallList(lightdlist); - glPopMatrix(); - - glPopMatrix(); - - if((count % FRAME)==0) { - fr=gettime(); - sprintf(frbuf,"Frame rate: %f",FRAME/fr); - } - - glDisable(GL_DEPTH_TEST); - glDisable(GL_FOG); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(-0.5,639.5,-0.5,479.5,-1.0,1.0); - glMatrixMode(GL_MODELVIEW); - - glColor3f(0.0f,0.3f,1.0f); - - if(showcheckmap) { - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D,checkid); - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE); - - glBegin(GL_QUADS); - glTexCoord2f(1.0f,0.0f); - glVertex2i(10,30); - glTexCoord2f(1.0f,1.0f); - glVertex2i(10+90,30); - glTexCoord2f(0.0f,1.0f); - glVertex2i(10+90,30+90); - glTexCoord2f(0.0f,0.0f); - glVertex2i(10,30+90); - glEnd(); - - glDisable(GL_TEXTURE_2D); - glBegin(GL_LINE_LOOP); - glVertex2i(10,30); - glVertex2i(10+90,30); - glVertex2i(10+90,30+90); - glVertex2i(10,30+90); - glEnd(); - glRasterPos2i(105,65); - printstring(GLUT_BITMAP_HELVETICA_18,"Plane Texture Map"); - } - - if(showreflectmap) { - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D,reflectid); - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE); - - glBegin(GL_QUADS); - glTexCoord2f(1.0f,0.0f); - glVertex2i(540,30); - glTexCoord2f(1.0f,1.0f); - glVertex2i(540+90,30); - glTexCoord2f(0.0f,1.0f); - glVertex2i(540+90,30+90); - glTexCoord2f(0.0f,0.0f); - glVertex2i(540,30+90); - glEnd(); - - glDisable(GL_TEXTURE_2D); - glBegin(GL_LINE_LOOP); - glVertex2i(540,30); - glVertex2i(540+90,30); - glVertex2i(540+90,30+90); - glVertex2i(540,30+90); - glEnd(); - glRasterPos2i(360,65); - printstring(GLUT_BITMAP_HELVETICA_18,"Sphere Texture Map"); - } - - glDisable(GL_TEXTURE_2D); - - glRasterPos2i(10,10); - printstring(GLUT_BITMAP_HELVETICA_18,frbuf); - glRasterPos2i(360,470); - printstring(GLUT_BITMAP_HELVETICA_10,"Ray V1.0 Written by David Bucciarelli (tech.hmw@plus.it)"); - - if(help) - printhelp(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - updatemaps(); - - glutSwapBuffers(); - - count++; -} - -static void inittextures(void) -{ - int y; - - glGenTextures(1,&checkid); - glBindTexture(GL_TEXTURE_2D,checkid); - - for(y=0;y -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ray - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ray.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ray.mak" CFG="ray - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ray - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ray - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ray - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ray - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "ray - Win32 Release" -# Name "ray - Win32 Debug" -# Begin Source File - -SOURCE=.\ray.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/s128.rgb b/lib/glut-3.7.6/progs/bucciarelli/s128.rgb deleted file mode 100644 index 79f5c1d98c6b614e6dc20863fe782bcd0ddd92df..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/bucciarelli/s128.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/bucciarelli/shadow.c b/lib/glut-3.7.6/progs/bucciarelli/shadow.c deleted file mode 100644 index e7a2a91426ba2d711cc10f72ff0d8611c93acb79..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/shadow.c +++ /dev/null @@ -1,117 +0,0 @@ -/** -(c) Copyright 1993, Silicon Graphics, Inc. - -ALL RIGHTS RESERVED - -Permission to use, copy, modify, and distribute this software -for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that -both the copyright notice and this permission notice appear in -supporting documentation, and that the name of Silicon -Graphics, Inc. not be used in advertising or publicity -pertaining to distribution of the software without specific, -written prior permission. - -THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU -"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR -OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF -MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO -EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE -ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, -INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, -SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR -NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY -OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR -PERFORMANCE OF THIS SOFTWARE. - -US Government Users Restricted Rights - -Use, duplication, or disclosure by the Government is subject to -restrictions set forth in FAR 52.227.19(c)(2) or subparagraph -(c)(1)(ii) of the Rights in Technical Data and Computer -Software clause at DFARS 252.227-7013 and/or in similar or -successor clauses in the FAR or the DOD or NASA FAR -Supplement. Unpublished-- rights reserved under the copyright -laws of the United States. Contractor/manufacturer is Silicon -Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA -94039-7311. - -OpenGL(TM) is a trademark of Silicon Graphics, Inc. -*/ - -/* Taken from the projshadow.c - by Tom McReynolds, SGI */ - -/* Modified by David Bucciarelli */ - -/* Rendering shadows using projective shadows. */ - -#include - -enum { - X, Y, Z, W -}; -enum { - A, B, C, D -}; - -/* create a matrix that will project the desired shadow */ -void -shadowmatrix(GLfloat shadowMat[4][4], - GLfloat groundplane[4], - GLfloat lightpos[4]) -{ - GLfloat dot; - - /* find dot product between light position vector and ground plane normal */ - dot = groundplane[X] * lightpos[X] + - groundplane[Y] * lightpos[Y] + - groundplane[Z] * lightpos[Z] + - groundplane[W] * lightpos[W]; - - shadowMat[0][0] = dot - lightpos[X] * groundplane[X]; - shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y]; - shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z]; - shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W]; - - shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X]; - shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y]; - shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z]; - shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W]; - - shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X]; - shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y]; - shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z]; - shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W]; - - shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X]; - shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y]; - shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z]; - shadowMat[3][3] = dot - lightpos[W] * groundplane[W]; - -} - -/* find the plane equation given 3 points */ -void -findplane(GLfloat plane[4], - GLfloat v0[3], GLfloat v1[3], GLfloat v2[3]) -{ - GLfloat vec0[3], vec1[3]; - - /* need 2 vectors to find cross product */ - vec0[X] = v1[X] - v0[X]; - vec0[Y] = v1[Y] - v0[Y]; - vec0[Z] = v1[Z] - v0[Z]; - - vec1[X] = v2[X] - v0[X]; - vec1[Y] = v2[Y] - v0[Y]; - vec1[Z] = v2[Z] - v0[Z]; - - /* find cross product to get A, B, and C of plane equation */ - plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y]; - plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]); - plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X]; - - plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]); -} diff --git a/lib/glut-3.7.6/progs/bucciarelli/sources.c b/lib/glut-3.7.6/progs/bucciarelli/sources.c deleted file mode 100644 index 0da4ae355676ade0979c4b64c150cba8ad60b528..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/sources.c +++ /dev/null @@ -1,85 +0,0 @@ - -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -#endif - -/* Object: skin_13 */ - -int striplength_skin_13[]={ -10,7,3,5,5,4,4,4,4,5,3,4,5,4,4,4,4,4,4,6, -6,3,6,3,3,3,3,0}; - -float stripdata_skin_13[]={ -0.415686,0.415686,0.415686,1.000000,0.000000,1.500000,2.000000,4.000000,0.000000,0.341176,0.341176,0.341176,1.000000,-0.500000,1.500000,4.000000,4.000000,0.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000,0.435294,0.435294,0.435294,1.000000,-0.500000,1.000000,4.000000,4.000000,2.000000,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000,0.450980,0.450980,0.450980,1.000000,-0.500000,0.500000,4.000000,4.000000,4.000000,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000,0.388235,0.388235,0.388235,1.000000,-0.500000,0.000000,4.000000,4.000000,6.000000,0.356863,0.356863,0.356863,1.000000,0.000000,-0.500000,2.000000,4.000000,8.000000,0.333333,0.333333,0.333333,1.000000,-0.500000,-0.500000,4.000000,4.000000,8.000000, -0.435294,0.435294,0.435294,1.000000,1.500000,1.000000,-4.000000,4.000000,2.000000,0.415686,0.415686,0.415686,1.000000,1.000000,1.500000,-2.000000,4.000000,0.000000,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000,0.450980,0.450980,0.450980,1.000000,0.500000,1.500000,0.000000,4.000000,0.000000,0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000,0.415686,0.415686,0.415686,1.000000,0.000000,1.500000,2.000000,4.000000,0.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000, -0.435294,0.435294,0.435294,1.000000,1.500000,1.000000,-4.000000,4.000000,2.000000,0.341176,0.341176,0.341176,1.000000,1.500000,1.500000,-4.000000,4.000000,0.000000,0.415686,0.415686,0.415686,1.000000,1.000000,1.500000,-2.000000,4.000000,0.000000, -0.356863,0.356863,0.356863,1.000000,0.000000,-0.500000,2.000000,4.000000,8.000000,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000,0.415686,0.415686,0.415686,1.000000,0.395020,-0.133318,0.420032,4.000000,6.533272,0.423529,0.423529,0.423529,1.000000,0.388550,-0.103582,0.445932,4.000000,6.414327, -0.423529,0.423529,0.423529,1.000000,0.388550,-0.103582,0.445932,4.000000,6.414327,0.427451,0.427451,0.427451,1.000000,0.383423,-0.069344,0.466541,4.000000,6.277375,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000,0.435294,0.435294,0.435294,1.000000,0.380371,-0.034595,0.478689,4.000000,6.138380,0.439216,0.439216,0.439216,1.000000,0.379272,0.000000,0.482673,4.000000,6.000000, -0.407843,0.407843,0.407843,1.000000,0.414673,-0.191394,0.341301,4.000000,6.765576,0.411765,0.411765,0.411765,1.000000,0.403687,-0.162957,0.385368,4.000000,6.651829,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.415686,0.415686,0.415686,1.000000,0.395020,-0.133318,0.420032,4.000000,6.533272, -0.400000,0.400000,0.400000,1.000000,0.438232,-0.232438,0.247284,4.000000,6.929754,0.403922,0.403922,0.403922,1.000000,0.425171,-0.212276,0.299425,4.000000,6.849104,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.407843,0.407843,0.407843,1.000000,0.414673,-0.191394,0.341301,4.000000,6.765576, -0.396078,0.396078,0.396078,1.000000,0.467285,-0.260554,0.130636,4.000000,7.042214,0.400000,0.400000,0.400000,1.000000,0.453857,-0.250068,0.184711,4.000000,7.000273,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.400000,0.400000,0.400000,1.000000,0.438232,-0.232438,0.247284,4.000000,6.929754, -0.396078,0.396078,0.396078,1.000000,0.500000,-0.270672,0.000000,4.000000,7.082688,0.396078,0.396078,0.396078,1.000000,0.482788,-0.267902,0.068730,4.000000,7.071609,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000,0.396078,0.396078,0.396078,1.000000,0.467285,-0.260554,0.130636,4.000000,7.042214, -0.439216,0.439216,0.439216,1.000000,0.379272,0.000000,0.482673,4.000000,6.000000,0.474510,0.474510,0.474510,1.000000,0.379272,0.180448,0.482673,4.000000,5.278208,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000,0.513726,0.513726,0.513726,1.000000,0.379272,0.360896,0.482673,4.000000,4.556417,0.545098,0.545098,0.545098,1.000000,0.379272,0.500000,0.482673,4.000000,4.000000, -0.545098,0.545098,0.545098,1.000000,0.379272,0.500000,0.482673,4.000000,4.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000, -0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000,0.545098,0.545098,0.545098,1.000000,0.000000,1.000000,2.000000,4.000000,2.000000,0.552941,0.552941,0.552941,1.000000,0.379272,0.541344,0.482673,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,0.379272,0.500000,0.482673,4.000000,4.000000, -0.552941,0.552941,0.552941,1.000000,0.379272,0.541344,0.482673,4.000000,3.834625,0.556863,0.556863,0.556863,1.000000,0.459717,0.541344,0.160891,4.000000,3.834625,0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000,0.556863,0.556863,0.556863,1.000000,0.500000,0.541344,0.000000,4.000000,3.834625,0.556863,0.556863,0.556863,1.000000,0.540283,0.541344,-0.160891,4.000000,3.834625, -0.396078,0.396078,0.396078,1.000000,0.517212,-0.267902,-0.068730,4.000000,7.071609,0.396078,0.396078,0.396078,1.000000,0.500000,-0.270672,0.000000,4.000000,7.082688,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.364706,0.364706,0.364706,1.000000,0.500000,-0.500000,0.000000,4.000000,8.000000, -0.400000,0.400000,0.400000,1.000000,0.546143,-0.250068,-0.184711,4.000000,7.000273,0.396078,0.396078,0.396078,1.000000,0.532715,-0.260554,-0.130636,4.000000,7.042214,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.396078,0.396078,0.396078,1.000000,0.517212,-0.267902,-0.068730,4.000000,7.071609, -0.403922,0.403922,0.403922,1.000000,0.574829,-0.212276,-0.299425,4.000000,6.849104,0.400000,0.400000,0.400000,1.000000,0.561768,-0.232438,-0.247284,4.000000,6.929754,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.400000,0.400000,0.400000,1.000000,0.546143,-0.250068,-0.184711,4.000000,7.000273, -0.411765,0.411765,0.411765,1.000000,0.596313,-0.162957,-0.385368,4.000000,6.651829,0.407843,0.407843,0.407843,1.000000,0.585327,-0.191394,-0.341301,4.000000,6.765576,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.403922,0.403922,0.403922,1.000000,0.574829,-0.212276,-0.299425,4.000000,6.849104, -0.423529,0.423529,0.423529,1.000000,0.611450,-0.103582,-0.445931,4.000000,6.414327,0.415686,0.415686,0.415686,1.000000,0.604980,-0.133318,-0.420033,4.000000,6.533272,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.411765,0.411765,0.411765,1.000000,0.596313,-0.162957,-0.385368,4.000000,6.651829, -0.435294,0.435294,0.435294,1.000000,0.619629,-0.034595,-0.478689,4.000000,6.138380,0.427451,0.427451,0.427451,1.000000,0.616577,-0.069344,-0.466541,4.000000,6.277375,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.423529,0.423529,0.423529,1.000000,0.611450,-0.103582,-0.445931,4.000000,6.414327, -0.513726,0.513726,0.513726,1.000000,0.620728,0.360896,-0.482673,4.000000,4.556417,0.474510,0.474510,0.474510,1.000000,0.620728,0.180448,-0.482673,4.000000,5.278208,0.427451,0.427451,0.427451,1.000000,1.000000,0.000000,-2.000000,4.000000,6.000000,0.439216,0.439216,0.439216,1.000000,0.620728,0.000000,-0.482673,4.000000,6.000000,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000,0.435294,0.435294,0.435294,1.000000,0.619629,-0.034595,-0.478689,4.000000,6.138380, -0.333333,0.333333,0.333333,1.000000,1.500000,-0.500000,-4.000000,4.000000,8.000000,0.388235,0.388235,0.388235,1.000000,1.500000,0.000000,-4.000000,4.000000,6.000000,0.427451,0.427451,0.427451,1.000000,1.000000,0.000000,-2.000000,4.000000,6.000000,0.517647,0.517647,0.517647,1.000000,1.000000,0.500000,-2.000000,4.000000,4.000000,0.513726,0.513726,0.513726,1.000000,0.620728,0.360896,-0.482673,4.000000,4.556417,0.545098,0.545098,0.545098,1.000000,0.620728,0.500000,-0.482673,4.000000,4.000000, -0.333333,0.333333,0.333333,1.000000,1.500000,-0.500000,-4.000000,4.000000,8.000000,0.427451,0.427451,0.427451,1.000000,1.000000,0.000000,-2.000000,4.000000,6.000000,0.356863,0.356863,0.356863,1.000000,1.000000,-0.500000,-2.000000,4.000000,8.000000, -0.556863,0.556863,0.556863,1.000000,0.540283,0.541344,-0.160891,4.000000,3.834625,0.552941,0.552941,0.552941,1.000000,0.620728,0.541344,-0.482673,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000,0.517647,0.517647,0.517647,1.000000,1.000000,0.500000,-2.000000,4.000000,4.000000,0.450980,0.450980,0.450980,1.000000,1.500000,0.500000,-4.000000,4.000000,4.000000,0.388235,0.388235,0.388235,1.000000,1.500000,0.000000,-4.000000,4.000000,6.000000, -0.517647,0.517647,0.517647,1.000000,1.000000,0.500000,-2.000000,4.000000,4.000000,0.552941,0.552941,0.552941,1.000000,0.620728,0.541344,-0.482673,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,0.620728,0.500000,-0.482673,4.000000,4.000000, -0.450980,0.450980,0.450980,1.000000,1.500000,0.500000,-4.000000,4.000000,4.000000,0.435294,0.435294,0.435294,1.000000,1.500000,1.000000,-4.000000,4.000000,2.000000,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000, -0.439216,0.439216,0.439216,1.000000,0.379272,0.000000,0.482673,4.000000,6.000000,0.517647,0.517647,0.517647,1.000000,0.000000,0.500000,2.000000,4.000000,4.000000,0.427451,0.427451,0.427451,1.000000,0.000000,0.000000,2.000000,4.000000,6.000000, -0.556863,0.556863,0.556863,1.000000,0.540283,0.541344,-0.160891,4.000000,3.834625,0.545098,0.545098,0.545098,1.000000,1.000000,1.000000,-2.000000,4.000000,2.000000,0.600000,0.600000,0.600000,1.000000,0.500000,1.000000,0.000000,4.000000,2.000000 - -}; - - -/* Object: skin_12 */ - -int striplength_skin_12[]={ -12,12,12,12,12,0}; - -float stripdata_skin_12[]={ -0.498039,0.498039,0.498039,1.000000,-0.099976,1.500000,-2.400000,-4.000000,-0.000002,0.337255,0.337255,0.337255,1.000000,-0.500000,1.500000,-4.000000,-4.000000,-0.000002,0.568627,0.568627,0.568627,1.000000,-0.099976,1.100000,-2.400000,-4.000000,1.599999,0.341176,0.341176,0.341176,1.000000,-0.500000,1.100000,-4.000000,-4.000000,1.599999,0.498039,0.498039,0.498039,1.000000,-0.099976,0.700000,-2.400000,-4.000000,3.200000,0.325490,0.325490,0.325490,1.000000,-0.500000,0.700000,-4.000000,-4.000000,3.199999,0.352941,0.352941,0.352941,1.000000,-0.099976,0.300000,-2.400000,-4.000000,4.800000,0.282353,0.282353,0.282353,1.000000,-0.500000,0.300000,-4.000000,-4.000000,4.800000,0.282353,0.282353,0.282353,1.000000,-0.099976,-0.100000,-2.400000,-4.000000,6.400001,0.254902,0.254902,0.254902,1.000000,-0.500000,-0.100000,-4.000000,-4.000000,6.400000,0.239216,0.239216,0.239216,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,8.000000,0.227451,0.227451,0.227451,1.000000,-0.500000,-0.500000,-4.000000,-4.000000,8.000000, -0.239216,0.239216,0.239216,1.000000,1.099976,-0.500000,2.400001,-4.000000,8.000000,0.227451,0.227451,0.227451,1.000000,1.500000,-0.500000,4.000002,-4.000000,8.000000,0.282353,0.282353,0.282353,1.000000,1.099976,-0.100000,2.400001,-4.000000,6.400001,0.254902,0.254902,0.254902,1.000000,1.500000,-0.100000,4.000002,-4.000000,6.400001,0.352941,0.352941,0.352941,1.000000,1.099976,0.300000,2.400002,-4.000000,4.800001,0.282353,0.282353,0.282353,1.000000,1.500000,0.300000,4.000002,-4.000000,4.800001,0.498039,0.498039,0.498039,1.000000,1.099976,0.700000,2.400002,-4.000000,3.200000,0.321569,0.321569,0.321569,1.000000,1.500000,0.700000,4.000003,-4.000000,3.200000,0.568627,0.568627,0.568627,1.000000,1.099976,1.100000,2.400002,-4.000000,1.599999,0.341176,0.341176,0.341176,1.000000,1.500000,1.100000,4.000003,-4.000000,1.599999,0.494118,0.494118,0.494118,1.000000,1.099976,1.500000,2.400003,-4.000000,-0.000002,0.337255,0.337255,0.337255,1.000000,1.500000,1.500000,4.000004,-4.000000,-0.000002, -0.639216,0.639216,0.639216,1.000000,0.300049,1.500000,-0.799999,-4.000000,-0.000002,0.498039,0.498039,0.498039,1.000000,-0.099976,1.500000,-2.400000,-4.000000,-0.000002,0.858824,0.858824,0.858824,1.000000,0.300049,1.100000,-0.799999,-4.000000,1.599999,0.568627,0.568627,0.568627,1.000000,-0.099976,1.100000,-2.400000,-4.000000,1.599999,0.686275,0.686275,0.686275,1.000000,0.300049,0.700000,-0.799999,-4.000000,3.200000,0.498039,0.498039,0.498039,1.000000,-0.099976,0.700000,-2.400000,-4.000000,3.200000,0.419608,0.419608,0.419608,1.000000,0.300049,0.300000,-0.800000,-4.000000,4.800000,0.352941,0.352941,0.352941,1.000000,-0.099976,0.300000,-2.400000,-4.000000,4.800000,0.298039,0.298039,0.298039,1.000000,0.300049,-0.100000,-0.800000,-4.000000,6.400001,0.282353,0.282353,0.282353,1.000000,-0.099976,-0.100000,-2.400000,-4.000000,6.400001,0.247059,0.247059,0.247059,1.000000,0.300049,-0.500000,-0.800000,-4.000000,8.000000,0.239216,0.239216,0.239216,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,8.000000, -0.639216,0.639216,0.639216,1.000000,0.699951,1.500000,0.800002,-4.000000,-0.000002,0.639216,0.639216,0.639216,1.000000,0.300049,1.500000,-0.799999,-4.000000,-0.000002,0.858824,0.858824,0.858824,1.000000,0.699951,1.100000,0.800001,-4.000000,1.599999,0.858824,0.858824,0.858824,1.000000,0.300049,1.100000,-0.799999,-4.000000,1.599999,0.686275,0.686275,0.686275,1.000000,0.699951,0.700000,0.800001,-4.000000,3.200000,0.686275,0.686275,0.686275,1.000000,0.300049,0.700000,-0.799999,-4.000000,3.200000,0.419608,0.419608,0.419608,1.000000,0.699951,0.300000,0.800001,-4.000000,4.800001,0.419608,0.419608,0.419608,1.000000,0.300049,0.300000,-0.800000,-4.000000,4.800000,0.298039,0.298039,0.298039,1.000000,0.699951,-0.100000,0.800001,-4.000000,6.400001,0.298039,0.298039,0.298039,1.000000,0.300049,-0.100000,-0.800000,-4.000000,6.400001,0.247059,0.247059,0.247059,1.000000,0.699951,-0.500000,0.800000,-4.000000,8.000000,0.247059,0.247059,0.247059,1.000000,0.300049,-0.500000,-0.800000,-4.000000,8.000000, -0.494118,0.494118,0.494118,1.000000,1.099976,1.500000,2.400003,-4.000000,-0.000002,0.639216,0.639216,0.639216,1.000000,0.699951,1.500000,0.800002,-4.000000,-0.000002,0.568627,0.568627,0.568627,1.000000,1.099976,1.100000,2.400002,-4.000000,1.599999,0.858824,0.858824,0.858824,1.000000,0.699951,1.100000,0.800001,-4.000000,1.599999,0.498039,0.498039,0.498039,1.000000,1.099976,0.700000,2.400002,-4.000000,3.200000,0.686275,0.686275,0.686275,1.000000,0.699951,0.700000,0.800001,-4.000000,3.200000,0.352941,0.352941,0.352941,1.000000,1.099976,0.300000,2.400002,-4.000000,4.800001,0.419608,0.419608,0.419608,1.000000,0.699951,0.300000,0.800001,-4.000000,4.800001,0.282353,0.282353,0.282353,1.000000,1.099976,-0.100000,2.400001,-4.000000,6.400001,0.298039,0.298039,0.298039,1.000000,0.699951,-0.100000,0.800001,-4.000000,6.400001,0.239216,0.239216,0.239216,1.000000,1.099976,-0.500000,2.400001,-4.000000,8.000000,0.247059,0.247059,0.247059,1.000000,0.699951,-0.500000,0.800000,-4.000000,8.000000 - -}; - - -/* Object: skin_11 */ - -int striplength_skin_11[]={ -12,12,12,12,12,0}; - -float stripdata_skin_11[]={ -0.145098,0.145098,0.145098,1.000000,-0.099976,1.500000,-2.400000,4.000002,0.000000,0.141176,0.141176,0.141176,1.000000,-0.500000,1.500000,-4.000000,4.000002,0.000000,0.176471,0.176471,0.176471,1.000000,-0.099976,1.100000,-2.400000,2.400001,0.000000,0.145098,0.145098,0.145098,1.000000,-0.500000,1.100000,-4.000000,2.400001,0.000000,0.341176,0.341176,0.341176,1.000000,-0.099976,0.700000,-2.400000,0.800000,0.000000,0.188235,0.188235,0.188235,1.000000,-0.500000,0.700000,-4.000000,0.800000,0.000000,0.450980,0.450980,0.450980,1.000000,-0.099976,0.300000,-2.400000,-0.800000,0.000000,0.247059,0.247059,0.247059,1.000000,-0.500000,0.300000,-4.000000,-0.800000,0.000000,0.439216,0.439216,0.439216,1.000000,-0.099976,-0.100000,-2.400000,-2.400000,0.000000,0.270588,0.270588,0.270588,1.000000,-0.500000,-0.100000,-4.000000,-2.400000,0.000000,0.364706,0.364706,0.364706,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,0.000000,0.258824,0.258824,0.258824,1.000000,-0.500000,-0.500000,-4.000000,-4.000000,0.000000, -0.364706,0.364706,0.364706,1.000000,1.099976,-0.500000,2.400001,-4.000000,0.000000,0.258824,0.258824,0.258824,1.000000,1.500000,-0.500000,4.000002,-4.000000,0.000000,0.439216,0.439216,0.439216,1.000000,1.099976,-0.100000,2.400001,-2.400001,0.000000,0.270588,0.270588,0.270588,1.000000,1.500000,-0.100000,4.000002,-2.400001,0.000000,0.454902,0.454902,0.454902,1.000000,1.099976,0.300000,2.400002,-0.800000,0.000000,0.247059,0.247059,0.247059,1.000000,1.500000,0.300000,4.000002,-0.800000,0.000000,0.341176,0.341176,0.341176,1.000000,1.099976,0.700000,2.400002,0.800000,0.000000,0.184314,0.184314,0.184314,1.000000,1.500000,0.700000,4.000003,0.800000,0.000000,0.176471,0.176471,0.176471,1.000000,1.099976,1.100000,2.400002,2.400001,0.000000,0.145098,0.145098,0.145098,1.000000,1.500000,1.100000,4.000003,2.400001,0.000000,0.145098,0.145098,0.145098,1.000000,1.099976,1.500000,2.400003,4.000003,0.000000,0.141176,0.141176,0.141176,1.000000,1.500000,1.500000,4.000004,4.000002,0.000000, -0.145098,0.145098,0.145098,1.000000,0.300049,1.500000,-0.799999,4.000002,0.000000,0.145098,0.145098,0.145098,1.000000,-0.099976,1.500000,-2.400000,4.000002,0.000000,0.262745,0.262745,0.262745,1.000000,0.300049,1.100000,-0.799999,2.400001,0.000000,0.176471,0.176471,0.176471,1.000000,-0.099976,1.100000,-2.400000,2.400001,0.000000,0.580392,0.580392,0.580392,1.000000,0.300049,0.700000,-0.799999,0.800000,0.000000,0.341176,0.341176,0.341176,1.000000,-0.099976,0.700000,-2.400000,0.800000,0.000000,0.709804,0.709804,0.709804,1.000000,0.300049,0.300000,-0.800000,-0.800000,0.000000,0.450980,0.450980,0.450980,1.000000,-0.099976,0.300000,-2.400000,-0.800000,0.000000,0.627451,0.627451,0.627451,1.000000,0.300049,-0.100000,-0.800000,-2.400001,0.000000,0.439216,0.439216,0.439216,1.000000,-0.099976,-0.100000,-2.400000,-2.400000,0.000000,0.458824,0.458824,0.458824,1.000000,0.300049,-0.500000,-0.800000,-4.000000,0.000000,0.364706,0.364706,0.364706,1.000000,-0.099976,-0.500000,-2.400000,-4.000000,0.000000, -0.145098,0.145098,0.145098,1.000000,0.699951,1.500000,0.800002,4.000002,0.000000,0.145098,0.145098,0.145098,1.000000,0.300049,1.500000,-0.799999,4.000002,0.000000,0.262745,0.262745,0.262745,1.000000,0.699951,1.100000,0.800001,2.400001,0.000000,0.262745,0.262745,0.262745,1.000000,0.300049,1.100000,-0.799999,2.400001,0.000000,0.580392,0.580392,0.580392,1.000000,0.699951,0.700000,0.800001,0.800000,0.000000,0.580392,0.580392,0.580392,1.000000,0.300049,0.700000,-0.799999,0.800000,0.000000,0.713726,0.713726,0.713726,1.000000,0.699951,0.300000,0.800001,-0.800000,0.000000,0.709804,0.709804,0.709804,1.000000,0.300049,0.300000,-0.800000,-0.800000,0.000000,0.631373,0.631373,0.631373,1.000000,0.699951,-0.100000,0.800001,-2.400001,0.000000,0.627451,0.627451,0.627451,1.000000,0.300049,-0.100000,-0.800000,-2.400001,0.000000,0.458824,0.458824,0.458824,1.000000,0.699951,-0.500000,0.800000,-4.000000,0.000000,0.458824,0.458824,0.458824,1.000000,0.300049,-0.500000,-0.800000,-4.000000,0.000000, -0.145098,0.145098,0.145098,1.000000,1.099976,1.500000,2.400003,4.000003,0.000000,0.145098,0.145098,0.145098,1.000000,0.699951,1.500000,0.800002,4.000002,0.000000,0.176471,0.176471,0.176471,1.000000,1.099976,1.100000,2.400002,2.400001,0.000000,0.262745,0.262745,0.262745,1.000000,0.699951,1.100000,0.800001,2.400001,0.000000,0.341176,0.341176,0.341176,1.000000,1.099976,0.700000,2.400002,0.800000,0.000000,0.580392,0.580392,0.580392,1.000000,0.699951,0.700000,0.800001,0.800000,0.000000,0.454902,0.454902,0.454902,1.000000,1.099976,0.300000,2.400002,-0.800000,0.000000,0.713726,0.713726,0.713726,1.000000,0.699951,0.300000,0.800001,-0.800000,0.000000,0.439216,0.439216,0.439216,1.000000,1.099976,-0.100000,2.400001,-2.400001,0.000000,0.631373,0.631373,0.631373,1.000000,0.699951,-0.100000,0.800001,-2.400001,0.000000,0.364706,0.364706,0.364706,1.000000,1.099976,-0.500000,2.400001,-4.000000,0.000000,0.458824,0.458824,0.458824,1.000000,0.699951,-0.500000,0.800000,-4.000000,0.000000 - -}; - - -/* Object: skin_9 */ - -int striplength_skin_9[]={ -18,0}; - -float stripdata_skin_9[]={ -0.384314,0.384314,0.384314,1.000000,-0.500000,1.500000,-4.000000,4.000000,8.000000,0.384314,0.384314,0.384314,1.000000,1.500000,1.500000,4.000000,4.000000,8.000000,0.376471,0.376471,0.376471,1.000000,-0.500000,1.250000,-4.000000,3.695518,9.530733,0.403922,0.403922,0.403922,1.000000,1.500000,1.250000,4.000000,3.695518,9.530733,0.415686,0.415686,0.415686,1.000000,-0.500000,1.000000,-4.000000,2.828427,10.828427,0.431373,0.431373,0.431373,1.000000,1.500000,1.000000,4.000000,2.828427,10.828427,0.435294,0.435294,0.435294,1.000000,-0.500000,0.750000,-4.000000,1.530734,11.695518,0.443137,0.443137,0.443137,1.000000,1.500000,0.750000,4.000000,1.530734,11.695518,0.439216,0.439216,0.439216,1.000000,-0.500000,0.500000,-4.000000,0.000000,12.000000,0.435294,0.435294,0.435294,1.000000,1.500000,0.500000,4.000000,0.000000,12.000000,0.427451,0.427451,0.427451,1.000000,-0.500000,0.250000,-4.000000,-1.530734,11.695518,0.411765,0.411765,0.411765,1.000000,1.500000,0.250000,4.000000,-1.530734,11.695518,0.396078,0.396078,0.396078,1.000000,-0.500000,0.000000,-4.000000,-2.828427,10.828427,0.368627,0.368627,0.368627,1.000000,1.500000,0.000000,4.000000,-2.828427,10.828427,0.341176,0.341176,0.341176,1.000000,-0.500000,-0.250000,-4.000000,-3.695518,9.530733,0.301961,0.301961,0.301961,1.000000,1.500000,-0.250000,4.000000,-3.695518,9.530733,0.294118,0.294118,0.294118,1.000000,-0.500000,-0.500000,-4.000000,-4.000000,8.000000,0.294118,0.294118,0.294118,1.000000,1.500000,-0.500000,4.000000,-4.000000,8.000000 - -}; - - diff --git a/lib/glut-3.7.6/progs/bucciarelli/teapot.c b/lib/glut-3.7.6/progs/bucciarelli/teapot.c deleted file mode 100644 index 02226030ec4aea92585e7044a0d293ad176ac44a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/teapot.c +++ /dev/null @@ -1,594 +0,0 @@ -/* - * This program is under the GNU GPL. - * Use at your own risk. - * - * written by David Bucciarelli (tech.hmw@plus.it) - * Humanware s.r.l. - */ - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#endif - -#include - -#if defined(GL_VERSION_1_1) -/* Routines called directly. */ -#elif defined(GL_EXT_texture_object) && defined(GL_EXT_copy_texture) && defined(GL_EXT_subtexture) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#else -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#endif - -#include "image.h" - -static int WIDTH=640; -static int HEIGHT=480; - -#define FRAME 50 - -#define BASESIZE 10.0 - -#define BASERES 12 -#define TEAPOTRES 3 - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -extern void teapot(GLint, GLdouble, GLenum); -extern void shadowmatrix(GLfloat [4][4], GLfloat [4], GLfloat [4]); -extern void findplane(GLfloat [4], GLfloat [3], GLfloat [3], GLfloat [3]); - -static float obs[3]={5.0,0.0,1.0}; -static float dir[3]; -static float v=0.0; -static float alpha=-90.0; -static float beta=90.0; - -static GLfloat baseshadow[4][4]; -static GLfloat lightpos[4]={2.3,0.0,3.0,1.0}; -static GLfloat lightdir[3]={-2.3,0.0,-3.0}; -static GLfloat lightalpha=0.0; - -static int fog=1; -static int bfcull=1; -static int usetex=1; -static int help=1; -static int joyavailable=0; -static int joyactive=0; - -static GLuint t1id,t2id; -static GLuint teapotdlist,basedlist,lightdlist; - -static float gettime(void) -{ - static clock_t told=0; - clock_t tnew,ris; - - tnew=clock(); - - ris=tnew-told; - - told=tnew; - - return(ris/(float)CLOCKS_PER_SEC); -} - -static void calcposobs(void) -{ - dir[0]=sin(alpha*M_PI/180.0); - dir[1]=cos(alpha*M_PI/180.0)*sin(beta*M_PI/180.0); - dir[2]=cos(beta*M_PI/180.0); - - obs[0]+=v*dir[0]; - obs[1]+=v*dir[1]; - obs[2]+=v*dir[2]; -} - -/* ARGSUSED1 */ -static void special(int k, int x, int y) -{ - switch(k) { - case GLUT_KEY_LEFT: - alpha-=2.0; - break; - case GLUT_KEY_RIGHT: - alpha+=2.0; - break; - case GLUT_KEY_DOWN: - beta-=2.0; - break; - case GLUT_KEY_UP: - beta+=2.0; - break; - } -} - -/* ARGSUSED1 */ -static void key(unsigned char k, int x, int y) -{ - switch(k) { - case 27: - exit(0); - break; - - case 'a': - v+=0.005; - break; - case 'z': - v-=0.005; - break; - - case 'j': - joyactive=(!joyactive); - break; - case 'h': - help=(!help); - break; - case 'f': - fog=(!fog); - break; - case 't': - usetex=(!usetex); - break; - case 'b': - if(bfcull) { - glDisable(GL_CULL_FACE); - bfcull=0; - } else { - glEnable(GL_CULL_FACE); - bfcull=1; - } - break; - } -} - -static void reshape(int w, int h) -{ - WIDTH=w; - HEIGHT=h; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0,w/(float)h,0.2,40.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glViewport(0,0,w,h); -} - -static void printstring(void *font, char *string) -{ - int len,i; - - len=(int)strlen(string); - for(i=0;ijoy.wXpos) - min[0]=joy.wXpos; - center[0]=(max[0]+min[0])/2; - - if(max[1]joy.wYpos) - min[1]=joy.wYpos; - center[1]=(max[1]+min[1])/2; - - if(joyactive) { - if(fabs(center[0]-(float)joy.wXpos)>0.1*(max[0]-min[0])) - alpha-=2.5*(center[0]-(float)joy.wXpos)/(max[0]-min[0]); - if(fabs(center[1]-(float)joy.wYpos)>0.1*(max[1]-min[1])) - beta+=2.5*(center[1]-(float)joy.wYpos)/(max[1]-min[1]); - - if(joy.wButtons & JOY_BUTTON1) - v+=0.005; - if(joy.wButtons & JOY_BUTTON2) - v-=0.005; - } - } else - joyavailable=0; -#endif -} - -static void draw(void) -{ - static int count=0; - static char frbuf[80]; - float fr; - - dojoy(); - - glEnable(GL_DEPTH_TEST); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - if(usetex) - glEnable(GL_TEXTURE_2D); - else - glDisable(GL_TEXTURE_2D); - - if(fog) - glEnable(GL_FOG); - else - glDisable(GL_FOG); - - glEnable(GL_LIGHTING); - - glShadeModel(GL_SMOOTH); - - glPushMatrix(); - calcposobs(); - - gluLookAt(obs[0],obs[1],obs[2], - obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], - 0.0,0.0,1.0); - - drawlight1(); - glCallList(basedlist); - drawteapot(); - drawlight2(); - glPopMatrix(); - - if((count % FRAME)==0) { - fr=gettime(); - sprintf(frbuf,"Frame rate: %f",FRAME/fr); - } - - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); - glDisable(GL_FOG); - glShadeModel(GL_FLAT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-0.5,639.5,-0.5,479.5,-1.0,1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glColor3f(1.0,0.0,0.0); - glRasterPos2i(10,10); - printstring(GLUT_BITMAP_HELVETICA_18,frbuf); - glRasterPos2i(350,470); - printstring(GLUT_BITMAP_HELVETICA_10,"Teapot V1.2 Written by David Bucciarelli (tech.hmw@plus.it)"); - - if(help) - printhelp(); - - reshape(WIDTH,HEIGHT); - - glutSwapBuffers(); - - count++; -} - -static void inittextures(void) -{ - IMAGE *img; - GLenum gluerr; - - glGenTextures(1,&t1id); - glBindTexture(GL_TEXTURE_2D,t1id); - - if(!(img=ImageLoad("tile.rgb"))) { - fprintf(stderr,"Error reading a texture.\n"); - exit(-1); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT,4); - if((gluerr=gluBuild2DMipmaps(GL_TEXTURE_2D, 3, img->sizeX, img->sizeY, GL_RGB, - GL_UNSIGNED_BYTE, (GLvoid *)(img->data)))) { - fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); - exit(-1); - } - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_LINEAR); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); - - glGenTextures(1,&t2id); - glBindTexture(GL_TEXTURE_2D,t2id); - - if(!(img=ImageLoad("bw.rgb"))) { - fprintf(stderr,"Error reading a texture.\n"); - exit(-1); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT,4); - if((gluerr=gluBuild2DMipmaps(GL_TEXTURE_2D, 3, img->sizeX, img->sizeY, GL_RGB, - GL_UNSIGNED_BYTE, (GLvoid *)(img->data)))) { - fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); - exit(-1); - } - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_LINEAR); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); -} - -static void initlight(void) -{ - float lamb[4]={0.2,0.2,0.2,1.0}; - float lspec[4]={1.0,1.0,1.0,1.0}; - - glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,70.0); - glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,20.0); - glLightfv(GL_LIGHT0,GL_AMBIENT,lamb); - glLightfv(GL_LIGHT0,GL_SPECULAR,lspec); - - glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,20.0); - glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,lspec); - - glEnable(GL_LIGHT0); -} - -static void initdlists(void) -{ - GLUquadricObj *lcone,*lbase; - GLfloat plane[4]; - GLfloat v0[3]={0.0,0.0,0.0}; - GLfloat v1[3]={1.0,0.0,0.0}; - GLfloat v2[3]={0.0,1.0,0.0}; - - findplane(plane,v0,v1,v2); - shadowmatrix(baseshadow,plane,lightpos); - - teapotdlist=glGenLists(1); - glNewList(teapotdlist,GL_COMPILE); - glRotatef(90.0,1.0,0.0,0.0); - glCullFace(GL_FRONT); - glBindTexture(GL_TEXTURE_2D,t2id); - teapot(TEAPOTRES,0.6,GL_FILL); - glCullFace(GL_BACK); - glEndList(); - - basedlist=glGenLists(1); - glNewList(basedlist,GL_COMPILE); - drawbase(); - glEndList(); - - lightdlist=glGenLists(1); - glNewList(lightdlist,GL_COMPILE); - glDisable(GL_LIGHTING); - - lcone=gluNewQuadric(); - lbase=gluNewQuadric(); - glRotatef(45.0,0.0,1.0,0.0); - - glColor3f(1.0,1.0,1.0); - glCullFace(GL_FRONT); - gluDisk(lbase,0.0,0.2,12.0,1.0); - glCullFace(GL_BACK); - - glColor3f(0.5,0.0,0.0); - gluCylinder(lcone,0.2,0.0,0.5,12,1); - - gluDeleteQuadric(lcone); - gluDeleteQuadric(lbase); - - glEnable(GL_LIGHTING); - glEndList(); -} - -int main(int ac, char **av) -{ - float fogcolor[4]={0.025,0.025,0.025,1.0}; - - fprintf(stderr,"Teapot V1.2\nWritten by David Bucciarelli (tech.hmw@plus.it)\n"); - - /* - if(!SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS)) { - fprintf(stderr,"Error setting the process class.\n"); - return 0; - } - - if(!SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL)) { - fprintf(stderr,"Error setting the process priority.\n"); - return 0; - } - */ - - glutInitWindowPosition(0,0); - glutInitWindowSize(WIDTH,HEIGHT); - glutInit(&ac,av); - - glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE); - - glutCreateWindow("Teapot"); - - reshape(WIDTH,HEIGHT); - - glShadeModel(GL_SMOOTH); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glEnable(GL_TEXTURE_2D); - - glEnable(GL_FOG); - glFogi(GL_FOG_MODE,GL_EXP2); - glFogfv(GL_FOG_COLOR,fogcolor); - - glFogf(GL_FOG_DENSITY,0.04); -#ifdef FX - glHint(GL_FOG_HINT,GL_NICEST); -#endif - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - - calcposobs(); - - inittextures(); - initlight(); - -#ifndef FX - glDisable(GL_TEXTURE_2D); - usetex=0; -#endif - - initdlists(); - - glClearColor(fogcolor[0],fogcolor[1],fogcolor[2],fogcolor[3]); - - glutReshapeFunc(reshape); - glutDisplayFunc(draw); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutIdleFunc(draw); - - glutMainLoop(); - - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/bucciarelli/teapot.dsp b/lib/glut-3.7.6/progs/bucciarelli/teapot.dsp deleted file mode 100644 index 289963aa7538de1dd83a3a8f42b5cc7df0cf8b1d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/teapot.dsp +++ /dev/null @@ -1,104 +0,0 @@ -# Microsoft Developer Studio Project File - Name="teapot" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=teapot - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "teapot.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "teapot.mak" CFG="teapot - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "teapot - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "teapot - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "teapot - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "teapot - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "teapot - Win32 Release" -# Name "teapot - Win32 Debug" -# Begin Source File - -SOURCE=.\dteapot.c -# End Source File -# Begin Source File - -SOURCE=.\image.c -# End Source File -# Begin Source File - -SOURCE=.\image.h -# End Source File -# Begin Source File - -SOURCE=.\shadow.c -# End Source File -# Begin Source File - -SOURCE=.\teapot.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/terrain.c b/lib/glut-3.7.6/progs/bucciarelli/terrain.c deleted file mode 100644 index 6a60e03906669a244a7cbf14611a7ace022a0829..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/terrain.c +++ /dev/null @@ -1,596 +0,0 @@ -/* - * This program is under the GNU GPL. - * Use at your own risk. - * - * written by David Bucciarelli (tech.hmw@plus.it) - * Humanware s.r.l. - * - * based on a Mikael SkiZoWalker's (MoDEL) / France (Skizo@Hol.Fr) demo - */ - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#endif - -#include - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - -#define heightMnt 450 -#define lenghtXmnt 62 -#define lenghtYmnt 62 - -#define stepXmnt 96.0 -#define stepYmnt 96.0 - -#define WIDTH 640 -#define HEIGHT 480 - -#define TSCALE 4 - -#define FRAME 50 - -#define FOV 85 - -static GLfloat terrain[256*256]; -static GLfloat terraincolor[256*256][3]; - -static int fog=1; -static int bfcull=1; -static int usetex=1; -static int poutline=0; -static int help=1; -static int joyavailable=0; -static int joyactive=0; -static long GlobalMnt=0; - -static int scrwidth=WIDTH; -static int scrheight=HEIGHT; - -#define OBSSTARTX 992.0 -#define OBSSTARTY 103.0 - -static float obs[3]={OBSSTARTX,heightMnt*1.3,OBSSTARTY}; -static float dir[3],v1[2],v2[2]; -static float v=0.0; -static float alpha=75.0; -static float beta=90.0; - -static float gettime(void) -{ - static clock_t told=0; - clock_t tnew,ris; - - tnew=clock(); - - ris=tnew-told; - - told=tnew; - - return(ris/(float)CLOCKS_PER_SEC); -} - -static void calcposobs(void) -{ - float alpha1,alpha2; - - dir[0]=sin(alpha*M_PI/180.0); - dir[2]=cos(alpha*M_PI/180.0)*sin(beta*M_PI/180.0); - dir[1]=cos(beta*M_PI/180.0); - - alpha1=alpha+FOV/2.0; - v1[0]=sin(alpha1*M_PI/180.0); - v1[1]=cos(alpha1*M_PI/180.0); - - alpha2=alpha-FOV/2.0; - v2[0]=sin(alpha2*M_PI/180.0); - v2[1]=cos(alpha2*M_PI/180.0); - - obs[0]+=v*dir[0]; - obs[1]+=v*dir[1]; - obs[2]+=v*dir[2]; - - if(obs[1]<0.0) - obs[1]=0.0; -} - -static void reshape( int width, int height ) -{ - scrwidth=width; - scrheight=height; - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(50.0, ((GLfloat) width/(GLfloat)height), lenghtXmnt*stepYmnt*0.01, - lenghtXmnt*stepYmnt*0.7); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -int clipstrip(float y, float *start, float *end) -{ - float x1,x2,t1,t2,tmp; - - if(v1[1]==0.0) { - t1=0.0; - x1=-HUGE_VAL; - } else { - t1=y/v1[1]; - x1=t1*v1[0]; - } - - if(v2[1]==0.0) { - t2=0.0; - x2=HUGE_VAL; - } else { - t2=y/v2[1]; - x2=t2*v2[0]; - } - - if(((x1<-(lenghtXmnt*stepXmnt)/2) && (t2<=0.0)) || - ((t1<=0.0) && (x2>(lenghtXmnt*stepXmnt)/2)) || - ((t1<0.0) && (t2<0.0))) - return 0; - - if((t1==0.0) && (t2==0.0)) { - if((v1[0]<0.0) && (v1[1]>0.0) && (v2[0]<0.0) && (v2[1]<0.0)) { - *start=-(lenghtXmnt*stepXmnt)/2; - *end=stepXmnt; - return 1; - } else { - if((v1[0]>0.0) && (v1[1]<0.0) && (v2[0]>0.0) && (v2[1]>0.0)) { - *start=-stepXmnt; - *end=(lenghtXmnt*stepXmnt)/2; - return 1; - } else - return 0; - } - } else { - if(t2<0.0) { - if(x1<0.0) - x2=-(lenghtXmnt*stepXmnt)/2; - else - x2=(lenghtXmnt*stepXmnt)/2; - } - - if(t1<0.0) { - if(x2<0.0) - x1=-(lenghtXmnt*stepXmnt)/2; - else - x1=(lenghtXmnt*stepXmnt)/2; - } - } - - if(x1>x2) { - tmp=x1; - x1=x2; - x2=tmp; - } - - x1-=stepXmnt; - if(x1<-(lenghtXmnt*stepXmnt)/2) - x1=-(lenghtXmnt*stepXmnt)/2; - - x2+=stepXmnt; - if(x2>(lenghtXmnt*stepXmnt)/2) - x2=(lenghtXmnt*stepXmnt)/2; - - *start=((int)(x1/stepXmnt))*stepXmnt; - *end=((int)(x2/stepXmnt))*stepXmnt; - - return 1; -} - -static void printstring(void *font, char *string) -{ - int len,i; - - len=(int)strlen(string); - for(i=0;ijoy.wXpos) - min[0]=joy.wXpos; - center[0]=(max[0]+min[0])/2; - - if(max[1]joy.wYpos) - min[1]=joy.wYpos; - center[1]=(max[1]+min[1])/2; - - if(joyactive) { - if(fabs(center[0]-(float)joy.wXpos)>0.1*(max[0]-min[0])) - alpha+=2.5*(center[0]-(float)joy.wXpos)/(max[0]-min[0]); - if(fabs(center[1]-(float)joy.wYpos)>0.1*(max[1]-min[1])) - beta+=2.5*(center[1]-(float)joy.wYpos)/(max[1]-min[1]); - - if(joy.wButtons & JOY_BUTTON1) - v+=0.5; - if(joy.wButtons & JOY_BUTTON2) - v-=0.5; - } - } else - joyavailable=0; -#endif -} - -void drawscene(void) -{ - static int count=0; - static char frbuf[80]; - float fr; - - dojoy(); - - glShadeModel(GL_SMOOTH); - glEnable(GL_DEPTH_TEST); - - if(usetex) - glEnable(GL_TEXTURE_2D); - else - glDisable(GL_TEXTURE_2D); - - if(fog) - glEnable(GL_FOG); - else - glDisable(GL_FOG); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - calcposobs(); - gluLookAt(obs[0],obs[1],obs[2], - obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], - 0.0,1.0,0.0); - - drawterrain(); - glPopMatrix(); - - if((count % FRAME)==0) { - fr=gettime(); - sprintf(frbuf,"Frame rate: %.3f",FRAME/fr); - } - - glDisable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); - glDisable(GL_FOG); - glShadeModel(GL_FLAT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-0.5,639.5,-0.5,479.5,-1.0,1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glColor3f(1.0,0.0,0.0); - glRasterPos2i(10,10); - printstring(GLUT_BITMAP_HELVETICA_18,frbuf); - glRasterPos2i(350,470); - printstring(GLUT_BITMAP_HELVETICA_10,"Terrain V1.2 Written by David Bucciarelli (tech.hmw@plus.it)"); - glRasterPos2i(434,457); - printstring(GLUT_BITMAP_HELVETICA_10,"Based on a Mickael's demo (Skizo@Hol.Fr)"); - - if(help) - printhelp(); - - reshape(scrwidth,scrheight); - - glutSwapBuffers(); - - count++; -} - -/* ARGSUSED1 */ -static void key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: - exit(0); - break; - case 'a': - v+=0.5; - break; - case 'z': - v-=0.5; - break; - case 'p': - if(poutline) { - glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); - poutline=0; - } else { - glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); - poutline=1; - } - break; - case 'j': - joyactive=(!joyactive); - break; - case 'h': - help=(!help); - break; - case 'f': - fog=(!fog); - break; - case 't': - usetex=(!usetex); - break; - case 'b': - if(bfcull) { - glDisable(GL_CULL_FACE); - bfcull=0; - } else { - glEnable(GL_CULL_FACE); - bfcull=1; - } - break; - } -} - -/* ARGSUSED1 */ -static void special(int k, int x, int y) -{ - switch(k) { - case GLUT_KEY_LEFT: - alpha+=2.0; - break; - case GLUT_KEY_RIGHT: - alpha-=2.0; - break; - case GLUT_KEY_DOWN: - beta-=2.0; - break; - case GLUT_KEY_UP: - beta+=2.0; - break; - } -} - -static void calccolor(GLfloat height, GLfloat c[3]) -{ - GLfloat color[4][3]={ - {1.0,1.0,1.0}, - {0.0,0.8,0.0}, - {1.0,1.0,0.3}, - {0.0,0.0,0.8} - }; - GLfloat fact; - - height=height*(1.0/255.0); - - if(height>=0.9) { - c[0]=color[0][0]; c[1]=color[0][1]; c[2]=color[0][2]; - return; - } - - if((height<0.9) && (height>=0.7)) { - fact=(height-0.7)*5.0; - c[0]=fact*color[0][0]+(1.0-fact)*color[1][0]; - c[1]=fact*color[0][1]+(1.0-fact)*color[1][1]; - c[2]=fact*color[0][2]+(1.0-fact)*color[1][2]; - return; - } - - if((height<0.7) && (height>=0.6)) { - fact=(height-0.6)*10.0; - c[0]=fact*color[1][0]+(1.0-fact)*color[2][0]; - c[1]=fact*color[1][1]+(1.0-fact)*color[2][1]; - c[2]=fact*color[1][2]+(1.0-fact)*color[2][2]; - return; - } - - if((height<0.6) && (height>=0.5)) { - fact=(height-0.5)*10.0; - c[0]=fact*color[2][0]+(1.0-fact)*color[3][0]; - c[1]=fact*color[2][1]+(1.0-fact)*color[3][1]; - c[2]=fact*color[2][2]+(1.0-fact)*color[3][2]; - return; - } - - c[0]=color[3][0]; c[1]=color[3][1]; c[2]=color[3][2]; -} - -static void loadpic (void) -{ - GLubyte bufferter[256*256],terrainpic[256*256]; - FILE *FilePic; - int i,tmp; - GLenum gluerr; - - if((FilePic=fopen("mnt.bin","r"))==NULL) { - fprintf(stderr,"Error loading Mnt.bin\n"); - exit(-1); - } - fread(bufferter , 256*256 , 1 , FilePic); - fclose(FilePic); - - for (i=0;i<(256*256);i++) { - terrain[i]=(bufferter[i]*(heightMnt/255.0f)); - calccolor((GLfloat)bufferter[i],terraincolor[i]); - tmp=(((int)bufferter[i])+96); - terrainpic[i]=(tmp>255) ? 255 : tmp; - } - - glPixelStorei(GL_UNPACK_ALIGNMENT,1); - if((gluerr=gluBuild2DMipmaps(GL_TEXTURE_2D, 1, 256, 256, GL_LUMINANCE, - GL_UNSIGNED_BYTE, (GLvoid *)(&terrainpic[0])))) { - fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); - exit(-1); - } - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_LINEAR); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); - glEnable(GL_TEXTURE_2D); -} - -static void init( void ) -{ - float fogcolor[4]={0.6,0.7,0.7,1.0}; - - glClearColor(fogcolor[0],fogcolor[1],fogcolor[2],fogcolor[3]); - glClearDepth(1.0); - glDepthFunc(GL_LEQUAL); - glShadeModel(GL_SMOOTH); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - glDisable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - - glEnable(GL_FOG); - glFogi(GL_FOG_MODE,GL_EXP2); - glFogfv(GL_FOG_COLOR,fogcolor); - glFogf(GL_FOG_DENSITY,0.0007); -#ifdef FX - glHint(GL_FOG_HINT,GL_NICEST); -#endif - - reshape(scrwidth,scrheight); -} - - -int main(int ac, char **av) -{ - glutInitWindowPosition(0,0); - glutInitWindowSize(WIDTH,HEIGHT); - glutInit(&ac,av); - - glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE); - - glutCreateWindow("Terrain"); - - loadpic(); - - init(); - -#ifndef FX - glDisable(GL_TEXTURE_2D); - usetex=0; -#endif - - glutReshapeFunc(reshape); - glutDisplayFunc(drawscene); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutIdleFunc(drawscene); - - glutMainLoop(); - - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/bucciarelli/terrain.dsp b/lib/glut-3.7.6/progs/bucciarelli/terrain.dsp deleted file mode 100644 index a4ef5e121d197b18ea60f69713e0cd91520e7b34..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/terrain.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="terrain" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=terrain - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "terrain.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "terrain.mak" CFG="terrain - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "terrain - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "terrain - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "terrain - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "terrain - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "terrain - Win32 Release" -# Name "terrain - Win32 Debug" -# Begin Source File - -SOURCE=.\terrain.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/bucciarelli/tile.rgb b/lib/glut-3.7.6/progs/bucciarelli/tile.rgb deleted file mode 100644 index 8daf5acd11e0d08befd268a9f654b51cc33110e4..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/bucciarelli/tile.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/bucciarelli/tree2.rgb b/lib/glut-3.7.6/progs/bucciarelli/tree2.rgb deleted file mode 100644 index ce2c44dd6637f2659b8e7f54a36c99c95deda504..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/bucciarelli/tree2.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/bucciarelli/tunnel.c b/lib/glut-3.7.6/progs/bucciarelli/tunnel.c deleted file mode 100644 index 3b7c3bcaee855504d852b1de4fb8edd5ab911e7c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/bucciarelli/tunnel.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * This program is under the GNU GPL. - * Use at your own risk. - * - * written by David Bucciarelli (tech.hmw@plus.it) - * Humanware s.r.l. - */ - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#endif - -#include - -#if defined(GL_VERSION_1_1) -/* Routines called directly. */ -#elif defined(GL_EXT_texture_object) && defined(GL_EXT_copy_texture) && defined(GL_EXT_subtexture) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B) -#else -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#define glDeleteTextures(A,B) -#endif - -#include "image.h" - -static int WIDTH=640; -static int HEIGHT=480; - -#define FRAME 50 - -#define NUMBLOC 5 - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -extern int striplength_skin_13[]; -extern float stripdata_skin_13[]; - -extern int striplength_skin_12[]; -extern float stripdata_skin_12[]; - -extern int striplength_skin_11[]; -extern float stripdata_skin_11[]; - -extern int striplength_skin_9[]; -extern float stripdata_skin_9[]; - -static float obs[3]={1000.0,0.0,2.0}; -static float dir[3]; -static float v=0.0; -static float alpha=90.0; -static float beta=90.0; - -static int fog=1; -static int bfcull=1; -static int usetex=1; -static int cstrip=0; -static int help=1; -static int joyavailable=0; -static int joyactive=0; - -static GLuint t1id,t2id; - -static void inittextures(void) -{ - IMAGE *img; - GLenum gluerr; - - glGenTextures(1,&t1id); - glBindTexture(GL_TEXTURE_2D,t1id); - - if(!(img=ImageLoad("tile.rgb"))) { - fprintf(stderr,"Error reading a texture.\n"); - exit(-1); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT,4); - if((gluerr=gluBuild2DMipmaps(GL_TEXTURE_2D, 3, img->sizeX, img->sizeY, GL_RGB, - GL_UNSIGNED_BYTE, (GLvoid *)(img->data)))) { - fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); - exit(-1); - } - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_LINEAR); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); - - glGenTextures(1,&t2id); - glBindTexture(GL_TEXTURE_2D,t2id); - - if(!(img=ImageLoad("bw.rgb"))) { - fprintf(stderr,"Error reading a texture.\n"); - exit(-1); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT,4); - if((gluerr=gluBuild2DMipmaps(GL_TEXTURE_2D, 3, img->sizeX, img->sizeY, GL_RGB, - GL_UNSIGNED_BYTE, (GLvoid *)(img->data)))) { - fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr)); - exit(-1); - } - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); - - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_LINEAR); - glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE); -} - -static void drawobjs(int *l, float *f) -{ - int mend,j; - - if(cstrip) { - float r=0.33,g=0.33,b=0.33; - - for(;(*l)!=0;) { - mend=*l++; - - r+=0.33; - if(r>1.0) { - r=0.33; - g+=0.33; - if(g>1.0) { - g=0.33; - b+=0.33; - if(b>1.0) - b=0.33; - } - } - - glColor3f(r,g,b); - glBegin(GL_TRIANGLE_STRIP); - for(j=0;jjoy.wXpos) - min[0]=joy.wXpos; - center[0]=(max[0]+min[0])/2; - - if(max[1]joy.wYpos) - min[1]=joy.wYpos; - center[1]=(max[1]+min[1])/2; - - if(joyactive) { - if(fabs(center[0]-(float)joy.wXpos)>0.1*(max[0]-min[0])) - alpha-=2.0*(center[0]-(float)joy.wXpos)/(max[0]-min[0]); - if(fabs(center[1]-(float)joy.wYpos)>0.1*(max[1]-min[1])) - beta+=2.0*(center[1]-(float)joy.wYpos)/(max[1]-min[1]); - - if(joy.wButtons & JOY_BUTTON1) - v+=0.01; - if(joy.wButtons & JOY_BUTTON2) - v-=0.01; - } - } else - joyavailable=0; -#endif -} - -static void draw(void) -{ - static int count=0; - static char frbuf[80]; - int i; - float fr,base,offset; - - dojoy(); - - glEnable(GL_DEPTH_TEST); - - /* - if(count & 1) { - glDepthRange(1.0,0.5); - glDepthFunc(GL_GREATER); - } else { - glDepthRange(0.0,0.5); - glDepthFunc(GL_LESS); - } - */ - - /*glClear(GL_COLOR_BUFFER_BIT);*/ - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - if(usetex) - glEnable(GL_TEXTURE_2D); - else - glDisable(GL_TEXTURE_2D); - - if(fog) - glEnable(GL_FOG); - else - glDisable(GL_FOG); - - glShadeModel(GL_SMOOTH); - - glPushMatrix(); - calcposobs(); - gluLookAt(obs[0],obs[1],obs[2], - obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2], - 0.0,0.0,1.0); - - if(dir[0]>0) { - offset=8.0; - base=obs[0]-fmod(obs[0],8.0); - } else { - offset=-8.0; - base=obs[0]+(8.0-fmod(obs[0],8.0)); - } - - glPushMatrix(); - glTranslatef(base-offset/2.0,0.0,0.0); - for(i=0;i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tunnel - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tunnel.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tunnel.mak" CFG="tunnel - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tunnel - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tunnel - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tunnel - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tunnel - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tunnel - Win32 Release" -# Name "tunnel - Win32 Debug" -# Begin Source File - -SOURCE=.\image.c -# End Source File -# Begin Source File - -SOURCE=.\image.h -# End Source File -# Begin Source File - -SOURCE=.\sources.c -# End Source File -# Begin Source File - -SOURCE=.\tunnel.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib.dsw b/lib/glut-3.7.6/progs/contrib.dsw deleted file mode 100644 index 84397c3b798b563b7f7480b05b8214174ffcba97..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib.dsw +++ /dev/null @@ -1,209 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\contrib\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name agv_viewer - End Project Dependency - Begin Project Dependency - Project_Dep_Name fractals - End Project Dependency - Begin Project Dependency - Project_Dep_Name gears - End Project Dependency - Begin Project Dependency - Project_Dep_Name hanoi - End Project Dependency - Begin Project Dependency - Project_Dep_Name hanoi2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name lineblend - End Project Dependency - Begin Project Dependency - Project_Dep_Name moth - End Project Dependency - Begin Project Dependency - Project_Dep_Name noof - End Project Dependency - Begin Project Dependency - Project_Dep_Name rings - End Project Dependency - Begin Project Dependency - Project_Dep_Name steam - End Project Dependency - Begin Project Dependency - Project_Dep_Name text3d - End Project Dependency - Begin Project Dependency - Project_Dep_Name worms - End Project Dependency -}}} - -############################################################################### - -Project: "agv_viewer"=".\contrib\agv_viewer.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "fractals"=".\contrib\fractals.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "gears"=".\contrib\gears.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "hanoi"=".\contrib\hanoi.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "hanoi2"=".\contrib\hanoi2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "lineblend"=".\contrib\lineblend.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "moth"=".\contrib\moth.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "noof"=".\contrib\noof.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "rings"=".\contrib\rings.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "steam"=".\contrib\steam.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "text3d"=".\contrib\text3d.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "worms"=".\contrib\worms.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/contrib/Imakefile b/lib/glut-3.7.6/progs/contrib/Imakefile deleted file mode 100644 index ae7641c2ca7bd626154956a20ad7816745b2589f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/Imakefile +++ /dev/null @@ -1,26 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../Glut.cf" - -TARGETS = lineblend worms rings agv_example fractals moth text3d \ - noof gears hanoi steam - -SRCS = lineblend.c rings.c worms.c agv_example.c agviewer.c fractals.c \ - fracviewer.c hanoi.c moth.c gears.c noof.c text3d.c hanoi.c steam.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(gears) -SimpleGlutProgramTarget(hanoi) -SimpleGlutProgramTarget(lineblend) -SimpleGlutProgramTarget(moth) -SimpleGlutProgramTarget(noof) -SimpleGlutProgramTarget(rings) -SimpleGlutProgramTarget(steam) -SimpleGlutProgramTarget(text3d) -SimpleGlutProgramTarget(worms) -NormalGlutProgramTarget(agv_example,agv_example.o agviewer.o) -NormalGlutProgramTarget(fractals,fractals.o fracviewer.o) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/contrib/_all.dsp b/lib/glut-3.7.6/progs/contrib/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/agv_example.c b/lib/glut-3.7.6/progs/contrib/agv_example.c deleted file mode 100644 index 9826ccc4989814141476146dc0840ab56ec11966..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/agv_example.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * agv_example.c (version 1.0) - * - * Example program to show how to use AGV - * - * See agviewer.h, agviewer.c and comments within for more info - * - * Philip Winston - 4/11/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - */ - -#include - -#include -#include -#include - -#include "agviewer.h" - -typedef enum {NOTALLOWED, AXES, STUFF, RING } DisplayLists; - -int DrawAxes = 0; - -#define ROTATEINC 2; - -GLfloat Rotation = 0; /* start ring flat and not spinning */ -int Rotating = 0; - - -void myGLInit(void) -{ - GLfloat mat_ambuse[] = { 0.6, 0.0, 0.0, 1.0 }; - GLfloat mat_specular[] = { 0.4, 0.4, 0.4, 1.0 }; - - GLfloat light0_position[] = { 0.6, 0.4, 0.3, 0.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, light0_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat_ambuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 25.0); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glEnable(GL_NORMALIZE); - - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - - glShadeModel(GL_SMOOTH); - - glFlush(); -} - - -void MakeDisplayLists(void) -{ - glNewList(STUFF, GL_COMPILE); - glPushMatrix(); - glutSolidCube(1.0); - glTranslatef(2, 0, 0); - glutSolidSphere(0.5, 10, 10); - glTranslatef(-2, 0, 3); - glRotatef(-90, 1, 0, 0); - glutSolidCone(0.5, 1.0, 8, 8); - glPopMatrix(); - glEndList(); - - glNewList(RING, GL_COMPILE); - glutSolidTorus(0.1, 0.5, 8, 15); - glEndList(); -} - - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - gluPerspective(60, 1, 0.01, 100); - - /* so this replaces gluLookAt or equiv */ - agvViewTransform(); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - /* we call agvMakeAxesList() to make this display list */ - if (DrawAxes) - glCallList(AXES); - - glCallList(STUFF); - - glTranslatef(-2, 1, -2); - glRotatef(Rotation, 1, 0, 0); - glCallList(RING); - - glutSwapBuffers(); - glFlush(); -} - - - /* rotate the axis and adjust position if nec. */ -void rotatethering(void) -{ - Rotation += ROTATEINC; - - if (agvMoving) /* we since we are the only idle function, we must */ - agvMove(); /* give AGV the chance to update the eye position */ - - glutPostRedisplay(); -} - -typedef enum { MENU_AXES, MENU_QUIT, MENU_RING } MenuChoices; - -void handlemenu(int value) -{ - switch (value) { - case MENU_AXES: - DrawAxes = !DrawAxes; - break; - case MENU_QUIT: - exit(0); - break; - case MENU_RING: - Rotating = !Rotating; - if (Rotating) { - glutIdleFunc(rotatethering); /* install our idle function */ - agvSetAllowIdle(0); /* and tell AGV to not */ - } else { - glutIdleFunc(NULL); /* uninstall our idle function */ - agvSetAllowIdle(1); /* and tell AGV it can mess with it */ - } - break; - } - glutPostRedisplay(); -} - -void visible(int v) -{ - if (v == GLUT_VISIBLE) { - if (Rotating) { - glutIdleFunc(rotatethering); - agvSetAllowIdle(0); - } else { - glutIdleFunc(NULL); - agvSetAllowIdle(1); - } - } else { - glutIdleFunc(NULL); - agvSetAllowIdle(0); - } -} - - -void MenuInit(void) -{ - int sub2 = glutCreateMenu(agvSwitchMoveMode); /* pass these right to */ - glutAddMenuEntry("Flying move", FLYING); /* agvSwitchMoveMode() */ - glutAddMenuEntry("Polar move", POLAR); - - glutCreateMenu(handlemenu); - glutAddSubMenu("Movement", sub2); - glutAddMenuEntry("Toggle Axes", MENU_AXES); - glutAddMenuEntry("Toggle ring rotation", MENU_RING); - glutAddMenuEntry("Quit", MENU_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("AGV example"); - - glutVisibilityFunc(visible); - - if (Rotating) - glutIdleFunc(rotatethering); - - /* - * let AGV know if it can mess with the idle function (if we've - * just installed an idle function, we tell AGV it can't touch it) - */ - - agvInit(!Rotating); - - /* - * agvInit() installs mouse, motion, and keyboard handles, but - * we don't care for this example cause we only use right button menu - */ - - agvMakeAxesList(AXES); /* create AGV axes */ - - myGLInit(); - MakeDisplayLists(); - MenuInit(); - - glutDisplayFunc(display); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - - diff --git a/lib/glut-3.7.6/progs/contrib/agv_viewer.dsp b/lib/glut-3.7.6/progs/contrib/agv_viewer.dsp deleted file mode 100644 index 49913b1147bcac9cdd3d5b7a73d911496eda5da8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/agv_viewer.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="agv_viewer" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=agv_viewer - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "agv_viewer.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "agv_viewer.mak" CFG="agv_viewer - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "agv_viewer - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "agv_viewer - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "agv_viewer - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "agv_viewer - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "agv_viewer___Win32_Debug" -# PROP BASE Intermediate_Dir "agv_viewer___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "agv_viewer - Win32 Release" -# Name "agv_viewer - Win32 Debug" -# Begin Source File - -SOURCE=.\agv_example.c -# End Source File -# Begin Source File - -SOURCE=.\agviewer.c -# End Source File -# Begin Source File - -SOURCE=.\agviewer.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/agviewer.c b/lib/glut-3.7.6/progs/contrib/agviewer.c deleted file mode 100644 index addba578a81ac2919a130a7ef8c128176b7941a7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/agviewer.c +++ /dev/null @@ -1,497 +0,0 @@ -/* - * agviewer.c (version 1.0) - * - * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut - * - * See agv_example.c and agviewer.h comments within for more info. - * - * I welcome any feedback or improved versions! - * - * Philip Winston - 4/11/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - */ - -#include -#include -#include -#include - -#include "agviewer.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/***************************************************************/ -/************************** SETTINGS ***************************/ -/***************************************************************/ - - /* Initial polar movement settings */ -#define INIT_POLAR_AZ 0.0 -#define INIT_POLAR_EL 30.0 -#define INIT_DIST 8.0 -#define INIT_AZ_SPIN 0.5 -#define INIT_EL_SPIN 0.0 - - /* Initial flying movement settings */ -#define INIT_EX 0.0 -#define INIT_EY -2.0 -#define INIT_EZ -2.0 -#define INIT_MOVE 0.01 -#define MINMOVE 0.001 - - /* Start in this mode */ -#define INIT_MODE POLAR - - /* Controls: */ - - /* map 0-9 to an EyeMove value when number key is hit in FLYING mode */ -#define SPEEDFUNCTION(x) ((x)*(x)*0.001) - - /* Multiply EyeMove by (1+-MOVEFRACTION) when +/- hit in FLYING mode */ -#define MOVEFRACTION 0.25 - - /* What to multiply number of pixels mouse moved by to get rotation amount */ -#define EL_SENS 0.5 -#define AZ_SENS 0.5 - - /* What to multiply number of pixels mouse moved by for movement amounts */ -#define DIST_SENS 0.01 -#define E_SENS 0.01 - - /* Minimum spin to allow in polar (lower forced to zero) */ -#define MIN_AZSPIN 0.1 -#define MIN_ELSPIN 0.1 - - /* Factors used in computing dAz and dEl (which determine AzSpin, ElSpin) */ -#define SLOW_DAZ 0.90 -#define SLOW_DEL 0.90 -#define PREV_DAZ 0.80 -#define PREV_DEL 0.80 -#define CUR_DAZ 0.20 -#define CUR_DEL 0.20 - -/***************************************************************/ -/************************** GLOBALS ****************************/ -/***************************************************************/ - -int MoveMode = INIT_MODE; /* FLYING or POLAR mode? */ - -GLfloat Ex = INIT_EX, /* flying parameters */ - Ey = INIT_EY, - Ez = INIT_EZ, - EyeMove = INIT_MOVE, - - EyeDist = INIT_DIST, /* polar params */ - AzSpin = INIT_AZ_SPIN, - ElSpin = INIT_EL_SPIN, - - EyeAz = INIT_POLAR_AZ, /* used by both */ - EyeEl = INIT_POLAR_EL; - -int agvMoving; /* Currently moving? */ - -int downx, downy, /* for tracking mouse position */ - lastx, lasty, - downb = -1; /* and button status */ - -GLfloat downDist, downEl, downAz, /* for saving state of things */ - downEx, downEy, downEz, /* when button is pressed */ - downEyeMove; - -GLfloat dAz, dEl, lastAz, lastEl; /* to calculate spinning w/ polar motion */ -int AdjustingAzEl = 0; - -int AllowIdle, RedisplayWindow; - /* If AllowIdle is 1 it means AGV will install its own idle which - * will update the viewpoint as needed and send glutPostRedisplay() to the - * window RedisplayWindow which was set in agvInit(). AllowIdle of 0 - * means AGV won't install an idle funciton, and something like - * "if (agvMoving) agvMove()" should exist at the end of the running - * idle function. - */ - -#define MAX(x,y) (((x) > (y)) ? (x) : (y)) -#define TORAD(x) ((M_PI/180.0)*(x)) -#define TODEG(x) ((180.0/M_PI)*(x)) - -/***************************************************************/ -/************************ PROTOTYPES ***************************/ -/***************************************************************/ - - /* - * these are functions meant for internal use only - * the other prototypes are in agviewer.h - */ - -void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth); -void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z, GLfloat az, GLfloat el); -int ConstrainEl(void); -void MoveOn(int v); -void SetMove(float newmove); -static void normalize(GLfloat v[3]); -static void ncrossprod(float v1[3], float v2[3], float cp[3]); - - -/***************************************************************/ -/************************ agvInit ******************************/ -/***************************************************************/ - -void agvInit(int window) -{ - glutMouseFunc(agvHandleButton); - glutMotionFunc(agvHandleMotion); - glutKeyboardFunc(agvHandleKeys); - RedisplayWindow = glutGetWindow(); - agvSetAllowIdle(window); -} - -/***************************************************************/ -/************************ VIEWPOINT STUFF **********************/ -/***************************************************************/ - - /* - * viewing transformation modified from page 90 of red book - */ -void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth) -{ - glTranslatef(0, 0, -dist); - glRotatef(elevation, 1, 0, 0); - glRotatef(azimuth, 0, 1, 0); - -} - - /* - * I took the idea of tracking eye position in absolute - * coords and direction looking in Polar form from denis - */ -void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z, GLfloat az, GLfloat el) -{ - float lookat[3], perp[3], up[3]; - - lookat[0] = sin(TORAD(az))*cos(TORAD(el)); - lookat[1] = sin(TORAD(el)); - lookat[2] = -cos(TORAD(az))*cos(TORAD(el)); - normalize(lookat); - perp[0] = lookat[2]; - perp[1] = 0; - perp[2] = -lookat[0]; - normalize(perp); - ncrossprod(lookat, perp, up); - gluLookAt(x, y, z, - x+lookat[0], y+lookat[1], z+lookat[2], - up[0], up[1], up[2]); -} - - /* - * Call viewing transformation based on movement mode - */ -void agvViewTransform(void) -{ - switch (MoveMode) { - case FLYING: - FlyLookFrom(Ex, Ey, Ez, EyeAz, EyeEl); - break; - case POLAR: - PolarLookFrom(EyeDist, EyeEl, EyeAz); - break; - } -} - - /* - * keep them vertical; I think this makes a lot of things easier, - * but maybe it wouldn't be too hard to adapt things to let you go - * upside down - */ -int ConstrainEl(void) -{ - if (EyeEl <= -90) { - EyeEl = -89.99; - return 1; - } else if (EyeEl >= 90) { - EyeEl = 89.99; - return 1; - } - return 0; -} - - /* - * Idle Function - moves eyeposition - */ -void agvMove(void) -{ - - switch (MoveMode) { - case FLYING: - Ex += EyeMove*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey += EyeMove*sin(TORAD(EyeEl)); - Ez -= EyeMove*cos(TORAD(EyeAz))*cos(TORAD(EyeEl)); - break; - - case POLAR: - EyeEl += ElSpin; - EyeAz += AzSpin; - if (ConstrainEl()) { /* weird spin thing to make things look */ - ElSpin = -ElSpin; /* look better when you are kept from going */ - /* upside down while spinning - Isn't great */ - if (fabs(ElSpin) > fabs(AzSpin)) - AzSpin = fabs(ElSpin) * ((AzSpin > 0) ? 1 : -1); - } - break; - } - - if (AdjustingAzEl) { - dAz *= SLOW_DAZ; - dEl *= SLOW_DEL; - } - - if (AllowIdle) { - glutSetWindow(RedisplayWindow); - glutPostRedisplay(); - } -} - - - /* - * Don't install agvMove as idle unless we will be updating the view - * and we've been given a RedisplayWindow - */ -void MoveOn(int v) -{ - if (v && ((MoveMode == FLYING && EyeMove != 0) || - (MoveMode == POLAR && - (AzSpin != 0 || ElSpin != 0 || AdjustingAzEl)))) { - agvMoving = 1; - if (AllowIdle) - glutIdleFunc(agvMove); - } else { - agvMoving = 0; - if (AllowIdle) - glutIdleFunc(NULL); - } -} - - /* - * set new redisplay window. If <= 0 it means we are not to install - * an idle function and will rely on whoever does install one to - * put statement like "if (agvMoving) agvMove();" at end of it - */ -void agvSetAllowIdle(int allowidle) -{ - if ((AllowIdle = allowidle)) - MoveOn(1); -} - - - /* - * when moving to flying we stay in the same spot, moving to polar we - * reset since we have to be looking at the origin (though a pivot from - * current position to look at origin might be cooler) - */ -void agvSwitchMoveMode(int move) -{ - switch (move) { - case FLYING: - if (MoveMode == FLYING) return; - Ex = -EyeDist*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey = EyeDist*sin(TORAD(EyeEl)); - Ez = EyeDist*(cos(TORAD(EyeAz))*cos(TORAD(EyeEl))); - EyeAz = EyeAz; - EyeEl = -EyeEl; - EyeMove = INIT_MOVE; - break; - case POLAR: - EyeDist = INIT_DIST; - EyeAz = INIT_POLAR_AZ; - EyeEl = INIT_POLAR_EL; - AzSpin = INIT_AZ_SPIN; - ElSpin = INIT_EL_SPIN; - break; - } - MoveMode = move; - MoveOn(1); - glutPostRedisplay(); -} - -/***************************************************************/ -/******************* MOUSE HANDLING ***********************/ -/***************************************************************/ - -void agvHandleButton(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN && downb == -1) { - lastx = downx = x; - lasty = downy = y; - downb = button; - - switch (button) { - case GLUT_LEFT_BUTTON: - lastEl = downEl = EyeEl; - lastAz = downAz = EyeAz; - AzSpin = ElSpin = dAz = dEl = 0; - AdjustingAzEl = 1; - MoveOn(1); - break; - - case GLUT_MIDDLE_BUTTON: - downDist = EyeDist; - downEx = Ex; - downEy = Ey; - downEz = Ez; - downEyeMove = EyeMove; - EyeMove = 0; - } - - } else if (state == GLUT_UP && button == downb) { - - downb = -1; - - switch (button) { - case GLUT_LEFT_BUTTON: - if (MoveMode != FLYING) { - AzSpin = -dAz; - if (AzSpin < MIN_AZSPIN && AzSpin > -MIN_AZSPIN) - AzSpin = 0; - ElSpin = -dEl; - if (ElSpin < MIN_ELSPIN && ElSpin > -MIN_ELSPIN) - ElSpin = 0; - } - AdjustingAzEl = 0; - MoveOn(1); - break; - - case GLUT_MIDDLE_BUTTON: - EyeMove = downEyeMove; - } - } -} - - /* - * change EyeEl and EyeAz and position when mouse is moved w/ button down - */ -void agvHandleMotion(int x, int y) -{ - int deltax = x - downx, deltay = y - downy; - - switch (downb) { - case GLUT_LEFT_BUTTON: - EyeEl = downEl + EL_SENS * ((MoveMode == FLYING) ? -deltay : deltay); - ConstrainEl(); - EyeAz = downAz + AZ_SENS * deltax; - dAz = PREV_DAZ*dAz + CUR_DAZ*(lastAz - EyeAz); - dEl = PREV_DEL*dEl + CUR_DEL*(lastEl - EyeEl); - lastAz = EyeAz; - lastEl = EyeEl; - break; - case GLUT_MIDDLE_BUTTON: - EyeDist = downDist + DIST_SENS*deltay; - Ex = downEx - E_SENS*deltay*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey = downEy - E_SENS*deltay*sin(TORAD(EyeEl)); - Ez = downEz + E_SENS*deltay*cos(TORAD(EyeAz))*cos(TORAD(EyeEl)); - break; - } - glutPostRedisplay(); -} - -/***************************************************************/ -/********************* KEYBOARD HANDLING ***********************/ -/***************************************************************/ - - /* - * set EyeMove (current speed) for FLYING mode - */ -void SetMove(float newmove) -{ - if (newmove > MINMOVE) { - EyeMove = newmove; - MoveOn(1); - } else { - EyeMove = 0; - MoveOn(0); - } -} - - /* - * 0->9 set speed, +/- adjust current speed -- in FLYING mode - */ -/* ARGSUSED1 */ -void agvHandleKeys(unsigned char key, int x, int y) -{ - if (MoveMode != FLYING) - return; - - if (key >= '0' && key <= '9') - SetMove(SPEEDFUNCTION((key-'0'))); - else - switch(key) { - case '+': - if (EyeMove == 0) - SetMove(MINMOVE); - else - SetMove(EyeMove *= (1 + MOVEFRACTION)); - break; - case '-': - SetMove(EyeMove *= (1 - MOVEFRACTION)); - break; - } -} - -/***************************************************************/ -/*********************** VECTOR STUFF **************************/ -/***************************************************************/ - - /* normalizes v */ -static void normalize(GLfloat v[3]) -{ - GLfloat d = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - - if (d == 0) - fprintf(stderr, "Zero length vector in normalize\n"); - else - v[0] /= d; v[1] /= d; v[2] /= d; -} - - /* calculates a normalized crossproduct to v1, v2 */ -static void ncrossprod(float v1[3], float v2[3], float cp[3]) -{ - cp[0] = v1[1]*v2[2] - v1[2]*v2[1]; - cp[1] = v1[2]*v2[0] - v1[0]*v2[2]; - cp[2] = v1[0]*v2[1] - v1[1]*v2[0]; - normalize(cp); -} - -/***************************************************************/ -/**************************** AXES *****************************/ -/***************************************************************/ - - - /* draw axes -- was helpful to debug/design things */ -void agvMakeAxesList(int displaylistnum) -{ - int i,j; - GLfloat axes_ambuse[] = { 0.5, 0.0, 0.0, 1.0 }; - glNewList(displaylistnum, GL_COMPILE); - glPushAttrib(GL_LIGHTING_BIT); - glMatrixMode(GL_MODELVIEW); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, axes_ambuse); - glBegin(GL_LINES); - glVertex3f(15, 0, 0); glVertex3f(-15, 0, 0); - glVertex3f(0, 15, 0); glVertex3f(0, -15, 0); - glVertex3f(0, 0, 15); glVertex3f(0, 0, -15); - glEnd(); - for (i = 0; i < 3; i++) { - glPushMatrix(); - glTranslatef(-10*(i==0), -10*(i==1), -10*(i==2)); - for (j = 0; j < 21; j++) { - glutSolidCube(0.1); - glTranslatef(i==0, i==1, i==2); - } - glPopMatrix(); - } - glPopAttrib(); - glEndList(); -} - - diff --git a/lib/glut-3.7.6/progs/contrib/agviewer.h b/lib/glut-3.7.6/progs/contrib/agviewer.h deleted file mode 100644 index a404bfb1b90220f637694a8e7b73e9f74c56c7ab..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/agviewer.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * agviewer.h (version 1.0) - * - * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut - * - * The two view movement modes are POLAR and FLYING. Both move the eye, NOT - * THE OBJECT. You can never be upside down or twisted (roll) in either mode. - * - * A nice addition would be an examiner type trackball mode where you are - * moving the object and so could see it from any angle. Also less restricted - * flying and polar modes (fly upside down, do rolls, etc.). - * - * Controls for Polar are just left and middle buttons -- for flying it's - * those plus 0-9 number keys and +/- for speed adjustment. - * - * See agv_example.c and agviewer.c for more info. Probably want to make - * a copy of these and then edit for each program. This isn't meant to be - * a library, just something to graft onto your own programs. - * - * I welcome any feedback or improved versions. - * - * Philip Winston - 4/11/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - */ - - - /* - * Call agvInit() with glut's current window set to the window in - * which you want to run the viewer. Right after creating it is fine. It - * will remember that window for possible later use (see below) and - * registers mouse, motion, and keyboard handlers for that window (see below). - * - * allowidle is 1 or 0 depnding on whether you will let AGV install - * and uninstall an idle function. 0 means you will not let it (because - * you will be having your own idle function). In this case it is your - * responsibility to put a statement like: - * - * if (agvMoving) - * agvMove(); - * - * at the end of your idle function, to let AGV update the viewpoint if it - * is moving. - * - * If allowidle is 1 it means AGV will install its own idle which - * will update the viewpoint as needed and send glutPostRedisplay() to the - * window which was current when agvInit() was called. - * - * agvSetIdleAllow changes this value so you can let AGV install its idle - * when your idle isn't installed. - * - */ -void agvInit(int allowidle); -void agvSetAllowIdle(int allowidle); - - - /* - * Set which movement mode you are in. - */ -typedef enum { FLYING, POLAR } MovementType; -void agvSwitchMoveMode(int move); - - /* - * agvViewTransform basically does the appropriate gluLookAt() for the - * current position. So call it in your display on the projection matrix - */ -void agvViewTransform(void); - - /* - * agvMoving will be set by AGV according to whether it needs you to call - * agvMove() at the end of your idle function. You only need these if - * you aren't allowing AGV to do its own idle. - * (Don't change the value of agvMoving) - */ -extern int agvMoving; -void agvMove(void); - - /* - * These are the routines AGV registers to deal with mouse and keyboard input. - * Keyboard input only matters in flying mode, and then only to set speed. - * Mouse input only uses left two buttons in both modes. - * These are all registered with agvInit(), but you could register - * something else which called these, or reregister these as needed - */ -void agvHandleButton(int button, int state, int x, int y); -void agvHandleMotion(int x, int y); -void agvHandleKeys(unsigned char key, int x, int y); - - /* - * Just an extra routine which makes an x-y-z axes (about 10x10x10) - * which is nice for aligning things and debugging. Pass it an available - * displaylist number. - */ -void agvMakeAxesList(int displaylist); - - - - - - - - - - diff --git a/lib/glut-3.7.6/progs/contrib/engine.c b/lib/glut-3.7.6/progs/contrib/engine.c deleted file mode 100644 index 999bf135c7447abd457f4079b0b5092eb626a21c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/engine.c +++ /dev/null @@ -1,75 +0,0 @@ - -/* hanoi solver for hanoi2 */ - -#include -#include -#include -#include - -static int num_disks[3] = -{0, 0, 0}; - -static void -move_disk(int from, int to, int fd) -{ - char buf[3]; - - assert(from != to); - num_disks[from]--; - num_disks[to]++; -#ifdef TEST_ENGINE - printf("%d --> %d\n", from, to); -#else - buf[0] = 'M'; - buf[1] = (char) from; - buf[2] = (char) to; - if (3 != write(fd, buf, 3)) { - perror("can't write"); - exit(1); - } -#endif -} - -static void -move_disks(int from, int to, int n, int fd) -{ - static int other_table[9] = - {-1, 2, 1, 2, -1, 0, 1, 0, -1}; - int other; - - assert(from != to); - other = other_table[from * 3 + to]; - assert(other != -1); - if (n == 1) { - move_disk(from, to, fd); - } else { - move_disks(from, other, n - 1, fd); - move_disk(from, to, fd); - move_disks(other, to, n - 1, fd); - } -} - -void -engine(int *args) -{ - num_disks[0] = args[0]; - for (;;) { - move_disks(0, 2, args[0], args[1]); - move_disks(2, 0, args[0], args[1]); - } -} - -#ifdef TEST_ENGINE -int -main(int argc, char *argv[]) -{ - int engine_args[2]; - - if (argc > 1) { - engine_args[0] = atoi(argv[1]); - } - engine_args[1] = 1; - engine(n, engine_args); - return 0; /* ANSI C requires main to return int. */ -} -#endif diff --git a/lib/glut-3.7.6/progs/contrib/fractals.c b/lib/glut-3.7.6/progs/contrib/fractals.c deleted file mode 100644 index 542b753b79fd20b27de30dfa947c035d5686b798..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/fractals.c +++ /dev/null @@ -1,713 +0,0 @@ -/* - * To compile: cc -o fractals fractals.c -lGL -lGLU -lX11 -lglut -lXmu -lm - * - * Usage: fractals - * - * Homework 6, Part 2: fractal mountains and fractal trees - * (Pretty Late) - * - * Draws fractal mountains and trees -- and an island of mountains in water - * (I tried having trees on the island but it didn't work too well.) - * - * Two viewer modes: polar and flying (both restrained to y>0 for up vector). - * Keyboard 0->9 and +/- control speed when flying. - * - * Only keyboard commands are 0-9 and +/- for speed in flying mode. - * - * Fog would make the island look much better, but I couldn't get it to work - * correctly. Would line up on -z axis not from eye. - * - * Philip Winston - 3/4/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - * - */ - -#include - -#include -#include -#include -#include /* ULONG_MAX is defined here */ -#include /* FLT_MAX is atleast defined here */ - -#include /* for random seed */ - -#include "fracviewer.h" - -#ifdef _WIN32 -#define drand48() (((float) rand())/((float) RAND_MAX)) -#define srand48(x) (srand((x))) -#endif - -typedef enum { NOTALLOWED, MOUNTAIN, TREE, ISLAND, BIGMTN, STEM, LEAF, - MOUNTAIN_MAT, WATER_MAT, LEAF_MAT, TREE_MAT, STEMANDLEAVES, - AXES } DisplayLists; - -#define MAXLEVEL 8 - -int Rebuild = 1, /* Rebuild display list in next display? */ - Fract = TREE, /* What fractal are we building */ - Level = 4; /* levels of recursion for fractals */ - -int DrawAxes = 0; - -/***************************************************************/ -/************************* VECTOR JUNK *************************/ -/***************************************************************/ - - /* print vertex to stderr */ -void printvert(float v[3]) -{ - fprintf(stderr, "(%f, %f, %f)\n", v[0], v[1], v[2]); -} - - /* normalizes v */ -void normalize(GLfloat v[3]) -{ - GLfloat d = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - - if (d == 0) - fprintf(stderr, "Zero length vector in normalize\n"); - else - v[0] /= d; v[1] /= d; v[2] /= d; -} - - /* calculates a normalized crossproduct to v1, v2 */ -void ncrossprod(float v1[3], float v2[3], float cp[3]) -{ - cp[0] = v1[1]*v2[2] - v1[2]*v2[1]; - cp[1] = v1[2]*v2[0] - v1[0]*v2[2]; - cp[2] = v1[0]*v2[1] - v1[1]*v2[0]; - normalize(cp); -} - - /* calculates normal to the triangle designated by v1, v2, v3 */ -void triagnormal(float v1[3], float v2[3], float v3[3], float norm[3]) -{ - float vec1[3], vec2[3]; - - vec1[0] = v3[0] - v1[0]; vec2[0] = v2[0] - v1[0]; - vec1[1] = v3[1] - v1[1]; vec2[1] = v2[1] - v1[1]; - vec1[2] = v3[2] - v1[2]; vec2[2] = v2[2] - v1[2]; - - ncrossprod(vec2, vec1, norm); -} - -float xzlength(float v1[3], float v2[3]) -{ - return sqrt((v1[0] - v2[0])*(v1[0] - v2[0]) + - (v1[2] - v2[2])*(v1[2] - v2[2])); -} - -float xzslope(float v1[3], float v2[3]) -{ - return ((v1[0] != v2[0]) ? ((v1[2] - v2[2]) / (v1[0] - v2[0])) - : FLT_MAX); -} - - -/***************************************************************/ -/************************ MOUNTAIN STUFF ***********************/ -/***************************************************************/ - -GLfloat DispFactor[MAXLEVEL]; /* Array of what to multiply random number - by for a given level to get midpoint - displacement */ -GLfloat DispBias[MAXLEVEL]; /* Array of what to add to random number - before multiplying it by DispFactor */ - -#define NUMRANDS 191 -float RandTable[NUMRANDS]; /* hash table of random numbers so we can - raise the same midpoints by the same amount */ - - /* The following are for permitting an edge of a moutain to be */ - /* pegged so it won't be displaced up or down. This makes it */ - /* easier to setup scenes and makes a single moutain look better */ - -GLfloat Verts[3][3], /* Vertices of outside edges of mountain */ - Slopes[3]; /* Slopes between these outside edges */ -int Pegged[3]; /* Is this edge pegged or not */ - - /* - * Comes up with a new table of random numbers [0,1) - */ -void InitRandTable(unsigned int seed) -{ - int i; - - srand48((long) seed); - for (i = 0; i < NUMRANDS; i++) - RandTable[i] = drand48() - 0.5; -} - - /* calculate midpoint and displace it if required */ -void Midpoint(GLfloat mid[3], GLfloat v1[3], GLfloat v2[3], - int edge, int level) -{ - unsigned hash; - - mid[0] = (v1[0] + v2[0]) / 2; - mid[1] = (v1[1] + v2[1]) / 2; - mid[2] = (v1[2] + v2[2]) / 2; - if (!Pegged[edge] || (fabs(xzslope(Verts[edge], mid) - - Slopes[edge]) > 0.00001)) { - srand48((int)((v1[0]+v2[0])*23344)); - hash = drand48() * 7334334; - srand48((int)((v2[2]+v1[2])*43433)); - hash = (unsigned)(drand48() * 634344 + hash) % NUMRANDS; - mid[1] += ((RandTable[hash] + DispBias[level]) * DispFactor[level]); - } -} - - /* - * Recursive moutain drawing routine -- from lecture with addition of - * allowing an edge to be pegged. This function requires the above - * globals to be set, as well as the Level global for fractal level - */ -void FMR(GLfloat v1[3], GLfloat v2[3], GLfloat v3[3], int level) -{ - if (level == Level) { - GLfloat norm[3]; - - triagnormal(v1, v2, v3, norm); - glNormal3fv(norm); - glVertex3fv(v1); - glVertex3fv(v2); - glVertex3fv(v3); - - } else { - GLfloat m1[3], m2[3], m3[3]; - - Midpoint(m1, v1, v2, 0, level); - Midpoint(m2, v2, v3, 1, level); - Midpoint(m3, v3, v1, 2, level); - - FMR(v1, m1, m3, level + 1); - FMR(m1, v2, m2, level + 1); - FMR(m3, m2, v3, level + 1); - FMR(m1, m2, m3, level + 1); - } -} - - /* - * sets up lookup tables and calls recursive mountain function - */ -void FractalMountain(GLfloat v1[3], GLfloat v2[3], GLfloat v3[3], - int pegged[3]) -{ - GLfloat lengths[MAXLEVEL]; - GLfloat fraction[8] = { 0.3, 0.3, 0.4, 0.2, 0.3, 0.2, 0.4, 0.4 }; - GLfloat bias[8] = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 }; - int i; - float avglen = (xzlength(v1, v2) + - xzlength(v2, v3) + - xzlength(v3, v1) / 3); - - for (i = 0; i < 3; i++) { - Verts[0][i] = v1[i]; /* set mountain vertex globals */ - Verts[1][i] = v2[i]; - Verts[2][i] = v3[i]; - Pegged[i] = pegged[i]; - } - - Slopes[0] = xzslope(Verts[0], Verts[1]); /* set edge slope globals */ - Slopes[1] = xzslope(Verts[1], Verts[2]); - Slopes[2] = xzslope(Verts[2], Verts[0]); - - lengths[0] = avglen; - for (i = 1; i < Level; i++) { - lengths[i] = lengths[i-1]/2; /* compute edge length for each level */ - } - - for (i = 0; i < Level; i++) { /* DispFactor and DispBias arrays */ - DispFactor[i] = (lengths[i] * ((i <= 7) ? fraction[i] : fraction[7])); - DispBias[i] = ((i <= 7) ? bias[i] : bias[7]); - } - - glBegin(GL_TRIANGLES); - FMR(v1, v2, v3, 0); /* issues no GL but vertex calls */ - glEnd(); -} - - /* - * draw a mountain and build the display list - */ -void CreateMountain(void) -{ - GLfloat v1[3] = { 0, 0, -1 }, v2[3] = { -1, 0, 1 }, v3[3] = { 1, 0, 1 }; - int pegged[3] = { 1, 1, 1 }; - - glNewList(MOUNTAIN, GL_COMPILE); - glPushAttrib(GL_LIGHTING_BIT); - glCallList(MOUNTAIN_MAT); - FractalMountain(v1, v2, v3, pegged); - glPopAttrib(); - glEndList(); -} - - /* - * new random numbers to make a different moutain - */ -void NewMountain(void) -{ - InitRandTable(time(NULL)); -} - -/***************************************************************/ -/***************************** TREE ****************************/ -/***************************************************************/ - -long TreeSeed; /* for srand48 - remember so we can build "same tree" - at a different level */ - - /* - * recursive tree drawing thing, fleshed out from class notes pseudocode - */ -void FractalTree(int level) -{ - long savedseed; /* need to save seeds while building tree too */ - - if (level == Level) { - glPushMatrix(); - glRotatef(drand48()*180, 0, 1, 0); - glCallList(STEMANDLEAVES); - glPopMatrix(); - } else { - glCallList(STEM); - glPushMatrix(); - glRotatef(drand48()*180, 0, 1, 0); - glTranslatef(0, 1, 0); - glScalef(0.7, 0.7, 0.7); - - savedseed = (long) drand48()*ULONG_MAX; /* recurse on a 3-way branching */ - glPushMatrix(); - glRotatef(110 + drand48()*40, 0, 1, 0); - glRotatef(30 + drand48()*20, 0, 0, 1); - FractalTree(level + 1); - glPopMatrix(); - - srand48(savedseed); - savedseed = (long) drand48()*ULONG_MAX; - glPushMatrix(); - glRotatef(-130 + drand48()*40, 0, 1, 0); - glRotatef(30 + drand48()*20, 0, 0, 1); - FractalTree(level + 1); - glPopMatrix(); - - srand48(savedseed); - glPushMatrix(); - glRotatef(-20 + drand48()*40, 0, 1, 0); - glRotatef(30 + drand48()*20, 0, 0, 1); - FractalTree(level + 1); - glPopMatrix(); - - glPopMatrix(); - } -} - - /* - * Create display lists for a leaf, a set of leaves, and a stem - */ -void CreateTreeLists(void) -{ - GLUquadricObj *cylquad = gluNewQuadric(); - int i; - - glNewList(STEM, GL_COMPILE); - glPushMatrix(); - glRotatef(-90, 1, 0, 0); - gluCylinder(cylquad, 0.1, 0.08, 1, 10, 2 ); - glPopMatrix(); - glEndList(); - - glNewList(LEAF, GL_COMPILE); /* I think this was jeff allen's leaf idea */ - glBegin(GL_TRIANGLES); - glNormal3f(-0.1, 0, 0.25); /* not normalized */ - glVertex3f(0, 0, 0); - glVertex3f(0.25, 0.25, 0.1); - glVertex3f(0, 0.5, 0); - - glNormal3f(0.1, 0, 0.25); - glVertex3f(0, 0, 0); - glVertex3f(0, 0.5, 0); - glVertex3f(-0.25, 0.25, 0.1); - glEnd(); - glEndList(); - - glNewList(STEMANDLEAVES, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glCallList(STEM); - glCallList(LEAF_MAT); - for(i = 0; i < 3; i++) { - glTranslatef(0, 0.333, 0); - glRotatef(90, 0, 1, 0); - glPushMatrix(); - glRotatef(0, 0, 1, 0); - glRotatef(50, 1, 0, 0); - glCallList(LEAF); - glPopMatrix(); - glPushMatrix(); - glRotatef(180, 0, 1, 0); - glRotatef(60, 1, 0, 0); - glCallList(LEAF); - glPopMatrix(); - } - glPopAttrib(); - glPopMatrix(); - glEndList(); -} - - /* - * draw and build display list for tree - */ -void CreateTree(void) -{ - srand48(TreeSeed); - - glNewList(TREE, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glCallList(TREE_MAT); - glTranslatef(0, -1, 0); - FractalTree(0); - glPopAttrib(); - glPopMatrix(); - glEndList(); -} - - /* - * new seed for a new tree (groan) - */ -void NewTree(void) -{ - TreeSeed = time(NULL); -} - -/***************************************************************/ -/*********************** FRACTAL PLANET ************************/ -/***************************************************************/ - -void CreateIsland(void) -{ - CreateMountain(); - glNewList(ISLAND, GL_COMPILE); - glPushAttrib(GL_LIGHTING_BIT); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glCallList(WATER_MAT); - - glBegin(GL_QUADS); - glNormal3f(0, 1, 0); - glVertex3f(100, 0.01, 100); - glVertex3f(100, 0.01, -100); - glVertex3f(-100, 0.01, -100); - glVertex3f(-100, 0.01, 100); - glEnd(); - - glPushMatrix(); - glTranslatef(0, -0.1, 0); - glCallList(MOUNTAIN); - glPopMatrix(); - - glPushMatrix(); - glRotatef(135, 0, 1, 0); - glTranslatef(0.2, -0.15, -0.4); - glCallList(MOUNTAIN); - glPopMatrix(); - - glPushMatrix(); - glRotatef(-60, 0, 1, 0); - glTranslatef(0.7, -0.07, 0.5); - glCallList(MOUNTAIN); - glPopMatrix(); - - glPushMatrix(); - glRotatef(-175, 0, 1, 0); - glTranslatef(-0.7, -0.05, -0.5); - glCallList(MOUNTAIN); - glPopMatrix(); - - glPushMatrix(); - glRotatef(165, 0, 1, 0); - glTranslatef(-0.9, -0.12, 0.0); - glCallList(MOUNTAIN); - glPopMatrix(); - - glPopMatrix(); - glPopAttrib(); - glEndList(); -} - - -void NewFractals(void) -{ - NewMountain(); - NewTree(); -} - -void Create(int fract) -{ - switch(fract) { - case MOUNTAIN: - CreateMountain(); - break; - case TREE: - CreateTree(); - break; - case ISLAND: - CreateIsland(); - break; - } -} - - - -/***************************************************************/ -/**************************** OPENGL ***************************/ -/***************************************************************/ - - -void SetupMaterials(void) -{ - GLfloat mtn_ambuse[] = { 0.426, 0.256, 0.108, 1.0 }; - GLfloat mtn_specular[] = { 0.394, 0.272, 0.167, 1.0 }; - GLfloat mtn_shininess[] = { 10 }; - - GLfloat water_ambuse[] = { 0.0, 0.1, 0.5, 1.0 }; - GLfloat water_specular[] = { 0.0, 0.1, 0.5, 1.0 }; - GLfloat water_shininess[] = { 10 }; - - GLfloat tree_ambuse[] = { 0.4, 0.25, 0.1, 1.0 }; - GLfloat tree_specular[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat tree_shininess[] = { 0 }; - - GLfloat leaf_ambuse[] = { 0.0, 0.8, 0.0, 1.0 }; - GLfloat leaf_specular[] = { 0.0, 0.8, 0.0, 1.0 }; - GLfloat leaf_shininess[] = { 10 }; - - glNewList(MOUNTAIN_MAT, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mtn_ambuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mtn_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mtn_shininess); - glEndList(); - - glNewList(WATER_MAT, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, water_ambuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, water_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, water_shininess); - glEndList(); - - glNewList(TREE_MAT, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, tree_ambuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, tree_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, tree_shininess); - glEndList(); - - glNewList(LEAF_MAT, GL_COMPILE); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, leaf_ambuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, leaf_specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, leaf_shininess); - glEndList(); -} - -void myGLInit(void) -{ - GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_position[] = { 0.0, 0.3, 0.3, 0.0 }; - - GLfloat lmodel_ambient[] = { 0.4, 0.4, 0.4, 1.0 }; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glDepthFunc(GL_LEQUAL); - glEnable(GL_DEPTH_TEST); - - glEnable(GL_NORMALIZE); -#if 0 - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); -#endif - - glShadeModel(GL_SMOOTH); -#if 0 - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -#endif - - SetupMaterials(); - CreateTreeLists(); - - glFlush(); -} - -/***************************************************************/ -/************************ GLUT STUFF ***************************/ -/***************************************************************/ - -void reshape(GLsizei w, GLsizei h) -{ - glViewport(0,0,w,h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (GLdouble)w/h, 0.01, 100); - glPushMatrix(); - glMatrixMode(GL_MODELVIEW); - glFlush(); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glFlush(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glPushMatrix(); /* clear of last viewing xform, leaving perspective */ - - agvViewTransform(); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - if (Rebuild) { - Create(Fract); - Rebuild = 0; - } - - glCallList(Fract); - - if (DrawAxes) - glCallList(AXES); - - glutSwapBuffers(); - glFlush(); -} - - -void visible(int v) -{ - if (v == GLUT_VISIBLE) - agvSetAllowIdle(1); - else { - glutIdleFunc(NULL); - agvSetAllowIdle(0); - } -} - -void menuuse(int v) -{ - if (v == GLUT_MENU_NOT_IN_USE) - agvSetAllowIdle(1); - else { - glutIdleFunc(NULL); - agvSetAllowIdle(0); - } -} - -/***************************************************************/ -/******************* MENU SETUP & HANDLING *********************/ -/***************************************************************/ - -typedef enum { MENU_QUIT, MENU_RAND, MENU_MOVE, MENU_AXES } MenuChoices; - -void setlevel(int value) -{ - Level = value; - Rebuild = 1; - glutPostRedisplay(); -} - -void choosefract(int value) -{ - Fract = value; - Rebuild = 1; - glutPostRedisplay(); -} - -void handlemenu(int value) -{ - switch (value) { - case MENU_QUIT: - exit(0); - break; - case MENU_RAND: - NewFractals(); - Rebuild = 1; - glutPostRedisplay(); - break; - case MENU_AXES: - DrawAxes = !DrawAxes; - glutPostRedisplay(); - break; - } -} - -void MenuInit(void) -{ - int submenu3, submenu2, submenu1; - - submenu1 = glutCreateMenu(setlevel); - glutAddMenuEntry("0", 0); glutAddMenuEntry("1", 1); - glutAddMenuEntry("2", 2); glutAddMenuEntry("3", 3); - glutAddMenuEntry("4", 4); glutAddMenuEntry("5", 5); - glutAddMenuEntry("6", 6); glutAddMenuEntry("7", 7); - glutAddMenuEntry("8", 8); - - submenu2 = glutCreateMenu(choosefract); - glutAddMenuEntry("Moutain", MOUNTAIN); - glutAddMenuEntry("Tree", TREE); - glutAddMenuEntry("Island", ISLAND); - - submenu3 = glutCreateMenu(agvSwitchMoveMode); - glutAddMenuEntry("Flying", FLYING); - glutAddMenuEntry("Polar", POLAR); - - glutCreateMenu(handlemenu); - glutAddSubMenu("Level", submenu1); - glutAddSubMenu("Fractal", submenu2); - glutAddSubMenu("Movement", submenu3); - glutAddMenuEntry("New Fractal", MENU_RAND); - glutAddMenuEntry("Toggle Axes", MENU_AXES); - glutAddMenuEntry("Quit", MENU_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - - -/***************************************************************/ -/**************************** MAIN *****************************/ -/***************************************************************/ - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutCreateWindow("Fractal Planet?"); - - agvInit(1); /* 1 cause we don't have our own idle */ - - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glutMenuStateFunc(menuuse); - - NewFractals(); - agvMakeAxesList(AXES); - myGLInit(); - MenuInit(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/fractals.dsp b/lib/glut-3.7.6/progs/contrib/fractals.dsp deleted file mode 100644 index 26ff71f0dba334ef5d7051eac944453450e9fe59..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/fractals.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fractals" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fractals - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fractals.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fractals.mak" CFG="fractals - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fractals - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fractals - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fractals - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fractals - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fractals - Win32 Release" -# Name "fractals - Win32 Debug" -# Begin Source File - -SOURCE=.\fractals.c -# End Source File -# Begin Source File - -SOURCE=.\fracviewer.c -# End Source File -# Begin Source File - -SOURCE=.\fracviewer.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/fracviewer.c b/lib/glut-3.7.6/progs/contrib/fracviewer.c deleted file mode 100644 index 105c4379e097686f3da14b624b9612f6713c44de..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/fracviewer.c +++ /dev/null @@ -1,498 +0,0 @@ -/* - * fractviewer.c [from agviewer.c (version 1.0)] - * - * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut - * - * See agv_example.c and agviewer.h comments within for more info. - * - * I welcome any feedback or improved versions! - * - * Philip Winston - 4/11/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - */ - -#include -#include -#include -#include - -#include "fracviewer.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/***************************************************************/ -/************************** SETTINGS ***************************/ -/***************************************************************/ - - /* Initial polar movement settings */ -#define INIT_POLAR_AZ 0.0 -#define INIT_POLAR_EL 30.0 -#define INIT_DIST 4.0 -#define INIT_AZ_SPIN 0.5 -#define INIT_EL_SPIN 0.0 - - /* Initial flying movement settings */ -#define INIT_EX 0.0 -#define INIT_EY -2.0 -#define INIT_EZ -2.0 -#define INIT_MOVE 0.01 -#define MINMOVE 0.001 - - /* Start in this mode */ -#define INIT_MODE POLAR - - /* Controls: */ - - /* map 0-9 to an EyeMove value when number key is hit in FLYING mode */ -#define SPEEDFUNCTION(x) ((x)*(x)*0.001) - - /* Multiply EyeMove by (1+-MOVEFRACTION) when +/- hit in FLYING mode */ -#define MOVEFRACTION 0.25 - - /* What to multiply number of pixels mouse moved by to get rotation amount */ -#define EL_SENS 0.5 -#define AZ_SENS 0.5 - - /* What to multiply number of pixels mouse moved by for movement amounts */ -#define DIST_SENS 0.01 -#define E_SENS 0.01 - - /* Minimum spin to allow in polar (lower forced to zero) */ -#define MIN_AZSPIN 0.1 -#define MIN_ELSPIN 0.1 - - /* Factors used in computing dAz and dEl (which determine AzSpin, ElSpin) */ -#define SLOW_DAZ 0.90 -#define SLOW_DEL 0.90 -#define PREV_DAZ 0.80 -#define PREV_DEL 0.80 -#define CUR_DAZ 0.20 -#define CUR_DEL 0.20 - -/***************************************************************/ -/************************** GLOBALS ****************************/ -/***************************************************************/ - -int MoveMode = INIT_MODE; /* FLYING or POLAR mode? */ - -GLfloat Ex = INIT_EX, /* flying parameters */ - Ey = INIT_EY, - Ez = INIT_EZ, - EyeMove = INIT_MOVE, - - EyeDist = INIT_DIST, /* polar params */ - AzSpin = INIT_AZ_SPIN, - ElSpin = INIT_EL_SPIN, - - EyeAz = INIT_POLAR_AZ, /* used by both */ - EyeEl = INIT_POLAR_EL; - -int agvMoving; /* Currently moving? */ - -int downx, downy, /* for tracking mouse position */ - lastx, lasty, - downb = -1; /* and button status */ - -GLfloat downDist, downEl, downAz, /* for saving state of things */ - downEx, downEy, downEz, /* when button is pressed */ - downEyeMove; - -GLfloat dAz, dEl, lastAz, lastEl; /* to calculate spinning w/ polar motion */ -int AdjustingAzEl = 0; - -int AllowIdle, RedisplayWindow; - /* If AllowIdle is 1 it means AGV will install its own idle which - * will update the viewpoint as needed and send glutPostRedisplay() to the - * window RedisplayWindow which was set in agvInit(). AllowIdle of 0 - * means AGV won't install an idle funciton, and something like - * "if (agvMoving) agvMove()" should exist at the end of the running - * idle function. - */ - -#define MAX(x,y) (((x) > (y)) ? (x) : (y)) -#define TORAD(x) ((M_PI/180.0)*(x)) -#define TODEG(x) ((180.0/M_PI)*(x)) - -/***************************************************************/ -/************************ PROTOTYPES ***************************/ -/***************************************************************/ - - /* - * these are functions meant for internal use only - * the other prototypes are in agviewer.h - */ - -void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth); -void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z, - GLfloat az, GLfloat el); -int ConstrainEl(void); -void MoveOn(int v); -void SetMove(float newmove); -static void normalize(GLfloat v[3]); -static void ncrossprod(float v1[3], float v2[3], float cp[3]); - - -/***************************************************************/ -/************************ agvInit ******************************/ -/***************************************************************/ - -void agvInit(int window) -{ - glutMouseFunc(agvHandleButton); - glutMotionFunc(agvHandleMotion); - glutKeyboardFunc(agvHandleKeys); - RedisplayWindow = glutGetWindow(); - agvSetAllowIdle(window); -} - -/***************************************************************/ -/************************ VIEWPOINT STUFF **********************/ -/***************************************************************/ - - /* - * viewing transformation modified from page 90 of red book - */ -void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth) -{ - glTranslatef(0, 0, -dist); - glRotatef(elevation, 1, 0, 0); - glRotatef(azimuth, 0, 1, 0); - -} - - /* - * I took the idea of tracking eye position in absolute - * coords and direction looking in Polar form from denis - */ -void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z, GLfloat az, GLfloat el) -{ - float lookat[3], perp[3], up[3]; - - lookat[0] = sin(TORAD(az))*cos(TORAD(el)); - lookat[1] = sin(TORAD(el)); - lookat[2] = -cos(TORAD(az))*cos(TORAD(el)); - normalize(lookat); - perp[0] = lookat[2]; - perp[1] = 0; - perp[2] = -lookat[0]; - normalize(perp); - ncrossprod(lookat, perp, up); - gluLookAt(x, y, z, - x+lookat[0], y+lookat[1], z+lookat[2], - up[0], up[1], up[2]); -} - - /* - * Call viewing transformation based on movement mode - */ -void agvViewTransform(void) -{ - switch (MoveMode) { - case FLYING: - FlyLookFrom(Ex, Ey, Ez, EyeAz, EyeEl); - break; - case POLAR: - PolarLookFrom(EyeDist, EyeEl, EyeAz); - break; - } -} - - /* - * keep them vertical; I think this makes a lot of things easier, - * but maybe it wouldn't be too hard to adapt things to let you go - * upside down - */ -int ConstrainEl(void) -{ - if (EyeEl <= -90) { - EyeEl = -89.99; - return 1; - } else if (EyeEl >= 90) { - EyeEl = 89.99; - return 1; - } - return 0; -} - - /* - * Idle Function - moves eyeposition - */ -void agvMove(void) -{ - - switch (MoveMode) { - case FLYING: - Ex += EyeMove*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey += EyeMove*sin(TORAD(EyeEl)); - Ez -= EyeMove*cos(TORAD(EyeAz))*cos(TORAD(EyeEl)); - break; - - case POLAR: - EyeEl += ElSpin; - EyeAz += AzSpin; - if (ConstrainEl()) { /* weird spin thing to make things look */ - ElSpin = -ElSpin; /* look better when you are kept from going */ - /* upside down while spinning - Isn't great */ - if (fabs(ElSpin) > fabs(AzSpin)) - AzSpin = fabs(ElSpin) * ((AzSpin > 0) ? 1 : -1); - } - break; - } - - if (AdjustingAzEl) { - dAz *= SLOW_DAZ; - dEl *= SLOW_DEL; - } - - if (AllowIdle) { - glutSetWindow(RedisplayWindow); - glutPostRedisplay(); - } -} - - - /* - * Don't install agvMove as idle unless we will be updating the view - * and we've been given a RedisplayWindow - */ -void MoveOn(int v) -{ - if (v && ((MoveMode == FLYING && EyeMove != 0) || - (MoveMode == POLAR && - (AzSpin != 0 || ElSpin != 0 || AdjustingAzEl)))) { - agvMoving = 1; - if (AllowIdle) - glutIdleFunc(agvMove); - } else { - agvMoving = 0; - if (AllowIdle) - glutIdleFunc(NULL); - } -} - - /* - * set new redisplay window. If <= 0 it means we are not to install - * an idle function and will rely on whoever does install one to - * put statement like "if (agvMoving) agvMove();" at end of it - */ -void agvSetAllowIdle(int allowidle) -{ - if ((AllowIdle = allowidle)) - MoveOn(1); -} - - - /* - * when moving to flying we stay in the same spot, moving to polar we - * reset since we have to be looking at the origin (though a pivot from - * current position to look at origin might be cooler) - */ -void agvSwitchMoveMode(int move) -{ - switch (move) { - case FLYING: - if (MoveMode == FLYING) return; - Ex = -EyeDist*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey = EyeDist*sin(TORAD(EyeEl)); - Ez = EyeDist*(cos(TORAD(EyeAz))*cos(TORAD(EyeEl))); - EyeAz = EyeAz; - EyeEl = -EyeEl; - EyeMove = INIT_MOVE; - break; - case POLAR: - EyeDist = INIT_DIST; - EyeAz = INIT_POLAR_AZ; - EyeEl = INIT_POLAR_EL; - AzSpin = INIT_AZ_SPIN; - ElSpin = INIT_EL_SPIN; - break; - } - MoveMode = move; - MoveOn(1); - glutPostRedisplay(); -} - -/***************************************************************/ -/******************* MOUSE HANDLING ***********************/ -/***************************************************************/ - -void agvHandleButton(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN && downb == -1) { - lastx = downx = x; - lasty = downy = y; - downb = button; - - switch (button) { - case GLUT_LEFT_BUTTON: - lastEl = downEl = EyeEl; - lastAz = downAz = EyeAz; - AzSpin = ElSpin = dAz = dEl = 0; - AdjustingAzEl = 1; - MoveOn(1); - break; - - case GLUT_MIDDLE_BUTTON: - downDist = EyeDist; - downEx = Ex; - downEy = Ey; - downEz = Ez; - downEyeMove = EyeMove; - EyeMove = 0; - } - - } else if (state == GLUT_UP && button == downb) { - - downb = -1; - - switch (button) { - case GLUT_LEFT_BUTTON: - if (MoveMode != FLYING) { - AzSpin = -dAz; - if (AzSpin < MIN_AZSPIN && AzSpin > -MIN_AZSPIN) - AzSpin = 0; - ElSpin = -dEl; - if (ElSpin < MIN_ELSPIN && ElSpin > -MIN_ELSPIN) - ElSpin = 0; - } - AdjustingAzEl = 0; - MoveOn(1); - break; - - case GLUT_MIDDLE_BUTTON: - EyeMove = downEyeMove; - } - } -} - - /* - * change EyeEl and EyeAz and position when mouse is moved w/ button down - */ -void agvHandleMotion(int x, int y) -{ - int deltax = x - downx, deltay = y - downy; - - switch (downb) { - case GLUT_LEFT_BUTTON: - EyeEl = downEl + EL_SENS * ((MoveMode == FLYING) ? -deltay : deltay); - ConstrainEl(); - EyeAz = downAz + AZ_SENS * deltax; - dAz = PREV_DAZ*dAz + CUR_DAZ*(lastAz - EyeAz); - dEl = PREV_DEL*dEl + CUR_DEL*(lastEl - EyeEl); - lastAz = EyeAz; - lastEl = EyeEl; - break; - case GLUT_MIDDLE_BUTTON: - EyeDist = downDist + DIST_SENS*deltay; - Ex = downEx - E_SENS*deltay*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey = downEy - E_SENS*deltay*sin(TORAD(EyeEl)); - Ez = downEz + E_SENS*deltay*cos(TORAD(EyeAz))*cos(TORAD(EyeEl)); - break; - } - glutPostRedisplay(); -} - -/***************************************************************/ -/********************* KEYBOARD HANDLING ***********************/ -/***************************************************************/ - - /* - * set EyeMove (current speed) for FLYING mode - */ -void SetMove(float newmove) -{ - if (newmove > MINMOVE) { - EyeMove = newmove; - MoveOn(1); - } else { - EyeMove = 0; - MoveOn(0); - } -} - - /* - * 0->9 set speed, +/- adjust current speed -- in FLYING mode - */ -/* ARGSUSED1 */ -void agvHandleKeys(unsigned char key, int x, int y) -{ - if (MoveMode != FLYING) - return; - - if (key >= '0' && key <= '9') - SetMove(SPEEDFUNCTION((key-'0'))); - else - switch(key) { - case '+': - if (EyeMove == 0) - SetMove(MINMOVE); - else - SetMove(EyeMove *= (1 + MOVEFRACTION)); - break; - case '-': - SetMove(EyeMove *= (1 - MOVEFRACTION)); - break; - } -} - -/***************************************************************/ -/*********************** VECTOR STUFF **************************/ -/***************************************************************/ - - /* normalizes v */ -static void normalize(GLfloat v[3]) -{ - GLfloat d = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - - if (d == 0) - fprintf(stderr, "Zero length vector in normalize\n"); - else - v[0] /= d; v[1] /= d; v[2] /= d; -} - - /* calculates a normalized crossproduct to v1, v2 */ -static void ncrossprod(float v1[3], float v2[3], float cp[3]) -{ - cp[0] = v1[1]*v2[2] - v1[2]*v2[1]; - cp[1] = v1[2]*v2[0] - v1[0]*v2[2]; - cp[2] = v1[0]*v2[1] - v1[1]*v2[0]; - normalize(cp); -} - -/***************************************************************/ -/**************************** AXES *****************************/ -/***************************************************************/ - - - /* draw axes -- was helpful to debug/design things */ -void agvMakeAxesList(int displaylistnum) -{ - int i,j; - GLfloat axes_ambuse[] = { 0.5, 0.0, 0.0, 1.0 }; - glNewList(displaylistnum, GL_COMPILE); - glPushAttrib(GL_LIGHTING_BIT); - glMatrixMode(GL_MODELVIEW); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, axes_ambuse); - glBegin(GL_LINES); - glVertex3f(15, 0, 0); glVertex3f(-15, 0, 0); - glVertex3f(0, 15, 0); glVertex3f(0, -15, 0); - glVertex3f(0, 0, 15); glVertex3f(0, 0, -15); - glEnd(); - for (i = 0; i < 3; i++) { - glPushMatrix(); - glTranslatef(-10*(i==0), -10*(i==1), -10*(i==2)); - for (j = 0; j < 21; j++) { - glutSolidCube(0.1); - glTranslatef(i==0, i==1, i==2); - } - glPopMatrix(); - } - glPopAttrib(); - glEndList(); -} - - diff --git a/lib/glut-3.7.6/progs/contrib/fracviewer.h b/lib/glut-3.7.6/progs/contrib/fracviewer.h deleted file mode 100644 index 0bfe6d0b1bfabfbe660a71ec11f188c7453d92ba..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/fracviewer.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * fracviewer.h [from agviewer.h (version 1.0)] - * - * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut - * - * The two view movement modes are POLAR and FLYING. Both move the eye, NOT - * THE OBJECT. You can never be upside down or twisted (roll) in either mode. - * - * A nice addition would be an examiner type trackball mode where you are - * moving the object and so could see it from any angle. Also less restricted - * flying and polar modes (fly upside down, do rolls, etc.). - * - * Controls for Polar are just left and middle buttons -- for flying it's - * those plus 0-9 number keys and +/- for speed adjustment. - * - * See agv_example.c and agviewer.c for more info. Probably want to make - * a copy of these and then edit for each program. This isn't meant to be - * a library, just something to graft onto your own programs. - * - * I welcome any feedback or improved versions. - * - * Philip Winston - 4/11/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - */ - - - /* - * Call agvInit() with glut's current window set to the window in - * which you want to run the viewer. Right after creating it is fine. It - * will remember that window for possible later use (see below) and - * registers mouse, motion, and keyboard handlers for that window (see below). - * - * allowidle is 1 or 0 depnding on whether you will let AGV install - * and uninstall an idle function. 0 means you will not let it (because - * you will be having your own idle function). In this case it is your - * responsibility to put a statement like: - * - * if (agvMoving) - * agvMove(); - * - * at the end of your idle function, to let AGV update the viewpoint if it - * is moving. - * - * If allowidle is 1 it means AGV will install its own idle which - * will update the viewpoint as needed and send glutPostRedisplay() to the - * window which was current when agvInit() was called. - * - * agvSetIdleAllow changes this value so you can let AGV install its idle - * when your idle isn't installed. - * - */ -void agvInit(int allowidle); -void agvSetAllowIdle(int allowidle); - - - /* - * Set which movement mode you are in. - */ -typedef enum { FLYING, POLAR } MovementType; -void agvSwitchMoveMode(int move); - - /* - * agvViewTransform basically does the appropriate gluLookAt() for the - * current position. So call it in your display on the projection matrix - */ -void agvViewTransform(void); - - /* - * agvMoving will be set by AGV according to whether it needs you to call - * agvMove() at the end of your idle function. You only need these if - * you aren't allowing AGV to do its own idle. - * (Don't change the value of agvMoving) - */ -extern int agvMoving; -void agvMove(void); - - /* - * These are the routines AGV registers to deal with mouse and keyboard input. - * Keyboard input only matters in flying mode, and then only to set speed. - * Mouse input only uses left two buttons in both modes. - * These are all registered with agvInit(), but you could register - * something else which called these, or reregister these as needed - */ -void agvHandleButton(int button, int state, int x, int y); -void agvHandleMotion(int x, int y); -void agvHandleKeys(unsigned char key, int x, int y); - - /* - * Just an extra routine which makes an x-y-z axes (about 10x10x10) - * which is nice for aligning things and debugging. Pass it an available - * displaylist number. - */ -void agvMakeAxesList(int displaylist); - - - - - - - - - - diff --git a/lib/glut-3.7.6/progs/contrib/gears.c b/lib/glut-3.7.6/progs/contrib/gears.c deleted file mode 100644 index 9f5ced6f1242d38e1d01271e9437f5739378c2de..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/gears.c +++ /dev/null @@ -1,569 +0,0 @@ -#include -#include - -#include -#ifndef _WIN32 -#include -#endif -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#include -#include - -/* For portability... */ -#undef fcos -#undef fsin -#undef fsqrt -#define fcos cos -#define fsin sin -#define fsqrt sqrt - -static double d_near = 1.0; -static double d_far = 2000; -static int poo = 0; - -typedef struct { - float rad, wid; -} Profile; - -void flat_face(float ir, float or, float wd); -void draw_inside(float w1, float w2, float rad); -void draw_outside(float w1, float w2, float rad); -void tooth_side(int nt, float ir, float or, float tp, float tip, float wd); - -int circle_subdiv; - -int mode = GLUT_DOUBLE; - -void -gear(int nt, float wd, float ir, float or, float tp, float tip, int ns, Profile * ip) -{ - /** - * nt - number of teeth - * wd - width of gear at teeth - * ir - inside radius absolute scale - * or - radius at outside of wheel (tip of tooth) ratio of ir - * tp - ratio of tooth in slice of circle (0..1] (1 = teeth are touching at base) - * tip - ratio of tip of tooth (0..tp] (cant be wider that base of tooth) - * ns - number of elements in wheel width profile - * *ip - list of float pairs {start radius, width, ...} (width is ratio to wd) - * - */ - - /* gear lying on xy plane, z for width. all normals calulated - (normalized) */ - - float prev; - int k, t; - - /* estimat # times to divide circle */ - if (nt <= 0) - circle_subdiv = 64; - else { - /* lowest multiple of number of teeth */ - circle_subdiv = nt; - while (circle_subdiv < 64) - circle_subdiv += nt; - } - - /* --- draw wheel face --- */ - - /* draw horzontal, vertical faces for each section. if first - section radius not zero, use wd for 0.. first if ns == 0 - use wd for whole face. last width used to edge. */ - - if (ns <= 0) { - flat_face(0.0, ir, wd); - } else { - /* draw first flat_face, then continue in loop */ - if (ip[0].rad > 0.0) { - flat_face(0.0, ip[0].rad * ir, wd); - prev = wd; - t = 0; - } else { - flat_face(0.0, ip[1].rad * ir, ip[0].wid * wd); - prev = ip[0].wid; - t = 1; - } - for (k = t; k < ns; k++) { - if (prev < ip[k].wid) { - draw_inside(prev * wd, ip[k].wid * wd, ip[k].rad * ir); - } else { - draw_outside(prev * wd, ip[k].wid * wd, ip[k].rad * ir); - } - prev = ip[k].wid; - /* - draw to edge of wheel, add final face if needed - */ - if (k == ns - 1) { - flat_face(ip[k].rad * ir, ir, ip[k].wid * wd); - - /* now draw side to match tooth rim */ - if (ip[k].wid < 1.0) { - draw_inside(ip[k].wid * wd, wd, ir); - } else { - draw_outside(ip[k].wid * wd, wd, ir); - } - } else { - flat_face(ip[k].rad * ir, ip[k + 1].rad * ir, ip[k].wid * wd); - } - } - } - - /* --- tooth side faces --- */ - tooth_side(nt, ir, or, tp, tip, wd); - - /* --- tooth hill surface --- */ -} - -void -tooth_side(int nt, float ir, float or, float tp, float tip, float wd) -{ - - float i; - float end = 2.0 * M_PI / nt; - float x[6], y[6]; - float s[3], c[3]; - - or = or * ir; /* or is really a ratio of ir */ - for (i = 0; i < 2.0 * M_PI - end / 4.0; i += end) { - - c[0] = fcos(i); - s[0] = fsin(i); - c[1] = fcos(i + end * (0.5 - tip / 2)); - s[1] = fsin(i + end * (0.5 - tip / 2)); - c[2] = fcos(i + end * (0.5 + tp / 2)); - s[2] = fsin(i + end * (0.5 + tp / 2)); - - x[0] = ir * c[0]; - y[0] = ir * s[0]; - x[5] = ir * fcos(i + end); - y[5] = ir * fsin(i + end); - /* ---treat veritices 1,4 special to match strait edge of - face */ - x[1] = x[0] + (x[5] - x[0]) * (0.5 - tp / 2); - y[1] = y[0] + (y[5] - y[0]) * (0.5 - tp / 2); - x[4] = x[0] + (x[5] - x[0]) * (0.5 + tp / 2); - y[4] = y[0] + (y[5] - y[0]) * (0.5 + tp / 2); - x[2] = or * fcos(i + end * (0.5 - tip / 2)); - y[2] = or * fsin(i + end * (0.5 - tip / 2)); - x[3] = or * fcos(i + end * (0.5 + tip / 2)); - y[3] = or * fsin(i + end * (0.5 + tip / 2)); - - /* draw face trapezoids as 2 tmesh */ - glNormal3f(0.0, 0.0, 1.0); - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(x[2], y[2], wd / 2); - glVertex3f(x[1], y[1], wd / 2); - glVertex3f(x[3], y[3], wd / 2); - glVertex3f(x[4], y[4], wd / 2); - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(x[2], y[2], -wd / 2); - glVertex3f(x[1], y[1], -wd / 2); - glVertex3f(x[3], y[3], -wd / 2); - glVertex3f(x[4], y[4], -wd / 2); - glEnd(); - - /* draw inside rim pieces */ - glNormal3f(c[0], s[0], 0.0); - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(x[0], y[0], -wd / 2); - glVertex3f(x[1], y[1], -wd / 2); - glVertex3f(x[0], y[0], wd / 2); - glVertex3f(x[1], y[1], wd / 2); - glEnd(); - - /* draw up hill side */ - { - float a, b, n; - /* calculate normal of face */ - a = x[2] - x[1]; - b = y[2] - y[1]; - n = 1.0 / fsqrt(a * a + b * b); - a = a * n; - b = b * n; - glNormal3f(b, -a, 0.0); - } - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(x[1], y[1], -wd / 2); - glVertex3f(x[2], y[2], -wd / 2); - glVertex3f(x[1], y[1], wd / 2); - glVertex3f(x[2], y[2], wd / 2); - glEnd(); - /* draw top of hill */ - glNormal3f(c[1], s[1], 0.0); - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(x[2], y[2], -wd / 2); - glVertex3f(x[3], y[3], -wd / 2); - glVertex3f(x[2], y[2], wd / 2); - glVertex3f(x[3], y[3], wd / 2); - glEnd(); - - /* draw down hill side */ - { - float a, b, c; - /* calculate normal of face */ - a = x[4] - x[3]; - b = y[4] - y[3]; - c = 1.0 / fsqrt(a * a + b * b); - a = a * c; - b = b * c; - glNormal3f(b, -a, 0.0); - } - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(x[3], y[3], -wd / 2); - glVertex3f(x[4], y[4], -wd / 2); - glVertex3f(x[3], y[3], wd / 2); - glVertex3f(x[4], y[4], wd / 2); - glEnd(); - /* inside rim part */ - glNormal3f(c[2], s[2], 0.0); - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(x[4], y[4], -wd / 2); - glVertex3f(x[5], y[5], -wd / 2); - glVertex3f(x[4], y[4], wd / 2); - glVertex3f(x[5], y[5], wd / 2); - glEnd(); - } -} - -void -flat_face(float ir, float or, float wd) -{ - - int i; - float w; - - /* draw each face (top & bottom ) * */ - if (poo) - printf("Face : %f..%f wid=%f\n", ir, or, wd); - if (wd == 0.0) - return; - for (w = wd / 2; w > -wd; w -= wd) { - if (w > 0.0) - glNormal3f(0.0, 0.0, 1.0); - else - glNormal3f(0.0, 0.0, -1.0); - - if (ir == 0.0) { - /* draw as t-fan */ - glBegin(GL_TRIANGLE_FAN); - glVertex3f(0.0, 0.0, w); /* center */ - glVertex3f(or, 0.0, w); - for (i = 1; i < circle_subdiv; i++) { - glVertex3f(fcos(2.0 * M_PI * i / circle_subdiv) * or, - fsin(2.0 * M_PI * i / circle_subdiv) * or, - w); - } - glVertex3f(or, 0.0, w); - glEnd(); - } else { - /* draw as tmesh */ - glBegin(GL_TRIANGLE_STRIP); - glVertex3f(or, 0.0, w); - glVertex3f(ir, 0.0, w); - for (i = 1; i < circle_subdiv; i++) { - glVertex3f(fcos(2.0 * M_PI * i / circle_subdiv) * or, - fsin(2.0 * M_PI * i / circle_subdiv) * or, - w); - glVertex3f(fcos(2.0 * M_PI * i / circle_subdiv) * ir, - fsin(2.0 * M_PI * i / circle_subdiv) * ir, - w); - } - glVertex3f(or, 0.0, w); - glVertex3f(ir, 0.0, w); - glEnd(); - - } - } -} - -void -draw_inside(float w1, float w2, float rad) -{ - - int i, j; - float c, s; - if (poo) - printf("Inside: wid=%f..%f rad=%f\n", w1, w2, rad); - if (w1 == w2) - return; - - w1 = w1 / 2; - w2 = w2 / 2; - for (j = 0; j < 2; j++) { - if (j == 1) { - w1 = -w1; - w2 = -w2; - } - glBegin(GL_TRIANGLE_STRIP); - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(rad, 0.0, w1); - glVertex3f(rad, 0.0, w2); - for (i = 1; i < circle_subdiv; i++) { - c = fcos(2.0 * M_PI * i / circle_subdiv); - s = fsin(2.0 * M_PI * i / circle_subdiv); - glNormal3f(-c, -s, 0.0); - glVertex3f(c * rad, - s * rad, - w1); - glVertex3f(c * rad, - s * rad, - w2); - } - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(rad, 0.0, w1); - glVertex3f(rad, 0.0, w2); - glEnd(); - } -} - -void -draw_outside(float w1, float w2, float rad) -{ - - int i, j; - float c, s; - if (poo) - printf("Outsid: wid=%f..%f rad=%f\n", w1, w2, rad); - if (w1 == w2) - return; - - w1 = w1 / 2; - w2 = w2 / 2; - for (j = 0; j < 2; j++) { - if (j == 1) { - w1 = -w1; - w2 = -w2; - } - glBegin(GL_TRIANGLE_STRIP); - glNormal3f(1.0, 0.0, 0.0); - glVertex3f(rad, 0.0, w1); - glVertex3f(rad, 0.0, w2); - for (i = 1; i < circle_subdiv; i++) { - c = fcos(2.0 * M_PI * i / circle_subdiv); - s = fsin(2.0 * M_PI * i / circle_subdiv); - glNormal3f(c, s, 0.0); - glVertex3f(c * rad, - s * rad, - w1); - glVertex3f(c * rad, - s * rad, - w2); - } - glNormal3f(1.0, 0.0, 0.0); - glVertex3f(rad, 0.0, w1); - glVertex3f(rad, 0.0, w2); - glEnd(); - } -} - -Profile gear_profile[] = -{0.000, 0.0, - 0.300, 7.0, - 0.340, 0.4, - 0.550, 0.64, - 0.600, 0.4, - 0.950, 1.0 -}; - -float a1 = 27.0; -float a2 = 67.0; -float a3 = 47.0; -float a4 = 87.0; -float i1 = 1.2; -float i2 = 3.1; -float i3 = 2.3; -float i4 = 1.1; -void -oneFrame(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(0.0, 0.0, -4.0); - glRotatef(a3, 1.0, 1.0, 1.0); - glRotatef(a4, 0.0, 0.0, -1.0); - glTranslatef(0.14, 0.2, 0.0); - gear(76, - 0.4, 2.0, 1.1, - 0.4, 0.04, - sizeof(gear_profile) / sizeof(Profile), gear_profile); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.1, 0.2, -3.8); - glRotatef(a2, -4.0, 2.0, -1.0); - glRotatef(a1, 1.0, -3.0, 1.0); - glTranslatef(0.0, -0.2, 0.0); - gear(36, - 0.4, 2.0, 1.1, - 0.7, 0.2, - sizeof(gear_profile) / sizeof(Profile), gear_profile); - glPopMatrix(); - - a1 += i1; - if (a1 > 360.0) - a1 -= 360.0; - if (a1 < 0.0) - a1 -= 360.0; - a2 += i2; - if (a2 > 360.0) - a2 -= 360.0; - if (a2 < 0.0) - a2 -= 360.0; - a3 += i3; - if (a3 > 360.0) - a3 -= 360.0; - if (a3 < 0.0) - a3 -= 360.0; - a4 += i4; - if (a4 > 360.0) - a4 -= 360.0; - if (a4 < 0.0) - a4 -= 360.0; - if (mode == GLUT_SINGLE) { - glFlush(); - } else { - glutSwapBuffers(); - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, d_near, d_far); - /** - use perspective instead: - - if (w <= h){ - glOrtho( 0.0, 1.0, - 0.0, 1.0 * (GLfloat) h / (GLfloat) w, - -16.0, 4.0); - }else{ - glOrtho( 0.0, 1.0 * (GLfloat) w / (GLfloat) h, - 0.0, 1.0, - -16.0, 4.0); - } - */ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -} - -void -visibility(int status) -{ - if (status == GLUT_VISIBLE) { - glutIdleFunc(oneFrame); - } else { - glutIdleFunc(NULL); - } - -} - -void -myinit(void) -{ - float f[20]; - glClearColor(0.0, 0.0, 0.0, 0.0); - myReshape(640, 480); - /* glShadeModel(GL_FLAT); */ - glEnable(GL_DEPTH_TEST); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glEnable(GL_LIGHTING); - - glLightf(GL_LIGHT0, GL_SHININESS, 1.0); - f[0] = 1.3; - f[1] = 1.3; - f[2] = -3.3; - f[3] = 1.0; - glLightfv(GL_LIGHT0, GL_POSITION, f); - f[0] = 0.8; - f[1] = 1.0; - f[2] = 0.83; - f[3] = 1.0; - glLightfv(GL_LIGHT0, GL_SPECULAR, f); - glLightfv(GL_LIGHT0, GL_DIFFUSE, f); - glEnable(GL_LIGHT0); - - glLightf(GL_LIGHT1, GL_SHININESS, 1.0); - f[0] = -2.3; - f[1] = 0.3; - f[2] = -7.3; - f[3] = 1.0; - glLightfv(GL_LIGHT1, GL_POSITION, f); - f[0] = 1.0; - f[1] = 0.8; - f[2] = 0.93; - f[3] = 1.0; - glLightfv(GL_LIGHT1, GL_SPECULAR, f); - glLightfv(GL_LIGHT1, GL_DIFFUSE, f); - glEnable(GL_LIGHT1); - - /* gear material */ - f[0] = 0.1; - f[1] = 0.15; - f[2] = 0.2; - f[3] = 1.0; - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, f); - - f[0] = 0.9; - f[1] = 0.3; - f[2] = 0.3; - f[3] = 1.0; - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, f); - - f[0] = 0.4; - f[1] = 0.9; - f[2] = 0.6; - f[3] = 1.0; - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, f); - - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 4); -} - -/* ARGSUSED1 */ -void -keys(unsigned char c, int x, int y) -{ - - if (c == 0x1b) - exit(0); /* escape */ -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (argc > 1) - mode = GLUT_SINGLE; - glutInitDisplayMode(mode | GLUT_RGB | GLUT_DEPTH); - glutInitWindowPosition(100, 100); - glutInitWindowSize(640, 480); - glutCreateWindow(argv[0]); - - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(keys); - glutVisibilityFunc(visibility); - glutPostRedisplay(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/gears.dsp b/lib/glut-3.7.6/progs/contrib/gears.dsp deleted file mode 100644 index 1fa4c54ca1f32010c97380b63889f62503b19fd3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/gears.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gears" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gears - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gears.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gears.mak" CFG="gears - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gears - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gears - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gears - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gears - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gears - Win32 Release" -# Name "gears - Win32 Debug" -# Begin Source File - -SOURCE=.\gears.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/hanoi.c b/lib/glut-3.7.6/progs/contrib/hanoi.c deleted file mode 100644 index 46db95290bf424f88369b42468c498eddabb0f3f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/hanoi.c +++ /dev/null @@ -1,469 +0,0 @@ - -/* hanoi.c - written by Greg Humphreys while an intern at SGI */ - -#include -#include -#include -#include - -double WIDTH = 800; -double HEIGHT = 800; - -GLboolean motion = GL_TRUE; -GLboolean back_wall = GL_FALSE; -GLint xangle = 0, yangle = 0; -GLint xlangle = 0, ylangle = 0; - -#define other(i,j) (6-(i+j)) -#define wallz -(WIDTH/2) -#define DISK_HEIGHT 20 -int NUM_DISKS = 11; -#define CONE NUM_DISKS+1 -#define WALL CONE + 1 -#define HANOI_SOLVE 0 -#define HANOI_QUIT 1 -#define HANOI_LIGHTING 2 -#define HANOI_WALL 3 -#define HANOI_FOG 4 - -GLfloat lightOneDirection[] = -{0, 0, -1}; -GLfloat lightOnePosition[] = -{200, 100, 300, 1}; -GLfloat lightOneColor[] = -{1.0, 1.0, 0.5, 1.0}; - -GLfloat lightTwoDirection[] = -{0, 0, -1}; -GLfloat lightTwoPosition[] = -{600, 100, 300, 1}; -GLfloat lightTwoColor[] = -{1.0, 0.0, 0.3, 1.0}; - -GLfloat lightZeroPosition[] = -{400, 200, 300, 1}; -GLfloat lightZeroColor[] = -{.3, .3, .3, .3}; - -GLfloat diskColor[] = -{1.0, 1.0, 1.0, .8}, poleColor[] = -{1.0, 0.2, 0.2, .8}; - -typedef struct stack_node { - int size; - struct stack_node *next; -} stack_node; - -typedef struct stack { - struct stack_node *head; - int depth; -} stack; - -stack poles[4]; - -void -push(int which, int size) -{ - stack_node *node = malloc(sizeof(stack_node)); - if (!node) { - fprintf(stderr, "out of memory!\n"); - exit(-1); - } - node->size = size; - node->next = poles[which].head; - poles[which].head = node; - poles[which].depth++; -} - -int -pop(int which) -{ - int retval = poles[which].head->size; - stack_node *temp = poles[which].head; - poles[which].head = poles[which].head->next; - poles[which].depth--; - free(temp); - return retval; -} - -typedef struct move_node { - int t, f; - struct move_node *next; - struct move_node *prev; -} move_node; - -typedef struct move_stack { - int depth; - struct move_node *head, *tail; -} move_stack; - -move_stack moves; - -void -init(void) -{ - int i; - for (i = 0; i < 4; i++) { - poles[i].head = NULL; - poles[i].depth = 0; - } - moves.head = NULL; - moves.tail = NULL; - moves.depth = 0; - - for (i = 1; i <= NUM_DISKS; i++) { - glNewList(i, GL_COMPILE); - { - glutSolidTorus(DISK_HEIGHT / 2, 5 * i, 15, 15); - } - glEndList(); - } - glNewList(CONE, GL_COMPILE); - { - glutSolidCone(10, (NUM_DISKS + 1) * DISK_HEIGHT, 20, 20); - } - glEndList(); -} - -void -mpop(void) -{ - move_node *temp = moves.head; - moves.head = moves.head->next; - free(temp); - moves.depth--; -} - -void -mpush(int t, int f) -{ - move_node *node = malloc(sizeof(move_node)); - if (!node) { - fprintf(stderr, "Out of memory!\n"); - exit(-1); - } - node->t = t; - node->f = f; - node->next = NULL; - node->prev = moves.tail; - if (moves.tail) - moves.tail->next = node; - moves.tail = node; - if (!moves.head) - moves.head = moves.tail; - moves.depth++; -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: /* ESC */ - case 'q': - case 'Q': - exit(0); - } -} - -void -update(void) -{ - glutPostRedisplay(); -} - -void -DrawPost(int xcenter) -{ - glPushMatrix(); - { - glTranslatef(xcenter, 0, 0); - glRotatef(90, -1, 0, 0); - glCallList(CONE); - } glPopMatrix(); -} - -void -DrawPosts(void) -{ - glColor3fv(poleColor); - glLineWidth(10); - glMaterialfv(GL_FRONT, GL_DIFFUSE, poleColor); - DrawPost((int) WIDTH / 4); - DrawPost(2 * (int) WIDTH / 4); - DrawPost(3 * (int) WIDTH / 4); -} - -void -DrawDisk(int xcenter, int ycenter, int size) -{ - glPushMatrix(); - { - glTranslatef(xcenter, ycenter, 0); - glRotatef(90, 1, 0, 0); - glCallList(size); - } glPopMatrix(); -} - -void -DrawDooDads(void) -{ - int i; - stack_node *temp; - int xcenter, ycenter; - glColor3fv(diskColor); - glMaterialfv(GL_FRONT, GL_DIFFUSE, diskColor); - for (i = 1; i <= 3; i++) { - xcenter = i * WIDTH / 4; - for (temp = poles[i].head, ycenter = DISK_HEIGHT * poles[i].depth - DISK_HEIGHT / 2; temp; temp = temp->next, ycenter -= DISK_HEIGHT) { - DrawDisk(xcenter, ycenter, temp->size); - } - } -} - -#define MOVE(t,f) mpush((t),(f)) - -static void -mov(int n, int f, int t) -{ - int o; - - if (n == 1) { - MOVE(t, f); - return; - } - o = other(f, t); - mov(n - 1, f, o); - mov(1, f, t); - mov(n - 1, o, t); -} - -GLfloat wallcolor[] = -{0, .3, 1, 1}; - -void -DrawWall(void) -{ - int i; - int j; - glColor3fv(wallcolor); - for (i = 0; i < WIDTH; i += 10) { - for (j = 0; j < HEIGHT; j += 10) { - glBegin(GL_POLYGON); - { - glNormal3f(0, 0, 1); - glVertex3f(i + 10, j, wallz); - glVertex3f(i + 10, j + 10, wallz); - glVertex3f(i, j + 10, wallz); - glVertex3f(i, j, wallz); - } - glEnd(); - } - } -} - -void -draw(void) -{ - int t, f; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (back_wall) { - glMaterialfv(GL_FRONT, GL_DIFFUSE, wallcolor); - DrawWall(); - } - glPushMatrix(); - { - glTranslatef(WIDTH / 2, HEIGHT / 2, 0); - glRotatef(xlangle, 0, 1, 0); - glRotatef(ylangle, 1, 0, 0); - glTranslatef(-WIDTH / 2, -HEIGHT / 2, 0); - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - } - glPopMatrix(); - - glPushMatrix(); - { - glTranslatef(WIDTH / 2, HEIGHT / 2, 0); - glRotatef(xangle, 0, 1, 0); - glRotatef(yangle, 1, 0, 0); - glTranslatef(-WIDTH / 2, -HEIGHT / 2, 0); - DrawPosts(); - DrawDooDads(); - } - glPopMatrix(); - if (motion && moves.depth) { - t = moves.head->t; - f = moves.head->f; - push(t, pop(f)); - mpop(); - } - glutSwapBuffers(); -} - -void -hanoi_menu(int value) -{ - switch (value) { - case HANOI_SOLVE: - motion = !motion; - if(motion) { - glutIdleFunc(update); - } else { - glutIdleFunc(NULL); - } - break; - case HANOI_LIGHTING: - if (glIsEnabled(GL_LIGHTING)) - glDisable(GL_LIGHTING); - else - glEnable(GL_LIGHTING); - break; - case HANOI_WALL: - back_wall = !back_wall; - break; - case HANOI_FOG: - if (glIsEnabled(GL_FOG)) - glDisable(GL_FOG); - else { - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_EXP); - glFogf(GL_FOG_DENSITY, .01); - } - break; - case HANOI_QUIT: - exit(0); - break; - } - glutPostRedisplay(); -} - -int oldx, oldy; - -GLboolean leftb = GL_FALSE, middleb = GL_FALSE; - -void -hanoi_mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - oldx = x; - oldy = y; - if (state == GLUT_DOWN) - leftb = GL_TRUE; - else - leftb = GL_FALSE; - } - if (button == GLUT_MIDDLE_BUTTON) { - oldx = x; - oldy = y; - if (state == GLUT_DOWN) - middleb = GL_TRUE; - else - middleb = GL_FALSE; - } -} - -void -hanoi_visibility(int state) -{ - if (state == GLUT_VISIBLE && motion) { - glutIdleFunc(update); - } else { - glutIdleFunc(NULL); - } -} - -void -hanoi_motion(int x, int y) -{ - if (leftb) { - xangle -= (x - oldx); - yangle -= (y - oldy); - } - if (middleb) { - xlangle -= (x - oldx); - ylangle -= (y - oldy); - } - oldx = x; - oldy = y; - glutPostRedisplay(); -} - -int -main(int argc, char *argv[]) -{ - int i; - - glutInit(&argc, argv); - for(i=1; i= argc) { - printf("hanoi: number after -n is required\n"); - exit(1); - } - NUM_DISKS = atoi(argv[i]); - } - } - - glutInitWindowSize((int) WIDTH, (int) HEIGHT); - glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); - - glutCreateWindow("Hanoi"); - - glutDisplayFunc(draw); - glutKeyboardFunc(keyboard); - - glViewport(0, 0, (GLsizei) WIDTH, (GLsizei) HEIGHT); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, WIDTH, 0, HEIGHT, -10000, 10000); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glClearColor(0, 0, 0, 0); - glClearDepth(1.0); - - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - -/* glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); */ - - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 10); - glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, lightOneDirection); - glEnable(GL_LIGHT1); - - glLightfv(GL_LIGHT2, GL_POSITION, lightTwoPosition); - glLightfv(GL_LIGHT2, GL_DIFFUSE, lightTwoColor); -/* glLightf(GL_LIGHT2,GL_LINEAR_ATTENUATION,.005); */ - glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 10); - glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, lightTwoDirection); - glEnable(GL_LIGHT2); - - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glEnable(GL_LIGHT0); - - glEnable(GL_LIGHTING); - - glutMouseFunc(hanoi_mouse); - glutMotionFunc(hanoi_motion); - glutVisibilityFunc(hanoi_visibility); - - glutCreateMenu(hanoi_menu); - glutAddMenuEntry("Solve", HANOI_SOLVE); - glutAddMenuEntry("Lighting", HANOI_LIGHTING); - glutAddMenuEntry("Back Wall", HANOI_WALL); - glutAddMenuEntry("Fog", HANOI_FOG); - glutAddMenuEntry("Quit", HANOI_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - init(); - - for (i = 0; i < NUM_DISKS; i++) - push(1, NUM_DISKS - i); - mov(NUM_DISKS, 1, 3); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/hanoi.dsp b/lib/glut-3.7.6/progs/contrib/hanoi.dsp deleted file mode 100644 index 20abbbfcc79a3afe7ebde1e4830792ecdf1c5ee5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/hanoi.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="hanoi" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=hanoi - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "hanoi.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "hanoi.mak" CFG="hanoi - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "hanoi - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "hanoi - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "hanoi - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "hanoi - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "hanoi - Win32 Release" -# Name "hanoi - Win32 Debug" -# Begin Source File - -SOURCE=.\hanoi.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/hanoi2.c b/lib/glut-3.7.6/progs/contrib/hanoi2.c deleted file mode 100644 index ebe660196ba629f48004897ebce5867b5eabb00a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/hanoi2.c +++ /dev/null @@ -1,444 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#define MAX_DISKS 6 - -#define DISK_HEIGHT 0.2 -#define CYL_RADIUS 0.1 -#define CYL_HEIGHT 1.8 -#define OVER_CLICKS 120 -#define UP_CLICKS 120 - -enum {X=0, Y, Z}; -enum {DL_POLE=1, DL_FLOOR, DL_DISK}; /* disk must be last */ - -/* motion states */ -enum {ST_UP=1, ST_TO_1, ST_TO_2, ST_DOWN, ST_READNEXT, ST_IDLE}; - -int motion = 1; -int spinning = 1; -int click = 0; -int delay = 0; -int direction; -int state=ST_READNEXT; -int c_pole; -int old_pole; -int c_disk; -int engine_fd; -int engine_pid; - -float pole_offset[3][2] = { { 0, -0.575 }, - { 1.15, 0.575 }, - { -1.15, 0.575 } }; -float disk_offset[MAX_DISKS][3] = {{ 0, -0.575, 0}, - { 0, -0.575, 0}, - { 0, -0.575, 0}, - { 0, -0.575, 0}, - { 0, -0.575, 0}, - { 0, -0.575, 0}}; -float disk_incr[3] = { 0, 0, 0 }; - -int num_disks; -struct { - int num_disks; - int disks[MAX_DISKS]; -} disks_on_poles[3]; - -/* - * create display list for disk of outside radius orad - */ -void -diskdlist(int dlist, float orad) -{ - GLUquadricObj *obj; - - obj = gluNewQuadric(); - if (obj == 0) { - perror("can't alloc quadric"); - exit(1); - } - glNewList(dlist, GL_COMPILE); - glPushMatrix(); - glColor4ub(205, 67, 100, 200); - gluQuadricDrawStyle(obj, GLU_FILL); - - gluQuadricOrientation(obj, GLU_OUTSIDE); - gluCylinder(obj, orad, orad, DISK_HEIGHT, 20, 4); - - gluQuadricOrientation(obj, GLU_INSIDE); - gluCylinder(obj, CYL_RADIUS, CYL_RADIUS, DISK_HEIGHT, 20, 4); - - gluQuadricOrientation(obj, GLU_INSIDE); - gluDisk(obj, CYL_RADIUS, orad, 20, 4); - - gluQuadricOrientation(obj, GLU_OUTSIDE); - glPushMatrix(); - glTranslatef(0.0, 0.0, DISK_HEIGHT); - gluDisk(obj, CYL_RADIUS, orad, 20, 4); - glPopMatrix(); - glPopMatrix(); - glEndList(); -} - -/* - * create display list for pole - */ -void -poledlist(int dlist) -{ - GLUquadricObj *obj; - - obj = gluNewQuadric(); - if (obj == 0) { - perror("can't alloc quadric"); - exit(1); - } - - glNewList(dlist, GL_COMPILE); - glPushMatrix(); - glColor3ub(67, 205, 128); - gluQuadricDrawStyle(obj, GLU_FILL); - gluQuadricOrientation(obj, GLU_OUTSIDE); - - gluCylinder(obj, CYL_RADIUS, CYL_RADIUS, CYL_HEIGHT, 12, 3); - - gluQuadricOrientation(obj, GLU_INSIDE); - gluDisk(obj, 0.0, CYL_RADIUS, 12, 3); - - gluQuadricOrientation(obj, GLU_OUTSIDE); - glPushMatrix(); - glTranslatef(0.0, 0.0, CYL_HEIGHT); - gluDisk(obj, 0.0, CYL_RADIUS, 12, 3); - glPopMatrix(); - glPopMatrix(); - glEndList(); - -} - -/* - * create display list for floor - */ -void -floordlist(int dlist) -{ - glNewList(dlist, GL_COMPILE); - glPushMatrix(); - glColor4ub(90, 100, 230,100); - - /* top/bottom */ - glBegin(GL_TRIANGLE_STRIP); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(-2.0, -2.0, 0); - glVertex3f(2.0, -2.0, 0); - glVertex3f(-2.0, 2.0, 0); - glVertex3f(2.0, 2.0, 0); - glEnd(); - glPushMatrix(); - glTranslatef(0, 0, -0.2); - glBegin(GL_TRIANGLE_STRIP); - glNormal3f(0.0, 0.0, -1.0); - glVertex3f(2.0, -2.0, 0); - glVertex3f(-2.0, -2.0, 0); - glVertex3f(2.0, 2.0, 0); - glVertex3f(-2.0, 2.0, 0); - glEnd(); - glPopMatrix(); - - /* edges */ - glBegin(GL_TRIANGLE_STRIP); - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(-2.0, -2.0, -0.2); - glVertex3f(-2.0, -2.0, 0); - glVertex3f(-2.0, 2.0, -0.2); - glVertex3f(-2.0, 2.0, 0); - glNormal3f(0.0, 1.0, 0.0); - glVertex3f(2.0, 2.0, -0.2); - glVertex3f(2.0, 2.0, 0); - glNormal3f(1.0, 0.0, 0.0); - glVertex3f(2.0, -2.0, -0.2); - glVertex3f(2.0, -2.0, 0); - glNormal3f(0.0, -1.0, 0.0); - glVertex3f(-2.0, -2.0, -0.2); - glVertex3f(-2.0, -2.0, 0); - glEnd(); - glPopMatrix(); - glEndList(); -} - -/* - * motion state machine -- idle loop - */ -void -idle(void) -{ - static int over_clicks; - int rc; - char next_move[3]; - - if (spinning) - click++; - - if (motion) { - switch(state) { - case ST_READNEXT: - /* - * read an instruction from the hanoi engine - */ - rc = read(engine_fd, next_move, 3); - if (rc == 3 && next_move[0] == 'M') { - /* choose poles/disks to move */ - old_pole = next_move[1]; - c_pole = next_move[2]; - c_disk = disks_on_poles[old_pole].disks[disks_on_poles[old_pole].num_disks - 1]; - state = ST_UP; - disk_incr[Z] = CYL_HEIGHT / (float)UP_CLICKS; - } - else if (rc == 3 && next_move[0] == 'D') { - state = ST_IDLE; - } - else if (rc != 0) { - fprintf(stderr,"bad read; %d, [%d%d%d]\n", - rc, next_move[0], next_move[1], next_move[2]); - exit(1); - } - /* if rc == 0, do nothing this frame */ - break; - - case ST_UP: - disk_offset[c_disk][Z] += disk_incr[Z]; - if (disk_offset[c_disk][Z] >= (CYL_HEIGHT+0.1)) { - state = ST_TO_1; - over_clicks = OVER_CLICKS; - disk_incr[X] = (pole_offset[c_pole][X] - - pole_offset[old_pole][X]) / (float)(over_clicks-1); - disk_incr[Y] = (pole_offset[c_pole][Y] - - pole_offset[old_pole][Y]) / (float)(over_clicks-1); - disk_incr[Z] = 0.0; - } - break; - - case ST_DOWN: - disk_offset[c_disk][Z] -= disk_incr[Z]; - if (disk_offset[c_disk][Z] <= (disks_on_poles[c_pole].num_disks*0.2+disk_incr[Z])) { - disk_offset[c_disk][Z] = disks_on_poles[c_pole].num_disks*0.2; - disks_on_poles[old_pole].num_disks --; - disks_on_poles[c_pole].disks[disks_on_poles[c_pole].num_disks ++] = c_disk; - state = ST_READNEXT; - } - break; - - case ST_TO_1: - case ST_TO_2: - disk_offset[c_disk][X] += disk_incr[X]; - disk_offset[c_disk][Y] += disk_incr[Y]; - over_clicks --; - if (over_clicks == 0) { - state = ST_DOWN; - disk_incr[X] = 0.0; - disk_incr[Y] = 0.0; - disk_incr[Z] = CYL_HEIGHT / (float)UP_CLICKS; - disk_offset[c_disk][X] = pole_offset[c_pole][X]; /* paranoia */ - disk_offset[c_disk][Y] = pole_offset[c_pole][Y]; - } - break; - - case ST_IDLE: - break; - } - } - glutPostRedisplay(); -} - -void -draw_scene(void) -{ - int i; - glPushMatrix(); - glRotatef(click, 0, 0, 1); - glRotatef(click/5.0, 1, 0, 0); - for (i=0; i<3; i++) { - glPushMatrix(); - glTranslatef(pole_offset[i][X], pole_offset[i][Y], 0); - glCallList(DL_POLE); - glPopMatrix(); - } - for(i=0; i MAX_DISKS) { - num_disks = MAX_DISKS; - } - break; - case 's': - spinning = atoi(optarg) ? 1 : 0; - break; - case 'm': - motion = atoi(optarg) ? 1 : 0; - break; - default: - break; - } - } - - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow("Hanoi"); - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glMatrixMode(GL_PROJECTION); - gluPerspective(40.0, 1.0, 0.1, 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0, 5.5, 3.5, - 0, 0, 0, - 0, 0, 1); - glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); -#ifndef TOOSLOW - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glEnable(GL_COLOR_MATERIAL); -#endif -#ifndef TOOSLOW - glShadeModel(GL_SMOOTH); -#endif - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); -#ifndef TOOSLOW - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); -#endif - glDepthFunc(GL_LEQUAL); - glClearColor(0.3, 0.3, 0.3, 0.0); -#ifndef TOOSLOW - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -#endif - - glPolygonMode(GL_FRONT, GL_FILL); - - glutCreateMenu(menu); - glutAddMenuEntry("Toggle motion", 2); - glutAddMenuEntry("Toggle spinning", 3); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); -#if defined(GL_POLYGON_OFFSET_EXT) - if (glutExtensionSupported("GL_EXT_polygon_offset")) { - glPolygonOffsetEXT(0.5, 0.0); - glEnable(GL_POLYGON_OFFSET_EXT); - } -#endif - - poledlist(DL_POLE); - floordlist(DL_FLOOR); - - disks_on_poles[0].num_disks = num_disks; - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=hanoi2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "hanoi2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "hanoi2.mak" CFG="hanoi2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "hanoi2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "hanoi2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "hanoi2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "hanoi2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "hanoi2___Win32_Debug" -# PROP BASE Intermediate_Dir "hanoi2___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "hanoi2 - Win32 Release" -# Name "hanoi2 - Win32 Debug" -# Begin Source File - -SOURCE=.\engine.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=.\hanoi2.c -# PROP Exclude_From_Build 1 -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/lineblend.c b/lib/glut-3.7.6/progs/contrib/lineblend.c deleted file mode 100644 index a844ce2a67122357355f9b0e73b161a1803a9f4c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/lineblend.c +++ /dev/null @@ -1,257 +0,0 @@ - -/* lineblend.c - * - * To compile: cc -o lineblend lineblend.c -lGL -lGLU -lX11 -lglut -lXmu - * - * Usage: lineblend - * - * This is an puffed up version of the first GL assignment we had for my - * graphics class: write a 2-d openGL program w/ color and interactivity. - * - * Left and middle buttons drawn colored lines, right button brings up a menu - * with a few options. If you draw for long enough and then hit pick - * "redraw" (or resize or uncover the window) it takes so long to redraw - * all the lines it is kind of like a kaleidoscope animation. Or something. - * - * Philip Winston - 2/11/95 (modified: 2/12) - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - * - */ - -#include - -#include -#include - -#ifdef _WIN32 -#define drand48() (((float) rand())/((float) RAND_MAX)) -#endif - -typedef enum {MENU_ALPHA_1, MENU_ALPHA_2, MENU_ALPHA_3, MENU_ALPHA_4, - MENU_COLOR_1, MENU_COLOR_2, MENU_COLOR_3, MENU_COLOR_4, - MENU_ANTI_ON, MENU_ANTI_OFF, - MENU_ERASE, MENU_REDRAW, MENU_QUIT} MenuChoices; - -typedef enum {SC1, SC2, SC3, SC4} ColorScheme; - -int wwidth, wheight, downbtn = -1, downx, downy; - -GLuint DispLists = 1; - -GLfloat Alpha = 0.2; -int Color = SC1; - -void myglInit(void) -{ - glLineWidth(10.0); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-0.5,0.5,-0.5,0.5); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glFlush(); -} - -void myreshape(GLsizei w, GLsizei h) -{ - wwidth = w; wheight = h; - glViewport(0,0,w,h); - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void mydisplay(void) -{ - GLuint i; - - glClear(GL_COLOR_BUFFER_BIT); - - for (i = 0; i < DispLists; i++) - glCallList(i); - - glFlush(); -} - -void drawline(int x, int y) -{ - GLfloat fx = (float)(x - downx)/wwidth, - fy = -((float)(y - downy)/wheight), - r1, g1, b1, r2, g2, b2; - - switch(Color) { /* four different ways to pick colors */ - case SC1: /* just kind of random formulas... */ - r1 = fy+1; g1 = 0; b1 = (float)x/wwidth; - r2 = 0; g2 = fy+1; b2 = 1-(float)x/wwidth; - break; - case SC2: - r1 = fx+fy+1; g1 = 0; b1 = 0; - r2 = 0; g2 = fx+fy+1; b2 = 0; - break; - case SC3: - r1 = 0; g1 = (float)downx/wwidth; b1 = (float)x/wwidth; - r2 = 0; g2 = (float)y/wheight; b2 = (float)downy/wheight; - break; - case SC4: - r1 = drand48(); g1 = drand48(); b1 = (float)downx/(wwidth*1.5); - r2 = drand48(); g2 = (float)downy/(wheight*1.5); b2 = drand48(); - break; - } - - - glBegin(GL_LINES); - glColor4f(r1, g1, b1, Alpha); - switch(downbtn) { - case GLUT_LEFT_BUTTON: glVertex2f(0,0); break; - case GLUT_MIDDLE_BUTTON: glVertex2f(-fx,-fy); break; - } - glColor4f(r2, g2, b2, Alpha); glVertex2f(fx,fy); - glEnd(); - - glFlush(); -} - -void mousebutton(int btn, int state, int x, int y) -{ - GLfloat fx = (float)x/wwidth - 0.5, - fy = -(float)y/wheight + 0.5; - - if (state == GLUT_DOWN && downbtn == -1) { - glNewList(DispLists++, GL_COMPILE_AND_EXECUTE); - glPushMatrix(); - glTranslatef(fx, fy, 0); - downbtn = btn; - downx = x; - downy = y; - drawline(x, y); - } else if (state == GLUT_UP && btn == downbtn) { - glPopMatrix(); - glEndList(); - downbtn = -1; - } -} - -/* - * For some reason I felt like doing these check boxes -- it is kind of - * lame the way I did it, though. Probably a smarter and easier way. - */ - -void handlealphamenu(int value) -{ - glutChangeToMenuEntry(1,"[ ] 0.05", MENU_ALPHA_1); - glutChangeToMenuEntry(2,"[ ] 0.20", MENU_ALPHA_2); - glutChangeToMenuEntry(3,"[ ] 0.50", MENU_ALPHA_3); - glutChangeToMenuEntry(4,"[ ] 1.00", MENU_ALPHA_4); - switch (value) { - case MENU_ALPHA_1: - glutChangeToMenuEntry(1, "[ * ] 0.05", MENU_ALPHA_1); - Alpha = 0.05; break; - case MENU_ALPHA_2: - glutChangeToMenuEntry(2, "[ * ] 0.20", MENU_ALPHA_2); - Alpha = 0.2; break; - case MENU_ALPHA_3: - glutChangeToMenuEntry(3, "[ * ] 0.50", MENU_ALPHA_3); - Alpha = 0.5; break; - case MENU_ALPHA_4: - glutChangeToMenuEntry(4, "[ * ] 1.00", MENU_ALPHA_4); - Alpha = 1.0; break; - } -} - -void handlecolormenu(int value) -{ - glutChangeToMenuEntry(1,"[ ] Various", MENU_COLOR_1); - glutChangeToMenuEntry(2,"[ ] Red/Green ", MENU_COLOR_2); - glutChangeToMenuEntry(3,"[ ] Blue/Green", MENU_COLOR_3); - glutChangeToMenuEntry(4,"[ ] Random", MENU_COLOR_4); - switch (value) { - case MENU_COLOR_1: - glutChangeToMenuEntry(1, "[ * ] Various", MENU_COLOR_1); - Color = SC1; break; - case MENU_COLOR_2: - glutChangeToMenuEntry(2, "[ * ] Red/Green", MENU_COLOR_2); - Color = SC2; break; - case MENU_COLOR_3: - glutChangeToMenuEntry(3, "[ * ] Blue/Green", MENU_COLOR_3); - Color = SC3; break; - case MENU_COLOR_4: - glutChangeToMenuEntry(4, "[ * ] Random", MENU_COLOR_4); - Color = SC4; break; - } -} - -void handlemenu(int value) -{ - switch (value) { - case MENU_ANTI_OFF: - glDisable(GL_LINE_SMOOTH); - glutChangeToMenuEntry(3, "anti-aliasing [NO]", MENU_ANTI_ON); - break; - case MENU_ANTI_ON: - glEnable(GL_LINE_SMOOTH); - glutChangeToMenuEntry(3, "anti-aliasing [YES]", MENU_ANTI_OFF); - break; - case MENU_REDRAW: - glutPostRedisplay(); - break; - case MENU_ERASE: - glDeleteLists(0, DispLists); - DispLists = 1; - mydisplay(); - break; - case MENU_QUIT: - exit(0); - break; - } -} - -void myMenuInit(void) -{ - int sub1,sub2,sub3; - - sub3 = glutCreateMenu(handlealphamenu); - glutAddMenuEntry("[ ] 0.05", MENU_ALPHA_1); - glutAddMenuEntry("[ * ] 0.20", MENU_ALPHA_2); - glutAddMenuEntry("[ ] 0.50", MENU_ALPHA_3); - glutAddMenuEntry("[ ] 1.00", MENU_ALPHA_4); - sub2 = glutCreateMenu(handlecolormenu); - glutAddMenuEntry("[ * ] Various", MENU_COLOR_1); - glutAddMenuEntry("[ ] Red/Green", MENU_COLOR_2); - glutAddMenuEntry("[ ] Blue/Green", MENU_COLOR_3); - glutAddMenuEntry("[ ] Random", MENU_COLOR_4); - sub1 = glutCreateMenu(handlemenu); - glutAddSubMenu("Colors", sub2); - glutAddSubMenu("Alpha", sub3); - glutAddMenuEntry("anti-aliasing [NO]", MENU_ANTI_ON); - glutCreateMenu(handlemenu); - glutAddSubMenu("Lines", sub1); - glutAddMenuEntry("Erase", MENU_ERASE); - glutAddMenuEntry("Redraw", MENU_REDRAW); - glutAddMenuEntry("Quit", MENU_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutCreateWindow("lineblend"); - - myglInit(); - myMenuInit(); - - glutReshapeFunc(myreshape); - glutMouseFunc(mousebutton); - glutMotionFunc(drawline); - glutDisplayFunc(mydisplay); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/contrib/lineblend.dsp b/lib/glut-3.7.6/progs/contrib/lineblend.dsp deleted file mode 100644 index ad2725848ec6ea6dd3c5e3ea2939366d07f66a16..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/lineblend.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lineblend" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=lineblend - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lineblend.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lineblend.mak" CFG="lineblend - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lineblend - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "lineblend - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lineblend - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "lineblend - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "lineblend - Win32 Release" -# Name "lineblend - Win32 Debug" -# Begin Source File - -SOURCE=.\lineblend.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/moth.c b/lib/glut-3.7.6/progs/contrib/moth.c deleted file mode 100644 index 2ba2affaad996c2c6006a2860e19f19f801be67a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/moth.c +++ /dev/null @@ -1,1372 +0,0 @@ -/* - "moth" by Robert Doyle, Naval Research Laboratory, Washington, DC. - Scene objects are built into display lists in the 'myInit' function - (look for three rows of I's). Objects are assembled and motion - described in the 'display' function (look for three rows of $'s). -*/ -#include -#include -#include -#include -#include - -GLfloat wall_color[] = {1.0, 1.0, 1.0, 1.0}; -GLfloat wall_ambient[] = {0.5, 0.5, 0.5, 1.0}; -GLfloat floor_color[] = {0.5, 1.0, 0.5, 0.5}; -GLfloat column_color[] = {1.0, 0.0, 0.0, 1.0}; -GLfloat column_ambient[] = {0.25, 0.0, 0.0, 1.0}; - -GLfloat panel_color[] = {0.1, 0.1, 1.0, 1.0}; -GLfloat panel_ambient[] = {0.01, 0.01, 0.3, 1.0}; - -GLfloat lamp_ambient[] = {1.0, 1.0, 1.0, 1.0}; -GLfloat lamp_diffuse[] = {1.0, 1.0, 1.0, 1.0}; -GLfloat lamp_specular[] = {1.0, 1.0, 1.0, 1.0}; -GLfloat lamp_post_diffuse[] = {0.8, 0.0, 0.0, 1.0}; -GLfloat lamp_post_specular[] = {0.8, 0.0, 0.0, 1.0}; -GLfloat lamp_post_ambient[] = {0.25, 0.0, 0.0, 1.0}; - -GLfloat satellite_diffuse[] = {1.0, 0.69, 0.0, 1.0}; -GLfloat satellite_shiny[] = {128.0}; -GLfloat satellite_specular[] = {1.0, 1.0, 1.0, 1.0}; -GLfloat satellite_ambient[] = {0.37, 0.25, 0.0, 1.0}; - -GLfloat cube_color[] = {1.0, 1.0, 0.0, 1.0}; -GLfloat cube_shiny[] = {99.0}; -GLfloat cube_specular[] = {0.9, 0.9, 0.9, 1.0}; -GLfloat cube_ambient[] = {0.1, 0.1, 0.1, 1.0}; - -GLfloat shadow_ambient[] = {0.0, 0.0, 0.0, 1.0}; -GLfloat shadow_diffuse[] = {0.0, 0.0, 0.0, 0.3}; -GLfloat shadow_shiny[] = {0.0}; -GLfloat shadow_specular[] = {0.0, 0.0, 0.0, 1.0}; - -GLuint column = 3; -GLuint ground_shadow_matrix = 16; -GLuint left_wall_shadow_matrix = 17; -GLuint ground = 30; -GLuint left_wall = 40; -GLuint right_wall = 50; -GLuint four_columns = 7; -GLuint two_columns = 32; -GLuint satellite1 = 301; -GLuint satellite2 = 302; -GLuint panel1 = 303; -GLuint panel2 = 304; - -static GLfloat Tx = -0.01; -static GLfloat Ty = -0.01; -static GLfloat Tz = -0.02; -#if 0 -static GLfloat mvt_zi = -0.7; -#endif -#if 0 -static GLfloat mvt_x = 0.0; -static GLfloat mvt_y = 0.0; -static GLfloat mvt_z = -0.7; -#endif - -static GLfloat mvt_x = -15.0; -static GLfloat mvt_y = -15.0; -static GLfloat mvt_z = -30.7; - -/*static GLfloat Rx = 0.1; -static GLfloat mvr_d = 0.0; -static GLfloat mvr_x = 1.0; -static GLfloat mvr_y = -1.0; -static GLfloat mvr_z = -1.0;*/ - -static GLfloat Rx = 0.1; -static GLfloat mvr_d = 150.0; -static GLfloat mvr_x = 1.0; -static GLfloat mvr_y = -1.0; -static GLfloat mvr_z = -1.0; - -GLfloat cubeXform[4][4]; -GLfloat column1Xform[4][4]; -GLfloat column2Xform[4][4]; -GLfloat column3Xform[4][4]; -GLfloat four_columnsXform[4][4]; - -/*static GLint nest[1];*/ -static float shadowMat_ground[4][4]; -static float shadowMat_left[4][4]; -static float shadowMat_back[4][4]; -static float shadowMat_column[4][4]; -static float shadowMat_right[4][4]; - -static float shadowMat1_ground[4][4]; -static float shadowMat1_left[4][4]; -static float shadowMat1_back[4][4]; -static float shadowMat1_right[4][4]; - -static int useDB = 1; - -static int tick = -1; -static int moving = 1; - -#if 0 -static float lmodel_ambient[4] = {0.2, 0.2, 0.2, 1.0}; -#endif -static float lightPos[4] = {1.0, 2.5, 3.0, 1.0}; -#if 0 -static float lightDir[4] = {-2.0, -4.0, -2.0, 1.0}; -static float lightAmb[4] = {0.2, 0.2, 0.2, 1.0}; -static float lightDiff[4] = {0.3, 0.3, 0.3, 1.0}; -static float lightSpec[4] = {0.4, 0.4, 0.4, 1.0}; -#endif - -static float light1Pos[4] = {0.0, 1.6, -5.0, 1.0}; -static float light1Amb[4] = {1.0, 1.0, 1.0, 1.0}; -static float light1Diff[4] = {1.0, 1.0, 1.0, 1.0}; -static float light1Spec[4] = {1.0, 1.0, 1.0, 1.0}; - -static float leftPlane[4] = {1.0, 0.0, 0.0, 4.88}; /* X = -4.88 */ -static float rightPlane[4] = {-1.0, 0.0, 0.0, 4.88}; /* X = 4.98 */ -static float groundPlane[4] = {0.0, 1.0, 0.0, 1.450}; /* Y = -1.480 */ -static float columnPlane[4] = {0.0, 0.0, 1.0, 0.899}; /* Z = -0.899 */ -static float backPlane[4] = {0.0, 0.0, 1.0, 8.98}; /* Z = -8.98 */ - -#define S 0.7071 -#define NS 0.382683 -#define NC 0.923880 - -/* satellite body. */ -static float oct_vertices[8][3][4] = -{ - { - {0.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {-S, S, 0.0, 1.0}}, - - { - {0.0, 0.0, 0.0, 1.0}, - {-S, S, 0.0, 1.0}, - {-1.0, 0.0, 0.0, 1.0}}, - - { - {0.0, 0.0, 0.0, 1.0}, - {-1.0, 0.0, 0.0, 1.0}, - {-S, -S, 0.0, 1.0}}, - - { - {0.0, 0.0, 0.0, 1.0}, - {-S, -S, 0.0, 1.0}, - {0.0, -1.0, 0.0, 1.0}}, - - { - {0.0, 0.0, 0.0, 1.0}, - {0.0, -1.0, 0.0, 1.0}, - {S, -S, 0.0, 1.0}}, - - { - - {0.0, 0.0, 0.0, 1.0}, - {S, -S, 0.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}}, - - { - {0.0, 0.0, 0.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {S, S, 0.0, 1.0}}, - - { - {0.0, 0.0, 0.0, 1.0}, - {S, S, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}} - -}; - -static float oct_side_vertices[8][4][4] = -{ - { - {-S, S, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {0.0, 1.0, -1.0, 1.0}, - {-S, S, -1.0, 1.0}}, - - { - {-1.0, 0.0, 0.0, 1.0}, - {-S, S, 0.0, 1.0}, - {-S, S, -1.0, 1.0}, - {-1.0, 0.0, -1.0, 1.0}}, - - { - {-S, -S, 0.0, 1.0}, - {-1.0, 0.0, 0.0, 1.0}, - {-1.0, 0.0, -1.0, 1.0}, - {-S, -S, -1.0, 1.0}}, - - { - {0.0, -1.0, 0.0, 1.0}, - {-S, -S, 0.0, 1.0}, - {-S, -S, -1.0, 1.0}, - {0.0, -1.0, -1.0, 1.0}}, - - { - {S, -S, 0.0, 1.0}, - {0.0, -1.0, 0.0, 1.0}, - {0.0, -1.0, -1.0, 1.0}, - {S, -S, -1.0, 1.0}}, - - { - {1.0, 0.0, 0.0, 1.0}, - {S, -S, 0.0, 1.0}, - {S, -S, -1.0, 1.0}, - {1.0, 0.0, -1.0, 1.0}}, - - { - {S, S, 0.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {1.0, 0.0, -1.0, 1.0}, - {S, S, -1.0, 1.0}}, - - { - {0.0, 1.0, 0.0, 1.0}, - {S, S, 0.0, 1.0}, - {S, S, -1.0, 1.0}, - {0.0, 1.0, -1.0, 1.0}} - -}; - -static float oct_side_normals[8][3] = -{ - {-NS, NC, 0.0}, - {-NC, NS, 0.0}, - {-NC, -NS, 0.0}, - {-NS, -NC, 0.0}, - {NS, -NC, 0.0}, - {NC, -NS, 0.0}, - {NC, NS, 0.0}, - {NS, NC, 0.0} - -}; - -static float cube_vertexes[6][4][4] = -{ - { - {-1.0, -1.0, -1.0, 1.0}, - {-1.0, -1.0, 1.0, 1.0}, - {-1.0, 1.0, 1.0, 1.0}, - {-1.0, 1.0, -1.0, 1.0}}, - - { - {1.0, 1.0, 1.0, 1.0}, - {1.0, -1.0, 1.0, 1.0}, - {1.0, -1.0, -1.0, 1.0}, - {1.0, 1.0, -1.0, 1.0}}, - - { - {-1.0, -1.0, -1.0, 1.0}, - {1.0, -1.0, -1.0, 1.0}, - {1.0, -1.0, 1.0, 1.0}, - {-1.0, -1.0, 1.0, 1.0}}, - - { - {1.0, 1.0, 1.0, 1.0}, - {1.0, 1.0, -1.0, 1.0}, - {-1.0, 1.0, -1.0, 1.0}, - {-1.0, 1.0, 1.0, 1.0}}, - - { - {-1.0, -1.0, -1.0, 1.0}, - {-1.0, 1.0, -1.0, 1.0}, - {1.0, 1.0, -1.0, 1.0}, - {1.0, -1.0, -1.0, 1.0}}, - - { - {1.0, 1.0, 1.0, 1.0}, - {-1.0, 1.0, 1.0, 1.0}, - {-1.0, -1.0, 1.0, 1.0}, - {1.0, -1.0, 1.0, 1.0}} -}; - -static float cube_normals[6][4] = -{ - {-1.0, 0.0, 0.0, 0.0}, - {1.0, 0.0, 0.0, 0.0}, - {0.0, -1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0, 0.0}, - {0.0, 0.0, -1.0, 0.0}, - {0.0, 0.0, 1.0, 0.0} -}; - -static void usage(void) -{ - printf("\n"); - printf("usage: moth\n"); - printf("\n"); - printf(" Open_gl demo.\n"); - printf("\n"); - printf(" Options:\n"); - printf(" Press the right mouse button for very limited options.\n"); - printf("\n"); -#ifndef EXIT_FAILURE /* should be defined by ANSI C */ -#define EXIT_FAILURE 1 -#endif - exit(EXIT_FAILURE); -} - -/*!!!!!!!!!!!!!!!!!!!!!! ERRORS? !!!!!!!!!!!!!!!!!!!!*/ - -static void checkErrors(void) -{ - GLenum error; - while ((error = glGetError()) != GL_NO_ERROR) { - fprintf(stderr, "Error: %s\n", (char *) gluErrorString(error)); - } -} - -/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ - -/*%%%%%%%%%%%%%%%%%%%% DRAW CUBE %%%%%%%%%%%%%%%%%%*/ - -static void -drawCube(GLfloat color[4], GLfloat ambient[4]) -{ - int i; - - glMaterialfv(GL_FRONT, GL_DIFFUSE, color); - glMaterialfv(GL_FRONT, GL_AMBIENT, ambient); - - for (i = 0; i < 6; ++i) { - glNormal3fv(&cube_normals[i][0]); - glBegin(GL_POLYGON); - glVertex4fv(&cube_vertexes[i][0][0]); - glVertex4fv(&cube_vertexes[i][1][0]); - glVertex4fv(&cube_vertexes[i][2][0]); - glVertex4fv(&cube_vertexes[i][3][0]); - glEnd(); - } -} - -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - -/*OOOOOOOOOOO DRAW OCTOGON TOP OOOOOOOOOOOOO*/ - -static void drawOct(void) -{ - int i; - - for (i = 0; i < 8; ++i) { - glNormal3f(0.0, 0.0, 1.0); - glBegin(GL_TRIANGLE_FAN); - glVertex4fv(&oct_vertices[i][0][0]); - glVertex4fv(&oct_vertices[i][1][0]); - glVertex4fv(&oct_vertices[i][2][0]); - glEnd(); - } -} - -/*OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO*/ - -/*oooooooooooDRAW OCTOGON SIDES ooooooooo*/ - -static void drawOctSides(void) -{ - int i; - - for (i = 0; i < 8; ++i) { - glNormal3fv(&oct_side_normals[i][0]); - glBegin(GL_POLYGON); - glVertex4fv(&oct_side_vertices[i][0][0]); - glVertex4fv(&oct_side_vertices[i][1][0]); - glVertex4fv(&oct_side_vertices[i][2][0]); - glVertex4fv(&oct_side_vertices[i][3][0]); - glEnd(); - } -} - -/*ooooooooooooooooooooooooooooooooooooooo*/ - -/*SSSSSSSSSSSSSSSS DRAW SATELLITE BODY SSSSSSSSSSSSSSSSSSS*/ - -static void drawSatellite(GLfloat diffuse[4], GLfloat ambient[4], GLfloat specular[4], GLfloat shiny[1]) -{ - - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); - glMaterialfv(GL_FRONT, GL_AMBIENT, ambient); - glMaterialfv(GL_FRONT, GL_SPECULAR, specular); - glMaterialfv(GL_FRONT, GL_SHININESS, shiny); - - - glPushMatrix(); - glScalef(0.3, 0.3, 0.9); - glPushMatrix(); - drawOctSides(); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.0, 0.0, 0.0); - drawOct(); - glPopMatrix(); - glPushMatrix(); - glRotatef(180, 1.0, 0.0, 0.0); - glTranslatef(0.0, 0.0, 1.0); - drawOct(); - glPopMatrix(); - glPopMatrix(); -} - -/*SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS*/ - -/*PPPPPPPPPPPPPPPP DRAW SOLAR PANELS PPPPPPPPPPPP*/ - -static void drawPanels(GLfloat color[4], GLfloat ambient[4]) -{ - - glMaterialfv(GL_FRONT, GL_DIFFUSE, color); - glMaterialfv(GL_FRONT, GL_AMBIENT, ambient); - - glPushMatrix(); - glTranslatef(0.95, 0.0, -0.45); - glRotatef(45.0, 1.0, 0.0, 0.0); - glScalef(0.65, 0.20, 0.02); - drawCube(color, ambient); - glPopMatrix(); - -/* glPushMatrix(); - glTranslatef(0.95, 0.0, -0.45); - glTranslatef((1.3/3.0), 0.1, 0.01); - glRotatef(45.0, 1.0, 0.0, 0.0); - glScalef(0.65/3.2, 0.20/2.1, 0.08); - drawCube(color, ambient); - glPopMatrix(); -*/ - glPushMatrix(); - glTranslatef(-0.95, 0.0, -0.45); - glRotatef(45.0, 1.0, 0.0, 0.0); - glScalef(0.65, 0.20, 0.02); - drawCube(color, ambient); - glPopMatrix(); - -} -/*PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP*/ - -/*################ DRAW FLOOR ################*/ - -void drawFloor(GLfloat f_color[4], GLfloat ambient[4]) -{ - - glMaterialfv(GL_FRONT, GL_DIFFUSE, f_color); - glMaterialfv(GL_FRONT, GL_AMBIENT, ambient); - -/* glNormal3f (0.0, 0.0, 1.0); */ - - glBegin (GL_QUADS); - glVertex3f (-1.0, -1.0, 0.0); - glVertex3f (1.0, -1.0, 0.0); - glVertex3f (1.0, 1.0, 0.0); - glVertex3f (-1.0, 1.0, 0.0); - glEnd(); - -} - -/*################################################*/ - -/*||||||||||||||| DRAW GROUND |||||||||||||||||*/ - -/* Ground coordinates are in drawGround() below. Subdivision */ -/* of triangles id done by subDivide(). */ - - -void subDivide(float u1[3], float u2[3], float u3[3], int depth) -{ - -GLfloat u12[3]; -GLfloat u23[3]; -GLfloat u31[3]; - -GLint i; - - if(depth == 0) { - - glBegin (GL_POLYGON); - glNormal3f (0.0, 0.0, 1.0); glVertex3fv(u1); - glNormal3f (0.0, 0.0, 1.0); glVertex3fv(u2); - glNormal3f (0.0, 0.0, 1.0); glVertex3fv(u3); - glEnd(); - return; -} - - for(i = 0; i < 3; i++){ - - u12[i] = (u1[i] + u2[i]) / 2.0; - u23[i] = (u2[i] + u3[i]) / 2.0; - u31[i] = (u3[i] + u1[i]) / 2.0; - - } - - subDivide(u1, u12, u31, depth - 1); - subDivide(u2, u23, u12, depth - 1); - subDivide(u3, u31, u23, depth - 1); - subDivide(u12, u23, u31, depth - 1); - -} - -void drawGround(void) -{ - -/* Use two subdivided triangles for the unscaled 1X1 square. */ -/* Subdivide to this depth: */ - -GLint maxdepth = 2; - -/* Coordinates of first triangle: */ - -GLfloat u1[] = {-1.0, -1.0, 0.0}; -GLfloat u2[] = {1.0, -1.0, 0.0}; -GLfloat u3[] = {1.0, 1.0, 0.0}; - -/* Coordinates of second triangle: */ - -GLfloat v1[] = {-1.0, -1.0, 0.0}; -GLfloat v2[] = {1.0, 1.0, 0.0}; -GLfloat v3[] = {-1.0, 1.0, 0.0}; - - subDivide(u1, u2, u3, maxdepth); - subDivide(v1, v2, v3, maxdepth); - -} - - -/*|||||||||||||||||||||||||||||||||||||||||||*/ - -/* Matrix for shadow. From Mark Kilgard's "scube". */ - -static void -myShadowMatrix(float ground[4], float light[4], float shadowMat[4][4]) -{ - float dot; -/* float shadowMat[4][4]; */ - - dot = ground[0] * light[0] + - ground[1] * light[1] + - ground[2] * light[2] + - ground[3] * light[3]; - - shadowMat[0][0] = dot - light[0] * ground[0]; - shadowMat[1][0] = 0.0 - light[0] * ground[1]; - shadowMat[2][0] = 0.0 - light[0] * ground[2]; - shadowMat[3][0] = 0.0 - light[0] * ground[3]; - - shadowMat[0][1] = 0.0 - light[1] * ground[0]; - shadowMat[1][1] = dot - light[1] * ground[1]; - shadowMat[2][1] = 0.0 - light[1] * ground[2]; - shadowMat[3][1] = 0.0 - light[1] * ground[3]; - - shadowMat[0][2] = 0.0 - light[2] * ground[0]; - shadowMat[1][2] = 0.0 - light[2] * ground[1]; - shadowMat[2][2] = dot - light[2] * ground[2]; - shadowMat[3][2] = 0.0 - light[2] * ground[3]; - - shadowMat[0][3] = 0.0 - light[3] * ground[0]; - shadowMat[1][3] = 0.0 - light[3] * ground[1]; - shadowMat[2][3] = 0.0 - light[3] * ground[2]; - shadowMat[3][3] = dot - light[3] * ground[3]; - -/* glMultMatrixf((const GLfloat *) shadowMat); */ -} - -void -idle(void) -{ - tick++; - if (tick >= 60) { - tick = 0; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char ch, int x, int y) -{ - switch (ch) { - case 27: /* escape */ - exit(0); - break; - case ' ': - if (!moving) { - idle(); - glutPostRedisplay(); - } - } -} - -/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/ -/*$$$$$$$$$$$$$$$$$$$$$$ DISPLAY $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/ -/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/ - -void display(void) -{ - - - glPushMatrix(); /* Make sure the matrix stack is cleared at the end of this function. */ - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glLoadIdentity(); - -/*@@@@@@ Rotation and Translation of Entire Scene @@@@@*/ - - if(mvt_x < 0 && mvt_y < 0){ - glTranslatef(mvt_x ,mvt_y ,mvt_z ); - mvt_x = mvt_x - Tx; - mvt_y = mvt_y - Ty; - mvt_z = mvt_z - Tz; - - glRotatef(mvr_d, mvr_x, mvr_y, mvr_z); - mvr_d = mvr_d - Rx; - } - - else{ - glTranslatef(0.0, 0.0 ,mvt_z); - } - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -glPushMatrix(); - glLightfv(GL_LIGHT1, GL_POSITION, light1Pos); -glPopMatrix(); -/*______________________ Draw Floor _______________________*/ - -glPushMatrix(); - glCallList(ground); -glPopMatrix(); - -/*_________________________________________________________*/ - -/*@@@@@@@@@ Draw Lamp Post amd Lamp @@@@@@@@@@*/ - -glPushMatrix(); - glCallList(21); -glPopMatrix(); - -glPushMatrix(); - glCallList(22); -glPopMatrix(); - -glPushMatrix(); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glCallList(501); - glDisable(GL_BLEND); -glPopMatrix(); - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -/*||||||||||||||||||| Draw Left Wall ||||||||||||||||||*/ - - glCallList(left_wall); - -/*|||||||||||||||||||||||||||||||||||||||||||||||||||||*/ - -/*\\\\\\\\\\\\\\\\ Draw Right Wall \\\\\\\\\\\\\\*/ - - glCallList(right_wall); - -/*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ - -/*[[[[[[[[[[[[[[[[[[[ Draw Columns ]]]]]]]]]]]]]]]]]]]*/ - -/***** Place columns at front of scene. *****/ - - glCallList(four_columns); - -/***** Place columns at back of scene. *****/ - - glPushMatrix(); - glTranslatef(0.0, 0.0, -9.0); - glCallList(four_columns); - glPopMatrix(); - -/***** Place columns at centers of left and right walls. *****/ - - glCallList(two_columns); - -/*[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]*/ - - -/*....................... Draw Column Shadows ....................*/ - -/*glDepthMask(GL_FALSE); -glEnable(GL_BLEND); -glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);*/ - -/* shadows on floor */ - -/* glPushMatrix(); - glCallList(100); - glPopMatrix();*/ - -/* shdows on left wall */ - -/* glPushMatrix(); - glCallList(101); - glPopMatrix();*/ - -/* shdows on back wall */ - -/* glPushMatrix(); - glCallList(102); - glPopMatrix();*/ - -/* shdows on right wall */ - -/* glPushMatrix(); - glCallList(103); - glPopMatrix();*/ - -/*glDepthMask(GL_TRUE); -glDisable(GL_BLEND);*/ - -/*................................................................*/ - -/************************* CUBE ***********************/ - - glMaterialf(GL_FRONT, GL_SHININESS, 99.0); - glMaterialfv(GL_FRONT, GL_SPECULAR, cube_specular); - - glPushMatrix(); - glTranslatef(0.0, 0.0, -5.0); - glRotatef((360.0 / (30 * 2)) * tick, 0, 1, 0); - glPushMatrix(); - glTranslatef(0.0, 0.2, 2.0); -/* glTranslatef(0.0, 0.2, 0.0); */ -/* glScalef(0.3, 0.3, 0.3); */ - glRotatef((360.0 / (30 * 1)) * tick, 1, 0, 0); - glRotatef((360.0 / (30 * 2)) * tick, 0, 1, 0); - glRotatef((360.0 / (30 * 4)) * tick, 0, 0, 1); - - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) cubeXform); - -/* drawSatellite(satellite_diffuse, satellite_ambient, satellite_specular, satellite_shiny); */ - glCallList(satellite1); - glCallList(panel1); -/* drawPanels(panel_color, panel_ambient); */ - - glPopMatrix(); - glPopMatrix(); - - glMaterialf(GL_FRONT, GL_SHININESS, 0.0); - glMaterialfv(GL_FRONT, GL_SPECULAR, shadow_specular); - -/****************************************************/ - -/*................... CUBE SHADOWS .............................*/ - -/*glDepthMask(GL_FALSE);*/ -glEnable(GL_BLEND); -glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat1_ground); - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glMultMatrixf((const GLfloat *) cubeXform); - - -/* drawSatellite(shadow_diffuse, shadow_ambient, shadow_specular, shadow_shiny); */ /* draw ground shadow */ - glCallList(satellite2); - glTranslatef(0.0, -.040, 0.0); - glCallList(panel2); -/* drawPanels(shadow_diffuse, shadow_ambient); */ - glPopMatrix(); - -/* Shadow left wall only if cube is in front of left wall. */ - if((tick*6) >= 220 && (tick*6) <= 320) { - - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat1_left); - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glMultMatrixf((const GLfloat *) cubeXform); - drawSatellite(shadow_diffuse, shadow_ambient, shadow_specular, shadow_shiny); /* draw left shadow */ - drawPanels(shadow_diffuse, shadow_ambient); - glPopMatrix(); - - } - -/* Shadow back wall only if cube is in front of back wall. */ - if((tick*6) >= 125 && (tick*6) <= 330) { - - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat1_back); - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glMultMatrixf((const GLfloat *) cubeXform); - drawSatellite(shadow_diffuse, shadow_ambient, shadow_specular, shadow_shiny); /* draw back wall shadow */ - drawPanels(shadow_diffuse, shadow_ambient); - glPopMatrix(); - - } - -/* Shadow right wall only if cube is in front of right wall. */ - if((tick*6) >= 40 && (tick*6) <= 145) { - - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat1_right); - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glMultMatrixf((const GLfloat *) cubeXform); - drawSatellite(shadow_diffuse, shadow_ambient, shadow_specular, shadow_shiny); /* draw right wall shadow */ - drawPanels(shadow_diffuse, shadow_ambient); - glPopMatrix(); - - } - -/*glDepthMask(GL_TRUE);*/ -glDisable(GL_BLEND); - -/*.........................................................*/ - - glutSwapBuffers(); - - checkErrors(); - - glPopMatrix(); /* Clear the matrix stack */ - -} - -/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/ - -void -menu_select(int mode) -{ - switch (mode) { - case 1: - moving = 1; - glutIdleFunc(idle); - break; - case 2: - moving = 0; - glutIdleFunc(NULL); - break; - case 5: - exit(0); - break; - } -} - -void -visible(int state) -{ - if (state == GLUT_VISIBLE) { - if (moving) - glutIdleFunc(idle); - } else { - if (moving) - glutIdleFunc(NULL); - } -} - -/* IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/ -/* IIIIIIIIIIIIIIIIII INITIALIZE IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/ -/* IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/ - -void myInit(void) -{ - -/* glGetIntegerv(GL_MAX_CLIP_PLANES, nest); - printf("GL_MAX_CLIP_PLANES are %d \n", nest[0]); */ - -/*%%%%%%%% Initialize Positional Light and Ambient Light %%%%%%%%*/ - -#if 0 - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); -#endif - -#if 0 - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiff); - glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpec); - glEnable(GL_LIGHT0); -#endif - -/*** Initial light position is declared in the display function ***/ - - glLightfv(GL_LIGHT1, GL_AMBIENT, light1Amb); - glLightfv(GL_LIGHT1, GL_DIFFUSE, light1Diff); - glLightfv(GL_LIGHT1, GL_SPECULAR, light1Spec); - glEnable(GL_LIGHT1); - - glEnable(GL_LIGHTING); - -/* glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 0.7);*/ -/* glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.04);*/ /* use 0.04 w/ 24 bit color */ - glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.07); /* try 0.07 w/ 24 bit color */ - - -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - -/*########### Initialize Fog ##################*/ - -/* -{ - GLfloat fog_color[] = {0.5, 0.5, 0.5, 1.0}; - GLfloat fog_start[] = {0.0, 0.0, 1.0, 20.0}; - - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogfv(GL_FOG_COLOR, fog_color); - glFogf(GL_FOG_DENSITY, 0.35); - glFogfv(GL_FOG_START, fog_start); - glHint(GL_FOG_HINT, GL_FASTEST); -} - -*/ - -/*##########################################*/ - -/*....Shadow Matrices For Floor, Left Wall, Back Wall, and Right Wall......*/ - - -/* For light0 */ - - myShadowMatrix(groundPlane, lightPos, shadowMat_ground); - myShadowMatrix(leftPlane, lightPos, shadowMat_left); - myShadowMatrix(columnPlane, lightPos, shadowMat_column); - myShadowMatrix(backPlane, lightPos, shadowMat_back); - myShadowMatrix(rightPlane, lightPos, shadowMat_right); - -/* For light1 */ - - myShadowMatrix(groundPlane, light1Pos, shadowMat1_ground); - myShadowMatrix(leftPlane, light1Pos, shadowMat1_left); - myShadowMatrix(backPlane, light1Pos, shadowMat1_back); - myShadowMatrix(rightPlane, light1Pos, shadowMat1_right); - -/*.......................................................................*/ - -/*sssssssssssssssss Make Satellite Body and Shadow ssssssssssssssssssssssss*/ - - glNewList(satellite1, GL_COMPILE); - glPushMatrix(); - drawSatellite(satellite_diffuse, satellite_ambient, satellite_specular, satellite_shiny); - glPopMatrix(); - glEndList(); - glNewList(satellite2, GL_COMPILE); - glPushMatrix(); - drawSatellite(shadow_diffuse, shadow_ambient, shadow_specular, shadow_shiny); - glPopMatrix(); - glEndList(); - -/*sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss*/ - -/*ppppppppppppppppppppppppppp Make Solar Panels and Shadows pppppppppppppppppp*/ - - glNewList(panel1, GL_COMPILE); - glPushMatrix(); - drawPanels(panel_color, panel_ambient); - glPopMatrix(); - glEndList(); - - glNewList(panel2, GL_COMPILE); - glPushMatrix(); - drawPanels(shadow_diffuse, shadow_ambient); - glPopMatrix(); - glEndList(); - - -/*pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp*/ - -/*========= Make Floor ==============*/ - - glNewList(ground, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glMaterialfv(GL_FRONT, GL_DIFFUSE, floor_color); - glMaterialfv(GL_FRONT, GL_AMBIENT, shadow_ambient); - glTranslatef(0.0, -1.5, -5.0); - glRotatef(-90.0, 1, 0, 0); - glScalef(5.0, 5.0, 1.0); - drawGround(); /* draw ground */ - glPopAttrib(); - glPopMatrix(); - glEndList(); - -/*==================================*/ - -/*@@@@@@@@@@ Make Lamp Post and Lamp @@@@@@@@@@@@*/ - - glNewList(21, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glMaterialfv(GL_FRONT, GL_AMBIENT, lamp_post_specular); - glTranslatef(0.0, -0.1, -5.0); - glScalef(0.07, 1.45, 0.07); - drawCube(lamp_post_diffuse, lamp_post_ambient); /* draw lamp post */ - glPopAttrib(); - glPopMatrix(); - glPushMatrix(); - glTranslatef(0.0, -1.45, -5.0); - glScalef(0.3, 0.05, 0.3); - drawCube(wall_color, cube_ambient); /* draw lamp post base */ - glPopMatrix(); - glEndList(); - - glNewList(22, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glMaterialfv(GL_FRONT, GL_AMBIENT, lamp_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, lamp_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, lamp_specular); - glTranslatef(0.0, 1.6, -5.0); - glutSolidSphere(0.3, 20.0, 20.0); /* draw lamp */ - glPopAttrib(); - glPopMatrix(); - glEndList(); - -/*** Lamp post base shadow ***/ - - glNewList(501, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glMaterialfv(GL_FRONT, GL_AMBIENT, shadow_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, shadow_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, shadow_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, shadow_shiny); - glTranslatef(0.0, -1.49, -5.0); - glRotatef(-90.0, 1.0, 0.0, 0.0); - glScalef(0.7, 0.7, 1.0); - drawOct(); - glPopAttrib(); - glPopMatrix(); - glEndList(); - - - - - -/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ - -/*||||||||||| Make Left Wall |||||||||||||*/ - - glNewList(left_wall, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glMaterialfv(GL_FRONT, GL_DIFFUSE, wall_color); - glMaterialfv(GL_FRONT, GL_AMBIENT, wall_ambient); - glTranslatef(0.0, -1.5, 0.0); - glTranslatef(0.0, 1.2, 0.0); - glTranslatef(0.0, 0.0, -5.0); - glTranslatef(-5.0, 0.0, 0.0); - glRotatef(90.0, 0, 1, 0); - glScalef(4.5, 1.2, 1.0); - glNormal3f (0.0, 0.0, 1.0); - drawGround(); /* draw left wall */ - glPopAttrib(); - glPopMatrix(); - glEndList(); - -/*||||||||||||||||||||||||||||||||||||||||*/ - -/*\\\\\\\\\\\\\ Make Right Wall \\\\\\\\\\\\\\\\\\\*/ - - glNewList(right_wall, GL_COMPILE); - glPushMatrix(); - glPushAttrib(GL_LIGHTING_BIT); - glMaterialfv(GL_FRONT, GL_DIFFUSE, wall_color); - glMaterialfv(GL_FRONT, GL_AMBIENT, wall_ambient); - glTranslatef(0.0, -1.5, 0.0); - glTranslatef(0.0, 1.2, 0.0); - - glTranslatef(0.0, 0.0, -5.0); - glTranslatef(5.0, 0.0, 0.0); - glRotatef(270.0, 0, 1, 0); - - glScalef(4.5, 1.2, 1.0); - glNormal3f (0.0, 0.0, 1.0); - drawGround(); /* draw right wall */ - glPopAttrib(); - glPopMatrix(); - glEndList(); - -/*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ - -/*[[[[[[[[[[[ Build Columns ]]]]]]]]]]]*/ - -glPushMatrix(); - glNewList(1, GL_COMPILE); - glPushMatrix(); - glScalef(0.4, 1.4, 0.4); - drawCube(column_color, column_ambient); /* draw column1 */ - glPopMatrix(); - glEndList(); - - glNewList(2, GL_COMPILE); - glPushMatrix(); - glTranslatef(0.0, -1.45, 0.0); - glScalef(0.5, 0.1, 0.5); - drawCube(wall_color, cube_ambient); /* draw base */ - glPopMatrix(); - glPushMatrix(); - glTranslatef(0.0, 1.45, 0.0); - glScalef(0.5, 0.1, 0.5); - drawCube(wall_color, cube_ambient); /* draw top */ - glPopMatrix(); - glEndList(); -glPopMatrix(); - - glNewList(column, GL_COMPILE); - glPushMatrix(); - glCallList(1); - glCallList(2); - glPopMatrix(); - glEndList(); - -/***** Place columns at front of scene. *****/ - -glNewList(4, GL_COMPILE); - glPushMatrix(); - glTranslatef(-5.0, 0.0, -0.5); - glCallList(column); - glPopMatrix(); -glEndList(); - -glNewList(5, GL_COMPILE); - glPushMatrix(); - glTranslatef(-1.75, 0.0, -0.5); - glCallList(column); - glPopMatrix(); -glEndList(); - -glNewList(6, GL_COMPILE); - glPushMatrix(); - glTranslatef(1.75, 0.0, -0.5); - glCallList(column); - glPopMatrix(); -glEndList(); - -glNewList(17, GL_COMPILE); - glPushMatrix(); - glTranslatef(5.0, 0.0, -0.5); - glCallList(column); - glPopMatrix(); -glEndList(); - - -/*** Get the modelview matrix once ***/ - glPushMatrix(); - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) four_columnsXform); - glPopMatrix(); - -glNewList(four_columns, GL_COMPILE); - glPushMatrix(); - glCallList(4); - glCallList(5); - glCallList(6); - glCallList(17); - glPopMatrix(); -glEndList(); - -/***** Make two columns for sides of scene *****/ - -glNewList(two_columns, GL_COMPILE); - glPushMatrix(); - glRotatef(90.0, 0.0, 1.0, 0.0); - glTranslatef(5.0, 0.0, -5.0); - glPushMatrix(); - glTranslatef(0.0, 0.0, -0.3); - glCallList(column); - glPopMatrix(); - glPushMatrix(); - glTranslatef(0.0, 0.0, 10.3); - glCallList(column); - glPopMatrix(); - glPopMatrix(); -glEndList(); - - - - -/*[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]*/ - - -/* .......................Make shadows .........................*/ - - glPushMatrix(); - glNewList(8, GL_COMPILE); - glPushMatrix(); - glScalef(0.4, 1.4, 0.4); - drawCube(shadow_diffuse, shadow_ambient); /* draw column1 */ - glPopMatrix(); - glEndList(); - - - glNewList(9, GL_COMPILE); - glPushMatrix(); - glTranslatef(0.0, -1.45, 0.0); - glScalef(0.5, 0.1, 0.5); - drawCube(shadow_diffuse, shadow_ambient); /* draw base. */ - glPopMatrix(); - glPushMatrix(); - glTranslatef(0.0, 1.45, 0.0); - glScalef(0.5, 0.1, 0.5); - drawCube(shadow_diffuse, shadow_ambient); /* draw top. */ - glPopMatrix(); - glEndList(); - glPopMatrix(); - - glNewList(10, GL_COMPILE); - glPushMatrix(); - glCallList(8); - glCallList(9); - glPopMatrix(); - glEndList(); - -glNewList(11, GL_COMPILE); - glPushMatrix(); - glTranslatef(-5.0, 0.0, -0.5); - glCallList(10); - glPopMatrix(); -glEndList(); - -glNewList(12, GL_COMPILE); - glPushMatrix(); - glTranslatef(-1.75, 0.0, -0.5); - glCallList(10); - glPopMatrix(); -glEndList(); - -glNewList(13, GL_COMPILE); - glPushMatrix(); - glTranslatef(1.75, 0.0, -0.5 ); - glCallList(10); - glPopMatrix(); -glEndList(); - -glNewList(14, GL_COMPILE); - glPushMatrix(); - glTranslatef(5.0, 0.0, -0.5 ); - glCallList(10); - glPopMatrix(); -glEndList(); - -glNewList(15, GL_COMPILE); - glPushMatrix(); - glCallList(11); - glCallList(12); - glCallList(13); - glCallList(14); - glPopMatrix(); -glEndList(); - -glNewList(100, GL_COMPILE); - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat_ground); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glMultMatrixf((const GLfloat *) four_columnsXform); - glCallList(15); - glPopMatrix(); -glEndList(); - -glNewList(101, GL_COMPILE); - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat_left); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glMultMatrixf((const GLfloat *) four_columnsXform); - glCallList(15); - glPopMatrix(); -glEndList(); - -glNewList(102, GL_COMPILE); - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat_back); - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glMultMatrixf((const GLfloat *) four_columnsXform); - glCallList(15); - glPopMatrix(); -glEndList(); - -glNewList(103, GL_COMPILE); - glPushMatrix(); - glMultMatrixf((const GLfloat *) shadowMat_right); - glRotatef(-mvr_d, mvr_x, mvr_y, mvr_z); - glTranslatef(-mvt_x, -mvt_y, -mvt_z); /* correct for modelview matrix */ - glMultMatrixf((const GLfloat *) four_columnsXform); - glCallList(15); - glPopMatrix(); -glEndList(); - - -/* ......................................................*/ - -} - -/* IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/ - - -/* ////////////////////////////////////////////////////////////// */ -/* //////////////////////\ MAIN ///////////////////////////////// */ -/* ////////////////////////////////////////////////////////////// */ - -int main(int argc, char **argv) -{ - int width = 320, height = 240; - int i; - - char *name; - glutInitWindowSize(width, height); - glutInit(&argc, argv); - - /* process commmand line args */ - for (i = 1; i < argc; ++i) { - if (!strcmp("-db", argv[i])) { - useDB = !useDB; - } else { - usage(); - } - } - -/* choose visual */ - - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - name = "MOTH - by Bob Doyle"; - glutCreateWindow(name); - - glutKeyboardFunc(keyboard); - - myInit(); /* initialize objects in scene */ - glutDisplayFunc(display); - glutVisibilityFunc(visible); - - - glutCreateMenu(menu_select); - glutAddMenuEntry("Start motion", 1); - glutAddMenuEntry("Stop motion", 2); - glutAddMenuEntry("Quit", 5); - glutAddMenuEntry("Drink Ed's beer", 5); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - glFrustum(-.9, .9, -.9, .9, 1.0, 35.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -#if 0 - glTranslatef(0.0, 0.0, mvt_zi); -#endif - - glEnable(GL_NORMALIZE); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); /* double your fun */ - glShadeModel(GL_SMOOTH); - glDepthFunc(GL_LESS); - glDepthMask(GL_TRUE); - glEnable(GL_DEPTH_TEST); - myInit(); /* initialize objects in scene */ - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/moth.dsp b/lib/glut-3.7.6/progs/contrib/moth.dsp deleted file mode 100644 index 4c01451efc674758c102ee22662af9a26b1a3cc7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/moth.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="moth" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=moth - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "moth.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "moth.mak" CFG="moth - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "moth - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "moth - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "moth - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "moth - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "moth - Win32 Release" -# Name "moth - Win32 Debug" -# Begin Source File - -SOURCE=.\moth.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/noof.c b/lib/glut-3.7.6/progs/contrib/noof.c deleted file mode 100644 index d8835f80c103ec1bcd94112394e1d18edcde0ac5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/noof.c +++ /dev/null @@ -1,475 +0,0 @@ - -/* XXX Very crufty code follows. */ - -#include -#include - -#include -#ifndef _WIN32 -#include -#else -#define random rand -#define srandom srand -#include -#endif -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#include -#include - -/* For portability... */ -#undef fcos -#undef fsin -#define fcos cos -#define fsin sin - -/* --- shape parameters def'n --- */ -#define N_SHAPES 7 -float pos[N_SHAPES * 3]; -float dir[N_SHAPES * 3]; -float acc[N_SHAPES * 3]; -float col[N_SHAPES * 3]; -float hsv[N_SHAPES * 3]; -float hpr[N_SHAPES * 3]; -float ang[N_SHAPES]; -float spn[N_SHAPES]; -float sca[N_SHAPES]; -float geep[N_SHAPES]; -float peep[N_SHAPES]; -float speedsq[N_SHAPES]; -int blad[N_SHAPES]; - -float ht, wd; - -void -initshapes(int i) -{ - int k; - float f; - - /* random init of pos, dir, color */ - for (k = i * 3; k <= i * 3 + 2; k++) { - f = random() / (float)RAND_MAX; - pos[k] = f; - f = random() / (float)RAND_MAX; - f = (f - 0.5) * 0.05; - dir[k] = f; - f = random() / (float)RAND_MAX; - f = (f - 0.5) * 0.0002; - acc[k] = f; - f = random() / (float)RAND_MAX; - col[k] = f; - } - - speedsq[i] = dir[i * 3] * dir[i * 3] + dir[i * 3 + 1] * dir[i * 3 + 1]; - f = random() / (float)RAND_MAX; - blad[i] = 2 + (int) (f * 17.0); - f = random() / (float)RAND_MAX; - ang[i] = f; - f = random() / (float)RAND_MAX; - spn[i] = (f - 0.5) * 40.0 / (10 + blad[i]); - f = random() / (float)RAND_MAX; - sca[i] = (f * 0.1 + 0.08); - dir[i * 3] *= sca[i]; - dir[i * 3 + 1] *= sca[i]; - - f = random() / (float)RAND_MAX; - hsv[i * 3] = f * 360.0; - - f = random() / (float)RAND_MAX; - hsv[i * 3 + 1] = f * 0.6 + 0.4; - - f = random() / (float)RAND_MAX; - hsv[i * 3 + 2] = f * 0.7 + 0.3; - - f = random() / (float)RAND_MAX; - hpr[i * 3] = f * 0.005 * 360.0; - f = random() / (float)RAND_MAX; - hpr[i * 3 + 1] = f * 0.03; - f = random() / (float)RAND_MAX; - hpr[i * 3 + 2] = f * 0.02; - - geep[i] = 0; - f = random() / (float)RAND_MAX; - peep[i] = 0.01 + f * 0.2; -} - -int tko = 0; - -float bladeratio[] = -{ - /* nblades = 2..7 */ - 0.0, 0.0, 3.00000, 1.73205, 1.00000, 0.72654, 0.57735, 0.48157, - /* 8..13 */ - 0.41421, 0.36397, 0.19076, 0.29363, 0.26795, 0.24648, - /* 14..19 */ - 0.22824, 0.21256, 0.19891, 0.18693, 0.17633, 0.16687, -}; - -void -drawleaf(int l) -{ - - int b, blades; - float x, y; - float wobble; - - blades = blad[l]; - - y = 0.10 * fsin(geep[l] * M_PI / 180.0) + 0.099 * fsin(geep[l] * 5.12 * M_PI / 180.0); - if (y < 0) - y = -y; - x = 0.15 * fcos(geep[l] * M_PI / 180.0) + 0.149 * fcos(geep[l] * 5.12 * M_PI / 180.0); - if (x < 0.0) - x = 0.0 - x; - if (y < 0.001 && x > 0.000002 && ((tko & 0x1) == 0)) { - initshapes(l); /* let it become reborn as something - else */ - tko++; - return; - } { - float w1 = fsin(geep[l] * 15.3 * M_PI / 180.0); - wobble = 3.0 + 2.00 * fsin(geep[l] * 0.4 * M_PI / 180.0) + 3.94261 * w1; - } - - /** - if(blades == 2) if (y > 3.000*x) y = x*3.000; - if(blades == 3) if (y > 1.732*x) y = x*1.732; - if(blades == 4) if (y > x) y = x; - if(blades == 5) if (y > 0.726*x) y = x*0.726; - if(blades == 6) if (y > 0.577*x) y = x*0.577; - if(blades == 7) if (y > 0.481*x) y = x*0.481; - if(blades == 8) if (y > 0.414*x) y = x*0.414; - */ - if (y > x * bladeratio[blades]) - y = x * bladeratio[blades]; - - for (b = 0; b < blades; b++) { - glPushMatrix(); - glTranslatef(pos[l * 3], pos[l * 3 + 1], pos[l * 3 + 2]); - glRotatef(ang[l] + b * (360.0 / blades), 0.0, 0.0, 1.0); - glScalef(wobble * sca[l], wobble * sca[l], wobble * sca[l]); - /** - if(tko & 0x40000) glColor3f(col[l*3], col[l*3+1], col[l*3+2]); - else - */ - glColor4ub(0, 0, 0, 0x60); - - /* constrain geep cooridinates here XXX */ - glEnable(GL_BLEND); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2f(x * sca[l], 0.0); - glVertex2f(x, y); - glVertex2f(x, -y); /* C */ - glVertex2f(0.3, 0.0); /* D */ - glEnd(); - - /** - if(tko++ & 0x40000) glColor3f(0,0,0); - else - */ - glColor3f(col[l * 3], col[l * 3 + 1], col[l * 3 + 2]); - glBegin(GL_LINE_LOOP); - glVertex2f(x * sca[l], 0.0); - glVertex2f(x, y); - glVertex2f(0.3, 0.0); /* D */ - glVertex2f(x, -y); /* C */ - glEnd(); - glDisable(GL_BLEND); - - glPopMatrix(); - } -} - -void -motionUpdate(int t) -{ - if (pos[t * 3] < -sca[t] * wd && dir[t * 3] < 0.0) { - dir[t * 3] = -dir[t * 3]; - /** - acc[t*3+1] += 0.8*acc[t*3]; - acc[t*3] = -0.8*acc[t*3]; - */ - } else if (pos[t * 3] > (1 + sca[t]) * wd && dir[t * 3] > 0.0) { - dir[t * 3] = -dir[t * 3]; - /** - acc[t*3+1] += 0.8*acc[t*3]; - acc[t*3] = -0.8*acc[t*3]; - */ - } else if (pos[t * 3 + 1] < -sca[t] * ht && dir[t * 3 + 1] < 0.0) { - dir[t * 3 + 1] = -dir[t * 3 + 1]; - /** - acc[t*3] += 0.8*acc[t*3+1]; - acc[t*3+1] = -0.8*acc[t*3+1]; - */ - } else if (pos[t * 3 + 1] > (1 + sca[t]) * ht && dir[t * 3 + 1] > 0.0) { - dir[t * 3 + 1] = -dir[t * 3 + 1]; - /** - acc[t*3] += 0.8*acc[t*3+1]; - acc[t*3+1] = -0.8*acc[t*3+1]; - */ - } - - pos[t * 3] += dir[t * 3]; - pos[t * 3 + 1] += dir[t * 3 + 1]; - /** - dir[t*3] += acc[t*3]; - dir[t*3+1] += acc[t*3+1]; - */ - ang[t] += spn[t]; - geep[t] += peep[t]; - if (geep[t] > 360 * 5.0) - geep[t] -= 360 * 5.0; - if (ang[t] < 0.0) { - ang[t] += 360.0; - } - if (ang[t] > 360.0) { - ang[t] -= 360.0; - } -} - -void -colorUpdate(int i) -{ - if (hsv[i * 3 + 1] <= 0.5 && hpr[i * 3 + 1] < 0.0) - hpr[i * 3 + 1] = -hpr[i * 3 + 1]; /* adjust s */ - if (hsv[i * 3 + 1] >= 1.0 && hpr[i * 3 + 1] > 0.0) - hpr[i * 3 + 1] = -hpr[i * 3 + 1]; /* adjust s */ - if (hsv[i * 3 + 2] <= 0.4 && hpr[i * 3 + 2] < 0.0) - hpr[i * 3 + 2] = -hpr[i * 3 + 2]; /* adjust s */ - if (hsv[i * 3 + 2] >= 1.0 && hpr[i * 3 + 2] > 0.0) - hpr[i * 3 + 2] = -hpr[i * 3 + 2]; /* adjust s */ - - hsv[i * 3] += hpr[i * 3]; - hsv[i * 3 + 1] += hpr[i * 3 + 1]; - hsv[i * 3 + 2] += hpr[i * 3 + 2]; - - /* --- hsv -> rgb --- */ -#define H(hhh) hhh[i*3 ] -#define S(hhh) hhh[i*3+1] -#define V(hhh) hhh[i*3+2] - -#define R(hhh) hhh[i*3 ] -#define G(hhh) hhh[i*3+1] -#define B(hhh) hhh[i*3+2] - - if (V(hsv) < 0.0) - V(hsv) = 0.0; - if (V(hsv) > 1.0) - V(hsv) = 1.0; - if (S(hsv) <= 0.0) { - R(col) = V(hsv); - G(col) = V(hsv); - B(col) = V(hsv); - } else { - float f, h, p, q, t, v; - int hi; - - while (H(hsv) < 0.0) - H(hsv) += 360.0; - while (H(hsv) >= 360.0) - H(hsv) -= 360.0; - - if (S(hsv) < 0.0) - S(hsv) = 0.0; - if (S(hsv) > 1.0) - S(hsv) = 1.0; - - h = H(hsv) / 60.0; - hi = (int) (h); - f = h - hi; - v = V(hsv); - p = V(hsv) * (1 - S(hsv)); - q = V(hsv) * (1 - S(hsv) * f); - t = V(hsv) * (1 - S(hsv) * (1 - f)); - - if (hi <= 0) { - R(col) = v; - G(col) = t; - B(col) = p; - } else if (hi == 1) { - R(col) = q; - G(col) = v; - B(col) = p; - } else if (hi == 2) { - R(col) = p; - G(col) = v; - B(col) = t; - } else if (hi == 3) { - R(col) = p; - G(col) = q; - B(col) = v; - } else if (hi == 4) { - R(col) = t; - G(col) = p; - B(col) = v; - } else { - R(col) = v; - G(col) = p; - B(col) = q; - } - } -} - -void -gravity(float fx) -{ - int a, b; - - for (a = 0; a < N_SHAPES; a++) { - for (b = 0; b < a; b++) { - float t, d2; - - t = pos[b * 3] - pos[a * 3]; - d2 = t * t; - t = pos[b * 3 + 1] - pos[a * 3 + 1]; - d2 += t * t; - if (d2 < 0.000001) - d2 = 0.00001; - if (d2 < 0.1) { - - float v0, v1, z; - v0 = pos[b * 3] - pos[a * 3]; - v1 = pos[b * 3 + 1] - pos[a * 3 + 1]; - - z = 0.00000001 * fx / (d2); - - dir[a * 3] += v0 * z * sca[b]; - dir[b * 3] += -v0 * z * sca[a]; - dir[a * 3 + 1] += v1 * z * sca[b]; - dir[b * 3 + 1] += -v1 * z * sca[a]; - - } - } - /** apply brakes - if(dir[a*3]*dir[a*3] + dir[a*3+1]*dir[a*3+1] - > 0.0001) { - dir[a*3] *= 0.9; - dir[a*3+1] *= 0.9; - } - */ - } -} -void -oneFrame(void) -{ - int i; - - /** - if((random() & 0xff) == 0x34){ - glClear(GL_COLOR_BUFFER_BIT); - } - - if((tko & 0x1f) == 0x1f){ - glEnable(GL_BLEND); - glColor4f(0.0, 0.0, 0.0, 0.09); - glRectf(0.0, 0.0, wd, ht); - glDisable(GL_BLEND); -#ifdef __sgi - sginap(0); -#endif - } - */ - gravity(-2.0); - for (i = 0; i < N_SHAPES; i++) { - motionUpdate(i); -#ifdef __sgi - sginap(0); -#endif - colorUpdate(i); -#ifdef __sgi - sginap(0); -#endif - drawleaf(i); -#ifdef __sgi - sginap(0); -#endif - - } - glFlush(); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) { - wd = 1.0; - ht = (GLfloat) h / (GLfloat) w; - glOrtho(0.0, 1.0, - 0.0, 1.0 * (GLfloat) h / (GLfloat) w, - -16.0, 4.0); - } else { - wd = (GLfloat) w / (GLfloat) h; - ht = 1.0; - glOrtho(0.0, 1.0 * (GLfloat) w / (GLfloat) h, - 0.0, 1.0, - -16.0, 4.0); - } - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void -visibility(int status) -{ - if (status == GLUT_VISIBLE) { - glutIdleFunc(oneFrame); - } else { - glutIdleFunc(NULL); - } - -} - -void -myinit(void) -{ - int i; - srandom(getpid()); - glClearColor(0.0, 0.0, 0.0, 1.0); - glEnable(GL_LINE_SMOOTH); - glShadeModel(GL_FLAT); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - for (i = 0; i < N_SHAPES; i++) - initshapes(i); - myReshape(200, 200); -} - -/* ARGSUSED1 */ -void -keys(unsigned char c, int x, int y) -{ - - if (c == 0x1b) - exit(0); /* escape */ -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(300, 300); - glutCreateWindow(argv[0]); - - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(keys); - glutVisibilityFunc(visibility); - glutIdleFunc(oneFrame); - glutPostRedisplay(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/noof.dsp b/lib/glut-3.7.6/progs/contrib/noof.dsp deleted file mode 100644 index e7a28972498c5983c0546b8f5574aafac334bc73..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/noof.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="noof" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=noof - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "noof.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "noof.mak" CFG="noof - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "noof - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "noof - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "noof - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "noof - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "noof - Win32 Release" -# Name "noof - Win32 Debug" -# Begin Source File - -SOURCE=.\noof.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/rings.c b/lib/glut-3.7.6/progs/contrib/rings.c deleted file mode 100644 index 32d0f9b3030627caf0a77b1ef10fbf228a9fa49d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/rings.c +++ /dev/null @@ -1,279 +0,0 @@ -/* rings.c - * - * To compile: cc -o rings rings.c -lGL -lGLU -lX11 -lglut -lXmu -lm - * - * Usage: rings - * - * Homework 4, Part 1: perspective, hierarchical coords, moving eye pos. - * - * Do a slow zoom on a bunch of rings (ala Superman III?) - * - * Philip Winston - 2/21/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - * - */ - -#include - -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -typedef enum {MENU_STARTOVER, MENU_ZOOM_OUT, MENU_STOP_RINGS, MENU_STOP_FADE, - MENU_START_RINGS, MENU_START_FADE, MENU_QUIT} MenuChoices; - -typedef enum {NOTALLOWED, CONE, TORUS, INNERMAT, OUTTERMAT} DisplayLists; - -#define STEPS 30 - -int Fade = 1; /* Start moving out */ - -float Axis = 0, AxisInc = (2.0 * M_PI / STEPS); - -GLfloat InnerRad, OutterRad, Tilt, Trans, TransCone, Dist; - - /* mainly computes the translation amount as a function of the - tilt angle and torus radii */ -void myInit(void) -{ - float sinoftilt; - - InnerRad = 0.70; - OutterRad = 5.0; - Tilt = 15; - Dist = 10; - - sinoftilt = sin(Tilt * M_PI*2/360); - - Trans = (2*OutterRad + InnerRad) * sinoftilt + InnerRad + - ((1 - sinoftilt) * InnerRad) - (InnerRad * 1/10); - - TransCone = Trans + (OutterRad * sinoftilt + InnerRad); -} - - /* I used code from the book's accnot.c as a starting point for lighting. - I have one positional light in center, then one directional */ -void myglInit(void) -{ - GLfloat light0_position[] = { 1.0, 0.2, 1.0, 0.0 }; - GLfloat light1_position[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat light1_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light1_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat lm_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - - glEnable(GL_NORMALIZE); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glLightfv(GL_LIGHT0, GL_POSITION, light0_position); - glLightfv(GL_LIGHT1, GL_POSITION, light1_position); - glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse); - glLightfv(GL_LIGHT1, GL_SPECULAR, light1_specular); - glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.2); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lm_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - - glFlush(); -} - -void myreshape(GLsizei w, GLsizei h) -{ - glViewport(0,0,w,h); - glFlush(); -} - - /* setup display lists to change material for inner/outter rings and - to draw a single torus or cone */ -void MakeDisplayLists(void) -{ - GLfloat cone_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; - GLfloat mat1_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat2_ambient[] = { 0.0, 0.0, 0.0, 0.0 }; - GLfloat torus1_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; - GLfloat torus2_diffuse[] = { 0.3, 0.0, 0.0, 1.0 }; - GLfloat mat1_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat2_specular[] = { 0.5, 0.5, 0.5, 1.0 }; - - glNewList(INNERMAT, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat1_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 50.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, torus1_diffuse); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat1_ambient); - glEndList(); - - glNewList(OUTTERMAT, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat2_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 25.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, torus2_diffuse); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat2_ambient); - glEndList(); - - glNewList(CONE, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, cone_diffuse); - glPushMatrix(); - glTranslatef(0, -TransCone, 0); - glRotatef(90, 1, 0, 0); - glutSolidCone(OutterRad, 10, 8, 8); - glPopMatrix(); - glEndList(); - - glNewList(TORUS, GL_COMPILE); - glPushMatrix(); - glRotatef(90, 1, 0, 0); - glutSolidTorus(InnerRad, OutterRad, 15, 25); - glPopMatrix(); - glEndList(); -} - - /* Draw three rings, rotated and translate so they look cool */ -void DrawRings(float axis) -{ - GLfloat x = sin(axis), y = cos(axis); - - glPushMatrix(); - glTranslatef(0, Trans, 0); - glRotatef(Tilt, x, 0, y); - glCallList(TORUS); - glPopMatrix(); - - glPushMatrix(); - glRotatef(-Tilt, x, 0, y); - glCallList(TORUS); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0, -Trans, 0); - glRotatef(Tilt, x, 0, y); - glCallList(TORUS); - glPopMatrix(); -} - - /* Draw the inner thing, then glScale and draw 3 huge rings */ -void mydisplay(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 10, 1000); - gluLookAt(0, 0, Dist, 0, 0, 0, 0, 1, 0); - - glMatrixMode(GL_MODELVIEW); - - glCallList(INNERMAT); - DrawRings(Axis); - glCallList(CONE); - - glCallList(OUTTERMAT); - glPushMatrix(); - glScalef(10, 10, 10); - DrawRings(Axis/3); - glPopMatrix(); - - glutSwapBuffers(); - glFlush(); -} - - /* rotate the axis and adjust position if nec. */ -void myidle(void) -{ - Axis += AxisInc; - - if (Dist < 15 && Fade) /* start slow */ - Dist += 0.1; - else if (Dist < 800 && Fade) /* don't go back too far */ - Dist *= 1.005; - - mydisplay(); -} - - /* nothing fancy */ -void handlemenu(int value) -{ - switch (value) { - case MENU_STARTOVER: - Dist = 10; Axis = 0; Fade = 1; - AxisInc = (2.0 * M_PI / STEPS); - glutChangeToMenuEntry(3, "Stop rings", MENU_STOP_RINGS); - glutChangeToMenuEntry(4, "Stop fade", MENU_STOP_FADE); - break; - case MENU_ZOOM_OUT: - Dist = 800; - break; - case MENU_STOP_RINGS: - AxisInc = 0; - glutChangeToMenuEntry(3, "Start rings", MENU_START_RINGS); - break; - case MENU_START_RINGS: - AxisInc = (2.0 * M_PI / STEPS); - glutChangeToMenuEntry(3, "Stop rings", MENU_STOP_RINGS); - break; - case MENU_STOP_FADE: - Fade = 0; - glutChangeToMenuEntry(4, "Start fade", MENU_START_FADE); - break; - case MENU_START_FADE: - Fade = 1; - glutChangeToMenuEntry(4, "Stop fade", MENU_STOP_FADE); - break; - case MENU_QUIT: - exit(0); - break; - } -} - -void MenuInit(void) -{ - glutCreateMenu(handlemenu); - glutAddMenuEntry("Start Over", MENU_STARTOVER); - glutAddMenuEntry("Zoom Out", MENU_ZOOM_OUT); - glutAddMenuEntry("Stop rings", MENU_STOP_RINGS); - glutAddMenuEntry("Stop fade", MENU_STOP_FADE); - glutAddMenuEntry("Quit", MENU_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - glutIdleFunc(myidle); - } else { - glutIdleFunc(NULL); - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("rings"); - - myInit(); - myglInit(); - - MakeDisplayLists(); - MenuInit(); - - glutReshapeFunc(myreshape); - glutDisplayFunc(mydisplay); - glutVisibilityFunc(vis); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/rings.dsp b/lib/glut-3.7.6/progs/contrib/rings.dsp deleted file mode 100644 index 91d4aa5e67503163cba3887ae89b26a4b548130b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/rings.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="rings" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=rings - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "rings.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "rings.mak" CFG="rings - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "rings - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "rings - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "rings - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "rings - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "rings - Win32 Release" -# Name "rings - Win32 Debug" -# Begin Source File - -SOURCE=.\rings.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/steam.c b/lib/glut-3.7.6/progs/contrib/steam.c deleted file mode 100644 index 07d9cc095f1e09acb301f47c2d04eee65dfb7d0b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/steam.c +++ /dev/null @@ -1,621 +0,0 @@ -/** - - Description: Interactive 3D graphics, Assignment #1 - Miniature Steam Engine Simulation. - Author: Troy Robinette - Date: 29/9/95 - Email: troyr@yallara.cs.rmit.edu.au - Notes: - Transparence doesn't quite work. The color of the - underlying object doesn't show through. - - Also only the front side of the transparent objects are - transparent. - -**/ - -#include -#include -#include - -#define TRUE 1 -#define FALSE 0 - -/* Dimensions of texture image. */ -#define IMAGE_WIDTH 64 -#define IMAGE_HEIGHT 64 - -/* Step to be taken for each rotation. */ -#define ANGLE_STEP 10 - -/* Magic numbers for relationship b/w cylinder head and crankshaft. */ -#define MAGNITUDE 120 -#define PHASE 270.112 -#define FREQ_DIV 58 -#define ARC_LENGHT 2.7 -#define ARC_RADIUS 0.15 - -/* Rotation angles */ -GLdouble view_h = 270, view_v = 0, head_angle = 0; -GLint crank_angle = 0; - -/* Crank rotation step. */ -GLdouble crank_step = 5; - -/* Toggles */ -GLshort shaded = TRUE, anim = FALSE; -GLshort texture = FALSE, transparent = FALSE; -GLshort light1 = TRUE, light2 = FALSE; - -/* Storage for the angle look up table and the texture map */ -GLdouble head_look_up_table[361]; -GLubyte image[IMAGE_WIDTH][IMAGE_HEIGHT][3]; - -/* Indentifiers for each Display list */ -GLint list_piston_shaded = 1; -GLint list_piston_texture = 2; -GLint list_flywheel_shaded = 4; -GLint list_flywheel_texture = 8; - -/* Variable used in the creaton of glu objects */ -GLUquadricObj *obj; - -/* Draws a box by scaling a glut cube of size 1. Also checks the shaded - toggle to see which rendering style to use. NB Texture doesn't work - correctly due to the cube being scaled. */ -void -myBox(GLdouble x, GLdouble y, GLdouble z) -{ - glPushMatrix(); - glScalef(x, y, z); - if (shaded) - glutSolidCube(1); - else - glutWireCube(1); - glPopMatrix(); -} - -/* Draws a cylinder using glu function, drawing flat disc's at each end, - to give the appearence of it being solid. */ -void -myCylinder(GLUquadricObj * object, GLdouble outerRadius, - GLdouble innerRadius, GLdouble lenght) -{ - glPushMatrix(); - gluCylinder(object, outerRadius, outerRadius, lenght, 20, 1); - glPushMatrix(); - glRotatef(180, 0.0, 1.0, 0.0); - gluDisk(object, innerRadius, outerRadius, 20, 1); - glPopMatrix(); - - glTranslatef(0.0, 0.0, lenght); - gluDisk(object, innerRadius, outerRadius, 20, 1); - glPopMatrix(); -} - -/* Draws a piston. */ -void -draw_piston(void) -{ - glPushMatrix(); - glColor4f(0.3, 0.6, 0.9, 1.0); - - glPushMatrix(); - glRotatef(90, 0.0, 1.0, 0.0); - glTranslatef(0.0, 0.0, -0.07); - myCylinder(obj, 0.125, 0.06, 0.12); - glPopMatrix(); - - glRotatef(-90, 1.0, 0.0, 0.0); - glTranslatef(0.0, 0.0, 0.05); - myCylinder(obj, 0.06, 0.0, 0.6); - glTranslatef(0.0, 0.0, 0.6); - myCylinder(obj, 0.2, 0.0, 0.5); - glPopMatrix(); -} - -/* Draws the engine pole and the pivot pole for the cylinder head. */ -void -draw_engine_pole(void) -{ - glPushMatrix(); - glColor4f(0.9, 0.9, 0.9, 1.0); - myBox(0.5, 3.0, 0.5); - - glColor3f(0.5, 0.1, 0.5); - glRotatef(90, 0.0, 1.0, 0.0); - glTranslatef(0.0, 0.9, -0.4); - myCylinder(obj, 0.1, 0.0, 2); - glPopMatrix(); -} - -/* Draws the cylinder head at the appropreate angle, doing the necesary - translations for the rotation. */ -void -draw_cylinder_head(void) -{ - glPushMatrix(); - glColor4f(0.5, 1.0, 0.5, 0.1); - glRotatef(90, 1.0, 0.0, 0.0); - glTranslatef(0, 0.0, 0.4); - glRotatef(head_angle, 1, 0, 0); - glTranslatef(0, 0.0, -0.4); - myCylinder(obj, 0.23, 0.21, 1.6); - glRotatef(180, 1.0, 0.0, 0.0); - gluDisk(obj, 0, 0.23, 20, 1); - glPopMatrix(); -} - -/* Draws the flywheel. */ -void -draw_flywheel(void) -{ - glPushMatrix(); - glColor4f(0.5, 0.5, 1.0, 1.0); - glRotatef(90, 0.0, 1.0, 0.0); - myCylinder(obj, 0.625, 0.08, 0.5); - glPopMatrix(); -} - -/* Draws the crank bell, and the pivot pin for the piston. Also calls the - appropreate display list of a piston doing the nesacary rotations before - hand. */ -void -draw_crankbell(void) -{ - glPushMatrix(); - glColor4f(1.0, 0.5, 0.5, 1.0); - glRotatef(90, 0.0, 1.0, 0.0); - myCylinder(obj, 0.3, 0.08, 0.12); - - glColor4f(0.5, 0.1, 0.5, 1.0); - glTranslatef(0.0, 0.2, 0.0); - myCylinder(obj, 0.06, 0.0, 0.34); - - glTranslatef(0.0, 0.0, 0.22); - glRotatef(90, 0.0, 1.0, 0.0); - glRotatef(crank_angle - head_angle, 1.0, 0.0, 0.0); - if (shaded) { - if (texture) - glCallList(list_piston_texture); - else - glCallList(list_piston_shaded); - } else - draw_piston(); - glPopMatrix(); -} - -/* Draws the complete crank. Piston also gets drawn through the crank bell - function. */ -void -draw_crank(void) -{ - glPushMatrix(); - glRotatef(crank_angle, 1.0, 0.0, 0.0); - - glPushMatrix(); - glRotatef(90, 0.0, 1.0, 0.0); - glTranslatef(0.0, 0.0, -1.0); - myCylinder(obj, 0.08, 0.0, 1.4); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.28, 0.0, 0.0); - draw_crankbell(); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-0.77, 0.0, 0.0); - if (shaded) { - if (texture) - glCallList(list_flywheel_texture); - else - glCallList(list_flywheel_shaded); - } else - draw_flywheel(); - glPopMatrix(); - glPopMatrix(); -} - -/* Main display routine. Clears the drawing buffer and if transparency is - set, displays the model twice, 1st time accepting those fragments with - a ALPHA value of 1 only, then with DEPTH_BUFFER writing disabled for - those with other values. */ -void -display(void) -{ - int pass; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - if (transparent) { - glEnable(GL_ALPHA_TEST); - pass = 2; - } else { - glDisable(GL_ALPHA_TEST); - pass = 0; - } - - /* Rotate the whole model */ - glRotatef(view_h, 0, 1, 0); - glRotatef(view_v, 1, 0, 0); - - do { - if (pass == 2) { - glAlphaFunc(GL_EQUAL, 1); - glDepthMask(GL_TRUE); - pass--; - } else if (pass != 0) { - glAlphaFunc(GL_NOTEQUAL, 1); - glDepthMask(GL_FALSE); - pass--; - } - draw_engine_pole(); - - glPushMatrix(); - glTranslatef(0.5, 1.4, 0.0); - draw_cylinder_head(); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.0, -0.8, 0.0); - draw_crank(); - glPopMatrix(); - } while (pass > 0); - glDepthMask(GL_TRUE); - glutSwapBuffers(); - glPopMatrix(); -} - -/* Called when the window is idle. When called increments the crank angle - by ANGLE_STEP, updates the head angle and notifies the system that - the screen needs to be updated. */ -void -animation(void) -{ - if ((crank_angle += crank_step) >= 360) - crank_angle = 0; - head_angle = head_look_up_table[crank_angle]; - glutPostRedisplay(); -} - -/* Called when a key is pressed. Checks if it reconises the key and if so - acts on it, updateing the screen. */ -/* ARGSUSED1 */ -void -keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 's': - if (shaded == FALSE) { - shaded = TRUE; - glShadeModel(GL_SMOOTH); - glEnable(GL_LIGHTING); - glEnable(GL_DEPTH_TEST); - glEnable(GL_COLOR_MATERIAL); - gluQuadricNormals(obj, GLU_SMOOTH); - gluQuadricDrawStyle(obj, GLU_FILL); - } else { - shaded = FALSE; - glShadeModel(GL_FLAT); - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - glDisable(GL_COLOR_MATERIAL); - gluQuadricNormals(obj, GLU_NONE); - gluQuadricDrawStyle(obj, GLU_LINE); - gluQuadricTexture(obj, GL_FALSE); - } - if (texture && !shaded); - else - break; - case 't': - if (texture == FALSE) { - texture = TRUE; - glEnable(GL_TEXTURE_2D); - gluQuadricTexture(obj, GL_TRUE); - } else { - texture = FALSE; - glDisable(GL_TEXTURE_2D); - gluQuadricTexture(obj, GL_FALSE); - } - break; - case 'o': - if (transparent == FALSE) { - transparent = TRUE; - } else { - transparent = FALSE; - } - break; - - case 'a': - if ((crank_angle += crank_step) >= 360) - crank_angle = 0; - head_angle = head_look_up_table[crank_angle]; - break; - case 'z': - if ((crank_angle -= crank_step) <= 0) - crank_angle = 360; - head_angle = head_look_up_table[crank_angle]; - break; - case '0': - if (light1) { - glDisable(GL_LIGHT0); - light1 = FALSE; - } else { - glEnable(GL_LIGHT0); - light1 = TRUE; - } - break; - case '1': - if (light2) { - glDisable(GL_LIGHT1); - light2 = FALSE; - } else { - glEnable(GL_LIGHT1); - light2 = TRUE; - } - break; - case '4': - if ((view_h -= ANGLE_STEP) <= 0) - view_h = 360; - break; - case '6': - if ((view_h += ANGLE_STEP) >= 360) - view_h = 0; - break; - case '8': - if ((view_v += ANGLE_STEP) >= 360) - view_v = 0; - break; - case '2': - if ((view_v -= ANGLE_STEP) <= 0) - view_v = 360; - break; - case ' ': - if (anim) { - glutIdleFunc(0); - anim = FALSE; - } else { - glutIdleFunc(animation); - anim = TRUE; - } - break; - case '+': - if ((++crank_step) > 45) - crank_step = 45; - break; - case '-': - if ((--crank_step) <= 0) - crank_step = 0; - break; - default: - return; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - if ((view_h -= ANGLE_STEP) <= 0) - view_h = 360; - break; - case GLUT_KEY_RIGHT: - if ((view_h += ANGLE_STEP) >= 360) - view_h = 0; - break; - case GLUT_KEY_UP: - if ((view_v += ANGLE_STEP) >= 360) - view_v = 0; - break; - case GLUT_KEY_DOWN: - if ((view_v -= ANGLE_STEP) <= 0) - view_v = 360; - break; - default: - return; - } - glutPostRedisplay(); -} - -/* Called when a menu option has been selected. Translates the menu item - identifier into a keystroke, then call's the keyboard function. */ -void -menu(int val) -{ - unsigned char key; - - switch (val) { - case 1: - key = 's'; - break; - case 2: - key = ' '; - break; - case 3: - key = 't'; - break; - case 4: - key = 'o'; - break; - case 5: - key = '0'; - break; - case 6: - key = '1'; - break; - case 7: - key = '+'; - break; - case 8: - key = '-'; - break; - default: - return; - } - keyboard(key, 0, 0); -} - -/* Initialises the menu of toggles. */ -void -create_menu(void) -{ - glutCreateMenu(menu); - glutAttachMenu(GLUT_LEFT_BUTTON); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutAddMenuEntry("Shaded", 1); - glutAddMenuEntry("Animation", 2); - glutAddMenuEntry("Texture", 3); - glutAddMenuEntry("Transparency", 4); - glutAddMenuEntry("Right Light (0)", 5); - glutAddMenuEntry("Left Light (1)", 6); - glutAddMenuEntry("Speed UP", 7); - glutAddMenuEntry("Slow Down", 8); -} - -/* Makes a simple check pattern image. (Copied from the redbook example - "checker.c".) */ -void -make_image(void) -{ - int i, j, c; - - for (i = 0; i < IMAGE_WIDTH; i++) { - for (j = 0; j < IMAGE_HEIGHT; j++) { - c = (((i & 0x8) == 0) ^ ((j & 0x8) == 0)) * 255; - image[i][j][0] = (GLubyte) c; - image[i][j][1] = (GLubyte) c; - image[i][j][2] = (GLubyte) c; - } - } -} - -/* Makes the head look up table for all possible crank angles. */ -void -make_table(void) -{ - GLint i; - GLdouble k; - - for (i = 0, k = 0.0; i < 360; i++, k++) { - head_look_up_table[i] = - MAGNITUDE * atan( - (ARC_RADIUS * sin(PHASE - k / FREQ_DIV)) / - ((ARC_LENGHT - ARC_RADIUS * cos(PHASE - k / FREQ_DIV)))); - } -} - -/* Initialises texturing, lighting, display lists, and everything else - associated with the model. */ -void -myinit(void) -{ - GLfloat mat_specular[] = {1.0, 1.0, 1.0, 1.0}; - GLfloat mat_shininess[] = {50.0}; - GLfloat light_position1[] = {1.0, 1.0, 1.0, 0.0}; - GLfloat light_position2[] = {-1.0, 1.0, 1.0, 0.0}; - - glClearColor(0.0, 0.0, 0.0, 0.0); - - obj = gluNewQuadric(); - make_table(); - make_image(); - - /* Set up Texturing */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 3, IMAGE_WIDTH, - IMAGE_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, - image); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - /* Set up Lighting */ - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glLightfv(GL_LIGHT0, GL_POSITION, light_position1); - glLightfv(GL_LIGHT1, GL_POSITION, light_position2); - - /* Initial render mode is with full shading and LIGHT 0 - enabled. */ - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LEQUAL); - glEnable(GL_DEPTH_TEST); - glDisable(GL_ALPHA_TEST); - - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glShadeModel(GL_SMOOTH); - - /* Initialise display lists */ - glNewList(list_piston_shaded, GL_COMPILE); - draw_piston(); - glEndList(); - glNewList(list_flywheel_shaded, GL_COMPILE); - draw_flywheel(); - glEndList(); - - gluQuadricTexture(obj, GL_TRUE); - glNewList(list_piston_texture, GL_COMPILE); - draw_piston(); - glEndList(); - glNewList(list_flywheel_texture, GL_COMPILE); - draw_flywheel(); - glEndList(); - gluQuadricTexture(obj, GL_FALSE); -} - -/* Called when the model's window has been reshaped. */ -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(65.0, (GLfloat) w / (GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -5.0); /* viewing transform */ - glScalef(1.5, 1.5, 1.5); -} - -/* Main program. An interactive model of a miniture steam engine. - Sets system in Double Buffered mode and initialises all the call-back - functions. */ -int -main(int argc, char **argv) -{ - puts("Miniature Steam Engine Troy Robinette\n"); - - puts("Keypad Arrow keys (with NUM_LOCK on) rotates object."); - puts("Rotate crank: 'a' = anti-clock wise 'z' = clock wise"); - puts("Crank Speed : '+' = Speed up by 1 '-' = Slow Down by 1"); - puts("Toggle : 's' = Shading 't' = Texture"); - puts(" : ' ' = Animation 'o' = Transparency"); - puts(" : '0' = Right Light '1' = Left Light"); - puts(" Alternatively a pop up menu with all toggles is attached"); - puts(" to the left mouse button.\n"); - - glutInitWindowSize(400, 400); - glutInit(&argc, argv); - - /* Transperancy won't work properly without GLUT_ALPHA */ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutCreateWindow("Miniature Steam Engine by Troy Robinette"); - - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - glutSpecialFunc(special); - create_menu(); - - myinit(); - - glutReshapeFunc(myReshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/steam.dsp b/lib/glut-3.7.6/progs/contrib/steam.dsp deleted file mode 100644 index 77cb2f3ca4e6176ad814833e05587105c6f77c50..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/steam.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="steam" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=steam - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "steam.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "steam.mak" CFG="steam - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "steam - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "steam - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "steam - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "steam - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "steam - Win32 Release" -# Name "steam - Win32 Debug" -# Begin Source File - -SOURCE=.\steam.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/text3d.c b/lib/glut-3.7.6/progs/contrib/text3d.c deleted file mode 100644 index b3f0c5e0990cec204d75b5a8e32a0232457af192..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/text3d.c +++ /dev/null @@ -1,509 +0,0 @@ -/* Text3d by Robert J. Doyle, Jr., Naval Research Laboratory, Washington, DC. */ -#include -#include -#include -#include -#ifndef _WIN32 -#include -#endif -#include - -typedef enum {RESERVED, M_SIDE, M_EDGE, M_WHOLE, O_SIDE, O_EDGE, O_WHOLE, -T_SIDE, T_EDGE, T_WHOLE, H_SIDE, H_EDGE, H_WHOLE,REPEAT_SIDE, REPEAT_EDGE, REPEAT1, -REPEAT2_SIDE, REPEAT2_EDGE,REPEAT2, REPEAT3_SIDE, REPEAT3_EDGE,REPEAT3, -REPEAT4_SIDE, REPEAT4_EDGE,REPEAT4} displayLists; - -GLfloat sideColor[] = {0.0, 0.0, 0.5, 1.0}; -GLfloat edgeColor[] = {0.7, 0.7, 0.0, 1.0}; -GLfloat shininess[] = {128.0}; -GLfloat mat_specular[] = {0.7, 0.7, 0.7, 1.0}; - -GLfloat width = 0.0; -GLfloat width2 = 2.0; - -GLfloat letterM[][3] = -{ - {-3.125000, 0.000000, 0.000000}, - {-3.125000, 6.208000, 0.000000}, - {-1.233000, 6.208000, 0.000000}, - {0.003000, 1.484000, 0.000000}, - {1.223000, 6.208000, 0.000000}, - {3.123000, 6.208000, 0.000000}, - {3.123000, 0.000000, 0.000000}, - {1.923000, 0.000000, 0.000000}, - {1.923000, 5.010000, 0.000000}, - {0.659000, 0.000000, 0.000000}, - {-0.649000, 0.000000, 0.000000}, - {-1.925000, 5.010000, 0.000000}, - {-1.925000, 0.000000, 0.000000} - -}; - -GLfloat letterO[][3] = -{ - {-3.038000, 3.102000, 0.000000}, - {-2.974000, 3.874000, 0.000000}, - {-2.827000, 4.440000, 0.000000}, - {-2.802000, 4.508000, 0.000000}, - {-2.544000, 5.042000, 0.000000}, - {-2.502000, 5.110000, 0.000000}, - {-2.223000, 5.479000, 0.000000}, - {-2.132000, 5.576000, 0.000000}, - {-1.784000, 5.869000, 0.000000}, - {-1.678000, 5.940000, 0.000000}, - {-1.260000, 6.155000, 0.000000}, - {-1.148000, 6.198000, 0.000000}, - {-0.677000, 6.321000, 0.000000}, - {-0.638000, 6.328000, 0.000000}, - {-0.002000, 6.378000, 0.000000}, - {0.634000, 6.328000, 0.000000}, - {1.107000, 6.210000, 0.000000}, - {1.144000, 6.198000, 0.000000}, - {1.570000, 6.002000, 0.000000}, - {1.674000, 5.940000, 0.000000}, - {2.038000, 5.661000, 0.000000}, - {2.128000, 5.576000, 0.000000}, - {2.428000, 5.217000, 0.000000}, - {2.504000, 5.104000, 0.000000}, - {2.762000, 4.598000, 0.000000}, - {2.798000, 4.508000, 0.000000}, - {2.960000, 3.913000, 0.000000}, - {2.970000, 3.862000, 0.000000}, - {3.034000, 3.102000, 0.000000}, - {2.970000, 2.342000, 0.000000}, - {2.815000, 1.745000, 0.000000}, - {2.798000, 1.696000, 0.000000}, - {2.554000, 1.182000, 0.000000}, - {2.504000, 1.100000, 0.000000}, - {2.221000, 0.726000, 0.000000}, - {2.128000, 0.628000, 0.000000}, - {1.776000, 0.332000, 0.000000}, - {1.674000, 0.264000, 0.000000}, - {1.256000, 0.049000, 0.000000}, - {1.144000, 0.006000, 0.000000}, - {0.672000, -0.117000, 0.000000}, - {0.634000, -0.124000, 0.000000}, - {-0.002000, -0.174000, 0.000000}, - {-0.638000, -0.124000, 0.000000}, - {-1.112000, -0.006000, 0.000000}, - {-1.148000, 0.006000, 0.000000}, - {-1.576000, 0.202000, 0.000000}, - {-1.678000, 0.264000, 0.000000}, - {-2.041000, 0.540000, 0.000000}, - {-2.132000, 0.628000, 0.000000}, - {-2.430000, 0.983000, 0.000000}, - {-2.502000, 1.094000, 0.000000}, - {-2.773000, 1.622000, 0.000000}, - {-2.802000, 1.696000, 0.000000}, - {-2.962000, 2.258000, 0.000000}, - {-2.974000, 2.330000, 0.000000}, - {-1.736000, 3.102000, 10000.0}, - {-1.710000, 3.578000, 0.000000}, - {-1.644000, 3.934000, 0.000000}, - {-1.503000, 4.328000, 0.000000}, - {-1.494000, 4.346000, 0.000000}, - {-1.352000, 4.593000, 0.000000}, - {-1.306000, 4.656000, 0.000000}, - {-1.120000, 4.857000, 0.000000}, - {-1.040000, 4.926000, 0.000000}, - {-0.825000, 5.067000, 0.000000}, - {-0.726000, 5.116000, 0.000000}, - {-0.480000, 5.200000, 0.000000}, - {-0.402000, 5.218000, 0.000000}, - {-0.041000, 5.257000, 0.000000}, - {-0.002000, 5.258000, 0.000000}, - {0.361000, 5.227000, 0.000000}, - {0.400000, 5.220000, 0.000000}, - {0.650000, 5.147000, 0.000000}, - {0.726000, 5.116000, 0.000000}, - {0.950000, 4.990000, 0.000000}, - {1.038000, 4.926000, 0.000000}, - {1.239000, 4.736000, 0.000000}, - {1.306000, 4.656000, 0.000000}, - {1.462000, 4.413000, 0.000000}, - {1.498000, 4.342000, 0.000000}, - {1.635000, 3.964000, 0.000000}, - {1.644000, 3.934000, 0.000000}, - {1.710000, 3.568000, 0.000000}, - {1.736000, 3.102000, 0.000000}, - {1.710000, 2.636000, 0.000000}, - {1.642000, 2.268000, 0.000000}, - {1.508000, 1.886000, 0.000000}, - {1.496000, 1.860000, 0.000000}, - {1.351000, 1.610000, 0.000000}, - {1.304000, 1.546000, 0.000000}, - {1.115000, 1.343000, 0.000000}, - {1.036000, 1.276000, 0.000000}, - {0.823000, 1.135000, 0.000000}, - {0.724000, 1.086000, 0.000000}, - {0.480000, 1.001000, 0.000000}, - {0.400000, 0.984000, 0.000000}, - {0.035000, 0.946000, 0.000000}, - {-0.002000, 0.946000, 0.000000}, - {-0.368000, 0.979000, 0.000000}, - {-0.402000, 0.986000, 0.000000}, - {-0.653000, 1.057000, 0.000000}, - {-0.726000, 1.088000, 0.000000}, - {-0.952000, 1.213000, 0.000000}, - {-1.040000, 1.278000, 0.000000}, - {-1.240000, 1.467000, 0.000000}, - {-1.306000, 1.548000, 0.000000}, - {-1.460000, 1.788000, 0.000000}, - {-1.494000, 1.858000, 0.000000}, - {-1.639000, 2.251000, 0.000000}, - {-1.644000, 2.270000, 0.000000}, - {-1.710000, 2.626000, 0.000000} -}; - -GLfloat letterT[][3] = -{ - {-0.640000, 0.000000, 0.000000}, - {-0.640000, 5.104000, 0.000000}, - {-2.476000, 5.104000, 0.000000}, - {-2.476000, 6.208000, 0.000000}, - {2.476000, 6.208000, 0.000000}, - {2.476000, 5.104000, 0.000000}, - {0.640000, 5.104000, 0.000000}, - {0.640000, 0.000000, 0.000000} -}; - -GLfloat letterH[][3] = -{ - {-2.570000, 0.000000, 0.000000}, - {-2.570000, 6.208000, 0.000000}, - {-1.282000, 6.208000, 0.000000}, - {-1.282000, 3.900000, 0.000000}, - {1.280000, 3.900000, 0.000000}, - {1.280000, 6.208000, 0.000000}, - {2.568000, 6.208000, 0.000000}, - {2.568000, 0.000000, 0.000000}, - {1.280000, 0.000000, 0.000000}, - {1.280000, 2.760000, 0.000000}, - {-1.282000, 2.760000, 0.000000}, - {-1.282000, 0.000000, 0.000000} -}; - -/* Initialize light source and lighting. - */ - - -static void checkErrors(void) -{ - GLenum error; - while ((error = glGetError()) != GL_NO_ERROR) { - fprintf(stderr, "Error: %s\n", (char *) gluErrorString(error)); - } -} - -void myinit(void) -{ - int count1 = sizeof(letterM) / (3 * sizeof(GLfloat)); - int count2 = sizeof(letterO) / (3 * sizeof(GLfloat)); - int count3 = sizeof(letterT) / (3 * sizeof(GLfloat)); - int count4 = sizeof(letterH) / (3 * sizeof(GLfloat)); - - int i; - - GLfloat light_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -/* light_position is NOT default value */ - GLfloat light_position[] = { -1.0, -1.0, 1.0, 0.0 }; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - - glDrawBuffer(GL_FRONT_AND_BACK); - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - glClear(GL_ACCUM_BUFFER_BIT); - glDrawBuffer(GL_BACK); - -/* Zero position of text */ - - for(i = 0; i < count1; i++) { - letterM[i][1] = letterM[i][1] - 3.175; - } - for(i = 0; i < count2; i++) { - letterO[i][1] = letterO[i][1] - 3.175; - } - for(i = 0; i < count3; i++) { - letterT[i][1] = letterT[i][1] - 3.175; - } - for(i = 0; i < count4; i++) { - letterH[i][1] = letterH[i][1] - 3.175; - } -} - - -/* Mark Kilgard's tessellation code from the "dino" demos. */ -void extrudeSolidFromPolygon(GLfloat data[][3], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - GLdouble vertex[3], dx, dy, len; - int i, k; - int flag = 0; - int count = dataSize / (3 * sizeof(GLfloat)); - static GLUtriangulatorObj *tobj = NULL; - - if (tobj == NULL) { - tobj = gluNewTess(); - - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex3fv); - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); - gluBeginPolygon(tobj); - for(i = 0; i < count; i++) { - /* This detects a new contour from a large number placed in - the unused z coordinate of the vertex where the new contour - starts. See the coordinates for letterO, above. The coordinate - must be reset below for additional calls. */ - - if (data[i][2] > 1000.0) { - data[i][2] = 0.0; - flag = 1; k = i; - gluNextContour(tobj, GLU_INTERIOR); - } - - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0.0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - - /* Reset coordinate for new calls. */ - if (flag == 1) { - data[k][2] = 10000.0; - flag = 0; - } - glNewList(edge, GL_COMPILE); - glBegin(GL_QUAD_STRIP); - for(i = 0; i <= count; i++) { - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Normals */ - dx = data[(i+ 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - - glMaterialfv(GL_FRONT, GL_DIFFUSE, edgeColor); - glMaterialfv(GL_FRONT, GL_SHININESS, shininess); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); - - glMaterialfv(GL_FRONT, GL_DIFFUSE, sideColor); - glMaterialfv(GL_FRONT, GL_SHININESS, shininess); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void repeat(int j) -{ - if(j == 2){ - glPushMatrix(); - glTranslatef((31 * -0.34) , 9.3, -9.6); - glCallList(REPEAT1); - glPopMatrix(); - } - if(j == 3){ - glPushMatrix(); - glTranslatef(31 * -0.34, 9.3, -9.6); - glCallList(REPEAT1); - glPopMatrix(); - glPushMatrix(); - glTranslatef(31 * -.09, 9.3, -9.6); - glCallList(REPEAT2); - glPopMatrix(); - } - if(j == 4){ - glPushMatrix(); - glTranslatef(31 * -0.34, 9.3, -9.6); - glCallList(REPEAT1); - glPopMatrix(); - glPushMatrix(); - glTranslatef(31 * -.09, 9.3, -9.6); - glCallList(REPEAT2); - glPopMatrix(); - glPushMatrix(); - glTranslatef(31 * 0.12, 9.3, -9.6); - glCallList(REPEAT3); - glPopMatrix(); - } -} - -void display(void) -{ - int i, j; - GLfloat xPos = -0.34; - glLoadIdentity(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glTranslatef(0.0, 0.0, -10.0); - - extrudeSolidFromPolygon(letterM, sizeof(letterM), width2, REPEAT_SIDE, - REPEAT_EDGE, REPEAT1); - extrudeSolidFromPolygon(letterO, sizeof(letterO), width2, REPEAT2_SIDE, - REPEAT2_EDGE, REPEAT2); - extrudeSolidFromPolygon(letterT, sizeof(letterT), width2, REPEAT3_SIDE, - REPEAT3_EDGE, REPEAT3); - extrudeSolidFromPolygon(letterH, sizeof(letterH), width2, REPEAT4_SIDE, - REPEAT4_EDGE, REPEAT4); - - for(j = 1; j < 5; j++){ - width = 0.0; -checkErrors(); - for(i = 0; i < 10; i++){ - - glPushMatrix(); - repeat(j); - glPopMatrix(); - - glPushMatrix(); - glRotatef(90.0, 0.0, 1.0, 0.0); - if(j == 1){ - extrudeSolidFromPolygon(letterM, sizeof(letterM), width, M_SIDE, - M_EDGE, M_WHOLE); - glCallList(M_WHOLE); - } - if(j == 2){ - extrudeSolidFromPolygon(letterO, sizeof(letterO), width, O_SIDE, - O_EDGE, O_WHOLE); - glCallList(O_WHOLE); - } - if(j == 3){ - extrudeSolidFromPolygon(letterT, sizeof(letterT), width, T_SIDE, - T_EDGE, T_WHOLE); - glCallList(T_WHOLE); - } - if(j == 4){ - extrudeSolidFromPolygon(letterH, sizeof(letterH), width, H_SIDE, - H_EDGE, H_WHOLE); - glCallList(H_WHOLE); - } - glutSwapBuffers(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - width = width + 0.2; - glPopMatrix(); - } - for(i = 0; i < 45 ; i++){ - - glPushMatrix(); - repeat(j); - glPopMatrix(); - - glPushMatrix(); - glRotatef(90.0 - (2.0 * i), 0.0, 1.0, 0.0); - if(j == 1){ - glCallList(M_WHOLE); - } - if(j == 2){ - glCallList(O_WHOLE); - } - if(j == 3){ - glCallList(T_WHOLE); - } - if(j == 4){ - glCallList(H_WHOLE); - } - glutSwapBuffers(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPopMatrix(); - } - for(i = 1; i < 32 ; i++){ - - glPushMatrix(); - repeat(j); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(i * xPos, i * 0.3, i * -0.3); - if(j == 1){ - glCallList(M_WHOLE); - } - if(j == 2){ - glCallList(O_WHOLE); - } - if(j == 3){ - glCallList(T_WHOLE); - } - if(j == 4){ - glCallList(H_WHOLE); - } - glutSwapBuffers(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPopMatrix(); - } - - if(j == 1){ - xPos = xPos + 0.25; - } - else{ - xPos = xPos + 0.21; - } - } - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-7.0, 7.0, -7.0, 7.0, 6.0, 20.0); -/* if (w <= h) - glOrtho (-7.0, 7.0, -7.0*(GLfloat)h/(GLfloat)w, - 7.0*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-7.0*(GLfloat)w/(GLfloat)h, - 7.0*(GLfloat)w/(GLfloat)h, -7.0, 7.0, -10.0, 10.0); */ - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow ("text3d"); - -/*glCullFace(GL_FRONT);*/ -/*glEnable(GL_CULL_FACE);*/ - - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc (display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/contrib/text3d.dsp b/lib/glut-3.7.6/progs/contrib/text3d.dsp deleted file mode 100644 index 7f1dc794bf36c907c5b5692f27b840a84ed2658c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/text3d.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="text3d" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=text3d - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "text3d.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "text3d.mak" CFG="text3d - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "text3d - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "text3d - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "text3d - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "text3d - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "text3d - Win32 Release" -# Name "text3d - Win32 Debug" -# Begin Source File - -SOURCE=.\text3d.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/contrib/worms.c b/lib/glut-3.7.6/progs/contrib/worms.c deleted file mode 100644 index 95efed85709635218d9b7f56090fe2b2f03e09db..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/worms.c +++ /dev/null @@ -1,519 +0,0 @@ -#if 0 -From jallen@cs.hmc.edu Fri Feb 17 00:49:59 1995 -Received: from giraffe.asd.sgi.com by hoot.asd.sgi.com via SMTP (940816.SGI.8.6.9/940406.SGI.AUTO) - for id AAA13591; Fri, 17 Feb 1995 00:49:33 -0800 -Received: from sgi.sgi.com by giraffe.asd.sgi.com via SMTP (920330.SGI/920502.SGI) - for mjk@hoot.asd.sgi.com id AA09774; Fri, 17 Feb 95 00:52:30 -0800 -Received: from cs.hmc.edu by sgi.sgi.com via SMTP (950215.405.SGI.8.6.10/910110.SGI) - for id AAA06439; Fri, 17 Feb 1995 00:52:28 -0800 -Received: by cs.hmc.edu (5.0/SMI-SVR4) - id AA13309; Fri, 17 Feb 1995 00:52:10 -0800 -Date: Fri, 17 Feb 1995 00:52:10 -0800 -From: jallen@cs.hmc.edu (Jeff R. Allen) -Message-Id: <9502170852.AA13309@cs.hmc.edu> -To: nate@cs.hmc.edu (Nathan Tuck), mjk@sgi.sgi.com, hadas@cs.hmc.edu -Subject: Re: GLUT demos -In-Reply-To: <9502100805.AA08487@cs.hmc.edu> -References: <9502100805.AA08487@cs.hmc.edu> -Reply-To: Jeff Allen -Content-Length: 12851 -Status: RO - -Below is a program I wrote for the Graphics class at Harvey Mudd. As -the comments explain, I am currently working on a version in 3D with -lighting, and a pre-programmed camera flight-path. I also added a -checker-board-type-thing for the worms to crawl around on, so that -there is some reference for the viewer. - -For now, here is the program. - --- -Jeff R. Allen | Senior CS major | Support your local -(fnord) | South 351d, x4940 | unicyclist! - -------------------------- begin worms.c ------------------------- -#endif - -/* worms.c -- demos OpenGL in 2D using the GLUT interface to the - underlying window system. - - Compile with: [g]cc -O3 -o worms worms.c -lm -lGLU -lglut -lXmu -lX11 -lGL - - This is a fun little demo that actually makes very little use of - OpenGL and GLUT. It generates a bunch of worms and animates them as - they crawl around your screen. When you click in the screen with - the left mouse button, the worms converge on the spot for a while, - then go back to their business. The animation is incredibly simple: - we erase the tail, then draw a new head, repeatedly. It is so - simple, actually, we don't even need double-buffering! - - The behavior of the worms can be controlled via the compile-time - constants below. Enterprising indiviuals wil want to add GLUT menus - to control these constants at run time. This is left as an exercise - to the reader. The only thing that can currently be controlled is - wether or not the worms are filled. Use the right button to get a popup - menu. - - A future version of this program will make more use of OpenGL by - rendering 3d worms crawling in 3-space (or possibly just around on - a plane) and it will allow the user to manipulate the viewpoint - using the mouse. This will require double-buffering and less - optimal updates. - - This program is Copyright 1995 by Jeff R. Allen . - Permission is hereby granted to use and modify this code freely, - provided it is not sold or redistibuted in any way for profit. This - is copyrighted material, and is NOT in the Public Domain. - - $Id: //sw/main/apps/OpenGL/glut/progs/contrib/worms.c#6 $ - - */ - -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#define drand48() (((float) rand())/((float) RAND_MAX)) -#define srand48(x) (srand((x))) -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* operational constants */ -#define RADIAN .0174532 -#define CIRCLE_POINTS 25 -#define SIDETOLERANCE .01 -#define INITH 500 -#define INITW 500 - -/* worm options */ -#define SEGMENTS 20 -#define SEG_RADIUS 0.01 -#define STEPSIZE 0.01 -#define MAXTURN (20 * RADIAN) /* in radians */ -#define MAXWORMS 400 -#define INITWORMS 40 -#define MARKTICKS 100 - -typedef struct worm_s { - float dir; /* direction in radians */ - float segx[SEGMENTS]; /* location of segments. */ - float segy[SEGMENTS]; - GLfloat *color; /* pointer to the RGB color of the worm */ - int head; /* which elt of seg[xy] is currently head */ - /* the tail is always (head+1 % SEGMENTS) */ -} worm_t; - -/* colors available for worms... this is a huge mess because I - originally brought these colors in from rgb.txt as integers, - but they have to be normalized into floats. And C is stupid - and truncates them unless I add the annoying .0's - */ - -const GLfloat colors[][3] = { - { 255.0/255.0, 0.0/255.0, 0.0/255.0}, - { 238.0/255.0, 0.0/255.0, 0.0/255.0}, - { 205.0/255.0, 0.0/255.0, 0.0/255.0}, - { 0.0/255.0, 255.0/255.0, 0.0/255.0}, - { 0.0/255.0, 238.0/255.0, 0.0/255.0}, - { 0.0/255.0, 205.0/255.0, 0.0/255.0}, - { 0.0/255.0, 0.0/255.0, 255.0/255.0}, - { 0.0/255.0, 0.0/255.0, 238.0/255.0}, - { 0.0/255.0, 0.0/255.0, 205.0/255.0}, - { 255.0/255.0, 255.0/255.0, 0.0/255.0}, - { 238.0/255.0, 238.0/255.0, 0.0/255.0}, - { 205.0/255.0, 205.0/255.0, 0.0/255.0}, - { 0.0/255.0, 255.0/255.0, 255.0/255.0}, - { 0.0/255.0, 238.0/255.0, 238.0/255.0}, - { 0.0/255.0, 205.0/255.0, 205.0/255.0}, - { 255.0/255.0, 0.0/255.0, 255.0/255.0}, - { 238.0/255.0, 0.0/255.0, 238.0/255.0}, - { 205.0/255.0, 0.0/255.0, 205.0/255.0}, -}; - -#define COLORS 18 - -/* define's for the menu item numbers */ -#define MENU_NULL 0 -#define MENU_FILLED 1 -#define MENU_UNFILLED 2 -#define MENU_QUIT 3 - -/* flag to determine how to draw worms; set by popup menu -- starts out - filled in - */ -int filled = 1; - -/* the global worm array */ -worm_t worms[MAXWORMS]; -int curworms = 0; - -/* global window extent variables */ -GLfloat gleft = -1.0, gright = 1.0, gtop = 1.0, gbottom = -1.0; -GLint wsize, hsize; - -/* globals for marking */ -float markx, marky; -int marktime; - -/* prototypes */ -void mydisplay(void); - -void drawCircle(float x0, float y0, float radius) -{ - int i; - float angle; - - /* a table of offsets for a circle (used in drawCircle) */ - static float circlex[CIRCLE_POINTS]; - static float circley[CIRCLE_POINTS]; - static int inited = 0; - - if (! inited) { - for (i = 0; i < CIRCLE_POINTS; i++) { - angle = 2.0 * M_PI * i / CIRCLE_POINTS; - circlex[i] = cos(angle); - circley[i] = sin(angle); - } - inited++; - }; - - if (filled) - glBegin(GL_POLYGON); - else - glBegin(GL_LINE_LOOP); - for(i = 0; i < CIRCLE_POINTS; i++) - glVertex2f((radius * circlex[i]) + x0, (radius * circley[i]) + y0); - glEnd(); - - return; -} - -void drawWorm(worm_t *theworm) -{ - int i; - - glColor3fv(theworm->color); - for (i = 0; i < SEGMENTS; i++) - drawCircle(theworm->segx[i], theworm->segy[i], SEG_RADIUS); - - return; -} - -void myinit(void) -{ - int i, j, thecolor; - float thedir; - - srand48(time(NULL)); - - curworms = INITWORMS; - - for (j = 0; j < curworms; j++) { - /* divide the circle up into a number of pieces, and send one worm - each direction. - */ - worms[j].dir = ((2.0 * M_PI) / curworms) * j; - thedir = worms[j].dir; - - worms[j].segx[0] = 0.0; - worms[j].segy[0] = 0.0; - - for (i = 1; i < SEGMENTS; i++) { - worms[j].segx[i] = worms[j].segx[i-1] + (STEPSIZE * cos(thedir)); - worms[j].segy[i] = worms[j].segx[i-1] + (STEPSIZE * sin(thedir)); - }; - worms[j].head = (SEGMENTS - 1); - - /* make this worm one of the predefined colors */ - thecolor = (int) COLORS * drand48(); - worms[j].color = (GLfloat *) colors[thecolor]; - }; - - /* now that they are all set, draw them as though they have just been - uncovered - */ - mydisplay(); -} - - - -/* this routine is called after the coordinates are changed to make sure - worms outside the window come back into view right away. (This behavior - is arbitrary, but they are my worms, and they'll do what I please!) - */ - -void warpWorms(void) -{ - register int j, head; - - for (j = 0; j < curworms; j++) { - head = worms[j].head; - - if (worms[j].segx[head] < gleft) - worms[j].segx[head] = gleft; - if (worms[j].segx[head] > gright) - worms[j].segx[head] = gright; - if (worms[j].segx[head] > gtop) - worms[j].segx[head] = gtop; - if (worms[j].segx[head] < gbottom) - worms[j].segx[head] = gbottom; - } -} - -/* a bunch of extra hoopla goes on here to change the Global coordinate - space at teh same rate that the window itself changes. This give the - worms more space to play in when the window gets bigger, and vice versa. - The alternative would be to end up with big worms when the window gets - big, and that looks silly. - */ - -void myreshape (GLsizei w, GLsizei h) -{ - float ratiow = (float) w/INITW; - float ratioh = (float) h/INITH; - - glViewport(0,0,w,h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - gleft = -1 * ratiow; - gright = 1 * ratiow; - gbottom = -1 * ratioh; - gtop = 1 * ratioh; - - gluOrtho2D(gleft, gright, gbottom, gtop); - warpWorms(); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - wsize = w; hsize = h; - - return; -} - - -/* given a pointer to a worm, this routine will decide on the next - place to put a head and will advance the head pointer - */ - -void updateWorm(worm_t *theworm) -{ - int newhead; - float prevx, prevy; - float newh = -1, newv = -1; - float num, denom; - - /* make an easy to reference local copy of head, and update it in - the worm structure. The new head replaces the old tail. - */ - newhead = (theworm->head + 1) % SEGMENTS; - - prevx = theworm->segx[theworm->head]; - prevy = theworm->segy[theworm->head]; - - /* if there is a mark, home in on it. After this, we still allow - the random adjustment so that the worms play around a bit on the - way to the mark. - */ - if (marktime) { - num = marky - prevy; - denom = markx - prevx; - theworm->dir = atan2(num,denom); - }; - - /* make a bit of a turn: between -MAXTURN and MAXTURN degrees change - to dir (actualy theworm->dir is in radians for later use with - cosf(). - */ - theworm->dir += (MAXTURN - (2 * MAXTURN * (float) drand48())); - - theworm->segx[newhead] = prevx + (STEPSIZE * cos(theworm->dir)); - theworm->segy[newhead] = prevy + (STEPSIZE * sin(theworm->dir)); - - /* if we are at an edge, change direction so that we are heading away - from the edge in question. There might be a problem here handling - corner cases, but I have never seen a worm get stuck, so what the - heck... - */ - if (theworm->segx[newhead] <= gleft) - theworm->dir = 0; - if (theworm->segx[newhead] >= gright) - theworm->dir = (180 * RADIAN); - if (theworm->segy[newhead] >= gtop) - theworm->dir = (270 * RADIAN); - if (theworm->segy[newhead] <= gbottom) - theworm->dir = (90 * RADIAN); - - if ((newv >= 0) || (newh >= 0)) { - newh = (newh<0) ? 0 : newh; - newv = (newv<0) ? 0 : newv; - }; - - /* update the permanent copy of the new head index */ - theworm->head = newhead; -} - -/* updates the worms -- drawing takes place here, which may actually - be a bad idea. It will probably be better to update the internal - state only here, then post a redisplay using GLUT. -*/ - -void myidle (void) -{ - register int i, tail; - - if (marktime) - marktime--; - - for (i = 0; i < curworms; i++) { - /* first find tail */ - tail = (worms[i].head + 1) % SEGMENTS; - - /* erase tail */ - glColor3f(0.0, 0.0, 0.0); - drawCircle(worms[i].segx[tail], worms[i].segy[tail], SEG_RADIUS); - - /* update head segment position and head pointer */ - updateWorm(&worms[i]); - - /* draw head */ - glColor3fv(worms[i].color); - drawCircle(worms[i].segx[worms[i].head], worms[i].segy[worms[i].head], - SEG_RADIUS); - }; - - glFlush(); - return; -} - -/* redraws the worms from scratch -- called after a window gets obscured */ - -void mydisplay(void) -{ - int i; - -#ifndef WORMS_EAT_BACKGROUND - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); -#endif - - for (i = 0; i < curworms; i++) - drawWorm(&worms[i]); - - glFlush(); - return; -} - -/* this routine gets called when the mouse is clicked. The incoming - coordinates are in screen coordinates relative to the upper-left corner - of the window, and oriented according to X, not to GL. So, here we - convert the given coordinates into worm-world coordinates, and set the - mark. - */ - -void markSpot(int x, int y) -{ - /* map into the corridinate space I am using */ - markx = (float)((x - wsize/2)*(gright - gleft)/wsize); - marky = -(float)((y - hsize/2)*(gtop - gbottom)/hsize); - - marktime = MARKTICKS; -} - -void handleMouse(int btn, int state, int x, int y) -{ - switch (btn) { - - case (GLUT_LEFT_BUTTON): - if (state == GLUT_UP) - markSpot(x,y); - break; - - default: - /* do nothing */ - break; - } - - return; -} - -void menuSelect(int value) -{ - switch (value) { - case MENU_FILLED: - filled = 1; - break; - - case MENU_UNFILLED: - filled = 0; - break; - - case MENU_QUIT: - exit(0); - break; - - case MENU_NULL: - return; - - default: - break; - }; - - glutPostRedisplay(); - return; -} - -void visibility(int status) -{ - if (status == GLUT_VISIBLE) - glutIdleFunc(myidle); - else - glutIdleFunc(NULL); -} - -/* this is where GLUT is initialized, and the whole thing starts up. - All animation and redisplay happens via the callbacks registered below. - */ - -int main(int argc, char **argv) -{ - int fillmenu = 0; - - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(INITW, INITH); - glutCreateWindow("Worms"); - - myinit(); - - glutDisplayFunc(mydisplay); - glutVisibilityFunc(visibility); - glutReshapeFunc(myreshape); - glutMouseFunc(handleMouse); - - /* popup menu, courtsey of GLUT */ - fillmenu = glutCreateMenu(menuSelect); - glutAddMenuEntry("Filled", MENU_FILLED); - glutAddMenuEntry("Unfilled", MENU_UNFILLED); - - glutCreateMenu(menuSelect); - glutAddMenuEntry(" WORMS", MENU_NULL); - glutAddSubMenu("Drawing Mode", fillmenu); - glutAddMenuEntry("Quit", MENU_QUIT); - - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; -} - - diff --git a/lib/glut-3.7.6/progs/contrib/worms.dsp b/lib/glut-3.7.6/progs/contrib/worms.dsp deleted file mode 100644 index fe85e966697c54e667f1d5c2afdc9e839438eddb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/contrib/worms.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="worms" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=worms - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "worms.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "worms.mak" CFG="worms - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "worms - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "worms - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "worms - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "worms - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "worms - Win32 Release" -# Name "worms - Win32 Debug" -# Begin Source File - -SOURCE=.\worms.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/data/00.rgb b/lib/glut-3.7.6/progs/data/00.rgb deleted file mode 100644 index ec7f50f58937179bbc7a35dd8b15db81ae3282d7..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/00.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/01.rgb b/lib/glut-3.7.6/progs/data/01.rgb deleted file mode 100644 index 8a0568465f7198833d2e62ac1d973030758617f5..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/01.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/02.rgb b/lib/glut-3.7.6/progs/data/02.rgb deleted file mode 100644 index 56b846111207a7178ca3753b8f1d709f78398882..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/02.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/03.rgb b/lib/glut-3.7.6/progs/data/03.rgb deleted file mode 100644 index 3ec52599a05ba4598c6940e8aa3bd54b284fd888..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/03.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/04.rgb b/lib/glut-3.7.6/progs/data/04.rgb deleted file mode 100644 index 0e1a5c8df0ad47722e3e450f94eef6e8b8f19415..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/04.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/05.rgb b/lib/glut-3.7.6/progs/data/05.rgb deleted file mode 100644 index 84e719949c9d23c8ee256e10ac825d534400f4ff..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/05.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/brick.rgb b/lib/glut-3.7.6/progs/data/brick.rgb deleted file mode 100644 index d37b755d9e5ca24ebbe22dbbc46332dcda1fd911..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/brick.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/brush.rgb b/lib/glut-3.7.6/progs/data/brush.rgb deleted file mode 100644 index 45a59364484626a634c04b0516f762756171562c..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/brush.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/clouds.bw b/lib/glut-3.7.6/progs/data/clouds.bw deleted file mode 100644 index fe40dce1b0b33b0af152b29b2db1b0eef297f508..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/clouds.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/explosion.rgba b/lib/glut-3.7.6/progs/data/explosion.rgba deleted file mode 100644 index 3b88cc01cac0cdb5db08d8a3246f7714e7969646..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/explosion.rgba and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/f15.data b/lib/glut-3.7.6/progs/data/f15.data deleted file mode 100644 index ac07391230512fffb8374a6de5ec297d4030c667..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/data/f15.data +++ /dev/null @@ -1,13182 +0,0 @@ -v - 0.701655 -0.031842 0.0 - 0.701655 -0.031799 0.000435 - 0.701655 -0.031886 0.000957 - 0.701655 -0.031973 0.001479 - 0.701655 -0.03206 0.001914 - 0.701655 -0.032233 0.002436 - 0.701655 -0.032407 0.002871 - 0.701655 -0.032582 0.003393 - 0.701655 -0.032842 0.003828 - 0.701655 -0.033103 0.004263 - 0.701655 -0.033365 0.004611 - 0.701655 -0.033625 0.005046 - 0.701655 -0.033974 0.005394 - 0.701655 -0.034322 0.005742 - 0.701655 -0.034757 0.00609 - 0.701655 -0.035105 0.006351 - 0.701655 -0.03554 0.006699 - 0.701655 -0.035974 0.006873 - 0.701655 -0.036497 0.007134 - 0.701655 -0.036931 0.007308 - 0.701655 -0.037367 0.007482 - 0.701655 -0.037889 0.007569 - 0.701655 -0.03841 0.007656 - 0.701655 -0.038846 0.007743 - 0.701655 -0.039368 0.00783 - 0.701655 -0.039889 0.00783 - 0.701655 -0.040411 0.007743 - 0.701655 -0.040847 0.007656 - 0.701655 -0.041368 0.007569 - 0.701655 -0.041891 0.007482 - 0.701655 -0.042326 0.007308 - 0.701655 -0.042847 0.007134 - 0.701655 -0.043283 0.006873 - 0.701655 -0.043717 0.006699 - 0.701655 -0.044153 0.006351 - 0.701655 -0.0445 0.00609 - 0.701655 -0.044935 0.005742 - 0.701655 -0.045284 0.005394 - 0.701655 -0.045632 0.005046 - 0.701655 -0.045892 0.004611 - 0.701655 -0.046241 0.004263 - 0.701655 -0.046501 0.003828 - 0.701655 -0.046675 0.003393 - 0.701655 -0.046937 0.002871 - 0.701655 -0.047111 0.002436 - 0.701655 -0.047197 0.001914 - 0.701655 -0.047284 0.001479 - 0.701655 -0.047371 0.000957 - 0.701655 -0.047458 0.000435 - 0.701655 -0.047458 0.0 -e -v - 0.688431 -0.024447 0.0 - 0.688431 -0.024403 0.000783 - 0.688431 -0.02449 0.001566 - 0.688431 -0.024665 0.002436 - 0.688431 -0.024838 0.003219 - 0.688431 -0.0251 0.004002 - 0.688431 -0.025361 0.004785 - 0.688431 -0.025709 0.005568 - 0.688431 -0.026057 0.006264 - 0.688431 -0.026492 0.007047 - 0.688431 -0.027013 0.007656 - 0.688431 -0.027448 0.008352 - 0.688431 -0.028058 0.008961 - 0.688431 -0.028667 0.009483 - 0.688431 -0.029275 0.010092 - 0.688431 -0.029972 0.010527 - 0.688431 -0.030668 0.011049 - 0.688431 -0.031363 0.011397 - 0.688431 -0.03206 0.011745 - 0.688431 -0.032842 0.012093 - 0.688431 -0.033625 0.012354 - 0.688431 -0.034495 0.012528 - 0.688431 -0.035278 0.012702 - 0.688431 -0.036061 0.012789 - 0.688431 -0.036931 0.012876 - 0.688431 -0.037714 0.012876 - 0.688431 -0.038585 0.012789 - 0.688431 -0.039368 0.012702 - 0.688431 -0.040238 0.012528 - 0.688431 -0.041021 0.012354 - 0.688431 -0.041804 0.012093 - 0.688431 -0.042587 0.011745 - 0.688431 -0.043283 0.011397 - 0.688431 -0.044066 0.011049 - 0.688431 -0.044762 0.010527 - 0.688431 -0.045371 0.010092 - 0.688431 -0.045979 0.009483 - 0.688431 -0.046588 0.008961 - 0.688431 -0.047197 0.008352 - 0.688431 -0.04772 0.007656 - 0.688431 -0.048154 0.007047 - 0.688431 -0.04859 0.006264 - 0.688431 -0.048937 0.005568 - 0.688431 -0.049286 0.004785 - 0.688431 -0.049633 0.004002 - 0.688431 -0.049808 0.003219 - 0.688431 -0.049982 0.002436 - 0.688431 -0.050156 0.001566 - 0.688431 -0.050242 0.000783 - 0.688431 -0.050242 0.0 -e -v - 0.666246 -0.011571 0.0 - 0.666246 -0.011614 0.001392 - 0.666246 -0.011702 0.002871 - 0.666246 -0.011963 0.00435 - 0.666246 -0.012311 0.005829 - 0.666246 -0.012745 0.007221 - 0.666246 -0.013268 0.008613 - 0.666246 -0.01379 0.009918 - 0.666246 -0.014485 0.011223 - 0.666246 -0.015268 0.012528 - 0.666246 -0.016138 0.013746 - 0.666246 -0.017009 0.014877 - 0.666246 -0.018052 0.016008 - 0.666246 -0.019096 0.016965 - 0.666246 -0.020227 0.017922 - 0.666246 -0.021358 0.018879 - 0.666246 -0.022664 0.019662 - 0.666246 -0.023882 0.020358 - 0.666246 -0.025274 0.020967 - 0.666246 -0.026579 0.021576 - 0.666246 -0.028058 0.022011 - 0.666246 -0.02945 0.022359 - 0.666246 -0.030928 0.022707 - 0.666246 -0.03232 0.022881 - 0.666246 -0.033799 0.022968 - 0.666246 -0.035278 0.022968 - 0.666246 -0.036757 0.022881 - 0.666246 -0.038236 0.022707 - 0.666246 -0.039715 0.022359 - 0.666246 -0.041108 0.022011 - 0.666246 -0.0425 0.021576 - 0.666246 -0.043892 0.020967 - 0.666246 -0.045196 0.020358 - 0.666246 -0.046501 0.019662 - 0.666246 -0.04772 0.018879 - 0.666246 -0.048937 0.017922 - 0.666246 -0.050069 0.016965 - 0.666246 -0.051112 0.016008 - 0.666246 -0.05207 0.014877 - 0.666246 -0.053027 0.013746 - 0.666246 -0.053897 0.012528 - 0.666246 -0.054593 0.011223 - 0.666246 -0.055289 0.009918 - 0.666246 -0.055898 0.008613 - 0.666246 -0.056419 0.007221 - 0.666246 -0.056855 0.005829 - 0.666246 -0.057202 0.00435 - 0.666246 -0.057377 0.002871 - 0.666246 -0.057551 0.001392 - 0.666246 -0.057551 0.0 -e -v - 0.622137 0.002262 0.0 - 0.622137 0.002219 0.002088 - 0.622137 0.001958 0.004176 - 0.622137 0.001696 0.006177 - 0.622137 0.001174 0.008265 - 0.622137 0.000565 0.010266 - 0.622137 -0.000131 0.012267 - 0.622137 -0.001001 0.014181 - 0.622137 -0.001958 0.016008 - 0.622137 -0.003001 0.017748 - 0.622137 -0.004219 0.019488 - 0.622137 -0.005524 0.021141 - 0.622137 -0.006917 0.022707 - 0.622137 -0.008482 0.024186 - 0.622137 -0.010049 0.025491 - 0.622137 -0.011702 0.026796 - 0.622137 -0.013442 0.027927 - 0.622137 -0.015268 0.028971 - 0.622137 -0.017182 0.029841 - 0.622137 -0.019096 0.030624 - 0.622137 -0.021097 0.03132 - 0.622137 -0.023186 0.031842 - 0.622137 -0.025186 0.03219 - 0.622137 -0.027275 0.032451 - 0.622137 -0.029362 0.032625 - 0.622137 -0.03145 0.032625 - 0.622137 -0.033539 0.032451 - 0.622137 -0.035627 0.03219 - 0.622137 -0.037714 0.031842 - 0.622137 -0.039715 0.03132 - 0.622137 -0.041717 0.030624 - 0.622137 -0.04363 0.029841 - 0.622137 -0.045545 0.028971 - 0.622137 -0.047371 0.027927 - 0.622137 -0.049112 0.026796 - 0.622137 -0.050765 0.025491 - 0.622137 -0.052418 0.024186 - 0.622137 -0.053897 0.022707 - 0.622137 -0.055289 0.021141 - 0.622137 -0.056594 0.019488 - 0.622137 -0.057811 0.017748 - 0.622137 -0.058943 0.016008 - 0.622137 -0.0599 0.014181 - 0.622137 -0.060683 0.012267 - 0.622137 -0.061466 0.010266 - 0.622137 -0.062075 0.008265 - 0.622137 -0.062509 0.006177 - 0.622137 -0.062858 0.004176 - 0.622137 -0.063032 0.002088 - 0.622137 -0.063119 0.0 -e -v - 0.562455 0.019227 0.0 - 0.562455 0.019183 0.002697 - 0.562455 0.018923 0.005481 - 0.562455 0.018488 0.008265 - 0.562455 0.017879 0.010962 - 0.562455 0.017096 0.013572 - 0.562455 0.016138 0.016182 - 0.562455 0.015007 0.018705 - 0.562455 0.013702 0.021228 - 0.562455 0.012311 0.023577 - 0.562455 0.010744 0.025839 - 0.562455 0.009004 0.028014 - 0.562455 0.007091 0.030102 - 0.562455 0.005089 0.032016 - 0.562455 0.003001 0.033756 - 0.562455 0.000827 0.035496 - 0.562455 -0.001522 0.036975 - 0.562455 -0.003958 0.038367 - 0.562455 -0.006481 0.039498 - 0.562455 -0.009004 0.040542 - 0.562455 -0.011702 0.041412 - 0.562455 -0.014311 0.042195 - 0.562455 -0.017096 0.042717 - 0.562455 -0.019793 0.043065 - 0.562455 -0.022576 0.043239 - 0.562455 -0.025361 0.043239 - 0.562455 -0.028144 0.043065 - 0.562455 -0.030928 0.042717 - 0.562455 -0.033625 0.042195 - 0.562455 -0.036323 0.041412 - 0.562455 -0.038932 0.040542 - 0.562455 -0.041543 0.039498 - 0.562455 -0.043979 0.038367 - 0.562455 -0.046415 0.036975 - 0.562455 -0.048763 0.035496 - 0.562455 -0.050939 0.033756 - 0.562455 -0.053114 0.032016 - 0.562455 -0.055115 0.030102 - 0.562455 -0.056942 0.028014 - 0.562455 -0.058681 0.025839 - 0.562455 -0.060247 0.023577 - 0.562455 -0.061726 0.021228 - 0.562455 -0.062945 0.018705 - 0.562455 -0.064075 0.016182 - 0.562455 -0.065032 0.013572 - 0.562455 -0.065816 0.010962 - 0.562455 -0.066425 0.008265 - 0.562455 -0.066946 0.005481 - 0.562455 -0.067208 0.002697 - 0.562455 -0.067295 0.0 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031799 0.0 - 0.688431 -0.024403 0.0 - 0.666246 -0.011528 0.0 - 0.622137 0.002305 0.0 - 0.562455 0.019271 0.0 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031799 0.000435 - 0.688431 -0.024403 0.000783 - 0.666246 -0.011614 0.001392 - 0.622137 0.002219 0.002088 - 0.562455 0.019183 0.002697 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031886 0.000957 - 0.688431 -0.02449 0.001566 - 0.666246 -0.011702 0.002871 - 0.622137 0.001958 0.004176 - 0.562455 0.018923 0.005481 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031973 0.001479 - 0.688431 -0.024665 0.002436 - 0.666246 -0.011963 0.00435 - 0.622137 0.001696 0.006177 - 0.562455 0.018488 0.008265 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.03206 0.001914 - 0.688431 -0.024838 0.003219 - 0.666246 -0.012311 0.005829 - 0.622137 0.001174 0.008265 - 0.562455 0.017879 0.010962 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032233 0.002436 - 0.688431 -0.0251 0.004002 - 0.666246 -0.012745 0.007221 - 0.622137 0.000565 0.010266 - 0.562455 0.017096 0.013572 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032407 0.002871 - 0.688431 -0.025361 0.004785 - 0.666246 -0.013268 0.008613 - 0.622137 -0.000131 0.012267 - 0.562455 0.016138 0.016182 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032582 0.003393 - 0.688431 -0.025709 0.005568 - 0.666246 -0.01379 0.009918 - 0.622137 -0.001001 0.014181 - 0.562455 0.015007 0.018705 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032842 0.003828 - 0.688431 -0.026057 0.006264 - 0.666246 -0.014485 0.011223 - 0.622137 -0.001958 0.016008 - 0.562455 0.013702 0.021228 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033103 0.004263 - 0.688431 -0.026492 0.007047 - 0.666246 -0.015268 0.012528 - 0.622137 -0.003001 0.017748 - 0.562455 0.012311 0.023577 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033365 0.004611 - 0.688431 -0.027013 0.007656 - 0.666246 -0.016138 0.013746 - 0.622137 -0.004219 0.019488 - 0.562455 0.010744 0.025839 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033625 0.005046 - 0.688431 -0.027448 0.008352 - 0.666246 -0.017009 0.014877 - 0.622137 -0.005524 0.021141 - 0.562455 0.009004 0.028014 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033974 0.005394 - 0.688431 -0.028058 0.008961 - 0.666246 -0.018052 0.016008 - 0.622137 -0.006917 0.022707 - 0.562455 0.007091 0.030102 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.034322 0.005742 - 0.688431 -0.028667 0.009483 - 0.666246 -0.019096 0.016965 - 0.622137 -0.008482 0.024186 - 0.562455 0.005089 0.032016 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.034757 0.00609 - 0.688431 -0.029275 0.010092 - 0.666246 -0.020227 0.017922 - 0.622137 -0.010049 0.025491 - 0.562455 0.003001 0.033756 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.035105 0.006351 - 0.688431 -0.029972 0.010527 - 0.666246 -0.021358 0.018879 - 0.622137 -0.011702 0.026796 - 0.562455 0.000827 0.035496 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.03554 0.006699 - 0.688431 -0.030668 0.011049 - 0.666246 -0.022664 0.019662 - 0.622137 -0.013442 0.027927 - 0.562455 -0.001522 0.036975 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.035974 0.006873 - 0.688431 -0.031363 0.011397 - 0.666246 -0.023882 0.020358 - 0.622137 -0.015268 0.028971 - 0.562455 -0.003958 0.038367 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.036497 0.007134 - 0.688431 -0.03206 0.011745 - 0.666246 -0.025274 0.020967 - 0.622137 -0.017182 0.029841 - 0.562455 -0.006481 0.039498 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.036931 0.007308 - 0.688431 -0.032842 0.012093 - 0.666246 -0.026579 0.021576 - 0.622137 -0.019096 0.030624 - 0.562455 -0.009004 0.040542 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.037367 0.007482 - 0.688431 -0.033625 0.012354 - 0.666246 -0.028058 0.022011 - 0.622137 -0.021097 0.03132 - 0.562455 -0.011702 0.041412 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.037889 0.007569 - 0.688431 -0.034495 0.012528 - 0.666246 -0.02945 0.022359 - 0.622137 -0.023186 0.031842 - 0.562455 -0.014311 0.042195 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.03841 0.007656 - 0.688431 -0.035278 0.012702 - 0.666246 -0.030928 0.022707 - 0.622137 -0.025186 0.03219 - 0.562455 -0.017096 0.042717 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.038846 0.007743 - 0.688431 -0.036061 0.012789 - 0.666246 -0.03232 0.022881 - 0.622137 -0.027275 0.032451 - 0.562455 -0.019793 0.043065 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.039368 0.00783 - 0.688431 -0.036931 0.012876 - 0.666246 -0.033799 0.022968 - 0.622137 -0.029362 0.032625 - 0.562455 -0.022576 0.043239 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.039889 0.00783 - 0.688431 -0.037714 0.012876 - 0.666246 -0.035278 0.022968 - 0.622137 -0.03145 0.032625 - 0.562455 -0.025361 0.043239 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.040411 0.007743 - 0.688431 -0.038585 0.012789 - 0.666246 -0.036757 0.022881 - 0.622137 -0.033539 0.032451 - 0.562455 -0.028144 0.043065 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.040847 0.007656 - 0.688431 -0.039368 0.012702 - 0.666246 -0.038236 0.022707 - 0.622137 -0.035627 0.03219 - 0.562455 -0.030928 0.042717 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.041368 0.007569 - 0.688431 -0.040238 0.012528 - 0.666246 -0.039715 0.022359 - 0.622137 -0.037714 0.031842 - 0.562455 -0.033625 0.042195 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.041891 0.007482 - 0.688431 -0.041021 0.012354 - 0.666246 -0.041108 0.022011 - 0.622137 -0.039715 0.03132 - 0.562455 -0.036323 0.041412 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.042326 0.007308 - 0.688431 -0.041804 0.012093 - 0.666246 -0.0425 0.021576 - 0.622137 -0.041717 0.030624 - 0.562455 -0.038932 0.040542 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.042847 0.007134 - 0.688431 -0.042587 0.011745 - 0.666246 -0.043892 0.020967 - 0.622137 -0.04363 0.029841 - 0.562455 -0.041543 0.039498 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.043283 0.006873 - 0.688431 -0.043283 0.011397 - 0.666246 -0.045196 0.020358 - 0.622137 -0.045545 0.028971 - 0.562455 -0.043979 0.038367 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.043717 0.006699 - 0.688431 -0.044066 0.011049 - 0.666246 -0.046501 0.019662 - 0.622137 -0.047371 0.027927 - 0.562455 -0.046415 0.036975 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.044153 0.006351 - 0.688431 -0.044762 0.010527 - 0.666246 -0.04772 0.018879 - 0.622137 -0.049112 0.026796 - 0.562455 -0.048763 0.035496 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.0445 0.00609 - 0.688431 -0.045371 0.010092 - 0.666246 -0.048937 0.017922 - 0.622137 -0.050765 0.025491 - 0.562455 -0.050939 0.033756 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.044935 0.005742 - 0.688431 -0.045979 0.009483 - 0.666246 -0.050069 0.016965 - 0.622137 -0.052418 0.024186 - 0.562455 -0.053114 0.032016 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.045284 0.005394 - 0.688431 -0.046588 0.008961 - 0.666246 -0.051112 0.016008 - 0.622137 -0.053897 0.022707 - 0.562455 -0.055115 0.030102 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.045632 0.005046 - 0.688431 -0.047197 0.008352 - 0.666246 -0.05207 0.014877 - 0.622137 -0.055289 0.021141 - 0.562455 -0.056942 0.028014 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.045892 0.004611 - 0.688431 -0.04772 0.007656 - 0.666246 -0.053027 0.013746 - 0.622137 -0.056594 0.019488 - 0.562455 -0.058681 0.025839 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046241 0.004263 - 0.688431 -0.048154 0.007047 - 0.666246 -0.053897 0.012528 - 0.622137 -0.057811 0.017748 - 0.562455 -0.060247 0.023577 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046501 0.003828 - 0.688431 -0.04859 0.006264 - 0.666246 -0.054593 0.011223 - 0.622137 -0.058943 0.016008 - 0.562455 -0.061726 0.021228 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046675 0.003393 - 0.688431 -0.048937 0.005568 - 0.666246 -0.055289 0.009918 - 0.622137 -0.0599 0.014181 - 0.562455 -0.062945 0.018705 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046937 0.002871 - 0.688431 -0.049286 0.004785 - 0.666246 -0.055898 0.008613 - 0.622137 -0.060683 0.012267 - 0.562455 -0.064075 0.016182 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047111 0.002436 - 0.688431 -0.049633 0.004002 - 0.666246 -0.056419 0.007221 - 0.622137 -0.061466 0.010266 - 0.562455 -0.065032 0.013572 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047197 0.001914 - 0.688431 -0.049808 0.003219 - 0.666246 -0.056855 0.005829 - 0.622137 -0.062075 0.008265 - 0.562455 -0.065816 0.010962 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047284 0.001479 - 0.688431 -0.049982 0.002436 - 0.666246 -0.057202 0.00435 - 0.622137 -0.062509 0.006177 - 0.562455 -0.066425 0.008265 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047371 0.000957 - 0.688431 -0.050156 0.001566 - 0.666246 -0.057377 0.002871 - 0.622137 -0.062858 0.004176 - 0.562455 -0.066946 0.005481 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047458 0.000435 - 0.688431 -0.050242 0.000783 - 0.666246 -0.057551 0.001392 - 0.622137 -0.063032 0.002088 - 0.562455 -0.067208 0.002697 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047458 0.0 - 0.688431 -0.050242 0.0 - 0.666246 -0.057551 0.0 - 0.622137 -0.063119 0.0 - 0.562455 -0.067295 0.0 -e -v - 0.562455 0.01914 0.0 - 0.562455 0.01901 0.001218 - 0.562455 0.018835 0.002523 - 0.562455 0.018748 0.003741 - 0.562455 0.018575 0.005046 - 0.562455 0.018313 0.006264 - 0.562455 0.01814 0.007482 - 0.562455 0.017879 0.008787 - 0.562455 0.017617 0.010005 - 0.562455 0.017357 0.011223 - 0.562455 0.017096 0.012528 - 0.562455 0.016748 0.013746 - 0.562455 0.016313 0.014964 - 0.562455 0.015878 0.016095 - 0.562455 0.015442 0.017313 - 0.562455 0.015007 0.018531 - 0.562455 0.013442 0.021663 - 0.562455 0.011702 0.024621 - 0.562455 0.009701 0.027405 - 0.562455 0.007438 0.030102 - 0.562455 0.005003 0.032538 - 0.562455 0.002305 0.034713 - 0.562455 -0.000565 0.036714 - 0.562455 -0.003523 0.038454 - 0.562455 -0.006743 0.039933 - 0.562455 -0.009961 0.041064 - 0.562455 -0.013354 0.042021 - 0.562455 -0.016748 0.042804 - 0.562455 -0.020141 0.043413 - 0.562455 -0.02362 0.043674 - 0.562455 -0.0271 0.043587 - 0.562455 -0.030493 0.043152 - 0.562455 -0.033886 0.042369 - 0.562455 -0.037193 0.041412 - 0.562455 -0.040498 0.040281 - 0.562455 -0.043717 0.038889 - 0.562455 -0.046762 0.037236 - 0.562455 -0.04972 0.035496 - 0.562455 -0.052591 0.033495 - 0.562455 -0.055289 0.031233 - 0.562455 -0.057638 0.028797 - 0.562455 -0.059813 0.026013 - 0.562455 -0.061726 0.023142 - 0.562455 -0.06338 0.020097 - 0.562455 -0.064772 0.016878 - 0.562455 -0.065903 0.013659 - 0.562455 -0.066859 0.010266 - 0.562455 -0.067556 0.006873 - 0.562455 -0.06799 0.003393 - 0.562455 -0.068164 0.0 -e -v - 0.522696 0.029232 0.0 - 0.522696 0.029189 0.001305 - 0.522696 0.029102 0.002697 - 0.522696 0.028927 0.004089 - 0.522696 0.028754 0.005481 - 0.522696 0.028579 0.006786 - 0.522696 0.028406 0.008178 - 0.522696 0.028231 0.00957 - 0.522696 0.027971 0.010875 - 0.522696 0.02771 0.012267 - 0.522696 0.027448 0.013572 - 0.522696 0.0271 0.014877 - 0.522696 0.026665 0.016269 - 0.522696 0.026231 0.017574 - 0.522696 0.025796 0.018879 - 0.522696 0.025361 0.020184 - 0.522696 0.023447 0.023577 - 0.522696 0.021358 0.02697 - 0.522696 0.019096 0.030189 - 0.522696 0.016573 0.033234 - 0.522696 0.013876 0.036018 - 0.522696 0.010744 0.038454 - 0.522696 0.007525 0.040629 - 0.522696 0.004045 0.042543 - 0.522696 0.000565 0.044283 - 0.522696 -0.003089 0.045762 - 0.522696 -0.00683 0.04698 - 0.522696 -0.010658 0.04785 - 0.522696 -0.014573 0.048372 - 0.522696 -0.018488 0.048546 - 0.522696 -0.022489 0.048372 - 0.522696 -0.026405 0.04785 - 0.522696 -0.030233 0.047154 - 0.522696 -0.034061 0.046197 - 0.522696 -0.037802 0.044892 - 0.522696 -0.041368 0.043326 - 0.522696 -0.044849 0.041499 - 0.522696 -0.048154 0.039324 - 0.522696 -0.051286 0.036888 - 0.522696 -0.054244 0.034365 - 0.522696 -0.057115 0.031668 - 0.522696 -0.0599 0.028884 - 0.522696 -0.062509 0.025926 - 0.522696 -0.064598 0.02262 - 0.522696 -0.066338 0.019053 - 0.522696 -0.06773 0.015399 - 0.522696 -0.068861 0.011658 - 0.522696 -0.06973 0.00783 - 0.522696 -0.070253 0.003915 - 0.522696 -0.070427 0.0 -e -v - 0.48285 0.039324 0.0 - 0.48285 0.039542 0.001305 - 0.48285 0.039715 0.00261 - 0.48285 0.039802 0.003915 - 0.48285 0.039802 0.00522 - 0.48285 0.039629 0.006612 - 0.48285 0.039455 0.007917 - 0.48285 0.039193 0.009222 - 0.48285 0.038846 0.010527 - 0.48285 0.038498 0.011832 - 0.48285 0.038149 0.01305 - 0.48285 0.037802 0.014355 - 0.48285 0.037367 0.01566 - 0.48285 0.036931 0.016878 - 0.48285 0.03641 0.018096 - 0.48285 0.035887 0.019314 - 0.48285 0.034061 0.023229 - 0.48285 0.031886 0.02697 - 0.48285 0.029362 0.03045 - 0.48285 0.026579 0.033756 - 0.48285 0.023534 0.036801 - 0.48285 0.020314 0.039585 - 0.48285 0.016748 0.042108 - 0.48285 0.013094 0.044457 - 0.48285 0.009352 0.046458 - 0.48285 0.00535 0.048111 - 0.48285 0.001174 0.049329 - 0.48285 -0.003001 0.050025 - 0.48285 -0.007351 0.05046 - 0.48285 -0.011614 0.050547 - 0.48285 -0.015965 0.050286 - 0.48285 -0.020227 0.049764 - 0.48285 -0.02449 0.049068 - 0.48285 -0.028667 0.048198 - 0.48285 -0.032842 0.047154 - 0.48285 -0.036931 0.045762 - 0.48285 -0.040934 0.044109 - 0.48285 -0.044762 0.042108 - 0.48285 -0.048416 0.039846 - 0.48285 -0.051895 0.037323 - 0.48285 -0.055115 0.034452 - 0.48285 -0.05816 0.03132 - 0.48285 -0.060856 0.028014 - 0.48285 -0.063293 0.024447 - 0.48285 -0.06538 0.020706 - 0.48285 -0.067208 0.016791 - 0.48285 -0.068512 0.012702 - 0.48285 -0.069556 0.008526 - 0.48285 -0.070166 0.004263 - 0.48285 -0.070427 0.0 -e -v - 0.456402 0.048546 0.0 - 0.456402 0.048416 0.001218 - 0.456402 0.048329 0.002523 - 0.456402 0.048154 0.003741 - 0.456402 0.04798 0.004959 - 0.456402 0.04772 0.006264 - 0.456402 0.047546 0.007482 - 0.456402 0.047284 0.008787 - 0.456402 0.047024 0.010005 - 0.456402 0.046762 0.011223 - 0.456402 0.046415 0.012441 - 0.456402 0.046067 0.013659 - 0.456402 0.045632 0.014877 - 0.456402 0.045196 0.016095 - 0.456402 0.044762 0.017226 - 0.456402 0.044326 0.018444 - 0.456402 0.041977 0.022359 - 0.456402 0.039368 0.0261 - 0.456402 0.036584 0.029667 - 0.456402 0.033539 0.033147 - 0.456402 0.03032 0.036279 - 0.456402 0.026927 0.039324 - 0.456402 0.023272 0.042021 - 0.456402 0.019358 0.044457 - 0.456402 0.015356 0.046632 - 0.456402 0.01118 0.048372 - 0.456402 0.00683 0.049764 - 0.456402 0.002305 0.050547 - 0.456402 -0.002219 0.050982 - 0.456402 -0.006743 0.051243 - 0.456402 -0.011354 0.05133 - 0.456402 -0.015878 0.051156 - 0.456402 -0.020402 0.050634 - 0.456402 -0.024926 0.049764 - 0.456402 -0.029275 0.048633 - 0.456402 -0.033625 0.047154 - 0.456402 -0.037802 0.045414 - 0.456402 -0.041977 0.043413 - 0.456402 -0.045979 0.041238 - 0.456402 -0.049808 0.038802 - 0.456402 -0.053461 0.036018 - 0.456402 -0.056855 0.032973 - 0.456402 -0.059987 0.029667 - 0.456402 -0.062684 0.026013 - 0.456402 -0.064859 0.022011 - 0.456402 -0.066511 0.017835 - 0.456402 -0.067904 0.013485 - 0.456402 -0.068948 0.009048 - 0.456402 -0.069643 0.004524 - 0.456402 -0.069991 0.0 -e -v - 0.429867 0.058116 0.0 - 0.429867 0.057898 0.001566 - 0.429867 0.057638 0.003219 - 0.429867 0.057289 0.004872 - 0.429867 0.056942 0.006438 - 0.429867 0.056506 0.008091 - 0.429867 0.056072 0.009657 - 0.429867 0.055549 0.011223 - 0.429867 0.055027 0.012789 - 0.429867 0.054419 0.014355 - 0.429867 0.053636 0.015834 - 0.429867 0.052853 0.017313 - 0.429867 0.051982 0.018705 - 0.429867 0.050939 0.02001 - 0.429867 0.049895 0.021315 - 0.429867 0.048763 0.022533 - 0.429867 0.046328 0.026448 - 0.429867 0.043543 0.030276 - 0.429867 0.040498 0.033756 - 0.429867 0.037193 0.037062 - 0.429867 0.033625 0.04002 - 0.429867 0.029797 0.042804 - 0.429867 0.025882 0.045327 - 0.429867 0.021881 0.047676 - 0.429867 0.017617 0.049677 - 0.429867 0.01318 0.051156 - 0.429867 0.008656 0.052113 - 0.429867 0.003958 0.052548 - 0.429867 -0.000653 0.052809 - 0.429867 -0.00535 0.052896 - 0.429867 -0.010049 0.052809 - 0.429867 -0.014659 0.052461 - 0.429867 -0.019358 0.051852 - 0.429867 -0.023882 0.050895 - 0.429867 -0.028406 0.049677 - 0.429867 -0.032842 0.048198 - 0.429867 -0.037193 0.046458 - 0.429867 -0.041368 0.04437 - 0.429867 -0.045371 0.041934 - 0.429867 -0.049286 0.039324 - 0.429867 -0.05294 0.03654 - 0.429867 -0.056594 0.033495 - 0.429867 -0.0599 0.030189 - 0.429867 -0.062684 0.026535 - 0.429867 -0.065032 0.022446 - 0.429867 -0.066946 0.018183 - 0.429867 -0.068512 0.013833 - 0.429867 -0.069556 0.009222 - 0.429867 -0.070253 0.004611 - 0.429867 -0.070427 0.0 -e -v - 0.403332 0.069165 0.0 - 0.403332 0.069122 0.002958 - 0.403332 0.068774 0.005916 - 0.403332 0.068251 0.008874 - 0.403332 0.067469 0.011745 - 0.403332 0.066598 0.014529 - 0.403332 0.06538 0.017313 - 0.403332 0.063901 0.019923 - 0.403332 0.062162 0.022272 - 0.403332 0.06016 0.024534 - 0.403332 0.057898 0.026535 - 0.403332 0.055549 0.028362 - 0.403332 0.053114 0.030015 - 0.403332 0.050503 0.031407 - 0.403332 0.04772 0.032625 - 0.403332 0.044935 0.033669 - 0.403332 0.042064 0.036975 - 0.403332 0.038846 0.04002 - 0.403332 0.035452 0.042717 - 0.403332 0.031799 0.045153 - 0.403332 0.027971 0.047241 - 0.403332 0.023969 0.049068 - 0.403332 0.019879 0.050547 - 0.403332 0.015616 0.051678 - 0.403332 0.011354 0.052548 - 0.403332 0.007004 0.053157 - 0.403332 0.002654 0.053418 - 0.403332 -0.001783 0.053505 - 0.403332 -0.006134 0.053244 - 0.403332 -0.010483 0.052722 - 0.403332 -0.014747 0.052026 - 0.403332 -0.019096 0.051069 - 0.403332 -0.023359 0.050025 - 0.403332 -0.027536 0.048894 - 0.403332 -0.031712 0.047589 - 0.403332 -0.035801 0.046023 - 0.403332 -0.039802 0.044196 - 0.403332 -0.04363 0.042108 - 0.403332 -0.047284 0.039672 - 0.403332 -0.050852 0.037149 - 0.403332 -0.054244 0.034365 - 0.403332 -0.057377 0.031233 - 0.403332 -0.060247 0.028014 - 0.403332 -0.063032 0.024621 - 0.403332 -0.06538 0.02088 - 0.403332 -0.067295 0.016965 - 0.403332 -0.068861 0.012876 - 0.403332 -0.069904 0.008613 - 0.403332 -0.070601 0.00435 - 0.403332 -0.070862 0.0 -e -v - 0.376797 0.084825 0.0 - 0.376797 0.084607 0.003828 - 0.376797 0.083912 0.007656 - 0.376797 0.082781 0.011397 - 0.376797 0.081302 0.014964 - 0.376797 0.079388 0.018444 - 0.376797 0.077212 0.021663 - 0.376797 0.07469 0.024621 - 0.376797 0.071906 0.027318 - 0.376797 0.068861 0.029754 - 0.376797 0.065554 0.031929 - 0.376797 0.062075 0.033669 - 0.376797 0.058508 0.035061 - 0.376797 0.05468 0.036192 - 0.376797 0.050852 0.036888 - 0.376797 0.047024 0.037149 - 0.376797 0.043892 0.040194 - 0.376797 0.040498 0.042978 - 0.376797 0.036931 0.045588 - 0.376797 0.033278 0.04785 - 0.376797 0.029362 0.049851 - 0.376797 0.025361 0.051591 - 0.376797 0.021185 0.052896 - 0.376797 0.017009 0.053853 - 0.376797 0.012659 0.054462 - 0.376797 0.008309 0.05481 - 0.376797 0.003958 0.054897 - 0.376797 -0.000392 0.05481 - 0.376797 -0.004742 0.054375 - 0.376797 -0.009092 0.053679 - 0.376797 -0.013354 0.052809 - 0.376797 -0.017617 0.051765 - 0.376797 -0.021793 0.050547 - 0.376797 -0.025882 0.048981 - 0.376797 -0.029885 0.047328 - 0.376797 -0.033799 0.045501 - 0.376797 -0.037714 0.043413 - 0.376797 -0.041455 0.041325 - 0.376797 -0.045284 0.039063 - 0.376797 -0.048937 0.036714 - 0.376797 -0.052504 0.034191 - 0.376797 -0.055723 0.03132 - 0.376797 -0.058681 0.028014 - 0.376797 -0.061205 0.024534 - 0.376797 -0.06338 0.020706 - 0.376797 -0.065293 0.016791 - 0.376797 -0.066859 0.012789 - 0.376797 -0.068077 0.008526 - 0.376797 -0.068948 0.004263 - 0.376797 -0.069556 0.0 -e -v - 0.323814 0.108228 0.0 - 0.323814 0.108011 0.00522 - 0.323814 0.107054 0.010353 - 0.323814 0.105314 0.015399 - 0.323814 0.102877 0.02001 - 0.323814 0.100006 0.024447 - 0.323814 0.096614 0.028449 - 0.323814 0.092611 0.031929 - 0.323814 0.088174 0.0348 - 0.323814 0.083389 0.037062 - 0.323814 0.078431 0.038715 - 0.323814 0.073298 0.039933 - 0.323814 0.068077 0.040455 - 0.323814 0.062771 0.040368 - 0.323814 0.057551 0.039498 - 0.323814 0.052504 0.038106 - 0.323814 0.049373 0.041325 - 0.323814 0.046067 0.04437 - 0.323814 0.0425 0.047154 - 0.323814 0.038759 0.04959 - 0.323814 0.034757 0.051678 - 0.323814 0.030668 0.053418 - 0.323814 0.026317 0.054723 - 0.323814 0.021968 0.05568 - 0.323814 0.017444 0.056115 - 0.323814 0.013006 0.056289 - 0.323814 0.008482 0.056289 - 0.323814 0.004045 0.055941 - 0.323814 -0.000479 0.055419 - 0.323814 -0.004916 0.054636 - 0.323814 -0.009266 0.053592 - 0.323814 -0.013616 0.052374 - 0.323814 -0.017879 0.050982 - 0.323814 -0.022055 0.049416 - 0.323814 -0.026231 0.047676 - 0.323814 -0.03032 0.045762 - 0.323814 -0.034235 0.043761 - 0.323814 -0.038149 0.041499 - 0.323814 -0.041977 0.03915 - 0.323814 -0.045718 0.036714 - 0.323814 -0.049459 0.034104 - 0.323814 -0.05294 0.031233 - 0.323814 -0.056159 0.028101 - 0.323814 -0.059117 0.024795 - 0.323814 -0.061813 0.021228 - 0.323814 -0.064075 0.017313 - 0.323814 -0.065903 0.013224 - 0.323814 -0.06712 0.008874 - 0.323814 -0.067817 0.004437 - 0.323814 -0.068164 0.0 -e -v - 0.270744 0.112839 0.0 - 0.270744 0.11236 0.004611 - 0.270744 0.111404 0.009657 - 0.270744 0.109838 0.014616 - 0.270744 0.107749 0.019314 - 0.270744 0.104966 0.023664 - 0.270744 0.101659 0.027579 - 0.270744 0.097832 0.031059 - 0.270744 0.093569 0.034017 - 0.270744 0.088958 0.036279 - 0.270744 0.084086 0.037932 - 0.270744 0.079039 0.039063 - 0.270744 0.073907 0.039585 - 0.270744 0.068774 0.039411 - 0.270744 0.06364 0.038802 - 0.270744 0.058681 0.037584 - 0.270744 0.055549 0.041151 - 0.270744 0.052157 0.044457 - 0.270744 0.048416 0.047328 - 0.270744 0.0445 0.049851 - 0.270744 0.040238 0.051852 - 0.270744 0.035714 0.053418 - 0.270744 0.031189 0.054549 - 0.270744 0.026492 0.055332 - 0.270744 0.021793 0.055941 - 0.270744 0.017096 0.056289 - 0.270744 0.012397 0.056289 - 0.270744 0.007699 0.056028 - 0.270744 0.003001 0.055419 - 0.270744 -0.00161 0.054723 - 0.270744 -0.00622 0.053766 - 0.270744 -0.010832 0.052722 - 0.270744 -0.015442 0.051678 - 0.270744 -0.019966 0.050373 - 0.270744 -0.02449 0.049068 - 0.270744 -0.028927 0.047415 - 0.270744 -0.033278 0.045588 - 0.270744 -0.03754 0.043587 - 0.270744 -0.04163 0.041238 - 0.270744 -0.045545 0.038628 - 0.270744 -0.049373 0.035844 - 0.270744 -0.053027 0.032886 - 0.270744 -0.056419 0.029667 - 0.270744 -0.059464 0.026013 - 0.270744 -0.062162 0.022185 - 0.270744 -0.064424 0.018009 - 0.270744 -0.066251 0.013659 - 0.270744 -0.06773 0.009222 - 0.270744 -0.068774 0.004611 - 0.270744 -0.069556 0.0 -e -v - 0.229506 0.11049 0.0 - 0.229506 0.11062 0.004872 - 0.229506 0.110186 0.009831 - 0.229506 0.109315 0.014703 - 0.229506 0.107749 0.019401 - 0.229506 0.105575 0.023838 - 0.229506 0.102703 0.027927 - 0.229506 0.099224 0.031494 - 0.229506 0.095395 0.034539 - 0.229506 0.091045 0.037062 - 0.229506 0.086521 0.038976 - 0.229506 0.081736 0.040368 - 0.229506 0.076865 0.041238 - 0.229506 0.071906 0.041586 - 0.229506 0.067033 0.041325 - 0.229506 0.062075 0.040629 - 0.229506 0.058768 0.044196 - 0.229506 0.055115 0.047502 - 0.229506 0.051112 0.050286 - 0.229506 0.04685 0.052722 - 0.229506 0.042326 0.054462 - 0.229506 0.03754 0.055854 - 0.229506 0.032756 0.056811 - 0.229506 0.027971 0.057594 - 0.229506 0.023012 0.057942 - 0.229506 0.01814 0.057855 - 0.229506 0.013268 0.057594 - 0.229506 0.008396 0.057072 - 0.229506 0.003523 0.05655 - 0.229506 -0.001349 0.056028 - 0.229506 -0.00622 0.055506 - 0.229506 -0.011092 0.05481 - 0.229506 -0.015878 0.05394 - 0.229506 -0.020662 0.052809 - 0.229506 -0.025361 0.05133 - 0.229506 -0.029885 0.049503 - 0.229506 -0.034408 0.047502 - 0.229506 -0.038759 0.045327 - 0.229506 -0.042934 0.042804 - 0.229506 -0.047024 0.04002 - 0.229506 -0.050939 0.037149 - 0.229506 -0.054766 0.034104 - 0.229506 -0.058421 0.030798 - 0.229506 -0.061639 0.027144 - 0.229506 -0.064511 0.023055 - 0.229506 -0.066859 0.018792 - 0.229506 -0.068774 0.014268 - 0.229506 -0.070166 0.00957 - 0.229506 -0.071209 0.004785 - 0.229506 -0.071819 0.0 -e -v - 0.217674 0.110055 0.0 - 0.217674 0.109751 0.004437 - 0.217674 0.109054 0.008874 - 0.217674 0.107836 0.013311 - 0.217674 0.106096 0.017487 - 0.217674 0.103922 0.021402 - 0.217674 0.101224 0.024969 - 0.217674 0.098006 0.028188 - 0.217674 0.094526 0.031059 - 0.217674 0.090697 0.033408 - 0.217674 0.086608 0.035322 - 0.217674 0.082259 0.036627 - 0.217674 0.077822 0.037497 - 0.217674 0.073385 0.037845 - 0.217674 0.068861 0.037671 - 0.217674 0.064337 0.037149 - 0.217674 0.061205 0.04089 - 0.217674 0.057638 0.044283 - 0.217674 0.053723 0.047241 - 0.217674 0.049373 0.049677 - 0.217674 0.044935 0.051678 - 0.217674 0.040238 0.053331 - 0.217674 0.035452 0.054549 - 0.217674 0.030581 0.055332 - 0.217674 0.025709 0.055767 - 0.217674 0.02075 0.056115 - 0.217674 0.015878 0.056202 - 0.217674 0.010918 0.056115 - 0.217674 0.006047 0.055854 - 0.217674 0.001088 0.055332 - 0.217674 -0.003785 0.054636 - 0.217674 -0.008656 0.053766 - 0.217674 -0.013442 0.052635 - 0.217674 -0.018227 0.051417 - 0.217674 -0.022924 0.049938 - 0.217674 -0.027536 0.048285 - 0.217674 -0.032146 0.046458 - 0.217674 -0.036584 0.04437 - 0.217674 -0.040934 0.042021 - 0.217674 -0.045109 0.039411 - 0.217674 -0.049286 0.036714 - 0.217674 -0.053287 0.033843 - 0.217674 -0.057028 0.030711 - 0.217674 -0.060422 0.027144 - 0.217674 -0.06338 0.023142 - 0.217674 -0.065816 0.018879 - 0.217674 -0.06773 0.014355 - 0.217674 -0.069296 0.009657 - 0.217674 -0.070253 0.004872 - 0.217674 -0.070862 0.0 -e -v - 0.164691 0.102225 0.0 - 0.164691 0.101921 0.00348 - 0.164691 0.101224 0.00696 - 0.164691 0.100267 0.010353 - 0.164691 0.09905 0.013659 - 0.164691 0.097484 0.016791 - 0.164691 0.095569 0.019836 - 0.164691 0.093482 0.022707 - 0.164691 0.091045 0.025317 - 0.164691 0.088436 0.027666 - 0.164691 0.085652 0.029754 - 0.164691 0.082607 0.031581 - 0.164691 0.079388 0.03306 - 0.164691 0.075994 0.034278 - 0.164691 0.072601 0.035148 - 0.164691 0.069122 0.03567 - 0.164691 0.066425 0.039759 - 0.164691 0.062684 0.043239 - 0.164691 0.058421 0.04611 - 0.164691 0.05381 0.048285 - 0.164691 0.049024 0.050199 - 0.164691 0.044066 0.051504 - 0.164691 0.039019 0.052374 - 0.164691 0.033886 0.052983 - 0.164691 0.028841 0.053505 - 0.164691 0.023707 0.05394 - 0.164691 0.018575 0.054375 - 0.164691 0.013442 0.054549 - 0.164691 0.008309 0.054549 - 0.164691 0.003263 0.054375 - 0.164691 -0.001871 0.05394 - 0.164691 -0.007004 0.053418 - 0.164691 -0.012049 0.052635 - 0.164691 -0.017096 0.051591 - 0.164691 -0.022055 0.050373 - 0.164691 -0.027013 0.048981 - 0.164691 -0.031886 0.047502 - 0.164691 -0.036757 0.045849 - 0.164691 -0.041543 0.043935 - 0.164691 -0.046067 0.041673 - 0.164691 -0.050416 0.038889 - 0.164691 -0.054419 0.03567 - 0.164691 -0.05816 0.032103 - 0.164691 -0.061552 0.028275 - 0.164691 -0.064511 0.024099 - 0.164691 -0.067033 0.019662 - 0.164691 -0.069035 0.014964 - 0.164691 -0.070601 0.010092 - 0.164691 -0.071644 0.005046 - 0.164691 -0.072254 0.0 -e -v - 0.111621 0.092568 0.0 - 0.111621 0.092698 0.002436 - 0.111621 0.092611 0.004959 - 0.111621 0.09235 0.007482 - 0.111621 0.091916 0.009918 - 0.111621 0.091307 0.012354 - 0.111621 0.090524 0.01479 - 0.111621 0.089653 0.017139 - 0.111621 0.08861 0.019401 - 0.111621 0.087305 0.021576 - 0.111621 0.085913 0.023664 - 0.111621 0.08426 0.025578 - 0.111621 0.08252 0.027405 - 0.111621 0.080605 0.029058 - 0.111621 0.078604 0.030537 - 0.111621 0.076517 0.031929 - 0.111621 0.072862 0.035931 - 0.111621 0.068948 0.039672 - 0.111621 0.064685 0.042978 - 0.111621 0.060073 0.045849 - 0.111621 0.055202 0.048285 - 0.111621 0.050156 0.050199 - 0.111621 0.045022 0.051765 - 0.111621 0.039715 0.05307 - 0.111621 0.034408 0.054027 - 0.111621 0.029014 0.054549 - 0.111621 0.02362 0.05481 - 0.111621 0.018227 0.05481 - 0.111621 0.012745 0.05481 - 0.111621 0.007351 0.054636 - 0.111621 0.001958 0.054462 - 0.111621 -0.003436 0.054027 - 0.111621 -0.00883 0.053418 - 0.111621 -0.014225 0.052635 - 0.111621 -0.019531 0.051591 - 0.111621 -0.024751 0.05046 - 0.111621 -0.030058 0.049155 - 0.111621 -0.035278 0.047676 - 0.111621 -0.040325 0.045762 - 0.111621 -0.045196 0.043413 - 0.111621 -0.049808 0.040542 - 0.111621 -0.054157 0.037323 - 0.111621 -0.058247 0.033756 - 0.111621 -0.061988 0.029841 - 0.111621 -0.065206 0.025491 - 0.111621 -0.067904 0.020793 - 0.111621 -0.070078 0.015834 - 0.111621 -0.071644 0.010614 - 0.111621 -0.072688 0.005307 - 0.111621 -0.073211 0.0 -e -v - 0.058638 0.081606 0.0 - 0.058638 0.081562 0.001479 - 0.058638 0.081562 0.003045 - 0.058638 0.081389 0.004611 - 0.058638 0.081215 0.006177 - 0.058638 0.080954 0.007743 - 0.058638 0.080692 0.009222 - 0.058638 0.080344 0.010788 - 0.058638 0.079997 0.012267 - 0.058638 0.079475 0.013746 - 0.058638 0.078952 0.015225 - 0.058638 0.078344 0.016617 - 0.058638 0.077647 0.018009 - 0.058638 0.076865 0.019401 - 0.058638 0.076081 0.020706 - 0.058638 0.075212 0.022011 - 0.058638 0.07208 0.026883 - 0.058638 0.068512 0.030972 - 0.058638 0.064511 0.034626 - 0.058638 0.06016 0.037758 - 0.058638 0.055463 0.040542 - 0.058638 0.050678 0.042978 - 0.058638 0.045632 0.044892 - 0.058638 0.040411 0.046458 - 0.058638 0.035191 0.047676 - 0.058638 0.029885 0.04872 - 0.058638 0.02449 0.049503 - 0.058638 0.019183 0.050025 - 0.058638 0.013702 0.050199 - 0.058638 0.008309 0.050286 - 0.058638 0.002914 0.050112 - 0.058638 -0.002479 0.049938 - 0.058638 -0.007873 0.049677 - 0.058638 -0.013268 0.049155 - 0.058638 -0.018662 0.048546 - 0.058638 -0.023969 0.047676 - 0.058638 -0.029275 0.046545 - 0.058638 -0.034582 0.045414 - 0.058638 -0.039802 0.044022 - 0.058638 -0.044849 0.042195 - 0.058638 -0.04972 0.039759 - 0.058638 -0.054244 0.036888 - 0.058638 -0.058594 0.033582 - 0.058638 -0.062422 0.029841 - 0.058638 -0.065816 0.025665 - 0.058638 -0.068512 0.020967 - 0.058638 -0.070514 0.015921 - 0.058638 -0.071906 0.010701 - 0.058638 -0.072601 0.005394 - 0.058638 -0.072775 0.0 -e -v - 0.562455 0.01914 0.0 - 0.522696 0.029275 0.0 - 0.48285 0.039368 0.0 - 0.456402 0.04859 0.0 - 0.429867 0.05816 0.0 - 0.403332 0.069209 0.0 - 0.376797 0.084868 0.0 - 0.323814 0.108272 0.0 - 0.270744 0.112883 0.0 - 0.229506 0.110533 0.0 - 0.217674 0.110099 0.0 - 0.164691 0.102269 0.0 - 0.111621 0.092611 0.0 - 0.058638 0.081649 0.0 -e -v - 0.562455 0.018966 0.001218 - 0.522696 0.029189 0.001305 - 0.48285 0.039542 0.001305 - 0.456402 0.048416 0.001218 - 0.429867 0.057898 0.001566 - 0.403332 0.069122 0.002958 - 0.376797 0.084607 0.003828 - 0.323814 0.108011 0.00522 - 0.270744 0.11236 0.004611 - 0.229506 0.11062 0.004872 - 0.217674 0.109751 0.004437 - 0.164691 0.101921 0.00348 - 0.111621 0.092698 0.002436 - 0.058638 0.081562 0.001479 -e -v - 0.562455 0.018792 0.002523 - 0.522696 0.029102 0.002697 - 0.48285 0.039715 0.00261 - 0.456402 0.048329 0.002523 - 0.429867 0.057638 0.003219 - 0.403332 0.068774 0.005916 - 0.376797 0.083912 0.007656 - 0.323814 0.107054 0.010353 - 0.270744 0.111404 0.009657 - 0.229506 0.110186 0.009831 - 0.217674 0.109054 0.008874 - 0.164691 0.101224 0.00696 - 0.111621 0.092611 0.004959 - 0.058638 0.081562 0.003045 -e -v - 0.562455 0.018705 0.003741 - 0.522696 0.028927 0.004089 - 0.48285 0.039802 0.003915 - 0.456402 0.048154 0.003741 - 0.429867 0.057289 0.004872 - 0.403332 0.068251 0.008874 - 0.376797 0.082781 0.011397 - 0.323814 0.105314 0.015399 - 0.270744 0.109838 0.014616 - 0.229506 0.109315 0.014703 - 0.217674 0.107836 0.013311 - 0.164691 0.100267 0.010353 - 0.111621 0.09235 0.007482 - 0.058638 0.081389 0.004611 -e -v - 0.562455 0.018531 0.005046 - 0.522696 0.028754 0.005481 - 0.48285 0.039802 0.00522 - 0.456402 0.04798 0.004959 - 0.429867 0.056942 0.006438 - 0.403332 0.067469 0.011745 - 0.376797 0.081302 0.014964 - 0.323814 0.102877 0.02001 - 0.270744 0.107749 0.019314 - 0.229506 0.107749 0.019401 - 0.217674 0.106096 0.017487 - 0.164691 0.09905 0.013659 - 0.111621 0.091916 0.009918 - 0.058638 0.081215 0.006177 -e -v - 0.562455 0.01827 0.006264 - 0.522696 0.028579 0.006786 - 0.48285 0.039629 0.006612 - 0.456402 0.04772 0.006264 - 0.429867 0.056506 0.008091 - 0.403332 0.066598 0.014529 - 0.376797 0.079388 0.018444 - 0.323814 0.100006 0.024447 - 0.270744 0.104966 0.023664 - 0.229506 0.105575 0.023838 - 0.217674 0.103922 0.021402 - 0.164691 0.097484 0.016791 - 0.111621 0.091307 0.012354 - 0.058638 0.080954 0.007743 -e -v - 0.562455 0.018096 0.007482 - 0.522696 0.028406 0.008178 - 0.48285 0.039455 0.007917 - 0.456402 0.047546 0.007482 - 0.429867 0.056072 0.009657 - 0.403332 0.06538 0.017313 - 0.376797 0.077212 0.021663 - 0.323814 0.096614 0.028449 - 0.270744 0.101659 0.027579 - 0.229506 0.102703 0.027927 - 0.217674 0.101224 0.024969 - 0.164691 0.095569 0.019836 - 0.111621 0.090524 0.01479 - 0.058638 0.080692 0.009222 -e -v - 0.562455 0.017835 0.008787 - 0.522696 0.028231 0.00957 - 0.48285 0.039193 0.009222 - 0.456402 0.047284 0.008787 - 0.429867 0.055549 0.011223 - 0.403332 0.063901 0.019923 - 0.376797 0.07469 0.024621 - 0.323814 0.092611 0.031929 - 0.270744 0.097832 0.031059 - 0.229506 0.099224 0.031494 - 0.217674 0.098006 0.028188 - 0.164691 0.093482 0.022707 - 0.111621 0.089653 0.017139 - 0.058638 0.080344 0.010788 -e -v - 0.562455 0.017574 0.010005 - 0.522696 0.027971 0.010875 - 0.48285 0.038846 0.010527 - 0.456402 0.047024 0.010005 - 0.429867 0.055027 0.012789 - 0.403332 0.062162 0.022272 - 0.376797 0.071906 0.027318 - 0.323814 0.088174 0.0348 - 0.270744 0.093569 0.034017 - 0.229506 0.095395 0.034539 - 0.217674 0.094526 0.031059 - 0.164691 0.091045 0.025317 - 0.111621 0.08861 0.019401 - 0.058638 0.079997 0.012267 -e -v - 0.562455 0.017313 0.011223 - 0.522696 0.02771 0.012267 - 0.48285 0.038498 0.011832 - 0.456402 0.046762 0.011223 - 0.429867 0.054419 0.014355 - 0.403332 0.06016 0.024534 - 0.376797 0.068861 0.029754 - 0.323814 0.083389 0.037062 - 0.270744 0.088958 0.036279 - 0.229506 0.091045 0.037062 - 0.217674 0.090697 0.033408 - 0.164691 0.088436 0.027666 - 0.111621 0.087305 0.021576 - 0.058638 0.079475 0.013746 -e -v - 0.562455 0.017052 0.012528 - 0.522696 0.027448 0.013572 - 0.48285 0.038149 0.01305 - 0.456402 0.046415 0.012441 - 0.429867 0.053636 0.015834 - 0.403332 0.057898 0.026535 - 0.376797 0.065554 0.031929 - 0.323814 0.078431 0.038715 - 0.270744 0.084086 0.037932 - 0.229506 0.086521 0.038976 - 0.217674 0.086608 0.035322 - 0.164691 0.085652 0.029754 - 0.111621 0.085913 0.023664 - 0.058638 0.078952 0.015225 -e -v - 0.562455 0.016704 0.013746 - 0.522696 0.0271 0.014877 - 0.48285 0.037802 0.014355 - 0.456402 0.046067 0.013659 - 0.429867 0.052853 0.017313 - 0.403332 0.055549 0.028362 - 0.376797 0.062075 0.033669 - 0.323814 0.073298 0.039933 - 0.270744 0.079039 0.039063 - 0.229506 0.081736 0.040368 - 0.217674 0.082259 0.036627 - 0.164691 0.082607 0.031581 - 0.111621 0.08426 0.025578 - 0.058638 0.078344 0.016617 -e -v - 0.562455 0.016269 0.014964 - 0.522696 0.026665 0.016269 - 0.48285 0.037367 0.01566 - 0.456402 0.045632 0.014877 - 0.429867 0.051982 0.018705 - 0.403332 0.053114 0.030015 - 0.376797 0.058508 0.035061 - 0.323814 0.068077 0.040455 - 0.270744 0.073907 0.039585 - 0.229506 0.076865 0.041238 - 0.217674 0.077822 0.037497 - 0.164691 0.079388 0.03306 - 0.111621 0.08252 0.027405 - 0.058638 0.077647 0.018009 -e -v - 0.562455 0.015834 0.016095 - 0.522696 0.026231 0.017574 - 0.48285 0.036931 0.016878 - 0.456402 0.045196 0.016095 - 0.429867 0.050939 0.02001 - 0.403332 0.050503 0.031407 - 0.376797 0.05468 0.036192 - 0.323814 0.062771 0.040368 - 0.270744 0.068774 0.039411 - 0.229506 0.071906 0.041586 - 0.217674 0.073385 0.037845 - 0.164691 0.075994 0.034278 - 0.111621 0.080605 0.029058 - 0.058638 0.076865 0.019401 -e -v - 0.562455 0.015399 0.017313 - 0.522696 0.025796 0.018879 - 0.48285 0.03641 0.018096 - 0.456402 0.044762 0.017226 - 0.429867 0.049895 0.021315 - 0.403332 0.04772 0.032625 - 0.376797 0.050852 0.036888 - 0.323814 0.057551 0.039498 - 0.270744 0.06364 0.038802 - 0.229506 0.067033 0.041325 - 0.217674 0.068861 0.037671 - 0.164691 0.072601 0.035148 - 0.111621 0.078604 0.030537 - 0.058638 0.076081 0.020706 -e -v - 0.562455 0.014964 0.018531 - 0.522696 0.025361 0.020184 - 0.48285 0.035887 0.019314 - 0.456402 0.044326 0.018444 - 0.429867 0.048763 0.022533 - 0.403332 0.044935 0.033669 - 0.376797 0.047024 0.037149 - 0.323814 0.052504 0.038106 - 0.270744 0.058681 0.037584 - 0.229506 0.062075 0.040629 - 0.217674 0.064337 0.037149 - 0.164691 0.069122 0.03567 - 0.111621 0.076517 0.031929 - 0.058638 0.075212 0.022011 -e -v - 0.562455 0.013398 0.021663 - 0.522696 0.023447 0.023577 - 0.48285 0.034061 0.023229 - 0.456402 0.041977 0.022359 - 0.429867 0.046328 0.026448 - 0.403332 0.042064 0.036975 - 0.376797 0.043892 0.040194 - 0.323814 0.049373 0.041325 - 0.270744 0.055549 0.041151 - 0.229506 0.058768 0.044196 - 0.217674 0.061205 0.04089 - 0.164691 0.066425 0.039759 - 0.111621 0.072862 0.035931 - 0.058638 0.07208 0.026883 -e -v - 0.562455 0.011658 0.024621 - 0.522696 0.021358 0.02697 - 0.48285 0.031886 0.02697 - 0.456402 0.039368 0.0261 - 0.429867 0.043543 0.030276 - 0.403332 0.038846 0.04002 - 0.376797 0.040498 0.042978 - 0.323814 0.046067 0.04437 - 0.270744 0.052157 0.044457 - 0.229506 0.055115 0.047502 - 0.217674 0.057638 0.044283 - 0.164691 0.062684 0.043239 - 0.111621 0.068948 0.039672 - 0.058638 0.068512 0.030972 -e -v - 0.562455 0.009657 0.027405 - 0.522696 0.019096 0.030189 - 0.48285 0.029362 0.03045 - 0.456402 0.036584 0.029667 - 0.429867 0.040498 0.033756 - 0.403332 0.035452 0.042717 - 0.376797 0.036931 0.045588 - 0.323814 0.0425 0.047154 - 0.270744 0.048416 0.047328 - 0.229506 0.051112 0.050286 - 0.217674 0.053723 0.047241 - 0.164691 0.058421 0.04611 - 0.111621 0.064685 0.042978 - 0.058638 0.064511 0.034626 -e -v - 0.562455 0.007395 0.030102 - 0.522696 0.016573 0.033234 - 0.48285 0.026579 0.033756 - 0.456402 0.033539 0.033147 - 0.429867 0.037193 0.037062 - 0.403332 0.031799 0.045153 - 0.376797 0.033278 0.04785 - 0.323814 0.038759 0.04959 - 0.270744 0.0445 0.049851 - 0.229506 0.04685 0.052722 - 0.217674 0.049373 0.049677 - 0.164691 0.05381 0.048285 - 0.111621 0.060073 0.045849 - 0.058638 0.06016 0.037758 -e -v - 0.562455 0.004959 0.032538 - 0.522696 0.013876 0.036018 - 0.48285 0.023534 0.036801 - 0.456402 0.03032 0.036279 - 0.429867 0.033625 0.04002 - 0.403332 0.027971 0.047241 - 0.376797 0.029362 0.049851 - 0.323814 0.034757 0.051678 - 0.270744 0.040238 0.051852 - 0.229506 0.042326 0.054462 - 0.217674 0.044935 0.051678 - 0.164691 0.049024 0.050199 - 0.111621 0.055202 0.048285 - 0.058638 0.055463 0.040542 -e -v - 0.562455 0.002262 0.034713 - 0.522696 0.010744 0.038454 - 0.48285 0.020314 0.039585 - 0.456402 0.026927 0.039324 - 0.429867 0.029797 0.042804 - 0.403332 0.023969 0.049068 - 0.376797 0.025361 0.051591 - 0.323814 0.030668 0.053418 - 0.270744 0.035714 0.053418 - 0.229506 0.03754 0.055854 - 0.217674 0.040238 0.053331 - 0.164691 0.044066 0.051504 - 0.111621 0.050156 0.050199 - 0.058638 0.050678 0.042978 -e -v - 0.562455 -0.000609 0.036714 - 0.522696 0.007525 0.040629 - 0.48285 0.016748 0.042108 - 0.456402 0.023272 0.042021 - 0.429867 0.025882 0.045327 - 0.403332 0.019879 0.050547 - 0.376797 0.021185 0.052896 - 0.323814 0.026317 0.054723 - 0.270744 0.031189 0.054549 - 0.229506 0.032756 0.056811 - 0.217674 0.035452 0.054549 - 0.164691 0.039019 0.052374 - 0.111621 0.045022 0.051765 - 0.058638 0.045632 0.044892 -e -v - 0.562455 -0.003567 0.038454 - 0.522696 0.004045 0.042543 - 0.48285 0.013094 0.044457 - 0.456402 0.019358 0.044457 - 0.429867 0.021881 0.047676 - 0.403332 0.015616 0.051678 - 0.376797 0.017009 0.053853 - 0.323814 0.021968 0.05568 - 0.270744 0.026492 0.055332 - 0.229506 0.027971 0.057594 - 0.217674 0.030581 0.055332 - 0.164691 0.033886 0.052983 - 0.111621 0.039715 0.05307 - 0.058638 0.040411 0.046458 -e -v - 0.562455 -0.006786 0.039933 - 0.522696 0.000565 0.044283 - 0.48285 0.009352 0.046458 - 0.456402 0.015356 0.046632 - 0.429867 0.017617 0.049677 - 0.403332 0.011354 0.052548 - 0.376797 0.012659 0.054462 - 0.323814 0.017444 0.056115 - 0.270744 0.021793 0.055941 - 0.229506 0.023012 0.057942 - 0.217674 0.025709 0.055767 - 0.164691 0.028841 0.053505 - 0.111621 0.034408 0.054027 - 0.058638 0.035191 0.047676 -e -v - 0.562455 -0.010005 0.041064 - 0.522696 -0.003089 0.045762 - 0.48285 0.00535 0.048111 - 0.456402 0.01118 0.048372 - 0.429867 0.01318 0.051156 - 0.403332 0.007004 0.053157 - 0.376797 0.008309 0.05481 - 0.323814 0.013006 0.056289 - 0.270744 0.017096 0.056289 - 0.229506 0.01814 0.057855 - 0.217674 0.02075 0.056115 - 0.164691 0.023707 0.05394 - 0.111621 0.029014 0.054549 - 0.058638 0.029885 0.04872 -e -v - 0.562455 -0.013398 0.042021 - 0.522696 -0.00683 0.04698 - 0.48285 0.001174 0.049329 - 0.456402 0.00683 0.049764 - 0.429867 0.008656 0.052113 - 0.403332 0.002654 0.053418 - 0.376797 0.003958 0.054897 - 0.323814 0.008482 0.056289 - 0.270744 0.012397 0.056289 - 0.229506 0.013268 0.057594 - 0.217674 0.015878 0.056202 - 0.164691 0.018575 0.054375 - 0.111621 0.02362 0.05481 - 0.058638 0.02449 0.049503 -e -v - 0.562455 -0.016791 0.042804 - 0.522696 -0.010658 0.04785 - 0.48285 -0.003001 0.050025 - 0.456402 0.002305 0.050547 - 0.429867 0.003958 0.052548 - 0.403332 -0.001783 0.053505 - 0.376797 -0.000392 0.05481 - 0.323814 0.004045 0.055941 - 0.270744 0.007699 0.056028 - 0.229506 0.008396 0.057072 - 0.217674 0.010918 0.056115 - 0.164691 0.013442 0.054549 - 0.111621 0.018227 0.05481 - 0.058638 0.019183 0.050025 -e -v - 0.562455 -0.020184 0.043413 - 0.522696 -0.014573 0.048372 - 0.48285 -0.007351 0.05046 - 0.456402 -0.002219 0.050982 - 0.429867 -0.000653 0.052809 - 0.403332 -0.006134 0.053244 - 0.376797 -0.004742 0.054375 - 0.323814 -0.000479 0.055419 - 0.270744 0.003001 0.055419 - 0.229506 0.003523 0.05655 - 0.217674 0.006047 0.055854 - 0.164691 0.008309 0.054549 - 0.111621 0.012745 0.05481 - 0.058638 0.013702 0.050199 -e -v - 0.562455 -0.023664 0.043674 - 0.522696 -0.018488 0.048546 - 0.48285 -0.011614 0.050547 - 0.456402 -0.006743 0.051243 - 0.429867 -0.00535 0.052896 - 0.403332 -0.010483 0.052722 - 0.376797 -0.009092 0.053679 - 0.323814 -0.004916 0.054636 - 0.270744 -0.00161 0.054723 - 0.229506 -0.001349 0.056028 - 0.217674 0.001088 0.055332 - 0.164691 0.003263 0.054375 - 0.111621 0.007351 0.054636 - 0.058638 0.008309 0.050286 -e -v - 0.562455 -0.027144 0.043587 - 0.522696 -0.022489 0.048372 - 0.48285 -0.015965 0.050286 - 0.456402 -0.011354 0.05133 - 0.429867 -0.010049 0.052809 - 0.403332 -0.014747 0.052026 - 0.376797 -0.013354 0.052809 - 0.323814 -0.009266 0.053592 - 0.270744 -0.00622 0.053766 - 0.229506 -0.00622 0.055506 - 0.217674 -0.003785 0.054636 - 0.164691 -0.001871 0.05394 - 0.111621 0.001958 0.054462 - 0.058638 0.002914 0.050112 -e -v - 0.562455 -0.030537 0.043152 - 0.522696 -0.026405 0.04785 - 0.48285 -0.020227 0.049764 - 0.456402 -0.015878 0.051156 - 0.429867 -0.014659 0.052461 - 0.403332 -0.019096 0.051069 - 0.376797 -0.017617 0.051765 - 0.323814 -0.013616 0.052374 - 0.270744 -0.010832 0.052722 - 0.229506 -0.011092 0.05481 - 0.217674 -0.008656 0.053766 - 0.164691 -0.007004 0.053418 - 0.111621 -0.003436 0.054027 - 0.058638 -0.002479 0.049938 -e -v - 0.562455 -0.03393 0.042369 - 0.522696 -0.030233 0.047154 - 0.48285 -0.02449 0.049068 - 0.456402 -0.020402 0.050634 - 0.429867 -0.019358 0.051852 - 0.403332 -0.023359 0.050025 - 0.376797 -0.021793 0.050547 - 0.323814 -0.017879 0.050982 - 0.270744 -0.015442 0.051678 - 0.229506 -0.015878 0.05394 - 0.217674 -0.013442 0.052635 - 0.164691 -0.012049 0.052635 - 0.111621 -0.00883 0.053418 - 0.058638 -0.007873 0.049677 -e -v - 0.562455 -0.037236 0.041412 - 0.522696 -0.034061 0.046197 - 0.48285 -0.028667 0.048198 - 0.456402 -0.024926 0.049764 - 0.429867 -0.023882 0.050895 - 0.403332 -0.027536 0.048894 - 0.376797 -0.025882 0.048981 - 0.323814 -0.022055 0.049416 - 0.270744 -0.019966 0.050373 - 0.229506 -0.020662 0.052809 - 0.217674 -0.018227 0.051417 - 0.164691 -0.017096 0.051591 - 0.111621 -0.014225 0.052635 - 0.058638 -0.013268 0.049155 -e -v - 0.562455 -0.040542 0.040281 - 0.522696 -0.037802 0.044892 - 0.48285 -0.032842 0.047154 - 0.456402 -0.029275 0.048633 - 0.429867 -0.028406 0.049677 - 0.403332 -0.031712 0.047589 - 0.376797 -0.029885 0.047328 - 0.323814 -0.026231 0.047676 - 0.270744 -0.02449 0.049068 - 0.229506 -0.025361 0.05133 - 0.217674 -0.022924 0.049938 - 0.164691 -0.022055 0.050373 - 0.111621 -0.019531 0.051591 - 0.058638 -0.018662 0.048546 -e -v - 0.562455 -0.043761 0.038889 - 0.522696 -0.041368 0.043326 - 0.48285 -0.036931 0.045762 - 0.456402 -0.033625 0.047154 - 0.429867 -0.032842 0.048198 - 0.403332 -0.035801 0.046023 - 0.376797 -0.033799 0.045501 - 0.323814 -0.03032 0.045762 - 0.270744 -0.028927 0.047415 - 0.229506 -0.029885 0.049503 - 0.217674 -0.027536 0.048285 - 0.164691 -0.027013 0.048981 - 0.111621 -0.024751 0.05046 - 0.058638 -0.023969 0.047676 -e -v - 0.562455 -0.046806 0.037236 - 0.522696 -0.044849 0.041499 - 0.48285 -0.040934 0.044109 - 0.456402 -0.037802 0.045414 - 0.429867 -0.037193 0.046458 - 0.403332 -0.039802 0.044196 - 0.376797 -0.037714 0.043413 - 0.323814 -0.034235 0.043761 - 0.270744 -0.033278 0.045588 - 0.229506 -0.034408 0.047502 - 0.217674 -0.032146 0.046458 - 0.164691 -0.031886 0.047502 - 0.111621 -0.030058 0.049155 - 0.058638 -0.029275 0.046545 -e -v - 0.562455 -0.049764 0.035496 - 0.522696 -0.048154 0.039324 - 0.48285 -0.044762 0.042108 - 0.456402 -0.041977 0.043413 - 0.429867 -0.041368 0.04437 - 0.403332 -0.04363 0.042108 - 0.376797 -0.041455 0.041325 - 0.323814 -0.038149 0.041499 - 0.270744 -0.03754 0.043587 - 0.229506 -0.038759 0.045327 - 0.217674 -0.036584 0.04437 - 0.164691 -0.036757 0.045849 - 0.111621 -0.035278 0.047676 - 0.058638 -0.034582 0.045414 -e -v - 0.562455 -0.052635 0.033495 - 0.522696 -0.051286 0.036888 - 0.48285 -0.048416 0.039846 - 0.456402 -0.045979 0.041238 - 0.429867 -0.045371 0.041934 - 0.403332 -0.047284 0.039672 - 0.376797 -0.045284 0.039063 - 0.323814 -0.041977 0.03915 - 0.270744 -0.04163 0.041238 - 0.229506 -0.042934 0.042804 - 0.217674 -0.040934 0.042021 - 0.164691 -0.041543 0.043935 - 0.111621 -0.040325 0.045762 - 0.058638 -0.039802 0.044022 -e -v - 0.562455 -0.055332 0.031233 - 0.522696 -0.054244 0.034365 - 0.48285 -0.051895 0.037323 - 0.456402 -0.049808 0.038802 - 0.429867 -0.049286 0.039324 - 0.403332 -0.050852 0.037149 - 0.376797 -0.048937 0.036714 - 0.323814 -0.045718 0.036714 - 0.270744 -0.045545 0.038628 - 0.229506 -0.047024 0.04002 - 0.217674 -0.045109 0.039411 - 0.164691 -0.046067 0.041673 - 0.111621 -0.045196 0.043413 - 0.058638 -0.044849 0.042195 -e -v - 0.562455 -0.057681 0.028797 - 0.522696 -0.057115 0.031668 - 0.48285 -0.055115 0.034452 - 0.456402 -0.053461 0.036018 - 0.429867 -0.05294 0.03654 - 0.403332 -0.054244 0.034365 - 0.376797 -0.052504 0.034191 - 0.323814 -0.049459 0.034104 - 0.270744 -0.049373 0.035844 - 0.229506 -0.050939 0.037149 - 0.217674 -0.049286 0.036714 - 0.164691 -0.050416 0.038889 - 0.111621 -0.049808 0.040542 - 0.058638 -0.04972 0.039759 -e -v - 0.562455 -0.059856 0.026013 - 0.522696 -0.0599 0.028884 - 0.48285 -0.05816 0.03132 - 0.456402 -0.056855 0.032973 - 0.429867 -0.056594 0.033495 - 0.403332 -0.057377 0.031233 - 0.376797 -0.055723 0.03132 - 0.323814 -0.05294 0.031233 - 0.270744 -0.053027 0.032886 - 0.229506 -0.054766 0.034104 - 0.217674 -0.053287 0.033843 - 0.164691 -0.054419 0.03567 - 0.111621 -0.054157 0.037323 - 0.058638 -0.054244 0.036888 -e -v - 0.562455 -0.06177 0.023142 - 0.522696 -0.062509 0.025926 - 0.48285 -0.060856 0.028014 - 0.456402 -0.059987 0.029667 - 0.429867 -0.0599 0.030189 - 0.403332 -0.060247 0.028014 - 0.376797 -0.058681 0.028014 - 0.323814 -0.056159 0.028101 - 0.270744 -0.056419 0.029667 - 0.229506 -0.058421 0.030798 - 0.217674 -0.057028 0.030711 - 0.164691 -0.05816 0.032103 - 0.111621 -0.058247 0.033756 - 0.058638 -0.058594 0.033582 -e -v - 0.562455 -0.063423 0.020097 - 0.522696 -0.064598 0.02262 - 0.48285 -0.063293 0.024447 - 0.456402 -0.062684 0.026013 - 0.429867 -0.062684 0.026535 - 0.403332 -0.063032 0.024621 - 0.376797 -0.061205 0.024534 - 0.323814 -0.059117 0.024795 - 0.270744 -0.059464 0.026013 - 0.229506 -0.061639 0.027144 - 0.217674 -0.060422 0.027144 - 0.164691 -0.061552 0.028275 - 0.111621 -0.061988 0.029841 - 0.058638 -0.062422 0.029841 -e -v - 0.562455 -0.064815 0.016878 - 0.522696 -0.066338 0.019053 - 0.48285 -0.06538 0.020706 - 0.456402 -0.064859 0.022011 - 0.429867 -0.065032 0.022446 - 0.403332 -0.06538 0.02088 - 0.376797 -0.06338 0.020706 - 0.323814 -0.061813 0.021228 - 0.270744 -0.062162 0.022185 - 0.229506 -0.064511 0.023055 - 0.217674 -0.06338 0.023142 - 0.164691 -0.064511 0.024099 - 0.111621 -0.065206 0.025491 - 0.058638 -0.065816 0.025665 -e -v - 0.562455 -0.065946 0.013659 - 0.522696 -0.06773 0.015399 - 0.48285 -0.067208 0.016791 - 0.456402 -0.066511 0.017835 - 0.429867 -0.066946 0.018183 - 0.403332 -0.067295 0.016965 - 0.376797 -0.065293 0.016791 - 0.323814 -0.064075 0.017313 - 0.270744 -0.064424 0.018009 - 0.229506 -0.066859 0.018792 - 0.217674 -0.065816 0.018879 - 0.164691 -0.067033 0.019662 - 0.111621 -0.067904 0.020793 - 0.058638 -0.068512 0.020967 -e -v - 0.562455 -0.066903 0.010266 - 0.522696 -0.068861 0.011658 - 0.48285 -0.068512 0.012702 - 0.456402 -0.067904 0.013485 - 0.429867 -0.068512 0.013833 - 0.403332 -0.068861 0.012876 - 0.376797 -0.066859 0.012789 - 0.323814 -0.065903 0.013224 - 0.270744 -0.066251 0.013659 - 0.229506 -0.068774 0.014268 - 0.217674 -0.06773 0.014355 - 0.164691 -0.069035 0.014964 - 0.111621 -0.070078 0.015834 - 0.058638 -0.070514 0.015921 -e -v - 0.562455 -0.067599 0.006873 - 0.522696 -0.06973 0.00783 - 0.48285 -0.069556 0.008526 - 0.456402 -0.068948 0.009048 - 0.429867 -0.069556 0.009222 - 0.403332 -0.069904 0.008613 - 0.376797 -0.068077 0.008526 - 0.323814 -0.06712 0.008874 - 0.270744 -0.06773 0.009222 - 0.229506 -0.070166 0.00957 - 0.217674 -0.069296 0.009657 - 0.164691 -0.070601 0.010092 - 0.111621 -0.071644 0.010614 - 0.058638 -0.071906 0.010701 -e -v - 0.562455 -0.068034 0.003393 - 0.522696 -0.070253 0.003915 - 0.48285 -0.070166 0.004263 - 0.456402 -0.069643 0.004524 - 0.429867 -0.070253 0.004611 - 0.403332 -0.070601 0.00435 - 0.376797 -0.068948 0.004263 - 0.323814 -0.067817 0.004437 - 0.270744 -0.068774 0.004611 - 0.229506 -0.071209 0.004785 - 0.217674 -0.070253 0.004872 - 0.164691 -0.071644 0.005046 - 0.111621 -0.072688 0.005307 - 0.058638 -0.072601 0.005394 -e -v - 0.562455 -0.068208 0.0 - 0.522696 -0.070427 0.0 - 0.48285 -0.070427 0.0 - 0.456402 -0.069991 0.0 - 0.429867 -0.070427 0.0 - 0.403332 -0.070862 0.0 - 0.376797 -0.069556 0.0 - 0.323814 -0.068164 0.0 - 0.270744 -0.069556 0.0 - 0.229506 -0.071819 0.0 - 0.217674 -0.070862 0.0 - 0.164691 -0.072254 0.0 - 0.111621 -0.073211 0.0 - 0.058638 -0.072775 0.0 -e -v - 0.058638 0.081867 0.0 - 0.058638 0.078431 0.017835 - 0.058638 0.06799 0.032712 - 0.058638 0.053027 0.043065 - 0.058638 0.03554 0.048633 - 0.058638 0.017444 0.051069 - 0.058638 0.017444 0.061161 - 0.058638 0.036323 0.061683 - 0.058638 0.03641 0.067512 - 0.058638 0.03641 0.073428 - 0.058638 0.03641 0.079344 - 0.058638 0.036497 0.08526 - 0.058638 0.036497 0.091176 - 0.058638 0.036584 0.097092 - 0.058638 0.036584 0.103008 - 0.058638 0.03667 0.108924 - 0.058638 0.03667 0.11484 - 0.058638 0.036757 0.120756 - 0.058638 0.036757 0.126672 - 0.058638 0.036757 0.132501 - 0.058638 0.028579 0.132414 - 0.058638 0.020489 0.132414 - 0.058638 0.012311 0.132327 - 0.058638 0.004132 0.13224 - 0.058638 -0.004045 0.13224 - 0.058638 -0.012223 0.132153 - 0.058638 -0.020402 0.132153 - 0.058638 -0.028579 0.132066 - 0.058638 -0.036757 0.132066 - 0.058638 -0.044849 0.132675 - 0.058638 -0.053027 0.132501 - 0.058638 -0.06103 0.130674 - 0.058638 -0.067208 0.125628 - 0.058638 -0.069556 0.117885 - 0.058638 -0.070427 0.109794 - 0.058638 -0.070166 0.101616 - 0.058638 -0.070078 0.093438 - 0.058638 -0.071122 0.085347 - 0.058638 -0.07147 0.077169 - 0.058638 -0.068948 0.069513 - 0.058638 -0.063293 0.063771 - 0.058638 -0.055289 0.062379 - 0.058638 -0.047197 0.061335 - 0.058638 -0.039019 0.061074 - 0.058638 -0.030841 0.061683 - 0.058638 -0.030406 0.047415 - 0.058638 -0.04685 0.041934 - 0.058638 -0.060683 0.031581 - 0.058638 -0.06973 0.016965 - 0.058638 -0.072775 0.0 -e -v - 0.023229 0.074994 0.0 - 0.023229 0.072862 0.015399 - 0.023229 0.065206 0.028884 - 0.023229 0.053287 0.038889 - 0.023229 0.038932 0.044979 - 0.023229 0.023534 0.047937 - 0.023229 0.023969 0.061248 - 0.023229 0.036844 0.06177 - 0.023229 0.036757 0.067686 - 0.023229 0.036757 0.073515 - 0.023229 0.03667 0.079431 - 0.023229 0.03667 0.08526 - 0.023229 0.036584 0.091176 - 0.023229 0.036584 0.097005 - 0.023229 0.036497 0.102921 - 0.023229 0.036497 0.10875 - 0.023229 0.036497 0.114666 - 0.023229 0.03641 0.120495 - 0.023229 0.03641 0.126411 - 0.023229 0.036323 0.13224 - 0.023229 0.027796 0.132153 - 0.023229 0.019271 0.132153 - 0.023229 0.010744 0.132066 - 0.023229 0.002132 0.131979 - 0.023229 -0.006394 0.131979 - 0.023229 -0.014921 0.131892 - 0.023229 -0.023447 0.131805 - 0.023229 -0.031973 0.131805 - 0.023229 -0.040498 0.131805 - 0.023229 -0.049112 0.13224 - 0.023229 -0.057638 0.132327 - 0.023229 -0.066077 0.131196 - 0.023229 -0.074167 0.128847 - 0.023229 -0.078691 0.1218 - 0.023229 -0.080431 0.113535 - 0.023229 -0.07991 0.105009 - 0.023229 -0.079475 0.096483 - 0.023229 -0.080257 0.087957 - 0.023229 -0.080518 0.079431 - 0.023229 -0.079388 0.070992 - 0.023229 -0.075212 0.063684 - 0.023229 -0.067904 0.059508 - 0.023229 -0.059377 0.058986 - 0.023229 -0.050852 0.058464 - 0.023229 -0.042326 0.058464 - 0.023229 -0.042238 0.042804 - 0.023229 -0.055376 0.037323 - 0.023229 -0.065293 0.027057 - 0.023229 -0.071296 0.014094 - 0.023229 -0.073211 0.0 -e -v - -0.022359 0.069426 0.0 - -0.022359 0.06799 0.012006 - -0.022359 0.062945 0.023055 - -0.022359 0.05494 0.03219 - -0.022359 0.044675 0.038802 - -0.022359 0.033278 0.042891 - -0.022359 0.032842 0.0609 - -0.022359 0.038846 0.061335 - -0.022359 0.038672 0.06699 - -0.022359 0.038498 0.072645 - -0.022359 0.03841 0.0783 - -0.022359 0.038498 0.084042 - -0.022359 0.038585 0.089697 - -0.022359 0.038759 0.095352 - -0.022359 0.038932 0.101007 - -0.022359 0.039019 0.106749 - -0.022359 0.039019 0.112404 - -0.022359 0.038932 0.118059 - -0.022359 0.038846 0.123801 - -0.022359 0.038672 0.129456 - -0.022359 0.030233 0.12963 - -0.022359 0.021793 0.129891 - -0.022359 0.013354 0.130065 - -0.022359 0.004916 0.130152 - -0.022359 -0.003523 0.130326 - -0.022359 -0.012049 0.130413 - -0.022359 -0.020489 0.130587 - -0.022359 -0.028927 0.130587 - -0.022359 -0.037367 0.130761 - -0.022359 -0.045805 0.131022 - -0.022359 -0.054244 0.130935 - -0.022359 -0.062684 0.130674 - -0.022359 -0.071035 0.129978 - -0.022359 -0.07817 0.125541 - -0.022359 -0.082171 0.118233 - -0.022359 -0.083563 0.109968 - -0.022359 -0.082781 0.101529 - -0.022359 -0.082084 0.093177 - -0.022359 -0.082868 0.084738 - -0.022359 -0.083042 0.076299 - -0.022359 -0.082084 0.067947 - -0.022359 -0.078257 0.060465 - -0.022359 -0.071557 0.055506 - -0.022359 -0.06338 0.053418 - -0.022359 -0.055115 0.052026 - -0.022359 -0.05929 0.034974 - -0.022359 -0.065206 0.027318 - -0.022359 -0.06973 0.018879 - -0.022359 -0.071993 0.00957 - -0.022359 -0.071819 0.0 -e -v - -0.07395 0.063945 0.0 - -0.07395 0.062945 0.009048 - -0.07395 0.060073 0.017835 - -0.07395 0.055549 0.025752 - -0.07395 0.049286 0.032451 - -0.07395 0.04163 0.037497 - -0.07395 0.038585 0.055071 - -0.07395 0.038585 0.061509 - -0.07395 0.038932 0.06699 - -0.07395 0.039193 0.072471 - -0.07395 0.039281 0.077952 - -0.07395 0.039281 0.083433 - -0.07395 0.039281 0.089001 - -0.07395 0.039281 0.094482 - -0.07395 0.039368 0.099963 - -0.07395 0.039629 0.105444 - -0.07395 0.040064 0.110925 - -0.07395 0.040151 0.116493 - -0.07395 0.039629 0.121887 - -0.07395 0.038585 0.127281 - -0.07395 0.030058 0.127368 - -0.07395 0.02162 0.127455 - -0.07395 0.013094 0.127455 - -0.07395 0.004568 0.127455 - -0.07395 -0.003872 0.127542 - -0.07395 -0.012397 0.127716 - -0.07395 -0.020837 0.127977 - -0.07395 -0.029362 0.128325 - -0.07395 -0.037889 0.128673 - -0.07395 -0.046328 0.128847 - -0.07395 -0.054853 0.129108 - -0.07395 -0.063293 0.129717 - -0.07395 -0.071644 0.128412 - -0.07395 -0.079301 0.124758 - -0.07395 -0.084173 0.117972 - -0.07395 -0.086957 0.109968 - -0.07395 -0.087479 0.101529 - -0.07395 -0.087044 0.093003 - -0.07395 -0.087044 0.084564 - -0.07395 -0.087566 0.076038 - -0.07395 -0.087044 0.067599 - -0.07395 -0.084868 0.059334 - -0.07395 -0.080692 0.052026 - -0.07395 -0.073733 0.047415 - -0.07395 -0.066077 0.043761 - -0.07395 -0.065729 0.034974 - -0.07395 -0.067643 0.026361 - -0.07395 -0.069556 0.017661 - -0.07395 -0.07034 0.008787 - -0.07395 -0.069991 0.0 -e -v - -0.153555 0.055158 0.0 - -0.153555 0.055289 0.005568 - -0.153555 0.054244 0.011049 - -0.153555 0.05207 0.016182 - -0.153555 0.049112 0.020967 - -0.153555 0.045545 0.025317 - -0.153555 0.04363 0.032103 - -0.153555 0.041977 0.038976 - -0.153555 0.040585 0.045849 - -0.153555 0.038932 0.052722 - -0.153555 0.037714 0.059682 - -0.153555 0.037627 0.066816 - -0.153555 0.037714 0.073863 - -0.153555 0.037714 0.08091 - -0.153555 0.037714 0.087957 - -0.153555 0.037714 0.095091 - -0.153555 0.037714 0.102138 - -0.153555 0.037714 0.109185 - -0.153555 0.037714 0.116232 - -0.153555 0.037714 0.123366 - -0.153555 0.028841 0.123714 - -0.153555 0.019966 0.123975 - -0.153555 0.011092 0.124149 - -0.153555 0.002219 0.124236 - -0.153555 -0.006743 0.124149 - -0.153555 -0.015616 0.123888 - -0.153555 -0.02449 0.123714 - -0.153555 -0.033365 0.123888 - -0.153555 -0.042238 0.12441 - -0.153555 -0.051112 0.124932 - -0.153555 -0.0599 0.125889 - -0.153555 -0.068599 0.127629 - -0.153555 -0.077212 0.125976 - -0.153555 -0.084173 0.120582 - -0.153555 -0.086521 0.11223 - -0.153555 -0.086957 0.103356 - -0.153555 -0.087739 0.094569 - -0.153555 -0.088436 0.085695 - -0.153555 -0.088871 0.076821 - -0.153555 -0.088958 0.067947 - -0.153555 -0.088436 0.059073 - -0.153555 -0.086957 0.050286 - -0.153555 -0.083999 0.041934 - -0.153555 -0.077996 0.035496 - -0.153555 -0.070514 0.030798 - -0.153555 -0.068251 0.025143 - -0.153555 -0.06773 0.018879 - -0.153555 -0.067556 0.012528 - -0.153555 -0.067643 0.006264 - -0.153555 -0.068164 0.0 -e -v - -0.21663 0.048285 0.0 - -0.21663 0.048154 0.004089 - -0.21663 0.047284 0.008178 - -0.21663 0.045892 0.012006 - -0.21663 0.043456 0.015399 - -0.21663 0.040151 0.017748 - -0.21663 0.039802 0.02523 - -0.21663 0.039368 0.032625 - -0.21663 0.038759 0.040107 - -0.21663 0.037976 0.047502 - -0.21663 0.036931 0.054897 - -0.21663 0.036757 0.062292 - -0.21663 0.037193 0.069687 - -0.21663 0.03728 0.077169 - -0.21663 0.037193 0.084651 - -0.21663 0.037019 0.092046 - -0.21663 0.036931 0.099528 - -0.21663 0.036844 0.106923 - -0.21663 0.036757 0.114405 - -0.21663 0.03667 0.121887 - -0.21663 0.027623 0.121887 - -0.21663 0.018575 0.121974 - -0.21663 0.009527 0.122061 - -0.21663 0.000565 0.122061 - -0.21663 -0.008482 0.122148 - -0.21663 -0.017531 0.122061 - -0.21663 -0.026579 0.122148 - -0.21663 -0.03554 0.122583 - -0.21663 -0.044588 0.123279 - -0.21663 -0.053548 0.123975 - -0.21663 -0.062509 0.125106 - -0.21663 -0.07147 0.124671 - -0.21663 -0.07991 0.121713 - -0.21663 -0.085391 0.114666 - -0.21663 -0.087044 0.105879 - -0.21663 -0.08687 0.096918 - -0.21663 -0.087739 0.08787 - -0.21663 -0.088523 0.078909 - -0.21663 -0.088958 0.069861 - -0.21663 -0.088958 0.0609 - -0.21663 -0.088436 0.051852 - -0.21663 -0.08626 0.043152 - -0.21663 -0.08252 0.034887 - -0.21663 -0.076952 0.02784 - -0.21663 -0.07034 0.021663 - -0.21663 -0.068687 0.017661 - -0.21663 -0.068425 0.013224 - -0.21663 -0.068164 0.008787 - -0.21663 -0.068077 0.00435 - -0.21663 -0.068164 0.0 -e -v - -0.286143 0.04089 0.0 - -0.286143 0.041021 0.002784 - -0.286143 0.040238 0.005568 - -0.286143 0.038672 0.007917 - -0.286143 0.036584 0.009918 - -0.286143 0.034061 0.011223 - -0.286143 0.033886 0.019053 - -0.286143 0.033712 0.026796 - -0.286143 0.033712 0.034626 - -0.286143 0.033712 0.042456 - -0.286143 0.033712 0.050199 - -0.286143 0.033886 0.058029 - -0.286143 0.034148 0.065859 - -0.286143 0.034235 0.073602 - -0.286143 0.034235 0.081432 - -0.286143 0.034235 0.089175 - -0.286143 0.034061 0.097005 - -0.286143 0.033712 0.104835 - -0.286143 0.03319 0.112578 - -0.286143 0.032495 0.120321 - -0.286143 0.02362 0.119712 - -0.286143 0.014747 0.11919 - -0.286143 0.005873 0.118929 - -0.286143 -0.003001 0.118929 - -0.286143 -0.011875 0.119016 - -0.286143 -0.02075 0.119364 - -0.286143 -0.029624 0.119886 - -0.286143 -0.038498 0.120669 - -0.286143 -0.047284 0.121713 - -0.286143 -0.056159 0.122496 - -0.286143 -0.064945 0.123627 - -0.286143 -0.073646 0.122322 - -0.286143 -0.081041 0.117537 - -0.286143 -0.085652 0.110055 - -0.286143 -0.087479 0.101355 - -0.286143 -0.087652 0.092481 - -0.286143 -0.088262 0.083607 - -0.286143 -0.088958 0.07482 - -0.286143 -0.089218 0.065946 - -0.286143 -0.089045 0.056985 - -0.286143 -0.088262 0.048198 - -0.286143 -0.086 0.039585 - -0.286143 -0.082259 0.031581 - -0.286143 -0.076865 0.024534 - -0.286143 -0.070862 0.017922 - -0.286143 -0.069469 0.014529 - -0.286143 -0.068251 0.010962 - -0.286143 -0.06773 0.007308 - -0.286143 -0.068077 0.003567 - -0.286143 -0.069122 0.0 -e -v - -0.365661 0.033495 0.0 - -0.365661 0.031973 0.002175 - -0.365661 0.03032 0.004437 - -0.365661 0.029102 0.00696 - -0.365661 0.028579 0.009657 - -0.365661 0.028579 0.012441 - -0.365661 0.028058 0.02001 - -0.365661 0.028058 0.027492 - -0.365661 0.028754 0.035061 - -0.365661 0.029972 0.042456 - -0.365661 0.031189 0.049938 - -0.365661 0.032495 0.057333 - -0.365661 0.032929 0.064902 - -0.365661 0.03206 0.072384 - -0.365661 0.030841 0.079779 - -0.365661 0.029972 0.087348 - -0.365661 0.029275 0.09483 - -0.365661 0.028667 0.102312 - -0.365661 0.028319 0.109881 - -0.365661 0.028144 0.11745 - -0.365661 0.019619 0.117798 - -0.365661 0.011006 0.117711 - -0.365661 0.002479 0.117711 - -0.365661 -0.006047 0.117798 - -0.365661 -0.014659 0.117885 - -0.365661 -0.023186 0.117972 - -0.365661 -0.031712 0.118146 - -0.365661 -0.040325 0.11832 - -0.365661 -0.04885 0.118581 - -0.365661 -0.057377 0.119016 - -0.365661 -0.065903 0.119973 - -0.365661 -0.073907 0.117276 - -0.365661 -0.080257 0.111708 - -0.365661 -0.084868 0.104487 - -0.365661 -0.086608 0.096222 - -0.365661 -0.086608 0.087696 - -0.365661 -0.087044 0.079083 - -0.365661 -0.087305 0.070557 - -0.365661 -0.087392 0.062031 - -0.365661 -0.087131 0.053418 - -0.365661 -0.086695 0.044892 - -0.365661 -0.084781 0.03654 - -0.365661 -0.081302 0.028797 - -0.365661 -0.075994 0.022098 - -0.365661 -0.070862 0.015225 - -0.365661 -0.069469 0.012267 - -0.365661 -0.069122 0.009222 - -0.365661 -0.068948 0.00609 - -0.365661 -0.068774 0.003045 - -0.365661 -0.068599 0.0 -e -v - -0.409683 0.028449 0.0 - -0.409683 0.027448 0.003567 - -0.409683 0.02684 0.007221 - -0.409683 0.026665 0.010875 - -0.409683 0.026579 0.014616 - -0.409683 0.026579 0.018357 - -0.409683 0.02684 0.025491 - -0.409683 0.028493 0.032451 - -0.409683 0.030581 0.039237 - -0.409683 0.032407 0.046197 - -0.409683 0.033886 0.053157 - -0.409683 0.034495 0.060291 - -0.409683 0.034322 0.067512 - -0.409683 0.033452 0.074559 - -0.409683 0.031799 0.081519 - -0.409683 0.029537 0.088392 - -0.409683 0.027362 0.095178 - -0.409683 0.025621 0.102138 - -0.409683 0.024751 0.109185 - -0.409683 0.024665 0.116406 - -0.409683 0.016313 0.116493 - -0.409683 0.007873 0.116667 - -0.409683 -0.000479 0.116841 - -0.409683 -0.008918 0.117015 - -0.409683 -0.017357 0.117276 - -0.409683 -0.025709 0.117537 - -0.409683 -0.034148 0.117798 - -0.409683 -0.0425 0.118146 - -0.409683 -0.050939 0.118407 - -0.409683 -0.05929 0.118755 - -0.409683 -0.06773 0.118668 - -0.409683 -0.075646 0.116928 - -0.409683 -0.081476 0.110838 - -0.409683 -0.085042 0.103443 - -0.409683 -0.085391 0.095091 - -0.409683 -0.085826 0.086652 - -0.409683 -0.086 0.0783 - -0.409683 -0.086 0.069861 - -0.409683 -0.086 0.061422 - -0.409683 -0.085826 0.05307 - -0.409683 -0.085129 0.044718 - -0.409683 -0.083738 0.036366 - -0.409683 -0.081041 0.028449 - -0.409683 -0.076081 0.02175 - -0.409683 -0.071035 0.015051 - -0.409683 -0.069209 0.012441 - -0.409683 -0.068164 0.009483 - -0.409683 -0.06773 0.006351 - -0.409683 -0.067556 0.003132 - -0.409683 -0.06773 0.0 -e -v - -0.485634 0.022968 0.0 - -0.485634 0.022924 0.003741 - -0.485634 0.022489 0.007482 - -0.485634 0.022489 0.01131 - -0.485634 0.023099 0.015051 - -0.485634 0.024143 0.018705 - -0.485634 0.026579 0.025839 - -0.485634 0.029797 0.032625 - -0.485634 0.032842 0.039411 - -0.485634 0.035365 0.046545 - -0.485634 0.036931 0.053853 - -0.485634 0.037627 0.061335 - -0.485634 0.037193 0.068817 - -0.485634 0.035801 0.076212 - -0.485634 0.033539 0.083346 - -0.485634 0.03032 0.090132 - -0.485634 0.026057 0.096309 - -0.485634 0.022228 0.102834 - -0.485634 0.019271 0.109707 - -0.485634 0.01814 0.117102 - -0.485634 0.010049 0.116754 - -0.485634 0.001958 0.116406 - -0.485634 -0.006134 0.116232 - -0.485634 -0.014311 0.116058 - -0.485634 -0.022403 0.115971 - -0.485634 -0.030493 0.115971 - -0.485634 -0.038585 0.116058 - -0.485634 -0.046675 0.116406 - -0.485634 -0.054766 0.116841 - -0.485634 -0.062858 0.116841 - -0.485634 -0.070949 0.116232 - -0.485634 -0.077822 0.112143 - -0.485634 -0.083389 0.106314 - -0.485634 -0.085478 0.098571 - -0.485634 -0.086 0.09048 - -0.485634 -0.086173 0.082389 - -0.485634 -0.085913 0.074298 - -0.485634 -0.085391 0.066207 - -0.485634 -0.084955 0.058116 - -0.485634 -0.084868 0.050025 - -0.485634 -0.084868 0.041934 - -0.485634 -0.083563 0.03393 - -0.485634 -0.080344 0.026535 - -0.485634 -0.075473 0.020097 - -0.485634 -0.070601 0.013572 - -0.485634 -0.069643 0.010962 - -0.485634 -0.068948 0.008265 - -0.485634 -0.068774 0.005481 - -0.485634 -0.068512 0.002697 - -0.485634 -0.068164 0.0 -e -v - -0.5568 0.019749 0.0 - -0.5568 0.019706 0.002871 - -0.5568 0.019879 0.005829 - -0.5568 0.020314 0.008787 - -0.5568 0.021185 0.011571 - -0.5568 0.022403 0.014268 - -0.5568 0.026752 0.021489 - -0.5568 0.03206 0.027927 - -0.5568 0.035801 0.035409 - -0.5568 0.038846 0.043239 - -0.5568 0.041108 0.051417 - -0.5568 0.041891 0.059769 - -0.5568 0.041455 0.068121 - -0.5568 0.039802 0.076299 - -0.5568 0.037019 0.084303 - -0.5568 0.033365 0.091872 - -0.5568 0.028667 0.098745 - -0.5568 0.022924 0.104922 - -0.5568 0.017531 0.11136 - -0.5568 0.014833 0.11919 - -0.5568 0.006917 0.118929 - -0.5568 -0.000914 0.118755 - -0.5568 -0.008744 0.118407 - -0.5568 -0.016661 0.118059 - -0.5568 -0.02449 0.117711 - -0.5568 -0.032407 0.117363 - -0.5568 -0.040238 0.116928 - -0.5568 -0.048067 0.116406 - -0.5568 -0.055985 0.115884 - -0.5568 -0.063814 0.115623 - -0.5568 -0.071383 0.113622 - -0.5568 -0.077473 0.108837 - -0.5568 -0.08078 0.101703 - -0.5568 -0.081128 0.093873 - -0.5568 -0.081562 0.086043 - -0.5568 -0.081823 0.078213 - -0.5568 -0.081997 0.070296 - -0.5568 -0.081997 0.062466 - -0.5568 -0.081823 0.054549 - -0.5568 -0.081476 0.046719 - -0.5568 -0.081302 0.038802 - -0.5568 -0.079736 0.031146 - -0.5568 -0.075473 0.024621 - -0.5568 -0.069991 0.018966 - -0.5568 -0.06599 0.012267 - -0.5568 -0.064859 0.010005 - -0.5568 -0.06425 0.007569 - -0.5568 -0.064075 0.005046 - -0.5568 -0.063988 0.002523 - -0.5568 -0.063988 0.0 -e -v - -0.638232 0.012354 0.0 - -0.638232 0.012223 0.001653 - -0.638232 0.012311 0.003306 - -0.638232 0.012571 0.004959 - -0.638232 0.013006 0.006612 - -0.638232 0.013702 0.008178 - -0.638232 0.02075 0.014703 - -0.638232 0.027448 0.021663 - -0.638232 0.033365 0.029145 - -0.638232 0.037802 0.037671 - -0.638232 0.040672 0.046893 - -0.638232 0.041891 0.056376 - -0.638232 0.04163 0.065946 - -0.638232 0.039976 0.075429 - -0.638232 0.036844 0.084564 - -0.638232 0.03232 0.093003 - -0.638232 0.026231 0.100398 - -0.638232 0.019096 0.106836 - -0.638232 0.011354 0.112491 - -0.638232 0.007091 0.12093 - -0.638232 -0.000131 0.12006 - -0.638232 -0.007351 0.11919 - -0.638232 -0.014573 0.118407 - -0.638232 -0.021793 0.117624 - -0.638232 -0.029014 0.116928 - -0.638232 -0.036148 0.116058 - -0.638232 -0.04337 0.11484 - -0.638232 -0.050416 0.113361 - -0.638232 -0.057377 0.111099 - -0.638232 -0.063727 0.107619 - -0.638232 -0.068948 0.102573 - -0.638232 -0.072862 0.096483 - -0.638232 -0.075386 0.089697 - -0.638232 -0.076865 0.08265 - -0.638232 -0.077822 0.075429 - -0.638232 -0.078083 0.068121 - -0.638232 -0.078257 0.0609 - -0.638232 -0.078344 0.053679 - -0.638232 -0.077909 0.046371 - -0.638232 -0.076778 0.039237 - -0.638232 -0.074602 0.032277 - -0.638232 -0.071122 0.025926 - -0.638232 -0.066251 0.020619 - -0.638232 -0.061205 0.015486 - -0.638232 -0.057638 0.009135 - -0.638232 -0.056942 0.007395 - -0.638232 -0.056419 0.005568 - -0.638232 -0.056072 0.003741 - -0.638232 -0.05581 0.001827 - -0.638232 -0.055723 0.0 -e -v - -0.706005 0.004524 0.0 - -0.706005 0.004742 0.001131 - -0.706005 0.005003 0.002349 - -0.706005 0.005176 0.003567 - -0.706005 0.00535 0.004785 - -0.706005 0.005524 0.006003 - -0.706005 0.014137 0.011136 - -0.706005 0.022141 0.017052 - -0.706005 0.029014 0.02436 - -0.706005 0.034235 0.032799 - -0.706005 0.037976 0.042108 - -0.706005 0.039889 0.051852 - -0.706005 0.040064 0.061857 - -0.706005 0.038585 0.071775 - -0.706005 0.035627 0.081345 - -0.706005 0.030841 0.090045 - -0.706005 0.024403 0.097701 - -0.706005 0.016921 0.104313 - -0.706005 0.008744 0.110055 - -0.706005 0.000392 0.115536 - -0.706005 -0.006134 0.11484 - -0.706005 -0.012571 0.114057 - -0.706005 -0.01901 0.113274 - -0.706005 -0.025534 0.112839 - -0.706005 -0.03206 0.11223 - -0.706005 -0.038323 0.110838 - -0.706005 -0.0445 0.10875 - -0.706005 -0.050242 0.105705 - -0.706005 -0.055202 0.101529 - -0.706005 -0.059377 0.09657 - -0.706005 -0.063206 0.091263 - -0.706005 -0.066511 0.085608 - -0.706005 -0.069296 0.079779 - -0.706005 -0.071383 0.073602 - -0.706005 -0.072601 0.067164 - -0.706005 -0.073123 0.060726 - -0.706005 -0.072862 0.054201 - -0.706005 -0.071906 0.047763 - -0.706005 -0.070253 0.041499 - -0.706005 -0.067904 0.035409 - -0.706005 -0.064772 0.029754 - -0.706005 -0.060943 0.024447 - -0.706005 -0.056332 0.019836 - -0.706005 -0.051635 0.015312 - -0.706005 -0.047807 0.010005 - -0.706005 -0.046937 0.008178 - -0.706005 -0.046241 0.006177 - -0.706005 -0.045805 0.004176 - -0.706005 -0.045545 0.002088 - -0.706005 -0.045632 0.0 -e -v - -0.757944 -0.005133 0.0 - -0.757944 -0.005089 0.001479 - -0.757944 -0.005089 0.003045 - -0.757944 -0.005089 0.004611 - -0.757944 -0.005003 0.006177 - -0.757944 -0.005003 0.007743 - -0.757944 0.004655 0.011136 - -0.757944 0.013528 0.016443 - -0.757944 0.021097 0.023403 - -0.757944 0.0271 0.031668 - -0.757944 0.031277 0.041064 - -0.757944 0.033365 0.051069 - -0.757944 0.033452 0.061422 - -0.757944 0.031712 0.071514 - -0.757944 0.027971 0.081084 - -0.757944 0.022489 0.089784 - -0.757944 0.015356 0.097179 - -0.757944 0.00683 0.102834 - -0.757944 -0.002741 0.106749 - -0.757944 -0.012833 0.108663 - -0.757944 -0.018488 0.108663 - -0.757944 -0.024143 0.108141 - -0.757944 -0.02971 0.107097 - -0.757944 -0.035105 0.105357 - -0.757944 -0.040238 0.103008 - -0.757944 -0.045109 0.100137 - -0.757944 -0.049633 0.096657 - -0.757944 -0.05381 0.092829 - -0.757944 -0.057551 0.088566 - -0.757944 -0.06077 0.083955 - -0.757944 -0.063466 0.078909 - -0.757944 -0.065554 0.073689 - -0.757944 -0.067033 0.068208 - -0.757944 -0.067817 0.062553 - -0.757944 -0.068077 0.056898 - -0.757944 -0.067817 0.051243 - -0.757944 -0.066859 0.045675 - -0.757944 -0.065206 0.040281 - -0.757944 -0.062684 0.035148 - -0.757944 -0.059551 0.03045 - -0.757944 -0.056072 0.026013 - -0.757944 -0.052244 0.02175 - -0.757944 -0.048067 0.017922 - -0.757944 -0.043543 0.014616 - -0.757944 -0.038585 0.011832 - -0.757944 -0.038672 0.009396 - -0.757944 -0.038846 0.007047 - -0.757944 -0.038932 0.004698 - -0.757944 -0.039019 0.002349 - -0.757944 -0.039193 0.0 -e -v - -0.812058 -0.015747 0.0 - -0.812058 -0.015703 0.001827 - -0.812058 -0.015703 0.003654 - -0.812058 -0.015703 0.005481 - -0.812058 -0.015703 0.007308 - -0.812058 -0.015703 0.009135 - -0.812058 -0.004655 0.010788 - -0.812058 0.005786 0.014964 - -0.812058 0.015007 0.021141 - -0.812058 0.022489 0.029493 - -0.812058 0.027536 0.039498 - -0.812058 0.03032 0.050373 - -0.812058 0.030755 0.061509 - -0.812058 0.028841 0.072558 - -0.812058 0.02449 0.082911 - -0.812058 0.017879 0.091872 - -0.812058 0.009178 0.098919 - -0.812058 -0.000914 0.103704 - -0.812058 -0.011875 0.106053 - -0.812058 -0.023099 0.105879 - -0.812058 -0.028754 0.104835 - -0.812058 -0.033799 0.103095 - -0.812058 -0.038585 0.100833 - -0.812058 -0.043109 0.097962 - -0.812058 -0.047371 0.094743 - -0.812058 -0.051199 0.091002 - -0.812058 -0.054593 0.086913 - -0.812058 -0.057725 0.082563 - -0.812058 -0.060334 0.077952 - -0.812058 -0.062422 0.072993 - -0.812058 -0.063814 0.06786 - -0.812058 -0.064511 0.062553 - -0.812058 -0.064685 0.057246 - -0.812058 -0.064337 0.051939 - -0.812058 -0.06364 0.046632 - -0.812058 -0.062335 0.041499 - -0.812058 -0.060247 0.03654 - -0.812058 -0.057551 0.032016 - -0.812058 -0.054419 0.027666 - -0.812058 -0.051025 0.023577 - -0.812058 -0.047197 0.019836 - -0.812058 -0.042847 0.016791 - -0.812058 -0.038063 0.014355 - -0.812058 -0.03319 0.012267 - -0.812058 -0.028144 0.010527 - -0.812058 -0.028144 0.008439 - -0.812058 -0.028144 0.006351 - -0.812058 -0.028144 0.004176 - -0.812058 -0.028144 0.002088 - -0.812058 -0.028144 0.0 -e -v - -0.838506 -0.02175 0.0 - -0.838506 -0.021706 0.00174 - -0.838506 -0.021706 0.003567 - -0.838506 -0.021706 0.005394 - -0.838506 -0.021706 0.007134 - -0.838506 -0.021793 0.008961 - -0.838506 -0.010571 0.009309 - -0.838506 0.000217 0.012354 - -0.838506 0.010223 0.017487 - -0.838506 0.018835 0.024708 - -0.838506 0.025013 0.034104 - -0.838506 0.028927 0.044544 - -0.838506 0.030928 0.05568 - -0.838506 0.030406 0.066816 - -0.838506 0.027013 0.077517 - -0.838506 0.021272 0.087174 - -0.838506 0.013616 0.095352 - -0.838506 0.004306 0.101616 - -0.838506 -0.006307 0.105183 - -0.838506 -0.017531 0.10614 - -0.838506 -0.023447 0.105879 - -0.838506 -0.029275 0.104922 - -0.838506 -0.034844 0.103095 - -0.838506 -0.040151 0.100398 - -0.838506 -0.045022 0.097092 - -0.838506 -0.049633 0.093438 - -0.838506 -0.053897 0.089349 - -0.838506 -0.057638 0.084738 - -0.838506 -0.060596 0.079605 - -0.838506 -0.062771 0.074124 - -0.838506 -0.064337 0.068469 - -0.838506 -0.065293 0.06264 - -0.838506 -0.065467 0.056724 - -0.838506 -0.065206 0.050808 - -0.838506 -0.064337 0.044979 - -0.838506 -0.062596 0.039324 - -0.838506 -0.059987 0.034017 - -0.838506 -0.056681 0.029145 - -0.838506 -0.05294 0.024621 - -0.838506 -0.048763 0.020358 - -0.838506 -0.044066 0.016878 - -0.838506 -0.038759 0.014094 - -0.838506 -0.033278 0.012093 - -0.838506 -0.027536 0.010527 - -0.838506 -0.021793 0.009396 - -0.838506 -0.021706 0.007134 - -0.838506 -0.021706 0.005394 - -0.838506 -0.021706 0.003567 - -0.838506 -0.021706 0.00174 - -0.838506 -0.021706 0.0 -e -v - 0.058638 0.081867 0.0 - 0.023229 0.075038 0.0 - -0.022359 0.069469 0.0 - -0.07395 0.063988 0.0 - -0.153555 0.055202 0.0 - -0.21663 0.048329 0.0 - -0.286143 0.040934 0.0 - -0.365661 0.033539 0.0 - -0.409683 0.028493 0.0 - -0.485634 0.023012 0.0 - -0.5568 0.019793 0.0 - -0.638232 0.012397 0.0 - -0.706005 0.004568 0.0 - -0.757944 -0.005089 0.0 - -0.812058 -0.015703 0.0 - -0.838506 -0.021706 0.0 -e -v - 0.058638 0.078387 0.017835 - 0.023229 0.072862 0.015399 - -0.022359 0.06799 0.012006 - -0.07395 0.062945 0.009048 - -0.153555 0.055289 0.005568 - -0.21663 0.048154 0.004089 - -0.286143 0.041021 0.002784 - -0.365661 0.031973 0.002175 - -0.409683 0.027448 0.003567 - -0.485634 0.022924 0.003741 - -0.5568 0.019706 0.002871 - -0.638232 0.012223 0.001653 - -0.706005 0.004742 0.001131 - -0.757944 -0.005089 0.001479 - -0.812058 -0.015703 0.001827 - -0.838506 -0.021706 0.00174 -e -v - 0.058638 0.067947 0.032712 - 0.023229 0.065206 0.028884 - -0.022359 0.062945 0.023055 - -0.07395 0.060073 0.017835 - -0.153555 0.054244 0.011049 - -0.21663 0.047284 0.008178 - -0.286143 0.040238 0.005568 - -0.365661 0.03032 0.004437 - -0.409683 0.02684 0.007221 - -0.485634 0.022489 0.007482 - -0.5568 0.019879 0.005829 - -0.638232 0.012311 0.003306 - -0.706005 0.005003 0.002349 - -0.757944 -0.005089 0.003045 - -0.812058 -0.015703 0.003654 - -0.838506 -0.021706 0.003567 -e -v - 0.058638 0.052983 0.043065 - 0.023229 0.053287 0.038889 - -0.022359 0.05494 0.03219 - -0.07395 0.055549 0.025752 - -0.153555 0.05207 0.016182 - -0.21663 0.045892 0.012006 - -0.286143 0.038672 0.007917 - -0.365661 0.029102 0.00696 - -0.409683 0.026665 0.010875 - -0.485634 0.022489 0.01131 - -0.5568 0.020314 0.008787 - -0.638232 0.012571 0.004959 - -0.706005 0.005176 0.003567 - -0.757944 -0.005089 0.004611 - -0.812058 -0.015703 0.005481 - -0.838506 -0.021706 0.005394 -e -v - 0.058638 0.035496 0.048633 - 0.023229 0.038932 0.044979 - -0.022359 0.044675 0.038802 - -0.07395 0.049286 0.032451 - -0.153555 0.049112 0.020967 - -0.21663 0.043456 0.015399 - -0.286143 0.036584 0.009918 - -0.365661 0.028579 0.009657 - -0.409683 0.026579 0.014616 - -0.485634 0.023099 0.015051 - -0.5568 0.021185 0.011571 - -0.638232 0.013006 0.006612 - -0.706005 0.00535 0.004785 - -0.757944 -0.005003 0.006177 - -0.812058 -0.015703 0.007308 - -0.838506 -0.021706 0.007134 -e -v - 0.058638 0.0174 0.051069 - 0.023229 0.023534 0.047937 - -0.022359 0.033278 0.042891 - -0.07395 0.04163 0.037497 - -0.153555 0.045545 0.025317 - -0.21663 0.040151 0.017748 - -0.286143 0.034061 0.011223 - -0.365661 0.028579 0.012441 - -0.409683 0.026579 0.018357 - -0.485634 0.024143 0.018705 - -0.5568 0.022403 0.014268 - -0.638232 0.013702 0.008178 - -0.706005 0.005524 0.006003 - -0.757944 -0.005003 0.007743 - -0.812058 -0.015703 0.009135 - -0.838506 -0.021793 0.008961 -e -v - 0.058638 0.0174 0.061161 - 0.023229 0.023969 0.061248 - -0.022359 0.032842 0.0609 - -0.07395 0.038585 0.055071 - -0.153555 0.04363 0.032103 - -0.21663 0.039802 0.02523 - -0.286143 0.033886 0.019053 - -0.365661 0.028058 0.02001 - -0.409683 0.02684 0.025491 - -0.485634 0.026579 0.025839 - -0.5568 0.026752 0.021489 - -0.638232 0.02075 0.014703 - -0.706005 0.014137 0.011136 - -0.757944 0.004655 0.011136 - -0.812058 -0.004655 0.010788 - -0.838506 -0.010571 0.009309 -e -v - 0.058638 0.036279 0.061683 - 0.023229 0.036844 0.06177 - -0.022359 0.038846 0.061335 - -0.07395 0.038585 0.061509 - -0.153555 0.041977 0.038976 - -0.21663 0.039368 0.032625 - -0.286143 0.033712 0.026796 - -0.365661 0.028058 0.027492 - -0.409683 0.028493 0.032451 - -0.485634 0.029797 0.032625 - -0.5568 0.03206 0.027927 - -0.638232 0.027448 0.021663 - -0.706005 0.022141 0.017052 - -0.757944 0.013528 0.016443 - -0.812058 0.005786 0.014964 - -0.838506 0.000217 0.012354 -e -v - 0.058638 0.036366 0.067512 - 0.023229 0.036757 0.067686 - -0.022359 0.038672 0.06699 - -0.07395 0.038932 0.06699 - -0.153555 0.040585 0.045849 - -0.21663 0.038759 0.040107 - -0.286143 0.033712 0.034626 - -0.365661 0.028754 0.035061 - -0.409683 0.030581 0.039237 - -0.485634 0.032842 0.039411 - -0.5568 0.035801 0.035409 - -0.638232 0.033365 0.029145 - -0.706005 0.029014 0.02436 - -0.757944 0.021097 0.023403 - -0.812058 0.015007 0.021141 - -0.838506 0.010223 0.017487 -e -v - 0.058638 0.036366 0.073428 - 0.023229 0.036757 0.073515 - -0.022359 0.038498 0.072645 - -0.07395 0.039193 0.072471 - -0.153555 0.038932 0.052722 - -0.21663 0.037976 0.047502 - -0.286143 0.033712 0.042456 - -0.365661 0.029972 0.042456 - -0.409683 0.032407 0.046197 - -0.485634 0.035365 0.046545 - -0.5568 0.038846 0.043239 - -0.638232 0.037802 0.037671 - -0.706005 0.034235 0.032799 - -0.757944 0.0271 0.031668 - -0.812058 0.022489 0.029493 - -0.838506 0.018835 0.024708 -e -v - 0.058638 0.036366 0.079344 - 0.023229 0.03667 0.079431 - -0.022359 0.03841 0.0783 - -0.07395 0.039281 0.077952 - -0.153555 0.037714 0.059682 - -0.21663 0.036931 0.054897 - -0.286143 0.033712 0.050199 - -0.365661 0.031189 0.049938 - -0.409683 0.033886 0.053157 - -0.485634 0.036931 0.053853 - -0.5568 0.041108 0.051417 - -0.638232 0.040672 0.046893 - -0.706005 0.037976 0.042108 - -0.757944 0.031277 0.041064 - -0.812058 0.027536 0.039498 - -0.838506 0.025013 0.034104 -e -v - 0.058638 0.036453 0.08526 - 0.023229 0.03667 0.08526 - -0.022359 0.038498 0.084042 - -0.07395 0.039281 0.083433 - -0.153555 0.037627 0.066816 - -0.21663 0.036757 0.062292 - -0.286143 0.033886 0.058029 - -0.365661 0.032495 0.057333 - -0.409683 0.034495 0.060291 - -0.485634 0.037627 0.061335 - -0.5568 0.041891 0.059769 - -0.638232 0.041891 0.056376 - -0.706005 0.039889 0.051852 - -0.757944 0.033365 0.051069 - -0.812058 0.03032 0.050373 - -0.838506 0.028927 0.044544 -e -v - 0.058638 0.036453 0.091176 - 0.023229 0.036584 0.091176 - -0.022359 0.038585 0.089697 - -0.07395 0.039281 0.089001 - -0.153555 0.037714 0.073863 - -0.21663 0.037193 0.069687 - -0.286143 0.034148 0.065859 - -0.365661 0.032929 0.064902 - -0.409683 0.034322 0.067512 - -0.485634 0.037193 0.068817 - -0.5568 0.041455 0.068121 - -0.638232 0.04163 0.065946 - -0.706005 0.040064 0.061857 - -0.757944 0.033452 0.061422 - -0.812058 0.030755 0.061509 - -0.838506 0.030928 0.05568 -e -v - 0.058638 0.03654 0.097092 - 0.023229 0.036584 0.097005 - -0.022359 0.038759 0.095352 - -0.07395 0.039281 0.094482 - -0.153555 0.037714 0.08091 - -0.21663 0.03728 0.077169 - -0.286143 0.034235 0.073602 - -0.365661 0.03206 0.072384 - -0.409683 0.033452 0.074559 - -0.485634 0.035801 0.076212 - -0.5568 0.039802 0.076299 - -0.638232 0.039976 0.075429 - -0.706005 0.038585 0.071775 - -0.757944 0.031712 0.071514 - -0.812058 0.028841 0.072558 - -0.838506 0.030406 0.066816 -e -v - 0.058638 0.03654 0.103008 - 0.023229 0.036497 0.102921 - -0.022359 0.038932 0.101007 - -0.07395 0.039368 0.099963 - -0.153555 0.037714 0.087957 - -0.21663 0.037193 0.084651 - -0.286143 0.034235 0.081432 - -0.365661 0.030841 0.079779 - -0.409683 0.031799 0.081519 - -0.485634 0.033539 0.083346 - -0.5568 0.037019 0.084303 - -0.638232 0.036844 0.084564 - -0.706005 0.035627 0.081345 - -0.757944 0.027971 0.081084 - -0.812058 0.02449 0.082911 - -0.838506 0.027013 0.077517 -e -v - 0.058638 0.036627 0.108924 - 0.023229 0.036497 0.10875 - -0.022359 0.039019 0.106749 - -0.07395 0.039629 0.105444 - -0.153555 0.037714 0.095091 - -0.21663 0.037019 0.092046 - -0.286143 0.034235 0.089175 - -0.365661 0.029972 0.087348 - -0.409683 0.029537 0.088392 - -0.485634 0.03032 0.090132 - -0.5568 0.033365 0.091872 - -0.638232 0.03232 0.093003 - -0.706005 0.030841 0.090045 - -0.757944 0.022489 0.089784 - -0.812058 0.017879 0.091872 - -0.838506 0.021272 0.087174 -e -v - 0.058638 0.036627 0.11484 - 0.023229 0.036497 0.114666 - -0.022359 0.039019 0.112404 - -0.07395 0.040064 0.110925 - -0.153555 0.037714 0.102138 - -0.21663 0.036931 0.099528 - -0.286143 0.034061 0.097005 - -0.365661 0.029275 0.09483 - -0.409683 0.027362 0.095178 - -0.485634 0.026057 0.096309 - -0.5568 0.028667 0.098745 - -0.638232 0.026231 0.100398 - -0.706005 0.024403 0.097701 - -0.757944 0.015356 0.097179 - -0.812058 0.009178 0.098919 - -0.838506 0.013616 0.095352 -e -v - 0.058638 0.036714 0.120756 - 0.023229 0.03641 0.120495 - -0.022359 0.038932 0.118059 - -0.07395 0.040151 0.116493 - -0.153555 0.037714 0.109185 - -0.21663 0.036844 0.106923 - -0.286143 0.033712 0.104835 - -0.365661 0.028667 0.102312 - -0.409683 0.025621 0.102138 - -0.485634 0.022228 0.102834 - -0.5568 0.022924 0.104922 - -0.638232 0.019096 0.106836 - -0.706005 0.016921 0.104313 - -0.757944 0.00683 0.102834 - -0.812058 -0.000914 0.103704 - -0.838506 0.004306 0.101616 -e -v - 0.058638 0.036714 0.126672 - 0.023229 0.03641 0.126411 - -0.022359 0.038846 0.123801 - -0.07395 0.039629 0.121887 - -0.153555 0.037714 0.116232 - -0.21663 0.036757 0.114405 - -0.286143 0.03319 0.112578 - -0.365661 0.028319 0.109881 - -0.409683 0.024751 0.109185 - -0.485634 0.019271 0.109707 - -0.5568 0.017531 0.11136 - -0.638232 0.011354 0.112491 - -0.706005 0.008744 0.110055 - -0.757944 -0.002741 0.106749 - -0.812058 -0.011875 0.106053 - -0.838506 -0.006307 0.105183 -e -v - 0.058638 0.036714 0.132501 - 0.023229 0.036323 0.13224 - -0.022359 0.038672 0.129456 - -0.07395 0.038585 0.127281 - -0.153555 0.037714 0.123366 - -0.21663 0.03667 0.121887 - -0.286143 0.032495 0.120321 - -0.365661 0.028144 0.11745 - -0.409683 0.024665 0.116406 - -0.485634 0.01814 0.117102 - -0.5568 0.014833 0.11919 - -0.638232 0.007091 0.12093 - -0.706005 0.000392 0.115536 - -0.757944 -0.012833 0.108663 - -0.812058 -0.023099 0.105879 - -0.838506 -0.017531 0.10614 -e -v - 0.058638 0.028536 0.132414 - 0.023229 0.027796 0.132153 - -0.022359 0.030233 0.12963 - -0.07395 0.030058 0.127368 - -0.153555 0.028841 0.123714 - -0.21663 0.027623 0.121887 - -0.286143 0.02362 0.119712 - -0.365661 0.019619 0.117798 - -0.409683 0.016313 0.116493 - -0.485634 0.010049 0.116754 - -0.5568 0.006917 0.118929 - -0.638232 -0.000131 0.12006 - -0.706005 -0.006134 0.11484 - -0.757944 -0.018488 0.108663 - -0.812058 -0.028754 0.104835 - -0.838506 -0.023447 0.105879 -e -v - 0.058638 0.020445 0.132414 - 0.023229 0.019271 0.132153 - -0.022359 0.021793 0.129891 - -0.07395 0.02162 0.127455 - -0.153555 0.019966 0.123975 - -0.21663 0.018575 0.121974 - -0.286143 0.014747 0.11919 - -0.365661 0.011006 0.117711 - -0.409683 0.007873 0.116667 - -0.485634 0.001958 0.116406 - -0.5568 -0.000914 0.118755 - -0.638232 -0.007351 0.11919 - -0.706005 -0.012571 0.114057 - -0.757944 -0.024143 0.108141 - -0.812058 -0.033799 0.103095 - -0.838506 -0.029275 0.104922 -e -v - 0.058638 0.012267 0.132327 - 0.023229 0.010744 0.132066 - -0.022359 0.013354 0.130065 - -0.07395 0.013094 0.127455 - -0.153555 0.011092 0.124149 - -0.21663 0.009527 0.122061 - -0.286143 0.005873 0.118929 - -0.365661 0.002479 0.117711 - -0.409683 -0.000479 0.116841 - -0.485634 -0.006134 0.116232 - -0.5568 -0.008744 0.118407 - -0.638232 -0.014573 0.118407 - -0.706005 -0.01901 0.113274 - -0.757944 -0.02971 0.107097 - -0.812058 -0.038585 0.100833 - -0.838506 -0.034844 0.103095 -e -v - 0.058638 0.004089 0.13224 - 0.023229 0.002132 0.131979 - -0.022359 0.004916 0.130152 - -0.07395 0.004568 0.127455 - -0.153555 0.002219 0.124236 - -0.21663 0.000565 0.122061 - -0.286143 -0.003001 0.118929 - -0.365661 -0.006047 0.117798 - -0.409683 -0.008918 0.117015 - -0.485634 -0.014311 0.116058 - -0.5568 -0.016661 0.118059 - -0.638232 -0.021793 0.117624 - -0.706005 -0.025534 0.112839 - -0.757944 -0.035105 0.105357 - -0.812058 -0.043109 0.097962 - -0.838506 -0.040151 0.100398 -e -v - 0.058638 -0.004089 0.13224 - 0.023229 -0.006394 0.131979 - -0.022359 -0.003523 0.130326 - -0.07395 -0.003872 0.127542 - -0.153555 -0.006743 0.124149 - -0.21663 -0.008482 0.122148 - -0.286143 -0.011875 0.119016 - -0.365661 -0.014659 0.117885 - -0.409683 -0.017357 0.117276 - -0.485634 -0.022403 0.115971 - -0.5568 -0.02449 0.117711 - -0.638232 -0.029014 0.116928 - -0.706005 -0.03206 0.11223 - -0.757944 -0.040238 0.103008 - -0.812058 -0.047371 0.094743 - -0.838506 -0.045022 0.097092 -e -v - 0.058638 -0.012267 0.132153 - 0.023229 -0.014921 0.131892 - -0.022359 -0.012049 0.130413 - -0.07395 -0.012397 0.127716 - -0.153555 -0.015616 0.123888 - -0.21663 -0.017531 0.122061 - -0.286143 -0.02075 0.119364 - -0.365661 -0.023186 0.117972 - -0.409683 -0.025709 0.117537 - -0.485634 -0.030493 0.115971 - -0.5568 -0.032407 0.117363 - -0.638232 -0.036148 0.116058 - -0.706005 -0.038323 0.110838 - -0.757944 -0.045109 0.100137 - -0.812058 -0.051199 0.091002 - -0.838506 -0.049633 0.093438 -e -v - 0.058638 -0.020445 0.132153 - 0.023229 -0.023447 0.131805 - -0.022359 -0.020489 0.130587 - -0.07395 -0.020837 0.127977 - -0.153555 -0.02449 0.123714 - -0.21663 -0.026579 0.122148 - -0.286143 -0.029624 0.119886 - -0.365661 -0.031712 0.118146 - -0.409683 -0.034148 0.117798 - -0.485634 -0.038585 0.116058 - -0.5568 -0.040238 0.116928 - -0.638232 -0.04337 0.11484 - -0.706005 -0.0445 0.10875 - -0.757944 -0.049633 0.096657 - -0.812058 -0.054593 0.086913 - -0.838506 -0.053897 0.089349 -e -v - 0.058638 -0.028623 0.132066 - 0.023229 -0.031973 0.131805 - -0.022359 -0.028927 0.130587 - -0.07395 -0.029362 0.128325 - -0.153555 -0.033365 0.123888 - -0.21663 -0.03554 0.122583 - -0.286143 -0.038498 0.120669 - -0.365661 -0.040325 0.11832 - -0.409683 -0.0425 0.118146 - -0.485634 -0.046675 0.116406 - -0.5568 -0.048067 0.116406 - -0.638232 -0.050416 0.113361 - -0.706005 -0.050242 0.105705 - -0.757944 -0.05381 0.092829 - -0.812058 -0.057725 0.082563 - -0.838506 -0.057638 0.084738 -e -v - 0.058638 -0.036801 0.132066 - 0.023229 -0.040498 0.131805 - -0.022359 -0.037367 0.130761 - -0.07395 -0.037889 0.128673 - -0.153555 -0.042238 0.12441 - -0.21663 -0.044588 0.123279 - -0.286143 -0.047284 0.121713 - -0.365661 -0.04885 0.118581 - -0.409683 -0.050939 0.118407 - -0.485634 -0.054766 0.116841 - -0.5568 -0.055985 0.115884 - -0.638232 -0.057377 0.111099 - -0.706005 -0.055202 0.101529 - -0.757944 -0.057551 0.088566 - -0.812058 -0.060334 0.077952 - -0.838506 -0.060596 0.079605 -e -v - 0.058638 -0.044892 0.132675 - 0.023229 -0.049112 0.13224 - -0.022359 -0.045805 0.131022 - -0.07395 -0.046328 0.128847 - -0.153555 -0.051112 0.124932 - -0.21663 -0.053548 0.123975 - -0.286143 -0.056159 0.122496 - -0.365661 -0.057377 0.119016 - -0.409683 -0.05929 0.118755 - -0.485634 -0.062858 0.116841 - -0.5568 -0.063814 0.115623 - -0.638232 -0.063727 0.107619 - -0.706005 -0.059377 0.09657 - -0.757944 -0.06077 0.083955 - -0.812058 -0.062422 0.072993 - -0.838506 -0.062771 0.074124 -e -v - 0.058638 -0.05307 0.132501 - 0.023229 -0.057638 0.132327 - -0.022359 -0.054244 0.130935 - -0.07395 -0.054853 0.129108 - -0.153555 -0.0599 0.125889 - -0.21663 -0.062509 0.125106 - -0.286143 -0.064945 0.123627 - -0.365661 -0.065903 0.119973 - -0.409683 -0.06773 0.118668 - -0.485634 -0.070949 0.116232 - -0.5568 -0.071383 0.113622 - -0.638232 -0.068948 0.102573 - -0.706005 -0.063206 0.091263 - -0.757944 -0.063466 0.078909 - -0.812058 -0.063814 0.06786 - -0.838506 -0.064337 0.068469 -e -v - 0.058638 -0.061074 0.130674 - 0.023229 -0.066077 0.131196 - -0.022359 -0.062684 0.130674 - -0.07395 -0.063293 0.129717 - -0.153555 -0.068599 0.127629 - -0.21663 -0.07147 0.124671 - -0.286143 -0.073646 0.122322 - -0.365661 -0.073907 0.117276 - -0.409683 -0.075646 0.116928 - -0.485634 -0.077822 0.112143 - -0.5568 -0.077473 0.108837 - -0.638232 -0.072862 0.096483 - -0.706005 -0.066511 0.085608 - -0.757944 -0.065554 0.073689 - -0.812058 -0.064511 0.062553 - -0.838506 -0.065293 0.06264 -e -v - 0.058638 -0.067251 0.125628 - 0.023229 -0.074167 0.128847 - -0.022359 -0.071035 0.129978 - -0.07395 -0.071644 0.128412 - -0.153555 -0.077212 0.125976 - -0.21663 -0.07991 0.121713 - -0.286143 -0.081041 0.117537 - -0.365661 -0.080257 0.111708 - -0.409683 -0.081476 0.110838 - -0.485634 -0.083389 0.106314 - -0.5568 -0.08078 0.101703 - -0.638232 -0.075386 0.089697 - -0.706005 -0.069296 0.079779 - -0.757944 -0.067033 0.068208 - -0.812058 -0.064685 0.057246 - -0.838506 -0.065467 0.056724 -e -v - 0.058638 -0.0696 0.117885 - 0.023229 -0.078691 0.1218 - -0.022359 -0.07817 0.125541 - -0.07395 -0.079301 0.124758 - -0.153555 -0.084173 0.120582 - -0.21663 -0.085391 0.114666 - -0.286143 -0.085652 0.110055 - -0.365661 -0.084868 0.104487 - -0.409683 -0.085042 0.103443 - -0.485634 -0.085478 0.098571 - -0.5568 -0.081128 0.093873 - -0.638232 -0.076865 0.08265 - -0.706005 -0.071383 0.073602 - -0.757944 -0.067817 0.062553 - -0.812058 -0.064337 0.051939 - -0.838506 -0.065206 0.050808 -e -v - 0.058638 -0.07047 0.109794 - 0.023229 -0.080431 0.113535 - -0.022359 -0.082171 0.118233 - -0.07395 -0.084173 0.117972 - -0.153555 -0.086521 0.11223 - -0.21663 -0.087044 0.105879 - -0.286143 -0.087479 0.101355 - -0.365661 -0.086608 0.096222 - -0.409683 -0.085391 0.095091 - -0.485634 -0.086 0.09048 - -0.5568 -0.081562 0.086043 - -0.638232 -0.077822 0.075429 - -0.706005 -0.072601 0.067164 - -0.757944 -0.068077 0.056898 - -0.812058 -0.06364 0.046632 - -0.838506 -0.064337 0.044979 -e -v - 0.058638 -0.070209 0.101616 - 0.023229 -0.07991 0.105009 - -0.022359 -0.083563 0.109968 - -0.07395 -0.086957 0.109968 - -0.153555 -0.086957 0.103356 - -0.21663 -0.08687 0.096918 - -0.286143 -0.087652 0.092481 - -0.365661 -0.086608 0.087696 - -0.409683 -0.085826 0.086652 - -0.485634 -0.086173 0.082389 - -0.5568 -0.081823 0.078213 - -0.638232 -0.078083 0.068121 - -0.706005 -0.073123 0.060726 - -0.757944 -0.067817 0.051243 - -0.812058 -0.062335 0.041499 - -0.838506 -0.062596 0.039324 -e -v - 0.058638 -0.070122 0.093438 - 0.023229 -0.079475 0.096483 - -0.022359 -0.082781 0.101529 - -0.07395 -0.087479 0.101529 - -0.153555 -0.087739 0.094569 - -0.21663 -0.087739 0.08787 - -0.286143 -0.088262 0.083607 - -0.365661 -0.087044 0.079083 - -0.409683 -0.086 0.0783 - -0.485634 -0.085913 0.074298 - -0.5568 -0.081997 0.070296 - -0.638232 -0.078257 0.0609 - -0.706005 -0.072862 0.054201 - -0.757944 -0.066859 0.045675 - -0.812058 -0.060247 0.03654 - -0.838506 -0.059987 0.034017 -e -v - 0.058638 -0.071166 0.085347 - 0.023229 -0.080257 0.087957 - -0.022359 -0.082084 0.093177 - -0.07395 -0.087044 0.093003 - -0.153555 -0.088436 0.085695 - -0.21663 -0.088523 0.078909 - -0.286143 -0.088958 0.07482 - -0.365661 -0.087305 0.070557 - -0.409683 -0.086 0.069861 - -0.485634 -0.085391 0.066207 - -0.5568 -0.081997 0.062466 - -0.638232 -0.078344 0.053679 - -0.706005 -0.071906 0.047763 - -0.757944 -0.065206 0.040281 - -0.812058 -0.057551 0.032016 - -0.838506 -0.056681 0.029145 -e -v - 0.058638 -0.071514 0.077169 - 0.023229 -0.080518 0.079431 - -0.022359 -0.082868 0.084738 - -0.07395 -0.087044 0.084564 - -0.153555 -0.088871 0.076821 - -0.21663 -0.088958 0.069861 - -0.286143 -0.089218 0.065946 - -0.365661 -0.087392 0.062031 - -0.409683 -0.086 0.061422 - -0.485634 -0.084955 0.058116 - -0.5568 -0.081823 0.054549 - -0.638232 -0.077909 0.046371 - -0.706005 -0.070253 0.041499 - -0.757944 -0.062684 0.035148 - -0.812058 -0.054419 0.027666 - -0.838506 -0.05294 0.024621 -e -v - 0.058638 -0.068991 0.069513 - 0.023229 -0.079388 0.070992 - -0.022359 -0.083042 0.076299 - -0.07395 -0.087566 0.076038 - -0.153555 -0.088958 0.067947 - -0.21663 -0.088958 0.0609 - -0.286143 -0.089045 0.056985 - -0.365661 -0.087131 0.053418 - -0.409683 -0.085826 0.05307 - -0.485634 -0.084868 0.050025 - -0.5568 -0.081476 0.046719 - -0.638232 -0.076778 0.039237 - -0.706005 -0.067904 0.035409 - -0.757944 -0.059551 0.03045 - -0.812058 -0.051025 0.023577 - -0.838506 -0.048763 0.020358 -e -v - 0.058638 -0.063336 0.063771 - 0.023229 -0.075212 0.063684 - -0.022359 -0.082084 0.067947 - -0.07395 -0.087044 0.067599 - -0.153555 -0.088436 0.059073 - -0.21663 -0.088436 0.051852 - -0.286143 -0.088262 0.048198 - -0.365661 -0.086695 0.044892 - -0.409683 -0.085129 0.044718 - -0.485634 -0.084868 0.041934 - -0.5568 -0.081302 0.038802 - -0.638232 -0.074602 0.032277 - -0.706005 -0.064772 0.029754 - -0.757944 -0.056072 0.026013 - -0.812058 -0.047197 0.019836 - -0.838506 -0.044066 0.016878 -e -v - 0.058638 -0.055332 0.062379 - 0.023229 -0.067904 0.059508 - -0.022359 -0.078257 0.060465 - -0.07395 -0.084868 0.059334 - -0.153555 -0.086957 0.050286 - -0.21663 -0.08626 0.043152 - -0.286143 -0.086 0.039585 - -0.365661 -0.084781 0.03654 - -0.409683 -0.083738 0.036366 - -0.485634 -0.083563 0.03393 - -0.5568 -0.079736 0.031146 - -0.638232 -0.071122 0.025926 - -0.706005 -0.060943 0.024447 - -0.757944 -0.052244 0.02175 - -0.812058 -0.042847 0.016791 - -0.838506 -0.038759 0.014094 -e -v - 0.058638 -0.047241 0.061335 - 0.023229 -0.059377 0.058986 - -0.022359 -0.071557 0.055506 - -0.07395 -0.080692 0.052026 - -0.153555 -0.083999 0.041934 - -0.21663 -0.08252 0.034887 - -0.286143 -0.082259 0.031581 - -0.365661 -0.081302 0.028797 - -0.409683 -0.081041 0.028449 - -0.485634 -0.080344 0.026535 - -0.5568 -0.075473 0.024621 - -0.638232 -0.066251 0.020619 - -0.706005 -0.056332 0.019836 - -0.757944 -0.048067 0.017922 - -0.812058 -0.038063 0.014355 - -0.838506 -0.033278 0.012093 -e -v - 0.058638 -0.039063 0.061074 - 0.023229 -0.050852 0.058464 - -0.022359 -0.06338 0.053418 - -0.07395 -0.073733 0.047415 - -0.153555 -0.077996 0.035496 - -0.21663 -0.076952 0.02784 - -0.286143 -0.076865 0.024534 - -0.365661 -0.075994 0.022098 - -0.409683 -0.076081 0.02175 - -0.485634 -0.075473 0.020097 - -0.5568 -0.069991 0.018966 - -0.638232 -0.061205 0.015486 - -0.706005 -0.051635 0.015312 - -0.757944 -0.043543 0.014616 - -0.812058 -0.03319 0.012267 - -0.838506 -0.027536 0.010527 -e -v - 0.058638 -0.030885 0.061683 - 0.023229 -0.042326 0.058464 - -0.022359 -0.055115 0.052026 - -0.07395 -0.066077 0.043761 - -0.153555 -0.070514 0.030798 - -0.21663 -0.07034 0.021663 - -0.286143 -0.070862 0.017922 - -0.365661 -0.070862 0.015225 - -0.409683 -0.071035 0.015051 - -0.485634 -0.070601 0.013572 - -0.5568 -0.06599 0.012267 - -0.638232 -0.057638 0.009135 - -0.706005 -0.047807 0.010005 - -0.757944 -0.038585 0.011832 - -0.812058 -0.028144 0.010527 - -0.838506 -0.021793 0.009396 -e -v - 0.058638 -0.03045 0.047415 - 0.023229 -0.042238 0.042804 - -0.022359 -0.05929 0.034974 - -0.07395 -0.065729 0.034974 - -0.153555 -0.068251 0.025143 - -0.21663 -0.068687 0.017661 - -0.286143 -0.069469 0.014529 - -0.365661 -0.069469 0.012267 - -0.409683 -0.069209 0.012441 - -0.485634 -0.069643 0.010962 - -0.5568 -0.064859 0.010005 - -0.638232 -0.056942 0.007395 - -0.706005 -0.046937 0.008178 - -0.757944 -0.038672 0.009396 - -0.812058 -0.028144 0.008439 - -0.838506 -0.021706 0.007134 -e -v - 0.058638 -0.046893 0.041934 - 0.023229 -0.055376 0.037323 - -0.022359 -0.065206 0.027318 - -0.07395 -0.067643 0.026361 - -0.153555 -0.06773 0.018879 - -0.21663 -0.068425 0.013224 - -0.286143 -0.068251 0.010962 - -0.365661 -0.069122 0.009222 - -0.409683 -0.068164 0.009483 - -0.485634 -0.068948 0.008265 - -0.5568 -0.06425 0.007569 - -0.638232 -0.056419 0.005568 - -0.706005 -0.046241 0.006177 - -0.757944 -0.038846 0.007047 - -0.812058 -0.028144 0.006351 - -0.838506 -0.021706 0.005394 -e -v - 0.058638 -0.060726 0.031581 - 0.023229 -0.065293 0.027057 - -0.022359 -0.06973 0.018879 - -0.07395 -0.069556 0.017661 - -0.153555 -0.067556 0.012528 - -0.21663 -0.068164 0.008787 - -0.286143 -0.06773 0.007308 - -0.365661 -0.068948 0.00609 - -0.409683 -0.06773 0.006351 - -0.485634 -0.068774 0.005481 - -0.5568 -0.064075 0.005046 - -0.638232 -0.056072 0.003741 - -0.706005 -0.045805 0.004176 - -0.757944 -0.038932 0.004698 - -0.812058 -0.028144 0.004176 - -0.838506 -0.021706 0.003567 -e -v - 0.058638 -0.069774 0.016965 - 0.023229 -0.071296 0.014094 - -0.022359 -0.071993 0.00957 - -0.07395 -0.07034 0.008787 - -0.153555 -0.067643 0.006264 - -0.21663 -0.068077 0.00435 - -0.286143 -0.068077 0.003567 - -0.365661 -0.068774 0.003045 - -0.409683 -0.067556 0.003132 - -0.485634 -0.068512 0.002697 - -0.5568 -0.063988 0.002523 - -0.638232 -0.05581 0.001827 - -0.706005 -0.045545 0.002088 - -0.757944 -0.039019 0.002349 - -0.812058 -0.028144 0.002088 - -0.838506 -0.021706 0.00174 -e -v - 0.058638 -0.072819 0.0 - 0.023229 -0.073211 0.0 - -0.022359 -0.071819 0.0 - -0.07395 -0.069991 0.0 - -0.153555 -0.068164 0.0 - -0.21663 -0.068164 0.0 - -0.286143 -0.069122 0.0 - -0.365661 -0.068599 0.0 - -0.409683 -0.06773 0.0 - -0.485634 -0.068164 0.0 - -0.5568 -0.063988 0.0 - -0.638232 -0.055723 0.0 - -0.706005 -0.045632 0.0 - -0.757944 -0.039193 0.0 - -0.812058 -0.028144 0.0 - -0.838506 -0.021706 0.0 -e -v - 0.135894 -0.001566 0.050025 - 0.135894 -0.001958 0.061944 - 0.135894 -0.001522 0.050025 -e -v - 0.058638 -0.03045 0.047241 - 0.058638 0.016748 0.050025 - 0.058638 0.017269 0.060639 - 0.058638 -0.030233 0.061074 - 0.058638 -0.030406 0.047241 -e -v - 0.135894 -0.001566 0.050025 - 0.058638 -0.030406 0.047241 -e -v - 0.135894 -0.001566 0.050025 - 0.058638 0.016748 0.050025 -e -v - 0.135894 -0.002001 0.061944 - 0.058638 0.017269 0.060639 -e -v - 0.135894 -0.002001 0.061944 - 0.058638 -0.030233 0.061074 -e -v - 0.135894 -0.001566 0.050025 - 0.058638 -0.030406 0.047241 -e -v - 0.230985 0.027492 0.065163 - 0.230985 0.027536 0.065076 - 0.230985 0.027536 0.064989 - 0.230985 0.027536 0.064902 - 0.230985 0.027536 0.064815 - 0.230985 0.027536 0.064728 - 0.230985 0.027536 0.064641 - 0.230985 0.027796 0.126933 - 0.230985 0.027536 0.065163 -e -v - 0.217674 0.020358 0.065946 - 0.217674 0.021185 0.065685 - 0.217674 0.022055 0.065337 - 0.217674 0.022838 0.065076 - 0.217674 0.023707 0.064815 - 0.217674 0.02449 0.064554 - 0.217674 0.025361 0.064293 - 0.217674 0.026144 0.064032 - 0.217674 0.027013 0.063684 - 0.217674 0.027883 0.063423 - 0.217674 0.028667 0.063162 - 0.217674 0.028667 0.128238 - 0.217674 0.027883 0.12789 - 0.217674 0.027013 0.127629 - 0.217674 0.026144 0.127368 - 0.217674 0.025361 0.127107 - 0.217674 0.02449 0.126846 - 0.217674 0.023707 0.126585 - 0.217674 0.022838 0.126237 - 0.217674 0.022055 0.125976 - 0.217674 0.021185 0.125715 - 0.217674 0.020402 0.125454 - 0.217674 0.025882 0.125019 - 0.217674 0.025448 0.065946 - 0.217674 0.020402 0.065946 -e -v - 0.164691 -0.006612 0.06525 - 0.164691 -0.003263 0.063336 - 0.164691 0.000304 0.06177 - 0.164691 0.004132 0.060987 - 0.164691 0.007961 0.060639 - 0.164691 0.011875 0.060639 - 0.164691 0.015703 0.060552 - 0.164691 0.019619 0.060465 - 0.164691 0.023447 0.060552 - 0.164691 0.027362 0.060726 - 0.164691 0.031189 0.060987 - 0.164691 0.031973 0.131544 - 0.164691 0.027971 0.131805 - 0.164691 0.024055 0.131805 - 0.164691 0.020054 0.131631 - 0.164691 0.016051 0.131283 - 0.164691 0.012137 0.130761 - 0.164691 0.008221 0.129978 - 0.164691 0.004393 0.129021 - 0.164691 0.000565 0.127803 - 0.164691 -0.003176 0.126411 - 0.164691 -0.00683 0.124758 - 0.164691 0.018575 0.124671 - 0.164691 0.018313 0.065163 - 0.164691 -0.006568 0.06525 -e -v - 0.111621 -0.033669 0.065946 - 0.111621 -0.027883 0.062205 - 0.111621 -0.021185 0.060987 - 0.111621 -0.014311 0.0609 - 0.111621 -0.007438 0.060465 - 0.111621 -0.000565 0.060117 - 0.111621 0.006307 0.06003 - 0.111621 0.01318 0.06003 - 0.111621 0.020054 0.060291 - 0.111621 0.026927 0.060726 - 0.111621 0.033712 0.061335 - 0.111621 0.033712 0.132327 - 0.111621 0.02684 0.132327 - 0.111621 0.019879 0.13224 - 0.111621 0.01292 0.132153 - 0.111621 0.00596 0.132066 - 0.111621 -0.000914 0.131979 - 0.111621 -0.007873 0.132066 - 0.111621 -0.014833 0.132588 - 0.111621 -0.021706 0.131892 - 0.111621 -0.027971 0.129021 - 0.111621 -0.033625 0.125019 - 0.111621 0.018052 0.125019 - 0.111621 0.018488 0.065946 - 0.111621 -0.033625 0.065946 -e -v - 0.058638 -0.060204 0.065511 - 0.058638 -0.052157 0.061161 - 0.058638 -0.042238 0.0609 - 0.058638 -0.03232 0.060639 - 0.058638 -0.022403 0.060552 - 0.058638 -0.012485 0.060465 - 0.058638 -0.002567 0.060291 - 0.058638 0.007351 0.060291 - 0.058638 0.017269 0.060291 - 0.058638 0.027188 0.060291 - 0.058638 0.037106 0.060465 - 0.058638 0.037367 0.130065 - 0.058638 0.027448 0.130935 - 0.058638 0.017531 0.131631 - 0.058638 0.007612 0.132066 - 0.058638 -0.002305 0.132327 - 0.058638 -0.012223 0.132414 - 0.058638 -0.022141 0.132327 - 0.058638 -0.03206 0.131979 - 0.058638 -0.041977 0.131457 - 0.058638 -0.051895 0.131457 - 0.058638 -0.059117 0.125541 - 0.058638 0.017879 0.125193 - 0.058638 0.016834 0.06525 - 0.058638 -0.06016 0.065511 -e -v - 0.230985 0.027492 0.065163 - 0.217674 0.020402 0.065946 - 0.164691 -0.006568 0.06525 - 0.111621 -0.033625 0.065946 - 0.058638 -0.06016 0.065511 -e -v - 0.230985 0.027492 0.065076 - 0.217674 0.021185 0.065685 - 0.164691 -0.003263 0.063336 - 0.111621 -0.027883 0.062205 - 0.058638 -0.052157 0.061161 -e -v - 0.230985 0.027492 0.065076 - 0.217674 0.022055 0.065337 - 0.164691 0.000304 0.06177 - 0.111621 -0.021185 0.060987 - 0.058638 -0.042238 0.0609 -e -v - 0.230985 0.027492 0.064989 - 0.217674 0.022838 0.065076 - 0.164691 0.004132 0.060987 - 0.111621 -0.014311 0.0609 - 0.058638 -0.03232 0.060639 -e -v - 0.230985 0.027492 0.064989 - 0.217674 0.023707 0.064815 - 0.164691 0.007961 0.060639 - 0.111621 -0.007438 0.060465 - 0.058638 -0.022403 0.060552 -e -v - 0.230985 0.027492 0.064902 - 0.217674 0.02449 0.064554 - 0.164691 0.011875 0.060639 - 0.111621 -0.000565 0.060117 - 0.058638 -0.012485 0.060465 -e -v - 0.230985 0.027492 0.064902 - 0.217674 0.025361 0.064293 - 0.164691 0.015703 0.060552 - 0.111621 0.006307 0.06003 - 0.058638 -0.002567 0.060291 -e -v - 0.230985 0.027492 0.064815 - 0.217674 0.026144 0.064032 - 0.164691 0.019619 0.060465 - 0.111621 0.01318 0.06003 - 0.058638 0.007351 0.060291 -e -v - 0.230985 0.027492 0.064728 - 0.217674 0.027013 0.063684 - 0.164691 0.023447 0.060552 - 0.111621 0.020054 0.060291 - 0.058638 0.017269 0.060291 -e -v - 0.230985 0.027492 0.064728 - 0.217674 0.027883 0.063423 - 0.164691 0.027362 0.060726 - 0.111621 0.026927 0.060726 - 0.058638 0.027188 0.060291 -e -v - 0.230985 0.027492 0.064641 - 0.217674 0.028667 0.063162 - 0.164691 0.031189 0.060987 - 0.111621 0.033712 0.061335 - 0.058638 0.037106 0.060465 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.028667 0.128238 - 0.164691 0.031973 0.131544 - 0.111621 0.033712 0.132327 - 0.058638 0.037367 0.130065 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.027883 0.12789 - 0.164691 0.027971 0.131805 - 0.111621 0.02684 0.132327 - 0.058638 0.027448 0.130935 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.027013 0.127629 - 0.164691 0.024055 0.131805 - 0.111621 0.019879 0.13224 - 0.058638 0.017531 0.131631 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.026144 0.127368 - 0.164691 0.020054 0.131631 - 0.111621 0.01292 0.132153 - 0.058638 0.007612 0.132066 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.025361 0.127107 - 0.164691 0.016051 0.131283 - 0.111621 0.00596 0.132066 - 0.058638 -0.002305 0.132327 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.02449 0.126846 - 0.164691 0.012137 0.130761 - 0.111621 -0.000914 0.131979 - 0.058638 -0.012223 0.132414 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.023707 0.126585 - 0.164691 0.008221 0.129978 - 0.111621 -0.007873 0.132066 - 0.058638 -0.022141 0.132327 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.022838 0.126237 - 0.164691 0.004393 0.129021 - 0.111621 -0.014833 0.132588 - 0.058638 -0.03206 0.131979 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.022055 0.125976 - 0.164691 0.000565 0.127803 - 0.111621 -0.021706 0.131892 - 0.058638 -0.041977 0.131457 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.021185 0.125715 - 0.164691 -0.003176 0.126411 - 0.111621 -0.027971 0.129021 - 0.058638 -0.051895 0.131457 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.020402 0.125454 - 0.164691 -0.00683 0.124758 - 0.111621 -0.033625 0.125019 - 0.058638 -0.059117 0.125541 -e -v - 0.230985 0.027753 0.126933 - 0.217674 0.025882 0.125019 - 0.164691 0.018575 0.124671 - 0.111621 0.018052 0.125019 - 0.058638 0.017879 0.125193 -e -v - 0.230985 0.027492 0.065163 - 0.217674 0.025448 0.065946 - 0.164691 0.018313 0.065163 - 0.111621 0.018488 0.065946 - 0.058638 0.016834 0.06525 -e -v - 0.230985 0.027492 0.065163 - 0.217674 0.020402 0.065946 - 0.164691 -0.006568 0.06525 - 0.111621 -0.033625 0.065946 - 0.058638 -0.06016 0.065511 -e -v - 0.111621 0.018444 0.13137 -e -v - 0.058638 0.004785 0.131457 - 0.058638 0.007351 0.13137 - 0.058638 0.009787 0.13137 - 0.058638 0.012223 0.13137 - 0.058638 0.014659 0.13137 - 0.058638 0.017096 0.13137 - 0.058638 0.019531 0.131283 - 0.058638 0.022055 0.131283 - 0.058638 0.02449 0.131283 - 0.058638 0.026927 0.131283 - 0.058638 0.026492 0.132762 - 0.058638 0.026144 0.134241 - 0.058638 0.025709 0.13572 - 0.058638 0.025361 0.137199 - 0.058638 0.0251 0.138765 - 0.058638 0.024751 0.140244 - 0.058638 0.024403 0.141723 - 0.058638 0.023795 0.143202 - 0.058638 0.023186 0.144594 - 0.058638 0.022403 0.145899 - 0.058638 0.021533 0.147204 - 0.058638 0.020314 0.148161 - 0.058638 0.01901 0.148944 - 0.058638 0.017531 0.149466 - 0.058638 0.016051 0.149727 - 0.058638 0.014311 0.149814 - 0.058638 0.012659 0.149553 - 0.058638 0.011266 0.148596 - 0.058638 0.010223 0.147291 - 0.058638 0.009266 0.145899 - 0.058638 0.008396 0.14442 - 0.058638 0.007699 0.142941 - 0.058638 0.007091 0.141288 - 0.058638 0.006568 0.139722 - 0.058638 0.006134 0.138069 - 0.058638 0.005699 0.136416 - 0.058638 0.00535 0.134763 - 0.058638 0.005089 0.13311 - 0.058638 0.004829 0.131457 -e -v - 0.023229 -0.001566 0.131457 - 0.023229 0.002132 0.131457 - 0.023229 0.005786 0.131457 - 0.023229 0.009352 0.131544 - 0.023229 0.013006 0.131544 - 0.023229 0.016661 0.131544 - 0.023229 0.020227 0.131544 - 0.023229 0.023882 0.131631 - 0.023229 0.027448 0.131631 - 0.023229 0.031103 0.131631 - 0.023229 0.030841 0.133806 - 0.023229 0.030493 0.135981 - 0.023229 0.030058 0.138156 - 0.023229 0.029624 0.140244 - 0.023229 0.029102 0.142332 - 0.023229 0.028579 0.144507 - 0.023229 0.027883 0.146508 - 0.023229 0.026927 0.148509 - 0.023229 0.025969 0.15051 - 0.023229 0.024838 0.152337 - 0.023229 0.023534 0.154077 - 0.023229 0.021881 0.155469 - 0.023229 0.019879 0.156513 - 0.023229 0.017879 0.157122 - 0.023229 0.015703 0.15747 - 0.023229 0.013354 0.156948 - 0.023229 0.01118 0.155991 - 0.023229 0.009266 0.154599 - 0.023229 0.007612 0.153033 - 0.023229 0.006047 0.151206 - 0.023229 0.004655 0.149205 - 0.023229 0.00361 0.147117 - 0.023229 0.002654 0.144942 - 0.023229 0.001783 0.142767 - 0.023229 0.000914 0.140592 - 0.023229 0.000131 0.13833 - 0.023229 -0.000479 0.136068 - 0.023229 -0.001001 0.133719 - 0.023229 -0.001522 0.131457 -e -v - -0.022359 -0.009309 0.12963 - -0.022359 -0.004306 0.12963 - -0.022359 0.000653 0.12963 - -0.022359 0.005524 0.129717 - -0.022359 0.010483 0.129717 - -0.022359 0.015442 0.129717 - -0.022359 0.020402 0.129717 - -0.022359 0.025361 0.129717 - -0.022359 0.03032 0.129717 - -0.022359 0.035278 0.129804 - -0.022359 0.035105 0.132675 - -0.022359 0.034757 0.135546 - -0.022359 0.034322 0.13833 - -0.022359 0.033712 0.141201 - -0.022359 0.033016 0.143985 - -0.022359 0.032233 0.146769 - -0.022359 0.031189 0.149466 - -0.022359 0.029885 0.152076 - -0.022359 0.028406 0.154512 - -0.022359 0.026752 0.156948 - -0.022359 0.024838 0.159123 - -0.022359 0.022576 0.160863 - -0.022359 0.019966 0.162168 - -0.022359 0.017269 0.163038 - -0.022359 0.014399 0.163473 - -0.022359 0.011266 0.163038 - -0.022359 0.008309 0.162081 - -0.022359 0.005612 0.160428 - -0.022359 0.003436 0.158166 - -0.022359 0.001522 0.155643 - -0.022359 -0.000304 0.15312 - -0.022359 -0.001871 0.150336 - -0.022359 -0.003263 0.147552 - -0.022359 -0.004568 0.144681 - -0.022359 -0.005699 0.141723 - -0.022359 -0.00683 0.138765 - -0.022359 -0.007786 0.13572 - -0.022359 -0.00857 0.132675 - -0.022359 -0.009266 0.12963 -e -v - -0.07395 -0.015399 0.127977 - -0.07395 -0.00944 0.12789 - -0.07395 -0.003523 0.12789 - -0.07395 0.002392 0.127803 - -0.07395 0.008309 0.127716 - -0.07395 0.014225 0.127716 - -0.07395 0.020141 0.127629 - -0.07395 0.026057 0.127629 - -0.07395 0.031973 0.127542 - -0.07395 0.037889 0.127455 - -0.07395 0.037714 0.130935 - -0.07395 0.037367 0.134415 - -0.07395 0.036757 0.137808 - -0.07395 0.036061 0.141201 - -0.07395 0.035191 0.144594 - -0.07395 0.034148 0.1479 - -0.07395 0.032842 0.151119 - -0.07395 0.03145 0.154251 - -0.07395 0.029797 0.157383 - -0.07395 0.027883 0.160254 - -0.07395 0.025534 0.162777 - -0.07395 0.022924 0.165126 - -0.07395 0.019966 0.166953 - -0.07395 0.016748 0.168171 - -0.07395 0.013354 0.16878 - -0.07395 0.009701 0.168258 - -0.07395 0.006655 0.166257 - -0.07395 0.004132 0.16356 - -0.07395 0.001696 0.160776 - -0.07395 -0.000304 0.157644 - -0.07395 -0.002132 0.154425 - -0.07395 -0.003958 0.151206 - -0.07395 -0.005786 0.147987 - -0.07395 -0.007438 0.144681 - -0.07395 -0.009092 0.141375 - -0.07395 -0.010744 0.138069 - -0.07395 -0.012311 0.134676 - -0.07395 -0.013876 0.13137 - -0.07395 -0.015356 0.127977 -e -v - -0.153555 -0.026448 0.124323 - -0.153555 -0.019531 0.124323 - -0.153555 -0.012571 0.12441 - -0.153555 -0.005699 0.124584 - -0.153555 0.001174 0.124758 - -0.153555 0.008047 0.124758 - -0.153555 0.014921 0.124758 - -0.153555 0.021881 0.124671 - -0.153555 0.028754 0.12441 - -0.153555 0.035627 0.124149 - -0.153555 0.035627 0.127803 - -0.153555 0.035365 0.131544 - -0.153555 0.034931 0.135198 - -0.153555 0.034235 0.138765 - -0.153555 0.033365 0.142332 - -0.153555 0.032407 0.145899 - -0.153555 0.031624 0.149466 - -0.153555 0.030668 0.153033 - -0.153555 0.029537 0.1566 - -0.153555 0.028058 0.159993 - -0.153555 0.026492 0.163299 - -0.153555 0.024751 0.166518 - -0.153555 0.022924 0.169737 - -0.153555 0.021097 0.172869 - -0.153555 0.020227 0.178002 - -0.153555 0.000392 0.178524 - -0.153555 -0.000479 0.172956 - -0.153555 -0.002305 0.169128 - -0.153555 -0.004132 0.1653 - -0.153555 -0.006134 0.161559 - -0.153555 -0.008396 0.157992 - -0.153555 -0.010571 0.154338 - -0.153555 -0.012745 0.150771 - -0.153555 -0.014833 0.14703 - -0.153555 -0.016921 0.143289 - -0.153555 -0.018835 0.139548 - -0.153555 -0.020837 0.135807 - -0.153555 -0.022751 0.131979 - -0.153555 -0.024578 0.128238 - -0.153555 -0.026405 0.124323 -e -v - -0.21663 -0.029058 0.122322 - -0.21663 -0.021881 0.121539 - -0.21663 -0.014747 0.121278 - -0.21663 -0.007612 0.121539 - -0.21663 -0.000479 0.121626 - -0.21663 0.006655 0.1218 - -0.21663 0.01379 0.1218 - -0.21663 0.02101 0.1218 - -0.21663 0.028144 0.121713 - -0.21663 0.035278 0.121539 - -0.21663 0.034931 0.125367 - -0.21663 0.034408 0.129108 - -0.21663 0.033712 0.132849 - -0.21663 0.032842 0.136503 - -0.21663 0.031886 0.140157 - -0.21663 0.031189 0.143898 - -0.21663 0.030841 0.147639 - -0.21663 0.030406 0.151467 - -0.21663 0.029797 0.155208 - -0.21663 0.028754 0.158775 - -0.21663 0.027448 0.162429 - -0.21663 0.026665 0.166083 - -0.21663 0.026057 0.169824 - -0.21663 0.025796 0.173652 - -0.21663 0.025796 0.174957 - -0.21663 -0.000827 0.17574 - -0.21663 -0.000827 0.172521 - -0.21663 -0.003089 0.168693 - -0.21663 -0.005263 0.164865 - -0.21663 -0.007438 0.161037 - -0.21663 -0.009613 0.157122 - -0.21663 -0.011702 0.153207 - -0.21663 -0.01379 0.149379 - -0.21663 -0.015965 0.145464 - -0.21663 -0.018052 0.141549 - -0.21663 -0.020227 0.137721 - -0.21663 -0.022403 0.133893 - -0.21663 -0.024665 0.130065 - -0.21663 -0.02684 0.12615 - -0.21663 -0.029014 0.122322 -e -v - -0.286143 -0.031929 0.119973 - -0.286143 -0.024665 0.119799 - -0.286143 -0.017357 0.119799 - -0.286143 -0.010135 0.119886 - -0.286143 -0.002914 0.119886 - -0.286143 0.004393 0.119799 - -0.286143 0.011614 0.119625 - -0.286143 0.018835 0.119364 - -0.286143 0.026057 0.119103 - -0.286143 0.033365 0.118755 - -0.286143 0.03319 0.122583 - -0.286143 0.032842 0.126411 - -0.286143 0.032407 0.130239 - -0.286143 0.031799 0.134067 - -0.286143 0.031277 0.137895 - -0.286143 0.030668 0.141723 - -0.286143 0.030145 0.145551 - -0.286143 0.02971 0.149379 - -0.286143 0.02945 0.153294 - -0.286143 0.029362 0.157122 - -0.286143 0.029275 0.161037 - -0.286143 0.029102 0.164865 - -0.286143 0.028754 0.168693 - -0.286143 0.028406 0.172608 - -0.286143 0.028406 0.175305 - -0.286143 -0.001001 0.175914 - -0.286143 -0.002479 0.170433 - -0.286143 -0.005176 0.166518 - -0.286143 -0.007351 0.162603 - -0.286143 -0.009613 0.158775 - -0.286143 -0.011789 0.15486 - -0.286143 -0.014051 0.151032 - -0.286143 -0.016313 0.147117 - -0.286143 -0.018488 0.143202 - -0.286143 -0.02075 0.139374 - -0.286143 -0.023012 0.135459 - -0.286143 -0.025186 0.131544 - -0.286143 -0.027448 0.127716 - -0.286143 -0.029624 0.123801 - -0.286143 -0.031886 0.119973 -e -v - -0.365661 -0.034713 0.118755 - -0.365661 -0.027796 0.118146 - -0.365661 -0.020924 0.118059 - -0.365661 -0.014051 0.118059 - -0.365661 -0.007091 0.11832 - -0.365661 -0.000217 0.11832 - -0.365661 0.006655 0.117972 - -0.365661 0.013528 0.117711 - -0.365661 0.020402 0.117624 - -0.365661 0.027362 0.117624 - -0.365661 0.02771 0.122061 - -0.365661 0.02771 0.12615 - -0.365661 0.027623 0.130152 - -0.365661 0.027536 0.134241 - -0.365661 0.027362 0.138243 - -0.365661 0.027275 0.142332 - -0.365661 0.027188 0.146334 - -0.365661 0.027013 0.150423 - -0.365661 0.026927 0.154425 - -0.365661 0.026752 0.158427 - -0.365661 0.026492 0.162516 - -0.365661 0.026231 0.166518 - -0.365661 0.025969 0.17052 - -0.365661 0.025709 0.174609 - -0.365661 0.025709 0.176436 - -0.365661 -4.4e-05 0.176697 - -0.365661 -0.001001 0.17487 - -0.365661 -0.00361 0.17052 - -0.365661 -0.006134 0.166257 - -0.365661 -0.008744 0.161907 - -0.365661 -0.011354 0.157644 - -0.365661 -0.013964 0.153294 - -0.365661 -0.016573 0.148944 - -0.365661 -0.019096 0.144681 - -0.365661 -0.021706 0.140331 - -0.365661 -0.024317 0.135981 - -0.365661 -0.026927 0.131718 - -0.365661 -0.02945 0.127368 - -0.365661 -0.03206 0.123105 - -0.365661 -0.034669 0.118755 -e -v - -0.409683 -0.037236 0.118233 - -0.409683 -0.030406 0.118146 - -0.409683 -0.02362 0.118059 - -0.409683 -0.016834 0.117972 - -0.409683 -0.010049 0.117885 - -0.409683 -0.003263 0.117798 - -0.409683 0.003523 0.117711 - -0.409683 0.010309 0.117624 - -0.409683 0.017096 0.117537 - -0.409683 0.023882 0.11745 - -0.409683 0.02423 0.121626 - -0.409683 0.024055 0.125802 - -0.409683 0.023969 0.130065 - -0.409683 0.023795 0.134241 - -0.409683 0.02362 0.138417 - -0.409683 0.023534 0.14268 - -0.409683 0.023359 0.146856 - -0.409683 0.023272 0.151032 - -0.409683 0.023099 0.155208 - -0.409683 0.022924 0.159471 - -0.409683 0.022838 0.163647 - -0.409683 0.022664 0.167823 - -0.409683 0.022489 0.171999 - -0.409683 0.022403 0.176262 - -0.409683 0.022838 0.178089 - -0.409683 0.000739 0.177828 - -0.409683 -0.000131 0.176436 - -0.409683 -0.003001 0.171999 - -0.409683 -0.005873 0.167475 - -0.409683 -0.008656 0.163038 - -0.409683 -0.011528 0.158514 - -0.409683 -0.014399 0.154077 - -0.409683 -0.017269 0.149553 - -0.409683 -0.020054 0.145116 - -0.409683 -0.022924 0.140592 - -0.409683 -0.025796 0.136155 - -0.409683 -0.028667 0.131631 - -0.409683 -0.031537 0.127194 - -0.409683 -0.034322 0.12267 - -0.409683 -0.037193 0.118233 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.004829 0.131457 - 0.023229 -0.001522 0.131457 - -0.022359 -0.009266 0.12963 - -0.07395 -0.015356 0.127977 - -0.153555 -0.026405 0.124323 - -0.21663 -0.029014 0.122322 - -0.286143 -0.031886 0.119973 - -0.365661 -0.034669 0.118755 - -0.409683 -0.037193 0.118233 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.007351 0.13137 - 0.023229 0.002132 0.131457 - -0.022359 -0.004306 0.12963 - -0.07395 -0.00944 0.12789 - -0.153555 -0.019531 0.124323 - -0.21663 -0.021881 0.121539 - -0.286143 -0.024665 0.119799 - -0.365661 -0.027796 0.118146 - -0.409683 -0.030406 0.118146 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.009787 0.13137 - 0.023229 0.005786 0.131457 - -0.022359 0.000653 0.12963 - -0.07395 -0.003523 0.12789 - -0.153555 -0.012571 0.12441 - -0.21663 -0.014747 0.121278 - -0.286143 -0.017357 0.119799 - -0.365661 -0.020924 0.118059 - -0.409683 -0.02362 0.118059 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.012223 0.13137 - 0.023229 0.009352 0.131544 - -0.022359 0.005524 0.129717 - -0.07395 0.002392 0.127803 - -0.153555 -0.005699 0.124584 - -0.21663 -0.007612 0.121539 - -0.286143 -0.010135 0.119886 - -0.365661 -0.014051 0.118059 - -0.409683 -0.016834 0.117972 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.014659 0.13137 - 0.023229 0.013006 0.131544 - -0.022359 0.010483 0.129717 - -0.07395 0.008309 0.127716 - -0.153555 0.001174 0.124758 - -0.21663 -0.000479 0.121626 - -0.286143 -0.002914 0.119886 - -0.365661 -0.007091 0.11832 - -0.409683 -0.010049 0.117885 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.017096 0.13137 - 0.023229 0.016661 0.131544 - -0.022359 0.015442 0.129717 - -0.07395 0.014225 0.127716 - -0.153555 0.008047 0.124758 - -0.21663 0.006655 0.1218 - -0.286143 0.004393 0.119799 - -0.365661 -0.000217 0.11832 - -0.409683 -0.003263 0.117798 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.019531 0.131283 - 0.023229 0.020227 0.131544 - -0.022359 0.020402 0.129717 - -0.07395 0.020141 0.127629 - -0.153555 0.014921 0.124758 - -0.21663 0.01379 0.1218 - -0.286143 0.011614 0.119625 - -0.365661 0.006655 0.117972 - -0.409683 0.003523 0.117711 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.022055 0.131283 - 0.023229 0.023882 0.131631 - -0.022359 0.025361 0.129717 - -0.07395 0.026057 0.127629 - -0.153555 0.021881 0.124671 - -0.21663 0.02101 0.1218 - -0.286143 0.018835 0.119364 - -0.365661 0.013528 0.117711 - -0.409683 0.010309 0.117624 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.02449 0.131283 - 0.023229 0.027448 0.131631 - -0.022359 0.03032 0.129717 - -0.07395 0.031973 0.127542 - -0.153555 0.028754 0.12441 - -0.21663 0.028144 0.121713 - -0.286143 0.026057 0.119103 - -0.365661 0.020402 0.117624 - -0.409683 0.017096 0.117537 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.026927 0.131283 - 0.023229 0.031103 0.131631 - -0.022359 0.035278 0.129804 - -0.07395 0.037889 0.127455 - -0.153555 0.035627 0.124149 - -0.21663 0.035278 0.121539 - -0.286143 0.033365 0.118755 - -0.365661 0.027362 0.117624 - -0.409683 0.023882 0.11745 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.026492 0.132762 - 0.023229 0.030841 0.133806 - -0.022359 0.035105 0.132675 - -0.07395 0.037714 0.130935 - -0.153555 0.035627 0.127803 - -0.21663 0.034931 0.125367 - -0.286143 0.03319 0.122583 - -0.365661 0.02771 0.122061 - -0.409683 0.02423 0.121626 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.026144 0.134241 - 0.023229 0.030493 0.135981 - -0.022359 0.034757 0.135546 - -0.07395 0.037367 0.134415 - -0.153555 0.035365 0.131544 - -0.21663 0.034408 0.129108 - -0.286143 0.032842 0.126411 - -0.365661 0.02771 0.12615 - -0.409683 0.024055 0.125802 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.025709 0.13572 - 0.023229 0.030058 0.138156 - -0.022359 0.034322 0.13833 - -0.07395 0.036757 0.137808 - -0.153555 0.034931 0.135198 - -0.21663 0.033712 0.132849 - -0.286143 0.032407 0.130239 - -0.365661 0.027623 0.130152 - -0.409683 0.023969 0.130065 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.025361 0.137199 - 0.023229 0.029624 0.140244 - -0.022359 0.033712 0.141201 - -0.07395 0.036061 0.141201 - -0.153555 0.034235 0.138765 - -0.21663 0.032842 0.136503 - -0.286143 0.031799 0.134067 - -0.365661 0.027536 0.134241 - -0.409683 0.023795 0.134241 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.0251 0.138765 - 0.023229 0.029102 0.142332 - -0.022359 0.033016 0.143985 - -0.07395 0.035191 0.144594 - -0.153555 0.033365 0.142332 - -0.21663 0.031886 0.140157 - -0.286143 0.031277 0.137895 - -0.365661 0.027362 0.138243 - -0.409683 0.02362 0.138417 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.024751 0.140244 - 0.023229 0.028579 0.144507 - -0.022359 0.032233 0.146769 - -0.07395 0.034148 0.1479 - -0.153555 0.032407 0.145899 - -0.21663 0.031189 0.143898 - -0.286143 0.030668 0.141723 - -0.365661 0.027275 0.142332 - -0.409683 0.023534 0.14268 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.024403 0.141723 - 0.023229 0.027883 0.146508 - -0.022359 0.031189 0.149466 - -0.07395 0.032842 0.151119 - -0.153555 0.031624 0.149466 - -0.21663 0.030841 0.147639 - -0.286143 0.030145 0.145551 - -0.365661 0.027188 0.146334 - -0.409683 0.023359 0.146856 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.023795 0.143202 - 0.023229 0.026927 0.148509 - -0.022359 0.029885 0.152076 - -0.07395 0.03145 0.154251 - -0.153555 0.030668 0.153033 - -0.21663 0.030406 0.151467 - -0.286143 0.02971 0.149379 - -0.365661 0.027013 0.150423 - -0.409683 0.023272 0.151032 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.023186 0.144594 - 0.023229 0.025969 0.15051 - -0.022359 0.028406 0.154512 - -0.07395 0.029797 0.157383 - -0.153555 0.029537 0.1566 - -0.21663 0.029797 0.155208 - -0.286143 0.02945 0.153294 - -0.365661 0.026927 0.154425 - -0.409683 0.023099 0.155208 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.022403 0.145899 - 0.023229 0.024838 0.152337 - -0.022359 0.026752 0.156948 - -0.07395 0.027883 0.160254 - -0.153555 0.028058 0.159993 - -0.21663 0.028754 0.158775 - -0.286143 0.029362 0.157122 - -0.365661 0.026752 0.158427 - -0.409683 0.022924 0.159471 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.021533 0.147204 - 0.023229 0.023534 0.154077 - -0.022359 0.024838 0.159123 - -0.07395 0.025534 0.162777 - -0.153555 0.026492 0.163299 - -0.21663 0.027448 0.162429 - -0.286143 0.029275 0.161037 - -0.365661 0.026492 0.162516 - -0.409683 0.022838 0.163647 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.020314 0.148161 - 0.023229 0.021881 0.155469 - -0.022359 0.022576 0.160863 - -0.07395 0.022924 0.165126 - -0.153555 0.024751 0.166518 - -0.21663 0.026665 0.166083 - -0.286143 0.029102 0.164865 - -0.365661 0.026231 0.166518 - -0.409683 0.022664 0.167823 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.01901 0.148944 - 0.023229 0.019879 0.156513 - -0.022359 0.019966 0.162168 - -0.07395 0.019966 0.166953 - -0.153555 0.022924 0.169737 - -0.21663 0.026057 0.169824 - -0.286143 0.028754 0.168693 - -0.365661 0.025969 0.17052 - -0.409683 0.022489 0.171999 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.017531 0.149466 - 0.023229 0.017879 0.157122 - -0.022359 0.017269 0.163038 - -0.07395 0.016748 0.168171 - -0.153555 0.021097 0.172869 - -0.21663 0.025796 0.173652 - -0.286143 0.028406 0.172608 - -0.365661 0.025709 0.174609 - -0.409683 0.022403 0.176262 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.016051 0.149727 - 0.023229 0.015703 0.15747 - -0.022359 0.014399 0.163473 - -0.07395 0.013354 0.16878 - -0.153555 0.020227 0.178002 - -0.21663 0.025796 0.174957 - -0.286143 0.028406 0.175305 - -0.365661 0.025709 0.176436 - -0.409683 0.022838 0.178089 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.016051 0.149727 - 0.023229 0.015703 0.15747 - -0.022359 0.014399 0.163473 - -0.07395 0.013354 0.16878 - -0.153555 0.000392 0.178524 - -0.21663 -0.000827 0.17574 - -0.286143 -0.001001 0.175914 - -0.365661 -4.4e-05 0.176697 - -0.409683 0.000739 0.177828 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.014311 0.149814 - 0.023229 0.013354 0.156948 - -0.022359 0.011266 0.163038 - -0.07395 0.009701 0.168258 - -0.153555 -0.000479 0.172956 - -0.21663 -0.000827 0.172521 - -0.286143 -0.002479 0.170433 - -0.365661 -0.001001 0.17487 - -0.409683 -0.000131 0.176436 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.012659 0.149553 - 0.023229 0.01118 0.155991 - -0.022359 0.008309 0.162081 - -0.07395 0.006655 0.166257 - -0.153555 -0.002305 0.169128 - -0.21663 -0.003089 0.168693 - -0.286143 -0.005176 0.166518 - -0.365661 -0.00361 0.17052 - -0.409683 -0.003001 0.171999 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.011266 0.148596 - 0.023229 0.009266 0.154599 - -0.022359 0.005612 0.160428 - -0.07395 0.004132 0.16356 - -0.153555 -0.004132 0.1653 - -0.21663 -0.005263 0.164865 - -0.286143 -0.007351 0.162603 - -0.365661 -0.006134 0.166257 - -0.409683 -0.005873 0.167475 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.010223 0.147291 - 0.023229 0.007612 0.153033 - -0.022359 0.003436 0.158166 - -0.07395 0.001696 0.160776 - -0.153555 -0.006134 0.161559 - -0.21663 -0.007438 0.161037 - -0.286143 -0.009613 0.158775 - -0.365661 -0.008744 0.161907 - -0.409683 -0.008656 0.163038 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.009266 0.145899 - 0.023229 0.006047 0.151206 - -0.022359 0.001522 0.155643 - -0.07395 -0.000304 0.157644 - -0.153555 -0.008396 0.157992 - -0.21663 -0.009613 0.157122 - -0.286143 -0.011789 0.15486 - -0.365661 -0.011354 0.157644 - -0.409683 -0.011528 0.158514 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.008396 0.14442 - 0.023229 0.004655 0.149205 - -0.022359 -0.000304 0.15312 - -0.07395 -0.002132 0.154425 - -0.153555 -0.010571 0.154338 - -0.21663 -0.011702 0.153207 - -0.286143 -0.014051 0.151032 - -0.365661 -0.013964 0.153294 - -0.409683 -0.014399 0.154077 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.007699 0.142941 - 0.023229 0.00361 0.147117 - -0.022359 -0.001871 0.150336 - -0.07395 -0.003958 0.151206 - -0.153555 -0.012745 0.150771 - -0.21663 -0.01379 0.149379 - -0.286143 -0.016313 0.147117 - -0.365661 -0.016573 0.148944 - -0.409683 -0.017269 0.149553 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.007091 0.141288 - 0.023229 0.002654 0.144942 - -0.022359 -0.003263 0.147552 - -0.07395 -0.005786 0.147987 - -0.153555 -0.014833 0.14703 - -0.21663 -0.015965 0.145464 - -0.286143 -0.018488 0.143202 - -0.365661 -0.019096 0.144681 - -0.409683 -0.020054 0.145116 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.006568 0.139722 - 0.023229 0.001783 0.142767 - -0.022359 -0.004568 0.144681 - -0.07395 -0.007438 0.144681 - -0.153555 -0.016921 0.143289 - -0.21663 -0.018052 0.141549 - -0.286143 -0.02075 0.139374 - -0.365661 -0.021706 0.140331 - -0.409683 -0.022924 0.140592 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.006134 0.138069 - 0.023229 0.000914 0.140592 - -0.022359 -0.005699 0.141723 - -0.07395 -0.009092 0.141375 - -0.153555 -0.018835 0.139548 - -0.21663 -0.020227 0.137721 - -0.286143 -0.023012 0.135459 - -0.365661 -0.024317 0.135981 - -0.409683 -0.025796 0.136155 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.005699 0.136416 - 0.023229 0.000131 0.13833 - -0.022359 -0.00683 0.138765 - -0.07395 -0.010744 0.138069 - -0.153555 -0.020837 0.135807 - -0.21663 -0.022403 0.133893 - -0.286143 -0.025186 0.131544 - -0.365661 -0.026927 0.131718 - -0.409683 -0.028667 0.131631 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.00535 0.134763 - 0.023229 -0.000479 0.136068 - -0.022359 -0.007786 0.13572 - -0.07395 -0.012311 0.134676 - -0.153555 -0.022751 0.131979 - -0.21663 -0.024665 0.130065 - -0.286143 -0.027448 0.127716 - -0.365661 -0.02945 0.127368 - -0.409683 -0.031537 0.127194 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.005089 0.13311 - 0.023229 -0.001001 0.133719 - -0.022359 -0.00857 0.132675 - -0.07395 -0.013876 0.13137 - -0.153555 -0.024578 0.128238 - -0.21663 -0.02684 0.12615 - -0.286143 -0.029624 0.123801 - -0.365661 -0.03206 0.123105 - -0.409683 -0.034322 0.12267 -e -v - 0.111621 0.018444 0.13137 - 0.058638 0.004829 0.131457 - 0.023229 -0.001522 0.131457 - -0.022359 -0.009266 0.12963 - -0.07395 -0.015356 0.127977 - -0.153555 -0.026405 0.124323 - -0.21663 -0.029014 0.122322 - -0.286143 -0.031886 0.119973 - -0.365661 -0.034669 0.118755 - -0.409683 -0.037193 0.118233 -e -v - -0.409683 -0.036888 0.118059 - -0.409683 -0.016138 0.117537 - -0.409683 0.004481 0.117015 - -0.409683 0.0251 0.116493 - -0.409683 0.024665 0.129717 - -0.409683 0.02423 0.142941 - -0.409683 0.023707 0.156165 - -0.409683 0.023882 0.179307 - -0.409683 0.002654 0.179481 - -0.409683 -0.010571 0.161298 - -0.409683 -0.012571 0.157992 - -0.409683 -0.014573 0.154686 - -0.409683 -0.016573 0.15138 - -0.409683 -0.018662 0.147987 - -0.409683 -0.020662 0.144681 - -0.409683 -0.022664 0.141375 - -0.409683 -0.024665 0.137982 - -0.409683 -0.026752 0.134676 - -0.409683 -0.028754 0.13137 - -0.409683 -0.030755 0.128064 - -0.409683 -0.032756 0.124671 - -0.409683 -0.034844 0.121365 - -0.409683 -0.036844 0.118059 -e -v - -0.485634 -0.038541 0.117189 - -0.485634 -0.019096 0.117102 - -0.485634 0.000304 0.117015 - -0.485634 0.019793 0.116841 - -0.485634 0.019531 0.13137 - -0.485634 0.019183 0.145812 - -0.485634 0.018923 0.160341 - -0.485634 0.018662 0.178785 - -0.485634 0.005699 0.179046 - -0.485634 -0.015878 0.167997 - -0.485634 -0.019531 0.165648 - -0.485634 -0.022576 0.162603 - -0.485634 -0.024143 0.158514 - -0.485634 -0.025534 0.154338 - -0.485634 -0.02684 0.150162 - -0.485634 -0.028144 0.145986 - -0.485634 -0.029537 0.141897 - -0.485634 -0.031016 0.137721 - -0.485634 -0.032407 0.133632 - -0.485634 -0.033886 0.129456 - -0.485634 -0.035365 0.125367 - -0.485634 -0.036931 0.121278 - -0.485634 -0.038498 0.117189 -e -v - -0.5568 -0.038976 0.117189 - -0.5568 -0.021097 0.118146 - -0.5568 -0.003176 0.119016 - -0.5568 0.014659 0.119973 - -0.5568 0.013964 0.132675 - -0.5568 0.013702 0.145464 - -0.5568 0.013528 0.15834 - -0.5568 0.013616 0.179133 - -0.5568 -0.025186 0.175653 - -0.5568 -0.029885 0.174609 - -0.5568 -0.032407 0.170433 - -0.5568 -0.03319 0.165648 - -0.5568 -0.033712 0.160776 - -0.5568 -0.034235 0.155991 - -0.5568 -0.034757 0.151119 - -0.5568 -0.035365 0.146247 - -0.5568 -0.035887 0.141375 - -0.5568 -0.036497 0.13659 - -0.5568 -0.037106 0.131718 - -0.5568 -0.037714 0.126846 - -0.5568 -0.038323 0.121974 - -0.5568 -0.038932 0.117189 -e -v - -0.638232 -0.038541 0.116232 - -0.638232 -0.023272 0.117624 - -0.638232 -0.008047 0.119016 - -0.638232 0.007178 0.120408 - -0.638232 0.00683 0.12789 - -0.638232 0.006568 0.135459 - -0.638232 0.006307 0.143028 - -0.638232 0.012571 0.15051 - -0.638232 0.012833 0.162081 - -0.638232 0.006394 0.162429 - -0.638232 0.007004 0.178176 - -0.638232 -0.035974 0.178263 - -0.638232 -0.037802 0.174261 - -0.638232 -0.037714 0.169389 - -0.638232 -0.037627 0.164604 - -0.638232 -0.037627 0.159732 - -0.638232 -0.037627 0.154947 - -0.638232 -0.037627 0.150075 - -0.638232 -0.037714 0.14529 - -0.638232 -0.037802 0.140418 - -0.638232 -0.037889 0.135546 - -0.638232 -0.037976 0.130761 - -0.638232 -0.038149 0.125889 - -0.638232 -0.038323 0.121104 - -0.638232 -0.038498 0.116232 -e -v - -0.706005 -0.037062 0.111534 - -0.706005 -0.024751 0.112752 - -0.706005 -0.012397 0.11397 - -0.706005 -0.000131 0.115188 - -0.706005 -0.000653 0.120582 - -0.706005 0.000304 0.12615 - -0.706005 0.000653 0.131805 - -0.706005 0.013442 0.146769 - -0.706005 0.013268 0.160167 - -0.706005 0.000827 0.159558 - -0.706005 0.000739 0.167823 - -0.706005 -0.036236 0.168432 - -0.706005 -0.036497 0.16443 - -0.706005 -0.036757 0.16008 - -0.706005 -0.036931 0.155643 - -0.706005 -0.037193 0.151206 - -0.706005 -0.03728 0.146856 - -0.706005 -0.037367 0.142419 - -0.706005 -0.037367 0.137982 - -0.706005 -0.03728 0.133545 - -0.706005 -0.037193 0.129195 - -0.706005 -0.037193 0.124758 - -0.706005 -0.037106 0.120321 - -0.706005 -0.037106 0.115971 - -0.706005 -0.037019 0.111534 -e -v - -0.757944 -0.030885 0.108228 - -0.757944 -0.024665 0.109185 - -0.757944 -0.018488 0.10962 - -0.757944 -0.012311 0.109707 - -0.757944 -0.010049 0.116319 - -0.757944 -0.007786 0.122931 - -0.757944 -0.005437 0.12963 - -0.757944 0.013876 0.144942 - -0.757944 0.014311 0.156513 - -0.757944 -0.004219 0.156861 - -0.757944 -0.004219 0.15921 - -0.757944 -0.036148 0.159993 - -0.757944 -0.03667 0.155469 - -0.757944 -0.036931 0.15138 - -0.757944 -0.036757 0.147378 - -0.757944 -0.036584 0.143289 - -0.757944 -0.036497 0.1392 - -0.757944 -0.036584 0.135111 - -0.757944 -0.03667 0.131109 - -0.757944 -0.036844 0.12702 - -0.757944 -0.036931 0.122931 - -0.757944 -0.036584 0.118929 - -0.757944 -0.034844 0.115275 - -0.757944 -0.032929 0.111708 - -0.757944 -0.030841 0.108228 -e -v - -0.812058 -0.026883 0.109098 - -0.812058 -0.025709 0.109098 - -0.812058 -0.024665 0.109098 - -0.812058 -0.02362 0.109185 - -0.812058 -0.019879 0.117363 - -0.812058 -0.015703 0.125628 - -0.812058 -0.011528 0.133893 - -0.812058 0.011702 0.149118 - -0.812058 0.012049 0.155121 - -0.812058 -0.010658 0.158427 - -0.812058 -0.035105 0.157905 - -0.812058 -0.035974 0.154077 - -0.812058 -0.036148 0.150162 - -0.812058 -0.035887 0.14616 - -0.812058 -0.035887 0.142245 - -0.812058 -0.036236 0.13833 - -0.812058 -0.036497 0.134328 - -0.812058 -0.03641 0.130413 - -0.812058 -0.035887 0.126498 - -0.812058 -0.034844 0.12267 - -0.812058 -0.033103 0.11919 - -0.812058 -0.031103 0.115797 - -0.812058 -0.029014 0.112404 - -0.812058 -0.02684 0.109098 -e -v - -0.849642 -0.026709 0.122322 - -0.849642 -0.025709 0.122148 - -0.849642 -0.024751 0.121974 - -0.849642 -0.023882 0.121887 - -0.849642 -0.020662 0.126846 - -0.849642 -0.017531 0.131805 - -0.849642 -0.014311 0.136764 - -0.849642 0.007265 0.149988 - -0.849642 -0.01318 0.156687 - -0.849642 -0.032582 0.156861 - -0.849642 -0.032582 0.154077 - -0.849642 -0.032669 0.151293 - -0.849642 -0.032756 0.148422 - -0.849642 -0.032842 0.145638 - -0.849642 -0.032842 0.142854 - -0.849642 -0.032756 0.139983 - -0.849642 -0.032669 0.137199 - -0.849642 -0.03319 0.134415 - -0.849642 -0.032495 0.131805 - -0.849642 -0.030755 0.12963 - -0.849642 -0.029102 0.127281 - -0.849642 -0.027796 0.124845 - -0.849642 -0.026665 0.122322 -e -v - -0.898275 -0.026883 0.139548 - -0.898275 -0.026231 0.139635 - -0.898275 -0.025621 0.139635 - -0.898275 -0.025013 0.139635 - -0.898275 -0.02362 0.141375 - -0.898275 -0.022228 0.143028 - -0.898275 -0.020924 0.144768 - -0.898275 -0.011789 0.15138 - -0.898275 -0.019706 0.155904 - -0.898275 -0.020141 0.155904 - -0.898275 -0.029885 0.15573 - -0.898275 -0.03032 0.154338 - -0.898275 -0.03032 0.153033 - -0.898275 -0.03032 0.151728 - -0.898275 -0.030233 0.150423 - -0.898275 -0.030233 0.149118 - -0.898275 -0.030233 0.147726 - -0.898275 -0.03032 0.146421 - -0.898275 -0.030233 0.145116 - -0.898275 -0.029885 0.143811 - -0.898275 -0.029275 0.14268 - -0.898275 -0.028493 0.141636 - -0.898275 -0.027623 0.140592 - -0.898275 -0.02684 0.139548 -e -v - -0.938034 -0.031581 0.155904 -e -v - -0.409683 -0.036888 0.118059 - -0.485634 -0.038498 0.117189 - -0.5568 -0.038932 0.117189 - -0.638232 -0.038498 0.116232 - -0.706005 -0.037019 0.111534 - -0.757944 -0.030841 0.108228 - -0.812058 -0.02684 0.109098 - -0.849642 -0.026665 0.122322 - -0.898275 -0.02684 0.139548 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.016182 0.117537 - -0.485634 -0.019096 0.117102 - -0.5568 -0.021097 0.118146 - -0.638232 -0.023272 0.117624 - -0.706005 -0.024751 0.112752 - -0.757944 -0.024665 0.109185 - -0.812058 -0.025709 0.109098 - -0.849642 -0.025709 0.122148 - -0.898275 -0.026231 0.139635 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.004437 0.117015 - -0.485634 0.000304 0.117015 - -0.5568 -0.003176 0.119016 - -0.638232 -0.008047 0.119016 - -0.706005 -0.012397 0.11397 - -0.757944 -0.018488 0.10962 - -0.812058 -0.024665 0.109098 - -0.849642 -0.024751 0.121974 - -0.898275 -0.025621 0.139635 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.025056 0.116493 - -0.485634 0.019793 0.116841 - -0.5568 0.014659 0.119973 - -0.638232 0.007178 0.120408 - -0.706005 -0.000131 0.115188 - -0.757944 -0.012311 0.109707 - -0.812058 -0.02362 0.109185 - -0.849642 -0.023882 0.121887 - -0.898275 -0.025013 0.139635 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.024621 0.129717 - -0.485634 0.019531 0.13137 - -0.5568 0.013964 0.132675 - -0.638232 0.00683 0.12789 - -0.706005 -0.000653 0.120582 - -0.757944 -0.010049 0.116319 - -0.812058 -0.019879 0.117363 - -0.849642 -0.020662 0.126846 - -0.898275 -0.02362 0.141375 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.024186 0.142941 - -0.485634 0.019183 0.145812 - -0.5568 0.013702 0.145464 - -0.638232 0.006568 0.135459 - -0.706005 0.000304 0.12615 - -0.757944 -0.007786 0.122931 - -0.812058 -0.015703 0.125628 - -0.849642 -0.017531 0.131805 - -0.898275 -0.022228 0.143028 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.023664 0.156165 - -0.485634 0.018923 0.160341 - -0.5568 0.013528 0.15834 - -0.638232 0.006307 0.143028 - -0.706005 0.000653 0.131805 - -0.757944 -0.005437 0.12963 - -0.812058 -0.011528 0.133893 - -0.849642 -0.014311 0.136764 - -0.898275 -0.020924 0.144768 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.023664 0.156165 - -0.485634 0.018923 0.160341 - -0.5568 0.013528 0.15834 - -0.638232 0.012571 0.15051 - -0.706005 0.013442 0.146769 - -0.757944 0.013876 0.144942 - -0.812058 0.011702 0.149118 - -0.849642 0.007265 0.149988 - -0.898275 -0.011789 0.15138 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.023664 0.156165 - -0.485634 0.018923 0.160341 - -0.5568 0.013528 0.15834 - -0.638232 0.012833 0.162081 - -0.706005 0.013268 0.160167 - -0.757944 0.014311 0.156513 - -0.812058 0.012049 0.155121 - -0.849642 0.007265 0.149988 - -0.898275 -0.011789 0.15138 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.023838 0.179307 - -0.485634 0.018662 0.178785 - -0.5568 0.013616 0.179133 - -0.638232 0.006394 0.162429 - -0.706005 0.000827 0.159558 - -0.757944 -0.004219 0.156861 - -0.812058 -0.010658 0.158427 - -0.849642 -0.01318 0.156687 - -0.898275 -0.019706 0.155904 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 0.00261 0.179481 - -0.485634 0.005699 0.179046 - -0.5568 0.013616 0.179133 - -0.638232 0.007004 0.178176 - -0.706005 0.000739 0.167823 - -0.757944 -0.004219 0.15921 - -0.812058 -0.010658 0.158427 - -0.849642 -0.01318 0.156687 - -0.898275 -0.020141 0.155904 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.010614 0.161298 - -0.485634 -0.015878 0.167997 - -0.5568 -0.025186 0.175653 - -0.638232 -0.035974 0.178263 - -0.706005 -0.036236 0.168432 - -0.757944 -0.036148 0.159993 - -0.812058 -0.035105 0.157905 - -0.849642 -0.032582 0.156861 - -0.898275 -0.029885 0.15573 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.012615 0.157992 - -0.485634 -0.019531 0.165648 - -0.5568 -0.029885 0.174609 - -0.638232 -0.037802 0.174261 - -0.706005 -0.036497 0.16443 - -0.757944 -0.03667 0.155469 - -0.812058 -0.035974 0.154077 - -0.849642 -0.032582 0.154077 - -0.898275 -0.03032 0.154338 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.014616 0.154686 - -0.485634 -0.022576 0.162603 - -0.5568 -0.032407 0.170433 - -0.638232 -0.037714 0.169389 - -0.706005 -0.036757 0.16008 - -0.757944 -0.036931 0.15138 - -0.812058 -0.036148 0.150162 - -0.849642 -0.032669 0.151293 - -0.898275 -0.03032 0.153033 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.016617 0.15138 - -0.485634 -0.024143 0.158514 - -0.5568 -0.03319 0.165648 - -0.638232 -0.037627 0.164604 - -0.706005 -0.036931 0.155643 - -0.757944 -0.036757 0.147378 - -0.812058 -0.035887 0.14616 - -0.849642 -0.032756 0.148422 - -0.898275 -0.03032 0.151728 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.018705 0.147987 - -0.485634 -0.025534 0.154338 - -0.5568 -0.033712 0.160776 - -0.638232 -0.037627 0.159732 - -0.706005 -0.037193 0.151206 - -0.757944 -0.036584 0.143289 - -0.812058 -0.035887 0.142245 - -0.849642 -0.032842 0.145638 - -0.898275 -0.030233 0.150423 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.020706 0.144681 - -0.485634 -0.02684 0.150162 - -0.5568 -0.034235 0.155991 - -0.638232 -0.037627 0.154947 - -0.706005 -0.03728 0.146856 - -0.757944 -0.036497 0.1392 - -0.812058 -0.036236 0.13833 - -0.849642 -0.032842 0.142854 - -0.898275 -0.030233 0.149118 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.022707 0.141375 - -0.485634 -0.028144 0.145986 - -0.5568 -0.034757 0.151119 - -0.638232 -0.037627 0.150075 - -0.706005 -0.037367 0.142419 - -0.757944 -0.036584 0.135111 - -0.812058 -0.036497 0.134328 - -0.849642 -0.032756 0.139983 - -0.898275 -0.030233 0.147726 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.024708 0.137982 - -0.485634 -0.029537 0.141897 - -0.5568 -0.035365 0.146247 - -0.638232 -0.037714 0.14529 - -0.706005 -0.037367 0.137982 - -0.757944 -0.03667 0.131109 - -0.812058 -0.03641 0.130413 - -0.849642 -0.032669 0.137199 - -0.898275 -0.03032 0.146421 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.026796 0.134676 - -0.485634 -0.031016 0.137721 - -0.5568 -0.035887 0.141375 - -0.638232 -0.037802 0.140418 - -0.706005 -0.03728 0.133545 - -0.757944 -0.036844 0.12702 - -0.812058 -0.035887 0.126498 - -0.849642 -0.03319 0.134415 - -0.898275 -0.030233 0.145116 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.028797 0.13137 - -0.485634 -0.032407 0.133632 - -0.5568 -0.036497 0.13659 - -0.638232 -0.037889 0.135546 - -0.706005 -0.037193 0.129195 - -0.757944 -0.036931 0.122931 - -0.812058 -0.034844 0.12267 - -0.849642 -0.032495 0.131805 - -0.898275 -0.029885 0.143811 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.030798 0.128064 - -0.485634 -0.033886 0.129456 - -0.5568 -0.037106 0.131718 - -0.638232 -0.037976 0.130761 - -0.706005 -0.037193 0.124758 - -0.757944 -0.036584 0.118929 - -0.812058 -0.033103 0.11919 - -0.849642 -0.030755 0.12963 - -0.898275 -0.029275 0.14268 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.032799 0.124671 - -0.485634 -0.035365 0.125367 - -0.5568 -0.037714 0.126846 - -0.638232 -0.038149 0.125889 - -0.706005 -0.037106 0.120321 - -0.757944 -0.034844 0.115275 - -0.812058 -0.031103 0.115797 - -0.849642 -0.029102 0.127281 - -0.898275 -0.028493 0.141636 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.034887 0.121365 - -0.485634 -0.036931 0.121278 - -0.5568 -0.038323 0.121974 - -0.638232 -0.038323 0.121104 - -0.706005 -0.037106 0.115971 - -0.757944 -0.032929 0.111708 - -0.812058 -0.029014 0.112404 - -0.849642 -0.027796 0.124845 - -0.898275 -0.027623 0.140592 - -0.938034 -0.031537 0.155904 -e -v - -0.409683 -0.036888 0.118059 - -0.485634 -0.038498 0.117189 - -0.5568 -0.038932 0.117189 - -0.638232 -0.038498 0.116232 - -0.706005 -0.037019 0.111534 - -0.757944 -0.030841 0.108228 - -0.812058 -0.02684 0.109098 - -0.849642 -0.026665 0.122322 - -0.898275 -0.02684 0.139548 - -0.938034 -0.031537 0.155904 -e -v - -0.096048 0.008961 0.176784 - -0.099702 0.011789 0.176784 - -0.108402 0.014137 0.176871 - -0.120756 0.016226 0.176871 - -0.133197 0.017792 0.176871 - -0.145638 0.019096 0.176958 - -0.17052 0.021185 0.176958 - -0.220284 0.024143 0.177045 - -0.270048 0.025796 0.177045 - -0.319812 0.025969 0.177045 - -0.369576 0.024838 0.177045 - -0.41934 0.022489 0.176958 - -0.469104 0.019358 0.176958 - -0.518868 0.015356 0.176871 - -0.568458 0.010918 0.176784 - -0.593253 0.008918 0.176784 - -0.568371 0.007961 0.176697 - -0.518607 0.006134 0.176697 - -0.46893 0.003958 0.176697 - -0.419253 0.00161 0.17661 - -0.369576 -0.000304 0.17661 - -0.319899 -0.001522 0.176523 - -0.270222 -0.001783 0.176523 - -0.220545 -0.001001 0.17661 - -0.170868 0.000565 0.17661 - -0.145986 0.001696 0.17661 - -0.133545 0.002479 0.17661 - -0.121104 0.00335 0.17661 - -0.108663 0.004742 0.176697 - -0.099963 0.006394 0.176697 - -0.096135 0.00883 0.176697 -e -v - -0.261783 0.008874 0.346869 - -0.264219 0.010744 0.346956 - -0.270048 0.012311 0.346956 - -0.278313 0.013616 0.346956 - -0.286578 0.014659 0.346956 - -0.294843 0.015442 0.347043 - -0.31146 0.016834 0.347043 - -0.344607 0.018748 0.347043 - -0.377754 0.019793 0.347043 - -0.410988 0.019966 0.34713 - -0.444135 0.019183 0.347043 - -0.477282 0.017704 0.347043 - -0.510516 0.015703 0.347043 - -0.543663 0.013094 0.346956 - -0.576723 0.010223 0.346956 - -0.593253 0.008918 0.346869 - -0.576723 0.008309 0.346869 - -0.543489 0.007178 0.346869 - -0.510342 0.005786 0.346869 - -0.477282 0.004306 0.346782 - -0.444135 0.003089 0.346782 - -0.410988 0.002305 0.346782 - -0.377928 0.002132 0.346782 - -0.344781 0.002567 0.346782 - -0.311634 0.00361 0.346782 - -0.295104 0.004306 0.346782 - -0.286839 0.004829 0.346782 - -0.278487 0.00535 0.346869 - -0.270222 0.00622 0.346869 - -0.264393 0.007265 0.346869 - -0.26187 0.00883 0.346869 -e -v - -0.42978 0.008874 0.512604 - -0.431259 0.009961 0.512691 - -0.434652 0.010918 0.512691 - -0.439611 0.011702 0.512691 - -0.444657 0.012311 0.512691 - -0.449616 0.012745 0.512691 - -0.459534 0.013616 0.512691 - -0.479457 0.014747 0.512691 - -0.49938 0.015356 0.512778 - -0.519216 0.015442 0.512778 - -0.539139 0.015007 0.512778 - -0.559062 0.014137 0.512691 - -0.578985 0.01292 0.512691 - -0.598821 0.011354 0.512691 - -0.618744 0.009701 0.512604 - -0.628662 0.008918 0.512604 - -0.618657 0.00857 0.512604 - -0.598821 0.007873 0.512604 - -0.578898 0.007091 0.512604 - -0.559062 0.00622 0.512604 - -0.539139 0.005524 0.512604 - -0.519303 0.005003 0.512604 - -0.49938 0.004916 0.512517 - -0.479544 0.005176 0.512604 - -0.459708 0.005786 0.512604 - -0.449703 0.00622 0.512604 - -0.444744 0.006481 0.512604 - -0.439785 0.00683 0.512604 - -0.434826 0.007351 0.512604 - -0.431346 0.007961 0.512604 - -0.42978 0.00883 0.512604 -e -v - -0.47589 0.008874 0.563412 - -0.476412 0.009961 0.563499 - -0.477543 0.010744 0.563499 - -0.479283 0.01144 0.563499 - -0.480936 0.011963 0.563499 - -0.482676 0.012397 0.563499 - -0.486156 0.013094 0.563499 - -0.492942 0.014051 0.563586 - -0.499815 0.014573 0.563586 - -0.506688 0.014573 0.563586 - -0.513561 0.014137 0.563586 - -0.520434 0.013268 0.563499 - -0.527307 0.012223 0.563499 - -0.53418 0.010918 0.563499 - -0.540966 0.009527 0.563499 - -0.544446 0.008918 0.563412 - -0.540966 0.008396 0.563412 - -0.534093 0.007438 0.563412 - -0.52722 0.006394 0.563412 - -0.520434 0.00535 0.563412 - -0.513561 0.004568 0.563412 - -0.506775 0.004132 0.563412 - -0.499902 0.004132 0.563412 - -0.493116 0.004481 0.563412 - -0.486243 0.005263 0.563412 - -0.48285 0.005786 0.563412 - -0.48111 0.006134 0.563412 - -0.47937 0.006568 0.563412 - -0.477717 0.007178 0.563412 - -0.476499 0.007873 0.563412 - -0.47589 0.00883 0.563412 -e -v - -0.522609 0.008874 0.574548 - -0.522609 0.009004 0.574548 - -0.522609 0.009092 0.574548 - -0.522696 0.009092 0.574548 - -0.522783 0.009178 0.574548 - -0.52287 0.009178 0.574548 - -0.523131 0.009266 0.574548 - -0.523305 0.009352 0.574548 - -0.523566 0.009352 0.574548 - -0.523827 0.009352 0.574548 - -0.524001 0.009266 0.574548 - -0.524262 0.009178 0.574548 - -0.524523 0.009092 0.574548 - -0.524697 0.008918 0.574548 - -0.524784 0.008918 0.574548 - -0.524697 0.008918 0.574548 - -0.524436 0.008918 0.574548 - -0.524175 0.008918 0.574548 - -0.524001 0.00883 0.574548 - -0.523827 0.00883 0.574461 - -0.523566 0.008744 0.574461 - -0.523392 0.008744 0.574461 - -0.523131 0.008744 0.574461 - -0.522957 0.008744 0.574461 - -0.52287 0.00883 0.574461 - -0.522783 0.00883 0.574461 - -0.522696 0.00883 0.574461 - -0.522696 0.00883 0.574548 - -0.522609 0.00883 0.574548 - -0.522609 0.008918 0.574548 -e -v - -0.096048 0.008961 0.176784 - -0.261783 0.008918 0.346869 - -0.42978 0.008918 0.512604 - -0.47589 0.008918 0.563412 - -0.522609 0.008918 0.574548 -e -v - -0.099702 0.011745 0.176784 - -0.264219 0.010744 0.346956 - -0.431259 0.009961 0.512691 - -0.476412 0.009961 0.563499 - -0.522609 0.008918 0.574548 -e -v - -0.108402 0.014094 0.176871 - -0.270048 0.012311 0.346956 - -0.434652 0.010918 0.512691 - -0.477543 0.010744 0.563499 - -0.522609 0.009004 0.574548 -e -v - -0.120756 0.016182 0.176871 - -0.278313 0.013616 0.346956 - -0.439611 0.011702 0.512691 - -0.479283 0.01144 0.563499 - -0.522609 0.009092 0.574548 -e -v - -0.133197 0.017748 0.176871 - -0.286578 0.014659 0.346956 - -0.444657 0.012311 0.512691 - -0.480936 0.011963 0.563499 - -0.522696 0.009092 0.574548 -e -v - -0.145638 0.019053 0.176958 - -0.294843 0.015442 0.347043 - -0.449616 0.012745 0.512691 - -0.482676 0.012397 0.563499 - -0.522783 0.009178 0.574548 -e -v - -0.17052 0.021141 0.176958 - -0.31146 0.016834 0.347043 - -0.459534 0.013616 0.512691 - -0.486156 0.013094 0.563499 - -0.52287 0.009178 0.574548 -e -v - -0.220284 0.024099 0.177045 - -0.344607 0.018748 0.347043 - -0.479457 0.014747 0.512691 - -0.492942 0.014051 0.563586 - -0.523131 0.009266 0.574548 -e -v - -0.270048 0.025752 0.177045 - -0.377754 0.019793 0.347043 - -0.49938 0.015356 0.512778 - -0.499815 0.014573 0.563586 - -0.523305 0.009352 0.574548 -e -v - -0.319812 0.025926 0.177045 - -0.410988 0.019966 0.34713 - -0.519216 0.015442 0.512778 - -0.506688 0.014573 0.563586 - -0.523566 0.009352 0.574548 -e -v - -0.369576 0.024795 0.177045 - -0.444135 0.019183 0.347043 - -0.539139 0.015007 0.512778 - -0.513561 0.014137 0.563586 - -0.523827 0.009352 0.574548 -e -v - -0.41934 0.022446 0.176958 - -0.477282 0.017704 0.347043 - -0.559062 0.014137 0.512691 - -0.520434 0.013268 0.563499 - -0.524001 0.009266 0.574548 -e -v - -0.469104 0.019314 0.176958 - -0.510516 0.015703 0.347043 - -0.578985 0.01292 0.512691 - -0.527307 0.012223 0.563499 - -0.524262 0.009178 0.574548 -e -v - -0.518868 0.015312 0.176871 - -0.543663 0.013094 0.346956 - -0.598821 0.011354 0.512691 - -0.53418 0.010918 0.563499 - -0.524523 0.009092 0.574548 -e -v - -0.568458 0.010875 0.176784 - -0.576723 0.010223 0.346956 - -0.618744 0.009701 0.512604 - -0.540966 0.009527 0.563499 - -0.524697 0.008918 0.574548 -e -v - -0.593253 0.008874 0.176784 - -0.593253 0.008918 0.346869 - -0.628662 0.008918 0.512604 - -0.544446 0.008918 0.563412 - -0.524784 0.008918 0.574548 -e -v - -0.568371 0.007917 0.176697 - -0.576723 0.008309 0.346869 - -0.618657 0.00857 0.512604 - -0.540966 0.008396 0.563412 - -0.524697 0.008918 0.574548 -e -v - -0.518607 0.00609 0.176697 - -0.543489 0.007178 0.346869 - -0.598821 0.007873 0.512604 - -0.534093 0.007438 0.563412 - -0.524436 0.008918 0.574548 -e -v - -0.46893 0.003915 0.176697 - -0.510342 0.005786 0.346869 - -0.578898 0.007091 0.512604 - -0.52722 0.006394 0.563412 - -0.524175 0.008918 0.574548 -e -v - -0.419253 0.001566 0.17661 - -0.477282 0.004306 0.346782 - -0.559062 0.00622 0.512604 - -0.520434 0.00535 0.563412 - -0.524001 0.00883 0.574548 -e -v - -0.369576 -0.000348 0.17661 - -0.444135 0.003089 0.346782 - -0.539139 0.005524 0.512604 - -0.513561 0.004568 0.563412 - -0.523827 0.00883 0.574461 -e -v - -0.319899 -0.001566 0.176523 - -0.410988 0.002305 0.346782 - -0.519303 0.005003 0.512604 - -0.506775 0.004132 0.563412 - -0.523566 0.008744 0.574461 -e -v - -0.270222 -0.001827 0.176523 - -0.377928 0.002132 0.346782 - -0.49938 0.004916 0.512517 - -0.499902 0.004132 0.563412 - -0.523392 0.008744 0.574461 -e -v - -0.220545 -0.001044 0.17661 - -0.344781 0.002567 0.346782 - -0.479544 0.005176 0.512604 - -0.493116 0.004481 0.563412 - -0.523131 0.008744 0.574461 -e -v - -0.170868 0.000522 0.17661 - -0.311634 0.00361 0.346782 - -0.459708 0.005786 0.512604 - -0.486243 0.005263 0.563412 - -0.522957 0.008744 0.574461 -e -v - -0.145986 0.001653 0.17661 - -0.295104 0.004306 0.346782 - -0.449703 0.00622 0.512604 - -0.48285 0.005786 0.563412 - -0.52287 0.00883 0.574461 -e -v - -0.133545 0.002436 0.17661 - -0.286839 0.004829 0.346782 - -0.444744 0.006481 0.512604 - -0.48111 0.006134 0.563412 - -0.522783 0.00883 0.574461 -e -v - -0.121104 0.003306 0.17661 - -0.278487 0.00535 0.346869 - -0.439785 0.00683 0.512604 - -0.47937 0.006568 0.563412 - -0.522696 0.00883 0.574461 -e -v - -0.108663 0.004698 0.176697 - -0.270222 0.00622 0.346869 - -0.434826 0.007351 0.512604 - -0.477717 0.007178 0.563412 - -0.522696 0.00883 0.574548 -e -v - -0.099963 0.006351 0.176697 - -0.264393 0.007265 0.346869 - -0.431346 0.007961 0.512604 - -0.476499 0.007873 0.563412 - -0.522609 0.00883 0.574548 -e -v - -0.096135 0.008787 0.176697 - -0.26187 0.00883 0.346869 - -0.42978 0.00883 0.512604 - -0.47589 0.00883 0.563412 - -0.522609 0.008918 0.574548 -e -v - -0.792222 0.27405 0.147987 - -0.792744 0.274094 0.147726 - -0.794136 0.274094 0.147465 - -0.79605 0.274094 0.147291 - -0.797964 0.274094 0.147117 - -0.799878 0.274094 0.14703 - -0.803793 0.274094 0.146943 - -0.811536 0.274094 0.146769 - -0.819279 0.274094 0.146682 - -0.827022 0.274094 0.146682 - -0.834678 0.274094 0.146769 - -0.842421 0.274094 0.146943 - -0.850164 0.274094 0.147117 - -0.857907 0.274094 0.147378 - -0.86565 0.274094 0.147813 - -0.869565 0.274094 0.148074 - -0.86565 0.274094 0.148248 - -0.857907 0.274094 0.148596 - -0.850164 0.274094 0.148857 - -0.842421 0.274094 0.149118 - -0.834678 0.274094 0.149292 - -0.827022 0.274094 0.149379 - -0.819279 0.274094 0.149379 - -0.811536 0.274094 0.149292 - -0.803793 0.274094 0.149118 - -0.799878 0.274094 0.148944 - -0.797964 0.274094 0.148857 - -0.79605 0.274094 0.14877 - -0.794136 0.274094 0.148596 - -0.792744 0.274094 0.148335 - -0.792222 0.274094 0.147987 -e -v - -0.604389 0.013224 0.147987 - -0.792222 0.274094 0.147987 -e -v - -0.606216 0.013224 0.146508 - -0.792744 0.274094 0.147726 -e -v - -0.610653 0.013224 0.145464 - -0.794136 0.274094 0.147465 -e -v - -0.616917 0.013224 0.144594 - -0.79605 0.274094 0.147291 -e -v - -0.623268 0.013224 0.143985 - -0.797964 0.274094 0.147117 -e -v - -0.629532 0.013224 0.14355 - -0.799878 0.274094 0.14703 -e -v - -0.642147 0.013224 0.142941 - -0.803793 0.274094 0.146943 -e -v - -0.66729 0.013224 0.142158 - -0.811536 0.274094 0.146769 -e -v - -0.69252 0.013224 0.141723 - -0.819279 0.274094 0.146682 -e -v - -0.71775 0.013224 0.141723 - -0.827022 0.274094 0.146682 -e -v - -0.742893 0.013224 0.142158 - -0.834678 0.274094 0.146769 -e -v - -0.768123 0.013224 0.142854 - -0.842421 0.274094 0.146943 -e -v - -0.793266 0.013224 0.143898 - -0.850164 0.274094 0.147117 -e -v - -0.818496 0.013224 0.14529 - -0.857907 0.274094 0.147378 -e -v - -0.843639 0.013224 0.146943 - -0.86565 0.274094 0.147813 -e -v - -0.856254 0.013224 0.148161 - -0.869565 0.274094 0.148074 -e -v - -0.843639 0.013224 0.149118 - -0.86565 0.274094 0.148248 -e -v - -0.818496 0.013224 0.150771 - -0.857907 0.274094 0.148596 -e -v - -0.793266 0.013224 0.152163 - -0.850164 0.274094 0.148857 -e -v - -0.768123 0.013224 0.153207 - -0.842421 0.274094 0.149118 -e -v - -0.742893 0.013224 0.153903 - -0.834678 0.274094 0.149292 -e -v - -0.71775 0.013224 0.154251 - -0.827022 0.274094 0.149379 -e -v - -0.69252 0.013224 0.154251 - -0.819279 0.274094 0.149379 -e -v - -0.66729 0.013224 0.153903 - -0.811536 0.274094 0.149292 -e -v - -0.642147 0.013224 0.15312 - -0.803793 0.274094 0.149118 -e -v - -0.629532 0.013224 0.152424 - -0.799878 0.274094 0.148944 -e -v - -0.623268 0.013224 0.151989 - -0.797964 0.274094 0.148857 -e -v - -0.616917 0.013224 0.151467 - -0.79605 0.274094 0.14877 -e -v - -0.610653 0.013224 0.150597 - -0.794136 0.274094 0.148596 -e -v - -0.606216 0.013224 0.149553 - -0.792744 0.274094 0.148335 -e -v - -0.604389 0.013224 0.148074 - -0.792222 0.274094 0.147987 -e -v - -0.604389 0.013224 0.147987 - -0.606216 0.013268 0.146508 - -0.610653 0.013268 0.145464 - -0.616917 0.013268 0.144594 - -0.623268 0.013268 0.143985 - -0.629532 0.013268 0.14355 - -0.642147 0.013268 0.142941 - -0.66729 0.013268 0.142158 - -0.69252 0.013268 0.141723 - -0.71775 0.013268 0.141723 - -0.742893 0.013268 0.142158 - -0.768123 0.013268 0.142854 - -0.793266 0.013268 0.143898 - -0.818496 0.013268 0.14529 - -0.843639 0.013268 0.146943 - -0.856254 0.013268 0.148161 - -0.843639 0.013268 0.149118 - -0.818496 0.013268 0.150771 - -0.793266 0.013268 0.152163 - -0.768123 0.013268 0.153207 - -0.742893 0.013268 0.153903 - -0.71775 0.013268 0.154251 - -0.69252 0.013268 0.154251 - -0.66729 0.013268 0.153903 - -0.642147 0.013268 0.15312 - -0.629532 0.013268 0.152424 - -0.623268 0.013268 0.151989 - -0.616917 0.013268 0.151467 - -0.610653 0.013268 0.150597 - -0.606216 0.013268 0.149553 - -0.604389 0.013268 0.148074 -e -v - -0.670683 -0.026448 0.159036 - -0.672597 -0.024751 0.159036 - -0.677121 -0.023534 0.159036 - -0.683646 -0.022576 0.159036 - -0.690171 -0.021881 0.159036 - -0.696696 -0.021358 0.159036 - -0.709746 -0.020662 0.159036 - -0.735846 -0.019793 0.159036 - -0.761946 -0.019358 0.159036 - -0.787959 -0.019358 0.159036 - -0.814059 -0.019793 0.159036 - -0.840159 -0.020575 0.159036 - -0.866172 -0.021793 0.159036 - -0.892272 -0.023359 0.159036 - -0.918372 -0.025274 0.159036 - -0.931422 -0.026579 0.159036 - -0.918372 -0.02771 0.159036 - -0.892272 -0.029624 0.159036 - -0.866172 -0.031189 0.159036 - -0.840159 -0.032407 0.159036 - -0.814059 -0.03319 0.159036 - -0.787959 -0.033625 0.159036 - -0.761946 -0.033625 0.159036 - -0.735846 -0.03319 0.159036 - -0.709746 -0.03232 0.159036 - -0.696696 -0.031537 0.159036 - -0.690171 -0.031016 0.159036 - -0.683646 -0.030406 0.159036 - -0.677121 -0.02945 0.159036 - -0.672597 -0.028231 0.159036 - -0.670683 -0.026579 0.159036 -e -v - -0.76125 -0.026448 0.236379 - -0.762642 -0.025361 0.236379 - -0.766035 -0.02449 0.236379 - -0.770733 -0.023882 0.236379 - -0.775518 -0.023447 0.236379 - -0.780216 -0.023099 0.236379 - -0.789786 -0.022664 0.236379 - -0.808752 -0.022055 0.236379 - -0.827718 -0.021793 0.236379 - -0.846771 -0.021793 0.236379 - -0.865737 -0.022055 0.236379 - -0.88479 -0.022576 0.236379 - -0.903756 -0.023359 0.236379 - -0.922809 -0.024403 0.236379 - -0.941775 -0.025621 0.236379 - -0.951258 -0.026579 0.236379 - -0.941775 -0.027275 0.236379 - -0.922809 -0.028579 0.236379 - -0.903756 -0.029624 0.236379 - -0.88479 -0.030406 0.236379 - -0.865737 -0.030928 0.236379 - -0.846771 -0.031189 0.236379 - -0.827718 -0.031189 0.236379 - -0.808752 -0.030928 0.236379 - -0.789786 -0.03032 0.236379 - -0.780216 -0.029797 0.236379 - -0.775518 -0.029537 0.236379 - -0.770733 -0.029102 0.236379 - -0.766035 -0.028406 0.236379 - -0.762642 -0.027623 0.236379 - -0.76125 -0.026492 0.236379 -e -v - -0.725928 -0.026448 0.23751 - -0.727581 -0.025361 0.23751 - -0.731583 -0.02449 0.23751 - -0.737238 -0.023882 0.23751 - -0.74298 -0.023447 0.23751 - -0.748635 -0.023099 0.23751 - -0.760032 -0.022664 0.23751 - -0.782826 -0.022055 0.23751 - -0.805533 -0.021793 0.23751 - -0.828327 -0.021793 0.23751 - -0.851034 -0.022055 0.23751 - -0.873828 -0.022576 0.23751 - -0.896622 -0.023359 0.23751 - -0.919329 -0.024403 0.23751 - -0.942123 -0.025621 0.23751 - -0.95352 -0.026579 0.23751 - -0.942123 -0.027275 0.23751 - -0.919329 -0.028579 0.23751 - -0.896622 -0.029624 0.23751 - -0.873828 -0.030406 0.23751 - -0.851034 -0.030928 0.23751 - -0.828327 -0.031189 0.23751 - -0.805533 -0.031189 0.23751 - -0.782826 -0.030928 0.23751 - -0.760032 -0.03032 0.23751 - -0.748635 -0.029797 0.23751 - -0.74298 -0.029537 0.23751 - -0.737238 -0.029102 0.23751 - -0.731583 -0.028406 0.23751 - -0.727581 -0.027623 0.23751 - -0.725928 -0.026492 0.23751 -e -v - -0.84738 -0.026535 0.342519 - -0.848424 -0.025969 0.342519 - -0.850599 -0.025534 0.342519 - -0.853818 -0.025274 0.342519 - -0.857037 -0.025013 0.342519 - -0.860256 -0.024926 0.342519 - -0.866607 -0.024665 0.342519 - -0.879483 -0.024403 0.342519 - -0.892272 -0.02423 0.342519 - -0.905061 -0.02423 0.342519 - -0.917937 -0.024403 0.342519 - -0.930726 -0.024665 0.342519 - -0.943515 -0.025013 0.342519 - -0.956391 -0.025534 0.342519 - -0.96918 -0.026057 0.342519 - -0.975618 -0.026492 0.342519 - -0.96918 -0.02684 0.342519 - -0.956391 -0.027448 0.342519 - -0.943515 -0.027971 0.342519 - -0.930726 -0.028319 0.342519 - -0.917937 -0.028579 0.342519 - -0.905061 -0.028667 0.342519 - -0.892272 -0.028667 0.342519 - -0.879483 -0.028579 0.342519 - -0.866607 -0.028319 0.342519 - -0.860256 -0.028058 0.342519 - -0.857037 -0.027883 0.342519 - -0.853818 -0.02771 0.342519 - -0.850599 -0.027362 0.342519 - -0.848424 -0.027013 0.342519 - -0.84738 -0.026492 0.342519 -e -v - -0.891663 -0.026535 0.380016 - -0.891837 -0.026405 0.380016 - -0.892446 -0.026317 0.380016 - -0.893316 -0.026231 0.380016 - -0.894099 -0.026231 0.380016 - -0.894969 -0.026144 0.380016 - -0.896622 -0.026144 0.380016 - -0.899928 -0.026057 0.380016 - -0.903234 -0.026057 0.380016 - -0.90654 -0.026057 0.380016 - -0.909846 -0.026057 0.380016 - -0.913152 -0.026144 0.380016 - -0.916458 -0.026231 0.380016 - -0.919764 -0.026317 0.380016 - -0.92307 -0.026405 0.380016 - -0.92481 -0.026492 0.380016 - -0.92307 -0.026579 0.380016 - -0.919764 -0.026665 0.380016 - -0.916458 -0.026752 0.380016 - -0.913152 -0.02684 0.380016 - -0.909846 -0.02684 0.380016 - -0.90654 -0.026927 0.380016 - -0.903234 -0.026927 0.380016 - -0.899928 -0.02684 0.380016 - -0.896622 -0.02684 0.380016 - -0.894969 -0.026752 0.380016 - -0.894099 -0.026752 0.380016 - -0.893316 -0.026665 0.380016 - -0.892446 -0.026665 0.380016 - -0.891837 -0.026579 0.380016 - -0.891663 -0.026492 0.380016 -e -v - -0.670683 -0.026448 0.159036 - -0.76125 -0.026405 0.236379 - -0.725928 -0.026405 0.23751 - -0.84738 -0.026492 0.342519 - -0.891663 -0.026492 0.380016 -e -v - -0.672597 -0.024795 0.159036 - -0.762642 -0.025361 0.236379 - -0.727581 -0.025361 0.23751 - -0.848424 -0.025969 0.342519 - -0.891837 -0.026405 0.380016 -e -v - -0.677121 -0.023577 0.159036 - -0.766035 -0.02449 0.236379 - -0.731583 -0.02449 0.23751 - -0.850599 -0.025534 0.342519 - -0.892446 -0.026317 0.380016 -e -v - -0.683646 -0.02262 0.159036 - -0.770733 -0.023882 0.236379 - -0.737238 -0.023882 0.23751 - -0.853818 -0.025274 0.342519 - -0.893316 -0.026231 0.380016 -e -v - -0.690171 -0.021924 0.159036 - -0.775518 -0.023447 0.236379 - -0.74298 -0.023447 0.23751 - -0.857037 -0.025013 0.342519 - -0.894099 -0.026231 0.380016 -e -v - -0.696696 -0.021402 0.159036 - -0.780216 -0.023099 0.236379 - -0.748635 -0.023099 0.23751 - -0.860256 -0.024926 0.342519 - -0.894969 -0.026144 0.380016 -e -v - -0.709746 -0.020706 0.159036 - -0.789786 -0.022664 0.236379 - -0.760032 -0.022664 0.23751 - -0.866607 -0.024665 0.342519 - -0.896622 -0.026144 0.380016 -e -v - -0.735846 -0.019836 0.159036 - -0.808752 -0.022055 0.236379 - -0.782826 -0.022055 0.23751 - -0.879483 -0.024403 0.342519 - -0.899928 -0.026057 0.380016 -e -v - -0.761946 -0.019401 0.159036 - -0.827718 -0.021793 0.236379 - -0.805533 -0.021793 0.23751 - -0.892272 -0.02423 0.342519 - -0.903234 -0.026057 0.380016 -e -v - -0.787959 -0.019401 0.159036 - -0.846771 -0.021793 0.236379 - -0.828327 -0.021793 0.23751 - -0.905061 -0.02423 0.342519 - -0.90654 -0.026057 0.380016 -e -v - -0.814059 -0.019836 0.159036 - -0.865737 -0.022055 0.236379 - -0.851034 -0.022055 0.23751 - -0.917937 -0.024403 0.342519 - -0.909846 -0.026057 0.380016 -e -v - -0.840159 -0.020619 0.159036 - -0.88479 -0.022576 0.236379 - -0.873828 -0.022576 0.23751 - -0.930726 -0.024665 0.342519 - -0.913152 -0.026144 0.380016 -e -v - -0.866172 -0.021837 0.159036 - -0.903756 -0.023359 0.236379 - -0.896622 -0.023359 0.23751 - -0.943515 -0.025013 0.342519 - -0.916458 -0.026231 0.380016 -e -v - -0.892272 -0.023403 0.159036 - -0.922809 -0.024403 0.236379 - -0.919329 -0.024403 0.23751 - -0.956391 -0.025534 0.342519 - -0.919764 -0.026317 0.380016 -e -v - -0.918372 -0.025317 0.159036 - -0.941775 -0.025621 0.236379 - -0.942123 -0.025621 0.23751 - -0.96918 -0.026057 0.342519 - -0.92307 -0.026405 0.380016 -e -v - -0.931422 -0.026622 0.159036 - -0.951258 -0.026579 0.236379 - -0.95352 -0.026579 0.23751 - -0.975618 -0.026492 0.342519 - -0.92481 -0.026492 0.380016 -e -v - -0.918372 -0.027753 0.159036 - -0.941775 -0.027275 0.236379 - -0.942123 -0.027275 0.23751 - -0.96918 -0.02684 0.342519 - -0.92307 -0.026579 0.380016 -e -v - -0.892272 -0.029667 0.159036 - -0.922809 -0.028579 0.236379 - -0.919329 -0.028579 0.23751 - -0.956391 -0.027448 0.342519 - -0.919764 -0.026665 0.380016 -e -v - -0.866172 -0.031233 0.159036 - -0.903756 -0.029624 0.236379 - -0.896622 -0.029624 0.23751 - -0.943515 -0.027971 0.342519 - -0.916458 -0.026752 0.380016 -e -v - -0.840159 -0.032451 0.159036 - -0.88479 -0.030406 0.236379 - -0.873828 -0.030406 0.23751 - -0.930726 -0.028319 0.342519 - -0.913152 -0.02684 0.380016 -e -v - -0.814059 -0.033234 0.159036 - -0.865737 -0.030928 0.236379 - -0.851034 -0.030928 0.23751 - -0.917937 -0.028579 0.342519 - -0.909846 -0.02684 0.380016 -e -v - -0.787959 -0.033669 0.159036 - -0.846771 -0.031189 0.236379 - -0.828327 -0.031189 0.23751 - -0.905061 -0.028667 0.342519 - -0.90654 -0.026927 0.380016 -e -v - -0.761946 -0.033669 0.159036 - -0.827718 -0.031189 0.236379 - -0.805533 -0.031189 0.23751 - -0.892272 -0.028667 0.342519 - -0.903234 -0.026927 0.380016 -e -v - -0.735846 -0.033234 0.159036 - -0.808752 -0.030928 0.236379 - -0.782826 -0.030928 0.23751 - -0.879483 -0.028579 0.342519 - -0.899928 -0.02684 0.380016 -e -v - -0.709746 -0.032364 0.159036 - -0.789786 -0.03032 0.236379 - -0.760032 -0.03032 0.23751 - -0.866607 -0.028319 0.342519 - -0.896622 -0.02684 0.380016 -e -v - -0.696696 -0.031581 0.159036 - -0.780216 -0.029797 0.236379 - -0.748635 -0.029797 0.23751 - -0.860256 -0.028058 0.342519 - -0.894969 -0.026752 0.380016 -e -v - -0.690171 -0.031059 0.159036 - -0.775518 -0.029537 0.236379 - -0.74298 -0.029537 0.23751 - -0.857037 -0.027883 0.342519 - -0.894099 -0.026752 0.380016 -e -v - -0.683646 -0.03045 0.159036 - -0.770733 -0.029102 0.236379 - -0.737238 -0.029102 0.23751 - -0.853818 -0.02771 0.342519 - -0.893316 -0.026665 0.380016 -e -v - -0.677121 -0.029493 0.159036 - -0.766035 -0.028406 0.236379 - -0.731583 -0.028406 0.23751 - -0.850599 -0.027362 0.342519 - -0.892446 -0.026665 0.380016 -e -v - -0.672597 -0.028275 0.159036 - -0.762642 -0.027623 0.236379 - -0.727581 -0.027623 0.23751 - -0.848424 -0.027013 0.342519 - -0.891837 -0.026579 0.380016 -e -v - -0.670683 -0.026622 0.159036 - -0.76125 -0.026492 0.236379 - -0.725928 -0.026492 0.23751 - -0.84738 -0.026492 0.342519 - -0.891663 -0.026492 0.380016 -e -v - 0.701655 -0.031842 0.0 - 0.701655 -0.031799 -0.000435 - 0.701655 -0.031886 -0.000957 - 0.701655 -0.031973 -0.001479 - 0.701655 -0.03206 -0.001914 - 0.701655 -0.032233 -0.002436 - 0.701655 -0.032407 -0.002871 - 0.701655 -0.032582 -0.003393 - 0.701655 -0.032842 -0.003828 - 0.701655 -0.033103 -0.004263 - 0.701655 -0.033365 -0.004611 - 0.701655 -0.033625 -0.005046 - 0.701655 -0.033974 -0.005394 - 0.701655 -0.034322 -0.005742 - 0.701655 -0.034757 -0.00609 - 0.701655 -0.035105 -0.006351 - 0.701655 -0.03554 -0.006699 - 0.701655 -0.035974 -0.006873 - 0.701655 -0.036497 -0.007134 - 0.701655 -0.036931 -0.007308 - 0.701655 -0.037367 -0.007482 - 0.701655 -0.037889 -0.007569 - 0.701655 -0.03841 -0.007656 - 0.701655 -0.038846 -0.007743 - 0.701655 -0.039368 -0.00783 - 0.701655 -0.039889 -0.00783 - 0.701655 -0.040411 -0.007743 - 0.701655 -0.040847 -0.007656 - 0.701655 -0.041368 -0.007569 - 0.701655 -0.041891 -0.007482 - 0.701655 -0.042326 -0.007308 - 0.701655 -0.042847 -0.007134 - 0.701655 -0.043283 -0.006873 - 0.701655 -0.043717 -0.006699 - 0.701655 -0.044153 -0.006351 - 0.701655 -0.0445 -0.00609 - 0.701655 -0.044935 -0.005742 - 0.701655 -0.045284 -0.005394 - 0.701655 -0.045632 -0.005046 - 0.701655 -0.045892 -0.004611 - 0.701655 -0.046241 -0.004263 - 0.701655 -0.046501 -0.003828 - 0.701655 -0.046675 -0.003393 - 0.701655 -0.046937 -0.002871 - 0.701655 -0.047111 -0.002436 - 0.701655 -0.047197 -0.001914 - 0.701655 -0.047284 -0.001479 - 0.701655 -0.047371 -0.000957 - 0.701655 -0.047458 -0.000435 - 0.701655 -0.047458 0.0 -e -v - 0.688431 -0.024447 0.0 - 0.688431 -0.024403 -0.000783 - 0.688431 -0.02449 -0.001566 - 0.688431 -0.024665 -0.002436 - 0.688431 -0.024838 -0.003219 - 0.688431 -0.0251 -0.004002 - 0.688431 -0.025361 -0.004785 - 0.688431 -0.025709 -0.005568 - 0.688431 -0.026057 -0.006264 - 0.688431 -0.026492 -0.007047 - 0.688431 -0.027013 -0.007656 - 0.688431 -0.027448 -0.008352 - 0.688431 -0.028058 -0.008961 - 0.688431 -0.028667 -0.009483 - 0.688431 -0.029275 -0.010092 - 0.688431 -0.029972 -0.010527 - 0.688431 -0.030668 -0.011049 - 0.688431 -0.031363 -0.011397 - 0.688431 -0.03206 -0.011745 - 0.688431 -0.032842 -0.012093 - 0.688431 -0.033625 -0.012354 - 0.688431 -0.034495 -0.012528 - 0.688431 -0.035278 -0.012702 - 0.688431 -0.036061 -0.012789 - 0.688431 -0.036931 -0.012876 - 0.688431 -0.037714 -0.012876 - 0.688431 -0.038585 -0.012789 - 0.688431 -0.039368 -0.012702 - 0.688431 -0.040238 -0.012528 - 0.688431 -0.041021 -0.012354 - 0.688431 -0.041804 -0.012093 - 0.688431 -0.042587 -0.011745 - 0.688431 -0.043283 -0.011397 - 0.688431 -0.044066 -0.011049 - 0.688431 -0.044762 -0.010527 - 0.688431 -0.045371 -0.010092 - 0.688431 -0.045979 -0.009483 - 0.688431 -0.046588 -0.008961 - 0.688431 -0.047197 -0.008352 - 0.688431 -0.04772 -0.007656 - 0.688431 -0.048154 -0.007047 - 0.688431 -0.04859 -0.006264 - 0.688431 -0.048937 -0.005568 - 0.688431 -0.049286 -0.004785 - 0.688431 -0.049633 -0.004002 - 0.688431 -0.049808 -0.003219 - 0.688431 -0.049982 -0.002436 - 0.688431 -0.050156 -0.001566 - 0.688431 -0.050242 -0.000783 - 0.688431 -0.050242 0.0 -e -v - 0.666246 -0.011571 0.0 - 0.666246 -0.011614 -0.001392 - 0.666246 -0.011702 -0.002871 - 0.666246 -0.011963 -0.00435 - 0.666246 -0.012311 -0.005829 - 0.666246 -0.012745 -0.007221 - 0.666246 -0.013268 -0.008613 - 0.666246 -0.01379 -0.009918 - 0.666246 -0.014485 -0.011223 - 0.666246 -0.015268 -0.012528 - 0.666246 -0.016138 -0.013746 - 0.666246 -0.017009 -0.014877 - 0.666246 -0.018052 -0.016008 - 0.666246 -0.019096 -0.016965 - 0.666246 -0.020227 -0.017922 - 0.666246 -0.021358 -0.018879 - 0.666246 -0.022664 -0.019662 - 0.666246 -0.023882 -0.020358 - 0.666246 -0.025274 -0.020967 - 0.666246 -0.026579 -0.021576 - 0.666246 -0.028058 -0.022011 - 0.666246 -0.02945 -0.022359 - 0.666246 -0.030928 -0.022707 - 0.666246 -0.03232 -0.022881 - 0.666246 -0.033799 -0.022968 - 0.666246 -0.035278 -0.022968 - 0.666246 -0.036757 -0.022881 - 0.666246 -0.038236 -0.022707 - 0.666246 -0.039715 -0.022359 - 0.666246 -0.041108 -0.022011 - 0.666246 -0.0425 -0.021576 - 0.666246 -0.043892 -0.020967 - 0.666246 -0.045196 -0.020358 - 0.666246 -0.046501 -0.019662 - 0.666246 -0.04772 -0.018879 - 0.666246 -0.048937 -0.017922 - 0.666246 -0.050069 -0.016965 - 0.666246 -0.051112 -0.016008 - 0.666246 -0.05207 -0.014877 - 0.666246 -0.053027 -0.013746 - 0.666246 -0.053897 -0.012528 - 0.666246 -0.054593 -0.011223 - 0.666246 -0.055289 -0.009918 - 0.666246 -0.055898 -0.008613 - 0.666246 -0.056419 -0.007221 - 0.666246 -0.056855 -0.005829 - 0.666246 -0.057202 -0.00435 - 0.666246 -0.057377 -0.002871 - 0.666246 -0.057551 -0.001392 - 0.666246 -0.057551 0.0 -e -v - 0.622137 0.002262 0.0 - 0.622137 0.002219 -0.002088 - 0.622137 0.001958 -0.004176 - 0.622137 0.001696 -0.006177 - 0.622137 0.001174 -0.008265 - 0.622137 0.000565 -0.010266 - 0.622137 -0.000131 -0.012267 - 0.622137 -0.001001 -0.014181 - 0.622137 -0.001958 -0.016008 - 0.622137 -0.003001 -0.017748 - 0.622137 -0.004219 -0.019488 - 0.622137 -0.005524 -0.021141 - 0.622137 -0.006917 -0.022707 - 0.622137 -0.008482 -0.024186 - 0.622137 -0.010049 -0.025491 - 0.622137 -0.011702 -0.026796 - 0.622137 -0.013442 -0.027927 - 0.622137 -0.015268 -0.028971 - 0.622137 -0.017182 -0.029841 - 0.622137 -0.019096 -0.030624 - 0.622137 -0.021097 -0.03132 - 0.622137 -0.023186 -0.031842 - 0.622137 -0.025186 -0.03219 - 0.622137 -0.027275 -0.032451 - 0.622137 -0.029362 -0.032625 - 0.622137 -0.03145 -0.032625 - 0.622137 -0.033539 -0.032451 - 0.622137 -0.035627 -0.03219 - 0.622137 -0.037714 -0.031842 - 0.622137 -0.039715 -0.03132 - 0.622137 -0.041717 -0.030624 - 0.622137 -0.04363 -0.029841 - 0.622137 -0.045545 -0.028971 - 0.622137 -0.047371 -0.027927 - 0.622137 -0.049112 -0.026796 - 0.622137 -0.050765 -0.025491 - 0.622137 -0.052418 -0.024186 - 0.622137 -0.053897 -0.022707 - 0.622137 -0.055289 -0.021141 - 0.622137 -0.056594 -0.019488 - 0.622137 -0.057811 -0.017748 - 0.622137 -0.058943 -0.016008 - 0.622137 -0.0599 -0.014181 - 0.622137 -0.060683 -0.012267 - 0.622137 -0.061466 -0.010266 - 0.622137 -0.062075 -0.008265 - 0.622137 -0.062509 -0.006177 - 0.622137 -0.062858 -0.004176 - 0.622137 -0.063032 -0.002088 - 0.622137 -0.063119 0.0 -e -v - 0.562455 0.019227 0.0 - 0.562455 0.019183 -0.002697 - 0.562455 0.018923 -0.005481 - 0.562455 0.018488 -0.008265 - 0.562455 0.017879 -0.010962 - 0.562455 0.017096 -0.013572 - 0.562455 0.016138 -0.016182 - 0.562455 0.015007 -0.018705 - 0.562455 0.013702 -0.021228 - 0.562455 0.012311 -0.023577 - 0.562455 0.010744 -0.025839 - 0.562455 0.009004 -0.028014 - 0.562455 0.007091 -0.030102 - 0.562455 0.005089 -0.032016 - 0.562455 0.003001 -0.033756 - 0.562455 0.000827 -0.035496 - 0.562455 -0.001522 -0.036975 - 0.562455 -0.003958 -0.038367 - 0.562455 -0.006481 -0.039498 - 0.562455 -0.009004 -0.040542 - 0.562455 -0.011702 -0.041412 - 0.562455 -0.014311 -0.042195 - 0.562455 -0.017096 -0.042717 - 0.562455 -0.019793 -0.043065 - 0.562455 -0.022576 -0.043239 - 0.562455 -0.025361 -0.043239 - 0.562455 -0.028144 -0.043065 - 0.562455 -0.030928 -0.042717 - 0.562455 -0.033625 -0.042195 - 0.562455 -0.036323 -0.041412 - 0.562455 -0.038932 -0.040542 - 0.562455 -0.041543 -0.039498 - 0.562455 -0.043979 -0.038367 - 0.562455 -0.046415 -0.036975 - 0.562455 -0.048763 -0.035496 - 0.562455 -0.050939 -0.033756 - 0.562455 -0.053114 -0.032016 - 0.562455 -0.055115 -0.030102 - 0.562455 -0.056942 -0.028014 - 0.562455 -0.058681 -0.025839 - 0.562455 -0.060247 -0.023577 - 0.562455 -0.061726 -0.021228 - 0.562455 -0.062945 -0.018705 - 0.562455 -0.064075 -0.016182 - 0.562455 -0.065032 -0.013572 - 0.562455 -0.065816 -0.010962 - 0.562455 -0.066425 -0.008265 - 0.562455 -0.066946 -0.005481 - 0.562455 -0.067208 -0.002697 - 0.562455 -0.067295 0.0 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031799 0.0 - 0.688431 -0.024403 0.0 - 0.666246 -0.011528 0.0 - 0.622137 0.002305 0.0 - 0.562455 0.019271 0.0 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031799 -0.000435 - 0.688431 -0.024403 -0.000783 - 0.666246 -0.011614 -0.001392 - 0.622137 0.002219 -0.002088 - 0.562455 0.019183 -0.002697 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031886 -0.000957 - 0.688431 -0.02449 -0.001566 - 0.666246 -0.011702 -0.002871 - 0.622137 0.001958 -0.004176 - 0.562455 0.018923 -0.005481 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.031973 -0.001479 - 0.688431 -0.024665 -0.002436 - 0.666246 -0.011963 -0.00435 - 0.622137 0.001696 -0.006177 - 0.562455 0.018488 -0.008265 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.03206 -0.001914 - 0.688431 -0.024838 -0.003219 - 0.666246 -0.012311 -0.005829 - 0.622137 0.001174 -0.008265 - 0.562455 0.017879 -0.010962 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032233 -0.002436 - 0.688431 -0.0251 -0.004002 - 0.666246 -0.012745 -0.007221 - 0.622137 0.000565 -0.010266 - 0.562455 0.017096 -0.013572 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032407 -0.002871 - 0.688431 -0.025361 -0.004785 - 0.666246 -0.013268 -0.008613 - 0.622137 -0.000131 -0.012267 - 0.562455 0.016138 -0.016182 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032582 -0.003393 - 0.688431 -0.025709 -0.005568 - 0.666246 -0.01379 -0.009918 - 0.622137 -0.001001 -0.014181 - 0.562455 0.015007 -0.018705 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.032842 -0.003828 - 0.688431 -0.026057 -0.006264 - 0.666246 -0.014485 -0.011223 - 0.622137 -0.001958 -0.016008 - 0.562455 0.013702 -0.021228 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033103 -0.004263 - 0.688431 -0.026492 -0.007047 - 0.666246 -0.015268 -0.012528 - 0.622137 -0.003001 -0.017748 - 0.562455 0.012311 -0.023577 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033365 -0.004611 - 0.688431 -0.027013 -0.007656 - 0.666246 -0.016138 -0.013746 - 0.622137 -0.004219 -0.019488 - 0.562455 0.010744 -0.025839 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033625 -0.005046 - 0.688431 -0.027448 -0.008352 - 0.666246 -0.017009 -0.014877 - 0.622137 -0.005524 -0.021141 - 0.562455 0.009004 -0.028014 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.033974 -0.005394 - 0.688431 -0.028058 -0.008961 - 0.666246 -0.018052 -0.016008 - 0.622137 -0.006917 -0.022707 - 0.562455 0.007091 -0.030102 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.034322 -0.005742 - 0.688431 -0.028667 -0.009483 - 0.666246 -0.019096 -0.016965 - 0.622137 -0.008482 -0.024186 - 0.562455 0.005089 -0.032016 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.034757 -0.00609 - 0.688431 -0.029275 -0.010092 - 0.666246 -0.020227 -0.017922 - 0.622137 -0.010049 -0.025491 - 0.562455 0.003001 -0.033756 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.035105 -0.006351 - 0.688431 -0.029972 -0.010527 - 0.666246 -0.021358 -0.018879 - 0.622137 -0.011702 -0.026796 - 0.562455 0.000827 -0.035496 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.03554 -0.006699 - 0.688431 -0.030668 -0.011049 - 0.666246 -0.022664 -0.019662 - 0.622137 -0.013442 -0.027927 - 0.562455 -0.001522 -0.036975 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.035974 -0.006873 - 0.688431 -0.031363 -0.011397 - 0.666246 -0.023882 -0.020358 - 0.622137 -0.015268 -0.028971 - 0.562455 -0.003958 -0.038367 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.036497 -0.007134 - 0.688431 -0.03206 -0.011745 - 0.666246 -0.025274 -0.020967 - 0.622137 -0.017182 -0.029841 - 0.562455 -0.006481 -0.039498 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.036931 -0.007308 - 0.688431 -0.032842 -0.012093 - 0.666246 -0.026579 -0.021576 - 0.622137 -0.019096 -0.030624 - 0.562455 -0.009004 -0.040542 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.037367 -0.007482 - 0.688431 -0.033625 -0.012354 - 0.666246 -0.028058 -0.022011 - 0.622137 -0.021097 -0.03132 - 0.562455 -0.011702 -0.041412 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.037889 -0.007569 - 0.688431 -0.034495 -0.012528 - 0.666246 -0.02945 -0.022359 - 0.622137 -0.023186 -0.031842 - 0.562455 -0.014311 -0.042195 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.03841 -0.007656 - 0.688431 -0.035278 -0.012702 - 0.666246 -0.030928 -0.022707 - 0.622137 -0.025186 -0.03219 - 0.562455 -0.017096 -0.042717 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.038846 -0.007743 - 0.688431 -0.036061 -0.012789 - 0.666246 -0.03232 -0.022881 - 0.622137 -0.027275 -0.032451 - 0.562455 -0.019793 -0.043065 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.039368 -0.00783 - 0.688431 -0.036931 -0.012876 - 0.666246 -0.033799 -0.022968 - 0.622137 -0.029362 -0.032625 - 0.562455 -0.022576 -0.043239 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.039889 -0.00783 - 0.688431 -0.037714 -0.012876 - 0.666246 -0.035278 -0.022968 - 0.622137 -0.03145 -0.032625 - 0.562455 -0.025361 -0.043239 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.040411 -0.007743 - 0.688431 -0.038585 -0.012789 - 0.666246 -0.036757 -0.022881 - 0.622137 -0.033539 -0.032451 - 0.562455 -0.028144 -0.043065 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.040847 -0.007656 - 0.688431 -0.039368 -0.012702 - 0.666246 -0.038236 -0.022707 - 0.622137 -0.035627 -0.03219 - 0.562455 -0.030928 -0.042717 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.041368 -0.007569 - 0.688431 -0.040238 -0.012528 - 0.666246 -0.039715 -0.022359 - 0.622137 -0.037714 -0.031842 - 0.562455 -0.033625 -0.042195 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.041891 -0.007482 - 0.688431 -0.041021 -0.012354 - 0.666246 -0.041108 -0.022011 - 0.622137 -0.039715 -0.03132 - 0.562455 -0.036323 -0.041412 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.042326 -0.007308 - 0.688431 -0.041804 -0.012093 - 0.666246 -0.0425 -0.021576 - 0.622137 -0.041717 -0.030624 - 0.562455 -0.038932 -0.040542 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.042847 -0.007134 - 0.688431 -0.042587 -0.011745 - 0.666246 -0.043892 -0.020967 - 0.622137 -0.04363 -0.029841 - 0.562455 -0.041543 -0.039498 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.043283 -0.006873 - 0.688431 -0.043283 -0.011397 - 0.666246 -0.045196 -0.020358 - 0.622137 -0.045545 -0.028971 - 0.562455 -0.043979 -0.038367 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.043717 -0.006699 - 0.688431 -0.044066 -0.011049 - 0.666246 -0.046501 -0.019662 - 0.622137 -0.047371 -0.027927 - 0.562455 -0.046415 -0.036975 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.044153 -0.006351 - 0.688431 -0.044762 -0.010527 - 0.666246 -0.04772 -0.018879 - 0.622137 -0.049112 -0.026796 - 0.562455 -0.048763 -0.035496 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.0445 -0.00609 - 0.688431 -0.045371 -0.010092 - 0.666246 -0.048937 -0.017922 - 0.622137 -0.050765 -0.025491 - 0.562455 -0.050939 -0.033756 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.044935 -0.005742 - 0.688431 -0.045979 -0.009483 - 0.666246 -0.050069 -0.016965 - 0.622137 -0.052418 -0.024186 - 0.562455 -0.053114 -0.032016 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.045284 -0.005394 - 0.688431 -0.046588 -0.008961 - 0.666246 -0.051112 -0.016008 - 0.622137 -0.053897 -0.022707 - 0.562455 -0.055115 -0.030102 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.045632 -0.005046 - 0.688431 -0.047197 -0.008352 - 0.666246 -0.05207 -0.014877 - 0.622137 -0.055289 -0.021141 - 0.562455 -0.056942 -0.028014 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.045892 -0.004611 - 0.688431 -0.04772 -0.007656 - 0.666246 -0.053027 -0.013746 - 0.622137 -0.056594 -0.019488 - 0.562455 -0.058681 -0.025839 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046241 -0.004263 - 0.688431 -0.048154 -0.007047 - 0.666246 -0.053897 -0.012528 - 0.622137 -0.057811 -0.017748 - 0.562455 -0.060247 -0.023577 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046501 -0.003828 - 0.688431 -0.04859 -0.006264 - 0.666246 -0.054593 -0.011223 - 0.622137 -0.058943 -0.016008 - 0.562455 -0.061726 -0.021228 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046675 -0.003393 - 0.688431 -0.048937 -0.005568 - 0.666246 -0.055289 -0.009918 - 0.622137 -0.0599 -0.014181 - 0.562455 -0.062945 -0.018705 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.046937 -0.002871 - 0.688431 -0.049286 -0.004785 - 0.666246 -0.055898 -0.008613 - 0.622137 -0.060683 -0.012267 - 0.562455 -0.064075 -0.016182 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047111 -0.002436 - 0.688431 -0.049633 -0.004002 - 0.666246 -0.056419 -0.007221 - 0.622137 -0.061466 -0.010266 - 0.562455 -0.065032 -0.013572 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047197 -0.001914 - 0.688431 -0.049808 -0.003219 - 0.666246 -0.056855 -0.005829 - 0.622137 -0.062075 -0.008265 - 0.562455 -0.065816 -0.010962 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047284 -0.001479 - 0.688431 -0.049982 -0.002436 - 0.666246 -0.057202 -0.00435 - 0.622137 -0.062509 -0.006177 - 0.562455 -0.066425 -0.008265 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047371 -0.000957 - 0.688431 -0.050156 -0.001566 - 0.666246 -0.057377 -0.002871 - 0.622137 -0.062858 -0.004176 - 0.562455 -0.066946 -0.005481 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047458 -0.000435 - 0.688431 -0.050242 -0.000783 - 0.666246 -0.057551 -0.001392 - 0.622137 -0.063032 -0.002088 - 0.562455 -0.067208 -0.002697 -e -v - 0.716532 -0.041064 0.0 - 0.701655 -0.047458 0.0 - 0.688431 -0.050242 0.0 - 0.666246 -0.057551 0.0 - 0.622137 -0.063119 0.0 - 0.562455 -0.067295 0.0 -e -v - 0.562455 0.01914 0.0 - 0.562455 0.01901 -0.001218 - 0.562455 0.018835 -0.002523 - 0.562455 0.018748 -0.003741 - 0.562455 0.018575 -0.005046 - 0.562455 0.018313 -0.006264 - 0.562455 0.01814 -0.007482 - 0.562455 0.017879 -0.008787 - 0.562455 0.017617 -0.010005 - 0.562455 0.017357 -0.011223 - 0.562455 0.017096 -0.012528 - 0.562455 0.016748 -0.013746 - 0.562455 0.016313 -0.014964 - 0.562455 0.015878 -0.016095 - 0.562455 0.015442 -0.017313 - 0.562455 0.015007 -0.018531 - 0.562455 0.013442 -0.021663 - 0.562455 0.011702 -0.024621 - 0.562455 0.009701 -0.027405 - 0.562455 0.007438 -0.030102 - 0.562455 0.005003 -0.032538 - 0.562455 0.002305 -0.034713 - 0.562455 -0.000565 -0.036714 - 0.562455 -0.003523 -0.038454 - 0.562455 -0.006743 -0.039933 - 0.562455 -0.009961 -0.041064 - 0.562455 -0.013354 -0.042021 - 0.562455 -0.016748 -0.042804 - 0.562455 -0.020141 -0.043413 - 0.562455 -0.02362 -0.043674 - 0.562455 -0.0271 -0.043587 - 0.562455 -0.030493 -0.043152 - 0.562455 -0.033886 -0.042369 - 0.562455 -0.037193 -0.041412 - 0.562455 -0.040498 -0.040281 - 0.562455 -0.043717 -0.038889 - 0.562455 -0.046762 -0.037236 - 0.562455 -0.04972 -0.035496 - 0.562455 -0.052591 -0.033495 - 0.562455 -0.055289 -0.031233 - 0.562455 -0.057638 -0.028797 - 0.562455 -0.059813 -0.026013 - 0.562455 -0.061726 -0.023142 - 0.562455 -0.06338 -0.020097 - 0.562455 -0.064772 -0.016878 - 0.562455 -0.065903 -0.013659 - 0.562455 -0.066859 -0.010266 - 0.562455 -0.067556 -0.006873 - 0.562455 -0.06799 -0.003393 - 0.562455 -0.068164 0.0 -e -v - 0.522696 0.029232 0.0 - 0.522696 0.029189 -0.001305 - 0.522696 0.029102 -0.002697 - 0.522696 0.028927 -0.004089 - 0.522696 0.028754 -0.005481 - 0.522696 0.028579 -0.006786 - 0.522696 0.028406 -0.008178 - 0.522696 0.028231 -0.00957 - 0.522696 0.027971 -0.010875 - 0.522696 0.02771 -0.012267 - 0.522696 0.027448 -0.013572 - 0.522696 0.0271 -0.014877 - 0.522696 0.026665 -0.016269 - 0.522696 0.026231 -0.017574 - 0.522696 0.025796 -0.018879 - 0.522696 0.025361 -0.020184 - 0.522696 0.023447 -0.023577 - 0.522696 0.021358 -0.02697 - 0.522696 0.019096 -0.030189 - 0.522696 0.016573 -0.033234 - 0.522696 0.013876 -0.036018 - 0.522696 0.010744 -0.038454 - 0.522696 0.007525 -0.040629 - 0.522696 0.004045 -0.042543 - 0.522696 0.000565 -0.044283 - 0.522696 -0.003089 -0.045762 - 0.522696 -0.00683 -0.04698 - 0.522696 -0.010658 -0.04785 - 0.522696 -0.014573 -0.048372 - 0.522696 -0.018488 -0.048546 - 0.522696 -0.022489 -0.048372 - 0.522696 -0.026405 -0.04785 - 0.522696 -0.030233 -0.047154 - 0.522696 -0.034061 -0.046197 - 0.522696 -0.037802 -0.044892 - 0.522696 -0.041368 -0.043326 - 0.522696 -0.044849 -0.041499 - 0.522696 -0.048154 -0.039324 - 0.522696 -0.051286 -0.036888 - 0.522696 -0.054244 -0.034365 - 0.522696 -0.057115 -0.031668 - 0.522696 -0.0599 -0.028884 - 0.522696 -0.062509 -0.025926 - 0.522696 -0.064598 -0.02262 - 0.522696 -0.066338 -0.019053 - 0.522696 -0.06773 -0.015399 - 0.522696 -0.068861 -0.011658 - 0.522696 -0.06973 -0.00783 - 0.522696 -0.070253 -0.003915 - 0.522696 -0.070427 0.0 -e -v - 0.48285 0.039324 0.0 - 0.48285 0.039542 -0.001305 - 0.48285 0.039715 -0.00261 - 0.48285 0.039802 -0.003915 - 0.48285 0.039802 -0.00522 - 0.48285 0.039629 -0.006612 - 0.48285 0.039455 -0.007917 - 0.48285 0.039193 -0.009222 - 0.48285 0.038846 -0.010527 - 0.48285 0.038498 -0.011832 - 0.48285 0.038149 -0.01305 - 0.48285 0.037802 -0.014355 - 0.48285 0.037367 -0.01566 - 0.48285 0.036931 -0.016878 - 0.48285 0.03641 -0.018096 - 0.48285 0.035887 -0.019314 - 0.48285 0.034061 -0.023229 - 0.48285 0.031886 -0.02697 - 0.48285 0.029362 -0.03045 - 0.48285 0.026579 -0.033756 - 0.48285 0.023534 -0.036801 - 0.48285 0.020314 -0.039585 - 0.48285 0.016748 -0.042108 - 0.48285 0.013094 -0.044457 - 0.48285 0.009352 -0.046458 - 0.48285 0.00535 -0.048111 - 0.48285 0.001174 -0.049329 - 0.48285 -0.003001 -0.050025 - 0.48285 -0.007351 -0.05046 - 0.48285 -0.011614 -0.050547 - 0.48285 -0.015965 -0.050286 - 0.48285 -0.020227 -0.049764 - 0.48285 -0.02449 -0.049068 - 0.48285 -0.028667 -0.048198 - 0.48285 -0.032842 -0.047154 - 0.48285 -0.036931 -0.045762 - 0.48285 -0.040934 -0.044109 - 0.48285 -0.044762 -0.042108 - 0.48285 -0.048416 -0.039846 - 0.48285 -0.051895 -0.037323 - 0.48285 -0.055115 -0.034452 - 0.48285 -0.05816 -0.03132 - 0.48285 -0.060856 -0.028014 - 0.48285 -0.063293 -0.024447 - 0.48285 -0.06538 -0.020706 - 0.48285 -0.067208 -0.016791 - 0.48285 -0.068512 -0.012702 - 0.48285 -0.069556 -0.008526 - 0.48285 -0.070166 -0.004263 - 0.48285 -0.070427 0.0 -e -v - 0.456402 0.048546 0.0 - 0.456402 0.048416 -0.001218 - 0.456402 0.048329 -0.002523 - 0.456402 0.048154 -0.003741 - 0.456402 0.04798 -0.004959 - 0.456402 0.04772 -0.006264 - 0.456402 0.047546 -0.007482 - 0.456402 0.047284 -0.008787 - 0.456402 0.047024 -0.010005 - 0.456402 0.046762 -0.011223 - 0.456402 0.046415 -0.012441 - 0.456402 0.046067 -0.013659 - 0.456402 0.045632 -0.014877 - 0.456402 0.045196 -0.016095 - 0.456402 0.044762 -0.017226 - 0.456402 0.044326 -0.018444 - 0.456402 0.041977 -0.022359 - 0.456402 0.039368 -0.0261 - 0.456402 0.036584 -0.029667 - 0.456402 0.033539 -0.033147 - 0.456402 0.03032 -0.036279 - 0.456402 0.026927 -0.039324 - 0.456402 0.023272 -0.042021 - 0.456402 0.019358 -0.044457 - 0.456402 0.015356 -0.046632 - 0.456402 0.01118 -0.048372 - 0.456402 0.00683 -0.049764 - 0.456402 0.002305 -0.050547 - 0.456402 -0.002219 -0.050982 - 0.456402 -0.006743 -0.051243 - 0.456402 -0.011354 -0.05133 - 0.456402 -0.015878 -0.051156 - 0.456402 -0.020402 -0.050634 - 0.456402 -0.024926 -0.049764 - 0.456402 -0.029275 -0.048633 - 0.456402 -0.033625 -0.047154 - 0.456402 -0.037802 -0.045414 - 0.456402 -0.041977 -0.043413 - 0.456402 -0.045979 -0.041238 - 0.456402 -0.049808 -0.038802 - 0.456402 -0.053461 -0.036018 - 0.456402 -0.056855 -0.032973 - 0.456402 -0.059987 -0.029667 - 0.456402 -0.062684 -0.026013 - 0.456402 -0.064859 -0.022011 - 0.456402 -0.066511 -0.017835 - 0.456402 -0.067904 -0.013485 - 0.456402 -0.068948 -0.009048 - 0.456402 -0.069643 -0.004524 - 0.456402 -0.069991 0.0 -e -v - 0.429867 0.058116 0.0 - 0.429867 0.057898 -0.001566 - 0.429867 0.057638 -0.003219 - 0.429867 0.057289 -0.004872 - 0.429867 0.056942 -0.006438 - 0.429867 0.056506 -0.008091 - 0.429867 0.056072 -0.009657 - 0.429867 0.055549 -0.011223 - 0.429867 0.055027 -0.012789 - 0.429867 0.054419 -0.014355 - 0.429867 0.053636 -0.015834 - 0.429867 0.052853 -0.017313 - 0.429867 0.051982 -0.018705 - 0.429867 0.050939 -0.02001 - 0.429867 0.049895 -0.021315 - 0.429867 0.048763 -0.022533 - 0.429867 0.046328 -0.026448 - 0.429867 0.043543 -0.030276 - 0.429867 0.040498 -0.033756 - 0.429867 0.037193 -0.037062 - 0.429867 0.033625 -0.04002 - 0.429867 0.029797 -0.042804 - 0.429867 0.025882 -0.045327 - 0.429867 0.021881 -0.047676 - 0.429867 0.017617 -0.049677 - 0.429867 0.01318 -0.051156 - 0.429867 0.008656 -0.052113 - 0.429867 0.003958 -0.052548 - 0.429867 -0.000653 -0.052809 - 0.429867 -0.00535 -0.052896 - 0.429867 -0.010049 -0.052809 - 0.429867 -0.014659 -0.052461 - 0.429867 -0.019358 -0.051852 - 0.429867 -0.023882 -0.050895 - 0.429867 -0.028406 -0.049677 - 0.429867 -0.032842 -0.048198 - 0.429867 -0.037193 -0.046458 - 0.429867 -0.041368 -0.04437 - 0.429867 -0.045371 -0.041934 - 0.429867 -0.049286 -0.039324 - 0.429867 -0.05294 -0.03654 - 0.429867 -0.056594 -0.033495 - 0.429867 -0.0599 -0.030189 - 0.429867 -0.062684 -0.026535 - 0.429867 -0.065032 -0.022446 - 0.429867 -0.066946 -0.018183 - 0.429867 -0.068512 -0.013833 - 0.429867 -0.069556 -0.009222 - 0.429867 -0.070253 -0.004611 - 0.429867 -0.070427 0.0 -e -v - 0.403332 0.069165 0.0 - 0.403332 0.069122 -0.002958 - 0.403332 0.068774 -0.005916 - 0.403332 0.068251 -0.008874 - 0.403332 0.067469 -0.011745 - 0.403332 0.066598 -0.014529 - 0.403332 0.06538 -0.017313 - 0.403332 0.063901 -0.019923 - 0.403332 0.062162 -0.022272 - 0.403332 0.06016 -0.024534 - 0.403332 0.057898 -0.026535 - 0.403332 0.055549 -0.028362 - 0.403332 0.053114 -0.030015 - 0.403332 0.050503 -0.031407 - 0.403332 0.04772 -0.032625 - 0.403332 0.044935 -0.033669 - 0.403332 0.042064 -0.036975 - 0.403332 0.038846 -0.04002 - 0.403332 0.035452 -0.042717 - 0.403332 0.031799 -0.045153 - 0.403332 0.027971 -0.047241 - 0.403332 0.023969 -0.049068 - 0.403332 0.019879 -0.050547 - 0.403332 0.015616 -0.051678 - 0.403332 0.011354 -0.052548 - 0.403332 0.007004 -0.053157 - 0.403332 0.002654 -0.053418 - 0.403332 -0.001783 -0.053505 - 0.403332 -0.006134 -0.053244 - 0.403332 -0.010483 -0.052722 - 0.403332 -0.014747 -0.052026 - 0.403332 -0.019096 -0.051069 - 0.403332 -0.023359 -0.050025 - 0.403332 -0.027536 -0.048894 - 0.403332 -0.031712 -0.047589 - 0.403332 -0.035801 -0.046023 - 0.403332 -0.039802 -0.044196 - 0.403332 -0.04363 -0.042108 - 0.403332 -0.047284 -0.039672 - 0.403332 -0.050852 -0.037149 - 0.403332 -0.054244 -0.034365 - 0.403332 -0.057377 -0.031233 - 0.403332 -0.060247 -0.028014 - 0.403332 -0.063032 -0.024621 - 0.403332 -0.06538 -0.02088 - 0.403332 -0.067295 -0.016965 - 0.403332 -0.068861 -0.012876 - 0.403332 -0.069904 -0.008613 - 0.403332 -0.070601 -0.00435 - 0.403332 -0.070862 0.0 -e -v - 0.376797 0.084825 0.0 - 0.376797 0.084607 -0.003828 - 0.376797 0.083912 -0.007656 - 0.376797 0.082781 -0.011397 - 0.376797 0.081302 -0.014964 - 0.376797 0.079388 -0.018444 - 0.376797 0.077212 -0.021663 - 0.376797 0.07469 -0.024621 - 0.376797 0.071906 -0.027318 - 0.376797 0.068861 -0.029754 - 0.376797 0.065554 -0.031929 - 0.376797 0.062075 -0.033669 - 0.376797 0.058508 -0.035061 - 0.376797 0.05468 -0.036192 - 0.376797 0.050852 -0.036888 - 0.376797 0.047024 -0.037149 - 0.376797 0.043892 -0.040194 - 0.376797 0.040498 -0.042978 - 0.376797 0.036931 -0.045588 - 0.376797 0.033278 -0.04785 - 0.376797 0.029362 -0.049851 - 0.376797 0.025361 -0.051591 - 0.376797 0.021185 -0.052896 - 0.376797 0.017009 -0.053853 - 0.376797 0.012659 -0.054462 - 0.376797 0.008309 -0.05481 - 0.376797 0.003958 -0.054897 - 0.376797 -0.000392 -0.05481 - 0.376797 -0.004742 -0.054375 - 0.376797 -0.009092 -0.053679 - 0.376797 -0.013354 -0.052809 - 0.376797 -0.017617 -0.051765 - 0.376797 -0.021793 -0.050547 - 0.376797 -0.025882 -0.048981 - 0.376797 -0.029885 -0.047328 - 0.376797 -0.033799 -0.045501 - 0.376797 -0.037714 -0.043413 - 0.376797 -0.041455 -0.041325 - 0.376797 -0.045284 -0.039063 - 0.376797 -0.048937 -0.036714 - 0.376797 -0.052504 -0.034191 - 0.376797 -0.055723 -0.03132 - 0.376797 -0.058681 -0.028014 - 0.376797 -0.061205 -0.024534 - 0.376797 -0.06338 -0.020706 - 0.376797 -0.065293 -0.016791 - 0.376797 -0.066859 -0.012789 - 0.376797 -0.068077 -0.008526 - 0.376797 -0.068948 -0.004263 - 0.376797 -0.069556 0.0 -e -v - 0.323814 0.108228 0.0 - 0.323814 0.108011 -0.00522 - 0.323814 0.107054 -0.010353 - 0.323814 0.105314 -0.015399 - 0.323814 0.102877 -0.02001 - 0.323814 0.100006 -0.024447 - 0.323814 0.096614 -0.028449 - 0.323814 0.092611 -0.031929 - 0.323814 0.088174 -0.0348 - 0.323814 0.083389 -0.037062 - 0.323814 0.078431 -0.038715 - 0.323814 0.073298 -0.039933 - 0.323814 0.068077 -0.040455 - 0.323814 0.062771 -0.040368 - 0.323814 0.057551 -0.039498 - 0.323814 0.052504 -0.038106 - 0.323814 0.049373 -0.041325 - 0.323814 0.046067 -0.04437 - 0.323814 0.0425 -0.047154 - 0.323814 0.038759 -0.04959 - 0.323814 0.034757 -0.051678 - 0.323814 0.030668 -0.053418 - 0.323814 0.026317 -0.054723 - 0.323814 0.021968 -0.05568 - 0.323814 0.017444 -0.056115 - 0.323814 0.013006 -0.056289 - 0.323814 0.008482 -0.056289 - 0.323814 0.004045 -0.055941 - 0.323814 -0.000479 -0.055419 - 0.323814 -0.004916 -0.054636 - 0.323814 -0.009266 -0.053592 - 0.323814 -0.013616 -0.052374 - 0.323814 -0.017879 -0.050982 - 0.323814 -0.022055 -0.049416 - 0.323814 -0.026231 -0.047676 - 0.323814 -0.03032 -0.045762 - 0.323814 -0.034235 -0.043761 - 0.323814 -0.038149 -0.041499 - 0.323814 -0.041977 -0.03915 - 0.323814 -0.045718 -0.036714 - 0.323814 -0.049459 -0.034104 - 0.323814 -0.05294 -0.031233 - 0.323814 -0.056159 -0.028101 - 0.323814 -0.059117 -0.024795 - 0.323814 -0.061813 -0.021228 - 0.323814 -0.064075 -0.017313 - 0.323814 -0.065903 -0.013224 - 0.323814 -0.06712 -0.008874 - 0.323814 -0.067817 -0.004437 - 0.323814 -0.068164 0.0 -e -v - 0.270744 0.112839 0.0 - 0.270744 0.11236 -0.004611 - 0.270744 0.111404 -0.009657 - 0.270744 0.109838 -0.014616 - 0.270744 0.107749 -0.019314 - 0.270744 0.104966 -0.023664 - 0.270744 0.101659 -0.027579 - 0.270744 0.097832 -0.031059 - 0.270744 0.093569 -0.034017 - 0.270744 0.088958 -0.036279 - 0.270744 0.084086 -0.037932 - 0.270744 0.079039 -0.039063 - 0.270744 0.073907 -0.039585 - 0.270744 0.068774 -0.039411 - 0.270744 0.06364 -0.038802 - 0.270744 0.058681 -0.037584 - 0.270744 0.055549 -0.041151 - 0.270744 0.052157 -0.044457 - 0.270744 0.048416 -0.047328 - 0.270744 0.0445 -0.049851 - 0.270744 0.040238 -0.051852 - 0.270744 0.035714 -0.053418 - 0.270744 0.031189 -0.054549 - 0.270744 0.026492 -0.055332 - 0.270744 0.021793 -0.055941 - 0.270744 0.017096 -0.056289 - 0.270744 0.012397 -0.056289 - 0.270744 0.007699 -0.056028 - 0.270744 0.003001 -0.055419 - 0.270744 -0.00161 -0.054723 - 0.270744 -0.00622 -0.053766 - 0.270744 -0.010832 -0.052722 - 0.270744 -0.015442 -0.051678 - 0.270744 -0.019966 -0.050373 - 0.270744 -0.02449 -0.049068 - 0.270744 -0.028927 -0.047415 - 0.270744 -0.033278 -0.045588 - 0.270744 -0.03754 -0.043587 - 0.270744 -0.04163 -0.041238 - 0.270744 -0.045545 -0.038628 - 0.270744 -0.049373 -0.035844 - 0.270744 -0.053027 -0.032886 - 0.270744 -0.056419 -0.029667 - 0.270744 -0.059464 -0.026013 - 0.270744 -0.062162 -0.022185 - 0.270744 -0.064424 -0.018009 - 0.270744 -0.066251 -0.013659 - 0.270744 -0.06773 -0.009222 - 0.270744 -0.068774 -0.004611 - 0.270744 -0.069556 0.0 -e -v - 0.229506 0.11049 0.0 - 0.229506 0.11062 -0.004872 - 0.229506 0.110186 -0.009831 - 0.229506 0.109315 -0.014703 - 0.229506 0.107749 -0.019401 - 0.229506 0.105575 -0.023838 - 0.229506 0.102703 -0.027927 - 0.229506 0.099224 -0.031494 - 0.229506 0.095395 -0.034539 - 0.229506 0.091045 -0.037062 - 0.229506 0.086521 -0.038976 - 0.229506 0.081736 -0.040368 - 0.229506 0.076865 -0.041238 - 0.229506 0.071906 -0.041586 - 0.229506 0.067033 -0.041325 - 0.229506 0.062075 -0.040629 - 0.229506 0.058768 -0.044196 - 0.229506 0.055115 -0.047502 - 0.229506 0.051112 -0.050286 - 0.229506 0.04685 -0.052722 - 0.229506 0.042326 -0.054462 - 0.229506 0.03754 -0.055854 - 0.229506 0.032756 -0.056811 - 0.229506 0.027971 -0.057594 - 0.229506 0.023012 -0.057942 - 0.229506 0.01814 -0.057855 - 0.229506 0.013268 -0.057594 - 0.229506 0.008396 -0.057072 - 0.229506 0.003523 -0.05655 - 0.229506 -0.001349 -0.056028 - 0.229506 -0.00622 -0.055506 - 0.229506 -0.011092 -0.05481 - 0.229506 -0.015878 -0.05394 - 0.229506 -0.020662 -0.052809 - 0.229506 -0.025361 -0.05133 - 0.229506 -0.029885 -0.049503 - 0.229506 -0.034408 -0.047502 - 0.229506 -0.038759 -0.045327 - 0.229506 -0.042934 -0.042804 - 0.229506 -0.047024 -0.04002 - 0.229506 -0.050939 -0.037149 - 0.229506 -0.054766 -0.034104 - 0.229506 -0.058421 -0.030798 - 0.229506 -0.061639 -0.027144 - 0.229506 -0.064511 -0.023055 - 0.229506 -0.066859 -0.018792 - 0.229506 -0.068774 -0.014268 - 0.229506 -0.070166 -0.00957 - 0.229506 -0.071209 -0.004785 - 0.229506 -0.071819 0.0 -e -v - 0.217674 0.110055 0.0 - 0.217674 0.109751 -0.004437 - 0.217674 0.109054 -0.008874 - 0.217674 0.107836 -0.013311 - 0.217674 0.106096 -0.017487 - 0.217674 0.103922 -0.021402 - 0.217674 0.101224 -0.024969 - 0.217674 0.098006 -0.028188 - 0.217674 0.094526 -0.031059 - 0.217674 0.090697 -0.033408 - 0.217674 0.086608 -0.035322 - 0.217674 0.082259 -0.036627 - 0.217674 0.077822 -0.037497 - 0.217674 0.073385 -0.037845 - 0.217674 0.068861 -0.037671 - 0.217674 0.064337 -0.037149 - 0.217674 0.061205 -0.04089 - 0.217674 0.057638 -0.044283 - 0.217674 0.053723 -0.047241 - 0.217674 0.049373 -0.049677 - 0.217674 0.044935 -0.051678 - 0.217674 0.040238 -0.053331 - 0.217674 0.035452 -0.054549 - 0.217674 0.030581 -0.055332 - 0.217674 0.025709 -0.055767 - 0.217674 0.02075 -0.056115 - 0.217674 0.015878 -0.056202 - 0.217674 0.010918 -0.056115 - 0.217674 0.006047 -0.055854 - 0.217674 0.001088 -0.055332 - 0.217674 -0.003785 -0.054636 - 0.217674 -0.008656 -0.053766 - 0.217674 -0.013442 -0.052635 - 0.217674 -0.018227 -0.051417 - 0.217674 -0.022924 -0.049938 - 0.217674 -0.027536 -0.048285 - 0.217674 -0.032146 -0.046458 - 0.217674 -0.036584 -0.04437 - 0.217674 -0.040934 -0.042021 - 0.217674 -0.045109 -0.039411 - 0.217674 -0.049286 -0.036714 - 0.217674 -0.053287 -0.033843 - 0.217674 -0.057028 -0.030711 - 0.217674 -0.060422 -0.027144 - 0.217674 -0.06338 -0.023142 - 0.217674 -0.065816 -0.018879 - 0.217674 -0.06773 -0.014355 - 0.217674 -0.069296 -0.009657 - 0.217674 -0.070253 -0.004872 - 0.217674 -0.070862 0.0 -e -v - 0.164691 0.102225 0.0 - 0.164691 0.101921 -0.00348 - 0.164691 0.101224 -0.00696 - 0.164691 0.100267 -0.010353 - 0.164691 0.09905 -0.013659 - 0.164691 0.097484 -0.016791 - 0.164691 0.095569 -0.019836 - 0.164691 0.093482 -0.022707 - 0.164691 0.091045 -0.025317 - 0.164691 0.088436 -0.027666 - 0.164691 0.085652 -0.029754 - 0.164691 0.082607 -0.031581 - 0.164691 0.079388 -0.03306 - 0.164691 0.075994 -0.034278 - 0.164691 0.072601 -0.035148 - 0.164691 0.069122 -0.03567 - 0.164691 0.066425 -0.039759 - 0.164691 0.062684 -0.043239 - 0.164691 0.058421 -0.04611 - 0.164691 0.05381 -0.048285 - 0.164691 0.049024 -0.050199 - 0.164691 0.044066 -0.051504 - 0.164691 0.039019 -0.052374 - 0.164691 0.033886 -0.052983 - 0.164691 0.028841 -0.053505 - 0.164691 0.023707 -0.05394 - 0.164691 0.018575 -0.054375 - 0.164691 0.013442 -0.054549 - 0.164691 0.008309 -0.054549 - 0.164691 0.003263 -0.054375 - 0.164691 -0.001871 -0.05394 - 0.164691 -0.007004 -0.053418 - 0.164691 -0.012049 -0.052635 - 0.164691 -0.017096 -0.051591 - 0.164691 -0.022055 -0.050373 - 0.164691 -0.027013 -0.048981 - 0.164691 -0.031886 -0.047502 - 0.164691 -0.036757 -0.045849 - 0.164691 -0.041543 -0.043935 - 0.164691 -0.046067 -0.041673 - 0.164691 -0.050416 -0.038889 - 0.164691 -0.054419 -0.03567 - 0.164691 -0.05816 -0.032103 - 0.164691 -0.061552 -0.028275 - 0.164691 -0.064511 -0.024099 - 0.164691 -0.067033 -0.019662 - 0.164691 -0.069035 -0.014964 - 0.164691 -0.070601 -0.010092 - 0.164691 -0.071644 -0.005046 - 0.164691 -0.072254 0.0 -e -v - 0.111621 0.092568 0.0 - 0.111621 0.092698 -0.002436 - 0.111621 0.092611 -0.004959 - 0.111621 0.09235 -0.007482 - 0.111621 0.091916 -0.009918 - 0.111621 0.091307 -0.012354 - 0.111621 0.090524 -0.01479 - 0.111621 0.089653 -0.017139 - 0.111621 0.08861 -0.019401 - 0.111621 0.087305 -0.021576 - 0.111621 0.085913 -0.023664 - 0.111621 0.08426 -0.025578 - 0.111621 0.08252 -0.027405 - 0.111621 0.080605 -0.029058 - 0.111621 0.078604 -0.030537 - 0.111621 0.076517 -0.031929 - 0.111621 0.072862 -0.035931 - 0.111621 0.068948 -0.039672 - 0.111621 0.064685 -0.042978 - 0.111621 0.060073 -0.045849 - 0.111621 0.055202 -0.048285 - 0.111621 0.050156 -0.050199 - 0.111621 0.045022 -0.051765 - 0.111621 0.039715 -0.05307 - 0.111621 0.034408 -0.054027 - 0.111621 0.029014 -0.054549 - 0.111621 0.02362 -0.05481 - 0.111621 0.018227 -0.05481 - 0.111621 0.012745 -0.05481 - 0.111621 0.007351 -0.054636 - 0.111621 0.001958 -0.054462 - 0.111621 -0.003436 -0.054027 - 0.111621 -0.00883 -0.053418 - 0.111621 -0.014225 -0.052635 - 0.111621 -0.019531 -0.051591 - 0.111621 -0.024751 -0.05046 - 0.111621 -0.030058 -0.049155 - 0.111621 -0.035278 -0.047676 - 0.111621 -0.040325 -0.045762 - 0.111621 -0.045196 -0.043413 - 0.111621 -0.049808 -0.040542 - 0.111621 -0.054157 -0.037323 - 0.111621 -0.058247 -0.033756 - 0.111621 -0.061988 -0.029841 - 0.111621 -0.065206 -0.025491 - 0.111621 -0.067904 -0.020793 - 0.111621 -0.070078 -0.015834 - 0.111621 -0.071644 -0.010614 - 0.111621 -0.072688 -0.005307 - 0.111621 -0.073211 0.0 -e -v - 0.058638 0.081606 0.0 - 0.058638 0.081562 -0.001479 - 0.058638 0.081562 -0.003045 - 0.058638 0.081389 -0.004611 - 0.058638 0.081215 -0.006177 - 0.058638 0.080954 -0.007743 - 0.058638 0.080692 -0.009222 - 0.058638 0.080344 -0.010788 - 0.058638 0.079997 -0.012267 - 0.058638 0.079475 -0.013746 - 0.058638 0.078952 -0.015225 - 0.058638 0.078344 -0.016617 - 0.058638 0.077647 -0.018009 - 0.058638 0.076865 -0.019401 - 0.058638 0.076081 -0.020706 - 0.058638 0.075212 -0.022011 - 0.058638 0.07208 -0.026883 - 0.058638 0.068512 -0.030972 - 0.058638 0.064511 -0.034626 - 0.058638 0.06016 -0.037758 - 0.058638 0.055463 -0.040542 - 0.058638 0.050678 -0.042978 - 0.058638 0.045632 -0.044892 - 0.058638 0.040411 -0.046458 - 0.058638 0.035191 -0.047676 - 0.058638 0.029885 -0.04872 - 0.058638 0.02449 -0.049503 - 0.058638 0.019183 -0.050025 - 0.058638 0.013702 -0.050199 - 0.058638 0.008309 -0.050286 - 0.058638 0.002914 -0.050112 - 0.058638 -0.002479 -0.049938 - 0.058638 -0.007873 -0.049677 - 0.058638 -0.013268 -0.049155 - 0.058638 -0.018662 -0.048546 - 0.058638 -0.023969 -0.047676 - 0.058638 -0.029275 -0.046545 - 0.058638 -0.034582 -0.045414 - 0.058638 -0.039802 -0.044022 - 0.058638 -0.044849 -0.042195 - 0.058638 -0.04972 -0.039759 - 0.058638 -0.054244 -0.036888 - 0.058638 -0.058594 -0.033582 - 0.058638 -0.062422 -0.029841 - 0.058638 -0.065816 -0.025665 - 0.058638 -0.068512 -0.020967 - 0.058638 -0.070514 -0.015921 - 0.058638 -0.071906 -0.010701 - 0.058638 -0.072601 -0.005394 - 0.058638 -0.072775 0.0 -e -v - 0.562455 0.01914 0.0 - 0.522696 0.029275 0.0 - 0.48285 0.039368 0.0 - 0.456402 0.04859 0.0 - 0.429867 0.05816 0.0 - 0.403332 0.069209 0.0 - 0.376797 0.084868 0.0 - 0.323814 0.108272 0.0 - 0.270744 0.112883 0.0 - 0.229506 0.110533 0.0 - 0.217674 0.110099 0.0 - 0.164691 0.102269 0.0 - 0.111621 0.092611 0.0 - 0.058638 0.081649 0.0 -e -v - 0.562455 0.018966 -0.001218 - 0.522696 0.029189 -0.001305 - 0.48285 0.039542 -0.001305 - 0.456402 0.048416 -0.001218 - 0.429867 0.057898 -0.001566 - 0.403332 0.069122 -0.002958 - 0.376797 0.084607 -0.003828 - 0.323814 0.108011 -0.00522 - 0.270744 0.11236 -0.004611 - 0.229506 0.11062 -0.004872 - 0.217674 0.109751 -0.004437 - 0.164691 0.101921 -0.00348 - 0.111621 0.092698 -0.002436 - 0.058638 0.081562 -0.001479 -e -v - 0.562455 0.018792 -0.002523 - 0.522696 0.029102 -0.002697 - 0.48285 0.039715 -0.00261 - 0.456402 0.048329 -0.002523 - 0.429867 0.057638 -0.003219 - 0.403332 0.068774 -0.005916 - 0.376797 0.083912 -0.007656 - 0.323814 0.107054 -0.010353 - 0.270744 0.111404 -0.009657 - 0.229506 0.110186 -0.009831 - 0.217674 0.109054 -0.008874 - 0.164691 0.101224 -0.00696 - 0.111621 0.092611 -0.004959 - 0.058638 0.081562 -0.003045 -e -v - 0.562455 0.018705 -0.003741 - 0.522696 0.028927 -0.004089 - 0.48285 0.039802 -0.003915 - 0.456402 0.048154 -0.003741 - 0.429867 0.057289 -0.004872 - 0.403332 0.068251 -0.008874 - 0.376797 0.082781 -0.011397 - 0.323814 0.105314 -0.015399 - 0.270744 0.109838 -0.014616 - 0.229506 0.109315 -0.014703 - 0.217674 0.107836 -0.013311 - 0.164691 0.100267 -0.010353 - 0.111621 0.09235 -0.007482 - 0.058638 0.081389 -0.004611 -e -v - 0.562455 0.018531 -0.005046 - 0.522696 0.028754 -0.005481 - 0.48285 0.039802 -0.00522 - 0.456402 0.04798 -0.004959 - 0.429867 0.056942 -0.006438 - 0.403332 0.067469 -0.011745 - 0.376797 0.081302 -0.014964 - 0.323814 0.102877 -0.02001 - 0.270744 0.107749 -0.019314 - 0.229506 0.107749 -0.019401 - 0.217674 0.106096 -0.017487 - 0.164691 0.09905 -0.013659 - 0.111621 0.091916 -0.009918 - 0.058638 0.081215 -0.006177 -e -v - 0.562455 0.01827 -0.006264 - 0.522696 0.028579 -0.006786 - 0.48285 0.039629 -0.006612 - 0.456402 0.04772 -0.006264 - 0.429867 0.056506 -0.008091 - 0.403332 0.066598 -0.014529 - 0.376797 0.079388 -0.018444 - 0.323814 0.100006 -0.024447 - 0.270744 0.104966 -0.023664 - 0.229506 0.105575 -0.023838 - 0.217674 0.103922 -0.021402 - 0.164691 0.097484 -0.016791 - 0.111621 0.091307 -0.012354 - 0.058638 0.080954 -0.007743 -e -v - 0.562455 0.018096 -0.007482 - 0.522696 0.028406 -0.008178 - 0.48285 0.039455 -0.007917 - 0.456402 0.047546 -0.007482 - 0.429867 0.056072 -0.009657 - 0.403332 0.06538 -0.017313 - 0.376797 0.077212 -0.021663 - 0.323814 0.096614 -0.028449 - 0.270744 0.101659 -0.027579 - 0.229506 0.102703 -0.027927 - 0.217674 0.101224 -0.024969 - 0.164691 0.095569 -0.019836 - 0.111621 0.090524 -0.01479 - 0.058638 0.080692 -0.009222 -e -v - 0.562455 0.017835 -0.008787 - 0.522696 0.028231 -0.00957 - 0.48285 0.039193 -0.009222 - 0.456402 0.047284 -0.008787 - 0.429867 0.055549 -0.011223 - 0.403332 0.063901 -0.019923 - 0.376797 0.07469 -0.024621 - 0.323814 0.092611 -0.031929 - 0.270744 0.097832 -0.031059 - 0.229506 0.099224 -0.031494 - 0.217674 0.098006 -0.028188 - 0.164691 0.093482 -0.022707 - 0.111621 0.089653 -0.017139 - 0.058638 0.080344 -0.010788 -e -v - 0.562455 0.017574 -0.010005 - 0.522696 0.027971 -0.010875 - 0.48285 0.038846 -0.010527 - 0.456402 0.047024 -0.010005 - 0.429867 0.055027 -0.012789 - 0.403332 0.062162 -0.022272 - 0.376797 0.071906 -0.027318 - 0.323814 0.088174 -0.0348 - 0.270744 0.093569 -0.034017 - 0.229506 0.095395 -0.034539 - 0.217674 0.094526 -0.031059 - 0.164691 0.091045 -0.025317 - 0.111621 0.08861 -0.019401 - 0.058638 0.079997 -0.012267 -e -v - 0.562455 0.017313 -0.011223 - 0.522696 0.02771 -0.012267 - 0.48285 0.038498 -0.011832 - 0.456402 0.046762 -0.011223 - 0.429867 0.054419 -0.014355 - 0.403332 0.06016 -0.024534 - 0.376797 0.068861 -0.029754 - 0.323814 0.083389 -0.037062 - 0.270744 0.088958 -0.036279 - 0.229506 0.091045 -0.037062 - 0.217674 0.090697 -0.033408 - 0.164691 0.088436 -0.027666 - 0.111621 0.087305 -0.021576 - 0.058638 0.079475 -0.013746 -e -v - 0.562455 0.017052 -0.012528 - 0.522696 0.027448 -0.013572 - 0.48285 0.038149 -0.01305 - 0.456402 0.046415 -0.012441 - 0.429867 0.053636 -0.015834 - 0.403332 0.057898 -0.026535 - 0.376797 0.065554 -0.031929 - 0.323814 0.078431 -0.038715 - 0.270744 0.084086 -0.037932 - 0.229506 0.086521 -0.038976 - 0.217674 0.086608 -0.035322 - 0.164691 0.085652 -0.029754 - 0.111621 0.085913 -0.023664 - 0.058638 0.078952 -0.015225 -e -v - 0.562455 0.016704 -0.013746 - 0.522696 0.0271 -0.014877 - 0.48285 0.037802 -0.014355 - 0.456402 0.046067 -0.013659 - 0.429867 0.052853 -0.017313 - 0.403332 0.055549 -0.028362 - 0.376797 0.062075 -0.033669 - 0.323814 0.073298 -0.039933 - 0.270744 0.079039 -0.039063 - 0.229506 0.081736 -0.040368 - 0.217674 0.082259 -0.036627 - 0.164691 0.082607 -0.031581 - 0.111621 0.08426 -0.025578 - 0.058638 0.078344 -0.016617 -e -v - 0.562455 0.016269 -0.014964 - 0.522696 0.026665 -0.016269 - 0.48285 0.037367 -0.01566 - 0.456402 0.045632 -0.014877 - 0.429867 0.051982 -0.018705 - 0.403332 0.053114 -0.030015 - 0.376797 0.058508 -0.035061 - 0.323814 0.068077 -0.040455 - 0.270744 0.073907 -0.039585 - 0.229506 0.076865 -0.041238 - 0.217674 0.077822 -0.037497 - 0.164691 0.079388 -0.03306 - 0.111621 0.08252 -0.027405 - 0.058638 0.077647 -0.018009 -e -v - 0.562455 0.015834 -0.016095 - 0.522696 0.026231 -0.017574 - 0.48285 0.036931 -0.016878 - 0.456402 0.045196 -0.016095 - 0.429867 0.050939 -0.02001 - 0.403332 0.050503 -0.031407 - 0.376797 0.05468 -0.036192 - 0.323814 0.062771 -0.040368 - 0.270744 0.068774 -0.039411 - 0.229506 0.071906 -0.041586 - 0.217674 0.073385 -0.037845 - 0.164691 0.075994 -0.034278 - 0.111621 0.080605 -0.029058 - 0.058638 0.076865 -0.019401 -e -v - 0.562455 0.015399 -0.017313 - 0.522696 0.025796 -0.018879 - 0.48285 0.03641 -0.018096 - 0.456402 0.044762 -0.017226 - 0.429867 0.049895 -0.021315 - 0.403332 0.04772 -0.032625 - 0.376797 0.050852 -0.036888 - 0.323814 0.057551 -0.039498 - 0.270744 0.06364 -0.038802 - 0.229506 0.067033 -0.041325 - 0.217674 0.068861 -0.037671 - 0.164691 0.072601 -0.035148 - 0.111621 0.078604 -0.030537 - 0.058638 0.076081 -0.020706 -e -v - 0.562455 0.014964 -0.018531 - 0.522696 0.025361 -0.020184 - 0.48285 0.035887 -0.019314 - 0.456402 0.044326 -0.018444 - 0.429867 0.048763 -0.022533 - 0.403332 0.044935 -0.033669 - 0.376797 0.047024 -0.037149 - 0.323814 0.052504 -0.038106 - 0.270744 0.058681 -0.037584 - 0.229506 0.062075 -0.040629 - 0.217674 0.064337 -0.037149 - 0.164691 0.069122 -0.03567 - 0.111621 0.076517 -0.031929 - 0.058638 0.075212 -0.022011 -e -v - 0.562455 0.013398 -0.021663 - 0.522696 0.023447 -0.023577 - 0.48285 0.034061 -0.023229 - 0.456402 0.041977 -0.022359 - 0.429867 0.046328 -0.026448 - 0.403332 0.042064 -0.036975 - 0.376797 0.043892 -0.040194 - 0.323814 0.049373 -0.041325 - 0.270744 0.055549 -0.041151 - 0.229506 0.058768 -0.044196 - 0.217674 0.061205 -0.04089 - 0.164691 0.066425 -0.039759 - 0.111621 0.072862 -0.035931 - 0.058638 0.07208 -0.026883 -e -v - 0.562455 0.011658 -0.024621 - 0.522696 0.021358 -0.02697 - 0.48285 0.031886 -0.02697 - 0.456402 0.039368 -0.0261 - 0.429867 0.043543 -0.030276 - 0.403332 0.038846 -0.04002 - 0.376797 0.040498 -0.042978 - 0.323814 0.046067 -0.04437 - 0.270744 0.052157 -0.044457 - 0.229506 0.055115 -0.047502 - 0.217674 0.057638 -0.044283 - 0.164691 0.062684 -0.043239 - 0.111621 0.068948 -0.039672 - 0.058638 0.068512 -0.030972 -e -v - 0.562455 0.009657 -0.027405 - 0.522696 0.019096 -0.030189 - 0.48285 0.029362 -0.03045 - 0.456402 0.036584 -0.029667 - 0.429867 0.040498 -0.033756 - 0.403332 0.035452 -0.042717 - 0.376797 0.036931 -0.045588 - 0.323814 0.0425 -0.047154 - 0.270744 0.048416 -0.047328 - 0.229506 0.051112 -0.050286 - 0.217674 0.053723 -0.047241 - 0.164691 0.058421 -0.04611 - 0.111621 0.064685 -0.042978 - 0.058638 0.064511 -0.034626 -e -v - 0.562455 0.007395 -0.030102 - 0.522696 0.016573 -0.033234 - 0.48285 0.026579 -0.033756 - 0.456402 0.033539 -0.033147 - 0.429867 0.037193 -0.037062 - 0.403332 0.031799 -0.045153 - 0.376797 0.033278 -0.04785 - 0.323814 0.038759 -0.04959 - 0.270744 0.0445 -0.049851 - 0.229506 0.04685 -0.052722 - 0.217674 0.049373 -0.049677 - 0.164691 0.05381 -0.048285 - 0.111621 0.060073 -0.045849 - 0.058638 0.06016 -0.037758 -e -v - 0.562455 0.004959 -0.032538 - 0.522696 0.013876 -0.036018 - 0.48285 0.023534 -0.036801 - 0.456402 0.03032 -0.036279 - 0.429867 0.033625 -0.04002 - 0.403332 0.027971 -0.047241 - 0.376797 0.029362 -0.049851 - 0.323814 0.034757 -0.051678 - 0.270744 0.040238 -0.051852 - 0.229506 0.042326 -0.054462 - 0.217674 0.044935 -0.051678 - 0.164691 0.049024 -0.050199 - 0.111621 0.055202 -0.048285 - 0.058638 0.055463 -0.040542 -e -v - 0.562455 0.002262 -0.034713 - 0.522696 0.010744 -0.038454 - 0.48285 0.020314 -0.039585 - 0.456402 0.026927 -0.039324 - 0.429867 0.029797 -0.042804 - 0.403332 0.023969 -0.049068 - 0.376797 0.025361 -0.051591 - 0.323814 0.030668 -0.053418 - 0.270744 0.035714 -0.053418 - 0.229506 0.03754 -0.055854 - 0.217674 0.040238 -0.053331 - 0.164691 0.044066 -0.051504 - 0.111621 0.050156 -0.050199 - 0.058638 0.050678 -0.042978 -e -v - 0.562455 -0.000609 -0.036714 - 0.522696 0.007525 -0.040629 - 0.48285 0.016748 -0.042108 - 0.456402 0.023272 -0.042021 - 0.429867 0.025882 -0.045327 - 0.403332 0.019879 -0.050547 - 0.376797 0.021185 -0.052896 - 0.323814 0.026317 -0.054723 - 0.270744 0.031189 -0.054549 - 0.229506 0.032756 -0.056811 - 0.217674 0.035452 -0.054549 - 0.164691 0.039019 -0.052374 - 0.111621 0.045022 -0.051765 - 0.058638 0.045632 -0.044892 -e -v - 0.562455 -0.003567 -0.038454 - 0.522696 0.004045 -0.042543 - 0.48285 0.013094 -0.044457 - 0.456402 0.019358 -0.044457 - 0.429867 0.021881 -0.047676 - 0.403332 0.015616 -0.051678 - 0.376797 0.017009 -0.053853 - 0.323814 0.021968 -0.05568 - 0.270744 0.026492 -0.055332 - 0.229506 0.027971 -0.057594 - 0.217674 0.030581 -0.055332 - 0.164691 0.033886 -0.052983 - 0.111621 0.039715 -0.05307 - 0.058638 0.040411 -0.046458 -e -v - 0.562455 -0.006786 -0.039933 - 0.522696 0.000565 -0.044283 - 0.48285 0.009352 -0.046458 - 0.456402 0.015356 -0.046632 - 0.429867 0.017617 -0.049677 - 0.403332 0.011354 -0.052548 - 0.376797 0.012659 -0.054462 - 0.323814 0.017444 -0.056115 - 0.270744 0.021793 -0.055941 - 0.229506 0.023012 -0.057942 - 0.217674 0.025709 -0.055767 - 0.164691 0.028841 -0.053505 - 0.111621 0.034408 -0.054027 - 0.058638 0.035191 -0.047676 -e -v - 0.562455 -0.010005 -0.041064 - 0.522696 -0.003089 -0.045762 - 0.48285 0.00535 -0.048111 - 0.456402 0.01118 -0.048372 - 0.429867 0.01318 -0.051156 - 0.403332 0.007004 -0.053157 - 0.376797 0.008309 -0.05481 - 0.323814 0.013006 -0.056289 - 0.270744 0.017096 -0.056289 - 0.229506 0.01814 -0.057855 - 0.217674 0.02075 -0.056115 - 0.164691 0.023707 -0.05394 - 0.111621 0.029014 -0.054549 - 0.058638 0.029885 -0.04872 -e -v - 0.562455 -0.013398 -0.042021 - 0.522696 -0.00683 -0.04698 - 0.48285 0.001174 -0.049329 - 0.456402 0.00683 -0.049764 - 0.429867 0.008656 -0.052113 - 0.403332 0.002654 -0.053418 - 0.376797 0.003958 -0.054897 - 0.323814 0.008482 -0.056289 - 0.270744 0.012397 -0.056289 - 0.229506 0.013268 -0.057594 - 0.217674 0.015878 -0.056202 - 0.164691 0.018575 -0.054375 - 0.111621 0.02362 -0.05481 - 0.058638 0.02449 -0.049503 -e -v - 0.562455 -0.016791 -0.042804 - 0.522696 -0.010658 -0.04785 - 0.48285 -0.003001 -0.050025 - 0.456402 0.002305 -0.050547 - 0.429867 0.003958 -0.052548 - 0.403332 -0.001783 -0.053505 - 0.376797 -0.000392 -0.05481 - 0.323814 0.004045 -0.055941 - 0.270744 0.007699 -0.056028 - 0.229506 0.008396 -0.057072 - 0.217674 0.010918 -0.056115 - 0.164691 0.013442 -0.054549 - 0.111621 0.018227 -0.05481 - 0.058638 0.019183 -0.050025 -e -v - 0.562455 -0.020184 -0.043413 - 0.522696 -0.014573 -0.048372 - 0.48285 -0.007351 -0.05046 - 0.456402 -0.002219 -0.050982 - 0.429867 -0.000653 -0.052809 - 0.403332 -0.006134 -0.053244 - 0.376797 -0.004742 -0.054375 - 0.323814 -0.000479 -0.055419 - 0.270744 0.003001 -0.055419 - 0.229506 0.003523 -0.05655 - 0.217674 0.006047 -0.055854 - 0.164691 0.008309 -0.054549 - 0.111621 0.012745 -0.05481 - 0.058638 0.013702 -0.050199 -e -v - 0.562455 -0.023664 -0.043674 - 0.522696 -0.018488 -0.048546 - 0.48285 -0.011614 -0.050547 - 0.456402 -0.006743 -0.051243 - 0.429867 -0.00535 -0.052896 - 0.403332 -0.010483 -0.052722 - 0.376797 -0.009092 -0.053679 - 0.323814 -0.004916 -0.054636 - 0.270744 -0.00161 -0.054723 - 0.229506 -0.001349 -0.056028 - 0.217674 0.001088 -0.055332 - 0.164691 0.003263 -0.054375 - 0.111621 0.007351 -0.054636 - 0.058638 0.008309 -0.050286 -e -v - 0.562455 -0.027144 -0.043587 - 0.522696 -0.022489 -0.048372 - 0.48285 -0.015965 -0.050286 - 0.456402 -0.011354 -0.05133 - 0.429867 -0.010049 -0.052809 - 0.403332 -0.014747 -0.052026 - 0.376797 -0.013354 -0.052809 - 0.323814 -0.009266 -0.053592 - 0.270744 -0.00622 -0.053766 - 0.229506 -0.00622 -0.055506 - 0.217674 -0.003785 -0.054636 - 0.164691 -0.001871 -0.05394 - 0.111621 0.001958 -0.054462 - 0.058638 0.002914 -0.050112 -e -v - 0.562455 -0.030537 -0.043152 - 0.522696 -0.026405 -0.04785 - 0.48285 -0.020227 -0.049764 - 0.456402 -0.015878 -0.051156 - 0.429867 -0.014659 -0.052461 - 0.403332 -0.019096 -0.051069 - 0.376797 -0.017617 -0.051765 - 0.323814 -0.013616 -0.052374 - 0.270744 -0.010832 -0.052722 - 0.229506 -0.011092 -0.05481 - 0.217674 -0.008656 -0.053766 - 0.164691 -0.007004 -0.053418 - 0.111621 -0.003436 -0.054027 - 0.058638 -0.002479 -0.049938 -e -v - 0.562455 -0.03393 -0.042369 - 0.522696 -0.030233 -0.047154 - 0.48285 -0.02449 -0.049068 - 0.456402 -0.020402 -0.050634 - 0.429867 -0.019358 -0.051852 - 0.403332 -0.023359 -0.050025 - 0.376797 -0.021793 -0.050547 - 0.323814 -0.017879 -0.050982 - 0.270744 -0.015442 -0.051678 - 0.229506 -0.015878 -0.05394 - 0.217674 -0.013442 -0.052635 - 0.164691 -0.012049 -0.052635 - 0.111621 -0.00883 -0.053418 - 0.058638 -0.007873 -0.049677 -e -v - 0.562455 -0.037236 -0.041412 - 0.522696 -0.034061 -0.046197 - 0.48285 -0.028667 -0.048198 - 0.456402 -0.024926 -0.049764 - 0.429867 -0.023882 -0.050895 - 0.403332 -0.027536 -0.048894 - 0.376797 -0.025882 -0.048981 - 0.323814 -0.022055 -0.049416 - 0.270744 -0.019966 -0.050373 - 0.229506 -0.020662 -0.052809 - 0.217674 -0.018227 -0.051417 - 0.164691 -0.017096 -0.051591 - 0.111621 -0.014225 -0.052635 - 0.058638 -0.013268 -0.049155 -e -v - 0.562455 -0.040542 -0.040281 - 0.522696 -0.037802 -0.044892 - 0.48285 -0.032842 -0.047154 - 0.456402 -0.029275 -0.048633 - 0.429867 -0.028406 -0.049677 - 0.403332 -0.031712 -0.047589 - 0.376797 -0.029885 -0.047328 - 0.323814 -0.026231 -0.047676 - 0.270744 -0.02449 -0.049068 - 0.229506 -0.025361 -0.05133 - 0.217674 -0.022924 -0.049938 - 0.164691 -0.022055 -0.050373 - 0.111621 -0.019531 -0.051591 - 0.058638 -0.018662 -0.048546 -e -v - 0.562455 -0.043761 -0.038889 - 0.522696 -0.041368 -0.043326 - 0.48285 -0.036931 -0.045762 - 0.456402 -0.033625 -0.047154 - 0.429867 -0.032842 -0.048198 - 0.403332 -0.035801 -0.046023 - 0.376797 -0.033799 -0.045501 - 0.323814 -0.03032 -0.045762 - 0.270744 -0.028927 -0.047415 - 0.229506 -0.029885 -0.049503 - 0.217674 -0.027536 -0.048285 - 0.164691 -0.027013 -0.048981 - 0.111621 -0.024751 -0.05046 - 0.058638 -0.023969 -0.047676 -e -v - 0.562455 -0.046806 -0.037236 - 0.522696 -0.044849 -0.041499 - 0.48285 -0.040934 -0.044109 - 0.456402 -0.037802 -0.045414 - 0.429867 -0.037193 -0.046458 - 0.403332 -0.039802 -0.044196 - 0.376797 -0.037714 -0.043413 - 0.323814 -0.034235 -0.043761 - 0.270744 -0.033278 -0.045588 - 0.229506 -0.034408 -0.047502 - 0.217674 -0.032146 -0.046458 - 0.164691 -0.031886 -0.047502 - 0.111621 -0.030058 -0.049155 - 0.058638 -0.029275 -0.046545 -e -v - 0.562455 -0.049764 -0.035496 - 0.522696 -0.048154 -0.039324 - 0.48285 -0.044762 -0.042108 - 0.456402 -0.041977 -0.043413 - 0.429867 -0.041368 -0.04437 - 0.403332 -0.04363 -0.042108 - 0.376797 -0.041455 -0.041325 - 0.323814 -0.038149 -0.041499 - 0.270744 -0.03754 -0.043587 - 0.229506 -0.038759 -0.045327 - 0.217674 -0.036584 -0.04437 - 0.164691 -0.036757 -0.045849 - 0.111621 -0.035278 -0.047676 - 0.058638 -0.034582 -0.045414 -e -v - 0.562455 -0.052635 -0.033495 - 0.522696 -0.051286 -0.036888 - 0.48285 -0.048416 -0.039846 - 0.456402 -0.045979 -0.041238 - 0.429867 -0.045371 -0.041934 - 0.403332 -0.047284 -0.039672 - 0.376797 -0.045284 -0.039063 - 0.323814 -0.041977 -0.03915 - 0.270744 -0.04163 -0.041238 - 0.229506 -0.042934 -0.042804 - 0.217674 -0.040934 -0.042021 - 0.164691 -0.041543 -0.043935 - 0.111621 -0.040325 -0.045762 - 0.058638 -0.039802 -0.044022 -e -v - 0.562455 -0.055332 -0.031233 - 0.522696 -0.054244 -0.034365 - 0.48285 -0.051895 -0.037323 - 0.456402 -0.049808 -0.038802 - 0.429867 -0.049286 -0.039324 - 0.403332 -0.050852 -0.037149 - 0.376797 -0.048937 -0.036714 - 0.323814 -0.045718 -0.036714 - 0.270744 -0.045545 -0.038628 - 0.229506 -0.047024 -0.04002 - 0.217674 -0.045109 -0.039411 - 0.164691 -0.046067 -0.041673 - 0.111621 -0.045196 -0.043413 - 0.058638 -0.044849 -0.042195 -e -v - 0.562455 -0.057681 -0.028797 - 0.522696 -0.057115 -0.031668 - 0.48285 -0.055115 -0.034452 - 0.456402 -0.053461 -0.036018 - 0.429867 -0.05294 -0.03654 - 0.403332 -0.054244 -0.034365 - 0.376797 -0.052504 -0.034191 - 0.323814 -0.049459 -0.034104 - 0.270744 -0.049373 -0.035844 - 0.229506 -0.050939 -0.037149 - 0.217674 -0.049286 -0.036714 - 0.164691 -0.050416 -0.038889 - 0.111621 -0.049808 -0.040542 - 0.058638 -0.04972 -0.039759 -e -v - 0.562455 -0.059856 -0.026013 - 0.522696 -0.0599 -0.028884 - 0.48285 -0.05816 -0.03132 - 0.456402 -0.056855 -0.032973 - 0.429867 -0.056594 -0.033495 - 0.403332 -0.057377 -0.031233 - 0.376797 -0.055723 -0.03132 - 0.323814 -0.05294 -0.031233 - 0.270744 -0.053027 -0.032886 - 0.229506 -0.054766 -0.034104 - 0.217674 -0.053287 -0.033843 - 0.164691 -0.054419 -0.03567 - 0.111621 -0.054157 -0.037323 - 0.058638 -0.054244 -0.036888 -e -v - 0.562455 -0.06177 -0.023142 - 0.522696 -0.062509 -0.025926 - 0.48285 -0.060856 -0.028014 - 0.456402 -0.059987 -0.029667 - 0.429867 -0.0599 -0.030189 - 0.403332 -0.060247 -0.028014 - 0.376797 -0.058681 -0.028014 - 0.323814 -0.056159 -0.028101 - 0.270744 -0.056419 -0.029667 - 0.229506 -0.058421 -0.030798 - 0.217674 -0.057028 -0.030711 - 0.164691 -0.05816 -0.032103 - 0.111621 -0.058247 -0.033756 - 0.058638 -0.058594 -0.033582 -e -v - 0.562455 -0.063423 -0.020097 - 0.522696 -0.064598 -0.02262 - 0.48285 -0.063293 -0.024447 - 0.456402 -0.062684 -0.026013 - 0.429867 -0.062684 -0.026535 - 0.403332 -0.063032 -0.024621 - 0.376797 -0.061205 -0.024534 - 0.323814 -0.059117 -0.024795 - 0.270744 -0.059464 -0.026013 - 0.229506 -0.061639 -0.027144 - 0.217674 -0.060422 -0.027144 - 0.164691 -0.061552 -0.028275 - 0.111621 -0.061988 -0.029841 - 0.058638 -0.062422 -0.029841 -e -v - 0.562455 -0.064815 -0.016878 - 0.522696 -0.066338 -0.019053 - 0.48285 -0.06538 -0.020706 - 0.456402 -0.064859 -0.022011 - 0.429867 -0.065032 -0.022446 - 0.403332 -0.06538 -0.02088 - 0.376797 -0.06338 -0.020706 - 0.323814 -0.061813 -0.021228 - 0.270744 -0.062162 -0.022185 - 0.229506 -0.064511 -0.023055 - 0.217674 -0.06338 -0.023142 - 0.164691 -0.064511 -0.024099 - 0.111621 -0.065206 -0.025491 - 0.058638 -0.065816 -0.025665 -e -v - 0.562455 -0.065946 -0.013659 - 0.522696 -0.06773 -0.015399 - 0.48285 -0.067208 -0.016791 - 0.456402 -0.066511 -0.017835 - 0.429867 -0.066946 -0.018183 - 0.403332 -0.067295 -0.016965 - 0.376797 -0.065293 -0.016791 - 0.323814 -0.064075 -0.017313 - 0.270744 -0.064424 -0.018009 - 0.229506 -0.066859 -0.018792 - 0.217674 -0.065816 -0.018879 - 0.164691 -0.067033 -0.019662 - 0.111621 -0.067904 -0.020793 - 0.058638 -0.068512 -0.020967 -e -v - 0.562455 -0.066903 -0.010266 - 0.522696 -0.068861 -0.011658 - 0.48285 -0.068512 -0.012702 - 0.456402 -0.067904 -0.013485 - 0.429867 -0.068512 -0.013833 - 0.403332 -0.068861 -0.012876 - 0.376797 -0.066859 -0.012789 - 0.323814 -0.065903 -0.013224 - 0.270744 -0.066251 -0.013659 - 0.229506 -0.068774 -0.014268 - 0.217674 -0.06773 -0.014355 - 0.164691 -0.069035 -0.014964 - 0.111621 -0.070078 -0.015834 - 0.058638 -0.070514 -0.015921 -e -v - 0.562455 -0.067599 -0.006873 - 0.522696 -0.06973 -0.00783 - 0.48285 -0.069556 -0.008526 - 0.456402 -0.068948 -0.009048 - 0.429867 -0.069556 -0.009222 - 0.403332 -0.069904 -0.008613 - 0.376797 -0.068077 -0.008526 - 0.323814 -0.06712 -0.008874 - 0.270744 -0.06773 -0.009222 - 0.229506 -0.070166 -0.00957 - 0.217674 -0.069296 -0.009657 - 0.164691 -0.070601 -0.010092 - 0.111621 -0.071644 -0.010614 - 0.058638 -0.071906 -0.010701 -e -v - 0.562455 -0.068034 -0.003393 - 0.522696 -0.070253 -0.003915 - 0.48285 -0.070166 -0.004263 - 0.456402 -0.069643 -0.004524 - 0.429867 -0.070253 -0.004611 - 0.403332 -0.070601 -0.00435 - 0.376797 -0.068948 -0.004263 - 0.323814 -0.067817 -0.004437 - 0.270744 -0.068774 -0.004611 - 0.229506 -0.071209 -0.004785 - 0.217674 -0.070253 -0.004872 - 0.164691 -0.071644 -0.005046 - 0.111621 -0.072688 -0.005307 - 0.058638 -0.072601 -0.005394 -e -v - 0.562455 -0.068208 0.0 - 0.522696 -0.070427 0.0 - 0.48285 -0.070427 0.0 - 0.456402 -0.069991 0.0 - 0.429867 -0.070427 0.0 - 0.403332 -0.070862 0.0 - 0.376797 -0.069556 0.0 - 0.323814 -0.068164 0.0 - 0.270744 -0.069556 0.0 - 0.229506 -0.071819 0.0 - 0.217674 -0.070862 0.0 - 0.164691 -0.072254 0.0 - 0.111621 -0.073211 0.0 - 0.058638 -0.072775 0.0 -e -v - 0.058638 0.081867 0.0 - 0.058638 0.078431 -0.017835 - 0.058638 0.06799 -0.032712 - 0.058638 0.053027 -0.043065 - 0.058638 0.03554 -0.048633 - 0.058638 0.017444 -0.051069 - 0.058638 0.017444 -0.061161 - 0.058638 0.036323 -0.061683 - 0.058638 0.03641 -0.067512 - 0.058638 0.03641 -0.073428 - 0.058638 0.03641 -0.079344 - 0.058638 0.036497 -0.08526 - 0.058638 0.036497 -0.091176 - 0.058638 0.036584 -0.097092 - 0.058638 0.036584 -0.103008 - 0.058638 0.03667 -0.108924 - 0.058638 0.03667 -0.11484 - 0.058638 0.036757 -0.120756 - 0.058638 0.036757 -0.126672 - 0.058638 0.036757 -0.132501 - 0.058638 0.028579 -0.132414 - 0.058638 0.020489 -0.132414 - 0.058638 0.012311 -0.132327 - 0.058638 0.004132 -0.13224 - 0.058638 -0.004045 -0.13224 - 0.058638 -0.012223 -0.132153 - 0.058638 -0.020402 -0.132153 - 0.058638 -0.028579 -0.132066 - 0.058638 -0.036757 -0.132066 - 0.058638 -0.044849 -0.132675 - 0.058638 -0.053027 -0.132501 - 0.058638 -0.06103 -0.130674 - 0.058638 -0.067208 -0.125628 - 0.058638 -0.069556 -0.117885 - 0.058638 -0.070427 -0.109794 - 0.058638 -0.070166 -0.101616 - 0.058638 -0.070078 -0.093438 - 0.058638 -0.071122 -0.085347 - 0.058638 -0.07147 -0.077169 - 0.058638 -0.068948 -0.069513 - 0.058638 -0.063293 -0.063771 - 0.058638 -0.055289 -0.062379 - 0.058638 -0.047197 -0.061335 - 0.058638 -0.039019 -0.061074 - 0.058638 -0.030841 -0.061683 - 0.058638 -0.030406 -0.047415 - 0.058638 -0.04685 -0.041934 - 0.058638 -0.060683 -0.031581 - 0.058638 -0.06973 -0.016965 - 0.058638 -0.072775 0.0 -e -v - 0.023229 0.074994 0.0 - 0.023229 0.072862 -0.015399 - 0.023229 0.065206 -0.028884 - 0.023229 0.053287 -0.038889 - 0.023229 0.038932 -0.044979 - 0.023229 0.023534 -0.047937 - 0.023229 0.023969 -0.061248 - 0.023229 0.036844 -0.06177 - 0.023229 0.036757 -0.067686 - 0.023229 0.036757 -0.073515 - 0.023229 0.03667 -0.079431 - 0.023229 0.03667 -0.08526 - 0.023229 0.036584 -0.091176 - 0.023229 0.036584 -0.097005 - 0.023229 0.036497 -0.102921 - 0.023229 0.036497 -0.10875 - 0.023229 0.036497 -0.114666 - 0.023229 0.03641 -0.120495 - 0.023229 0.03641 -0.126411 - 0.023229 0.036323 -0.13224 - 0.023229 0.027796 -0.132153 - 0.023229 0.019271 -0.132153 - 0.023229 0.010744 -0.132066 - 0.023229 0.002132 -0.131979 - 0.023229 -0.006394 -0.131979 - 0.023229 -0.014921 -0.131892 - 0.023229 -0.023447 -0.131805 - 0.023229 -0.031973 -0.131805 - 0.023229 -0.040498 -0.131805 - 0.023229 -0.049112 -0.13224 - 0.023229 -0.057638 -0.132327 - 0.023229 -0.066077 -0.131196 - 0.023229 -0.074167 -0.128847 - 0.023229 -0.078691 -0.1218 - 0.023229 -0.080431 -0.113535 - 0.023229 -0.07991 -0.105009 - 0.023229 -0.079475 -0.096483 - 0.023229 -0.080257 -0.087957 - 0.023229 -0.080518 -0.079431 - 0.023229 -0.079388 -0.070992 - 0.023229 -0.075212 -0.063684 - 0.023229 -0.067904 -0.059508 - 0.023229 -0.059377 -0.058986 - 0.023229 -0.050852 -0.058464 - 0.023229 -0.042326 -0.058464 - 0.023229 -0.042238 -0.042804 - 0.023229 -0.055376 -0.037323 - 0.023229 -0.065293 -0.027057 - 0.023229 -0.071296 -0.014094 - 0.023229 -0.073211 0.0 -e -v - -0.022359 0.069426 0.0 - -0.022359 0.06799 -0.012006 - -0.022359 0.062945 -0.023055 - -0.022359 0.05494 -0.03219 - -0.022359 0.044675 -0.038802 - -0.022359 0.033278 -0.042891 - -0.022359 0.032842 -0.0609 - -0.022359 0.038846 -0.061335 - -0.022359 0.038672 -0.06699 - -0.022359 0.038498 -0.072645 - -0.022359 0.03841 -0.0783 - -0.022359 0.038498 -0.084042 - -0.022359 0.038585 -0.089697 - -0.022359 0.038759 -0.095352 - -0.022359 0.038932 -0.101007 - -0.022359 0.039019 -0.106749 - -0.022359 0.039019 -0.112404 - -0.022359 0.038932 -0.118059 - -0.022359 0.038846 -0.123801 - -0.022359 0.038672 -0.129456 - -0.022359 0.030233 -0.12963 - -0.022359 0.021793 -0.129891 - -0.022359 0.013354 -0.130065 - -0.022359 0.004916 -0.130152 - -0.022359 -0.003523 -0.130326 - -0.022359 -0.012049 -0.130413 - -0.022359 -0.020489 -0.130587 - -0.022359 -0.028927 -0.130587 - -0.022359 -0.037367 -0.130761 - -0.022359 -0.045805 -0.131022 - -0.022359 -0.054244 -0.130935 - -0.022359 -0.062684 -0.130674 - -0.022359 -0.071035 -0.129978 - -0.022359 -0.07817 -0.125541 - -0.022359 -0.082171 -0.118233 - -0.022359 -0.083563 -0.109968 - -0.022359 -0.082781 -0.101529 - -0.022359 -0.082084 -0.093177 - -0.022359 -0.082868 -0.084738 - -0.022359 -0.083042 -0.076299 - -0.022359 -0.082084 -0.067947 - -0.022359 -0.078257 -0.060465 - -0.022359 -0.071557 -0.055506 - -0.022359 -0.06338 -0.053418 - -0.022359 -0.055115 -0.052026 - -0.022359 -0.05929 -0.034974 - -0.022359 -0.065206 -0.027318 - -0.022359 -0.06973 -0.018879 - -0.022359 -0.071993 -0.00957 - -0.022359 -0.071819 0.0 -e -v - -0.07395 0.063945 0.0 - -0.07395 0.062945 -0.009048 - -0.07395 0.060073 -0.017835 - -0.07395 0.055549 -0.025752 - -0.07395 0.049286 -0.032451 - -0.07395 0.04163 -0.037497 - -0.07395 0.038585 -0.055071 - -0.07395 0.038585 -0.061509 - -0.07395 0.038932 -0.06699 - -0.07395 0.039193 -0.072471 - -0.07395 0.039281 -0.077952 - -0.07395 0.039281 -0.083433 - -0.07395 0.039281 -0.089001 - -0.07395 0.039281 -0.094482 - -0.07395 0.039368 -0.099963 - -0.07395 0.039629 -0.105444 - -0.07395 0.040064 -0.110925 - -0.07395 0.040151 -0.116493 - -0.07395 0.039629 -0.121887 - -0.07395 0.038585 -0.127281 - -0.07395 0.030058 -0.127368 - -0.07395 0.02162 -0.127455 - -0.07395 0.013094 -0.127455 - -0.07395 0.004568 -0.127455 - -0.07395 -0.003872 -0.127542 - -0.07395 -0.012397 -0.127716 - -0.07395 -0.020837 -0.127977 - -0.07395 -0.029362 -0.128325 - -0.07395 -0.037889 -0.128673 - -0.07395 -0.046328 -0.128847 - -0.07395 -0.054853 -0.129108 - -0.07395 -0.063293 -0.129717 - -0.07395 -0.071644 -0.128412 - -0.07395 -0.079301 -0.124758 - -0.07395 -0.084173 -0.117972 - -0.07395 -0.086957 -0.109968 - -0.07395 -0.087479 -0.101529 - -0.07395 -0.087044 -0.093003 - -0.07395 -0.087044 -0.084564 - -0.07395 -0.087566 -0.076038 - -0.07395 -0.087044 -0.067599 - -0.07395 -0.084868 -0.059334 - -0.07395 -0.080692 -0.052026 - -0.07395 -0.073733 -0.047415 - -0.07395 -0.066077 -0.043761 - -0.07395 -0.065729 -0.034974 - -0.07395 -0.067643 -0.026361 - -0.07395 -0.069556 -0.017661 - -0.07395 -0.07034 -0.008787 - -0.07395 -0.069991 0.0 -e -v - -0.153555 0.055158 0.0 - -0.153555 0.055289 -0.005568 - -0.153555 0.054244 -0.011049 - -0.153555 0.05207 -0.016182 - -0.153555 0.049112 -0.020967 - -0.153555 0.045545 -0.025317 - -0.153555 0.04363 -0.032103 - -0.153555 0.041977 -0.038976 - -0.153555 0.040585 -0.045849 - -0.153555 0.038932 -0.052722 - -0.153555 0.037714 -0.059682 - -0.153555 0.037627 -0.066816 - -0.153555 0.037714 -0.073863 - -0.153555 0.037714 -0.08091 - -0.153555 0.037714 -0.087957 - -0.153555 0.037714 -0.095091 - -0.153555 0.037714 -0.102138 - -0.153555 0.037714 -0.109185 - -0.153555 0.037714 -0.116232 - -0.153555 0.037714 -0.123366 - -0.153555 0.028841 -0.123714 - -0.153555 0.019966 -0.123975 - -0.153555 0.011092 -0.124149 - -0.153555 0.002219 -0.124236 - -0.153555 -0.006743 -0.124149 - -0.153555 -0.015616 -0.123888 - -0.153555 -0.02449 -0.123714 - -0.153555 -0.033365 -0.123888 - -0.153555 -0.042238 -0.12441 - -0.153555 -0.051112 -0.124932 - -0.153555 -0.0599 -0.125889 - -0.153555 -0.068599 -0.127629 - -0.153555 -0.077212 -0.125976 - -0.153555 -0.084173 -0.120582 - -0.153555 -0.086521 -0.11223 - -0.153555 -0.086957 -0.103356 - -0.153555 -0.087739 -0.094569 - -0.153555 -0.088436 -0.085695 - -0.153555 -0.088871 -0.076821 - -0.153555 -0.088958 -0.067947 - -0.153555 -0.088436 -0.059073 - -0.153555 -0.086957 -0.050286 - -0.153555 -0.083999 -0.041934 - -0.153555 -0.077996 -0.035496 - -0.153555 -0.070514 -0.030798 - -0.153555 -0.068251 -0.025143 - -0.153555 -0.06773 -0.018879 - -0.153555 -0.067556 -0.012528 - -0.153555 -0.067643 -0.006264 - -0.153555 -0.068164 0.0 -e -v - -0.21663 0.048285 0.0 - -0.21663 0.048154 -0.004089 - -0.21663 0.047284 -0.008178 - -0.21663 0.045892 -0.012006 - -0.21663 0.043456 -0.015399 - -0.21663 0.040151 -0.017748 - -0.21663 0.039802 -0.02523 - -0.21663 0.039368 -0.032625 - -0.21663 0.038759 -0.040107 - -0.21663 0.037976 -0.047502 - -0.21663 0.036931 -0.054897 - -0.21663 0.036757 -0.062292 - -0.21663 0.037193 -0.069687 - -0.21663 0.03728 -0.077169 - -0.21663 0.037193 -0.084651 - -0.21663 0.037019 -0.092046 - -0.21663 0.036931 -0.099528 - -0.21663 0.036844 -0.106923 - -0.21663 0.036757 -0.114405 - -0.21663 0.03667 -0.121887 - -0.21663 0.027623 -0.121887 - -0.21663 0.018575 -0.121974 - -0.21663 0.009527 -0.122061 - -0.21663 0.000565 -0.122061 - -0.21663 -0.008482 -0.122148 - -0.21663 -0.017531 -0.122061 - -0.21663 -0.026579 -0.122148 - -0.21663 -0.03554 -0.122583 - -0.21663 -0.044588 -0.123279 - -0.21663 -0.053548 -0.123975 - -0.21663 -0.062509 -0.125106 - -0.21663 -0.07147 -0.124671 - -0.21663 -0.07991 -0.121713 - -0.21663 -0.085391 -0.114666 - -0.21663 -0.087044 -0.105879 - -0.21663 -0.08687 -0.096918 - -0.21663 -0.087739 -0.08787 - -0.21663 -0.088523 -0.078909 - -0.21663 -0.088958 -0.069861 - -0.21663 -0.088958 -0.0609 - -0.21663 -0.088436 -0.051852 - -0.21663 -0.08626 -0.043152 - -0.21663 -0.08252 -0.034887 - -0.21663 -0.076952 -0.02784 - -0.21663 -0.07034 -0.021663 - -0.21663 -0.068687 -0.017661 - -0.21663 -0.068425 -0.013224 - -0.21663 -0.068164 -0.008787 - -0.21663 -0.068077 -0.00435 - -0.21663 -0.068164 0.0 -e -v - -0.286143 0.04089 0.0 - -0.286143 0.041021 -0.002784 - -0.286143 0.040238 -0.005568 - -0.286143 0.038672 -0.007917 - -0.286143 0.036584 -0.009918 - -0.286143 0.034061 -0.011223 - -0.286143 0.033886 -0.019053 - -0.286143 0.033712 -0.026796 - -0.286143 0.033712 -0.034626 - -0.286143 0.033712 -0.042456 - -0.286143 0.033712 -0.050199 - -0.286143 0.033886 -0.058029 - -0.286143 0.034148 -0.065859 - -0.286143 0.034235 -0.073602 - -0.286143 0.034235 -0.081432 - -0.286143 0.034235 -0.089175 - -0.286143 0.034061 -0.097005 - -0.286143 0.033712 -0.104835 - -0.286143 0.03319 -0.112578 - -0.286143 0.032495 -0.120321 - -0.286143 0.02362 -0.119712 - -0.286143 0.014747 -0.11919 - -0.286143 0.005873 -0.118929 - -0.286143 -0.003001 -0.118929 - -0.286143 -0.011875 -0.119016 - -0.286143 -0.02075 -0.119364 - -0.286143 -0.029624 -0.119886 - -0.286143 -0.038498 -0.120669 - -0.286143 -0.047284 -0.121713 - -0.286143 -0.056159 -0.122496 - -0.286143 -0.064945 -0.123627 - -0.286143 -0.073646 -0.122322 - -0.286143 -0.081041 -0.117537 - -0.286143 -0.085652 -0.110055 - -0.286143 -0.087479 -0.101355 - -0.286143 -0.087652 -0.092481 - -0.286143 -0.088262 -0.083607 - -0.286143 -0.088958 -0.07482 - -0.286143 -0.089218 -0.065946 - -0.286143 -0.089045 -0.056985 - -0.286143 -0.088262 -0.048198 - -0.286143 -0.086 -0.039585 - -0.286143 -0.082259 -0.031581 - -0.286143 -0.076865 -0.024534 - -0.286143 -0.070862 -0.017922 - -0.286143 -0.069469 -0.014529 - -0.286143 -0.068251 -0.010962 - -0.286143 -0.06773 -0.007308 - -0.286143 -0.068077 -0.003567 - -0.286143 -0.069122 0.0 -e -v - -0.365661 0.033495 0.0 - -0.365661 0.031973 -0.002175 - -0.365661 0.03032 -0.004437 - -0.365661 0.029102 -0.00696 - -0.365661 0.028579 -0.009657 - -0.365661 0.028579 -0.012441 - -0.365661 0.028058 -0.02001 - -0.365661 0.028058 -0.027492 - -0.365661 0.028754 -0.035061 - -0.365661 0.029972 -0.042456 - -0.365661 0.031189 -0.049938 - -0.365661 0.032495 -0.057333 - -0.365661 0.032929 -0.064902 - -0.365661 0.03206 -0.072384 - -0.365661 0.030841 -0.079779 - -0.365661 0.029972 -0.087348 - -0.365661 0.029275 -0.09483 - -0.365661 0.028667 -0.102312 - -0.365661 0.028319 -0.109881 - -0.365661 0.028144 -0.11745 - -0.365661 0.019619 -0.117798 - -0.365661 0.011006 -0.117711 - -0.365661 0.002479 -0.117711 - -0.365661 -0.006047 -0.117798 - -0.365661 -0.014659 -0.117885 - -0.365661 -0.023186 -0.117972 - -0.365661 -0.031712 -0.118146 - -0.365661 -0.040325 -0.11832 - -0.365661 -0.04885 -0.118581 - -0.365661 -0.057377 -0.119016 - -0.365661 -0.065903 -0.119973 - -0.365661 -0.073907 -0.117276 - -0.365661 -0.080257 -0.111708 - -0.365661 -0.084868 -0.104487 - -0.365661 -0.086608 -0.096222 - -0.365661 -0.086608 -0.087696 - -0.365661 -0.087044 -0.079083 - -0.365661 -0.087305 -0.070557 - -0.365661 -0.087392 -0.062031 - -0.365661 -0.087131 -0.053418 - -0.365661 -0.086695 -0.044892 - -0.365661 -0.084781 -0.03654 - -0.365661 -0.081302 -0.028797 - -0.365661 -0.075994 -0.022098 - -0.365661 -0.070862 -0.015225 - -0.365661 -0.069469 -0.012267 - -0.365661 -0.069122 -0.009222 - -0.365661 -0.068948 -0.00609 - -0.365661 -0.068774 -0.003045 - -0.365661 -0.068599 0.0 -e -v - -0.409683 0.028449 0.0 - -0.409683 0.027448 -0.003567 - -0.409683 0.02684 -0.007221 - -0.409683 0.026665 -0.010875 - -0.409683 0.026579 -0.014616 - -0.409683 0.026579 -0.018357 - -0.409683 0.02684 -0.025491 - -0.409683 0.028493 -0.032451 - -0.409683 0.030581 -0.039237 - -0.409683 0.032407 -0.046197 - -0.409683 0.033886 -0.053157 - -0.409683 0.034495 -0.060291 - -0.409683 0.034322 -0.067512 - -0.409683 0.033452 -0.074559 - -0.409683 0.031799 -0.081519 - -0.409683 0.029537 -0.088392 - -0.409683 0.027362 -0.095178 - -0.409683 0.025621 -0.102138 - -0.409683 0.024751 -0.109185 - -0.409683 0.024665 -0.116406 - -0.409683 0.016313 -0.116493 - -0.409683 0.007873 -0.116667 - -0.409683 -0.000479 -0.116841 - -0.409683 -0.008918 -0.117015 - -0.409683 -0.017357 -0.117276 - -0.409683 -0.025709 -0.117537 - -0.409683 -0.034148 -0.117798 - -0.409683 -0.0425 -0.118146 - -0.409683 -0.050939 -0.118407 - -0.409683 -0.05929 -0.118755 - -0.409683 -0.06773 -0.118668 - -0.409683 -0.075646 -0.116928 - -0.409683 -0.081476 -0.110838 - -0.409683 -0.085042 -0.103443 - -0.409683 -0.085391 -0.095091 - -0.409683 -0.085826 -0.086652 - -0.409683 -0.086 -0.0783 - -0.409683 -0.086 -0.069861 - -0.409683 -0.086 -0.061422 - -0.409683 -0.085826 -0.05307 - -0.409683 -0.085129 -0.044718 - -0.409683 -0.083738 -0.036366 - -0.409683 -0.081041 -0.028449 - -0.409683 -0.076081 -0.02175 - -0.409683 -0.071035 -0.015051 - -0.409683 -0.069209 -0.012441 - -0.409683 -0.068164 -0.009483 - -0.409683 -0.06773 -0.006351 - -0.409683 -0.067556 -0.003132 - -0.409683 -0.06773 0.0 -e -v - -0.485634 0.022968 0.0 - -0.485634 0.022924 -0.003741 - -0.485634 0.022489 -0.007482 - -0.485634 0.022489 -0.01131 - -0.485634 0.023099 -0.015051 - -0.485634 0.024143 -0.018705 - -0.485634 0.026579 -0.025839 - -0.485634 0.029797 -0.032625 - -0.485634 0.032842 -0.039411 - -0.485634 0.035365 -0.046545 - -0.485634 0.036931 -0.053853 - -0.485634 0.037627 -0.061335 - -0.485634 0.037193 -0.068817 - -0.485634 0.035801 -0.076212 - -0.485634 0.033539 -0.083346 - -0.485634 0.03032 -0.090132 - -0.485634 0.026057 -0.096309 - -0.485634 0.022228 -0.102834 - -0.485634 0.019271 -0.109707 - -0.485634 0.01814 -0.117102 - -0.485634 0.010049 -0.116754 - -0.485634 0.001958 -0.116406 - -0.485634 -0.006134 -0.116232 - -0.485634 -0.014311 -0.116058 - -0.485634 -0.022403 -0.115971 - -0.485634 -0.030493 -0.115971 - -0.485634 -0.038585 -0.116058 - -0.485634 -0.046675 -0.116406 - -0.485634 -0.054766 -0.116841 - -0.485634 -0.062858 -0.116841 - -0.485634 -0.070949 -0.116232 - -0.485634 -0.077822 -0.112143 - -0.485634 -0.083389 -0.106314 - -0.485634 -0.085478 -0.098571 - -0.485634 -0.086 -0.09048 - -0.485634 -0.086173 -0.082389 - -0.485634 -0.085913 -0.074298 - -0.485634 -0.085391 -0.066207 - -0.485634 -0.084955 -0.058116 - -0.485634 -0.084868 -0.050025 - -0.485634 -0.084868 -0.041934 - -0.485634 -0.083563 -0.03393 - -0.485634 -0.080344 -0.026535 - -0.485634 -0.075473 -0.020097 - -0.485634 -0.070601 -0.013572 - -0.485634 -0.069643 -0.010962 - -0.485634 -0.068948 -0.008265 - -0.485634 -0.068774 -0.005481 - -0.485634 -0.068512 -0.002697 - -0.485634 -0.068164 0.0 -e -v - -0.5568 0.019749 0.0 - -0.5568 0.019706 -0.002871 - -0.5568 0.019879 -0.005829 - -0.5568 0.020314 -0.008787 - -0.5568 0.021185 -0.011571 - -0.5568 0.022403 -0.014268 - -0.5568 0.026752 -0.021489 - -0.5568 0.03206 -0.027927 - -0.5568 0.035801 -0.035409 - -0.5568 0.038846 -0.043239 - -0.5568 0.041108 -0.051417 - -0.5568 0.041891 -0.059769 - -0.5568 0.041455 -0.068121 - -0.5568 0.039802 -0.076299 - -0.5568 0.037019 -0.084303 - -0.5568 0.033365 -0.091872 - -0.5568 0.028667 -0.098745 - -0.5568 0.022924 -0.104922 - -0.5568 0.017531 -0.11136 - -0.5568 0.014833 -0.11919 - -0.5568 0.006917 -0.118929 - -0.5568 -0.000914 -0.118755 - -0.5568 -0.008744 -0.118407 - -0.5568 -0.016661 -0.118059 - -0.5568 -0.02449 -0.117711 - -0.5568 -0.032407 -0.117363 - -0.5568 -0.040238 -0.116928 - -0.5568 -0.048067 -0.116406 - -0.5568 -0.055985 -0.115884 - -0.5568 -0.063814 -0.115623 - -0.5568 -0.071383 -0.113622 - -0.5568 -0.077473 -0.108837 - -0.5568 -0.08078 -0.101703 - -0.5568 -0.081128 -0.093873 - -0.5568 -0.081562 -0.086043 - -0.5568 -0.081823 -0.078213 - -0.5568 -0.081997 -0.070296 - -0.5568 -0.081997 -0.062466 - -0.5568 -0.081823 -0.054549 - -0.5568 -0.081476 -0.046719 - -0.5568 -0.081302 -0.038802 - -0.5568 -0.079736 -0.031146 - -0.5568 -0.075473 -0.024621 - -0.5568 -0.069991 -0.018966 - -0.5568 -0.06599 -0.012267 - -0.5568 -0.064859 -0.010005 - -0.5568 -0.06425 -0.007569 - -0.5568 -0.064075 -0.005046 - -0.5568 -0.063988 -0.002523 - -0.5568 -0.063988 0.0 -e -v - -0.638232 0.012354 0.0 - -0.638232 0.012223 -0.001653 - -0.638232 0.012311 -0.003306 - -0.638232 0.012571 -0.004959 - -0.638232 0.013006 -0.006612 - -0.638232 0.013702 -0.008178 - -0.638232 0.02075 -0.014703 - -0.638232 0.027448 -0.021663 - -0.638232 0.033365 -0.029145 - -0.638232 0.037802 -0.037671 - -0.638232 0.040672 -0.046893 - -0.638232 0.041891 -0.056376 - -0.638232 0.04163 -0.065946 - -0.638232 0.039976 -0.075429 - -0.638232 0.036844 -0.084564 - -0.638232 0.03232 -0.093003 - -0.638232 0.026231 -0.100398 - -0.638232 0.019096 -0.106836 - -0.638232 0.011354 -0.112491 - -0.638232 0.007091 -0.12093 - -0.638232 -0.000131 -0.12006 - -0.638232 -0.007351 -0.11919 - -0.638232 -0.014573 -0.118407 - -0.638232 -0.021793 -0.117624 - -0.638232 -0.029014 -0.116928 - -0.638232 -0.036148 -0.116058 - -0.638232 -0.04337 -0.11484 - -0.638232 -0.050416 -0.113361 - -0.638232 -0.057377 -0.111099 - -0.638232 -0.063727 -0.107619 - -0.638232 -0.068948 -0.102573 - -0.638232 -0.072862 -0.096483 - -0.638232 -0.075386 -0.089697 - -0.638232 -0.076865 -0.08265 - -0.638232 -0.077822 -0.075429 - -0.638232 -0.078083 -0.068121 - -0.638232 -0.078257 -0.0609 - -0.638232 -0.078344 -0.053679 - -0.638232 -0.077909 -0.046371 - -0.638232 -0.076778 -0.039237 - -0.638232 -0.074602 -0.032277 - -0.638232 -0.071122 -0.025926 - -0.638232 -0.066251 -0.020619 - -0.638232 -0.061205 -0.015486 - -0.638232 -0.057638 -0.009135 - -0.638232 -0.056942 -0.007395 - -0.638232 -0.056419 -0.005568 - -0.638232 -0.056072 -0.003741 - -0.638232 -0.05581 -0.001827 - -0.638232 -0.055723 0.0 -e -v - -0.706005 0.004524 0.0 - -0.706005 0.004742 -0.001131 - -0.706005 0.005003 -0.002349 - -0.706005 0.005176 -0.003567 - -0.706005 0.00535 -0.004785 - -0.706005 0.005524 -0.006003 - -0.706005 0.014137 -0.011136 - -0.706005 0.022141 -0.017052 - -0.706005 0.029014 -0.02436 - -0.706005 0.034235 -0.032799 - -0.706005 0.037976 -0.042108 - -0.706005 0.039889 -0.051852 - -0.706005 0.040064 -0.061857 - -0.706005 0.038585 -0.071775 - -0.706005 0.035627 -0.081345 - -0.706005 0.030841 -0.090045 - -0.706005 0.024403 -0.097701 - -0.706005 0.016921 -0.104313 - -0.706005 0.008744 -0.110055 - -0.706005 0.000392 -0.115536 - -0.706005 -0.006134 -0.11484 - -0.706005 -0.012571 -0.114057 - -0.706005 -0.01901 -0.113274 - -0.706005 -0.025534 -0.112839 - -0.706005 -0.03206 -0.11223 - -0.706005 -0.038323 -0.110838 - -0.706005 -0.0445 -0.10875 - -0.706005 -0.050242 -0.105705 - -0.706005 -0.055202 -0.101529 - -0.706005 -0.059377 -0.09657 - -0.706005 -0.063206 -0.091263 - -0.706005 -0.066511 -0.085608 - -0.706005 -0.069296 -0.079779 - -0.706005 -0.071383 -0.073602 - -0.706005 -0.072601 -0.067164 - -0.706005 -0.073123 -0.060726 - -0.706005 -0.072862 -0.054201 - -0.706005 -0.071906 -0.047763 - -0.706005 -0.070253 -0.041499 - -0.706005 -0.067904 -0.035409 - -0.706005 -0.064772 -0.029754 - -0.706005 -0.060943 -0.024447 - -0.706005 -0.056332 -0.019836 - -0.706005 -0.051635 -0.015312 - -0.706005 -0.047807 -0.010005 - -0.706005 -0.046937 -0.008178 - -0.706005 -0.046241 -0.006177 - -0.706005 -0.045805 -0.004176 - -0.706005 -0.045545 -0.002088 - -0.706005 -0.045632 0.0 -e -v - -0.757944 -0.005133 0.0 - -0.757944 -0.005089 -0.001479 - -0.757944 -0.005089 -0.003045 - -0.757944 -0.005089 -0.004611 - -0.757944 -0.005003 -0.006177 - -0.757944 -0.005003 -0.007743 - -0.757944 0.004655 -0.011136 - -0.757944 0.013528 -0.016443 - -0.757944 0.021097 -0.023403 - -0.757944 0.0271 -0.031668 - -0.757944 0.031277 -0.041064 - -0.757944 0.033365 -0.051069 - -0.757944 0.033452 -0.061422 - -0.757944 0.031712 -0.071514 - -0.757944 0.027971 -0.081084 - -0.757944 0.022489 -0.089784 - -0.757944 0.015356 -0.097179 - -0.757944 0.00683 -0.102834 - -0.757944 -0.002741 -0.106749 - -0.757944 -0.012833 -0.108663 - -0.757944 -0.018488 -0.108663 - -0.757944 -0.024143 -0.108141 - -0.757944 -0.02971 -0.107097 - -0.757944 -0.035105 -0.105357 - -0.757944 -0.040238 -0.103008 - -0.757944 -0.045109 -0.100137 - -0.757944 -0.049633 -0.096657 - -0.757944 -0.05381 -0.092829 - -0.757944 -0.057551 -0.088566 - -0.757944 -0.06077 -0.083955 - -0.757944 -0.063466 -0.078909 - -0.757944 -0.065554 -0.073689 - -0.757944 -0.067033 -0.068208 - -0.757944 -0.067817 -0.062553 - -0.757944 -0.068077 -0.056898 - -0.757944 -0.067817 -0.051243 - -0.757944 -0.066859 -0.045675 - -0.757944 -0.065206 -0.040281 - -0.757944 -0.062684 -0.035148 - -0.757944 -0.059551 -0.03045 - -0.757944 -0.056072 -0.026013 - -0.757944 -0.052244 -0.02175 - -0.757944 -0.048067 -0.017922 - -0.757944 -0.043543 -0.014616 - -0.757944 -0.038585 -0.011832 - -0.757944 -0.038672 -0.009396 - -0.757944 -0.038846 -0.007047 - -0.757944 -0.038932 -0.004698 - -0.757944 -0.039019 -0.002349 - -0.757944 -0.039193 0.0 -e -v - -0.812058 -0.015747 0.0 - -0.812058 -0.015703 -0.001827 - -0.812058 -0.015703 -0.003654 - -0.812058 -0.015703 -0.005481 - -0.812058 -0.015703 -0.007308 - -0.812058 -0.015703 -0.009135 - -0.812058 -0.004655 -0.010788 - -0.812058 0.005786 -0.014964 - -0.812058 0.015007 -0.021141 - -0.812058 0.022489 -0.029493 - -0.812058 0.027536 -0.039498 - -0.812058 0.03032 -0.050373 - -0.812058 0.030755 -0.061509 - -0.812058 0.028841 -0.072558 - -0.812058 0.02449 -0.082911 - -0.812058 0.017879 -0.091872 - -0.812058 0.009178 -0.098919 - -0.812058 -0.000914 -0.103704 - -0.812058 -0.011875 -0.106053 - -0.812058 -0.023099 -0.105879 - -0.812058 -0.028754 -0.104835 - -0.812058 -0.033799 -0.103095 - -0.812058 -0.038585 -0.100833 - -0.812058 -0.043109 -0.097962 - -0.812058 -0.047371 -0.094743 - -0.812058 -0.051199 -0.091002 - -0.812058 -0.054593 -0.086913 - -0.812058 -0.057725 -0.082563 - -0.812058 -0.060334 -0.077952 - -0.812058 -0.062422 -0.072993 - -0.812058 -0.063814 -0.06786 - -0.812058 -0.064511 -0.062553 - -0.812058 -0.064685 -0.057246 - -0.812058 -0.064337 -0.051939 - -0.812058 -0.06364 -0.046632 - -0.812058 -0.062335 -0.041499 - -0.812058 -0.060247 -0.03654 - -0.812058 -0.057551 -0.032016 - -0.812058 -0.054419 -0.027666 - -0.812058 -0.051025 -0.023577 - -0.812058 -0.047197 -0.019836 - -0.812058 -0.042847 -0.016791 - -0.812058 -0.038063 -0.014355 - -0.812058 -0.03319 -0.012267 - -0.812058 -0.028144 -0.010527 - -0.812058 -0.028144 -0.008439 - -0.812058 -0.028144 -0.006351 - -0.812058 -0.028144 -0.004176 - -0.812058 -0.028144 -0.002088 - -0.812058 -0.028144 0.0 -e -v - -0.838506 -0.02175 0.0 - -0.838506 -0.021706 -0.00174 - -0.838506 -0.021706 -0.003567 - -0.838506 -0.021706 -0.005394 - -0.838506 -0.021706 -0.007134 - -0.838506 -0.021793 -0.008961 - -0.838506 -0.010571 -0.009309 - -0.838506 0.000217 -0.012354 - -0.838506 0.010223 -0.017487 - -0.838506 0.018835 -0.024708 - -0.838506 0.025013 -0.034104 - -0.838506 0.028927 -0.044544 - -0.838506 0.030928 -0.05568 - -0.838506 0.030406 -0.066816 - -0.838506 0.027013 -0.077517 - -0.838506 0.021272 -0.087174 - -0.838506 0.013616 -0.095352 - -0.838506 0.004306 -0.101616 - -0.838506 -0.006307 -0.105183 - -0.838506 -0.017531 -0.10614 - -0.838506 -0.023447 -0.105879 - -0.838506 -0.029275 -0.104922 - -0.838506 -0.034844 -0.103095 - -0.838506 -0.040151 -0.100398 - -0.838506 -0.045022 -0.097092 - -0.838506 -0.049633 -0.093438 - -0.838506 -0.053897 -0.089349 - -0.838506 -0.057638 -0.084738 - -0.838506 -0.060596 -0.079605 - -0.838506 -0.062771 -0.074124 - -0.838506 -0.064337 -0.068469 - -0.838506 -0.065293 -0.06264 - -0.838506 -0.065467 -0.056724 - -0.838506 -0.065206 -0.050808 - -0.838506 -0.064337 -0.044979 - -0.838506 -0.062596 -0.039324 - -0.838506 -0.059987 -0.034017 - -0.838506 -0.056681 -0.029145 - -0.838506 -0.05294 -0.024621 - -0.838506 -0.048763 -0.020358 - -0.838506 -0.044066 -0.016878 - -0.838506 -0.038759 -0.014094 - -0.838506 -0.033278 -0.012093 - -0.838506 -0.027536 -0.010527 - -0.838506 -0.021793 -0.009396 - -0.838506 -0.021706 -0.007134 - -0.838506 -0.021706 -0.005394 - -0.838506 -0.021706 -0.003567 - -0.838506 -0.021706 -0.00174 - -0.838506 -0.021706 0.0 -e -v - 0.058638 0.081867 0.0 - 0.023229 0.075038 0.0 - -0.022359 0.069469 0.0 - -0.07395 0.063988 0.0 - -0.153555 0.055202 0.0 - -0.21663 0.048329 0.0 - -0.286143 0.040934 0.0 - -0.365661 0.033539 0.0 - -0.409683 0.028493 0.0 - -0.485634 0.023012 0.0 - -0.5568 0.019793 0.0 - -0.638232 0.012397 0.0 - -0.706005 0.004568 0.0 - -0.757944 -0.005089 0.0 - -0.812058 -0.015703 0.0 - -0.838506 -0.021706 0.0 -e -v - 0.058638 0.078387 -0.017835 - 0.023229 0.072862 -0.015399 - -0.022359 0.06799 -0.012006 - -0.07395 0.062945 -0.009048 - -0.153555 0.055289 -0.005568 - -0.21663 0.048154 -0.004089 - -0.286143 0.041021 -0.002784 - -0.365661 0.031973 -0.002175 - -0.409683 0.027448 -0.003567 - -0.485634 0.022924 -0.003741 - -0.5568 0.019706 -0.002871 - -0.638232 0.012223 -0.001653 - -0.706005 0.004742 -0.001131 - -0.757944 -0.005089 -0.001479 - -0.812058 -0.015703 -0.001827 - -0.838506 -0.021706 -0.00174 -e -v - 0.058638 0.067947 -0.032712 - 0.023229 0.065206 -0.028884 - -0.022359 0.062945 -0.023055 - -0.07395 0.060073 -0.017835 - -0.153555 0.054244 -0.011049 - -0.21663 0.047284 -0.008178 - -0.286143 0.040238 -0.005568 - -0.365661 0.03032 -0.004437 - -0.409683 0.02684 -0.007221 - -0.485634 0.022489 -0.007482 - -0.5568 0.019879 -0.005829 - -0.638232 0.012311 -0.003306 - -0.706005 0.005003 -0.002349 - -0.757944 -0.005089 -0.003045 - -0.812058 -0.015703 -0.003654 - -0.838506 -0.021706 -0.003567 -e -v - 0.058638 0.052983 -0.043065 - 0.023229 0.053287 -0.038889 - -0.022359 0.05494 -0.03219 - -0.07395 0.055549 -0.025752 - -0.153555 0.05207 -0.016182 - -0.21663 0.045892 -0.012006 - -0.286143 0.038672 -0.007917 - -0.365661 0.029102 -0.00696 - -0.409683 0.026665 -0.010875 - -0.485634 0.022489 -0.01131 - -0.5568 0.020314 -0.008787 - -0.638232 0.012571 -0.004959 - -0.706005 0.005176 -0.003567 - -0.757944 -0.005089 -0.004611 - -0.812058 -0.015703 -0.005481 - -0.838506 -0.021706 -0.005394 -e -v - 0.058638 0.035496 -0.048633 - 0.023229 0.038932 -0.044979 - -0.022359 0.044675 -0.038802 - -0.07395 0.049286 -0.032451 - -0.153555 0.049112 -0.020967 - -0.21663 0.043456 -0.015399 - -0.286143 0.036584 -0.009918 - -0.365661 0.028579 -0.009657 - -0.409683 0.026579 -0.014616 - -0.485634 0.023099 -0.015051 - -0.5568 0.021185 -0.011571 - -0.638232 0.013006 -0.006612 - -0.706005 0.00535 -0.004785 - -0.757944 -0.005003 -0.006177 - -0.812058 -0.015703 -0.007308 - -0.838506 -0.021706 -0.007134 -e -v - 0.058638 0.0174 -0.051069 - 0.023229 0.023534 -0.047937 - -0.022359 0.033278 -0.042891 - -0.07395 0.04163 -0.037497 - -0.153555 0.045545 -0.025317 - -0.21663 0.040151 -0.017748 - -0.286143 0.034061 -0.011223 - -0.365661 0.028579 -0.012441 - -0.409683 0.026579 -0.018357 - -0.485634 0.024143 -0.018705 - -0.5568 0.022403 -0.014268 - -0.638232 0.013702 -0.008178 - -0.706005 0.005524 -0.006003 - -0.757944 -0.005003 -0.007743 - -0.812058 -0.015703 -0.009135 - -0.838506 -0.021793 -0.008961 -e -v - 0.058638 0.0174 -0.061161 - 0.023229 0.023969 -0.061248 - -0.022359 0.032842 -0.0609 - -0.07395 0.038585 -0.055071 - -0.153555 0.04363 -0.032103 - -0.21663 0.039802 -0.02523 - -0.286143 0.033886 -0.019053 - -0.365661 0.028058 -0.02001 - -0.409683 0.02684 -0.025491 - -0.485634 0.026579 -0.025839 - -0.5568 0.026752 -0.021489 - -0.638232 0.02075 -0.014703 - -0.706005 0.014137 -0.011136 - -0.757944 0.004655 -0.011136 - -0.812058 -0.004655 -0.010788 - -0.838506 -0.010571 -0.009309 -e -v - 0.058638 0.036279 -0.061683 - 0.023229 0.036844 -0.06177 - -0.022359 0.038846 -0.061335 - -0.07395 0.038585 -0.061509 - -0.153555 0.041977 -0.038976 - -0.21663 0.039368 -0.032625 - -0.286143 0.033712 -0.026796 - -0.365661 0.028058 -0.027492 - -0.409683 0.028493 -0.032451 - -0.485634 0.029797 -0.032625 - -0.5568 0.03206 -0.027927 - -0.638232 0.027448 -0.021663 - -0.706005 0.022141 -0.017052 - -0.757944 0.013528 -0.016443 - -0.812058 0.005786 -0.014964 - -0.838506 0.000217 -0.012354 -e -v - 0.058638 0.036366 -0.067512 - 0.023229 0.036757 -0.067686 - -0.022359 0.038672 -0.06699 - -0.07395 0.038932 -0.06699 - -0.153555 0.040585 -0.045849 - -0.21663 0.038759 -0.040107 - -0.286143 0.033712 -0.034626 - -0.365661 0.028754 -0.035061 - -0.409683 0.030581 -0.039237 - -0.485634 0.032842 -0.039411 - -0.5568 0.035801 -0.035409 - -0.638232 0.033365 -0.029145 - -0.706005 0.029014 -0.02436 - -0.757944 0.021097 -0.023403 - -0.812058 0.015007 -0.021141 - -0.838506 0.010223 -0.017487 -e -v - 0.058638 0.036366 -0.073428 - 0.023229 0.036757 -0.073515 - -0.022359 0.038498 -0.072645 - -0.07395 0.039193 -0.072471 - -0.153555 0.038932 -0.052722 - -0.21663 0.037976 -0.047502 - -0.286143 0.033712 -0.042456 - -0.365661 0.029972 -0.042456 - -0.409683 0.032407 -0.046197 - -0.485634 0.035365 -0.046545 - -0.5568 0.038846 -0.043239 - -0.638232 0.037802 -0.037671 - -0.706005 0.034235 -0.032799 - -0.757944 0.0271 -0.031668 - -0.812058 0.022489 -0.029493 - -0.838506 0.018835 -0.024708 -e -v - 0.058638 0.036366 -0.079344 - 0.023229 0.03667 -0.079431 - -0.022359 0.03841 -0.0783 - -0.07395 0.039281 -0.077952 - -0.153555 0.037714 -0.059682 - -0.21663 0.036931 -0.054897 - -0.286143 0.033712 -0.050199 - -0.365661 0.031189 -0.049938 - -0.409683 0.033886 -0.053157 - -0.485634 0.036931 -0.053853 - -0.5568 0.041108 -0.051417 - -0.638232 0.040672 -0.046893 - -0.706005 0.037976 -0.042108 - -0.757944 0.031277 -0.041064 - -0.812058 0.027536 -0.039498 - -0.838506 0.025013 -0.034104 -e -v - 0.058638 0.036453 -0.08526 - 0.023229 0.03667 -0.08526 - -0.022359 0.038498 -0.084042 - -0.07395 0.039281 -0.083433 - -0.153555 0.037627 -0.066816 - -0.21663 0.036757 -0.062292 - -0.286143 0.033886 -0.058029 - -0.365661 0.032495 -0.057333 - -0.409683 0.034495 -0.060291 - -0.485634 0.037627 -0.061335 - -0.5568 0.041891 -0.059769 - -0.638232 0.041891 -0.056376 - -0.706005 0.039889 -0.051852 - -0.757944 0.033365 -0.051069 - -0.812058 0.03032 -0.050373 - -0.838506 0.028927 -0.044544 -e -v - 0.058638 0.036453 -0.091176 - 0.023229 0.036584 -0.091176 - -0.022359 0.038585 -0.089697 - -0.07395 0.039281 -0.089001 - -0.153555 0.037714 -0.073863 - -0.21663 0.037193 -0.069687 - -0.286143 0.034148 -0.065859 - -0.365661 0.032929 -0.064902 - -0.409683 0.034322 -0.067512 - -0.485634 0.037193 -0.068817 - -0.5568 0.041455 -0.068121 - -0.638232 0.04163 -0.065946 - -0.706005 0.040064 -0.061857 - -0.757944 0.033452 -0.061422 - -0.812058 0.030755 -0.061509 - -0.838506 0.030928 -0.05568 -e -v - 0.058638 0.03654 -0.097092 - 0.023229 0.036584 -0.097005 - -0.022359 0.038759 -0.095352 - -0.07395 0.039281 -0.094482 - -0.153555 0.037714 -0.08091 - -0.21663 0.03728 -0.077169 - -0.286143 0.034235 -0.073602 - -0.365661 0.03206 -0.072384 - -0.409683 0.033452 -0.074559 - -0.485634 0.035801 -0.076212 - -0.5568 0.039802 -0.076299 - -0.638232 0.039976 -0.075429 - -0.706005 0.038585 -0.071775 - -0.757944 0.031712 -0.071514 - -0.812058 0.028841 -0.072558 - -0.838506 0.030406 -0.066816 -e -v - 0.058638 0.03654 -0.103008 - 0.023229 0.036497 -0.102921 - -0.022359 0.038932 -0.101007 - -0.07395 0.039368 -0.099963 - -0.153555 0.037714 -0.087957 - -0.21663 0.037193 -0.084651 - -0.286143 0.034235 -0.081432 - -0.365661 0.030841 -0.079779 - -0.409683 0.031799 -0.081519 - -0.485634 0.033539 -0.083346 - -0.5568 0.037019 -0.084303 - -0.638232 0.036844 -0.084564 - -0.706005 0.035627 -0.081345 - -0.757944 0.027971 -0.081084 - -0.812058 0.02449 -0.082911 - -0.838506 0.027013 -0.077517 -e -v - 0.058638 0.036627 -0.108924 - 0.023229 0.036497 -0.10875 - -0.022359 0.039019 -0.106749 - -0.07395 0.039629 -0.105444 - -0.153555 0.037714 -0.095091 - -0.21663 0.037019 -0.092046 - -0.286143 0.034235 -0.089175 - -0.365661 0.029972 -0.087348 - -0.409683 0.029537 -0.088392 - -0.485634 0.03032 -0.090132 - -0.5568 0.033365 -0.091872 - -0.638232 0.03232 -0.093003 - -0.706005 0.030841 -0.090045 - -0.757944 0.022489 -0.089784 - -0.812058 0.017879 -0.091872 - -0.838506 0.021272 -0.087174 -e -v - 0.058638 0.036627 -0.11484 - 0.023229 0.036497 -0.114666 - -0.022359 0.039019 -0.112404 - -0.07395 0.040064 -0.110925 - -0.153555 0.037714 -0.102138 - -0.21663 0.036931 -0.099528 - -0.286143 0.034061 -0.097005 - -0.365661 0.029275 -0.09483 - -0.409683 0.027362 -0.095178 - -0.485634 0.026057 -0.096309 - -0.5568 0.028667 -0.098745 - -0.638232 0.026231 -0.100398 - -0.706005 0.024403 -0.097701 - -0.757944 0.015356 -0.097179 - -0.812058 0.009178 -0.098919 - -0.838506 0.013616 -0.095352 -e -v - 0.058638 0.036714 -0.120756 - 0.023229 0.03641 -0.120495 - -0.022359 0.038932 -0.118059 - -0.07395 0.040151 -0.116493 - -0.153555 0.037714 -0.109185 - -0.21663 0.036844 -0.106923 - -0.286143 0.033712 -0.104835 - -0.365661 0.028667 -0.102312 - -0.409683 0.025621 -0.102138 - -0.485634 0.022228 -0.102834 - -0.5568 0.022924 -0.104922 - -0.638232 0.019096 -0.106836 - -0.706005 0.016921 -0.104313 - -0.757944 0.00683 -0.102834 - -0.812058 -0.000914 -0.103704 - -0.838506 0.004306 -0.101616 -e -v - 0.058638 0.036714 -0.126672 - 0.023229 0.03641 -0.126411 - -0.022359 0.038846 -0.123801 - -0.07395 0.039629 -0.121887 - -0.153555 0.037714 -0.116232 - -0.21663 0.036757 -0.114405 - -0.286143 0.03319 -0.112578 - -0.365661 0.028319 -0.109881 - -0.409683 0.024751 -0.109185 - -0.485634 0.019271 -0.109707 - -0.5568 0.017531 -0.11136 - -0.638232 0.011354 -0.112491 - -0.706005 0.008744 -0.110055 - -0.757944 -0.002741 -0.106749 - -0.812058 -0.011875 -0.106053 - -0.838506 -0.006307 -0.105183 -e -v - 0.058638 0.036714 -0.132501 - 0.023229 0.036323 -0.13224 - -0.022359 0.038672 -0.129456 - -0.07395 0.038585 -0.127281 - -0.153555 0.037714 -0.123366 - -0.21663 0.03667 -0.121887 - -0.286143 0.032495 -0.120321 - -0.365661 0.028144 -0.11745 - -0.409683 0.024665 -0.116406 - -0.485634 0.01814 -0.117102 - -0.5568 0.014833 -0.11919 - -0.638232 0.007091 -0.12093 - -0.706005 0.000392 -0.115536 - -0.757944 -0.012833 -0.108663 - -0.812058 -0.023099 -0.105879 - -0.838506 -0.017531 -0.10614 -e -v - 0.058638 0.028536 -0.132414 - 0.023229 0.027796 -0.132153 - -0.022359 0.030233 -0.12963 - -0.07395 0.030058 -0.127368 - -0.153555 0.028841 -0.123714 - -0.21663 0.027623 -0.121887 - -0.286143 0.02362 -0.119712 - -0.365661 0.019619 -0.117798 - -0.409683 0.016313 -0.116493 - -0.485634 0.010049 -0.116754 - -0.5568 0.006917 -0.118929 - -0.638232 -0.000131 -0.12006 - -0.706005 -0.006134 -0.11484 - -0.757944 -0.018488 -0.108663 - -0.812058 -0.028754 -0.104835 - -0.838506 -0.023447 -0.105879 -e -v - 0.058638 0.020445 -0.132414 - 0.023229 0.019271 -0.132153 - -0.022359 0.021793 -0.129891 - -0.07395 0.02162 -0.127455 - -0.153555 0.019966 -0.123975 - -0.21663 0.018575 -0.121974 - -0.286143 0.014747 -0.11919 - -0.365661 0.011006 -0.117711 - -0.409683 0.007873 -0.116667 - -0.485634 0.001958 -0.116406 - -0.5568 -0.000914 -0.118755 - -0.638232 -0.007351 -0.11919 - -0.706005 -0.012571 -0.114057 - -0.757944 -0.024143 -0.108141 - -0.812058 -0.033799 -0.103095 - -0.838506 -0.029275 -0.104922 -e -v - 0.058638 0.012267 -0.132327 - 0.023229 0.010744 -0.132066 - -0.022359 0.013354 -0.130065 - -0.07395 0.013094 -0.127455 - -0.153555 0.011092 -0.124149 - -0.21663 0.009527 -0.122061 - -0.286143 0.005873 -0.118929 - -0.365661 0.002479 -0.117711 - -0.409683 -0.000479 -0.116841 - -0.485634 -0.006134 -0.116232 - -0.5568 -0.008744 -0.118407 - -0.638232 -0.014573 -0.118407 - -0.706005 -0.01901 -0.113274 - -0.757944 -0.02971 -0.107097 - -0.812058 -0.038585 -0.100833 - -0.838506 -0.034844 -0.103095 -e -v - 0.058638 0.004089 -0.13224 - 0.023229 0.002132 -0.131979 - -0.022359 0.004916 -0.130152 - -0.07395 0.004568 -0.127455 - -0.153555 0.002219 -0.124236 - -0.21663 0.000565 -0.122061 - -0.286143 -0.003001 -0.118929 - -0.365661 -0.006047 -0.117798 - -0.409683 -0.008918 -0.117015 - -0.485634 -0.014311 -0.116058 - -0.5568 -0.016661 -0.118059 - -0.638232 -0.021793 -0.117624 - -0.706005 -0.025534 -0.112839 - -0.757944 -0.035105 -0.105357 - -0.812058 -0.043109 -0.097962 - -0.838506 -0.040151 -0.100398 -e -v - 0.058638 -0.004089 -0.13224 - 0.023229 -0.006394 -0.131979 - -0.022359 -0.003523 -0.130326 - -0.07395 -0.003872 -0.127542 - -0.153555 -0.006743 -0.124149 - -0.21663 -0.008482 -0.122148 - -0.286143 -0.011875 -0.119016 - -0.365661 -0.014659 -0.117885 - -0.409683 -0.017357 -0.117276 - -0.485634 -0.022403 -0.115971 - -0.5568 -0.02449 -0.117711 - -0.638232 -0.029014 -0.116928 - -0.706005 -0.03206 -0.11223 - -0.757944 -0.040238 -0.103008 - -0.812058 -0.047371 -0.094743 - -0.838506 -0.045022 -0.097092 -e -v - 0.058638 -0.012267 -0.132153 - 0.023229 -0.014921 -0.131892 - -0.022359 -0.012049 -0.130413 - -0.07395 -0.012397 -0.127716 - -0.153555 -0.015616 -0.123888 - -0.21663 -0.017531 -0.122061 - -0.286143 -0.02075 -0.119364 - -0.365661 -0.023186 -0.117972 - -0.409683 -0.025709 -0.117537 - -0.485634 -0.030493 -0.115971 - -0.5568 -0.032407 -0.117363 - -0.638232 -0.036148 -0.116058 - -0.706005 -0.038323 -0.110838 - -0.757944 -0.045109 -0.100137 - -0.812058 -0.051199 -0.091002 - -0.838506 -0.049633 -0.093438 -e -v - 0.058638 -0.020445 -0.132153 - 0.023229 -0.023447 -0.131805 - -0.022359 -0.020489 -0.130587 - -0.07395 -0.020837 -0.127977 - -0.153555 -0.02449 -0.123714 - -0.21663 -0.026579 -0.122148 - -0.286143 -0.029624 -0.119886 - -0.365661 -0.031712 -0.118146 - -0.409683 -0.034148 -0.117798 - -0.485634 -0.038585 -0.116058 - -0.5568 -0.040238 -0.116928 - -0.638232 -0.04337 -0.11484 - -0.706005 -0.0445 -0.10875 - -0.757944 -0.049633 -0.096657 - -0.812058 -0.054593 -0.086913 - -0.838506 -0.053897 -0.089349 -e -v - 0.058638 -0.028623 -0.132066 - 0.023229 -0.031973 -0.131805 - -0.022359 -0.028927 -0.130587 - -0.07395 -0.029362 -0.128325 - -0.153555 -0.033365 -0.123888 - -0.21663 -0.03554 -0.122583 - -0.286143 -0.038498 -0.120669 - -0.365661 -0.040325 -0.11832 - -0.409683 -0.0425 -0.118146 - -0.485634 -0.046675 -0.116406 - -0.5568 -0.048067 -0.116406 - -0.638232 -0.050416 -0.113361 - -0.706005 -0.050242 -0.105705 - -0.757944 -0.05381 -0.092829 - -0.812058 -0.057725 -0.082563 - -0.838506 -0.057638 -0.084738 -e -v - 0.058638 -0.036801 -0.132066 - 0.023229 -0.040498 -0.131805 - -0.022359 -0.037367 -0.130761 - -0.07395 -0.037889 -0.128673 - -0.153555 -0.042238 -0.12441 - -0.21663 -0.044588 -0.123279 - -0.286143 -0.047284 -0.121713 - -0.365661 -0.04885 -0.118581 - -0.409683 -0.050939 -0.118407 - -0.485634 -0.054766 -0.116841 - -0.5568 -0.055985 -0.115884 - -0.638232 -0.057377 -0.111099 - -0.706005 -0.055202 -0.101529 - -0.757944 -0.057551 -0.088566 - -0.812058 -0.060334 -0.077952 - -0.838506 -0.060596 -0.079605 -e -v - 0.058638 -0.044892 -0.132675 - 0.023229 -0.049112 -0.13224 - -0.022359 -0.045805 -0.131022 - -0.07395 -0.046328 -0.128847 - -0.153555 -0.051112 -0.124932 - -0.21663 -0.053548 -0.123975 - -0.286143 -0.056159 -0.122496 - -0.365661 -0.057377 -0.119016 - -0.409683 -0.05929 -0.118755 - -0.485634 -0.062858 -0.116841 - -0.5568 -0.063814 -0.115623 - -0.638232 -0.063727 -0.107619 - -0.706005 -0.059377 -0.09657 - -0.757944 -0.06077 -0.083955 - -0.812058 -0.062422 -0.072993 - -0.838506 -0.062771 -0.074124 -e -v - 0.058638 -0.05307 -0.132501 - 0.023229 -0.057638 -0.132327 - -0.022359 -0.054244 -0.130935 - -0.07395 -0.054853 -0.129108 - -0.153555 -0.0599 -0.125889 - -0.21663 -0.062509 -0.125106 - -0.286143 -0.064945 -0.123627 - -0.365661 -0.065903 -0.119973 - -0.409683 -0.06773 -0.118668 - -0.485634 -0.070949 -0.116232 - -0.5568 -0.071383 -0.113622 - -0.638232 -0.068948 -0.102573 - -0.706005 -0.063206 -0.091263 - -0.757944 -0.063466 -0.078909 - -0.812058 -0.063814 -0.06786 - -0.838506 -0.064337 -0.068469 -e -v - 0.058638 -0.061074 -0.130674 - 0.023229 -0.066077 -0.131196 - -0.022359 -0.062684 -0.130674 - -0.07395 -0.063293 -0.129717 - -0.153555 -0.068599 -0.127629 - -0.21663 -0.07147 -0.124671 - -0.286143 -0.073646 -0.122322 - -0.365661 -0.073907 -0.117276 - -0.409683 -0.075646 -0.116928 - -0.485634 -0.077822 -0.112143 - -0.5568 -0.077473 -0.108837 - -0.638232 -0.072862 -0.096483 - -0.706005 -0.066511 -0.085608 - -0.757944 -0.065554 -0.073689 - -0.812058 -0.064511 -0.062553 - -0.838506 -0.065293 -0.06264 -e -v - 0.058638 -0.067251 -0.125628 - 0.023229 -0.074167 -0.128847 - -0.022359 -0.071035 -0.129978 - -0.07395 -0.071644 -0.128412 - -0.153555 -0.077212 -0.125976 - -0.21663 -0.07991 -0.121713 - -0.286143 -0.081041 -0.117537 - -0.365661 -0.080257 -0.111708 - -0.409683 -0.081476 -0.110838 - -0.485634 -0.083389 -0.106314 - -0.5568 -0.08078 -0.101703 - -0.638232 -0.075386 -0.089697 - -0.706005 -0.069296 -0.079779 - -0.757944 -0.067033 -0.068208 - -0.812058 -0.064685 -0.057246 - -0.838506 -0.065467 -0.056724 -e -v - 0.058638 -0.0696 -0.117885 - 0.023229 -0.078691 -0.1218 - -0.022359 -0.07817 -0.125541 - -0.07395 -0.079301 -0.124758 - -0.153555 -0.084173 -0.120582 - -0.21663 -0.085391 -0.114666 - -0.286143 -0.085652 -0.110055 - -0.365661 -0.084868 -0.104487 - -0.409683 -0.085042 -0.103443 - -0.485634 -0.085478 -0.098571 - -0.5568 -0.081128 -0.093873 - -0.638232 -0.076865 -0.08265 - -0.706005 -0.071383 -0.073602 - -0.757944 -0.067817 -0.062553 - -0.812058 -0.064337 -0.051939 - -0.838506 -0.065206 -0.050808 -e -v - 0.058638 -0.07047 -0.109794 - 0.023229 -0.080431 -0.113535 - -0.022359 -0.082171 -0.118233 - -0.07395 -0.084173 -0.117972 - -0.153555 -0.086521 -0.11223 - -0.21663 -0.087044 -0.105879 - -0.286143 -0.087479 -0.101355 - -0.365661 -0.086608 -0.096222 - -0.409683 -0.085391 -0.095091 - -0.485634 -0.086 -0.09048 - -0.5568 -0.081562 -0.086043 - -0.638232 -0.077822 -0.075429 - -0.706005 -0.072601 -0.067164 - -0.757944 -0.068077 -0.056898 - -0.812058 -0.06364 -0.046632 - -0.838506 -0.064337 -0.044979 -e -v - 0.058638 -0.070209 -0.101616 - 0.023229 -0.07991 -0.105009 - -0.022359 -0.083563 -0.109968 - -0.07395 -0.086957 -0.109968 - -0.153555 -0.086957 -0.103356 - -0.21663 -0.08687 -0.096918 - -0.286143 -0.087652 -0.092481 - -0.365661 -0.086608 -0.087696 - -0.409683 -0.085826 -0.086652 - -0.485634 -0.086173 -0.082389 - -0.5568 -0.081823 -0.078213 - -0.638232 -0.078083 -0.068121 - -0.706005 -0.073123 -0.060726 - -0.757944 -0.067817 -0.051243 - -0.812058 -0.062335 -0.041499 - -0.838506 -0.062596 -0.039324 -e -v - 0.058638 -0.070122 -0.093438 - 0.023229 -0.079475 -0.096483 - -0.022359 -0.082781 -0.101529 - -0.07395 -0.087479 -0.101529 - -0.153555 -0.087739 -0.094569 - -0.21663 -0.087739 -0.08787 - -0.286143 -0.088262 -0.083607 - -0.365661 -0.087044 -0.079083 - -0.409683 -0.086 -0.0783 - -0.485634 -0.085913 -0.074298 - -0.5568 -0.081997 -0.070296 - -0.638232 -0.078257 -0.0609 - -0.706005 -0.072862 -0.054201 - -0.757944 -0.066859 -0.045675 - -0.812058 -0.060247 -0.03654 - -0.838506 -0.059987 -0.034017 -e -v - 0.058638 -0.071166 -0.085347 - 0.023229 -0.080257 -0.087957 - -0.022359 -0.082084 -0.093177 - -0.07395 -0.087044 -0.093003 - -0.153555 -0.088436 -0.085695 - -0.21663 -0.088523 -0.078909 - -0.286143 -0.088958 -0.07482 - -0.365661 -0.087305 -0.070557 - -0.409683 -0.086 -0.069861 - -0.485634 -0.085391 -0.066207 - -0.5568 -0.081997 -0.062466 - -0.638232 -0.078344 -0.053679 - -0.706005 -0.071906 -0.047763 - -0.757944 -0.065206 -0.040281 - -0.812058 -0.057551 -0.032016 - -0.838506 -0.056681 -0.029145 -e -v - 0.058638 -0.071514 -0.077169 - 0.023229 -0.080518 -0.079431 - -0.022359 -0.082868 -0.084738 - -0.07395 -0.087044 -0.084564 - -0.153555 -0.088871 -0.076821 - -0.21663 -0.088958 -0.069861 - -0.286143 -0.089218 -0.065946 - -0.365661 -0.087392 -0.062031 - -0.409683 -0.086 -0.061422 - -0.485634 -0.084955 -0.058116 - -0.5568 -0.081823 -0.054549 - -0.638232 -0.077909 -0.046371 - -0.706005 -0.070253 -0.041499 - -0.757944 -0.062684 -0.035148 - -0.812058 -0.054419 -0.027666 - -0.838506 -0.05294 -0.024621 -e -v - 0.058638 -0.068991 -0.069513 - 0.023229 -0.079388 -0.070992 - -0.022359 -0.083042 -0.076299 - -0.07395 -0.087566 -0.076038 - -0.153555 -0.088958 -0.067947 - -0.21663 -0.088958 -0.0609 - -0.286143 -0.089045 -0.056985 - -0.365661 -0.087131 -0.053418 - -0.409683 -0.085826 -0.05307 - -0.485634 -0.084868 -0.050025 - -0.5568 -0.081476 -0.046719 - -0.638232 -0.076778 -0.039237 - -0.706005 -0.067904 -0.035409 - -0.757944 -0.059551 -0.03045 - -0.812058 -0.051025 -0.023577 - -0.838506 -0.048763 -0.020358 -e -v - 0.058638 -0.063336 -0.063771 - 0.023229 -0.075212 -0.063684 - -0.022359 -0.082084 -0.067947 - -0.07395 -0.087044 -0.067599 - -0.153555 -0.088436 -0.059073 - -0.21663 -0.088436 -0.051852 - -0.286143 -0.088262 -0.048198 - -0.365661 -0.086695 -0.044892 - -0.409683 -0.085129 -0.044718 - -0.485634 -0.084868 -0.041934 - -0.5568 -0.081302 -0.038802 - -0.638232 -0.074602 -0.032277 - -0.706005 -0.064772 -0.029754 - -0.757944 -0.056072 -0.026013 - -0.812058 -0.047197 -0.019836 - -0.838506 -0.044066 -0.016878 -e -v - 0.058638 -0.055332 -0.062379 - 0.023229 -0.067904 -0.059508 - -0.022359 -0.078257 -0.060465 - -0.07395 -0.084868 -0.059334 - -0.153555 -0.086957 -0.050286 - -0.21663 -0.08626 -0.043152 - -0.286143 -0.086 -0.039585 - -0.365661 -0.084781 -0.03654 - -0.409683 -0.083738 -0.036366 - -0.485634 -0.083563 -0.03393 - -0.5568 -0.079736 -0.031146 - -0.638232 -0.071122 -0.025926 - -0.706005 -0.060943 -0.024447 - -0.757944 -0.052244 -0.02175 - -0.812058 -0.042847 -0.016791 - -0.838506 -0.038759 -0.014094 -e -v - 0.058638 -0.047241 -0.061335 - 0.023229 -0.059377 -0.058986 - -0.022359 -0.071557 -0.055506 - -0.07395 -0.080692 -0.052026 - -0.153555 -0.083999 -0.041934 - -0.21663 -0.08252 -0.034887 - -0.286143 -0.082259 -0.031581 - -0.365661 -0.081302 -0.028797 - -0.409683 -0.081041 -0.028449 - -0.485634 -0.080344 -0.026535 - -0.5568 -0.075473 -0.024621 - -0.638232 -0.066251 -0.020619 - -0.706005 -0.056332 -0.019836 - -0.757944 -0.048067 -0.017922 - -0.812058 -0.038063 -0.014355 - -0.838506 -0.033278 -0.012093 -e -v - 0.058638 -0.039063 -0.061074 - 0.023229 -0.050852 -0.058464 - -0.022359 -0.06338 -0.053418 - -0.07395 -0.073733 -0.047415 - -0.153555 -0.077996 -0.035496 - -0.21663 -0.076952 -0.02784 - -0.286143 -0.076865 -0.024534 - -0.365661 -0.075994 -0.022098 - -0.409683 -0.076081 -0.02175 - -0.485634 -0.075473 -0.020097 - -0.5568 -0.069991 -0.018966 - -0.638232 -0.061205 -0.015486 - -0.706005 -0.051635 -0.015312 - -0.757944 -0.043543 -0.014616 - -0.812058 -0.03319 -0.012267 - -0.838506 -0.027536 -0.010527 -e -v - 0.058638 -0.030885 -0.061683 - 0.023229 -0.042326 -0.058464 - -0.022359 -0.055115 -0.052026 - -0.07395 -0.066077 -0.043761 - -0.153555 -0.070514 -0.030798 - -0.21663 -0.07034 -0.021663 - -0.286143 -0.070862 -0.017922 - -0.365661 -0.070862 -0.015225 - -0.409683 -0.071035 -0.015051 - -0.485634 -0.070601 -0.013572 - -0.5568 -0.06599 -0.012267 - -0.638232 -0.057638 -0.009135 - -0.706005 -0.047807 -0.010005 - -0.757944 -0.038585 -0.011832 - -0.812058 -0.028144 -0.010527 - -0.838506 -0.021793 -0.009396 -e -v - 0.058638 -0.03045 -0.047415 - 0.023229 -0.042238 -0.042804 - -0.022359 -0.05929 -0.034974 - -0.07395 -0.065729 -0.034974 - -0.153555 -0.068251 -0.025143 - -0.21663 -0.068687 -0.017661 - -0.286143 -0.069469 -0.014529 - -0.365661 -0.069469 -0.012267 - -0.409683 -0.069209 -0.012441 - -0.485634 -0.069643 -0.010962 - -0.5568 -0.064859 -0.010005 - -0.638232 -0.056942 -0.007395 - -0.706005 -0.046937 -0.008178 - -0.757944 -0.038672 -0.009396 - -0.812058 -0.028144 -0.008439 - -0.838506 -0.021706 -0.007134 -e -v - 0.058638 -0.046893 -0.041934 - 0.023229 -0.055376 -0.037323 - -0.022359 -0.065206 -0.027318 - -0.07395 -0.067643 -0.026361 - -0.153555 -0.06773 -0.018879 - -0.21663 -0.068425 -0.013224 - -0.286143 -0.068251 -0.010962 - -0.365661 -0.069122 -0.009222 - -0.409683 -0.068164 -0.009483 - -0.485634 -0.068948 -0.008265 - -0.5568 -0.06425 -0.007569 - -0.638232 -0.056419 -0.005568 - -0.706005 -0.046241 -0.006177 - -0.757944 -0.038846 -0.007047 - -0.812058 -0.028144 -0.006351 - -0.838506 -0.021706 -0.005394 -e -v - 0.058638 -0.060726 -0.031581 - 0.023229 -0.065293 -0.027057 - -0.022359 -0.06973 -0.018879 - -0.07395 -0.069556 -0.017661 - -0.153555 -0.067556 -0.012528 - -0.21663 -0.068164 -0.008787 - -0.286143 -0.06773 -0.007308 - -0.365661 -0.068948 -0.00609 - -0.409683 -0.06773 -0.006351 - -0.485634 -0.068774 -0.005481 - -0.5568 -0.064075 -0.005046 - -0.638232 -0.056072 -0.003741 - -0.706005 -0.045805 -0.004176 - -0.757944 -0.038932 -0.004698 - -0.812058 -0.028144 -0.004176 - -0.838506 -0.021706 -0.003567 -e -v - 0.058638 -0.069774 -0.016965 - 0.023229 -0.071296 -0.014094 - -0.022359 -0.071993 -0.00957 - -0.07395 -0.07034 -0.008787 - -0.153555 -0.067643 -0.006264 - -0.21663 -0.068077 -0.00435 - -0.286143 -0.068077 -0.003567 - -0.365661 -0.068774 -0.003045 - -0.409683 -0.067556 -0.003132 - -0.485634 -0.068512 -0.002697 - -0.5568 -0.063988 -0.002523 - -0.638232 -0.05581 -0.001827 - -0.706005 -0.045545 -0.002088 - -0.757944 -0.039019 -0.002349 - -0.812058 -0.028144 -0.002088 - -0.838506 -0.021706 -0.00174 -e -v - 0.058638 -0.072819 0.0 - 0.023229 -0.073211 0.0 - -0.022359 -0.071819 0.0 - -0.07395 -0.069991 0.0 - -0.153555 -0.068164 0.0 - -0.21663 -0.068164 0.0 - -0.286143 -0.069122 0.0 - -0.365661 -0.068599 0.0 - -0.409683 -0.06773 0.0 - -0.485634 -0.068164 0.0 - -0.5568 -0.063988 0.0 - -0.638232 -0.055723 0.0 - -0.706005 -0.045632 0.0 - -0.757944 -0.039193 0.0 - -0.812058 -0.028144 0.0 - -0.838506 -0.021706 0.0 -e -v - 0.135894 -0.001566 -0.050025 - 0.135894 -0.001958 -0.061944 - 0.135894 -0.001522 -0.050025 -e -v - 0.058638 -0.03045 -0.047241 - 0.058638 0.016748 -0.050025 - 0.058638 0.017269 -0.060639 - 0.058638 -0.030233 -0.061074 - 0.058638 -0.030406 -0.047241 -e -v - 0.135894 -0.001566 -0.050025 - 0.058638 -0.030406 -0.047241 -e -v - 0.135894 -0.001566 -0.050025 - 0.058638 0.016748 -0.050025 -e -v - 0.135894 -0.002001 -0.061944 - 0.058638 0.017269 -0.060639 -e -v - 0.135894 -0.002001 -0.061944 - 0.058638 -0.030233 -0.061074 -e -v - 0.135894 -0.001566 -0.050025 - 0.058638 -0.030406 -0.047241 -e -v - 0.230985 0.027492 -0.065163 - 0.230985 0.027536 -0.065076 - 0.230985 0.027536 -0.064989 - 0.230985 0.027536 -0.064902 - 0.230985 0.027536 -0.064815 - 0.230985 0.027536 -0.064728 - 0.230985 0.027536 -0.064641 - 0.230985 0.027796 -0.126933 - 0.230985 0.027536 -0.065163 -e -v - 0.217674 0.020358 -0.065946 - 0.217674 0.021185 -0.065685 - 0.217674 0.022055 -0.065337 - 0.217674 0.022838 -0.065076 - 0.217674 0.023707 -0.064815 - 0.217674 0.02449 -0.064554 - 0.217674 0.025361 -0.064293 - 0.217674 0.026144 -0.064032 - 0.217674 0.027013 -0.063684 - 0.217674 0.027883 -0.063423 - 0.217674 0.028667 -0.063162 - 0.217674 0.028667 -0.128238 - 0.217674 0.027883 -0.12789 - 0.217674 0.027013 -0.127629 - 0.217674 0.026144 -0.127368 - 0.217674 0.025361 -0.127107 - 0.217674 0.02449 -0.126846 - 0.217674 0.023707 -0.126585 - 0.217674 0.022838 -0.126237 - 0.217674 0.022055 -0.125976 - 0.217674 0.021185 -0.125715 - 0.217674 0.020402 -0.125454 - 0.217674 0.025882 -0.125019 - 0.217674 0.025448 -0.065946 - 0.217674 0.020402 -0.065946 -e -v - 0.164691 -0.006612 -0.06525 - 0.164691 -0.003263 -0.063336 - 0.164691 0.000304 -0.06177 - 0.164691 0.004132 -0.060987 - 0.164691 0.007961 -0.060639 - 0.164691 0.011875 -0.060639 - 0.164691 0.015703 -0.060552 - 0.164691 0.019619 -0.060465 - 0.164691 0.023447 -0.060552 - 0.164691 0.027362 -0.060726 - 0.164691 0.031189 -0.060987 - 0.164691 0.031973 -0.131544 - 0.164691 0.027971 -0.131805 - 0.164691 0.024055 -0.131805 - 0.164691 0.020054 -0.131631 - 0.164691 0.016051 -0.131283 - 0.164691 0.012137 -0.130761 - 0.164691 0.008221 -0.129978 - 0.164691 0.004393 -0.129021 - 0.164691 0.000565 -0.127803 - 0.164691 -0.003176 -0.126411 - 0.164691 -0.00683 -0.124758 - 0.164691 0.018575 -0.124671 - 0.164691 0.018313 -0.065163 - 0.164691 -0.006568 -0.06525 -e -v - 0.111621 -0.033669 -0.065946 - 0.111621 -0.027883 -0.062205 - 0.111621 -0.021185 -0.060987 - 0.111621 -0.014311 -0.0609 - 0.111621 -0.007438 -0.060465 - 0.111621 -0.000565 -0.060117 - 0.111621 0.006307 -0.06003 - 0.111621 0.01318 -0.06003 - 0.111621 0.020054 -0.060291 - 0.111621 0.026927 -0.060726 - 0.111621 0.033712 -0.061335 - 0.111621 0.033712 -0.132327 - 0.111621 0.02684 -0.132327 - 0.111621 0.019879 -0.13224 - 0.111621 0.01292 -0.132153 - 0.111621 0.00596 -0.132066 - 0.111621 -0.000914 -0.131979 - 0.111621 -0.007873 -0.132066 - 0.111621 -0.014833 -0.132588 - 0.111621 -0.021706 -0.131892 - 0.111621 -0.027971 -0.129021 - 0.111621 -0.033625 -0.125019 - 0.111621 0.018052 -0.125019 - 0.111621 0.018488 -0.065946 - 0.111621 -0.033625 -0.065946 -e -v - 0.058638 -0.060204 -0.065511 - 0.058638 -0.052157 -0.061161 - 0.058638 -0.042238 -0.0609 - 0.058638 -0.03232 -0.060639 - 0.058638 -0.022403 -0.060552 - 0.058638 -0.012485 -0.060465 - 0.058638 -0.002567 -0.060291 - 0.058638 0.007351 -0.060291 - 0.058638 0.017269 -0.060291 - 0.058638 0.027188 -0.060291 - 0.058638 0.037106 -0.060465 - 0.058638 0.037367 -0.130065 - 0.058638 0.027448 -0.130935 - 0.058638 0.017531 -0.131631 - 0.058638 0.007612 -0.132066 - 0.058638 -0.002305 -0.132327 - 0.058638 -0.012223 -0.132414 - 0.058638 -0.022141 -0.132327 - 0.058638 -0.03206 -0.131979 - 0.058638 -0.041977 -0.131457 - 0.058638 -0.051895 -0.131457 - 0.058638 -0.059117 -0.125541 - 0.058638 0.017879 -0.125193 - 0.058638 0.016834 -0.06525 - 0.058638 -0.06016 -0.065511 -e -v - 0.230985 0.027492 -0.065163 - 0.217674 0.020402 -0.065946 - 0.164691 -0.006568 -0.06525 - 0.111621 -0.033625 -0.065946 - 0.058638 -0.06016 -0.065511 -e -v - 0.230985 0.027492 -0.065076 - 0.217674 0.021185 -0.065685 - 0.164691 -0.003263 -0.063336 - 0.111621 -0.027883 -0.062205 - 0.058638 -0.052157 -0.061161 -e -v - 0.230985 0.027492 -0.065076 - 0.217674 0.022055 -0.065337 - 0.164691 0.000304 -0.06177 - 0.111621 -0.021185 -0.060987 - 0.058638 -0.042238 -0.0609 -e -v - 0.230985 0.027492 -0.064989 - 0.217674 0.022838 -0.065076 - 0.164691 0.004132 -0.060987 - 0.111621 -0.014311 -0.0609 - 0.058638 -0.03232 -0.060639 -e -v - 0.230985 0.027492 -0.064989 - 0.217674 0.023707 -0.064815 - 0.164691 0.007961 -0.060639 - 0.111621 -0.007438 -0.060465 - 0.058638 -0.022403 -0.060552 -e -v - 0.230985 0.027492 -0.064902 - 0.217674 0.02449 -0.064554 - 0.164691 0.011875 -0.060639 - 0.111621 -0.000565 -0.060117 - 0.058638 -0.012485 -0.060465 -e -v - 0.230985 0.027492 -0.064902 - 0.217674 0.025361 -0.064293 - 0.164691 0.015703 -0.060552 - 0.111621 0.006307 -0.06003 - 0.058638 -0.002567 -0.060291 -e -v - 0.230985 0.027492 -0.064815 - 0.217674 0.026144 -0.064032 - 0.164691 0.019619 -0.060465 - 0.111621 0.01318 -0.06003 - 0.058638 0.007351 -0.060291 -e -v - 0.230985 0.027492 -0.064728 - 0.217674 0.027013 -0.063684 - 0.164691 0.023447 -0.060552 - 0.111621 0.020054 -0.060291 - 0.058638 0.017269 -0.060291 -e -v - 0.230985 0.027492 -0.064728 - 0.217674 0.027883 -0.063423 - 0.164691 0.027362 -0.060726 - 0.111621 0.026927 -0.060726 - 0.058638 0.027188 -0.060291 -e -v - 0.230985 0.027492 -0.064641 - 0.217674 0.028667 -0.063162 - 0.164691 0.031189 -0.060987 - 0.111621 0.033712 -0.061335 - 0.058638 0.037106 -0.060465 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.028667 -0.128238 - 0.164691 0.031973 -0.131544 - 0.111621 0.033712 -0.132327 - 0.058638 0.037367 -0.130065 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.027883 -0.12789 - 0.164691 0.027971 -0.131805 - 0.111621 0.02684 -0.132327 - 0.058638 0.027448 -0.130935 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.027013 -0.127629 - 0.164691 0.024055 -0.131805 - 0.111621 0.019879 -0.13224 - 0.058638 0.017531 -0.131631 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.026144 -0.127368 - 0.164691 0.020054 -0.131631 - 0.111621 0.01292 -0.132153 - 0.058638 0.007612 -0.132066 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.025361 -0.127107 - 0.164691 0.016051 -0.131283 - 0.111621 0.00596 -0.132066 - 0.058638 -0.002305 -0.132327 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.02449 -0.126846 - 0.164691 0.012137 -0.130761 - 0.111621 -0.000914 -0.131979 - 0.058638 -0.012223 -0.132414 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.023707 -0.126585 - 0.164691 0.008221 -0.129978 - 0.111621 -0.007873 -0.132066 - 0.058638 -0.022141 -0.132327 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.022838 -0.126237 - 0.164691 0.004393 -0.129021 - 0.111621 -0.014833 -0.132588 - 0.058638 -0.03206 -0.131979 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.022055 -0.125976 - 0.164691 0.000565 -0.127803 - 0.111621 -0.021706 -0.131892 - 0.058638 -0.041977 -0.131457 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.021185 -0.125715 - 0.164691 -0.003176 -0.126411 - 0.111621 -0.027971 -0.129021 - 0.058638 -0.051895 -0.131457 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.020402 -0.125454 - 0.164691 -0.00683 -0.124758 - 0.111621 -0.033625 -0.125019 - 0.058638 -0.059117 -0.125541 -e -v - 0.230985 0.027753 -0.126933 - 0.217674 0.025882 -0.125019 - 0.164691 0.018575 -0.124671 - 0.111621 0.018052 -0.125019 - 0.058638 0.017879 -0.125193 -e -v - 0.230985 0.027492 -0.065163 - 0.217674 0.025448 -0.065946 - 0.164691 0.018313 -0.065163 - 0.111621 0.018488 -0.065946 - 0.058638 0.016834 -0.06525 -e -v - 0.230985 0.027492 -0.065163 - 0.217674 0.020402 -0.065946 - 0.164691 -0.006568 -0.06525 - 0.111621 -0.033625 -0.065946 - 0.058638 -0.06016 -0.065511 -e -v - 0.111621 0.018444 -0.13137 -e -v - 0.058638 0.004785 -0.131457 - 0.058638 0.007351 -0.13137 - 0.058638 0.009787 -0.13137 - 0.058638 0.012223 -0.13137 - 0.058638 0.014659 -0.13137 - 0.058638 0.017096 -0.13137 - 0.058638 0.019531 -0.131283 - 0.058638 0.022055 -0.131283 - 0.058638 0.02449 -0.131283 - 0.058638 0.026927 -0.131283 - 0.058638 0.026492 -0.132762 - 0.058638 0.026144 -0.134241 - 0.058638 0.025709 -0.13572 - 0.058638 0.025361 -0.137199 - 0.058638 0.0251 -0.138765 - 0.058638 0.024751 -0.140244 - 0.058638 0.024403 -0.141723 - 0.058638 0.023795 -0.143202 - 0.058638 0.023186 -0.144594 - 0.058638 0.022403 -0.145899 - 0.058638 0.021533 -0.147204 - 0.058638 0.020314 -0.148161 - 0.058638 0.01901 -0.148944 - 0.058638 0.017531 -0.149466 - 0.058638 0.016051 -0.149727 - 0.058638 0.014311 -0.149814 - 0.058638 0.012659 -0.149553 - 0.058638 0.011266 -0.148596 - 0.058638 0.010223 -0.147291 - 0.058638 0.009266 -0.145899 - 0.058638 0.008396 -0.14442 - 0.058638 0.007699 -0.142941 - 0.058638 0.007091 -0.141288 - 0.058638 0.006568 -0.139722 - 0.058638 0.006134 -0.138069 - 0.058638 0.005699 -0.136416 - 0.058638 0.00535 -0.134763 - 0.058638 0.005089 -0.13311 - 0.058638 0.004829 -0.131457 -e -v - 0.023229 -0.001566 -0.131457 - 0.023229 0.002132 -0.131457 - 0.023229 0.005786 -0.131457 - 0.023229 0.009352 -0.131544 - 0.023229 0.013006 -0.131544 - 0.023229 0.016661 -0.131544 - 0.023229 0.020227 -0.131544 - 0.023229 0.023882 -0.131631 - 0.023229 0.027448 -0.131631 - 0.023229 0.031103 -0.131631 - 0.023229 0.030841 -0.133806 - 0.023229 0.030493 -0.135981 - 0.023229 0.030058 -0.138156 - 0.023229 0.029624 -0.140244 - 0.023229 0.029102 -0.142332 - 0.023229 0.028579 -0.144507 - 0.023229 0.027883 -0.146508 - 0.023229 0.026927 -0.148509 - 0.023229 0.025969 -0.15051 - 0.023229 0.024838 -0.152337 - 0.023229 0.023534 -0.154077 - 0.023229 0.021881 -0.155469 - 0.023229 0.019879 -0.156513 - 0.023229 0.017879 -0.157122 - 0.023229 0.015703 -0.15747 - 0.023229 0.013354 -0.156948 - 0.023229 0.01118 -0.155991 - 0.023229 0.009266 -0.154599 - 0.023229 0.007612 -0.153033 - 0.023229 0.006047 -0.151206 - 0.023229 0.004655 -0.149205 - 0.023229 0.00361 -0.147117 - 0.023229 0.002654 -0.144942 - 0.023229 0.001783 -0.142767 - 0.023229 0.000914 -0.140592 - 0.023229 0.000131 -0.13833 - 0.023229 -0.000479 -0.136068 - 0.023229 -0.001001 -0.133719 - 0.023229 -0.001522 -0.131457 -e -v - -0.022359 -0.009309 -0.12963 - -0.022359 -0.004306 -0.12963 - -0.022359 0.000653 -0.12963 - -0.022359 0.005524 -0.129717 - -0.022359 0.010483 -0.129717 - -0.022359 0.015442 -0.129717 - -0.022359 0.020402 -0.129717 - -0.022359 0.025361 -0.129717 - -0.022359 0.03032 -0.129717 - -0.022359 0.035278 -0.129804 - -0.022359 0.035105 -0.132675 - -0.022359 0.034757 -0.135546 - -0.022359 0.034322 -0.13833 - -0.022359 0.033712 -0.141201 - -0.022359 0.033016 -0.143985 - -0.022359 0.032233 -0.146769 - -0.022359 0.031189 -0.149466 - -0.022359 0.029885 -0.152076 - -0.022359 0.028406 -0.154512 - -0.022359 0.026752 -0.156948 - -0.022359 0.024838 -0.159123 - -0.022359 0.022576 -0.160863 - -0.022359 0.019966 -0.162168 - -0.022359 0.017269 -0.163038 - -0.022359 0.014399 -0.163473 - -0.022359 0.011266 -0.163038 - -0.022359 0.008309 -0.162081 - -0.022359 0.005612 -0.160428 - -0.022359 0.003436 -0.158166 - -0.022359 0.001522 -0.155643 - -0.022359 -0.000304 -0.15312 - -0.022359 -0.001871 -0.150336 - -0.022359 -0.003263 -0.147552 - -0.022359 -0.004568 -0.144681 - -0.022359 -0.005699 -0.141723 - -0.022359 -0.00683 -0.138765 - -0.022359 -0.007786 -0.13572 - -0.022359 -0.00857 -0.132675 - -0.022359 -0.009266 -0.12963 -e -v - -0.07395 -0.015399 -0.127977 - -0.07395 -0.00944 -0.12789 - -0.07395 -0.003523 -0.12789 - -0.07395 0.002392 -0.127803 - -0.07395 0.008309 -0.127716 - -0.07395 0.014225 -0.127716 - -0.07395 0.020141 -0.127629 - -0.07395 0.026057 -0.127629 - -0.07395 0.031973 -0.127542 - -0.07395 0.037889 -0.127455 - -0.07395 0.037714 -0.130935 - -0.07395 0.037367 -0.134415 - -0.07395 0.036757 -0.137808 - -0.07395 0.036061 -0.141201 - -0.07395 0.035191 -0.144594 - -0.07395 0.034148 -0.1479 - -0.07395 0.032842 -0.151119 - -0.07395 0.03145 -0.154251 - -0.07395 0.029797 -0.157383 - -0.07395 0.027883 -0.160254 - -0.07395 0.025534 -0.162777 - -0.07395 0.022924 -0.165126 - -0.07395 0.019966 -0.166953 - -0.07395 0.016748 -0.168171 - -0.07395 0.013354 -0.16878 - -0.07395 0.009701 -0.168258 - -0.07395 0.006655 -0.166257 - -0.07395 0.004132 -0.16356 - -0.07395 0.001696 -0.160776 - -0.07395 -0.000304 -0.157644 - -0.07395 -0.002132 -0.154425 - -0.07395 -0.003958 -0.151206 - -0.07395 -0.005786 -0.147987 - -0.07395 -0.007438 -0.144681 - -0.07395 -0.009092 -0.141375 - -0.07395 -0.010744 -0.138069 - -0.07395 -0.012311 -0.134676 - -0.07395 -0.013876 -0.13137 - -0.07395 -0.015356 -0.127977 -e -v - -0.153555 -0.026448 -0.124323 - -0.153555 -0.019531 -0.124323 - -0.153555 -0.012571 -0.12441 - -0.153555 -0.005699 -0.124584 - -0.153555 0.001174 -0.124758 - -0.153555 0.008047 -0.124758 - -0.153555 0.014921 -0.124758 - -0.153555 0.021881 -0.124671 - -0.153555 0.028754 -0.12441 - -0.153555 0.035627 -0.124149 - -0.153555 0.035627 -0.127803 - -0.153555 0.035365 -0.131544 - -0.153555 0.034931 -0.135198 - -0.153555 0.034235 -0.138765 - -0.153555 0.033365 -0.142332 - -0.153555 0.032407 -0.145899 - -0.153555 0.031624 -0.149466 - -0.153555 0.030668 -0.153033 - -0.153555 0.029537 -0.1566 - -0.153555 0.028058 -0.159993 - -0.153555 0.026492 -0.163299 - -0.153555 0.024751 -0.166518 - -0.153555 0.022924 -0.169737 - -0.153555 0.021097 -0.172869 - -0.153555 0.020227 -0.178002 - -0.153555 0.000392 -0.178524 - -0.153555 -0.000479 -0.172956 - -0.153555 -0.002305 -0.169128 - -0.153555 -0.004132 -0.1653 - -0.153555 -0.006134 -0.161559 - -0.153555 -0.008396 -0.157992 - -0.153555 -0.010571 -0.154338 - -0.153555 -0.012745 -0.150771 - -0.153555 -0.014833 -0.14703 - -0.153555 -0.016921 -0.143289 - -0.153555 -0.018835 -0.139548 - -0.153555 -0.020837 -0.135807 - -0.153555 -0.022751 -0.131979 - -0.153555 -0.024578 -0.128238 - -0.153555 -0.026405 -0.124323 -e -v - -0.21663 -0.029058 -0.122322 - -0.21663 -0.021881 -0.121539 - -0.21663 -0.014747 -0.121278 - -0.21663 -0.007612 -0.121539 - -0.21663 -0.000479 -0.121626 - -0.21663 0.006655 -0.1218 - -0.21663 0.01379 -0.1218 - -0.21663 0.02101 -0.1218 - -0.21663 0.028144 -0.121713 - -0.21663 0.035278 -0.121539 - -0.21663 0.034931 -0.125367 - -0.21663 0.034408 -0.129108 - -0.21663 0.033712 -0.132849 - -0.21663 0.032842 -0.136503 - -0.21663 0.031886 -0.140157 - -0.21663 0.031189 -0.143898 - -0.21663 0.030841 -0.147639 - -0.21663 0.030406 -0.151467 - -0.21663 0.029797 -0.155208 - -0.21663 0.028754 -0.158775 - -0.21663 0.027448 -0.162429 - -0.21663 0.026665 -0.166083 - -0.21663 0.026057 -0.169824 - -0.21663 0.025796 -0.173652 - -0.21663 0.025796 -0.174957 - -0.21663 -0.000827 -0.17574 - -0.21663 -0.000827 -0.172521 - -0.21663 -0.003089 -0.168693 - -0.21663 -0.005263 -0.164865 - -0.21663 -0.007438 -0.161037 - -0.21663 -0.009613 -0.157122 - -0.21663 -0.011702 -0.153207 - -0.21663 -0.01379 -0.149379 - -0.21663 -0.015965 -0.145464 - -0.21663 -0.018052 -0.141549 - -0.21663 -0.020227 -0.137721 - -0.21663 -0.022403 -0.133893 - -0.21663 -0.024665 -0.130065 - -0.21663 -0.02684 -0.12615 - -0.21663 -0.029014 -0.122322 -e -v - -0.286143 -0.031929 -0.119973 - -0.286143 -0.024665 -0.119799 - -0.286143 -0.017357 -0.119799 - -0.286143 -0.010135 -0.119886 - -0.286143 -0.002914 -0.119886 - -0.286143 0.004393 -0.119799 - -0.286143 0.011614 -0.119625 - -0.286143 0.018835 -0.119364 - -0.286143 0.026057 -0.119103 - -0.286143 0.033365 -0.118755 - -0.286143 0.03319 -0.122583 - -0.286143 0.032842 -0.126411 - -0.286143 0.032407 -0.130239 - -0.286143 0.031799 -0.134067 - -0.286143 0.031277 -0.137895 - -0.286143 0.030668 -0.141723 - -0.286143 0.030145 -0.145551 - -0.286143 0.02971 -0.149379 - -0.286143 0.02945 -0.153294 - -0.286143 0.029362 -0.157122 - -0.286143 0.029275 -0.161037 - -0.286143 0.029102 -0.164865 - -0.286143 0.028754 -0.168693 - -0.286143 0.028406 -0.172608 - -0.286143 0.028406 -0.175305 - -0.286143 -0.001001 -0.175914 - -0.286143 -0.002479 -0.170433 - -0.286143 -0.005176 -0.166518 - -0.286143 -0.007351 -0.162603 - -0.286143 -0.009613 -0.158775 - -0.286143 -0.011789 -0.15486 - -0.286143 -0.014051 -0.151032 - -0.286143 -0.016313 -0.147117 - -0.286143 -0.018488 -0.143202 - -0.286143 -0.02075 -0.139374 - -0.286143 -0.023012 -0.135459 - -0.286143 -0.025186 -0.131544 - -0.286143 -0.027448 -0.127716 - -0.286143 -0.029624 -0.123801 - -0.286143 -0.031886 -0.119973 -e -v - -0.365661 -0.034713 -0.118755 - -0.365661 -0.027796 -0.118146 - -0.365661 -0.020924 -0.118059 - -0.365661 -0.014051 -0.118059 - -0.365661 -0.007091 -0.11832 - -0.365661 -0.000217 -0.11832 - -0.365661 0.006655 -0.117972 - -0.365661 0.013528 -0.117711 - -0.365661 0.020402 -0.117624 - -0.365661 0.027362 -0.117624 - -0.365661 0.02771 -0.122061 - -0.365661 0.02771 -0.12615 - -0.365661 0.027623 -0.130152 - -0.365661 0.027536 -0.134241 - -0.365661 0.027362 -0.138243 - -0.365661 0.027275 -0.142332 - -0.365661 0.027188 -0.146334 - -0.365661 0.027013 -0.150423 - -0.365661 0.026927 -0.154425 - -0.365661 0.026752 -0.158427 - -0.365661 0.026492 -0.162516 - -0.365661 0.026231 -0.166518 - -0.365661 0.025969 -0.17052 - -0.365661 0.025709 -0.174609 - -0.365661 0.025709 -0.176436 - -0.365661 -4.4e-05 -0.176697 - -0.365661 -0.001001 -0.17487 - -0.365661 -0.00361 -0.17052 - -0.365661 -0.006134 -0.166257 - -0.365661 -0.008744 -0.161907 - -0.365661 -0.011354 -0.157644 - -0.365661 -0.013964 -0.153294 - -0.365661 -0.016573 -0.148944 - -0.365661 -0.019096 -0.144681 - -0.365661 -0.021706 -0.140331 - -0.365661 -0.024317 -0.135981 - -0.365661 -0.026927 -0.131718 - -0.365661 -0.02945 -0.127368 - -0.365661 -0.03206 -0.123105 - -0.365661 -0.034669 -0.118755 -e -v - -0.409683 -0.037236 -0.118233 - -0.409683 -0.030406 -0.118146 - -0.409683 -0.02362 -0.118059 - -0.409683 -0.016834 -0.117972 - -0.409683 -0.010049 -0.117885 - -0.409683 -0.003263 -0.117798 - -0.409683 0.003523 -0.117711 - -0.409683 0.010309 -0.117624 - -0.409683 0.017096 -0.117537 - -0.409683 0.023882 -0.11745 - -0.409683 0.02423 -0.121626 - -0.409683 0.024055 -0.125802 - -0.409683 0.023969 -0.130065 - -0.409683 0.023795 -0.134241 - -0.409683 0.02362 -0.138417 - -0.409683 0.023534 -0.14268 - -0.409683 0.023359 -0.146856 - -0.409683 0.023272 -0.151032 - -0.409683 0.023099 -0.155208 - -0.409683 0.022924 -0.159471 - -0.409683 0.022838 -0.163647 - -0.409683 0.022664 -0.167823 - -0.409683 0.022489 -0.171999 - -0.409683 0.022403 -0.176262 - -0.409683 0.022838 -0.178089 - -0.409683 0.000739 -0.177828 - -0.409683 -0.000131 -0.176436 - -0.409683 -0.003001 -0.171999 - -0.409683 -0.005873 -0.167475 - -0.409683 -0.008656 -0.163038 - -0.409683 -0.011528 -0.158514 - -0.409683 -0.014399 -0.154077 - -0.409683 -0.017269 -0.149553 - -0.409683 -0.020054 -0.145116 - -0.409683 -0.022924 -0.140592 - -0.409683 -0.025796 -0.136155 - -0.409683 -0.028667 -0.131631 - -0.409683 -0.031537 -0.127194 - -0.409683 -0.034322 -0.12267 - -0.409683 -0.037193 -0.118233 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.004829 -0.131457 - 0.023229 -0.001522 -0.131457 - -0.022359 -0.009266 -0.12963 - -0.07395 -0.015356 -0.127977 - -0.153555 -0.026405 -0.124323 - -0.21663 -0.029014 -0.122322 - -0.286143 -0.031886 -0.119973 - -0.365661 -0.034669 -0.118755 - -0.409683 -0.037193 -0.118233 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.007351 -0.13137 - 0.023229 0.002132 -0.131457 - -0.022359 -0.004306 -0.12963 - -0.07395 -0.00944 -0.12789 - -0.153555 -0.019531 -0.124323 - -0.21663 -0.021881 -0.121539 - -0.286143 -0.024665 -0.119799 - -0.365661 -0.027796 -0.118146 - -0.409683 -0.030406 -0.118146 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.009787 -0.13137 - 0.023229 0.005786 -0.131457 - -0.022359 0.000653 -0.12963 - -0.07395 -0.003523 -0.12789 - -0.153555 -0.012571 -0.12441 - -0.21663 -0.014747 -0.121278 - -0.286143 -0.017357 -0.119799 - -0.365661 -0.020924 -0.118059 - -0.409683 -0.02362 -0.118059 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.012223 -0.13137 - 0.023229 0.009352 -0.131544 - -0.022359 0.005524 -0.129717 - -0.07395 0.002392 -0.127803 - -0.153555 -0.005699 -0.124584 - -0.21663 -0.007612 -0.121539 - -0.286143 -0.010135 -0.119886 - -0.365661 -0.014051 -0.118059 - -0.409683 -0.016834 -0.117972 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.014659 -0.13137 - 0.023229 0.013006 -0.131544 - -0.022359 0.010483 -0.129717 - -0.07395 0.008309 -0.127716 - -0.153555 0.001174 -0.124758 - -0.21663 -0.000479 -0.121626 - -0.286143 -0.002914 -0.119886 - -0.365661 -0.007091 -0.11832 - -0.409683 -0.010049 -0.117885 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.017096 -0.13137 - 0.023229 0.016661 -0.131544 - -0.022359 0.015442 -0.129717 - -0.07395 0.014225 -0.127716 - -0.153555 0.008047 -0.124758 - -0.21663 0.006655 -0.1218 - -0.286143 0.004393 -0.119799 - -0.365661 -0.000217 -0.11832 - -0.409683 -0.003263 -0.117798 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.019531 -0.131283 - 0.023229 0.020227 -0.131544 - -0.022359 0.020402 -0.129717 - -0.07395 0.020141 -0.127629 - -0.153555 0.014921 -0.124758 - -0.21663 0.01379 -0.1218 - -0.286143 0.011614 -0.119625 - -0.365661 0.006655 -0.117972 - -0.409683 0.003523 -0.117711 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.022055 -0.131283 - 0.023229 0.023882 -0.131631 - -0.022359 0.025361 -0.129717 - -0.07395 0.026057 -0.127629 - -0.153555 0.021881 -0.124671 - -0.21663 0.02101 -0.1218 - -0.286143 0.018835 -0.119364 - -0.365661 0.013528 -0.117711 - -0.409683 0.010309 -0.117624 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.02449 -0.131283 - 0.023229 0.027448 -0.131631 - -0.022359 0.03032 -0.129717 - -0.07395 0.031973 -0.127542 - -0.153555 0.028754 -0.12441 - -0.21663 0.028144 -0.121713 - -0.286143 0.026057 -0.119103 - -0.365661 0.020402 -0.117624 - -0.409683 0.017096 -0.117537 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.026927 -0.131283 - 0.023229 0.031103 -0.131631 - -0.022359 0.035278 -0.129804 - -0.07395 0.037889 -0.127455 - -0.153555 0.035627 -0.124149 - -0.21663 0.035278 -0.121539 - -0.286143 0.033365 -0.118755 - -0.365661 0.027362 -0.117624 - -0.409683 0.023882 -0.11745 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.026492 -0.132762 - 0.023229 0.030841 -0.133806 - -0.022359 0.035105 -0.132675 - -0.07395 0.037714 -0.130935 - -0.153555 0.035627 -0.127803 - -0.21663 0.034931 -0.125367 - -0.286143 0.03319 -0.122583 - -0.365661 0.02771 -0.122061 - -0.409683 0.02423 -0.121626 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.026144 -0.134241 - 0.023229 0.030493 -0.135981 - -0.022359 0.034757 -0.135546 - -0.07395 0.037367 -0.134415 - -0.153555 0.035365 -0.131544 - -0.21663 0.034408 -0.129108 - -0.286143 0.032842 -0.126411 - -0.365661 0.02771 -0.12615 - -0.409683 0.024055 -0.125802 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.025709 -0.13572 - 0.023229 0.030058 -0.138156 - -0.022359 0.034322 -0.13833 - -0.07395 0.036757 -0.137808 - -0.153555 0.034931 -0.135198 - -0.21663 0.033712 -0.132849 - -0.286143 0.032407 -0.130239 - -0.365661 0.027623 -0.130152 - -0.409683 0.023969 -0.130065 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.025361 -0.137199 - 0.023229 0.029624 -0.140244 - -0.022359 0.033712 -0.141201 - -0.07395 0.036061 -0.141201 - -0.153555 0.034235 -0.138765 - -0.21663 0.032842 -0.136503 - -0.286143 0.031799 -0.134067 - -0.365661 0.027536 -0.134241 - -0.409683 0.023795 -0.134241 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.0251 -0.138765 - 0.023229 0.029102 -0.142332 - -0.022359 0.033016 -0.143985 - -0.07395 0.035191 -0.144594 - -0.153555 0.033365 -0.142332 - -0.21663 0.031886 -0.140157 - -0.286143 0.031277 -0.137895 - -0.365661 0.027362 -0.138243 - -0.409683 0.02362 -0.138417 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.024751 -0.140244 - 0.023229 0.028579 -0.144507 - -0.022359 0.032233 -0.146769 - -0.07395 0.034148 -0.1479 - -0.153555 0.032407 -0.145899 - -0.21663 0.031189 -0.143898 - -0.286143 0.030668 -0.141723 - -0.365661 0.027275 -0.142332 - -0.409683 0.023534 -0.14268 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.024403 -0.141723 - 0.023229 0.027883 -0.146508 - -0.022359 0.031189 -0.149466 - -0.07395 0.032842 -0.151119 - -0.153555 0.031624 -0.149466 - -0.21663 0.030841 -0.147639 - -0.286143 0.030145 -0.145551 - -0.365661 0.027188 -0.146334 - -0.409683 0.023359 -0.146856 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.023795 -0.143202 - 0.023229 0.026927 -0.148509 - -0.022359 0.029885 -0.152076 - -0.07395 0.03145 -0.154251 - -0.153555 0.030668 -0.153033 - -0.21663 0.030406 -0.151467 - -0.286143 0.02971 -0.149379 - -0.365661 0.027013 -0.150423 - -0.409683 0.023272 -0.151032 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.023186 -0.144594 - 0.023229 0.025969 -0.15051 - -0.022359 0.028406 -0.154512 - -0.07395 0.029797 -0.157383 - -0.153555 0.029537 -0.1566 - -0.21663 0.029797 -0.155208 - -0.286143 0.02945 -0.153294 - -0.365661 0.026927 -0.154425 - -0.409683 0.023099 -0.155208 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.022403 -0.145899 - 0.023229 0.024838 -0.152337 - -0.022359 0.026752 -0.156948 - -0.07395 0.027883 -0.160254 - -0.153555 0.028058 -0.159993 - -0.21663 0.028754 -0.158775 - -0.286143 0.029362 -0.157122 - -0.365661 0.026752 -0.158427 - -0.409683 0.022924 -0.159471 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.021533 -0.147204 - 0.023229 0.023534 -0.154077 - -0.022359 0.024838 -0.159123 - -0.07395 0.025534 -0.162777 - -0.153555 0.026492 -0.163299 - -0.21663 0.027448 -0.162429 - -0.286143 0.029275 -0.161037 - -0.365661 0.026492 -0.162516 - -0.409683 0.022838 -0.163647 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.020314 -0.148161 - 0.023229 0.021881 -0.155469 - -0.022359 0.022576 -0.160863 - -0.07395 0.022924 -0.165126 - -0.153555 0.024751 -0.166518 - -0.21663 0.026665 -0.166083 - -0.286143 0.029102 -0.164865 - -0.365661 0.026231 -0.166518 - -0.409683 0.022664 -0.167823 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.01901 -0.148944 - 0.023229 0.019879 -0.156513 - -0.022359 0.019966 -0.162168 - -0.07395 0.019966 -0.166953 - -0.153555 0.022924 -0.169737 - -0.21663 0.026057 -0.169824 - -0.286143 0.028754 -0.168693 - -0.365661 0.025969 -0.17052 - -0.409683 0.022489 -0.171999 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.017531 -0.149466 - 0.023229 0.017879 -0.157122 - -0.022359 0.017269 -0.163038 - -0.07395 0.016748 -0.168171 - -0.153555 0.021097 -0.172869 - -0.21663 0.025796 -0.173652 - -0.286143 0.028406 -0.172608 - -0.365661 0.025709 -0.174609 - -0.409683 0.022403 -0.176262 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.016051 -0.149727 - 0.023229 0.015703 -0.15747 - -0.022359 0.014399 -0.163473 - -0.07395 0.013354 -0.16878 - -0.153555 0.020227 -0.178002 - -0.21663 0.025796 -0.174957 - -0.286143 0.028406 -0.175305 - -0.365661 0.025709 -0.176436 - -0.409683 0.022838 -0.178089 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.016051 -0.149727 - 0.023229 0.015703 -0.15747 - -0.022359 0.014399 -0.163473 - -0.07395 0.013354 -0.16878 - -0.153555 0.000392 -0.178524 - -0.21663 -0.000827 -0.17574 - -0.286143 -0.001001 -0.175914 - -0.365661 -4.4e-05 -0.176697 - -0.409683 0.000739 -0.177828 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.014311 -0.149814 - 0.023229 0.013354 -0.156948 - -0.022359 0.011266 -0.163038 - -0.07395 0.009701 -0.168258 - -0.153555 -0.000479 -0.172956 - -0.21663 -0.000827 -0.172521 - -0.286143 -0.002479 -0.170433 - -0.365661 -0.001001 -0.17487 - -0.409683 -0.000131 -0.176436 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.012659 -0.149553 - 0.023229 0.01118 -0.155991 - -0.022359 0.008309 -0.162081 - -0.07395 0.006655 -0.166257 - -0.153555 -0.002305 -0.169128 - -0.21663 -0.003089 -0.168693 - -0.286143 -0.005176 -0.166518 - -0.365661 -0.00361 -0.17052 - -0.409683 -0.003001 -0.171999 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.011266 -0.148596 - 0.023229 0.009266 -0.154599 - -0.022359 0.005612 -0.160428 - -0.07395 0.004132 -0.16356 - -0.153555 -0.004132 -0.1653 - -0.21663 -0.005263 -0.164865 - -0.286143 -0.007351 -0.162603 - -0.365661 -0.006134 -0.166257 - -0.409683 -0.005873 -0.167475 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.010223 -0.147291 - 0.023229 0.007612 -0.153033 - -0.022359 0.003436 -0.158166 - -0.07395 0.001696 -0.160776 - -0.153555 -0.006134 -0.161559 - -0.21663 -0.007438 -0.161037 - -0.286143 -0.009613 -0.158775 - -0.365661 -0.008744 -0.161907 - -0.409683 -0.008656 -0.163038 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.009266 -0.145899 - 0.023229 0.006047 -0.151206 - -0.022359 0.001522 -0.155643 - -0.07395 -0.000304 -0.157644 - -0.153555 -0.008396 -0.157992 - -0.21663 -0.009613 -0.157122 - -0.286143 -0.011789 -0.15486 - -0.365661 -0.011354 -0.157644 - -0.409683 -0.011528 -0.158514 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.008396 -0.14442 - 0.023229 0.004655 -0.149205 - -0.022359 -0.000304 -0.15312 - -0.07395 -0.002132 -0.154425 - -0.153555 -0.010571 -0.154338 - -0.21663 -0.011702 -0.153207 - -0.286143 -0.014051 -0.151032 - -0.365661 -0.013964 -0.153294 - -0.409683 -0.014399 -0.154077 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.007699 -0.142941 - 0.023229 0.00361 -0.147117 - -0.022359 -0.001871 -0.150336 - -0.07395 -0.003958 -0.151206 - -0.153555 -0.012745 -0.150771 - -0.21663 -0.01379 -0.149379 - -0.286143 -0.016313 -0.147117 - -0.365661 -0.016573 -0.148944 - -0.409683 -0.017269 -0.149553 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.007091 -0.141288 - 0.023229 0.002654 -0.144942 - -0.022359 -0.003263 -0.147552 - -0.07395 -0.005786 -0.147987 - -0.153555 -0.014833 -0.14703 - -0.21663 -0.015965 -0.145464 - -0.286143 -0.018488 -0.143202 - -0.365661 -0.019096 -0.144681 - -0.409683 -0.020054 -0.145116 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.006568 -0.139722 - 0.023229 0.001783 -0.142767 - -0.022359 -0.004568 -0.144681 - -0.07395 -0.007438 -0.144681 - -0.153555 -0.016921 -0.143289 - -0.21663 -0.018052 -0.141549 - -0.286143 -0.02075 -0.139374 - -0.365661 -0.021706 -0.140331 - -0.409683 -0.022924 -0.140592 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.006134 -0.138069 - 0.023229 0.000914 -0.140592 - -0.022359 -0.005699 -0.141723 - -0.07395 -0.009092 -0.141375 - -0.153555 -0.018835 -0.139548 - -0.21663 -0.020227 -0.137721 - -0.286143 -0.023012 -0.135459 - -0.365661 -0.024317 -0.135981 - -0.409683 -0.025796 -0.136155 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.005699 -0.136416 - 0.023229 0.000131 -0.13833 - -0.022359 -0.00683 -0.138765 - -0.07395 -0.010744 -0.138069 - -0.153555 -0.020837 -0.135807 - -0.21663 -0.022403 -0.133893 - -0.286143 -0.025186 -0.131544 - -0.365661 -0.026927 -0.131718 - -0.409683 -0.028667 -0.131631 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.00535 -0.134763 - 0.023229 -0.000479 -0.136068 - -0.022359 -0.007786 -0.13572 - -0.07395 -0.012311 -0.134676 - -0.153555 -0.022751 -0.131979 - -0.21663 -0.024665 -0.130065 - -0.286143 -0.027448 -0.127716 - -0.365661 -0.02945 -0.127368 - -0.409683 -0.031537 -0.127194 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.005089 -0.13311 - 0.023229 -0.001001 -0.133719 - -0.022359 -0.00857 -0.132675 - -0.07395 -0.013876 -0.13137 - -0.153555 -0.024578 -0.128238 - -0.21663 -0.02684 -0.12615 - -0.286143 -0.029624 -0.123801 - -0.365661 -0.03206 -0.123105 - -0.409683 -0.034322 -0.12267 -e -v - 0.111621 0.018444 -0.13137 - 0.058638 0.004829 -0.131457 - 0.023229 -0.001522 -0.131457 - -0.022359 -0.009266 -0.12963 - -0.07395 -0.015356 -0.127977 - -0.153555 -0.026405 -0.124323 - -0.21663 -0.029014 -0.122322 - -0.286143 -0.031886 -0.119973 - -0.365661 -0.034669 -0.118755 - -0.409683 -0.037193 -0.118233 -e -v - -0.409683 -0.036888 -0.118059 - -0.409683 -0.016138 -0.117537 - -0.409683 0.004481 -0.117015 - -0.409683 0.0251 -0.116493 - -0.409683 0.024665 -0.129717 - -0.409683 0.02423 -0.142941 - -0.409683 0.023707 -0.156165 - -0.409683 0.023882 -0.179307 - -0.409683 0.002654 -0.179481 - -0.409683 -0.010571 -0.161298 - -0.409683 -0.012571 -0.157992 - -0.409683 -0.014573 -0.154686 - -0.409683 -0.016573 -0.15138 - -0.409683 -0.018662 -0.147987 - -0.409683 -0.020662 -0.144681 - -0.409683 -0.022664 -0.141375 - -0.409683 -0.024665 -0.137982 - -0.409683 -0.026752 -0.134676 - -0.409683 -0.028754 -0.13137 - -0.409683 -0.030755 -0.128064 - -0.409683 -0.032756 -0.124671 - -0.409683 -0.034844 -0.121365 - -0.409683 -0.036844 -0.118059 -e -v - -0.485634 -0.038541 -0.117189 - -0.485634 -0.019096 -0.117102 - -0.485634 0.000304 -0.117015 - -0.485634 0.019793 -0.116841 - -0.485634 0.019531 -0.13137 - -0.485634 0.019183 -0.145812 - -0.485634 0.018923 -0.160341 - -0.485634 0.018662 -0.178785 - -0.485634 0.005699 -0.179046 - -0.485634 -0.015878 -0.167997 - -0.485634 -0.019531 -0.165648 - -0.485634 -0.022576 -0.162603 - -0.485634 -0.024143 -0.158514 - -0.485634 -0.025534 -0.154338 - -0.485634 -0.02684 -0.150162 - -0.485634 -0.028144 -0.145986 - -0.485634 -0.029537 -0.141897 - -0.485634 -0.031016 -0.137721 - -0.485634 -0.032407 -0.133632 - -0.485634 -0.033886 -0.129456 - -0.485634 -0.035365 -0.125367 - -0.485634 -0.036931 -0.121278 - -0.485634 -0.038498 -0.117189 -e -v - -0.5568 -0.038976 -0.117189 - -0.5568 -0.021097 -0.118146 - -0.5568 -0.003176 -0.119016 - -0.5568 0.014659 -0.119973 - -0.5568 0.013964 -0.132675 - -0.5568 0.013702 -0.145464 - -0.5568 0.013528 -0.15834 - -0.5568 0.013616 -0.179133 - -0.5568 -0.025186 -0.175653 - -0.5568 -0.029885 -0.174609 - -0.5568 -0.032407 -0.170433 - -0.5568 -0.03319 -0.165648 - -0.5568 -0.033712 -0.160776 - -0.5568 -0.034235 -0.155991 - -0.5568 -0.034757 -0.151119 - -0.5568 -0.035365 -0.146247 - -0.5568 -0.035887 -0.141375 - -0.5568 -0.036497 -0.13659 - -0.5568 -0.037106 -0.131718 - -0.5568 -0.037714 -0.126846 - -0.5568 -0.038323 -0.121974 - -0.5568 -0.038932 -0.117189 -e -v - -0.638232 -0.038541 -0.116232 - -0.638232 -0.023272 -0.117624 - -0.638232 -0.008047 -0.119016 - -0.638232 0.007178 -0.120408 - -0.638232 0.00683 -0.12789 - -0.638232 0.006568 -0.135459 - -0.638232 0.006307 -0.143028 - -0.638232 0.012571 -0.15051 - -0.638232 0.012833 -0.162081 - -0.638232 0.006394 -0.162429 - -0.638232 0.007004 -0.178176 - -0.638232 -0.035974 -0.178263 - -0.638232 -0.037802 -0.174261 - -0.638232 -0.037714 -0.169389 - -0.638232 -0.037627 -0.164604 - -0.638232 -0.037627 -0.159732 - -0.638232 -0.037627 -0.154947 - -0.638232 -0.037627 -0.150075 - -0.638232 -0.037714 -0.14529 - -0.638232 -0.037802 -0.140418 - -0.638232 -0.037889 -0.135546 - -0.638232 -0.037976 -0.130761 - -0.638232 -0.038149 -0.125889 - -0.638232 -0.038323 -0.121104 - -0.638232 -0.038498 -0.116232 -e -v - -0.706005 -0.037062 -0.111534 - -0.706005 -0.024751 -0.112752 - -0.706005 -0.012397 -0.11397 - -0.706005 -0.000131 -0.115188 - -0.706005 -0.000653 -0.120582 - -0.706005 0.000304 -0.12615 - -0.706005 0.000653 -0.131805 - -0.706005 0.013442 -0.146769 - -0.706005 0.013268 -0.160167 - -0.706005 0.000827 -0.159558 - -0.706005 0.000739 -0.167823 - -0.706005 -0.036236 -0.168432 - -0.706005 -0.036497 -0.16443 - -0.706005 -0.036757 -0.16008 - -0.706005 -0.036931 -0.155643 - -0.706005 -0.037193 -0.151206 - -0.706005 -0.03728 -0.146856 - -0.706005 -0.037367 -0.142419 - -0.706005 -0.037367 -0.137982 - -0.706005 -0.03728 -0.133545 - -0.706005 -0.037193 -0.129195 - -0.706005 -0.037193 -0.124758 - -0.706005 -0.037106 -0.120321 - -0.706005 -0.037106 -0.115971 - -0.706005 -0.037019 -0.111534 -e -v - -0.757944 -0.030885 -0.108228 - -0.757944 -0.024665 -0.109185 - -0.757944 -0.018488 -0.10962 - -0.757944 -0.012311 -0.109707 - -0.757944 -0.010049 -0.116319 - -0.757944 -0.007786 -0.122931 - -0.757944 -0.005437 -0.12963 - -0.757944 0.013876 -0.144942 - -0.757944 0.014311 -0.156513 - -0.757944 -0.004219 -0.156861 - -0.757944 -0.004219 -0.15921 - -0.757944 -0.036148 -0.159993 - -0.757944 -0.03667 -0.155469 - -0.757944 -0.036931 -0.15138 - -0.757944 -0.036757 -0.147378 - -0.757944 -0.036584 -0.143289 - -0.757944 -0.036497 -0.1392 - -0.757944 -0.036584 -0.135111 - -0.757944 -0.03667 -0.131109 - -0.757944 -0.036844 -0.12702 - -0.757944 -0.036931 -0.122931 - -0.757944 -0.036584 -0.118929 - -0.757944 -0.034844 -0.115275 - -0.757944 -0.032929 -0.111708 - -0.757944 -0.030841 -0.108228 -e -v - -0.812058 -0.026883 -0.109098 - -0.812058 -0.025709 -0.109098 - -0.812058 -0.024665 -0.109098 - -0.812058 -0.02362 -0.109185 - -0.812058 -0.019879 -0.117363 - -0.812058 -0.015703 -0.125628 - -0.812058 -0.011528 -0.133893 - -0.812058 0.011702 -0.149118 - -0.812058 0.012049 -0.155121 - -0.812058 -0.010658 -0.158427 - -0.812058 -0.035105 -0.157905 - -0.812058 -0.035974 -0.154077 - -0.812058 -0.036148 -0.150162 - -0.812058 -0.035887 -0.14616 - -0.812058 -0.035887 -0.142245 - -0.812058 -0.036236 -0.13833 - -0.812058 -0.036497 -0.134328 - -0.812058 -0.03641 -0.130413 - -0.812058 -0.035887 -0.126498 - -0.812058 -0.034844 -0.12267 - -0.812058 -0.033103 -0.11919 - -0.812058 -0.031103 -0.115797 - -0.812058 -0.029014 -0.112404 - -0.812058 -0.02684 -0.109098 -e -v - -0.849642 -0.026709 -0.122322 - -0.849642 -0.025709 -0.122148 - -0.849642 -0.024751 -0.121974 - -0.849642 -0.023882 -0.121887 - -0.849642 -0.020662 -0.126846 - -0.849642 -0.017531 -0.131805 - -0.849642 -0.014311 -0.136764 - -0.849642 0.007265 -0.149988 - -0.849642 -0.01318 -0.156687 - -0.849642 -0.032582 -0.156861 - -0.849642 -0.032582 -0.154077 - -0.849642 -0.032669 -0.151293 - -0.849642 -0.032756 -0.148422 - -0.849642 -0.032842 -0.145638 - -0.849642 -0.032842 -0.142854 - -0.849642 -0.032756 -0.139983 - -0.849642 -0.032669 -0.137199 - -0.849642 -0.03319 -0.134415 - -0.849642 -0.032495 -0.131805 - -0.849642 -0.030755 -0.12963 - -0.849642 -0.029102 -0.127281 - -0.849642 -0.027796 -0.124845 - -0.849642 -0.026665 -0.122322 -e -v - -0.898275 -0.026883 -0.139548 - -0.898275 -0.026231 -0.139635 - -0.898275 -0.025621 -0.139635 - -0.898275 -0.025013 -0.139635 - -0.898275 -0.02362 -0.141375 - -0.898275 -0.022228 -0.143028 - -0.898275 -0.020924 -0.144768 - -0.898275 -0.011789 -0.15138 - -0.898275 -0.019706 -0.155904 - -0.898275 -0.020141 -0.155904 - -0.898275 -0.029885 -0.15573 - -0.898275 -0.03032 -0.154338 - -0.898275 -0.03032 -0.153033 - -0.898275 -0.03032 -0.151728 - -0.898275 -0.030233 -0.150423 - -0.898275 -0.030233 -0.149118 - -0.898275 -0.030233 -0.147726 - -0.898275 -0.03032 -0.146421 - -0.898275 -0.030233 -0.145116 - -0.898275 -0.029885 -0.143811 - -0.898275 -0.029275 -0.14268 - -0.898275 -0.028493 -0.141636 - -0.898275 -0.027623 -0.140592 - -0.898275 -0.02684 -0.139548 -e -v - -0.938034 -0.031581 -0.155904 -e -v - -0.409683 -0.036888 -0.118059 - -0.485634 -0.038498 -0.117189 - -0.5568 -0.038932 -0.117189 - -0.638232 -0.038498 -0.116232 - -0.706005 -0.037019 -0.111534 - -0.757944 -0.030841 -0.108228 - -0.812058 -0.02684 -0.109098 - -0.849642 -0.026665 -0.122322 - -0.898275 -0.02684 -0.139548 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.016182 -0.117537 - -0.485634 -0.019096 -0.117102 - -0.5568 -0.021097 -0.118146 - -0.638232 -0.023272 -0.117624 - -0.706005 -0.024751 -0.112752 - -0.757944 -0.024665 -0.109185 - -0.812058 -0.025709 -0.109098 - -0.849642 -0.025709 -0.122148 - -0.898275 -0.026231 -0.139635 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.004437 -0.117015 - -0.485634 0.000304 -0.117015 - -0.5568 -0.003176 -0.119016 - -0.638232 -0.008047 -0.119016 - -0.706005 -0.012397 -0.11397 - -0.757944 -0.018488 -0.10962 - -0.812058 -0.024665 -0.109098 - -0.849642 -0.024751 -0.121974 - -0.898275 -0.025621 -0.139635 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.025056 -0.116493 - -0.485634 0.019793 -0.116841 - -0.5568 0.014659 -0.119973 - -0.638232 0.007178 -0.120408 - -0.706005 -0.000131 -0.115188 - -0.757944 -0.012311 -0.109707 - -0.812058 -0.02362 -0.109185 - -0.849642 -0.023882 -0.121887 - -0.898275 -0.025013 -0.139635 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.024621 -0.129717 - -0.485634 0.019531 -0.13137 - -0.5568 0.013964 -0.132675 - -0.638232 0.00683 -0.12789 - -0.706005 -0.000653 -0.120582 - -0.757944 -0.010049 -0.116319 - -0.812058 -0.019879 -0.117363 - -0.849642 -0.020662 -0.126846 - -0.898275 -0.02362 -0.141375 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.024186 -0.142941 - -0.485634 0.019183 -0.145812 - -0.5568 0.013702 -0.145464 - -0.638232 0.006568 -0.135459 - -0.706005 0.000304 -0.12615 - -0.757944 -0.007786 -0.122931 - -0.812058 -0.015703 -0.125628 - -0.849642 -0.017531 -0.131805 - -0.898275 -0.022228 -0.143028 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.023664 -0.156165 - -0.485634 0.018923 -0.160341 - -0.5568 0.013528 -0.15834 - -0.638232 0.006307 -0.143028 - -0.706005 0.000653 -0.131805 - -0.757944 -0.005437 -0.12963 - -0.812058 -0.011528 -0.133893 - -0.849642 -0.014311 -0.136764 - -0.898275 -0.020924 -0.144768 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.023664 -0.156165 - -0.485634 0.018923 -0.160341 - -0.5568 0.013528 -0.15834 - -0.638232 0.012571 -0.15051 - -0.706005 0.013442 -0.146769 - -0.757944 0.013876 -0.144942 - -0.812058 0.011702 -0.149118 - -0.849642 0.007265 -0.149988 - -0.898275 -0.011789 -0.15138 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.023664 -0.156165 - -0.485634 0.018923 -0.160341 - -0.5568 0.013528 -0.15834 - -0.638232 0.012833 -0.162081 - -0.706005 0.013268 -0.160167 - -0.757944 0.014311 -0.156513 - -0.812058 0.012049 -0.155121 - -0.849642 0.007265 -0.149988 - -0.898275 -0.011789 -0.15138 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.023838 -0.179307 - -0.485634 0.018662 -0.178785 - -0.5568 0.013616 -0.179133 - -0.638232 0.006394 -0.162429 - -0.706005 0.000827 -0.159558 - -0.757944 -0.004219 -0.156861 - -0.812058 -0.010658 -0.158427 - -0.849642 -0.01318 -0.156687 - -0.898275 -0.019706 -0.155904 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 0.00261 -0.179481 - -0.485634 0.005699 -0.179046 - -0.5568 0.013616 -0.179133 - -0.638232 0.007004 -0.178176 - -0.706005 0.000739 -0.167823 - -0.757944 -0.004219 -0.15921 - -0.812058 -0.010658 -0.158427 - -0.849642 -0.01318 -0.156687 - -0.898275 -0.020141 -0.155904 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.010614 -0.161298 - -0.485634 -0.015878 -0.167997 - -0.5568 -0.025186 -0.175653 - -0.638232 -0.035974 -0.178263 - -0.706005 -0.036236 -0.168432 - -0.757944 -0.036148 -0.159993 - -0.812058 -0.035105 -0.157905 - -0.849642 -0.032582 -0.156861 - -0.898275 -0.029885 -0.15573 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.012615 -0.157992 - -0.485634 -0.019531 -0.165648 - -0.5568 -0.029885 -0.174609 - -0.638232 -0.037802 -0.174261 - -0.706005 -0.036497 -0.16443 - -0.757944 -0.03667 -0.155469 - -0.812058 -0.035974 -0.154077 - -0.849642 -0.032582 -0.154077 - -0.898275 -0.03032 -0.154338 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.014616 -0.154686 - -0.485634 -0.022576 -0.162603 - -0.5568 -0.032407 -0.170433 - -0.638232 -0.037714 -0.169389 - -0.706005 -0.036757 -0.16008 - -0.757944 -0.036931 -0.15138 - -0.812058 -0.036148 -0.150162 - -0.849642 -0.032669 -0.151293 - -0.898275 -0.03032 -0.153033 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.016617 -0.15138 - -0.485634 -0.024143 -0.158514 - -0.5568 -0.03319 -0.165648 - -0.638232 -0.037627 -0.164604 - -0.706005 -0.036931 -0.155643 - -0.757944 -0.036757 -0.147378 - -0.812058 -0.035887 -0.14616 - -0.849642 -0.032756 -0.148422 - -0.898275 -0.03032 -0.151728 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.018705 -0.147987 - -0.485634 -0.025534 -0.154338 - -0.5568 -0.033712 -0.160776 - -0.638232 -0.037627 -0.159732 - -0.706005 -0.037193 -0.151206 - -0.757944 -0.036584 -0.143289 - -0.812058 -0.035887 -0.142245 - -0.849642 -0.032842 -0.145638 - -0.898275 -0.030233 -0.150423 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.020706 -0.144681 - -0.485634 -0.02684 -0.150162 - -0.5568 -0.034235 -0.155991 - -0.638232 -0.037627 -0.154947 - -0.706005 -0.03728 -0.146856 - -0.757944 -0.036497 -0.1392 - -0.812058 -0.036236 -0.13833 - -0.849642 -0.032842 -0.142854 - -0.898275 -0.030233 -0.149118 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.022707 -0.141375 - -0.485634 -0.028144 -0.145986 - -0.5568 -0.034757 -0.151119 - -0.638232 -0.037627 -0.150075 - -0.706005 -0.037367 -0.142419 - -0.757944 -0.036584 -0.135111 - -0.812058 -0.036497 -0.134328 - -0.849642 -0.032756 -0.139983 - -0.898275 -0.030233 -0.147726 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.024708 -0.137982 - -0.485634 -0.029537 -0.141897 - -0.5568 -0.035365 -0.146247 - -0.638232 -0.037714 -0.14529 - -0.706005 -0.037367 -0.137982 - -0.757944 -0.03667 -0.131109 - -0.812058 -0.03641 -0.130413 - -0.849642 -0.032669 -0.137199 - -0.898275 -0.03032 -0.146421 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.026796 -0.134676 - -0.485634 -0.031016 -0.137721 - -0.5568 -0.035887 -0.141375 - -0.638232 -0.037802 -0.140418 - -0.706005 -0.03728 -0.133545 - -0.757944 -0.036844 -0.12702 - -0.812058 -0.035887 -0.126498 - -0.849642 -0.03319 -0.134415 - -0.898275 -0.030233 -0.145116 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.028797 -0.13137 - -0.485634 -0.032407 -0.133632 - -0.5568 -0.036497 -0.13659 - -0.638232 -0.037889 -0.135546 - -0.706005 -0.037193 -0.129195 - -0.757944 -0.036931 -0.122931 - -0.812058 -0.034844 -0.12267 - -0.849642 -0.032495 -0.131805 - -0.898275 -0.029885 -0.143811 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.030798 -0.128064 - -0.485634 -0.033886 -0.129456 - -0.5568 -0.037106 -0.131718 - -0.638232 -0.037976 -0.130761 - -0.706005 -0.037193 -0.124758 - -0.757944 -0.036584 -0.118929 - -0.812058 -0.033103 -0.11919 - -0.849642 -0.030755 -0.12963 - -0.898275 -0.029275 -0.14268 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.032799 -0.124671 - -0.485634 -0.035365 -0.125367 - -0.5568 -0.037714 -0.126846 - -0.638232 -0.038149 -0.125889 - -0.706005 -0.037106 -0.120321 - -0.757944 -0.034844 -0.115275 - -0.812058 -0.031103 -0.115797 - -0.849642 -0.029102 -0.127281 - -0.898275 -0.028493 -0.141636 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.034887 -0.121365 - -0.485634 -0.036931 -0.121278 - -0.5568 -0.038323 -0.121974 - -0.638232 -0.038323 -0.121104 - -0.706005 -0.037106 -0.115971 - -0.757944 -0.032929 -0.111708 - -0.812058 -0.029014 -0.112404 - -0.849642 -0.027796 -0.124845 - -0.898275 -0.027623 -0.140592 - -0.938034 -0.031537 -0.155904 -e -v - -0.409683 -0.036888 -0.118059 - -0.485634 -0.038498 -0.117189 - -0.5568 -0.038932 -0.117189 - -0.638232 -0.038498 -0.116232 - -0.706005 -0.037019 -0.111534 - -0.757944 -0.030841 -0.108228 - -0.812058 -0.02684 -0.109098 - -0.849642 -0.026665 -0.122322 - -0.898275 -0.02684 -0.139548 - -0.938034 -0.031537 -0.155904 -e -v - -0.096048 0.008961 -0.176784 - -0.099702 0.011789 -0.176784 - -0.108402 0.014137 -0.176871 - -0.120756 0.016226 -0.176871 - -0.133197 0.017792 -0.176871 - -0.145638 0.019096 -0.176958 - -0.17052 0.021185 -0.176958 - -0.220284 0.024143 -0.177045 - -0.270048 0.025796 -0.177045 - -0.319812 0.025969 -0.177045 - -0.369576 0.024838 -0.177045 - -0.41934 0.022489 -0.176958 - -0.469104 0.019358 -0.176958 - -0.518868 0.015356 -0.176871 - -0.568458 0.010918 -0.176784 - -0.593253 0.008918 -0.176784 - -0.568371 0.007961 -0.176697 - -0.518607 0.006134 -0.176697 - -0.46893 0.003958 -0.176697 - -0.419253 0.00161 -0.17661 - -0.369576 -0.000304 -0.17661 - -0.319899 -0.001522 -0.176523 - -0.270222 -0.001783 -0.176523 - -0.220545 -0.001001 -0.17661 - -0.170868 0.000565 -0.17661 - -0.145986 0.001696 -0.17661 - -0.133545 0.002479 -0.17661 - -0.121104 0.00335 -0.17661 - -0.108663 0.004742 -0.176697 - -0.099963 0.006394 -0.176697 - -0.096135 0.00883 -0.176697 -e -v - -0.261783 0.008874 -0.346869 - -0.264219 0.010744 -0.346956 - -0.270048 0.012311 -0.346956 - -0.278313 0.013616 -0.346956 - -0.286578 0.014659 -0.346956 - -0.294843 0.015442 -0.347043 - -0.31146 0.016834 -0.347043 - -0.344607 0.018748 -0.347043 - -0.377754 0.019793 -0.347043 - -0.410988 0.019966 -0.34713 - -0.444135 0.019183 -0.347043 - -0.477282 0.017704 -0.347043 - -0.510516 0.015703 -0.347043 - -0.543663 0.013094 -0.346956 - -0.576723 0.010223 -0.346956 - -0.593253 0.008918 -0.346869 - -0.576723 0.008309 -0.346869 - -0.543489 0.007178 -0.346869 - -0.510342 0.005786 -0.346869 - -0.477282 0.004306 -0.346782 - -0.444135 0.003089 -0.346782 - -0.410988 0.002305 -0.346782 - -0.377928 0.002132 -0.346782 - -0.344781 0.002567 -0.346782 - -0.311634 0.00361 -0.346782 - -0.295104 0.004306 -0.346782 - -0.286839 0.004829 -0.346782 - -0.278487 0.00535 -0.346869 - -0.270222 0.00622 -0.346869 - -0.264393 0.007265 -0.346869 - -0.26187 0.00883 -0.346869 -e -v - -0.42978 0.008874 -0.512604 - -0.431259 0.009961 -0.512691 - -0.434652 0.010918 -0.512691 - -0.439611 0.011702 -0.512691 - -0.444657 0.012311 -0.512691 - -0.449616 0.012745 -0.512691 - -0.459534 0.013616 -0.512691 - -0.479457 0.014747 -0.512691 - -0.49938 0.015356 -0.512778 - -0.519216 0.015442 -0.512778 - -0.539139 0.015007 -0.512778 - -0.559062 0.014137 -0.512691 - -0.578985 0.01292 -0.512691 - -0.598821 0.011354 -0.512691 - -0.618744 0.009701 -0.512604 - -0.628662 0.008918 -0.512604 - -0.618657 0.00857 -0.512604 - -0.598821 0.007873 -0.512604 - -0.578898 0.007091 -0.512604 - -0.559062 0.00622 -0.512604 - -0.539139 0.005524 -0.512604 - -0.519303 0.005003 -0.512604 - -0.49938 0.004916 -0.512517 - -0.479544 0.005176 -0.512604 - -0.459708 0.005786 -0.512604 - -0.449703 0.00622 -0.512604 - -0.444744 0.006481 -0.512604 - -0.439785 0.00683 -0.512604 - -0.434826 0.007351 -0.512604 - -0.431346 0.007961 -0.512604 - -0.42978 0.00883 -0.512604 -e -v - -0.47589 0.008874 -0.563412 - -0.476412 0.009961 -0.563499 - -0.477543 0.010744 -0.563499 - -0.479283 0.01144 -0.563499 - -0.480936 0.011963 -0.563499 - -0.482676 0.012397 -0.563499 - -0.486156 0.013094 -0.563499 - -0.492942 0.014051 -0.563586 - -0.499815 0.014573 -0.563586 - -0.506688 0.014573 -0.563586 - -0.513561 0.014137 -0.563586 - -0.520434 0.013268 -0.563499 - -0.527307 0.012223 -0.563499 - -0.53418 0.010918 -0.563499 - -0.540966 0.009527 -0.563499 - -0.544446 0.008918 -0.563412 - -0.540966 0.008396 -0.563412 - -0.534093 0.007438 -0.563412 - -0.52722 0.006394 -0.563412 - -0.520434 0.00535 -0.563412 - -0.513561 0.004568 -0.563412 - -0.506775 0.004132 -0.563412 - -0.499902 0.004132 -0.563412 - -0.493116 0.004481 -0.563412 - -0.486243 0.005263 -0.563412 - -0.48285 0.005786 -0.563412 - -0.48111 0.006134 -0.563412 - -0.47937 0.006568 -0.563412 - -0.477717 0.007178 -0.563412 - -0.476499 0.007873 -0.563412 - -0.47589 0.00883 -0.563412 -e -v - -0.522609 0.008874 -0.574548 - -0.522609 0.009004 -0.574548 - -0.522609 0.009092 -0.574548 - -0.522696 0.009092 -0.574548 - -0.522783 0.009178 -0.574548 - -0.52287 0.009178 -0.574548 - -0.523131 0.009266 -0.574548 - -0.523305 0.009352 -0.574548 - -0.523566 0.009352 -0.574548 - -0.523827 0.009352 -0.574548 - -0.524001 0.009266 -0.574548 - -0.524262 0.009178 -0.574548 - -0.524523 0.009092 -0.574548 - -0.524697 0.008918 -0.574548 - -0.524784 0.008918 -0.574548 - -0.524697 0.008918 -0.574548 - -0.524436 0.008918 -0.574548 - -0.524175 0.008918 -0.574548 - -0.524001 0.00883 -0.574548 - -0.523827 0.00883 -0.574461 - -0.523566 0.008744 -0.574461 - -0.523392 0.008744 -0.574461 - -0.523131 0.008744 -0.574461 - -0.522957 0.008744 -0.574461 - -0.52287 0.00883 -0.574461 - -0.522783 0.00883 -0.574461 - -0.522696 0.00883 -0.574461 - -0.522696 0.00883 -0.574548 - -0.522609 0.00883 -0.574548 - -0.522609 0.008918 -0.574548 -e -v - -0.096048 0.008961 -0.176784 - -0.261783 0.008918 -0.346869 - -0.42978 0.008918 -0.512604 - -0.47589 0.008918 -0.563412 - -0.522609 0.008918 -0.574548 -e -v - -0.099702 0.011745 -0.176784 - -0.264219 0.010744 -0.346956 - -0.431259 0.009961 -0.512691 - -0.476412 0.009961 -0.563499 - -0.522609 0.008918 -0.574548 -e -v - -0.108402 0.014094 -0.176871 - -0.270048 0.012311 -0.346956 - -0.434652 0.010918 -0.512691 - -0.477543 0.010744 -0.563499 - -0.522609 0.009004 -0.574548 -e -v - -0.120756 0.016182 -0.176871 - -0.278313 0.013616 -0.346956 - -0.439611 0.011702 -0.512691 - -0.479283 0.01144 -0.563499 - -0.522609 0.009092 -0.574548 -e -v - -0.133197 0.017748 -0.176871 - -0.286578 0.014659 -0.346956 - -0.444657 0.012311 -0.512691 - -0.480936 0.011963 -0.563499 - -0.522696 0.009092 -0.574548 -e -v - -0.145638 0.019053 -0.176958 - -0.294843 0.015442 -0.347043 - -0.449616 0.012745 -0.512691 - -0.482676 0.012397 -0.563499 - -0.522783 0.009178 -0.574548 -e -v - -0.17052 0.021141 -0.176958 - -0.31146 0.016834 -0.347043 - -0.459534 0.013616 -0.512691 - -0.486156 0.013094 -0.563499 - -0.52287 0.009178 -0.574548 -e -v - -0.220284 0.024099 -0.177045 - -0.344607 0.018748 -0.347043 - -0.479457 0.014747 -0.512691 - -0.492942 0.014051 -0.563586 - -0.523131 0.009266 -0.574548 -e -v - -0.270048 0.025752 -0.177045 - -0.377754 0.019793 -0.347043 - -0.49938 0.015356 -0.512778 - -0.499815 0.014573 -0.563586 - -0.523305 0.009352 -0.574548 -e -v - -0.319812 0.025926 -0.177045 - -0.410988 0.019966 -0.34713 - -0.519216 0.015442 -0.512778 - -0.506688 0.014573 -0.563586 - -0.523566 0.009352 -0.574548 -e -v - -0.369576 0.024795 -0.177045 - -0.444135 0.019183 -0.347043 - -0.539139 0.015007 -0.512778 - -0.513561 0.014137 -0.563586 - -0.523827 0.009352 -0.574548 -e -v - -0.41934 0.022446 -0.176958 - -0.477282 0.017704 -0.347043 - -0.559062 0.014137 -0.512691 - -0.520434 0.013268 -0.563499 - -0.524001 0.009266 -0.574548 -e -v - -0.469104 0.019314 -0.176958 - -0.510516 0.015703 -0.347043 - -0.578985 0.01292 -0.512691 - -0.527307 0.012223 -0.563499 - -0.524262 0.009178 -0.574548 -e -v - -0.518868 0.015312 -0.176871 - -0.543663 0.013094 -0.346956 - -0.598821 0.011354 -0.512691 - -0.53418 0.010918 -0.563499 - -0.524523 0.009092 -0.574548 -e -v - -0.568458 0.010875 -0.176784 - -0.576723 0.010223 -0.346956 - -0.618744 0.009701 -0.512604 - -0.540966 0.009527 -0.563499 - -0.524697 0.008918 -0.574548 -e -v - -0.593253 0.008874 -0.176784 - -0.593253 0.008918 -0.346869 - -0.628662 0.008918 -0.512604 - -0.544446 0.008918 -0.563412 - -0.524784 0.008918 -0.574548 -e -v - -0.568371 0.007917 -0.176697 - -0.576723 0.008309 -0.346869 - -0.618657 0.00857 -0.512604 - -0.540966 0.008396 -0.563412 - -0.524697 0.008918 -0.574548 -e -v - -0.518607 0.00609 -0.176697 - -0.543489 0.007178 -0.346869 - -0.598821 0.007873 -0.512604 - -0.534093 0.007438 -0.563412 - -0.524436 0.008918 -0.574548 -e -v - -0.46893 0.003915 -0.176697 - -0.510342 0.005786 -0.346869 - -0.578898 0.007091 -0.512604 - -0.52722 0.006394 -0.563412 - -0.524175 0.008918 -0.574548 -e -v - -0.419253 0.001566 -0.17661 - -0.477282 0.004306 -0.346782 - -0.559062 0.00622 -0.512604 - -0.520434 0.00535 -0.563412 - -0.524001 0.00883 -0.574548 -e -v - -0.369576 -0.000348 -0.17661 - -0.444135 0.003089 -0.346782 - -0.539139 0.005524 -0.512604 - -0.513561 0.004568 -0.563412 - -0.523827 0.00883 -0.574461 -e -v - -0.319899 -0.001566 -0.176523 - -0.410988 0.002305 -0.346782 - -0.519303 0.005003 -0.512604 - -0.506775 0.004132 -0.563412 - -0.523566 0.008744 -0.574461 -e -v - -0.270222 -0.001827 -0.176523 - -0.377928 0.002132 -0.346782 - -0.49938 0.004916 -0.512517 - -0.499902 0.004132 -0.563412 - -0.523392 0.008744 -0.574461 -e -v - -0.220545 -0.001044 -0.17661 - -0.344781 0.002567 -0.346782 - -0.479544 0.005176 -0.512604 - -0.493116 0.004481 -0.563412 - -0.523131 0.008744 -0.574461 -e -v - -0.170868 0.000522 -0.17661 - -0.311634 0.00361 -0.346782 - -0.459708 0.005786 -0.512604 - -0.486243 0.005263 -0.563412 - -0.522957 0.008744 -0.574461 -e -v - -0.145986 0.001653 -0.17661 - -0.295104 0.004306 -0.346782 - -0.449703 0.00622 -0.512604 - -0.48285 0.005786 -0.563412 - -0.52287 0.00883 -0.574461 -e -v - -0.133545 0.002436 -0.17661 - -0.286839 0.004829 -0.346782 - -0.444744 0.006481 -0.512604 - -0.48111 0.006134 -0.563412 - -0.522783 0.00883 -0.574461 -e -v - -0.121104 0.003306 -0.17661 - -0.278487 0.00535 -0.346869 - -0.439785 0.00683 -0.512604 - -0.47937 0.006568 -0.563412 - -0.522696 0.00883 -0.574461 -e -v - -0.108663 0.004698 -0.176697 - -0.270222 0.00622 -0.346869 - -0.434826 0.007351 -0.512604 - -0.477717 0.007178 -0.563412 - -0.522696 0.00883 -0.574548 -e -v - -0.099963 0.006351 -0.176697 - -0.264393 0.007265 -0.346869 - -0.431346 0.007961 -0.512604 - -0.476499 0.007873 -0.563412 - -0.522609 0.00883 -0.574548 -e -v - -0.096135 0.008787 -0.176697 - -0.26187 0.00883 -0.346869 - -0.42978 0.00883 -0.512604 - -0.47589 0.00883 -0.563412 - -0.522609 0.008918 -0.574548 -e -v - -0.792222 0.27405 -0.147987 - -0.792744 0.274094 -0.147726 - -0.794136 0.274094 -0.147465 - -0.79605 0.274094 -0.147291 - -0.797964 0.274094 -0.147117 - -0.799878 0.274094 -0.14703 - -0.803793 0.274094 -0.146943 - -0.811536 0.274094 -0.146769 - -0.819279 0.274094 -0.146682 - -0.827022 0.274094 -0.146682 - -0.834678 0.274094 -0.146769 - -0.842421 0.274094 -0.146943 - -0.850164 0.274094 -0.147117 - -0.857907 0.274094 -0.147378 - -0.86565 0.274094 -0.147813 - -0.869565 0.274094 -0.148074 - -0.86565 0.274094 -0.148248 - -0.857907 0.274094 -0.148596 - -0.850164 0.274094 -0.148857 - -0.842421 0.274094 -0.149118 - -0.834678 0.274094 -0.149292 - -0.827022 0.274094 -0.149379 - -0.819279 0.274094 -0.149379 - -0.811536 0.274094 -0.149292 - -0.803793 0.274094 -0.149118 - -0.799878 0.274094 -0.148944 - -0.797964 0.274094 -0.148857 - -0.79605 0.274094 -0.14877 - -0.794136 0.274094 -0.148596 - -0.792744 0.274094 -0.148335 - -0.792222 0.274094 -0.147987 -e -v - -0.604389 0.013224 -0.147987 - -0.792222 0.274094 -0.147987 -e -v - -0.606216 0.013224 -0.146508 - -0.792744 0.274094 -0.147726 -e -v - -0.610653 0.013224 -0.145464 - -0.794136 0.274094 -0.147465 -e -v - -0.616917 0.013224 -0.144594 - -0.79605 0.274094 -0.147291 -e -v - -0.623268 0.013224 -0.143985 - -0.797964 0.274094 -0.147117 -e -v - -0.629532 0.013224 -0.14355 - -0.799878 0.274094 -0.14703 -e -v - -0.642147 0.013224 -0.142941 - -0.803793 0.274094 -0.146943 -e -v - -0.66729 0.013224 -0.142158 - -0.811536 0.274094 -0.146769 -e -v - -0.69252 0.013224 -0.141723 - -0.819279 0.274094 -0.146682 -e -v - -0.71775 0.013224 -0.141723 - -0.827022 0.274094 -0.146682 -e -v - -0.742893 0.013224 -0.142158 - -0.834678 0.274094 -0.146769 -e -v - -0.768123 0.013224 -0.142854 - -0.842421 0.274094 -0.146943 -e -v - -0.793266 0.013224 -0.143898 - -0.850164 0.274094 -0.147117 -e -v - -0.818496 0.013224 -0.14529 - -0.857907 0.274094 -0.147378 -e -v - -0.843639 0.013224 -0.146943 - -0.86565 0.274094 -0.147813 -e -v - -0.856254 0.013224 -0.148161 - -0.869565 0.274094 -0.148074 -e -v - -0.843639 0.013224 -0.149118 - -0.86565 0.274094 -0.148248 -e -v - -0.818496 0.013224 -0.150771 - -0.857907 0.274094 -0.148596 -e -v - -0.793266 0.013224 -0.152163 - -0.850164 0.274094 -0.148857 -e -v - -0.768123 0.013224 -0.153207 - -0.842421 0.274094 -0.149118 -e -v - -0.742893 0.013224 -0.153903 - -0.834678 0.274094 -0.149292 -e -v - -0.71775 0.013224 -0.154251 - -0.827022 0.274094 -0.149379 -e -v - -0.69252 0.013224 -0.154251 - -0.819279 0.274094 -0.149379 -e -v - -0.66729 0.013224 -0.153903 - -0.811536 0.274094 -0.149292 -e -v - -0.642147 0.013224 -0.15312 - -0.803793 0.274094 -0.149118 -e -v - -0.629532 0.013224 -0.152424 - -0.799878 0.274094 -0.148944 -e -v - -0.623268 0.013224 -0.151989 - -0.797964 0.274094 -0.148857 -e -v - -0.616917 0.013224 -0.151467 - -0.79605 0.274094 -0.14877 -e -v - -0.610653 0.013224 -0.150597 - -0.794136 0.274094 -0.148596 -e -v - -0.606216 0.013224 -0.149553 - -0.792744 0.274094 -0.148335 -e -v - -0.604389 0.013224 -0.148074 - -0.792222 0.274094 -0.147987 -e -v - -0.604389 0.013224 -0.147987 - -0.606216 0.013268 -0.146508 - -0.610653 0.013268 -0.145464 - -0.616917 0.013268 -0.144594 - -0.623268 0.013268 -0.143985 - -0.629532 0.013268 -0.14355 - -0.642147 0.013268 -0.142941 - -0.66729 0.013268 -0.142158 - -0.69252 0.013268 -0.141723 - -0.71775 0.013268 -0.141723 - -0.742893 0.013268 -0.142158 - -0.768123 0.013268 -0.142854 - -0.793266 0.013268 -0.143898 - -0.818496 0.013268 -0.14529 - -0.843639 0.013268 -0.146943 - -0.856254 0.013268 -0.148161 - -0.843639 0.013268 -0.149118 - -0.818496 0.013268 -0.150771 - -0.793266 0.013268 -0.152163 - -0.768123 0.013268 -0.153207 - -0.742893 0.013268 -0.153903 - -0.71775 0.013268 -0.154251 - -0.69252 0.013268 -0.154251 - -0.66729 0.013268 -0.153903 - -0.642147 0.013268 -0.15312 - -0.629532 0.013268 -0.152424 - -0.623268 0.013268 -0.151989 - -0.616917 0.013268 -0.151467 - -0.610653 0.013268 -0.150597 - -0.606216 0.013268 -0.149553 - -0.604389 0.013268 -0.148074 -e -v - -0.670683 -0.026448 -0.159036 - -0.672597 -0.024751 -0.159036 - -0.677121 -0.023534 -0.159036 - -0.683646 -0.022576 -0.159036 - -0.690171 -0.021881 -0.159036 - -0.696696 -0.021358 -0.159036 - -0.709746 -0.020662 -0.159036 - -0.735846 -0.019793 -0.159036 - -0.761946 -0.019358 -0.159036 - -0.787959 -0.019358 -0.159036 - -0.814059 -0.019793 -0.159036 - -0.840159 -0.020575 -0.159036 - -0.866172 -0.021793 -0.159036 - -0.892272 -0.023359 -0.159036 - -0.918372 -0.025274 -0.159036 - -0.931422 -0.026579 -0.159036 - -0.918372 -0.02771 -0.159036 - -0.892272 -0.029624 -0.159036 - -0.866172 -0.031189 -0.159036 - -0.840159 -0.032407 -0.159036 - -0.814059 -0.03319 -0.159036 - -0.787959 -0.033625 -0.159036 - -0.761946 -0.033625 -0.159036 - -0.735846 -0.03319 -0.159036 - -0.709746 -0.03232 -0.159036 - -0.696696 -0.031537 -0.159036 - -0.690171 -0.031016 -0.159036 - -0.683646 -0.030406 -0.159036 - -0.677121 -0.02945 -0.159036 - -0.672597 -0.028231 -0.159036 - -0.670683 -0.026579 -0.159036 -e -v - -0.76125 -0.026448 -0.236379 - -0.762642 -0.025361 -0.236379 - -0.766035 -0.02449 -0.236379 - -0.770733 -0.023882 -0.236379 - -0.775518 -0.023447 -0.236379 - -0.780216 -0.023099 -0.236379 - -0.789786 -0.022664 -0.236379 - -0.808752 -0.022055 -0.236379 - -0.827718 -0.021793 -0.236379 - -0.846771 -0.021793 -0.236379 - -0.865737 -0.022055 -0.236379 - -0.88479 -0.022576 -0.236379 - -0.903756 -0.023359 -0.236379 - -0.922809 -0.024403 -0.236379 - -0.941775 -0.025621 -0.236379 - -0.951258 -0.026579 -0.236379 - -0.941775 -0.027275 -0.236379 - -0.922809 -0.028579 -0.236379 - -0.903756 -0.029624 -0.236379 - -0.88479 -0.030406 -0.236379 - -0.865737 -0.030928 -0.236379 - -0.846771 -0.031189 -0.236379 - -0.827718 -0.031189 -0.236379 - -0.808752 -0.030928 -0.236379 - -0.789786 -0.03032 -0.236379 - -0.780216 -0.029797 -0.236379 - -0.775518 -0.029537 -0.236379 - -0.770733 -0.029102 -0.236379 - -0.766035 -0.028406 -0.236379 - -0.762642 -0.027623 -0.236379 - -0.76125 -0.026492 -0.236379 -e -v - -0.725928 -0.026448 -0.23751 - -0.727581 -0.025361 -0.23751 - -0.731583 -0.02449 -0.23751 - -0.737238 -0.023882 -0.23751 - -0.74298 -0.023447 -0.23751 - -0.748635 -0.023099 -0.23751 - -0.760032 -0.022664 -0.23751 - -0.782826 -0.022055 -0.23751 - -0.805533 -0.021793 -0.23751 - -0.828327 -0.021793 -0.23751 - -0.851034 -0.022055 -0.23751 - -0.873828 -0.022576 -0.23751 - -0.896622 -0.023359 -0.23751 - -0.919329 -0.024403 -0.23751 - -0.942123 -0.025621 -0.23751 - -0.95352 -0.026579 -0.23751 - -0.942123 -0.027275 -0.23751 - -0.919329 -0.028579 -0.23751 - -0.896622 -0.029624 -0.23751 - -0.873828 -0.030406 -0.23751 - -0.851034 -0.030928 -0.23751 - -0.828327 -0.031189 -0.23751 - -0.805533 -0.031189 -0.23751 - -0.782826 -0.030928 -0.23751 - -0.760032 -0.03032 -0.23751 - -0.748635 -0.029797 -0.23751 - -0.74298 -0.029537 -0.23751 - -0.737238 -0.029102 -0.23751 - -0.731583 -0.028406 -0.23751 - -0.727581 -0.027623 -0.23751 - -0.725928 -0.026492 -0.23751 -e -v - -0.84738 -0.026535 -0.342519 - -0.848424 -0.025969 -0.342519 - -0.850599 -0.025534 -0.342519 - -0.853818 -0.025274 -0.342519 - -0.857037 -0.025013 -0.342519 - -0.860256 -0.024926 -0.342519 - -0.866607 -0.024665 -0.342519 - -0.879483 -0.024403 -0.342519 - -0.892272 -0.02423 -0.342519 - -0.905061 -0.02423 -0.342519 - -0.917937 -0.024403 -0.342519 - -0.930726 -0.024665 -0.342519 - -0.943515 -0.025013 -0.342519 - -0.956391 -0.025534 -0.342519 - -0.96918 -0.026057 -0.342519 - -0.975618 -0.026492 -0.342519 - -0.96918 -0.02684 -0.342519 - -0.956391 -0.027448 -0.342519 - -0.943515 -0.027971 -0.342519 - -0.930726 -0.028319 -0.342519 - -0.917937 -0.028579 -0.342519 - -0.905061 -0.028667 -0.342519 - -0.892272 -0.028667 -0.342519 - -0.879483 -0.028579 -0.342519 - -0.866607 -0.028319 -0.342519 - -0.860256 -0.028058 -0.342519 - -0.857037 -0.027883 -0.342519 - -0.853818 -0.02771 -0.342519 - -0.850599 -0.027362 -0.342519 - -0.848424 -0.027013 -0.342519 - -0.84738 -0.026492 -0.342519 -e -v - -0.891663 -0.026535 -0.380016 - -0.891837 -0.026405 -0.380016 - -0.892446 -0.026317 -0.380016 - -0.893316 -0.026231 -0.380016 - -0.894099 -0.026231 -0.380016 - -0.894969 -0.026144 -0.380016 - -0.896622 -0.026144 -0.380016 - -0.899928 -0.026057 -0.380016 - -0.903234 -0.026057 -0.380016 - -0.90654 -0.026057 -0.380016 - -0.909846 -0.026057 -0.380016 - -0.913152 -0.026144 -0.380016 - -0.916458 -0.026231 -0.380016 - -0.919764 -0.026317 -0.380016 - -0.92307 -0.026405 -0.380016 - -0.92481 -0.026492 -0.380016 - -0.92307 -0.026579 -0.380016 - -0.919764 -0.026665 -0.380016 - -0.916458 -0.026752 -0.380016 - -0.913152 -0.02684 -0.380016 - -0.909846 -0.02684 -0.380016 - -0.90654 -0.026927 -0.380016 - -0.903234 -0.026927 -0.380016 - -0.899928 -0.02684 -0.380016 - -0.896622 -0.02684 -0.380016 - -0.894969 -0.026752 -0.380016 - -0.894099 -0.026752 -0.380016 - -0.893316 -0.026665 -0.380016 - -0.892446 -0.026665 -0.380016 - -0.891837 -0.026579 -0.380016 - -0.891663 -0.026492 -0.380016 -e -v - -0.670683 -0.026448 -0.159036 - -0.76125 -0.026405 -0.236379 - -0.725928 -0.026405 -0.23751 - -0.84738 -0.026492 -0.342519 - -0.891663 -0.026492 -0.380016 -e -v - -0.672597 -0.024795 -0.159036 - -0.762642 -0.025361 -0.236379 - -0.727581 -0.025361 -0.23751 - -0.848424 -0.025969 -0.342519 - -0.891837 -0.026405 -0.380016 -e -v - -0.677121 -0.023577 -0.159036 - -0.766035 -0.02449 -0.236379 - -0.731583 -0.02449 -0.23751 - -0.850599 -0.025534 -0.342519 - -0.892446 -0.026317 -0.380016 -e -v - -0.683646 -0.02262 -0.159036 - -0.770733 -0.023882 -0.236379 - -0.737238 -0.023882 -0.23751 - -0.853818 -0.025274 -0.342519 - -0.893316 -0.026231 -0.380016 -e -v - -0.690171 -0.021924 -0.159036 - -0.775518 -0.023447 -0.236379 - -0.74298 -0.023447 -0.23751 - -0.857037 -0.025013 -0.342519 - -0.894099 -0.026231 -0.380016 -e -v - -0.696696 -0.021402 -0.159036 - -0.780216 -0.023099 -0.236379 - -0.748635 -0.023099 -0.23751 - -0.860256 -0.024926 -0.342519 - -0.894969 -0.026144 -0.380016 -e -v - -0.709746 -0.020706 -0.159036 - -0.789786 -0.022664 -0.236379 - -0.760032 -0.022664 -0.23751 - -0.866607 -0.024665 -0.342519 - -0.896622 -0.026144 -0.380016 -e -v - -0.735846 -0.019836 -0.159036 - -0.808752 -0.022055 -0.236379 - -0.782826 -0.022055 -0.23751 - -0.879483 -0.024403 -0.342519 - -0.899928 -0.026057 -0.380016 -e -v - -0.761946 -0.019401 -0.159036 - -0.827718 -0.021793 -0.236379 - -0.805533 -0.021793 -0.23751 - -0.892272 -0.02423 -0.342519 - -0.903234 -0.026057 -0.380016 -e -v - -0.787959 -0.019401 -0.159036 - -0.846771 -0.021793 -0.236379 - -0.828327 -0.021793 -0.23751 - -0.905061 -0.02423 -0.342519 - -0.90654 -0.026057 -0.380016 -e -v - -0.814059 -0.019836 -0.159036 - -0.865737 -0.022055 -0.236379 - -0.851034 -0.022055 -0.23751 - -0.917937 -0.024403 -0.342519 - -0.909846 -0.026057 -0.380016 -e -v - -0.840159 -0.020619 -0.159036 - -0.88479 -0.022576 -0.236379 - -0.873828 -0.022576 -0.23751 - -0.930726 -0.024665 -0.342519 - -0.913152 -0.026144 -0.380016 -e -v - -0.866172 -0.021837 -0.159036 - -0.903756 -0.023359 -0.236379 - -0.896622 -0.023359 -0.23751 - -0.943515 -0.025013 -0.342519 - -0.916458 -0.026231 -0.380016 -e -v - -0.892272 -0.023403 -0.159036 - -0.922809 -0.024403 -0.236379 - -0.919329 -0.024403 -0.23751 - -0.956391 -0.025534 -0.342519 - -0.919764 -0.026317 -0.380016 -e -v - -0.918372 -0.025317 -0.159036 - -0.941775 -0.025621 -0.236379 - -0.942123 -0.025621 -0.23751 - -0.96918 -0.026057 -0.342519 - -0.92307 -0.026405 -0.380016 -e -v - -0.931422 -0.026622 -0.159036 - -0.951258 -0.026579 -0.236379 - -0.95352 -0.026579 -0.23751 - -0.975618 -0.026492 -0.342519 - -0.92481 -0.026492 -0.380016 -e -v - -0.918372 -0.027753 -0.159036 - -0.941775 -0.027275 -0.236379 - -0.942123 -0.027275 -0.23751 - -0.96918 -0.02684 -0.342519 - -0.92307 -0.026579 -0.380016 -e -v - -0.892272 -0.029667 -0.159036 - -0.922809 -0.028579 -0.236379 - -0.919329 -0.028579 -0.23751 - -0.956391 -0.027448 -0.342519 - -0.919764 -0.026665 -0.380016 -e -v - -0.866172 -0.031233 -0.159036 - -0.903756 -0.029624 -0.236379 - -0.896622 -0.029624 -0.23751 - -0.943515 -0.027971 -0.342519 - -0.916458 -0.026752 -0.380016 -e -v - -0.840159 -0.032451 -0.159036 - -0.88479 -0.030406 -0.236379 - -0.873828 -0.030406 -0.23751 - -0.930726 -0.028319 -0.342519 - -0.913152 -0.02684 -0.380016 -e -v - -0.814059 -0.033234 -0.159036 - -0.865737 -0.030928 -0.236379 - -0.851034 -0.030928 -0.23751 - -0.917937 -0.028579 -0.342519 - -0.909846 -0.02684 -0.380016 -e -v - -0.787959 -0.033669 -0.159036 - -0.846771 -0.031189 -0.236379 - -0.828327 -0.031189 -0.23751 - -0.905061 -0.028667 -0.342519 - -0.90654 -0.026927 -0.380016 -e -v - -0.761946 -0.033669 -0.159036 - -0.827718 -0.031189 -0.236379 - -0.805533 -0.031189 -0.23751 - -0.892272 -0.028667 -0.342519 - -0.903234 -0.026927 -0.380016 -e -v - -0.735846 -0.033234 -0.159036 - -0.808752 -0.030928 -0.236379 - -0.782826 -0.030928 -0.23751 - -0.879483 -0.028579 -0.342519 - -0.899928 -0.02684 -0.380016 -e -v - -0.709746 -0.032364 -0.159036 - -0.789786 -0.03032 -0.236379 - -0.760032 -0.03032 -0.23751 - -0.866607 -0.028319 -0.342519 - -0.896622 -0.02684 -0.380016 -e -v - -0.696696 -0.031581 -0.159036 - -0.780216 -0.029797 -0.236379 - -0.748635 -0.029797 -0.23751 - -0.860256 -0.028058 -0.342519 - -0.894969 -0.026752 -0.380016 -e -v - -0.690171 -0.031059 -0.159036 - -0.775518 -0.029537 -0.236379 - -0.74298 -0.029537 -0.23751 - -0.857037 -0.027883 -0.342519 - -0.894099 -0.026752 -0.380016 -e -v - -0.683646 -0.03045 -0.159036 - -0.770733 -0.029102 -0.236379 - -0.737238 -0.029102 -0.23751 - -0.853818 -0.02771 -0.342519 - -0.893316 -0.026665 -0.380016 -e -v - -0.677121 -0.029493 -0.159036 - -0.766035 -0.028406 -0.236379 - -0.731583 -0.028406 -0.23751 - -0.850599 -0.027362 -0.342519 - -0.892446 -0.026665 -0.380016 -e -v - -0.672597 -0.028275 -0.159036 - -0.762642 -0.027623 -0.236379 - -0.727581 -0.027623 -0.23751 - -0.848424 -0.027013 -0.342519 - -0.891837 -0.026579 -0.380016 -e -v - -0.670683 -0.026622 -0.159036 - -0.76125 -0.026492 -0.236379 - -0.725928 -0.026492 -0.23751 - -0.84738 -0.026492 -0.342519 - -0.891663 -0.026492 -0.380016 -e diff --git a/lib/glut-3.7.6/progs/data/fendi.rgb b/lib/glut-3.7.6/progs/data/fendi.rgb deleted file mode 100644 index 00c78b9fa775062d7caa80d2919a143a85cb51a8..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/fendi.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f00 b/lib/glut-3.7.6/progs/data/flame/f00 deleted file mode 100644 index d43a935fb3b1af75423f0c760b0f389afe057146..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f00 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f01 b/lib/glut-3.7.6/progs/data/flame/f01 deleted file mode 100644 index 74564d4bc0faeb44bc1805cba7683c0301c3a6b5..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f01 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f02 b/lib/glut-3.7.6/progs/data/flame/f02 deleted file mode 100644 index b003e3baf99e4a090ba55fdd45b90ceecd80cd44..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f02 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f03 b/lib/glut-3.7.6/progs/data/flame/f03 deleted file mode 100644 index ec658245fe5b79de3b52c7a310fbe033a9c87ada..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f03 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f04 b/lib/glut-3.7.6/progs/data/flame/f04 deleted file mode 100644 index d01562cd0beb52c857921f9885105324ffd6b1e3..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f04 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f05 b/lib/glut-3.7.6/progs/data/flame/f05 deleted file mode 100644 index 89316c69dcf1c4cf18219fd6e16f568472352752..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f05 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f06 b/lib/glut-3.7.6/progs/data/flame/f06 deleted file mode 100644 index b105026e4a60eed8cb9a8dca68cd29dcd6cc1be8..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f06 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f07 b/lib/glut-3.7.6/progs/data/flame/f07 deleted file mode 100644 index 50e422f9f6219b9bc3228740c27c8b1b37c9682f..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f07 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f08 b/lib/glut-3.7.6/progs/data/flame/f08 deleted file mode 100644 index 7c10d06cfa73f72e4c53af3d52d420a4430dca34..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f08 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f09 b/lib/glut-3.7.6/progs/data/flame/f09 deleted file mode 100644 index 158a464b5fec4650911714dda1c321eb093056b6..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f09 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f10 b/lib/glut-3.7.6/progs/data/flame/f10 deleted file mode 100644 index ef495342efa4f03e194e4b16808cd3f5ce1fe03c..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f10 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f11 b/lib/glut-3.7.6/progs/data/flame/f11 deleted file mode 100644 index 5e8d4e9eec10b8ef705356c8ba20ac25d35d8d65..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f11 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f12 b/lib/glut-3.7.6/progs/data/flame/f12 deleted file mode 100644 index 34042c3a39c1f29d7cfe78b18ff3a11e06330f77..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f12 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f13 b/lib/glut-3.7.6/progs/data/flame/f13 deleted file mode 100644 index 1173973e336afa14dbcc5b83bf0c311ca95ce0b7..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f13 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f14 b/lib/glut-3.7.6/progs/data/flame/f14 deleted file mode 100644 index 1c84e8d460fae3f7cc8ea8a5abf87ba08e2c166f..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f14 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f15 b/lib/glut-3.7.6/progs/data/flame/f15 deleted file mode 100644 index 238b9fb5926778485eee04415d87e20fed422349..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f15 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f16 b/lib/glut-3.7.6/progs/data/flame/f16 deleted file mode 100644 index 9d06b343c27d9772a6c8beb46f8169a7a74e15dc..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f16 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f17 b/lib/glut-3.7.6/progs/data/flame/f17 deleted file mode 100644 index 71e985d6c79bfd1da0e96faf2245bf1f4dd17f15..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f17 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f18 b/lib/glut-3.7.6/progs/data/flame/f18 deleted file mode 100644 index ed9a09efa75827e10b0c3c2cb782907147a6959f..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f18 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f19 b/lib/glut-3.7.6/progs/data/flame/f19 deleted file mode 100644 index f9969843be085a533402a0148e279cc54bb65de3..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f19 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f20 b/lib/glut-3.7.6/progs/data/flame/f20 deleted file mode 100644 index 7aa1db15fc278f76c8225ca735bfc2696f9a77b9..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f20 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f21 b/lib/glut-3.7.6/progs/data/flame/f21 deleted file mode 100644 index e11df278c32ade96f43fab6b60753f93a416a57b..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f21 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f22 b/lib/glut-3.7.6/progs/data/flame/f22 deleted file mode 100644 index 6c644aeacc788ad75a93641d13b0d3b4b741ae8f..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f22 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f23 b/lib/glut-3.7.6/progs/data/flame/f23 deleted file mode 100644 index 54844af4c08b41fcc995edf41e1e204c55a34fd1..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f23 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f24 b/lib/glut-3.7.6/progs/data/flame/f24 deleted file mode 100644 index 210cd1752ce8ab24136c39e7d3c99dad30e5a34c..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f24 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f25 b/lib/glut-3.7.6/progs/data/flame/f25 deleted file mode 100644 index a72176aafdebcf0ffaf3abc051085a9457836c2f..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f25 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f26 b/lib/glut-3.7.6/progs/data/flame/f26 deleted file mode 100644 index d592ea9b0dba2bedb97ae30dfd95ec94d727acae..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f26 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f27 b/lib/glut-3.7.6/progs/data/flame/f27 deleted file mode 100644 index 4a0ba73fc420acce4e49e44b83aebcf304be937d..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f27 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f28 b/lib/glut-3.7.6/progs/data/flame/f28 deleted file mode 100644 index c4be74c6e4dcd74e49e2ff8e2e66ae986d771905..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f28 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f29 b/lib/glut-3.7.6/progs/data/flame/f29 deleted file mode 100644 index 91cdb737e417bdadf42a6335984138cda70cb19e..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f29 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f30 b/lib/glut-3.7.6/progs/data/flame/f30 deleted file mode 100644 index 5d7b0db1f758e6dfd22f96825560e2d8e89e5721..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f30 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/flame/f31 b/lib/glut-3.7.6/progs/data/flame/f31 deleted file mode 100644 index 5d7b0db1f758e6dfd22f96825560e2d8e89e5721..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/flame/f31 and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/light.bw b/lib/glut-3.7.6/progs/data/light.bw deleted file mode 100644 index 5708ae6ae41a66688feabad016a54c631393b5a7..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/light.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/mandrill.rgb b/lib/glut-3.7.6/progs/data/mandrill.rgb deleted file mode 100644 index 8b935608ee48cd756931acde50abbce8a57cea71..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/mandrill.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/sea.rgb b/lib/glut-3.7.6/progs/data/sea.rgb deleted file mode 100644 index ba7c1b585002cd57c861f2c3b2b671e4dc40ad90..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/sea.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/sgi.bw b/lib/glut-3.7.6/progs/data/sgi.bw deleted file mode 100644 index f02f807240d65007df5372c0225b5c9a47f673b9..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/sgi.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/smoke.bw b/lib/glut-3.7.6/progs/data/smoke.bw deleted file mode 100644 index 43d2058441def8923000784868648b520f5bc7d2..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/smoke.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/spheremap.rgb b/lib/glut-3.7.6/progs/data/spheremap.rgb deleted file mode 100644 index aefc52d738b25e356ec8f9b180d4c129fe86bc75..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/spheremap.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/swamp.rgb b/lib/glut-3.7.6/progs/data/swamp.rgb deleted file mode 100644 index fa985ce876c49751881f5ed20e02cb74c6794cb4..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/swamp.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/water.bw b/lib/glut-3.7.6/progs/data/water.bw deleted file mode 100644 index b600a0477cf84127265a72c469a43034d00075f4..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/water.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/data/wood.rgb b/lib/glut-3.7.6/progs/data/wood.rgb deleted file mode 100644 index 52af2305a4eb47d7a584ab59994872893bfaf66e..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/data/wood.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos.dsw b/lib/glut-3.7.6/progs/demos.dsw deleted file mode 100644 index 6e16ca610fc899fa0b73237d7cfa3c74f4f4dbad..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos.dsw +++ /dev/null @@ -1,341 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\demos\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name atlantis - End Project Dependency - Begin Project Dependency - Project_Dep_Name bluepony - End Project Dependency - Begin Project Dependency - Project_Dep_Name bounce - End Project Dependency - Begin Project Dependency - Project_Dep_Name chess - End Project Dependency - Begin Project Dependency - Project_Dep_Name geoface - End Project Dependency - Begin Project Dependency - Project_Dep_Name glflare - End Project Dependency - Begin Project Dependency - Project_Dep_Name glutmech - End Project Dependency - Begin Project Dependency - Project_Dep_Name ideas - End Project Dependency - Begin Project Dependency - Project_Dep_Name lorenz - End Project Dependency - Begin Project Dependency - Project_Dep_Name newave - End Project Dependency - Begin Project Dependency - Project_Dep_Name opengl_logo - End Project Dependency - Begin Project Dependency - Project_Dep_Name particle - End Project Dependency - Begin Project Dependency - Project_Dep_Name rollercoaster - End Project Dependency - Begin Project Dependency - Project_Dep_Name skyfly - End Project Dependency - Begin Project Dependency - Project_Dep_Name smooth - End Project Dependency - Begin Project Dependency - Project_Dep_Name sunlight - End Project Dependency - Begin Project Dependency - Project_Dep_Name sysview - End Project Dependency - Begin Project Dependency - Project_Dep_Name underwater - End Project Dependency - Begin Project Dependency - Project_Dep_Name walker - End Project Dependency - Begin Project Dependency - Project_Dep_Name yacme - End Project Dependency -}}} - -############################################################################### - -Project: "atlantis"=".\demos\atlantis\atlantis.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "bluepony"=".\demos\bluepony\bluepony.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "bounce"=".\demos\bounce\bounce.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "chess"=".\demos\chess\chess.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "geoface"=".\demos\geoface\geoface.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glflare"=".\demos\glflare\glflare.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "gliq"=".\demos\gliq\gliq.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glutmech"=".\demos\glutmech\glutmech.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "ideas"=".\demos\ideas\ideas.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "lorenz"=".\demos\lorenz\lorenz.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "newave"=".\demos\newave\newave.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "opengl_logo"=".\demos\opengl_logo\opengl_logo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "particle"=".\demos\particle\particle.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "rollercoaster"=".\demos\rollercoaster\rollercoaster.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "skyfly"=".\demos\skyfly\skyfly.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "smooth"=".\demos\smooth\smooth.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sunlight"=".\demos\sunlight\sunlight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sysview"=".\demos\sysview\sysview.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "underwater"=".\demos\underwater\underwater.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "walker"=".\demos\walker\walker.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "yacme"=".\demos\yacme\yacme.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/demos/Imakefile b/lib/glut-3.7.6/progs/demos/Imakefile deleted file mode 100644 index 5dcc2328dedfe3dbc9e40ab4506399217f4039d4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/Imakefile +++ /dev/null @@ -1,13 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. */ - -#define IHaveSubdirs -#define PassCDebugFlags - -SUBDIRS = ideas atlantis walker yacme glutmech geoface \ - chess rollercoaster underwater opengl_logo bluepony \ - lorenz smooth gliq glflare bounce skyfly particle \ - newave sunlight - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/progs/demos/_all.dsp b/lib/glut-3.7.6/progs/demos/_all.dsp deleted file mode 100644 index 2e26c30f32adf2ab5d284c761d545a37b7e2380b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/atlantis/Imakefile b/lib/glut-3.7.6/progs/demos/atlantis/Imakefile deleted file mode 100644 index 85e1551455ffd3715b1ea498b4ba2acc08877520..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/Imakefile +++ /dev/null @@ -1,14 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../../Glut.cf" - -TARGETS = atlantis - -SRCS = atlantis.c dolphin.c shark.c swim.c whale.c - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(atlantis,atlantis.o whale.o dolphin.o shark.o swim.o) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/atlantis/atlantis.c b/lib/glut-3.7.6/progs/demos/atlantis/atlantis.c deleted file mode 100644 index 205e338780368637484d3d26ae15849d31873ad7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/atlantis.c +++ /dev/null @@ -1,262 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include -#include -#include -#include -#include -#include "atlantis.h" - -fishRec sharks[NUM_SHARKS]; -fishRec momWhale; -fishRec babyWhale; -fishRec dolph; - -GLboolean moving; - -void -InitFishs(void) -{ - int i; - - for (i = 0; i < NUM_SHARKS; i++) { - sharks[i].x = 70000.0 + rand() % 6000; - sharks[i].y = rand() % 6000; - sharks[i].z = rand() % 6000; - sharks[i].psi = rand() % 360 - 180.0; - sharks[i].v = 1.0; - } - - dolph.x = 30000.0; - dolph.y = 0.0; - dolph.z = 6000.0; - dolph.psi = 90.0; - dolph.theta = 0.0; - dolph.v = 3.0; - - momWhale.x = 70000.0; - momWhale.y = 0.0; - momWhale.z = 0.0; - momWhale.psi = 90.0; - momWhale.theta = 0.0; - momWhale.v = 3.0; - - babyWhale.x = 60000.0; - babyWhale.y = -2000.0; - babyWhale.z = -2000.0; - babyWhale.psi = 90.0; - babyWhale.theta = 0.0; - babyWhale.v = 3.0; -} - -void -Init(void) -{ - static float ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - static float position[] = - {0.0, 1.0, 0.0, 0.0}; - static float mat_shininess[] = - {90.0}; - static float mat_specular[] = - {0.8, 0.8, 0.8, 1.0}; - static float mat_diffuse[] = - {0.46, 0.66, 0.795, 1.0}; - static float mat_ambient[] = - {0.0, 0.1, 0.2, 1.0}; - static float lmodel_ambient[] = - {0.4, 0.4, 0.4, 1.0}; - static float lmodel_localviewer[] = - {0.0}; - - glFrontFace(GL_CW); - - glDepthFunc(GL_LEQUAL); - glEnable(GL_DEPTH_TEST); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_localviewer); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient); - - InitFishs(); - - glClearColor(0.0, 0.5, 0.9, 0.0); -} - -void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(400.0, 2.0, 10000.0, 400000.0); - glMatrixMode(GL_MODELVIEW); -} - -void -Animate(void) -{ - int i; - - for (i = 0; i < NUM_SHARKS; i++) { - SharkPilot(&sharks[i]); - SharkMiss(i); - } - WhalePilot(&dolph); - dolph.phi++; - glutPostRedisplay(); - WhalePilot(&momWhale); - momWhale.phi++; - WhalePilot(&babyWhale); - babyWhale.phi++; -} - -/* ARGSUSED1 */ -void -Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: /* Esc will quit */ - exit(1); - break; - case ' ': /* space will advance frame */ - if (!moving) { - Animate(); - } - } -} - -void -Display(void) -{ - int i; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - for (i = 0; i < NUM_SHARKS; i++) { - glPushMatrix(); - FishTransform(&sharks[i]); - DrawShark(&sharks[i]); - glPopMatrix(); - } - - glPushMatrix(); - FishTransform(&dolph); - DrawDolphin(&dolph); - glPopMatrix(); - - glPushMatrix(); - FishTransform(&momWhale); - DrawWhale(&momWhale); - glPopMatrix(); - - glPushMatrix(); - FishTransform(&babyWhale); - glScalef(0.45, 0.45, 0.3); - DrawWhale(&babyWhale); - glPopMatrix(); - - glutSwapBuffers(); -} - -void -Visible(int state) -{ - if (state == GLUT_VISIBLE) { - if (moving) - glutIdleFunc(Animate); - } else { - if (moving) - glutIdleFunc(NULL); - } -} - -void -menuSelect(int value) -{ - switch (value) { - case 1: - moving = GL_TRUE; - glutIdleFunc(Animate); - break; - case 2: - moving = GL_FALSE;; - glutIdleFunc(NULL); - break; - case 3: - exit(0); - break; - } -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(500, 250); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("GLUT Atlantis Demo"); - Init(); - glutDisplayFunc(Display); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - moving = GL_TRUE; - glutIdleFunc(Animate); - glutVisibilityFunc(Visible); - glutCreateMenu(menuSelect); - glutAddMenuEntry("Start motion", 1); - glutAddMenuEntry("Stop motion", 2); - glutAddMenuEntry("Quit", 3); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/atlantis/atlantis.dsp b/lib/glut-3.7.6/progs/demos/atlantis/atlantis.dsp deleted file mode 100644 index f1fa16d4c6bb5b727115219397484eff1e346568..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/atlantis.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="atlantis" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=atlantis - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "atlantis.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "atlantis.mak" CFG="atlantis - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "atlantis - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "atlantis - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "atlantis - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "atlantis - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "atlantis - Win32 Release" -# Name "atlantis - Win32 Debug" -# Begin Source File - -SOURCE=.\atlantis.c -# End Source File -# Begin Source File - -SOURCE=.\atlantis.h -# End Source File -# Begin Source File - -SOURCE=.\dolphin.c -# End Source File -# Begin Source File - -SOURCE=.\shark.c -# End Source File -# Begin Source File - -SOURCE=.\swim.c -# End Source File -# Begin Source File - -SOURCE=.\whale.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/atlantis/atlantis.h b/lib/glut-3.7.6/progs/demos/atlantis/atlantis.h deleted file mode 100644 index 539141b3d606def97cbe4b270ed8d1ea2dca6d2f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/atlantis.h +++ /dev/null @@ -1,65 +0,0 @@ -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#define RAD 57.295 -#define RRAD 0.01745 - -#define NUM_SHARKS 4 -#define SHARKSIZE 6000 -#define SHARKSPEED 100.0 - -#define WHALESPEED 250.0 - -typedef struct _fishRec { - float x, y, z, phi, theta, psi, v; - float xt, yt, zt; - float htail, vtail; - float dtheta; - int spurt, attack; -} fishRec; - -extern fishRec sharks[NUM_SHARKS]; -extern fishRec momWhale; -extern fishRec babyWhale; -extern fishRec dolph; - -extern void FishTransform(fishRec *); -extern void WhalePilot(fishRec *); -extern void SharkPilot(fishRec *); -extern void SharkMiss(int); -extern void DrawWhale(fishRec *); -extern void DrawShark(fishRec *); -extern void DrawDolphin(fishRec *); diff --git a/lib/glut-3.7.6/progs/demos/atlantis/dolphin.c b/lib/glut-3.7.6/progs/demos/atlantis/dolphin.c deleted file mode 100644 index 6c3015f1135a2630923195e2d1ae64c2f0ae7738..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/dolphin.c +++ /dev/null @@ -1,1934 +0,0 @@ -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include -#include -#include "atlantis.h" -/* *INDENT-OFF* */ -static float N001[3] = {-0.005937 ,-0.101998 ,-0.994767}; -static float N002[3] = {0.936780 ,-0.200803 ,0.286569}; -static float N003[3] = {-0.233062 ,0.972058 ,0.028007}; -static float N005[3] = {0.898117 ,0.360171 ,0.252315}; -static float N006[3] = {-0.915437 ,0.348456 ,0.201378}; -static float N007[3] = {0.602263 ,-0.777527 ,0.180920}; -static float N008[3] = {-0.906912 ,-0.412015 ,0.088061}; -static float N012[3] = {0.884408 ,-0.429417 ,-0.182821}; -static float N013[3] = {0.921121 ,0.311084 ,-0.234016}; -static float N014[3] = {0.382635 ,0.877882 ,-0.287948}; -static float N015[3] = {-0.380046 ,0.888166 ,-0.258316}; -static float N016[3] = {-0.891515 ,0.392238 ,-0.226607}; -static float N017[3] = {-0.901419 ,-0.382002 ,-0.203763}; -static float N018[3] = {-0.367225 ,-0.911091 ,-0.187243}; -static float N019[3] = {0.339539 ,-0.924846 ,-0.171388}; -static float N020[3] = {0.914706 ,-0.378617 ,-0.141290}; -static float N021[3] = {0.950662 ,0.262713 ,-0.164994}; -static float N022[3] = {0.546359 ,0.801460 ,-0.243218}; -static float N023[3] = {-0.315796 ,0.917068 ,-0.243431}; -static float N024[3] = {-0.825687 ,0.532277 ,-0.186875}; -static float N025[3] = {-0.974763 ,-0.155232 ,-0.160435}; -static float N026[3] = {-0.560596 ,-0.816658 ,-0.137119}; -static float N027[3] = {0.380210 ,-0.910817 ,-0.160786}; -static float N028[3] = {0.923772 ,-0.358322 ,-0.135093}; -static float N029[3] = {0.951202 ,0.275053 ,-0.139859}; -static float N030[3] = {0.686099 ,0.702548 ,-0.188932}; -static float N031[3] = {-0.521865 ,0.826719 ,-0.210220}; -static float N032[3] = {-0.923820 ,0.346739 ,-0.162258}; -static float N033[3] = {-0.902095 ,-0.409995 ,-0.134646}; -static float N034[3] = {-0.509115 ,-0.848498 ,-0.144404}; -static float N035[3] = {0.456469 ,-0.880293 ,-0.129305}; -static float N036[3] = {0.873401 ,-0.475489 ,-0.105266}; -static float N037[3] = {0.970825 ,0.179861 ,-0.158584}; -static float N038[3] = {0.675609 ,0.714187 ,-0.183004}; -static float N039[3] = {-0.523574 ,0.830212 ,-0.191360}; -static float N040[3] = {-0.958895 ,0.230808 ,-0.165071}; -static float N041[3] = {-0.918285 ,-0.376803 ,-0.121542}; -static float N042[3] = {-0.622467 ,-0.774167 ,-0.114888}; -static float N043[3] = {0.404497 ,-0.908807 ,-0.102231}; -static float N044[3] = {0.930538 ,-0.365155 ,-0.027588}; -static float N045[3] = {0.921920 ,0.374157 ,-0.100345}; -static float N046[3] = {0.507346 ,0.860739 ,0.041562}; -static float N047[3] = {-0.394646 ,0.918815 ,-0.005730}; -static float N048[3] = {-0.925411 ,0.373024 ,-0.066837}; -static float N049[3] = {-0.945337 ,-0.322309 ,-0.049551}; -static float N050[3] = {-0.660437 ,-0.750557 ,-0.022072}; -static float N051[3] = {0.488835 ,-0.871950 ,-0.027261}; -static float N052[3] = {0.902599 ,-0.421397 ,0.087969}; -static float N053[3] = {0.938636 ,0.322606 ,0.122020}; -static float N054[3] = {0.484605 ,0.871078 ,0.079878}; -static float N055[3] = {-0.353607 ,0.931559 ,0.084619}; -static float N056[3] = {-0.867759 ,0.478564 ,0.134054}; -static float N057[3] = {-0.951583 ,-0.296030 ,0.082794}; -static float N058[3] = {-0.672355 ,-0.730209 ,0.121384}; -static float N059[3] = {0.528336 ,-0.842452 ,0.105525}; -static float N060[3] = {0.786913 ,-0.564760 ,0.248627}; -static float N062[3] = {0.622098 ,0.765230 ,0.165584}; -static float N063[3] = {-0.631711 ,0.767816 ,0.106773}; -static float N064[3] = {-0.687886 ,0.606351 ,0.398938}; -static float N065[3] = {-0.946327 ,-0.281623 ,0.158598}; -static float N066[3] = {-0.509549 ,-0.860437 ,0.002776}; -static float N067[3] = {0.462594 ,-0.876692 ,0.131977}; -static float N071[3] = {0.000000 ,1.000000 ,0.000000}; -static float N077[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N078[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N079[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N080[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N081[3] = {-0.571197 ,0.816173 ,0.087152}; -static float N082[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N083[3] = {-0.571197 ,0.816173 ,0.087152}; -static float N084[3] = {-0.571197 ,0.816173 ,0.087152}; -static float N085[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N086[3] = {-0.571197 ,0.816173 ,0.087152}; -static float N087[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N088[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N089[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N090[3] = {-0.880770 ,0.461448 ,0.106351}; -static float N091[3] = {0.000000 ,1.000000 ,0.000000}; -static float N092[3] = {0.000000 ,1.000000 ,0.000000}; -static float N093[3] = {0.000000 ,1.000000 ,0.000000}; -static float N094[3] = {1.000000 ,0.000000 ,0.000000}; -static float N095[3] = {-1.000000 ,0.000000 ,0.000000}; -static float N097[3] = {-0.697296 ,0.702881 ,0.140491}; -static float N098[3] = {0.918864 ,0.340821 ,0.198819}; -static float N099[3] = {-0.932737 ,0.201195 ,0.299202}; -static float N100[3] = {0.029517 ,0.981679 ,0.188244}; -static float N102[3] = {0.813521 ,-0.204936 ,0.544229}; -static float N110[3] = {-0.781480 ,-0.384779 ,0.491155}; -static float N111[3] = {-0.722243 ,0.384927 ,0.574627}; -static float N112[3] = {-0.752278 ,0.502679 ,0.425901}; -static float N113[3] = {0.547257 ,0.367910 ,0.751766}; -static float N114[3] = {0.725949 ,-0.232568 ,0.647233}; -static float N115[3] = {-0.747182 ,-0.660786 ,0.071280}; -static float N116[3] = {0.931519 ,0.200748 ,0.303270}; -static float N117[3] = {-0.828928 ,0.313757 ,0.463071}; -static float N118[3] = {0.902554 ,-0.370967 ,0.218587}; -static float N119[3] = {-0.879257 ,-0.441851 ,0.177973}; -static float N120[3] = {0.642327 ,0.611901 ,0.461512}; -static float N121[3] = {0.964817 ,-0.202322 ,0.167910}; -static float N122[3] = {0.000000 ,1.000000 ,0.000000}; -static float P001[3] = {5.68, -300.95, 1324.70}; -static float P002[3] = {338.69, -219.63, 9677.03}; -static float P003[3] = {12.18, 474.59, 9138.14}; -static float P005[3] = {487.51, 198.05, 9350.78}; -static float P006[3] = {-457.61, 68.74, 9427.85}; -static float P007[3] = {156.52, -266.72, 10311.68}; -static float P008[3] = {-185.56, -266.51, 10310.47}; -static float P009[3] = {124.39, -261.46, 1942.34}; -static float P010[3] = {-130.05, -261.46, 1946.03}; -static float P011[3] = {141.07, -320.11, 1239.38}; -static float P012[3] = {156.48, -360.12, 2073.41}; -static float P013[3] = {162.00, -175.88, 2064.44}; -static float P014[3] = {88.16, -87.72, 2064.02}; -static float P015[3] = {-65.21, -96.13, 2064.02}; -static float P016[3] = {-156.48, -180.96, 2064.44}; -static float P017[3] = {-162.00, -368.93, 2082.39}; -static float P018[3] = {-88.16, -439.22, 2082.39}; -static float P019[3] = {65.21, -440.32, 2083.39}; -static float P020[3] = {246.87, -356.02, 2576.95}; -static float P021[3] = {253.17, -111.15, 2567.15}; -static float P022[3] = {132.34, 51.41, 2559.84}; -static float P023[3] = {-97.88, 40.44, 2567.15}; -static float P024[3] = {-222.97, -117.49, 2567.15}; -static float P025[3] = {-252.22, -371.53, 2569.92}; -static float P026[3] = {-108.44, -518.19, 2586.75}; -static float P027[3] = {97.88, -524.79, 2586.75}; -static float P028[3] = {370.03, -421.19, 3419.70}; -static float P029[3] = {351.15, -16.98, 3423.17}; -static float P030[3] = {200.66, 248.46, 3430.37}; -static float P031[3] = {-148.42, 235.02, 3417.91}; -static float P032[3] = {-360.21, -30.27, 3416.84}; -static float P033[3] = {-357.90, -414.89, 3407.04}; -static float P034[3] = {-148.88, -631.35, 3409.90}; -static float P035[3] = {156.38, -632.59, 3419.70}; -static float P036[3] = {462.61, -469.21, 4431.51}; -static float P037[3] = {466.60, 102.25, 4434.98}; -static float P038[3] = {243.05, 474.34, 4562.02}; -static float P039[3] = {-191.23, 474.40, 4554.42}; -static float P040[3] = {-476.12, 111.05, 4451.11}; -static float P041[3] = {-473.36, -470.74, 4444.78}; -static float P042[3] = {-266.95, -748.41, 4447.78}; -static float P043[3] = {211.14, -749.91, 4429.73}; -static float P044[3] = {680.57, -370.27, 5943.46}; -static float P045[3] = {834.01, 363.09, 6360.63}; -static float P046[3] = {371.29, 804.51, 6486.26}; -static float P047[3] = {-291.43, 797.22, 6494.28}; -static float P048[3] = {-784.13, 370.75, 6378.01}; -static float P049[3] = {-743.29, -325.82, 5943.46}; -static float P050[3] = {-383.24, -804.77, 5943.46}; -static float P051[3] = {283.47, -846.09, 5943.46}; -static float iP001[3] = {5.68, -300.95, 1324.70}; -static float iP009[3] = {124.39, -261.46, 1942.34}; -static float iP010[3] = {-130.05, -261.46, 1946.03}; -static float iP011[3] = {141.07, -320.11, 1239.38}; -static float iP012[3] = {156.48, -360.12, 2073.41}; -static float iP013[3] = {162.00, -175.88, 2064.44}; -static float iP014[3] = {88.16, -87.72, 2064.02}; -static float iP015[3] = {-65.21, -96.13, 2064.02}; -static float iP016[3] = {-156.48, -180.96, 2064.44}; -static float iP017[3] = {-162.00, -368.93, 2082.39}; -static float iP018[3] = {-88.16, -439.22, 2082.39}; -static float iP019[3] = {65.21, -440.32, 2083.39}; -static float iP020[3] = {246.87, -356.02, 2576.95}; -static float iP021[3] = {253.17, -111.15, 2567.15}; -static float iP022[3] = {132.34, 51.41, 2559.84}; -static float iP023[3] = {-97.88, 40.44, 2567.15}; -static float iP024[3] = {-222.97, -117.49, 2567.15}; -static float iP025[3] = {-252.22, -371.53, 2569.92}; -static float iP026[3] = {-108.44, -518.19, 2586.75}; -static float iP027[3] = {97.88, -524.79, 2586.75}; -static float iP028[3] = {370.03, -421.19, 3419.70}; -static float iP029[3] = {351.15, -16.98, 3423.17}; -static float iP030[3] = {200.66, 248.46, 3430.37}; -static float iP031[3] = {-148.42, 235.02, 3417.91}; -static float iP032[3] = {-360.21, -30.27, 3416.84}; -static float iP033[3] = {-357.90, -414.89, 3407.04}; -static float iP034[3] = {-148.88, -631.35, 3409.90}; -static float iP035[3] = {156.38, -632.59, 3419.70}; -static float iP036[3] = {462.61, -469.21, 4431.51}; -static float iP037[3] = {466.60, 102.25, 4434.98}; -static float iP038[3] = {243.05, 474.34, 4562.02}; -static float iP039[3] = {-191.23, 474.40, 4554.42}; -static float iP040[3] = {-476.12, 111.05, 4451.11}; -static float iP041[3] = {-473.36, -470.74, 4444.78}; -static float iP042[3] = {-266.95, -748.41, 4447.78}; -static float iP043[3] = {211.14, -749.91, 4429.73}; -static float iP044[3] = {680.57, -370.27, 5943.46}; -static float iP045[3] = {834.01, 363.09, 6360.63}; -static float iP046[3] = {371.29, 804.51, 6486.26}; -static float iP047[3] = {-291.43, 797.22, 6494.28}; -static float iP048[3] = {-784.13, 370.75, 6378.01}; -static float iP049[3] = {-743.29, -325.82, 5943.46}; -static float iP050[3] = {-383.24, -804.77, 5943.46}; -static float iP051[3] = {283.47, -846.09, 5943.46}; -static float P052[3] = {599.09, -300.15, 7894.03}; -static float P053[3] = {735.48, 306.26, 7911.92}; -static float P054[3] = {246.22, 558.53, 8460.50}; -static float P055[3] = {-230.41, 559.84, 8473.23}; -static float P056[3] = {-698.66, 320.83, 7902.59}; -static float P057[3] = {-643.29, -299.16, 7902.59}; -static float P058[3] = {-341.47, -719.30, 7902.59}; -static float P059[3] = {252.57, -756.12, 7902.59}; -static float P060[3] = {458.39, -265.31, 9355.44}; -static float P062[3] = {224.04, 338.75, 9450.30}; -static float P063[3] = {-165.71, 341.04, 9462.35}; -static float P064[3] = {-298.11, 110.13, 10180.37}; -static float P065[3] = {-473.99, -219.71, 9355.44}; -static float P066[3] = {-211.97, -479.87, 9355.44}; -static float P067[3] = {192.86, -491.45, 9348.73}; -static float P068[3] = {-136.29, -319.84, 1228.73}; -static float P069[3] = {1111.17, -314.14, 1314.19}; -static float P070[3] = {-1167.34, -321.61, 1319.45}; -static float P071[3] = {1404.86, -306.66, 1235.45}; -static float P072[3] = {-1409.73, -314.14, 1247.66}; -static float P073[3] = {1254.01, -296.87, 1544.58}; -static float P074[3] = {-1262.09, -291.70, 1504.26}; -static float P075[3] = {965.71, -269.26, 1742.65}; -static float P076[3] = {-900.97, -276.74, 1726.07}; -static float iP068[3] = {-136.29, -319.84, 1228.73}; -static float iP069[3] = {1111.17, -314.14, 1314.19}; -static float iP070[3] = {-1167.34, -321.61, 1319.45}; -static float iP071[3] = {1404.86, -306.66, 1235.45}; -static float iP072[3] = {-1409.73, -314.14, 1247.66}; -static float iP073[3] = {1254.01, -296.87, 1544.58}; -static float iP074[3] = {-1262.09, -291.70, 1504.26}; -static float iP075[3] = {965.71, -269.26, 1742.65}; -static float iP076[3] = {-900.97, -276.74, 1726.07}; -static float P077[3] = {1058.00, -448.81, 8194.66}; -static float P078[3] = {-1016.51, -456.43, 8190.62}; -static float P079[3] = {-1515.96, -676.45, 7754.93}; -static float P080[3] = {1856.75, -830.34, 7296.56}; -static float P081[3] = {1472.16, -497.38, 7399.68}; -static float P082[3] = {-1775.26, -829.51, 7298.46}; -static float P083[3] = {911.09, -252.51, 7510.99}; -static float P084[3] = {-1451.94, -495.62, 7384.30}; -static float P085[3] = {1598.75, -669.26, 7769.90}; -static float P086[3] = {-836.53, -250.08, 7463.25}; -static float P087[3] = {722.87, -158.18, 8006.41}; -static float P088[3] = {-688.86, -162.28, 7993.89}; -static float P089[3] = {-626.92, -185.30, 8364.98}; -static float P090[3] = {647.72, -189.46, 8354.99}; -static float P091[3] = {0.00, 835.01, 5555.62}; -static float P092[3] = {0.00, 1350.18, 5220.86}; -static float P093[3] = {0.00, 1422.94, 5285.27}; -static float P094[3] = {0.00, 1296.75, 5650.19}; -static float P095[3] = {0.00, 795.63, 6493.88}; -static float iP091[3] = {0.00, 835.01, 5555.62}; -static float iP092[3] = {0.00, 1350.18, 5220.86}; -static float iP093[3] = {0.00, 1422.94, 5285.27}; -static float iP094[3] = {0.00, 1296.75, 5650.19}; -static float iP095[3] = {0.00, 795.63, 6493.88}; -static float P097[3] = {-194.91, -357.14, 10313.32}; -static float P098[3] = {135.35, -357.66, 10307.94}; -static float iP097[3] = {-194.91, -357.14, 10313.32}; -static float iP098[3] = {135.35, -357.66, 10307.94}; -static float P099[3] = {-380.53, -221.14, 9677.98}; -static float P100[3] = {0.00, 412.99, 9629.33}; -static float P102[3] = {59.51, -412.55, 10677.58}; -static float iP102[3] = {59.51, -412.55, 10677.58}; -static float P103[3] = {6.50, 484.74, 9009.94}; -static float P105[3] = {-41.86, 476.51, 9078.17}; -static float P108[3] = {49.20, 476.83, 9078.24}; -static float P110[3] = {-187.62, -410.04, 10674.12}; -static float iP110[3] = {-187.62, -410.04, 10674.12}; -static float P111[3] = {-184.25, -318.70, 10723.88}; -static float iP111[3] = {-184.25, -318.70, 10723.88}; -static float P112[3] = {-179.61, -142.81, 10670.26}; -static float P113[3] = {57.43, -147.94, 10675.26}; -static float P114[3] = {54.06, -218.90, 10712.44}; -static float P115[3] = {-186.35, -212.09, 10713.76}; -static float P116[3] = {205.90, -84.61, 10275.97}; -static float P117[3] = {-230.96, -83.26, 10280.09}; -static float iP118[3] = {216.78, -509.17, 10098.94}; -static float iP119[3] = {-313.21, -510.79, 10102.62}; -static float P118[3] = {216.78, -509.17, 10098.94}; -static float P119[3] = {-313.21, -510.79, 10102.62}; -static float P120[3] = {217.95, 96.34, 10161.62}; -static float P121[3] = {71.99, -319.74, 10717.70}; -static float iP121[3] = {71.99, -319.74, 10717.70}; -static float P122[3] = {0.00, 602.74, 5375.84}; -static float iP122[3] = {0.00, 602.74, 5375.84}; -static float P123[3] = {-448.94, -203.14, 9499.60}; -static float P124[3] = {-442.64, -185.20, 9528.07}; -static float P125[3] = {-441.07, -148.05, 9528.07}; -static float P126[3] = {-443.43, -128.84, 9499.60}; -static float P127[3] = {-456.87, -146.78, 9466.67}; -static float P128[3] = {-453.68, -183.93, 9466.67}; -static float P129[3] = {428.43, -124.08, 9503.03}; -static float P130[3] = {419.73, -142.14, 9534.56}; -static float P131[3] = {419.92, -179.96, 9534.56}; -static float P132[3] = {431.20, -199.73, 9505.26}; -static float P133[3] = {442.28, -181.67, 9475.96}; -static float P134[3] = {442.08, -143.84, 9475.96}; -/* *INDENT-ON* */ - -void -Dolphin001(void) -{ - glNormal3fv(N071); - glBegin(GL_POLYGON); - glVertex3fv(P001); - glVertex3fv(P068); - glVertex3fv(P010); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P068); - glVertex3fv(P076); - glVertex3fv(P010); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P068); - glVertex3fv(P070); - glVertex3fv(P076); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P076); - glVertex3fv(P070); - glVertex3fv(P074); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P070); - glVertex3fv(P072); - glVertex3fv(P074); - glEnd(); - glNormal3fv(N119); - glBegin(GL_POLYGON); - glVertex3fv(P072); - glVertex3fv(P070); - glVertex3fv(P074); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P074); - glVertex3fv(P070); - glVertex3fv(P076); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P070); - glVertex3fv(P068); - glVertex3fv(P076); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P076); - glVertex3fv(P068); - glVertex3fv(P010); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P068); - glVertex3fv(P001); - glVertex3fv(P010); - glEnd(); -} - -void -Dolphin002(void) -{ - glNormal3fv(N071); - glBegin(GL_POLYGON); - glVertex3fv(P011); - glVertex3fv(P001); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P075); - glVertex3fv(P011); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P069); - glVertex3fv(P011); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P069); - glVertex3fv(P075); - glVertex3fv(P073); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P071); - glVertex3fv(P069); - glVertex3fv(P073); - glEnd(); - glNormal3fv(N119); - glBegin(GL_POLYGON); - glVertex3fv(P001); - glVertex3fv(P011); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P009); - glVertex3fv(P011); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P011); - glVertex3fv(P069); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P069); - glVertex3fv(P073); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P069); - glVertex3fv(P071); - glVertex3fv(P073); - glEnd(); -} - -void -Dolphin003(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N019); - glVertex3fv(P019); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N012); - glVertex3fv(P012); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N018); - glVertex3fv(P018); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N016); - glVertex3fv(P016); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N012); - glVertex3fv(P012); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N015); - glVertex3fv(P015); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N013); - glVertex3fv(P013); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N014); - glVertex3fv(P014); - glEnd(); -} - -void -Dolphin004(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N022); - glVertex3fv(P022); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N023); - glVertex3fv(P023); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N024); - glVertex3fv(P024); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N025); - glVertex3fv(P025); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N021); - glVertex3fv(P021); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N020); - glVertex3fv(P020); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N026); - glVertex3fv(P026); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N027); - glVertex3fv(P027); - glEnd(); -} - -void -Dolphin005(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N030); - glVertex3fv(P030); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N030); - glVertex3fv(P030); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N031); - glVertex3fv(P031); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N031); - glVertex3fv(P031); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N028); - glVertex3fv(P028); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N028); - glVertex3fv(P028); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N035); - glVertex3fv(P035); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N033); - glVertex3fv(P033); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N034); - glVertex3fv(P034); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N034); - glVertex3fv(P034); - glEnd(); -} - -void -Dolphin006(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N093); - glVertex3fv(P093); - glNormal3fv(N094); - glVertex3fv(P094); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N093); - glVertex3fv(P093); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N094); - glVertex3fv(P094); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N091); - glVertex3fv(P091); - glNormal3fv(N095); - glVertex3fv(P095); - glNormal3fv(N094); - glVertex3fv(P094); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N091); - glVertex3fv(P091); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N094); - glVertex3fv(P094); - glNormal3fv(N095); - glVertex3fv(P095); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N122); - glVertex3fv(P122); - glNormal3fv(N095); - glVertex3fv(P095); - glNormal3fv(N091); - glVertex3fv(P091); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N122); - glVertex3fv(P122); - glNormal3fv(N091); - glVertex3fv(P091); - glNormal3fv(N095); - glVertex3fv(P095); - glEnd(); -} - -void -Dolphin007(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N038); - glVertex3fv(P038); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N038); - glVertex3fv(P038); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N037); - glVertex3fv(P037); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N037); - glVertex3fv(P037); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N036); - glVertex3fv(P036); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N036); - glVertex3fv(P036); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N043); - glVertex3fv(P043); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N034); - glVertex3fv(P034); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N042); - glVertex3fv(P042); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N034); - glVertex3fv(P034); - glNormal3fv(N042); - glVertex3fv(P042); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N041); - glVertex3fv(P041); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N039); - glVertex3fv(P039); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N040); - glVertex3fv(P040); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N040); - glVertex3fv(P040); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N041); - glVertex3fv(P041); - glEnd(); -} - -void -Dolphin008(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N050); - glVertex3fv(P050); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N051); - glVertex3fv(P051); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N044); - glVertex3fv(P044); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N050); - glVertex3fv(P050); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N049); - glVertex3fv(P049); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N044); - glVertex3fv(P044); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N049); - glVertex3fv(P049); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N048); - glVertex3fv(P048); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N048); - glVertex3fv(P048); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N047); - glVertex3fv(P047); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N046); - glVertex3fv(P046); - glEnd(); -} - -void -Dolphin009(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N058); - glVertex3fv(P058); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N059); - glVertex3fv(P059); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N052); - glVertex3fv(P052); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N045); - glVertex3fv(P045); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N053); - glVertex3fv(P053); - glNormal3fv(N052); - glVertex3fv(P052); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N058); - glVertex3fv(P058); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N057); - glVertex3fv(P057); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N057); - glVertex3fv(P057); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N057); - glVertex3fv(P057); - glNormal3fv(N056); - glVertex3fv(P056); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N056); - glVertex3fv(P056); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N055); - glVertex3fv(P055); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N045); - glVertex3fv(P045); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N055); - glVertex3fv(P055); - glNormal3fv(N054); - glVertex3fv(P054); - glEnd(); -} - -void -Dolphin010(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N080); - glVertex3fv(P080); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N085); - glVertex3fv(P085); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N077); - glVertex3fv(P077); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N090); - glVertex3fv(P090); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N080); - glVertex3fv(P080); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N085); - glVertex3fv(P085); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N077); - glVertex3fv(P077); - glNormal3fv(N090); - glVertex3fv(P090); - glEnd(); -} - -void -Dolphin011(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N082); - glVertex3fv(P082); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N079); - glVertex3fv(P079); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N088); - glVertex3fv(P088); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N078); - glVertex3fv(P078); - glNormal3fv(N088); - glVertex3fv(P088); - glNormal3fv(N089); - glVertex3fv(P089); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N088); - glVertex3fv(P088); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N089); - glVertex3fv(P089); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N089); - glVertex3fv(P089); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N078); - glVertex3fv(P078); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N082); - glVertex3fv(P082); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); -} - -void -Dolphin012(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N067); - glVertex3fv(P067); - glNormal3fv(N066); - glVertex3fv(P066); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N052); - glVertex3fv(P052); - glNormal3fv(N060); - glVertex3fv(P060); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N067); - glVertex3fv(P067); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N065); - glVertex3fv(P065); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N057); - glVertex3fv(P057); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N057); - glVertex3fv(P057); - glNormal3fv(N065); - glVertex3fv(P065); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N006); - glVertex3fv(P006); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N063); - glVertex3fv(P063); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N055); - glVertex3fv(P055); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N005); - glVertex3fv(P005); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N052); - glVertex3fv(P052); - glNormal3fv(N053); - glVertex3fv(P053); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N060); - glVertex3fv(P060); - glEnd(); -} - -void -Dolphin013(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N116); - glVertex3fv(P116); - glNormal3fv(N117); - glVertex3fv(P117); - glNormal3fv(N112); - glVertex3fv(P112); - glNormal3fv(N113); - glVertex3fv(P113); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N114); - glVertex3fv(P114); - glNormal3fv(N113); - glVertex3fv(P113); - glNormal3fv(N112); - glVertex3fv(P112); - glNormal3fv(N115); - glVertex3fv(P115); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N114); - glVertex3fv(P114); - glNormal3fv(N116); - glVertex3fv(P116); - glNormal3fv(N113); - glVertex3fv(P113); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N114); - glVertex3fv(P114); - glNormal3fv(N007); - glVertex3fv(P007); - glNormal3fv(N116); - glVertex3fv(P116); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N007); - glVertex3fv(P007); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N116); - glVertex3fv(P116); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P002); - glVertex3fv(P007); - glVertex3fv(P008); - glVertex3fv(P099); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P007); - glVertex3fv(P114); - glVertex3fv(P115); - glVertex3fv(P008); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N117); - glVertex3fv(P117); - glNormal3fv(N099); - glVertex3fv(P099); - glNormal3fv(N008); - glVertex3fv(P008); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N117); - glVertex3fv(P117); - glNormal3fv(N008); - glVertex3fv(P008); - glNormal3fv(N112); - glVertex3fv(P112); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N112); - glVertex3fv(P112); - glNormal3fv(N008); - glVertex3fv(P008); - glNormal3fv(N115); - glVertex3fv(P115); - glEnd(); -} - -void -Dolphin014(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N111); - glVertex3fv(P111); - glNormal3fv(N110); - glVertex3fv(P110); - glNormal3fv(N102); - glVertex3fv(P102); - glNormal3fv(N121); - glVertex3fv(P121); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N111); - glVertex3fv(P111); - glNormal3fv(N097); - glVertex3fv(P097); - glNormal3fv(N110); - glVertex3fv(P110); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N097); - glVertex3fv(P097); - glNormal3fv(N119); - glVertex3fv(P119); - glNormal3fv(N110); - glVertex3fv(P110); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N097); - glVertex3fv(P097); - glNormal3fv(N099); - glVertex3fv(P099); - glNormal3fv(N119); - glVertex3fv(P119); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N099); - glVertex3fv(P099); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N119); - glVertex3fv(P119); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N119); - glVertex3fv(P119); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P098); - glVertex3fv(P097); - glVertex3fv(P111); - glVertex3fv(P121); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P002); - glVertex3fv(P099); - glVertex3fv(P097); - glVertex3fv(P098); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N110); - glVertex3fv(P110); - glNormal3fv(N119); - glVertex3fv(P119); - glNormal3fv(N118); - glVertex3fv(P118); - glNormal3fv(N102); - glVertex3fv(P102); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N119); - glVertex3fv(P119); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N067); - glVertex3fv(P067); - glNormal3fv(N118); - glVertex3fv(P118); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N067); - glVertex3fv(P067); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N067); - glVertex3fv(P067); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N118); - glVertex3fv(P118); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N118); - glVertex3fv(P118); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N098); - glVertex3fv(P098); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N118); - glVertex3fv(P118); - glNormal3fv(N098); - glVertex3fv(P098); - glNormal3fv(N102); - glVertex3fv(P102); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N102); - glVertex3fv(P102); - glNormal3fv(N098); - glVertex3fv(P098); - glNormal3fv(N121); - glVertex3fv(P121); - glEnd(); -} - -void -Dolphin015(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N055); - glVertex3fv(P055); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N054); - glVertex3fv(P054); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N055); - glVertex3fv(P055); - glNormal3fv(N063); - glVertex3fv(P063); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N100); - glVertex3fv(P100); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N054); - glVertex3fv(P054); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N062); - glVertex3fv(P062); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N064); - glVertex3fv(P064); - glNormal3fv(N120); - glVertex3fv(P120); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N064); - glVertex3fv(P064); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N064); - glVertex3fv(P064); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N064); - glVertex3fv(P064); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N099); - glVertex3fv(P099); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N064); - glVertex3fv(P064); - glNormal3fv(N099); - glVertex3fv(P099); - glNormal3fv(N117); - glVertex3fv(P117); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N120); - glVertex3fv(P120); - glNormal3fv(N064); - glVertex3fv(P064); - glNormal3fv(N117); - glVertex3fv(P117); - glNormal3fv(N116); - glVertex3fv(P116); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N099); - glVertex3fv(P099); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N120); - glVertex3fv(P120); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N120); - glVertex3fv(P120); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N120); - glVertex3fv(P120); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N120); - glVertex3fv(P120); - glNormal3fv(N116); - glVertex3fv(P116); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); -} - -void -Dolphin016(void) -{ - - glDisable(GL_DEPTH_TEST); - glBegin(GL_POLYGON); - glVertex3fv(P123); - glVertex3fv(P124); - glVertex3fv(P125); - glVertex3fv(P126); - glVertex3fv(P127); - glVertex3fv(P128); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P129); - glVertex3fv(P130); - glVertex3fv(P131); - glVertex3fv(P132); - glVertex3fv(P133); - glVertex3fv(P134); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P103); - glVertex3fv(P105); - glVertex3fv(P108); - glEnd(); - glEnable(GL_DEPTH_TEST); -} - -void -DrawDolphin(fishRec * fish) -{ - float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7; - float pitch, thrash, chomp; - - fish->htail = (int) (fish->htail - (int) (10.0 * fish->v)) % 360; - - thrash = 70.0 * fish->v; - - seg0 = 1.0 * thrash * sin((fish->htail) * RRAD); - seg3 = 1.0 * thrash * sin((fish->htail) * RRAD); - seg1 = 2.0 * thrash * sin((fish->htail + 4.0) * RRAD); - seg2 = 3.0 * thrash * sin((fish->htail + 6.0) * RRAD); - seg4 = 4.0 * thrash * sin((fish->htail + 10.0) * RRAD); - seg5 = 4.5 * thrash * sin((fish->htail + 15.0) * RRAD); - seg6 = 5.0 * thrash * sin((fish->htail + 20.0) * RRAD); - seg7 = 6.0 * thrash * sin((fish->htail + 30.0) * RRAD); - - pitch = fish->v * sin((fish->htail + 180.0) * RRAD); - - if (fish->v > 2.0) { - chomp = -(fish->v - 2.0) * 200.0; - } - chomp = 100.0; - - P012[1] = iP012[1] + seg5; - P013[1] = iP013[1] + seg5; - P014[1] = iP014[1] + seg5; - P015[1] = iP015[1] + seg5; - P016[1] = iP016[1] + seg5; - P017[1] = iP017[1] + seg5; - P018[1] = iP018[1] + seg5; - P019[1] = iP019[1] + seg5; - - P020[1] = iP020[1] + seg4; - P021[1] = iP021[1] + seg4; - P022[1] = iP022[1] + seg4; - P023[1] = iP023[1] + seg4; - P024[1] = iP024[1] + seg4; - P025[1] = iP025[1] + seg4; - P026[1] = iP026[1] + seg4; - P027[1] = iP027[1] + seg4; - - P028[1] = iP028[1] + seg2; - P029[1] = iP029[1] + seg2; - P030[1] = iP030[1] + seg2; - P031[1] = iP031[1] + seg2; - P032[1] = iP032[1] + seg2; - P033[1] = iP033[1] + seg2; - P034[1] = iP034[1] + seg2; - P035[1] = iP035[1] + seg2; - - P036[1] = iP036[1] + seg1; - P037[1] = iP037[1] + seg1; - P038[1] = iP038[1] + seg1; - P039[1] = iP039[1] + seg1; - P040[1] = iP040[1] + seg1; - P041[1] = iP041[1] + seg1; - P042[1] = iP042[1] + seg1; - P043[1] = iP043[1] + seg1; - - P044[1] = iP044[1] + seg0; - P045[1] = iP045[1] + seg0; - P046[1] = iP046[1] + seg0; - P047[1] = iP047[1] + seg0; - P048[1] = iP048[1] + seg0; - P049[1] = iP049[1] + seg0; - P050[1] = iP050[1] + seg0; - P051[1] = iP051[1] + seg0; - - P009[1] = iP009[1] + seg6; - P010[1] = iP010[1] + seg6; - P075[1] = iP075[1] + seg6; - P076[1] = iP076[1] + seg6; - - P001[1] = iP001[1] + seg7; - P011[1] = iP011[1] + seg7; - P068[1] = iP068[1] + seg7; - P069[1] = iP069[1] + seg7; - P070[1] = iP070[1] + seg7; - P071[1] = iP071[1] + seg7; - P072[1] = iP072[1] + seg7; - P073[1] = iP073[1] + seg7; - P074[1] = iP074[1] + seg7; - - P091[1] = iP091[1] + seg3; - P092[1] = iP092[1] + seg3; - P093[1] = iP093[1] + seg3; - P094[1] = iP094[1] + seg3; - P095[1] = iP095[1] + seg3; - P122[1] = iP122[1] + seg3 * 1.5; - - P097[1] = iP097[1] + chomp; - P098[1] = iP098[1] + chomp; - P102[1] = iP102[1] + chomp; - P110[1] = iP110[1] + chomp; - P111[1] = iP111[1] + chomp; - P121[1] = iP121[1] + chomp; - P118[1] = iP118[1] + chomp; - P119[1] = iP119[1] + chomp; - - glPushMatrix(); - - glRotatef(pitch, 1.0, 0.0, 0.0); - - glTranslatef(0.0, 0.0, 7000.0); - - glRotatef(180.0, 0.0, 1.0, 0.0); - - glEnable(GL_CULL_FACE); - Dolphin014(); - Dolphin010(); - Dolphin009(); - Dolphin012(); - Dolphin013(); - Dolphin006(); - Dolphin002(); - Dolphin001(); - Dolphin003(); - Dolphin015(); - Dolphin004(); - Dolphin005(); - Dolphin007(); - Dolphin008(); - Dolphin011(); - Dolphin016(); - glDisable(GL_CULL_FACE); - - glPopMatrix(); -} diff --git a/lib/glut-3.7.6/progs/demos/atlantis/shark.c b/lib/glut-3.7.6/progs/demos/atlantis/shark.c deleted file mode 100644 index 0ec499f66f64e3132962fe56842bb07afc57e1ca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/shark.c +++ /dev/null @@ -1,1308 +0,0 @@ -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include -#include -#include "atlantis.h" -/* *INDENT-OFF* */ -static float N002[3] = {0.000077 ,-0.020611 ,0.999788}; -static float N003[3] = {0.961425 ,0.258729 ,-0.093390}; -static float N004[3] = {0.510811 ,-0.769633 ,-0.383063}; -static float N005[3] = {0.400123 ,0.855734 ,-0.328055}; -static float N006[3] = {-0.770715 ,0.610204 ,-0.183440}; -static float N007[3] = {-0.915597 ,-0.373345 ,-0.149316}; -static float N008[3] = {-0.972788 ,0.208921 ,-0.100179}; -static float N009[3] = {-0.939713 ,-0.312268 ,-0.139383}; -static float N010[3] = {-0.624138 ,-0.741047 ,-0.247589}; -static float N011[3] = {0.591434 ,-0.768401 ,-0.244471}; -static float N012[3] = {0.935152 ,-0.328495 ,-0.132598}; -static float N013[3] = {0.997102 ,0.074243 ,-0.016593}; -static float N014[3] = {0.969995 ,0.241712 ,-0.026186}; -static float N015[3] = {0.844539 ,0.502628 ,-0.184714}; -static float N016[3] = {-0.906608 ,0.386308 ,-0.169787}; -static float N017[3] = {-0.970016 ,0.241698 ,-0.025516}; -static float N018[3] = {-0.998652 ,0.050493 ,-0.012045}; -static float N019[3] = {-0.942685 ,-0.333051 ,-0.020556}; -static float N020[3] = {-0.660944 ,-0.750276 ,0.015480}; -static float N021[3] = {0.503549 ,-0.862908 ,-0.042749}; -static float N022[3] = {0.953202 ,-0.302092 ,-0.012089}; -static float N023[3] = {0.998738 ,0.023574 ,0.044344}; -static float N024[3] = {0.979297 ,0.193272 ,0.060202}; -static float N025[3] = {0.798300 ,0.464885 ,0.382883}; -static float N026[3] = {-0.756590 ,0.452403 ,0.472126}; -static float N027[3] = {-0.953855 ,0.293003 ,0.065651}; -static float N028[3] = {-0.998033 ,0.040292 ,0.048028}; -static float N029[3] = {-0.977079 ,-0.204288 ,0.059858}; -static float N030[3] = {-0.729117 ,-0.675304 ,0.111140}; -static float N031[3] = {0.598361 ,-0.792753 ,0.116221}; -static float N032[3] = {0.965192 ,-0.252991 ,0.066332}; -static float N033[3] = {0.998201 ,-0.002790 ,0.059892}; -static float N034[3] = {0.978657 ,0.193135 ,0.070207}; -static float N035[3] = {0.718815 ,0.680392 ,0.142733}; -static float N036[3] = {-0.383096 ,0.906212 ,0.178936}; -static float N037[3] = {-0.952831 ,0.292590 ,0.080647}; -static float N038[3] = {-0.997680 ,0.032417 ,0.059861}; -static float N039[3] = {-0.982629 ,-0.169881 ,0.074700}; -static float N040[3] = {-0.695424 ,-0.703466 ,0.146700}; -static float N041[3] = {0.359323 ,-0.915531 ,0.180805}; -static float N042[3] = {0.943356 ,-0.319387 ,0.089842}; -static float N043[3] = {0.998272 ,-0.032435 ,0.048993}; -static float N044[3] = {0.978997 ,0.193205 ,0.065084}; -static float N045[3] = {0.872144 ,0.470094 ,-0.135565}; -static float N046[3] = {-0.664282 ,0.737945 ,-0.119027}; -static float N047[3] = {-0.954508 ,0.288570 ,0.075107}; -static float N048[3] = {-0.998273 ,0.032406 ,0.048993}; -static float N049[3] = {-0.979908 ,-0.193579 ,0.048038}; -static float N050[3] = {-0.858736 ,-0.507202 ,-0.072938}; -static float N051[3] = {0.643545 ,-0.763887 ,-0.048237}; -static float N052[3] = {0.955580 ,-0.288954 ,0.058068}; -static float N058[3] = {0.000050 ,0.793007 ,-0.609213}; -static float N059[3] = {0.913510 ,0.235418 ,-0.331779}; -static float N060[3] = {-0.807970 ,0.495000 ,-0.319625}; -static float N061[3] = {0.000000 ,0.784687 ,-0.619892}; -static float N062[3] = {0.000000 ,-1.000000 ,0.000000}; -static float N063[3] = {0.000000 ,1.000000 ,0.000000}; -static float N064[3] = {0.000000 ,1.000000 ,0.000000}; -static float N065[3] = {0.000000 ,1.000000 ,0.000000}; -static float N066[3] = {-0.055784 ,0.257059 ,0.964784}; -static float N069[3] = {-0.000505 ,-0.929775 ,-0.368127}; -static float N070[3] = {0.000000 ,1.000000 ,0.000000}; -static float P002[3] = {0.00, -36.59, 5687.72}; -static float P003[3] = {90.00, 114.73, 724.38}; -static float P004[3] = {58.24, -146.84, 262.35}; -static float P005[3] = {27.81, 231.52, 510.43}; -static float P006[3] = {-27.81, 230.43, 509.76}; -static float P007[3] = {-46.09, -146.83, 265.84}; -static float P008[3] = {-90.00, 103.84, 718.53}; -static float P009[3] = {-131.10, -165.92, 834.85}; -static float P010[3] = {-27.81, -285.31, 500.00}; -static float P011[3] = {27.81, -285.32, 500.00}; -static float P012[3] = {147.96, -170.89, 845.50}; -static float P013[3] = {180.00, 0.00, 2000.00}; -static float P014[3] = {145.62, 352.67, 2000.00}; -static float P015[3] = {55.62, 570.63, 2000.00}; -static float P016[3] = {-55.62, 570.64, 2000.00}; -static float P017[3] = {-145.62, 352.68, 2000.00}; -static float P018[3] = {-180.00, 0.01, 2000.00}; -static float P019[3] = {-178.20, -352.66, 2001.61}; -static float P020[3] = {-55.63, -570.63, 2000.00}; -static float P021[3] = {55.62, -570.64, 2000.00}; -static float P022[3] = {179.91, -352.69, 1998.39}; -static float P023[3] = {150.00, 0.00, 3000.00}; -static float P024[3] = {121.35, 293.89, 3000.00}; -static float P025[3] = {46.35, 502.93, 2883.09}; -static float P026[3] = {-46.35, 497.45, 2877.24}; -static float P027[3] = {-121.35, 293.90, 3000.00}; -static float P028[3] = {-150.00, 0.00, 3000.00}; -static float P029[3] = {-152.21, -304.84, 2858.68}; -static float P030[3] = {-46.36, -475.52, 3000.00}; -static float P031[3] = {46.35, -475.53, 3000.00}; -static float P032[3] = {155.64, -304.87, 2863.50}; -static float P033[3] = {90.00, 0.00, 4000.00}; -static float P034[3] = {72.81, 176.33, 4000.00}; -static float P035[3] = {27.81, 285.32, 4000.00}; -static float P036[3] = {-27.81, 285.32, 4000.00}; -static float P037[3] = {-72.81, 176.34, 4000.00}; -static float P038[3] = {-90.00, 0.00, 4000.00}; -static float P039[3] = {-72.81, -176.33, 4000.00}; -static float P040[3] = {-27.81, -285.31, 4000.00}; -static float P041[3] = {27.81, -285.32, 4000.00}; -static float P042[3] = {72.81, -176.34, 4000.00}; -static float P043[3] = {30.00, 0.00, 5000.00}; -static float P044[3] = {24.27, 58.78, 5000.00}; -static float P045[3] = {9.27, 95.11, 5000.00}; -static float P046[3] = {-9.27, 95.11, 5000.00}; -static float P047[3] = {-24.27, 58.78, 5000.00}; -static float P048[3] = {-30.00, 0.00, 5000.00}; -static float P049[3] = {-24.27, -58.78, 5000.00}; -static float P050[3] = {-9.27, -95.10, 5000.00}; -static float P051[3] = {9.27, -95.11, 5000.00}; -static float P052[3] = {24.27, -58.78, 5000.00}; -static float P058[3] = {0.00, 1212.72, 2703.08}; -static float P059[3] = {50.36, 0.00, 108.14}; -static float P060[3] = {-22.18, 0.00, 108.14}; -static float P061[3] = {0.00, 1181.61, 6344.65}; -static float P062[3] = {516.45, -887.08, 2535.45}; -static float P063[3] = {-545.69, -879.31, 2555.63}; -static float P064[3] = {618.89, -1005.64, 2988.32}; -static float P065[3] = {-635.37, -1014.79, 2938.68}; -static float P066[3] = {0.00, 1374.43, 3064.18}; -static float P069[3] = {0.00, -418.25, 5765.04}; -static float P070[3] = {0.00, 1266.91, 6629.60}; -static float P071[3] = {-139.12, -124.96, 997.98}; -static float P072[3] = {-139.24, -110.18, 1020.68}; -static float P073[3] = {-137.33, -94.52, 1022.63}; -static float P074[3] = {-137.03, -79.91, 996.89}; -static float P075[3] = {-135.21, -91.48, 969.14}; -static float P076[3] = {-135.39, -110.87, 968.76}; -static float P077[3] = {150.23, -78.44, 995.53}; -static float P078[3] = {152.79, -92.76, 1018.46}; -static float P079[3] = {154.19, -110.20, 1020.55}; -static float P080[3] = {151.33, -124.15, 993.77}; -static float P081[3] = {150.49, -111.19, 969.86}; -static float P082[3] = {150.79, -92.41, 969.70}; -static float iP002[3] = {0.00, -36.59, 5687.72}; -static float iP004[3] = {58.24, -146.84, 262.35}; -static float iP007[3] = {-46.09, -146.83, 265.84}; -static float iP010[3] = {-27.81, -285.31, 500.00}; -static float iP011[3] = {27.81, -285.32, 500.00}; -static float iP023[3] = {150.00, 0.00, 3000.00}; -static float iP024[3] = {121.35, 293.89, 3000.00}; -static float iP025[3] = {46.35, 502.93, 2883.09}; -static float iP026[3] = {-46.35, 497.45, 2877.24}; -static float iP027[3] = {-121.35, 293.90, 3000.00}; -static float iP028[3] = {-150.00, 0.00, 3000.00}; -static float iP029[3] = {-121.35, -304.84, 2853.86}; -static float iP030[3] = {-46.36, -475.52, 3000.00}; -static float iP031[3] = {46.35, -475.53, 3000.00}; -static float iP032[3] = {121.35, -304.87, 2853.86}; -static float iP033[3] = {90.00, 0.00, 4000.00}; -static float iP034[3] = {72.81, 176.33, 4000.00}; -static float iP035[3] = {27.81, 285.32, 4000.00}; -static float iP036[3] = {-27.81, 285.32, 4000.00}; -static float iP037[3] = {-72.81, 176.34, 4000.00}; -static float iP038[3] = {-90.00, 0.00, 4000.00}; -static float iP039[3] = {-72.81, -176.33, 4000.00}; -static float iP040[3] = {-27.81, -285.31, 4000.00}; -static float iP041[3] = {27.81, -285.32, 4000.00}; -static float iP042[3] = {72.81, -176.34, 4000.00}; -static float iP043[3] = {30.00, 0.00, 5000.00}; -static float iP044[3] = {24.27, 58.78, 5000.00}; -static float iP045[3] = {9.27, 95.11, 5000.00}; -static float iP046[3] = {-9.27, 95.11, 5000.00}; -static float iP047[3] = {-24.27, 58.78, 5000.00}; -static float iP048[3] = {-30.00, 0.00, 5000.00}; -static float iP049[3] = {-24.27, -58.78, 5000.00}; -static float iP050[3] = {-9.27, -95.10, 5000.00}; -static float iP051[3] = {9.27, -95.11, 5000.00}; -static float iP052[3] = {24.27, -58.78, 5000.00}; -static float iP061[3] = {0.00, 1181.61, 6344.65}; -static float iP069[3] = {0.00, -418.25, 5765.04}; -static float iP070[3] = {0.00, 1266.91, 6629.60}; -/* *INDENT-ON* */ - -void -Fish001(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N006); - glVertex3fv(P006); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N016); - glVertex3fv(P016); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N008); - glVertex3fv(P008); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N008); - glVertex3fv(P008); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N008); - glVertex3fv(P008); - glNormal3fv(N017); - glVertex3fv(P017); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N008); - glVertex3fv(P008); - glNormal3fv(N018); - glVertex3fv(P018); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N008); - glVertex3fv(P008); - glNormal3fv(N009); - glVertex3fv(P009); - glNormal3fv(N018); - glVertex3fv(P018); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N008); - glVertex3fv(P008); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N009); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N007); - glVertex3fv(P007); - glNormal3fv(N010); - glVertex3fv(P010); - glNormal3fv(N009); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N009); - glVertex3fv(P009); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N018); - glVertex3fv(P018); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N009); - glVertex3fv(P009); - glNormal3fv(N010); - glVertex3fv(P010); - glNormal3fv(N019); - glVertex3fv(P019); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N010); - glVertex3fv(P010); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N019); - glVertex3fv(P019); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N010); - glVertex3fv(P010); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N020); - glVertex3fv(P020); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N004); - glVertex3fv(P004); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N010); - glVertex3fv(P010); - glNormal3fv(N007); - glVertex3fv(P007); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N004); - glVertex3fv(P004); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N011); - glVertex3fv(P011); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N011); - glVertex3fv(P011); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N021); - glVertex3fv(P021); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N015); - glVertex3fv(P015); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N003); - glVertex3fv(P003); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N059); - glVertex3fv(P059); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N003); - glVertex3fv(P003); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N059); - glVertex3fv(P059); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N003); - glVertex3fv(P003); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N012); - glVertex3fv(P012); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P071); - glVertex3fv(P072); - glVertex3fv(P073); - glVertex3fv(P074); - glVertex3fv(P075); - glVertex3fv(P076); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P077); - glVertex3fv(P078); - glVertex3fv(P079); - glVertex3fv(P080); - glVertex3fv(P081); - glVertex3fv(P082); - glEnd(); -} - -void -Fish002(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N023); - glVertex3fv(P023); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N024); - glVertex3fv(P024); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N026); - glVertex3fv(P026); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N027); - glVertex3fv(P027); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N030); - glVertex3fv(P030); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N022); - glVertex3fv(P022); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N031); - glVertex3fv(P031); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N021); - glVertex3fv(P021); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N028); - glVertex3fv(P028); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N030); - glVertex3fv(P030); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); -} - -void -Fish003(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N042); - glVertex3fv(P042); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N041); - glVertex3fv(P041); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N034); - glVertex3fv(P034); - glNormal3fv(N033); - glVertex3fv(P033); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N034); - glVertex3fv(P034); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N040); - glVertex3fv(P040); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N035); - glVertex3fv(P035); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N036); - glVertex3fv(P036); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N037); - glVertex3fv(P037); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N038); - glVertex3fv(P038); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N039); - glVertex3fv(P039); - glEnd(); -} - -void -Fish004(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N050); - glVertex3fv(P050); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N052); - glVertex3fv(P052); - glNormal3fv(N051); - glVertex3fv(P051); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N052); - glVertex3fv(P052); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N034); - glVertex3fv(P034); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N043); - glVertex3fv(P043); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N034); - glVertex3fv(P034); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N045); - glVertex3fv(P045); - glNormal3fv(N044); - glVertex3fv(P044); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N046); - glVertex3fv(P046); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N047); - glVertex3fv(P047); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N048); - glVertex3fv(P048); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N049); - glVertex3fv(P049); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N070); - glVertex3fv(P070); - glNormal3fv(N061); - glVertex3fv(P061); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N061); - glVertex3fv(P061); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N045); - glVertex3fv(P045); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N061); - glVertex3fv(P061); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N061); - glVertex3fv(P061); - glNormal3fv(N070); - glVertex3fv(P070); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N045); - glVertex3fv(P045); - glNormal3fv(N061); - glVertex3fv(P061); - glEnd(); -} - -void -Fish005(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N044); - glVertex3fv(P044); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N052); - glVertex3fv(P052); - glNormal3fv(N043); - glVertex3fv(P043); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N052); - glVertex3fv(P052); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N047); - glVertex3fv(P047); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N048); - glVertex3fv(P048); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N049); - glVertex3fv(P049); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N050); - glVertex3fv(P050); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N069); - glVertex3fv(P069); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N069); - glVertex3fv(P069); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N069); - glVertex3fv(P069); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); -} - -void -Fish006(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N026); - glVertex3fv(P026); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N025); - glVertex3fv(P025); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N026); - glVertex3fv(P026); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N016); - glVertex3fv(P016); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N066); - glVertex3fv(P066); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N016); - glVertex3fv(P016); - glEnd(); -} - -void -Fish007(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N064); - glVertex3fv(P064); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N064); - glVertex3fv(P064); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); -} - -void -Fish008(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N065); - glVertex3fv(P065); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); -} - -void -Fish009(void) -{ - glBegin(GL_POLYGON); - glVertex3fv(P059); - glVertex3fv(P012); - glVertex3fv(P009); - glVertex3fv(P060); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P012); - glVertex3fv(P004); - glVertex3fv(P007); - glVertex3fv(P009); - glEnd(); -} - -void -Fish_1(void) -{ - Fish004(); - Fish005(); - Fish003(); - Fish007(); - Fish006(); - Fish002(); - Fish008(); - Fish009(); - Fish001(); -} - -void -Fish_2(void) -{ - Fish005(); - Fish004(); - Fish003(); - Fish008(); - Fish006(); - Fish002(); - Fish007(); - Fish009(); - Fish001(); -} - -void -Fish_3(void) -{ - Fish005(); - Fish004(); - Fish007(); - Fish003(); - Fish002(); - Fish008(); - Fish009(); - Fish001(); - Fish006(); -} - -void -Fish_4(void) -{ - Fish005(); - Fish004(); - Fish008(); - Fish003(); - Fish002(); - Fish007(); - Fish009(); - Fish001(); - Fish006(); -} - -void -Fish_5(void) -{ - Fish009(); - Fish006(); - Fish007(); - Fish001(); - Fish002(); - Fish003(); - Fish008(); - Fish004(); - Fish005(); -} - -void -Fish_6(void) -{ - Fish009(); - Fish006(); - Fish008(); - Fish001(); - Fish002(); - Fish007(); - Fish003(); - Fish004(); - Fish005(); -} - -void -Fish_7(void) -{ - Fish009(); - Fish001(); - Fish007(); - Fish005(); - Fish002(); - Fish008(); - Fish003(); - Fish004(); - Fish006(); -} - -void -Fish_8(void) -{ - Fish009(); - Fish008(); - Fish001(); - Fish002(); - Fish007(); - Fish003(); - Fish005(); - Fish004(); - Fish006(); -} - -void -DrawShark(fishRec * fish) -{ - float mat[4][4]; - int n; - float seg1, seg2, seg3, seg4, segup; - float thrash, chomp; - - fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360; - - thrash = 50.0 * fish->v; - - seg1 = 0.6 * thrash * sin(fish->htail * RRAD); - seg2 = 1.8 * thrash * sin((fish->htail + 45.0) * RRAD); - seg3 = 3.0 * thrash * sin((fish->htail + 90.0) * RRAD); - seg4 = 4.0 * thrash * sin((fish->htail + 110.0) * RRAD); - - chomp = 0.0; - if (fish->v > 2.0) { - chomp = -(fish->v - 2.0) * 200.0; - } - P004[1] = iP004[1] + chomp; - P007[1] = iP007[1] + chomp; - P010[1] = iP010[1] + chomp; - P011[1] = iP011[1] + chomp; - - P023[0] = iP023[0] + seg1; - P024[0] = iP024[0] + seg1; - P025[0] = iP025[0] + seg1; - P026[0] = iP026[0] + seg1; - P027[0] = iP027[0] + seg1; - P028[0] = iP028[0] + seg1; - P029[0] = iP029[0] + seg1; - P030[0] = iP030[0] + seg1; - P031[0] = iP031[0] + seg1; - P032[0] = iP032[0] + seg1; - P033[0] = iP033[0] + seg2; - P034[0] = iP034[0] + seg2; - P035[0] = iP035[0] + seg2; - P036[0] = iP036[0] + seg2; - P037[0] = iP037[0] + seg2; - P038[0] = iP038[0] + seg2; - P039[0] = iP039[0] + seg2; - P040[0] = iP040[0] + seg2; - P041[0] = iP041[0] + seg2; - P042[0] = iP042[0] + seg2; - P043[0] = iP043[0] + seg3; - P044[0] = iP044[0] + seg3; - P045[0] = iP045[0] + seg3; - P046[0] = iP046[0] + seg3; - P047[0] = iP047[0] + seg3; - P048[0] = iP048[0] + seg3; - P049[0] = iP049[0] + seg3; - P050[0] = iP050[0] + seg3; - P051[0] = iP051[0] + seg3; - P052[0] = iP052[0] + seg3; - P002[0] = iP002[0] + seg4; - P061[0] = iP061[0] + seg4; - P069[0] = iP069[0] + seg4; - P070[0] = iP070[0] + seg4; - - fish->vtail += ((fish->dtheta - fish->vtail) * 0.1); - - if (fish->vtail > 0.5) { - fish->vtail = 0.5; - } else if (fish->vtail < -0.5) { - fish->vtail = -0.5; - } - segup = thrash * fish->vtail; - - P023[1] = iP023[1] + segup; - P024[1] = iP024[1] + segup; - P025[1] = iP025[1] + segup; - P026[1] = iP026[1] + segup; - P027[1] = iP027[1] + segup; - P028[1] = iP028[1] + segup; - P029[1] = iP029[1] + segup; - P030[1] = iP030[1] + segup; - P031[1] = iP031[1] + segup; - P032[1] = iP032[1] + segup; - P033[1] = iP033[1] + segup * 5.0; - P034[1] = iP034[1] + segup * 5.0; - P035[1] = iP035[1] + segup * 5.0; - P036[1] = iP036[1] + segup * 5.0; - P037[1] = iP037[1] + segup * 5.0; - P038[1] = iP038[1] + segup * 5.0; - P039[1] = iP039[1] + segup * 5.0; - P040[1] = iP040[1] + segup * 5.0; - P041[1] = iP041[1] + segup * 5.0; - P042[1] = iP042[1] + segup * 5.0; - P043[1] = iP043[1] + segup * 12.0; - P044[1] = iP044[1] + segup * 12.0; - P045[1] = iP045[1] + segup * 12.0; - P046[1] = iP046[1] + segup * 12.0; - P047[1] = iP047[1] + segup * 12.0; - P048[1] = iP048[1] + segup * 12.0; - P049[1] = iP049[1] + segup * 12.0; - P050[1] = iP050[1] + segup * 12.0; - P051[1] = iP051[1] + segup * 12.0; - P052[1] = iP052[1] + segup * 12.0; - P002[1] = iP002[1] + segup * 17.0; - P061[1] = iP061[1] + segup * 17.0; - P069[1] = iP069[1] + segup * 17.0; - P070[1] = iP070[1] + segup * 17.0; - - glPushMatrix(); - - glTranslatef(0.0, 0.0, -3000.0); - - glGetFloatv(GL_MODELVIEW_MATRIX, &mat[0][0]); - n = 0; - if (mat[0][2] >= 0.0) { - n += 1; - } - if (mat[1][2] >= 0.0) { - n += 2; - } - if (mat[2][2] >= 0.0) { - n += 4; - } - glScalef(2.0, 1.0, 1.0); - - glEnable(GL_CULL_FACE); - switch (n) { - case 0: - Fish_1(); - break; - case 1: - Fish_2(); - break; - case 2: - Fish_3(); - break; - case 3: - Fish_4(); - break; - case 4: - Fish_5(); - break; - case 5: - Fish_6(); - break; - case 6: - Fish_7(); - break; - case 7: - Fish_8(); - break; - } - glDisable(GL_CULL_FACE); - - glPopMatrix(); -} diff --git a/lib/glut-3.7.6/progs/demos/atlantis/swim.c b/lib/glut-3.7.6/progs/demos/atlantis/swim.c deleted file mode 100644 index 021bb0a6712ade3270694ec1bced86f65e32a995..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/swim.c +++ /dev/null @@ -1,188 +0,0 @@ -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include -#include /* For rand(). */ -#include -#include "atlantis.h" - -void -FishTransform(fishRec * fish) -{ - - glTranslatef(fish->y, fish->z, -fish->x); - glRotatef(-fish->psi, 0.0, 1.0, 0.0); - glRotatef(fish->theta, 1.0, 0.0, 0.0); - glRotatef(-fish->phi, 0.0, 0.0, 1.0); -} - -void -WhalePilot(fishRec * fish) -{ - - fish->phi = -20.0; - fish->theta = 0.0; - fish->psi -= 0.5; - - fish->x += WHALESPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD); - fish->y += WHALESPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD); - fish->z += WHALESPEED * fish->v * sin(fish->theta / RAD); -} - -void -SharkPilot(fishRec * fish) -{ - static int sign = 1; - float X, Y, Z, tpsi, ttheta, thetal; - - fish->xt = 60000.0; - fish->yt = 0.0; - fish->zt = 0.0; - - X = fish->xt - fish->x; - Y = fish->yt - fish->y; - Z = fish->zt - fish->z; - - thetal = fish->theta; - - ttheta = RAD * atan(Z / (sqrt(X * X + Y * Y))); - - if (ttheta > fish->theta + 0.25) { - fish->theta += 0.5; - } else if (ttheta < fish->theta - 0.25) { - fish->theta -= 0.5; - } - if (fish->theta > 90.0) { - fish->theta = 90.0; - } - if (fish->theta < -90.0) { - fish->theta = -90.0; - } - fish->dtheta = fish->theta - thetal; - - tpsi = RAD * atan2(Y, X); - - fish->attack = 0; - - if (fabs(tpsi - fish->psi) < 10.0) { - fish->attack = 1; - } else if (fabs(tpsi - fish->psi) < 45.0) { - if (fish->psi > tpsi) { - fish->psi -= 0.5; - if (fish->psi < -180.0) { - fish->psi += 360.0; - } - } else if (fish->psi < tpsi) { - fish->psi += 0.5; - if (fish->psi > 180.0) { - fish->psi -= 360.0; - } - } - } else { - if (rand() % 100 > 98) { - sign = 1 - sign; - } - fish->psi += sign; - if (fish->psi > 180.0) { - fish->psi -= 360.0; - } - if (fish->psi < -180.0) { - fish->psi += 360.0; - } - } - - if (fish->attack) { - if (fish->v < 1.1) { - fish->spurt = 1; - } - if (fish->spurt) { - fish->v += 0.2; - } - if (fish->v > 5.0) { - fish->spurt = 0; - } - if ((fish->v > 1.0) && (!fish->spurt)) { - fish->v -= 0.2; - } - } else { - if (!(rand() % 400) && (!fish->spurt)) { - fish->spurt = 1; - } - if (fish->spurt) { - fish->v += 0.05; - } - if (fish->v > 3.0) { - fish->spurt = 0; - } - if ((fish->v > 1.0) && (!fish->spurt)) { - fish->v -= 0.05; - } - } - - fish->x += SHARKSPEED * fish->v * cos(fish->psi / RAD) * cos(fish->theta / RAD); - fish->y += SHARKSPEED * fish->v * sin(fish->psi / RAD) * cos(fish->theta / RAD); - fish->z += SHARKSPEED * fish->v * sin(fish->theta / RAD); -} - -void -SharkMiss(int i) -{ - int j; - float avoid, thetal; - float X, Y, Z, R; - - for (j = 0; j < NUM_SHARKS; j++) { - if (j != i) { - X = sharks[j].x - sharks[i].x; - Y = sharks[j].y - sharks[i].y; - Z = sharks[j].z - sharks[i].z; - - R = sqrt(X * X + Y * Y + Z * Z); - - avoid = 1.0; - thetal = sharks[i].theta; - - if (R < SHARKSIZE) { - if (Z > 0.0) { - sharks[i].theta -= avoid; - } else { - sharks[i].theta += avoid; - } - } - sharks[i].dtheta += (sharks[i].theta - thetal); - } - } -} diff --git a/lib/glut-3.7.6/progs/demos/atlantis/whale.c b/lib/glut-3.7.6/progs/demos/atlantis/whale.c deleted file mode 100644 index b53e286c29be1e84b66566a94c4f6a13046fe2dc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/atlantis/whale.c +++ /dev/null @@ -1,1798 +0,0 @@ -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include -#include -#include "atlantis.h" -/* *INDENT-OFF* */ -static float N001[3] = {0.019249 ,0.011340 ,-0.999750}; -static float N002[3] = {-0.132579 ,0.954547 ,0.266952}; -static float N003[3] = {-0.196061 ,0.980392 ,-0.019778}; -static float N004[3] = {0.695461 ,0.604704 ,0.388158}; -static float N005[3] = {0.870600 ,0.425754 ,0.246557}; -static float N006[3] = {-0.881191 ,0.392012 ,0.264251}; -static float N008[3] = {-0.341437 ,0.887477 ,0.309523}; -static float N009[3] = {0.124035 ,-0.992278 ,0.000000}; -static float N010[3] = {0.242536 ,0.000000 ,-0.970143}; -static float N011[3] = {0.588172 ,0.000000 ,0.808736}; -static float N012[3] = {0.929824 ,-0.340623 ,-0.139298}; -static float N013[3] = {0.954183 ,0.267108 ,-0.134865}; -static float N014[3] = {0.495127 ,0.855436 ,-0.151914}; -static float N015[3] = {-0.390199 ,0.906569 ,-0.160867}; -static float N016[3] = {-0.923605 ,0.354581 ,-0.145692}; -static float N017[3] = {-0.955796 ,-0.260667 ,-0.136036}; -static float N018[3] = {-0.501283 ,-0.853462 ,-0.142540}; -static float N019[3] = {0.405300 ,-0.901974 ,-0.148913}; -static float N020[3] = {0.909913 ,-0.392746 ,-0.133451}; -static float N021[3] = {0.936494 ,0.331147 ,-0.115414}; -static float N022[3] = {0.600131 ,0.793724 ,-0.099222}; -static float N023[3] = {-0.231556 ,0.968361 ,-0.093053}; -static float N024[3] = {-0.844369 ,0.525330 ,-0.105211}; -static float N025[3] = {-0.982725 ,-0.136329 ,-0.125164}; -static float N026[3] = {-0.560844 ,-0.822654 ,-0.093241}; -static float N027[3] = {0.263884 ,-0.959981 ,-0.093817}; -static float N028[3] = {0.842057 ,-0.525192 ,-0.122938}; -static float N029[3] = {0.921620 ,0.367565 ,-0.124546}; -static float N030[3] = {0.613927 ,0.784109 ,-0.090918}; -static float N031[3] = {-0.448754 ,0.888261 ,-0.098037}; -static float N032[3] = {-0.891865 ,0.434376 ,-0.126077}; -static float N033[3] = {-0.881447 ,-0.448017 ,-0.149437}; -static float N034[3] = {-0.345647 ,-0.922057 ,-0.174183}; -static float N035[3] = {0.307998 ,-0.941371 ,-0.137688}; -static float N036[3] = {0.806316 ,-0.574647 ,-0.140124}; -static float N037[3] = {0.961346 ,0.233646 ,-0.145681}; -static float N038[3] = {0.488451 ,0.865586 ,-0.110351}; -static float N039[3] = {-0.374290 ,0.921953 ,-0.099553}; -static float N040[3] = {-0.928504 ,0.344533 ,-0.138485}; -static float N041[3] = {-0.918419 ,-0.371792 ,-0.135189}; -static float N042[3] = {-0.520666 ,-0.833704 ,-0.183968}; -static float N043[3] = {0.339204 ,-0.920273 ,-0.195036}; -static float N044[3] = {0.921475 ,-0.387382 ,-0.028636}; -static float N045[3] = {0.842465 ,0.533335 ,-0.076204}; -static float N046[3] = {0.380110 ,0.924939 ,0.002073}; -static float N047[3] = {-0.276128 ,0.961073 ,-0.009579}; -static float N048[3] = {-0.879684 ,0.473001 ,-0.049250}; -static float N049[3] = {-0.947184 ,-0.317614 ,-0.044321}; -static float N050[3] = {-0.642059 ,-0.764933 ,-0.051363}; -static float N051[3] = {0.466794 ,-0.880921 ,-0.077990}; -static float N052[3] = {0.898509 ,-0.432277 ,0.076279}; -static float N053[3] = {0.938985 ,0.328141 ,0.103109}; -static float N054[3] = {0.442420 ,0.895745 ,0.043647}; -static float N055[3] = {-0.255163 ,0.966723 ,0.018407}; -static float N056[3] = {-0.833769 ,0.540650 ,0.111924}; -static float N057[3] = {-0.953653 ,-0.289939 ,0.080507}; -static float N058[3] = {-0.672357 ,-0.730524 ,0.119461}; -static float N059[3] = {0.522249 ,-0.846652 ,0.102157}; -static float N060[3] = {0.885868 ,-0.427631 ,0.179914}; -static float N062[3] = {0.648942 ,0.743116 ,0.163255}; -static float N063[3] = {-0.578967 ,0.807730 ,0.111219}; -static float N065[3] = {-0.909864 ,-0.352202 ,0.219321}; -static float N066[3] = {-0.502541 ,-0.818090 ,0.279610}; -static float N067[3] = {0.322919 ,-0.915358 ,0.240504}; -static float N068[3] = {0.242536 ,0.000000 ,-0.970143}; -static float N069[3] = {0.000000 ,1.000000 ,0.000000}; -static float N070[3] = {0.000000 ,1.000000 ,0.000000}; -static float N071[3] = {0.000000 ,1.000000 ,0.000000}; -static float N072[3] = {0.000000 ,1.000000 ,0.000000}; -static float N073[3] = {0.000000 ,1.000000 ,0.000000}; -static float N074[3] = {0.000000 ,1.000000 ,0.000000}; -static float N075[3] = {0.031220 ,0.999025 ,-0.031220}; -static float N076[3] = {0.000000 ,1.000000 ,0.000000}; -static float N077[3] = {0.446821 ,0.893642 ,0.041889}; -static float N078[3] = {0.863035 ,-0.100980 ,0.494949}; -static float N079[3] = {0.585597 ,-0.808215 ,0.062174}; -static float N080[3] = {0.000000 ,1.000000 ,0.000000}; -static float N081[3] = {1.000000 ,0.000000 ,0.000000}; -static float N082[3] = {0.000000 ,1.000000 ,0.000000}; -static float N083[3] = {-1.000000 ,0.000000 ,0.000000}; -static float N084[3] = {-0.478893 ,0.837129 ,-0.264343}; -static float N085[3] = {0.000000 ,1.000000 ,0.000000}; -static float N086[3] = {0.763909 ,0.539455 ,-0.354163}; -static float N087[3] = {0.446821 ,0.893642 ,0.041889}; -static float N088[3] = {0.385134 ,-0.908288 ,0.163352}; -static float N089[3] = {-0.605952 ,0.779253 ,-0.159961}; -static float N090[3] = {0.000000 ,1.000000 ,0.000000}; -static float N091[3] = {0.000000 ,1.000000 ,0.000000}; -static float N092[3] = {0.000000 ,1.000000 ,0.000000}; -static float N093[3] = {0.000000 ,1.000000 ,0.000000}; -static float N094[3] = {1.000000 ,0.000000 ,0.000000}; -static float N095[3] = {-1.000000 ,0.000000 ,0.000000}; -static float N096[3] = {0.644444 ,-0.621516 ,0.445433}; -static float N097[3] = {-0.760896 ,-0.474416 ,0.442681}; -static float N098[3] = {0.636888 ,-0.464314 ,0.615456}; -static float N099[3] = {-0.710295 ,0.647038 ,0.277168}; -static float N100[3] = {0.009604 ,0.993655 ,0.112063}; -static float iP001[3] = {18.74, 13.19, 3.76}; -static float P001[3] = {18.74, 13.19, 3.76}; -static float P002[3] = {0.00, 390.42, 10292.57}; -static float P003[3] = {55.80, 622.31, 8254.35}; -static float P004[3] = {20.80, 247.66, 10652.13}; -static float P005[3] = {487.51, 198.05, 9350.78}; -static float P006[3] = {-457.61, 199.04, 9353.01}; -static float P008[3] = {-34.67, 247.64, 10663.71}; -static float iP009[3] = {97.46, 67.63, 593.82}; -static float iP010[3] = {-84.33, 67.63, 588.18}; -static float iP011[3] = {118.69, 8.98, -66.91}; -static float P009[3] = {97.46, 67.63, 593.82}; -static float P010[3] = {-84.33, 67.63, 588.18}; -static float P011[3] = {118.69, 8.98, -66.91}; -static float iP012[3] = {156.48, -31.95, 924.54}; -static float iP013[3] = {162.00, 110.22, 924.54}; -static float iP014[3] = {88.16, 221.65, 924.54}; -static float iP015[3] = {-65.21, 231.16, 924.54}; -static float iP016[3] = {-156.48, 121.97, 924.54}; -static float iP017[3] = {-162.00, -23.93, 924.54}; -static float iP018[3] = {-88.16, -139.10, 924.54}; -static float iP019[3] = {65.21, -148.61, 924.54}; -static float iP020[3] = {246.87, -98.73, 1783.04}; -static float iP021[3] = {253.17, 127.76, 1783.04}; -static float iP022[3] = {132.34, 270.77, 1783.04}; -static float iP023[3] = {-97.88, 285.04, 1783.04}; -static float iP024[3] = {-222.97, 139.80, 1783.04}; -static float iP025[3] = {-225.29, -86.68, 1783.04}; -static float iP026[3] = {-108.44, -224.15, 1783.04}; -static float iP027[3] = {97.88, -221.56, 1783.04}; -static float iP028[3] = {410.55, -200.66, 3213.87}; -static float iP029[3] = {432.19, 148.42, 3213.87}; -static float iP030[3] = {200.66, 410.55, 3213.87}; -static float iP031[3] = {-148.42, 432.19, 3213.87}; -static float iP032[3] = {-407.48, 171.88, 3213.87}; -static float iP033[3] = {-432.19, -148.42, 3213.87}; -static float iP034[3] = {-148.88, -309.74, 3213.87}; -static float iP035[3] = {156.38, -320.17, 3213.87}; -static float iP036[3] = {523.39, -303.81, 4424.57}; -static float iP037[3] = {574.66, 276.84, 4424.57}; -static float iP038[3] = {243.05, 492.50, 4424.57}; -static float iP039[3] = {-191.23, 520.13, 4424.57}; -static float iP040[3] = {-523.39, 304.01, 4424.57}; -static float iP041[3] = {-574.66, -231.83, 4424.57}; -static float iP042[3] = {-266.95, -578.17, 4424.57}; -static float iP043[3] = {211.14, -579.67, 4424.57}; -static float iP044[3] = {680.57, -370.27, 5943.46}; -static float iP045[3] = {834.01, 363.09, 5943.46}; -static float iP046[3] = {371.29, 614.13, 5943.46}; -static float iP047[3] = {-291.43, 621.86, 5943.46}; -static float iP048[3] = {-784.13, 362.60, 5943.46}; -static float iP049[3] = {-743.29, -325.82, 5943.46}; -static float iP050[3] = {-383.24, -804.77, 5943.46}; -static float iP051[3] = {283.47, -846.09, 5943.46}; -static float P012[3] = {156.48, -31.95, 924.54}; -static float P013[3] = {162.00, 110.22, 924.54}; -static float P014[3] = {88.16, 221.65, 924.54}; -static float P015[3] = {-65.21, 231.16, 924.54}; -static float P016[3] = {-156.48, 121.97, 924.54}; -static float P017[3] = {-162.00, -23.93, 924.54}; -static float P018[3] = {-88.16, -139.10, 924.54}; -static float P019[3] = {65.21, -148.61, 924.54}; -static float P020[3] = {246.87, -98.73, 1783.04}; -static float P021[3] = {253.17, 127.76, 1783.04}; -static float P022[3] = {132.34, 270.77, 1783.04}; -static float P023[3] = {-97.88, 285.04, 1783.04}; -static float P024[3] = {-222.97, 139.80, 1783.04}; -static float P025[3] = {-225.29, -86.68, 1783.04}; -static float P026[3] = {-108.44, -224.15, 1783.04}; -static float P027[3] = {97.88, -221.56, 1783.04}; -static float P028[3] = {410.55, -200.66, 3213.87}; -static float P029[3] = {432.19, 148.42, 3213.87}; -static float P030[3] = {200.66, 410.55, 3213.87}; -static float P031[3] = {-148.42, 432.19, 3213.87}; -static float P032[3] = {-407.48, 171.88, 3213.87}; -static float P033[3] = {-432.19, -148.42, 3213.87}; -static float P034[3] = {-148.88, -309.74, 3213.87}; -static float P035[3] = {156.38, -320.17, 3213.87}; -static float P036[3] = {523.39, -303.81, 4424.57}; -static float P037[3] = {574.66, 276.84, 4424.57}; -static float P038[3] = {243.05, 492.50, 4424.57}; -static float P039[3] = {-191.23, 520.13, 4424.57}; -static float P040[3] = {-523.39, 304.01, 4424.57}; -static float P041[3] = {-574.66, -231.83, 4424.57}; -static float P042[3] = {-266.95, -578.17, 4424.57}; -static float P043[3] = {211.14, -579.67, 4424.57}; -static float P044[3] = {680.57, -370.27, 5943.46}; -static float P045[3] = {834.01, 363.09, 5943.46}; -static float P046[3] = {371.29, 614.13, 5943.46}; -static float P047[3] = {-291.43, 621.86, 5943.46}; -static float P048[3] = {-784.13, 362.60, 5943.46}; -static float P049[3] = {-743.29, -325.82, 5943.46}; -static float P050[3] = {-383.24, -804.77, 5943.46}; -static float P051[3] = {283.47, -846.09, 5943.46}; -static float P052[3] = {599.09, -332.24, 7902.59}; -static float P053[3] = {735.48, 306.26, 7911.92}; -static float P054[3] = {321.55, 558.53, 7902.59}; -static float P055[3] = {-260.54, 559.84, 7902.59}; -static float P056[3] = {-698.66, 320.83, 7902.59}; -static float P057[3] = {-643.29, -299.16, 7902.59}; -static float P058[3] = {-341.47, -719.30, 7902.59}; -static float P059[3] = {252.57, -756.12, 7902.59}; -static float P060[3] = {458.39, -265.31, 9355.44}; -static float P062[3] = {224.04, 438.98, 9364.77}; -static float P063[3] = {-165.71, 441.27, 9355.44}; -static float P065[3] = {-473.99, -219.71, 9355.44}; -static float P066[3] = {-211.97, -479.87, 9355.44}; -static float P067[3] = {192.86, -504.03, 9355.44}; -static float iP068[3] = {-112.44, 9.25, -64.42}; -static float iP069[3] = {1155.63, 0.00, -182.46}; -static float iP070[3] = {-1143.13, 0.00, -181.54}; -static float iP071[3] = {1424.23, 0.00, -322.09}; -static float iP072[3] = {-1368.01, 0.00, -310.38}; -static float iP073[3] = {1255.57, 2.31, 114.05}; -static float iP074[3] = {-1149.38, 0.00, 117.12}; -static float iP075[3] = {718.36, 0.00, 433.36}; -static float iP076[3] = {-655.90, 0.00, 433.36}; -static float P068[3] = {-112.44, 9.25, -64.42}; -static float P069[3] = {1155.63, 0.00, -182.46}; -static float P070[3] = {-1143.13, 0.00, -181.54}; -static float P071[3] = {1424.23, 0.00, -322.09}; -static float P072[3] = {-1368.01, 0.00, -310.38}; -static float P073[3] = {1255.57, 2.31, 114.05}; -static float P074[3] = {-1149.38, 0.00, 117.12}; -static float P075[3] = {718.36, 0.00, 433.36}; -static float P076[3] = {-655.90, 0.00, 433.36}; -static float P077[3] = {1058.00, -2.66, 7923.51}; -static float P078[3] = {-1016.51, -15.47, 7902.87}; -static float P079[3] = {-1363.99, -484.50, 7593.38}; -static float P080[3] = {1478.09, -861.47, 7098.12}; -static float P081[3] = {1338.06, -284.68, 7024.15}; -static float P082[3] = {-1545.51, -860.64, 7106.60}; -static float P083[3] = {1063.19, -70.46, 7466.60}; -static float P084[3] = {-1369.18, -288.11, 7015.34}; -static float P085[3] = {1348.44, -482.50, 7591.41}; -static float P086[3] = {-1015.45, -96.80, 7474.86}; -static float P087[3] = {731.04, 148.38, 7682.58}; -static float P088[3] = {-697.03, 151.82, 7668.81}; -static float P089[3] = {-686.82, 157.09, 7922.29}; -static float P090[3] = {724.73, 147.75, 7931.39}; -static float iP091[3] = {0.00, 327.10, 2346.55}; -static float iP092[3] = {0.00, 552.28, 2311.31}; -static float iP093[3] = {0.00, 721.16, 2166.41}; -static float iP094[3] = {0.00, 693.42, 2388.80}; -static float iP095[3] = {0.00, 389.44, 2859.97}; -static float P091[3] = {0.00, 327.10, 2346.55}; -static float P092[3] = {0.00, 552.28, 2311.31}; -static float P093[3] = {0.00, 721.16, 2166.41}; -static float P094[3] = {0.00, 693.42, 2388.80}; -static float P095[3] = {0.00, 389.44, 2859.97}; -static float iP096[3] = {222.02, -183.67, 10266.89}; -static float iP097[3] = {-128.90, -182.70, 10266.89}; -static float iP098[3] = {41.04, 88.31, 10659.36}; -static float iP099[3] = {-48.73, 88.30, 10659.36}; -static float P096[3] = {222.02, -183.67, 10266.89}; -static float P097[3] = {-128.90, -182.70, 10266.89}; -static float P098[3] = {41.04, 88.31, 10659.36}; -static float P099[3] = {-48.73, 88.30, 10659.36}; -static float P100[3] = {0.00, 603.42, 9340.68}; -static float P104[3] = {-9.86, 567.62, 7858.65}; -static float P105[3] = {31.96, 565.27, 7908.46}; -static float P106[3] = {22.75, 568.13, 7782.83}; -static float P107[3] = {58.93, 568.42, 7775.94}; -static float P108[3] = {55.91, 565.59, 7905.86}; -static float P109[3] = {99.21, 566.00, 7858.65}; -static float P110[3] = {-498.83, 148.14, 9135.10}; -static float P111[3] = {-495.46, 133.24, 9158.48}; -static float P112[3] = {-490.82, 146.23, 9182.76}; -static float P113[3] = {-489.55, 174.11, 9183.66}; -static float P114[3] = {-492.92, 189.00, 9160.28}; -static float P115[3] = {-497.56, 176.02, 9136.00}; -static float P116[3] = {526.54, 169.68, 9137.70}; -static float P117[3] = {523.49, 184.85, 9161.42}; -static float P118[3] = {518.56, 171.78, 9186.06}; -static float P119[3] = {516.68, 143.53, 9186.98}; -static float P120[3] = {519.73, 128.36, 9163.26}; -static float P121[3] = {524.66, 141.43, 9138.62}; -/* *INDENT-ON* */ - -void -Whale001(void) -{ - - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N068); - glVertex3fv(P068); - glNormal3fv(N010); - glVertex3fv(P010); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N068); - glVertex3fv(P068); - glNormal3fv(N076); - glVertex3fv(P076); - glNormal3fv(N010); - glVertex3fv(P010); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N068); - glVertex3fv(P068); - glNormal3fv(N070); - glVertex3fv(P070); - glNormal3fv(N076); - glVertex3fv(P076); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N076); - glVertex3fv(P076); - glNormal3fv(N070); - glVertex3fv(P070); - glNormal3fv(N074); - glVertex3fv(P074); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N070); - glVertex3fv(P070); - glNormal3fv(N072); - glVertex3fv(P072); - glNormal3fv(N074); - glVertex3fv(P074); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N072); - glVertex3fv(P072); - glNormal3fv(N070); - glVertex3fv(P070); - glNormal3fv(N074); - glVertex3fv(P074); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N074); - glVertex3fv(P074); - glNormal3fv(N070); - glVertex3fv(P070); - glNormal3fv(N076); - glVertex3fv(P076); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N070); - glVertex3fv(P070); - glNormal3fv(N068); - glVertex3fv(P068); - glNormal3fv(N076); - glVertex3fv(P076); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N076); - glVertex3fv(P076); - glNormal3fv(N068); - glVertex3fv(P068); - glNormal3fv(N010); - glVertex3fv(P010); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N068); - glVertex3fv(P068); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N010); - glVertex3fv(P010); - glEnd(); -} - -void -Whale002(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N009); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N075); - glVertex3fv(P075); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N009); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N069); - glVertex3fv(P069); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N075); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N069); - glVertex3fv(P069); - glNormal3fv(N075); - glVertex3fv(P075); - glNormal3fv(N073); - glVertex3fv(P073); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N071); - glVertex3fv(P071); - glNormal3fv(N069); - glVertex3fv(P069); - glNormal3fv(N073); - glVertex3fv(P073); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N009); - glVertex3fv(P009); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N009); - glVertex3fv(P009); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N075); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N011); - glVertex3fv(P011); - glNormal3fv(N069); - glVertex3fv(P069); - glNormal3fv(N075); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N069); - glVertex3fv(P069); - glNormal3fv(N073); - glVertex3fv(P073); - glNormal3fv(N075); - glVertex3fv(P075); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N069); - glVertex3fv(P069); - glNormal3fv(N071); - glVertex3fv(P071); - glNormal3fv(N073); - glVertex3fv(P073); - glEnd(); -} - -void -Whale003(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N019); - glVertex3fv(P019); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N012); - glVertex3fv(P012); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N018); - glVertex3fv(P018); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N016); - glVertex3fv(P016); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N012); - glVertex3fv(P012); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N015); - glVertex3fv(P015); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N013); - glVertex3fv(P013); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N001); - glVertex3fv(P001); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N014); - glVertex3fv(P014); - glEnd(); -} - -void -Whale004(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N022); - glVertex3fv(P022); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N015); - glVertex3fv(P015); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N023); - glVertex3fv(P023); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N016); - glVertex3fv(P016); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N024); - glVertex3fv(P024); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N017); - glVertex3fv(P017); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N025); - glVertex3fv(P025); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N014); - glVertex3fv(P014); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N021); - glVertex3fv(P021); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N013); - glVertex3fv(P013); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N020); - glVertex3fv(P020); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N018); - glVertex3fv(P018); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N026); - glVertex3fv(P026); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N019); - glVertex3fv(P019); - glNormal3fv(N012); - glVertex3fv(P012); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N027); - glVertex3fv(P027); - glEnd(); -} - -void -Whale005(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N030); - glVertex3fv(P030); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N022); - glVertex3fv(P022); - glNormal3fv(N030); - glVertex3fv(P030); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N023); - glVertex3fv(P023); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N031); - glVertex3fv(P031); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N031); - glVertex3fv(P031); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N024); - glVertex3fv(P024); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N032); - glVertex3fv(P032); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N021); - glVertex3fv(P021); - glNormal3fv(N029); - glVertex3fv(P029); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N028); - glVertex3fv(P028); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N020); - glVertex3fv(P020); - glNormal3fv(N028); - glVertex3fv(P028); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N035); - glVertex3fv(P035); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N025); - glVertex3fv(P025); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N033); - glVertex3fv(P033); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N034); - glVertex3fv(P034); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N026); - glVertex3fv(P026); - glNormal3fv(N027); - glVertex3fv(P027); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N034); - glVertex3fv(P034); - glEnd(); -} - -void -Whale006(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N093); - glVertex3fv(P093); - glNormal3fv(N094); - glVertex3fv(P094); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N093); - glVertex3fv(P093); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N094); - glVertex3fv(P094); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N091); - glVertex3fv(P091); - glNormal3fv(N095); - glVertex3fv(P095); - glNormal3fv(N094); - glVertex3fv(P094); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N091); - glVertex3fv(P091); - glNormal3fv(N092); - glVertex3fv(P092); - glNormal3fv(N094); - glVertex3fv(P094); - glNormal3fv(N095); - glVertex3fv(P095); - glEnd(); -} - -void -Whale007(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N038); - glVertex3fv(P038); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N030); - glVertex3fv(P030); - glNormal3fv(N038); - glVertex3fv(P038); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N037); - glVertex3fv(P037); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N029); - glVertex3fv(P029); - glNormal3fv(N037); - glVertex3fv(P037); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N036); - glVertex3fv(P036); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N028); - glVertex3fv(P028); - glNormal3fv(N036); - glVertex3fv(P036); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N043); - glVertex3fv(P043); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N034); - glVertex3fv(P034); - glNormal3fv(N035); - glVertex3fv(P035); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N042); - glVertex3fv(P042); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N034); - glVertex3fv(P034); - glNormal3fv(N042); - glVertex3fv(P042); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N041); - glVertex3fv(P041); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N031); - glVertex3fv(P031); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N039); - glVertex3fv(P039); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N040); - glVertex3fv(P040); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N032); - glVertex3fv(P032); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N040); - glVertex3fv(P040); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N033); - glVertex3fv(P033); - glNormal3fv(N041); - glVertex3fv(P041); - glEnd(); -} - -void -Whale008(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N050); - glVertex3fv(P050); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N043); - glVertex3fv(P043); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N051); - glVertex3fv(P051); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N044); - glVertex3fv(P044); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N042); - glVertex3fv(P042); - glNormal3fv(N050); - glVertex3fv(P050); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N049); - glVertex3fv(P049); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N036); - glVertex3fv(P036); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N044); - glVertex3fv(P044); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N041); - glVertex3fv(P041); - glNormal3fv(N049); - glVertex3fv(P049); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N048); - glVertex3fv(P048); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N040); - glVertex3fv(P040); - glNormal3fv(N048); - glVertex3fv(P048); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N047); - glVertex3fv(P047); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N037); - glVertex3fv(P037); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N045); - glVertex3fv(P045); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N038); - glVertex3fv(P038); - glNormal3fv(N039); - glVertex3fv(P039); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N046); - glVertex3fv(P046); - glEnd(); -} - -void -Whale009(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N058); - glVertex3fv(P058); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N051); - glVertex3fv(P051); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N059); - glVertex3fv(P059); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N052); - glVertex3fv(P052); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N045); - glVertex3fv(P045); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N044); - glVertex3fv(P044); - glNormal3fv(N053); - glVertex3fv(P053); - glNormal3fv(N052); - glVertex3fv(P052); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N050); - glVertex3fv(P050); - glNormal3fv(N058); - glVertex3fv(P058); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N057); - glVertex3fv(P057); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N049); - glVertex3fv(P049); - glNormal3fv(N057); - glVertex3fv(P057); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N057); - glVertex3fv(P057); - glNormal3fv(N056); - glVertex3fv(P056); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N048); - glVertex3fv(P048); - glNormal3fv(N056); - glVertex3fv(P056); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N055); - glVertex3fv(P055); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N045); - glVertex3fv(P045); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N046); - glVertex3fv(P046); - glNormal3fv(N047); - glVertex3fv(P047); - glNormal3fv(N055); - glVertex3fv(P055); - glNormal3fv(N054); - glVertex3fv(P054); - glEnd(); -} - -void -Whale010(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N080); - glVertex3fv(P080); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N085); - glVertex3fv(P085); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N077); - glVertex3fv(P077); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N090); - glVertex3fv(P090); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N080); - glVertex3fv(P080); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N081); - glVertex3fv(P081); - glNormal3fv(N085); - glVertex3fv(P085); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N085); - glVertex3fv(P085); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N083); - glVertex3fv(P083); - glNormal3fv(N077); - glVertex3fv(P077); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N087); - glVertex3fv(P087); - glNormal3fv(N077); - glVertex3fv(P077); - glNormal3fv(N090); - glVertex3fv(P090); - glEnd(); -} - -void -Whale011(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N082); - glVertex3fv(P082); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N079); - glVertex3fv(P079); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N088); - glVertex3fv(P088); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N078); - glVertex3fv(P078); - glNormal3fv(N088); - glVertex3fv(P088); - glNormal3fv(N089); - glVertex3fv(P089); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N088); - glVertex3fv(P088); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N089); - glVertex3fv(P089); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N089); - glVertex3fv(P089); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N086); - glVertex3fv(P086); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N078); - glVertex3fv(P078); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N078); - glVertex3fv(P078); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N084); - glVertex3fv(P084); - glNormal3fv(N082); - glVertex3fv(P082); - glNormal3fv(N079); - glVertex3fv(P079); - glEnd(); -} - -void -Whale012(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N067); - glVertex3fv(P067); - glNormal3fv(N066); - glVertex3fv(P066); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N052); - glVertex3fv(P052); - glNormal3fv(N060); - glVertex3fv(P060); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N059); - glVertex3fv(P059); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N067); - glVertex3fv(P067); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N065); - glVertex3fv(P065); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N058); - glVertex3fv(P058); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N057); - glVertex3fv(P057); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N057); - glVertex3fv(P057); - glNormal3fv(N065); - glVertex3fv(P065); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N006); - glVertex3fv(P006); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N063); - glVertex3fv(P063); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N056); - glVertex3fv(P056); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N055); - glVertex3fv(P055); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N005); - glVertex3fv(P005); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N053); - glVertex3fv(P053); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N053); - glVertex3fv(P053); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N060); - glVertex3fv(P060); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N053); - glVertex3fv(P053); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N052); - glVertex3fv(P052); - glEnd(); -} - -void -Whale013(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N067); - glVertex3fv(P067); - glNormal3fv(N096); - glVertex3fv(P096); - glNormal3fv(N097); - glVertex3fv(P097); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N097); - glVertex3fv(P097); - glNormal3fv(N096); - glVertex3fv(P096); - glNormal3fv(N098); - glVertex3fv(P098); - glNormal3fv(N099); - glVertex3fv(P099); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N066); - glVertex3fv(P066); - glNormal3fv(N097); - glVertex3fv(P097); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N067); - glVertex3fv(P067); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N096); - glVertex3fv(P096); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N060); - glVertex3fv(P060); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N096); - glVertex3fv(P096); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N096); - glVertex3fv(P096); - glNormal3fv(N005); - glVertex3fv(P005); - glNormal3fv(N098); - glVertex3fv(P098); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N065); - glVertex3fv(P065); - glNormal3fv(N097); - glVertex3fv(P097); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N097); - glVertex3fv(P097); - glNormal3fv(N099); - glVertex3fv(P099); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P005); - glVertex3fv(P006); - glVertex3fv(P099); - glVertex3fv(P098); - glEnd(); -} - -void -Whale014(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N004); - glVertex3fv(P004); - glNormal3fv(N005); - glVertex3fv(P005); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P006); - glVertex3fv(P005); - glVertex3fv(P004); - glVertex3fv(P008); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N006); - glVertex3fv(P006); - glNormal3fv(N008); - glVertex3fv(P008); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N008); - glVertex3fv(P008); - glNormal3fv(N004); - glVertex3fv(P004); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N062); - glVertex3fv(P062); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N004); - glVertex3fv(P004); - glEnd(); -} - -void -Whale015(void) -{ - glBegin(GL_POLYGON); - glNormal3fv(N055); - glVertex3fv(P055); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N054); - glVertex3fv(P054); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N055); - glVertex3fv(P055); - glNormal3fv(N063); - glVertex3fv(P063); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N100); - glVertex3fv(P100); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N003); - glVertex3fv(P003); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N054); - glVertex3fv(P054); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N054); - glVertex3fv(P054); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N062); - glVertex3fv(P062); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N063); - glVertex3fv(P063); - glNormal3fv(N002); - glVertex3fv(P002); - glEnd(); - glBegin(GL_POLYGON); - glNormal3fv(N100); - glVertex3fv(P100); - glNormal3fv(N002); - glVertex3fv(P002); - glNormal3fv(N062); - glVertex3fv(P062); - glEnd(); -} - -void -Whale016(void) -{ - glBegin(GL_POLYGON); - glVertex3fv(P104); - glVertex3fv(P105); - glVertex3fv(P106); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P107); - glVertex3fv(P108); - glVertex3fv(P109); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P110); - glVertex3fv(P111); - glVertex3fv(P112); - glVertex3fv(P113); - glVertex3fv(P114); - glVertex3fv(P115); - glEnd(); - glBegin(GL_POLYGON); - glVertex3fv(P116); - glVertex3fv(P117); - glVertex3fv(P118); - glVertex3fv(P119); - glVertex3fv(P120); - glVertex3fv(P121); - glEnd(); -} - -void -DrawWhale(fishRec * fish) -{ - float seg0, seg1, seg2, seg3, seg4, seg5, seg6, seg7; - float pitch, thrash, chomp; - - fish->htail = (int) (fish->htail - (int) (5.0 * fish->v)) % 360; - - thrash = 70.0 * fish->v; - - seg0 = 1.5 * thrash * sin((fish->htail) * RRAD); - seg1 = 2.5 * thrash * sin((fish->htail + 10.0) * RRAD); - seg2 = 3.7 * thrash * sin((fish->htail + 15.0) * RRAD); - seg3 = 4.8 * thrash * sin((fish->htail + 23.0) * RRAD); - seg4 = 6.0 * thrash * sin((fish->htail + 28.0) * RRAD); - seg5 = 6.5 * thrash * sin((fish->htail + 35.0) * RRAD); - seg6 = 6.5 * thrash * sin((fish->htail + 40.0) * RRAD); - seg7 = 6.5 * thrash * sin((fish->htail + 55.0) * RRAD); - - pitch = fish->v * sin((fish->htail - 160.0) * RRAD); - - chomp = 0.0; - if (fish->v > 2.0) { - chomp = -(fish->v - 2.0) * 200.0; - } - P012[1] = iP012[1] + seg5; - P013[1] = iP013[1] + seg5; - P014[1] = iP014[1] + seg5; - P015[1] = iP015[1] + seg5; - P016[1] = iP016[1] + seg5; - P017[1] = iP017[1] + seg5; - P018[1] = iP018[1] + seg5; - P019[1] = iP019[1] + seg5; - - P020[1] = iP020[1] + seg4; - P021[1] = iP021[1] + seg4; - P022[1] = iP022[1] + seg4; - P023[1] = iP023[1] + seg4; - P024[1] = iP024[1] + seg4; - P025[1] = iP025[1] + seg4; - P026[1] = iP026[1] + seg4; - P027[1] = iP027[1] + seg4; - - P028[1] = iP028[1] + seg2; - P029[1] = iP029[1] + seg2; - P030[1] = iP030[1] + seg2; - P031[1] = iP031[1] + seg2; - P032[1] = iP032[1] + seg2; - P033[1] = iP033[1] + seg2; - P034[1] = iP034[1] + seg2; - P035[1] = iP035[1] + seg2; - - P036[1] = iP036[1] + seg1; - P037[1] = iP037[1] + seg1; - P038[1] = iP038[1] + seg1; - P039[1] = iP039[1] + seg1; - P040[1] = iP040[1] + seg1; - P041[1] = iP041[1] + seg1; - P042[1] = iP042[1] + seg1; - P043[1] = iP043[1] + seg1; - - P044[1] = iP044[1] + seg0; - P045[1] = iP045[1] + seg0; - P046[1] = iP046[1] + seg0; - P047[1] = iP047[1] + seg0; - P048[1] = iP048[1] + seg0; - P049[1] = iP049[1] + seg0; - P050[1] = iP050[1] + seg0; - P051[1] = iP051[1] + seg0; - - P009[1] = iP009[1] + seg6; - P010[1] = iP010[1] + seg6; - P075[1] = iP075[1] + seg6; - P076[1] = iP076[1] + seg6; - - P001[1] = iP001[1] + seg7; - P011[1] = iP011[1] + seg7; - P068[1] = iP068[1] + seg7; - P069[1] = iP069[1] + seg7; - P070[1] = iP070[1] + seg7; - P071[1] = iP071[1] + seg7; - P072[1] = iP072[1] + seg7; - P073[1] = iP073[1] + seg7; - P074[1] = iP074[1] + seg7; - - P091[1] = iP091[1] + seg3 * 1.1; - P092[1] = iP092[1] + seg3; - P093[1] = iP093[1] + seg3; - P094[1] = iP094[1] + seg3; - P095[1] = iP095[1] + seg3 * 0.9; - - P099[1] = iP099[1] + chomp; - P098[1] = iP098[1] + chomp; - P097[1] = iP097[1] + chomp; - P096[1] = iP096[1] + chomp; - - glPushMatrix(); - - glRotatef(pitch, 1.0, 0.0, 0.0); - - glTranslatef(0.0, 0.0, 8000.0); - - glRotatef(180.0, 0.0, 1.0, 0.0); - - glScalef(3.0, 3.0, 3.0); - - glEnable(GL_CULL_FACE); - - Whale001(); - Whale002(); - Whale003(); - Whale004(); - Whale005(); - Whale006(); - Whale007(); - Whale008(); - Whale009(); - Whale010(); - Whale011(); - Whale012(); - Whale013(); - Whale014(); - Whale015(); - Whale016(); - - glDisable(GL_CULL_FACE); - - glPopMatrix(); -} diff --git a/lib/glut-3.7.6/progs/demos/bluepony/Imakefile b/lib/glut-3.7.6/progs/demos/bluepony/Imakefile deleted file mode 100644 index 51c04fa63971188b4bea52006cd1a34fa50deb3a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bluepony/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = bluepony - -SRCS = bluepony.c readtex.c - -OBJS = bluepony.o readtex.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(bluepony,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/bluepony/bluepony.c b/lib/glut-3.7.6/progs/demos/bluepony/bluepony.c deleted file mode 100644 index 6c692e8a8e42abd7630c5ecc48aacdfd985b0789..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bluepony/bluepony.c +++ /dev/null @@ -1,507 +0,0 @@ -/* pony.c */ - -/* - * By Brian Paul, written July 31, 1997 for Mark. - */ - -#include -#include -#include -#include -#include -#include "readtex.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/************************ Pony-specific code *********************************/ - -static float BodyDepth = 0.216; - -static GLfloat BodyVerts[][2] = -{ - {-0.993334, 0.344444}, - {-0.72, 0.462964}, - {-0.58, -0.411113}, - {-0.406667, -0.692593}, - {0.733334, -0.633334}, - {0.846666, -0.225926}, - {0.873335, -0.55926}, - {0.879998, -0.988888}, - {0.933332, -0.974074}, - {0.953334, -0.537037}, - {0.906667, -0.0777776}, - {0.806666, 0.0333334}, - {-0.26, 0.0111111}, - {-0.406667, 0.27037}, - {-0.54, 0.781481}, - {-0.673333, 1.00371}, - {-0.653332, 0.803704}, - {-1.05333, 0.44815} -}; - -static float LegDepth = 0.144; - -static float FrontLegPos[3] = -{-0.36, -0.324, 0.108}; -static GLfloat FrontLegVerts[][2] = -{ - {-0.23, -0.113481}, - {-0.123333, -0.528296}, - {-0.0926752, -0.728103}, - {-0.0766667, -1.232}, - {0.0233333, -1.232}, - {0.0433332, -0.743111}, - {0.0366667, -0.424593}, - {0.0699998, -0.157926}, - {0.116667, 0.049482}, - {-0.0166667, 0.197629}, - {-0.196667, 0.13837} -}; - -static float BackLegPos[3] = -{0.684, -0.324, 0.108}; -static GLfloat BackLegVerts[][2] = -{ - {-0.24, -0.195556}, - {-0.0933332, -0.41037}, - {-0.04, -0.684445}, - {-0.113333, -1.26222}, - {0, -1.26222}, - {0.1, -0.677037}, - {0.213333, -0.121482}, - {0.153333, 0.108148}, - {-0.0533333, 0.211853}, - {-0.26, 0.063702} -}; - -static float ManeDepth = 0.288; -static GLfloat ManeVerts[][2] = -{ - {-0.512667, 0.578519}, - {-0.419333, 0.267407}, - {-0.299333, -0.00666719}, - {-0.239333, -0.0140724}, - {-0.226, 0.0896296}, - {-0.319333, 0.422963}, - {-0.532667, 0.741481} -}; - -static float EyePos[3] = -{-0.702, 0.648, 0.1116}; -static float EyeSize = 0.025; - -/* Display lists */ -static GLuint Body = 0, FrontLeg = 0, BackLeg = 0, Mane = 0; - -/* Generate an extruded, capped part from a 2-D polyline. */ -static void -ExtrudePart(int n, GLfloat v[][2], float depth) -{ - static GLUtriangulatorObj *tobj = NULL; - int i; - float z0 = 0.5 * depth; - float z1 = -0.5 * depth; - GLdouble vertex[3]; - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU polygon * * - tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - /* +Z face */ - glPushMatrix(); - glTranslatef(0.0, 0.0, z0); - glNormal3f(0.0, 0.0, 1.0); - gluBeginPolygon(tobj); - for (i = 0; i < n; i++) { - vertex[0] = v[i][0]; - vertex[1] = v[i][1]; - vertex[2] = 0.0; - gluTessVertex(tobj, vertex, v[i]); - } - gluEndPolygon(tobj); - glPopMatrix(); - - /* -Z face */ - glFrontFace(GL_CW); - glPushMatrix(); - glTranslatef(0.0, 0.0, z1); - glNormal3f(0.0, 0.0, -1.0); - gluBeginPolygon(tobj); - for (i = 0; i < n; i++) { - vertex[0] = v[i][0]; - vertex[1] = v[i][1]; - vertex[2] = z1; - gluTessVertex(tobj, vertex, v[i]); - } - gluEndPolygon(tobj); - glPopMatrix(); - - glFrontFace(GL_CCW); - /* edge polygons */ - glBegin(GL_TRIANGLE_STRIP); - for (i = 0; i <= n; i++) { - float x = v[i % n][0]; - float y = v[i % n][1]; - float dx = v[(i + 1) % n][0] - x; - float dy = v[(i + 1) % n][1] - y; - glVertex3f(x, y, z0); - glVertex3f(x, y, z1); - glNormal3f(dy, -dx, 0.0); - } - glEnd(); - -} - -/* - * Build the four display lists which make up the pony. - */ -static void -MakePony(void) -{ - static GLfloat blue[4] = - {0.1, 0.1, 1.0, 1.0}; - static GLfloat black[4] = - {0.0, 0.0, 0.0, 1.0}; - static GLfloat pink[4] = - {1.0, 0.5, 0.5, 1.0}; - - Body = glGenLists(1); - glNewList(Body, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - ExtrudePart(sizeof(BodyVerts) / sizeof(GLfloat) / 2, BodyVerts, BodyDepth); - - /* eyes */ - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, black); - glNormal3f(0.0, 0.0, 1.0); - glBegin(GL_POLYGON); - glVertex3f(EyePos[0] - EyeSize, EyePos[1] - EyeSize, EyePos[2]); - glVertex3f(EyePos[0] + EyeSize, EyePos[1] - EyeSize, EyePos[2]); - glVertex3f(EyePos[0] + EyeSize, EyePos[1] + EyeSize, EyePos[2]); - glVertex3f(EyePos[0] - EyeSize, EyePos[1] + EyeSize, EyePos[2]); - glEnd(); - glNormal3f(0.0, 0.0, -1.0); - glBegin(GL_POLYGON); - glVertex3f(EyePos[0] - EyeSize, EyePos[1] + EyeSize, -EyePos[2]); - glVertex3f(EyePos[0] + EyeSize, EyePos[1] + EyeSize, -EyePos[2]); - glVertex3f(EyePos[0] + EyeSize, EyePos[1] - EyeSize, -EyePos[2]); - glVertex3f(EyePos[0] - EyeSize, EyePos[1] - EyeSize, -EyePos[2]); - glEnd(); - glEndList(); - - Mane = glGenLists(1); - glNewList(Mane, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, pink); - ExtrudePart(sizeof(ManeVerts) / sizeof(GLfloat) / 2, ManeVerts, ManeDepth); - glEndList(); - - FrontLeg = glGenLists(1); - glNewList(FrontLeg, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - ExtrudePart(sizeof(FrontLegVerts) / sizeof(GLfloat) / 2, - FrontLegVerts, LegDepth); - glEndList(); - - BackLeg = glGenLists(1); - glNewList(BackLeg, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - ExtrudePart(sizeof(BackLegVerts) / sizeof(GLfloat) / 2, - BackLegVerts, LegDepth); - glEndList(); -} - -/* - * Draw the pony. legAngle should be in [-15,15] or so. - * The pony display lists will be constructed the first time this is called. - */ -static void -DrawPony(float legAngle) -{ - if (!Body) { - MakePony(); - } - assert(Body); - - /* BODY */ - glCallList(Body); - - /* MANE */ - glCallList(Mane); - - /* FRONT +Z LEG */ - glPushMatrix(); - glTranslatef(FrontLegPos[0], FrontLegPos[1], FrontLegPos[2]); - glRotatef(legAngle, 0.0, 0.0, 1.0); - glCallList(FrontLeg); - glPopMatrix(); - - /* FRONT -Z LEG */ - glPushMatrix(); - glTranslatef(FrontLegPos[0], FrontLegPos[1], -FrontLegPos[2]); - glRotatef(-legAngle, 0.0, 0.0, 1.0); - glCallList(FrontLeg); - glPopMatrix(); - - /* BACK +Z LEG */ - glPushMatrix(); - glTranslatef(BackLegPos[0], BackLegPos[1], BackLegPos[2]); - glRotatef(-legAngle, 0.0, 0.0, 1.0); - glCallList(BackLeg); - glPopMatrix(); - - /* BACK -Z LEG */ - glPushMatrix(); - glTranslatef(BackLegPos[0], BackLegPos[1], -BackLegPos[2]); - glRotatef(legAngle, 0.0, 0.0, 1.0); - glCallList(BackLeg); - glPopMatrix(); -} - -/************************* end of pony code **********************************/ - -static float Speed = 2.0; - -static float LegAngleStep = 0.75; -static float LegMaxAngle = 15.0; -static float LegAngle = 0.0, LegDeltaAngle = 0.5; - -static float WalkAngle = -90.0, DeltaWalkAngle = 0.225; -static float WalkRadius = 4.0; - -static float Xrot = 0, Yrot = 30.0; - -static GLboolean AnimFlag = GL_TRUE; - -static void -Idle(void) -{ - /* update animation vars */ - LegAngle += LegDeltaAngle * Speed; - if (LegAngle > LegMaxAngle) { - LegDeltaAngle = -LegAngleStep; - } else if (LegAngle < -LegMaxAngle) { - LegDeltaAngle = LegAngleStep; - } - WalkAngle += DeltaWalkAngle * Speed; - - glutPostRedisplay(); -} - -static void -DrawGround(void) -{ - static GLuint ground = 0; - - if (ground == 0) { - const int rows = 20, columns = 20; - float sizeA = 1.25, sizeB = 0.2; - float x, z; - int i, j; - GLfloat mat[2][4] = - { - {0.0, 0.6, 0.0, 1.0}, - {0.1, 0.8, 0.1, 1.0} - }; - - ground = glGenLists(1); - glNewList(ground, GL_COMPILE); - - glNormal3f(0.0, 1.0, 0.0); - - x = -(columns * (sizeA + sizeB)) / 4; - for (i = 0; i <= rows; i++) { - float size = (i & 1) ? sizeA : sizeB; - z = -(rows * (sizeA + sizeB)) / 4; - glBegin(GL_QUAD_STRIP); - for (j = 0; j <= columns; j++) { - /* glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat[(i+j)%2]); */ - glColor4fv(mat[(i + j) % 2]); - glVertex3f(x + size, 0.0, z); - glVertex3f(x, 0.0, z); - if (j & 1) - z += sizeA; - else - z += sizeB; - } - glEnd(); - x += size; - } - - glEndList(); - } - glCallList(ground); -} - -static void -DrawLogo(void) -{ - glEnable(GL_TEXTURE_2D); - glShadeModel(GL_SMOOTH); - glBegin(GL_POLYGON); - glColor3f(1, 0, 0); - glTexCoord2f(0, 0); - glVertex2f(-1.0, -0.5); - glColor3f(0, 1, 0); - glTexCoord2f(1, 0); - glVertex2f(1.0, -0.5); - glColor3f(0, 0, 1); - glTexCoord2f(1, 1); - glVertex2f(1.0, 0.5); - glColor3f(1, 1, 0); - glTexCoord2f(0, 1); - glVertex2f(-1.0, 0.5); - glEnd(); - glDisable(GL_TEXTURE_2D); - glShadeModel(GL_FLAT); -} - -static void -Display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* viewing */ - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - - /* ground */ - glDisable(GL_LIGHTING); - glPushMatrix(); - glTranslatef(0.0, -1.6, 0.0); - DrawGround(); - glPopMatrix(); - - /* logo */ - glPushMatrix(); - glScalef(2.5, 2.5, 2.5); - DrawLogo(); - glPopMatrix(); - - /* pony */ - { - float xPos, zPos; - xPos = WalkRadius * cos(WalkAngle * M_PI / 180.0); - zPos = WalkRadius * sin(WalkAngle * M_PI / 180.0); - glEnable(GL_LIGHTING); - glPushMatrix(); - glTranslatef(xPos, 0.0, zPos); - glRotatef(-WalkAngle + 90.0, 0.0, 1.0, 0.0); - DrawPony(LegAngle); - glPopMatrix(); - } - - glPopMatrix(); - glutSwapBuffers(); -} - -static void -Reshape(int width, int height) -{ - float ar; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - ar = (float) width / (float) height; - glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -23.0 / 2.5); -} - -/* ARGSUSED1 */ -static void -Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - case ' ': - AnimFlag = !AnimFlag; - if (AnimFlag) { - glutIdleFunc(Idle); - } else { - glutIdleFunc(NULL); - } - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -static void -SpecialKey(int key, int x, int y) -{ - float step = 2.0; - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - -static void -Init(void) -{ - GLfloat lightPos[4] = - {1.0, 10.0, 10.0, 0.0}; - glClearColor(0.5, 0.8, 0.99, 1.0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - glShadeModel(GL_FLAT); - - LoadRGBMipmaps("logo.bw", 1); -} - -static void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (AnimFlag) - glutIdleFunc(Idle); - } else { - if (AnimFlag) - glutIdleFunc(NULL); - } -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(640, 480); - - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - - glutCreateWindow("Blue Pony"); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Display); - glutVisibilityFunc(vis); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/bluepony/bluepony.dsp b/lib/glut-3.7.6/progs/demos/bluepony/bluepony.dsp deleted file mode 100644 index 74d5f0c962380b42353ce9660c22e9f5a0bd86a9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bluepony/bluepony.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bluepony" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bluepony - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bluepony.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bluepony.mak" CFG="bluepony - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bluepony - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bluepony - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bluepony - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bluepony - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bluepony - Win32 Release" -# Name "bluepony - Win32 Debug" -# Begin Source File - -SOURCE=.\bluepony.c -# End Source File -# Begin Source File - -SOURCE=.\readtex.c -# End Source File -# Begin Source File - -SOURCE=.\readtex.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/bluepony/logo.bw b/lib/glut-3.7.6/progs/demos/bluepony/logo.bw deleted file mode 100644 index e7d1fd13e27781e4efe02a20f0d37244d4b1bee8..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/bluepony/logo.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/bluepony/readtex.c b/lib/glut-3.7.6/progs/demos/bluepony/readtex.c deleted file mode 100644 index 2898538c1a2c2141194d028752db5b8da1853c58..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bluepony/readtex.c +++ /dev/null @@ -1,307 +0,0 @@ -/* readtex.c */ - -/* - * Read an SGI .rgb image file and generate a mipmap texture set. - * Much of this code was borrowed from SGI's tk OpenGL toolkit. - */ - -#include -#include -#include -#include - -#include "readtex.h" - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -/* RGB Image Structure */ - -typedef struct _TK_RGBImageRec { - GLint sizeX, sizeY; - GLint components; - unsigned char *data; -} TK_RGBImageRec; - -/******************************************************************************/ - -typedef struct _rawImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short sizeX, sizeY, sizeZ; - unsigned long min, max; - unsigned long wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp, *tmpR, *tmpG, *tmpB, *tmpA; - unsigned long rleEnd; - GLuint *rowStart; - GLint *rowSize; -} rawImageRec; - -/******************************************************************************/ - -static void -ConvertShort(unsigned short *array, size_t length) -{ - unsigned short b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *) array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void -ConvertLong(GLuint * array, size_t length) -{ - unsigned long b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *) array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static rawImageRec * -RawImageOpen(const char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - rawImageRec *raw; - GLenum swapFlag; - int x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) { - swapFlag = GL_TRUE; - } else { - swapFlag = GL_FALSE; - } - - raw = (rawImageRec *) malloc(sizeof(rawImageRec)); - if (raw == NULL) { - fprintf(stderr, "Out of memory!\n"); - return NULL; - } - if ((raw->file = fopen(fileName, "rb")) == NULL) { - perror(fileName); - return NULL; - } - fread(raw, 1, 12, raw->file); - - if (swapFlag) { - ConvertShort(&raw->imagic, 6); - } - raw->tmp = (unsigned char *) malloc(raw->sizeX * 256); - if (raw->tmp == NULL) { - fprintf(stderr, "Out of memory!\n"); - return NULL; - } - raw->tmpR = (unsigned char *) malloc(raw->sizeX * 256); - if (raw->tmpR == NULL) { - fprintf(stderr, "Out of memory!\n"); - return NULL; - } - if (raw->sizeZ > 1) { - raw->tmpG = (unsigned char *) malloc(raw->sizeX * 256); - raw->tmpB = (unsigned char *) malloc(raw->sizeX * 256); - if (raw->tmpG == NULL || raw->tmpB == NULL) { - fprintf(stderr, "Out of memory!\n"); - return NULL; - } - if (raw->sizeZ == 4) { - raw->tmpA = (unsigned char *) malloc(raw->sizeX * 256); - if (raw->tmpA == NULL) { - fprintf(stderr, "Out of memory!\n"); - return NULL; - } - } - } - if ((raw->type & 0xFF00) == 0x0100) { - x = raw->sizeY * raw->sizeZ * sizeof(GLuint); - raw->rowStart = (GLuint *) malloc(x); - raw->rowSize = (GLint *) malloc(x); - if (raw->rowStart == NULL || raw->rowSize == NULL) { - fprintf(stderr, "Out of memory!\n"); - return NULL; - } - raw->rleEnd = 512 + (2 * x); - fseek(raw->file, 512, SEEK_SET); - fread(raw->rowStart, 1, x, raw->file); - fread(raw->rowSize, 1, x, raw->file); - if (swapFlag) { - ConvertLong(raw->rowStart, x / sizeof(GLuint)); - ConvertLong((GLuint *) raw->rowSize, x / sizeof(GLint)); - } - } - return raw; -} - -static void -RawImageClose(rawImageRec * raw) -{ - - fclose(raw->file); - free(raw->tmp); - free(raw->tmpR); - free(raw->tmpG); - free(raw->tmpB); - if (raw->sizeZ > 3) { - free(raw->tmpA); - } - free(raw); -} - -static void -RawImageGetRow(rawImageRec * raw, unsigned char *buf, int y, int z) -{ - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((raw->type & 0xFF00) == 0x0100) { - fseek(raw->file, (long) raw->rowStart[y + z * raw->sizeY], SEEK_SET); - fread(raw->tmp, 1, (size_t) raw->rowSize[y + z * raw->sizeY], - raw->file); - - iPtr = raw->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int) (pixel & 0x7F); - if (!count) { - return; - } - if (pixel & 0x80) { - while (count--) { - *oPtr++ = *iPtr++; - } - } else { - pixel = *iPtr++; - while (count--) { - *oPtr++ = pixel; - } - } - } - } else { - fseek(raw->file, 512 + (y * raw->sizeX) + (z * raw->sizeX * raw->sizeY), - SEEK_SET); - fread(buf, 1, raw->sizeX, raw->file); - } -} - -static void -RawImageGetData(rawImageRec * raw, TK_RGBImageRec * final) -{ - unsigned char *ptr; - int i, j; - - final->data = (unsigned char *) malloc((raw->sizeX + 1) * (raw->sizeY + 1) * 4); - if (final->data == NULL) { - fprintf(stderr, "Out of memory!\n"); - } - ptr = final->data; - for (i = 0; i < (int) (raw->sizeY); i++) { - RawImageGetRow(raw, raw->tmpR, i, 0); - if (raw->sizeZ > 1) { - RawImageGetRow(raw, raw->tmpG, i, 1); - RawImageGetRow(raw, raw->tmpB, i, 2); - if (raw->sizeZ > 3) { - RawImageGetRow(raw, raw->tmpA, i, 3); - } - } - for (j = 0; j < (int) (raw->sizeX); j++) { - *ptr++ = *(raw->tmpR + j); - if (raw->sizeZ > 1) { - *ptr++ = *(raw->tmpG + j); - *ptr++ = *(raw->tmpB + j); - if (raw->sizeZ > 3) { - *ptr++ = *(raw->tmpA + j); - } - } - } - } -} - -static TK_RGBImageRec * -tkRGBImageLoad(const char *fileName) -{ - rawImageRec *raw; - TK_RGBImageRec *final; - - raw = RawImageOpen(fileName); - final = (TK_RGBImageRec *) malloc(sizeof(TK_RGBImageRec)); - if (final == NULL) { - fprintf(stderr, "Out of memory!\n"); - return NULL; - } - final->sizeX = raw->sizeX; - final->sizeY = raw->sizeY; - final->components = raw->sizeZ; - RawImageGetData(raw, final); - RawImageClose(raw); - return final; -} - -static void -FreeImage(TK_RGBImageRec * image) -{ - free(image->data); - free(image); -} - -/* - * Load an SGI .rgb file and generate a set of 2-D mipmaps from it. - * Input: imageFile - name of .rgb to read - * intFormat - internal texture format to use, or number of components - * Return: GL_TRUE if success, GL_FALSE if error. - */ -GLboolean -LoadRGBMipmaps(const char *imageFile, GLint intFormat) -{ - GLint error; - GLenum format; - TK_RGBImageRec *image; - - image = tkRGBImageLoad(imageFile); - if (!image) { - return GL_FALSE; - } - if (image->components == 3) { - format = GL_RGB; - } else if (image->components == 4) { - format = GL_RGBA; - } else if (image->components == 1) { - format = GL_LUMINANCE; - intFormat = 1; - } else { - /* not implemented */ - fprintf(stderr, - "Error in LoadRGBMipmaps %d-component images not implemented\n", - image->components); - return GL_FALSE; - } - - error = gluBuild2DMipmaps(GL_TEXTURE_2D, - intFormat, - image->sizeX, image->sizeY, - format, - GL_UNSIGNED_BYTE, - image->data); - - FreeImage(image); - return error ? GL_FALSE : GL_TRUE; -} diff --git a/lib/glut-3.7.6/progs/demos/bluepony/readtex.h b/lib/glut-3.7.6/progs/demos/bluepony/readtex.h deleted file mode 100644 index 1c0015b0fd7d89f20da5e1bd59608431e0932260..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bluepony/readtex.h +++ /dev/null @@ -1,10 +0,0 @@ -/* readtex.h */ - -#ifndef READTEX_H -#define READTEX_H - -#include - -extern GLboolean LoadRGBMipmaps(const char *imageFile, GLint intFormat); - -#endif diff --git a/lib/glut-3.7.6/progs/demos/bounce/Imakefile b/lib/glut-3.7.6/progs/demos/bounce/Imakefile deleted file mode 100644 index 45151d3cf28f0679436f7425741ea6773f955bb0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/Imakefile +++ /dev/null @@ -1,24 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../../Glut.cf" - -TARGETS = bounce - -SRCS = bounce.c glui.c tb.c trackball.c - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(bounce,bounce.o glui.o tb.o trackball.o) - -LinkFile(trackball.c, ../../examples/trackball.c) -LinkFile(trackball.h, ../../examples/trackball.h) - -trackball.o: trackball.h -tb.o: tb.h trackball.h -bounce.o: tb.h glui.c glui.h - -/* some old imake configs do setup "make depend" dependencies on linked files */ -depend:: trackball.c trackball.h tb.c tb.h - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/bounce/bounce.c b/lib/glut-3.7.6/progs/demos/bounce/bounce.c deleted file mode 100644 index ac8747e41f3eb53415dd425530af46e541eb3e2e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/bounce.c +++ /dev/null @@ -1,943 +0,0 @@ - -/************************************************************************** - * * - * Copyright (C) 1988, 1989, 1990, Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs contain * - * unpublished proprietary information of Silicon Graphics, Inc., and * - * are protected by Federal copyright law. They may not be disclosed * - * to third parties or copied or duplicated in any form, in whole or * - * in part, without the prior written consent of Silicon Graphics, Inc. * - * * - **************************************************************************/ - -/* - * foo $Revision: 1.4 $ - */ -#include -#include -#include -#include -#include -#include -#include - -#include "tb.h" -#include "glui.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define UDIV 12 -#define VDIV 12 - -#define WALLGRIDMAX 32 -#define EYEZ 3.3 - -#define TOTALBALLS 3 - -#define R 0 -#define G 1 -#define B 2 - -#define X 0 -#define Y 1 -#define Z 2 -#define W 3 - -int wallgrid = 8; /* sqrt of the number of quads in a wall */ -float fatt = 1.0; - -int freeze = GL_FALSE; -int spin = GL_FALSE; -int spinning = GL_FALSE; -int objecton = GL_FALSE; -int normson = GL_FALSE; -int lighton[3] = {GL_TRUE, GL_TRUE, GL_TRUE}; - -int window; /* main window id */ - -GLboolean performance = GL_FALSE; /* performance indicator */ - -struct { - float p[3]; - float d[3]; - unsigned char color[3]; -} balls[TOTALBALLS]; - -float ballobj[UDIV+1][VDIV+1][4]; -float wallobj[WALLGRIDMAX+1][WALLGRIDMAX+1][4]; -float wallnorms[WALLGRIDMAX+1][WALLGRIDMAX+1][3]; -float wallnorm[3] = { 0.0, 0.0, -1.0 }; - -int orx, ory; - -float ballscale; -float ballsize; - -int DELTAX, DELTAY; - -int lflag = 0; - -float newpos[] = { 0.0, 0.0, 0.0, 1.0 }; - -GLfloat light_Ka[] = { 0.3, 0.3, 0.3, 1.0 }; /* ambient */ -GLfloat light_Ks[] = { 0.0, 0.0, 0.0, 1.0 }; /* specular */ - -GLfloat light0_Ka[] = { 0.0, 0.0, 0.0, 1.0 }; /* ambient */ -GLfloat light0_Kd[] = { 1.0, 0.1, 0.1, 1.0 }; /* diffuse */ -GLfloat light0_pos[] = { 0.0, 0.0, 0.0, 1.0 }; /* position */ - -GLfloat light1_Ka[] = { 0.0, 0.0, 0.0, 1.0 }; /* ambient */ -GLfloat light1_Kd[] = { 0.1, 1.0, 0.1, 1.0 }; /* diffuse */ -GLfloat light1_pos[] = { 0.0, 0.0, 0.0, 1.0 }; /* position */ - -GLfloat light2_Ka[] = { 0.0, 0.0, 0.0, 1.0 }; /* ambient */ -GLfloat light2_Kd[] = { 0.1, 0.1, 1.0, 1.0 }; /* diffuse */ -GLfloat light2_pos[] = { 0.0, 0.0, 0.0, 1.0 }; /* position */ - -GLfloat attenuation[] = { 1.0, 3.0 }; - -GLfloat plane_Ka[] = { 0.0, 0.0, 0.0, 1.0 }; /* ambient */ -GLfloat plane_Kd[] = { 0.4, 0.4, 0.4, 1.0 }; /* diffuse */ -GLfloat plane_Ks[] = { 1.0, 1.0, 1.0, 1.0 }; /* specular */ -GLfloat plane_Ke[] = { 0.0, 0.0, 0.0, 1.0 }; /* emission */ -GLfloat plane_Se = 30.0; /* shininess */ - -GLfloat wall_Ka[] = { 0.1, 0.1, 0.1, 1.0 }; /* ambient */ -GLfloat wall_Kd[] = { 0.8, 0.8, 0.8, 1.0 }; /* diffuse */ -GLfloat wall_Ks[] = { 1.0, 1.0, 1.0, 1.0 }; /* specular */ -GLfloat wall_Ke[] = { 0.0, 0.0, 0.0, 1.0 }; /* emission */ -GLfloat wall_Se = 20.0; /* shininess */ - -GLuint wall_material, plane_material; /* material display lists */ - -char ofile[80]; - - -/************************************************************/ -/* XXX - The following is an excerpt from spin.h from spin */ -/************************************************************/ - -#define POLYGON 1 -#define LINES 2 -#define TRANSPERENT 3 -#define DISPLAY 4 -#define LMATERIAL 5 - -#define FASTMAGIC 0x5423 - -typedef struct fastobj { - int npoints; - int colors; - int type; - int material; - int display; - int ablend; - GLint *data; -} fastobj; - -/* - * Wrappers to do either lines or polygons - */ -#define PolyOrLine() if (lflag == LINES) { \ - glBegin(GL_LINE_LOOP); \ - } else { \ - glBegin(GL_POLYGON); \ - } - -#define EndPolyOrLine() if (lflag == LINES) { \ - glEnd(); \ - } else { \ - glEnd(); \ - } - -/************************* end of spin.h excerpt *************************/ - - -fastobj *obj = NULL; - -/* - - general purpose text routine. draws a string according to the - format in a stroke font at x, y after scaling it by the scale - specified. x, y and scale are all in window-space [i.e., pixels] - with origin at the lower-left. - -*/ - -void -text(GLuint x, GLuint y, GLfloat scale, char* format, ...) -{ - va_list args; - char buffer[255], *p; - GLfloat font_scale = 119.05 + 33.33; - - va_start(args, format); - vsprintf(buffer, format, args); - va_end(args); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, glutGet(GLUT_WINDOW_WIDTH), 0, glutGet(GLUT_WINDOW_HEIGHT)); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glTranslatef(x, y, 0.0); - - glScalef(scale/font_scale, scale/font_scale, scale/font_scale); - - for(p = buffer; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - - glPopAttrib(); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); -} - -float -frand(void) -{ - return 2.0*(rand()/32768.0 - .5); -} - - -void -resetballs(void) -{ - register short i; - - balls[0].color[R] = 255; - balls[0].color[G] = 64; - balls[0].color[B] = 64; - balls[1].color[R] = 64; - balls[1].color[G] = 255; - balls[1].color[B] = 64; - balls[2].color[R] = 64; - balls[2].color[G] = 64; - balls[2].color[B] = 255; - for (i = 0; i < TOTALBALLS; i++) { - balls[i].p[0] = 0.0; - balls[i].p[1] = 0.0; - balls[i].p[2] = 0.0; - balls[i].d[0] = .1*frand(); - balls[i].d[1] = .1*frand(); - balls[i].d[2] = .1*frand(); - } -} - - -void -drawface(void) -{ - register int i,j; - - glNormal3fv(wallnorm); - for (i=0; i < wallgrid; i++) { - glBegin(GL_TRIANGLE_STRIP); - for (j=0; j <= wallgrid; j++) { - glVertex3fv(wallobj[i][j]); - glVertex3fv(wallobj[i+1][j]); - } - glEnd(); - } -} - - -void -drawnorms(void) -{ - register int i,j; - - glDisable(GL_LIGHTING); - glColor3ub(255, 255, 0); - for (i=0; i <= wallgrid; i++) { - for (j=0; j <= wallgrid; j++) { - glBegin(GL_LINES); - glVertex3fv(wallobj[i][j]); - glVertex3fv(wallnorms[i][j]); - glEnd(); - } - } - glEnable(GL_LIGHTING); -} - - -void -drawbox(void) -{ - glPushMatrix(); - -/* drawface(); */ - glRotatef(90.0, 0.0, 1.0, 0.0); - drawface(); - if (normson) drawnorms(); - glRotatef(90.0, 0.0, 1.0, 0.0); - drawface(); - if (normson) drawnorms(); - glRotatef(90.0, 0.0, 1.0, 0.0); -/* drawface(); */ - glRotatef(-90.0, 1.0, 0.0, 0.0); - drawface(); - if (normson) drawnorms(); - glRotatef(180.0, 1.0, 0.0, 0.0); -/* drawface(); */ - glPopMatrix(); -} - - -void -drawfastobj(fastobj *obj) -{ - register GLint *p, *end; - register int npolys; - - p = obj->data; - end = p + 8 * obj->npoints; - - if(obj->colors) { - npolys = obj->npoints/4; - while(npolys--) { - PolyOrLine(); - glColor3iv(p); - glVertex3fv((float *)p+4); - glColor3iv(p+8); - glVertex3fv((float *)p+12); - glColor3iv(p+16); - glVertex3fv((float *)p+20); - glColor3iv(p+24); - glVertex3fv((float *)p+28); - EndPolyOrLine(); - p += 32; - } - } else { - while ( p < end) { - PolyOrLine(); - glNormal3fv((float *)p); - glVertex3fv((float *)p+4); - glNormal3fv((float *)p+8); - glVertex3fv((float *)p+12); - glNormal3fv((float *)p+16); - glVertex3fv((float *)p+20); - glNormal3fv((float *)p+24); - glVertex3fv((float *)p+28); - EndPolyOrLine(); - p += 32; - } - } -} - -void -drawball(void) -{ - register int i,j; - - for (i=0; i < UDIV; i++) { - for (j=0; j < VDIV; j++) { - glBegin(GL_POLYGON); - glVertex4fv( ballobj[i][j] ); - glVertex4fv( ballobj[i+1][j] ); - glVertex4fv( ballobj[i+1][j+1] ); - glVertex4fv( ballobj[i][j+1] ); - glEnd(); - } - } -} - - - -void -drawimage(void) -{ - register short i; - static int start, end, last; - - glutSetWindow(window); - - if (performance) - start = glutGet(GLUT_ELAPSED_TIME); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - tbMatrix(); - - for (i=0; i < TOTALBALLS; i++) { - newpos[0] = balls[i].p[0]; - newpos[1] = balls[i].p[1]; - newpos[2] = balls[i].p[2]; - glLightfv(GL_LIGHT0 + i, GL_POSITION, newpos); - } - - glCallList(wall_material); - glEnable(GL_LIGHTING); - drawbox(); - - glEnable(GL_DEPTH_TEST); - - if (objecton) - { - glCallList(plane_material); - glPushMatrix(); - glScalef(1.5, 1.5, 1.5); - glRotatef(180.0, 0.0, 0.0, 1.0); - if (spin) - { - orx += 50; - ory += 50; - } - glRotatef(orx/10.0, 1.0, 0.0, 0.0); - glRotatef(ory/10.0, 0.0, 1.0, 0.0); - drawfastobj(obj); - glPopMatrix(); - } - - glDisable(GL_LIGHTING); - - for (i=0; i < TOTALBALLS; i++) { - if (lighton[i]) - { - glPushMatrix(); - glTranslatef(balls[i].p[0],balls[i].p[1],balls[i].p[2]); - glColor3ubv(balls[i].color); - drawball(); - glPopMatrix(); - } - } - - glColor3f(1.0, 1.0, 1.0); - if (performance) { - if (end - last == 0) { - text(10, 73, 20, "unknown fps"); - } else { - text(10, 73, 20, "%.0f fps", 1.0 / ((end - last) / 1000.0)); - } - last = start; - } - text(10, 43, 14, "Attenuation [%.2f]", fatt); - text(10, 13, 14, "Tesselation [%3d]", wallgrid); - - - glPopMatrix(); - glutSwapBuffers(); - - if (performance) - end = glutGet(GLUT_ELAPSED_TIME); -} - - -void -initobjects(void) -{ - register float u,v,du,dv; - register short i,j; - - du = 2.0*M_PI/UDIV; - dv = M_PI/VDIV; - - u = 0.; - for (i=0; i <= UDIV; i++) { - v = 0.; - for (j=0; j <= VDIV; j++) { - ballobj[i][j][X] = ballsize*cos(u)*sin(v); - ballobj[i][j][Y] = ballsize*sin(u)*sin(v); - ballobj[i][j][Z] = ballsize*cos(v); - ballobj[i][j][W] = 1.0; - v += dv; - } - u += du; - } - - for (i=0; i <= wallgrid; i++) { - for (j=0; j <= wallgrid; j++) { - wallobj[i][j][X] = -1.0 + 2.0*i/wallgrid; - wallobj[i][j][Y] = -1.0 + 2.0*j/wallgrid; - wallobj[i][j][Z] = 1.0; - wallobj[i][j][W] = 1.0; - } - } - - for (i=0; i <= wallgrid; i++) { - for (j=0; j <= wallgrid; j++) { - wallnorms[i][j][X] = wallobj[i][j][X] + wallnorm[X]*0.1; - wallnorms[i][j][Y] = wallobj[i][j][Y] + wallnorm[Y]*0.1; - wallnorms[i][j][Z] = wallobj[i][j][Z] + wallnorm[Z]*0.1; - } - } -} - -int MOUSEX, MOUSEY; - -static void -mouse(int button, int state, int x, int y) -{ - MOUSEX = x; - MOUSEY = y; - tbMouse(button, state, x, y); -} - -static void -motion(int x, int y) -{ - DELTAX -= MOUSEX - x; - DELTAY += MOUSEY - y; - MOUSEX = x; - MOUSEY = y; - tbMotion(x, y); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char key, int x, int y) -{ - switch(key) { - case 27: /* ESC */ - exit(0); - break; - - case '+': - wallgrid++; - if (wallgrid > WALLGRIDMAX) - wallgrid = WALLGRIDMAX; - initobjects(); - break; - - case '-': - wallgrid--; - if (wallgrid < 1) - wallgrid = 1; - initobjects(); - break; - } -} - -void -initialize(void) -{ - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); - window = glutCreateWindow("bounce"); - - initobjects(); - - srand(glutGet(GLUT_ELAPSED_TIME)); - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, light_Ka); - - plane_material = glGenLists(1); - glNewList(plane_material, GL_COMPILE); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, plane_Ka); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, plane_Kd); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, plane_Ks); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, plane_Ke); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, plane_Se); - glEndList(); - - wall_material = glGenLists(1); - glNewList(wall_material, GL_COMPILE); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, wall_Ka); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, wall_Kd); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, wall_Ks); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, wall_Ke); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, wall_Se); - glEndList(); - - glLightfv(GL_LIGHT0, GL_AMBIENT, light0_Ka); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_Kd); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, attenuation[0]); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, attenuation[1]); - /* OpenGL's light0 has different specular properties than the rest - of the lights.... */ - glLightfv(GL_LIGHT0, GL_SPECULAR, light_Ks); - - glLightfv(GL_LIGHT1, GL_AMBIENT, light1_Ka); - glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_Kd); - glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, attenuation[0]); - glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, attenuation[1]); - - glLightfv(GL_LIGHT2, GL_AMBIENT, light2_Ka); - glLightfv(GL_LIGHT2, GL_DIFFUSE, light2_Kd); - glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, attenuation[0]); - glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, attenuation[1]); - - glutMotionFunc(motion); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); -} - - -void -calcball(void) -{ - register short i,j; - - for (j=0; j < TOTALBALLS; j++) { - for (i=0; i < 3; i++) { - balls[j].p[i] += balls[j].d[i]; - if (fabs(balls[j].p[i]) > ballscale) { - balls[j].p[i] = (balls[j].p[i] > 0.0) ? - ballscale : -ballscale; - balls[j].d[i] = -balls[j].d[i]; - } - } - } -} - -static void menu(int value); -static void idle(void); - -static void -make_menu(void) -{ - static int main_menu = 0; - - if (main_menu) - glutDestroyMenu(main_menu); - - main_menu = glutCreateMenu(menu); - glutAddMenuEntry("bounce", 0); - glutAddMenuEntry("", 0); - if (lighton[0]) - glutAddMenuEntry("red light off", 1); - else - glutAddMenuEntry("red light on", 1); - if (lighton[1]) - glutAddMenuEntry("green light off", 2); - else - glutAddMenuEntry("green light on", 2); - if (lighton[2]) - glutAddMenuEntry("blue light off", 3); - else - glutAddMenuEntry("blue light on", 3); - - if (freeze) - glutAddMenuEntry("unfreeze lights", 4); - else - glutAddMenuEntry("freeze lights", 4); - - if (normson) - glutAddMenuEntry("normals off", 7); - else - glutAddMenuEntry("normals on", 7); - - if (performance) - glutAddMenuEntry("frame rate off", 8); - else - glutAddMenuEntry("frame rate on", 8); - - if (obj) - { - if (objecton) - glutAddMenuEntry("object off", 5); - else - glutAddMenuEntry("object on", 5); - if (spin) - glutAddMenuEntry("object spin off", 6); - else - glutAddMenuEntry("object spin on", 6); - } - - glutAddMenuEntry("", 0); - glutAddMenuEntry("exit", 9); - - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -static void -menu(int value) -{ - switch(value) { - case 1: - if ((lighton[0] = !lighton[0])) - glEnable(GL_LIGHT0); - else - glDisable(GL_LIGHT0); - break; - case 2: - if ((lighton[1] = !lighton[1])) - glEnable(GL_LIGHT1); - else - glDisable(GL_LIGHT1); - break; - case 3: - if ((lighton[2] = !lighton[2])) - glEnable(GL_LIGHT2); - else - glDisable(GL_LIGHT2); - break; - case 4: - freeze = !freeze; - if (!freeze || spinning) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } - break; - case 5: - if (obj) - objecton = !objecton; - else - exit(1); - break; - case 6: - spin = !spin; - break; - case 7: - normson = !normson; - break; - case 8: - performance = !performance; - break; - case 9: - exit(0); - break; - } - glutPostWindowRedisplay(window); - make_menu(); -} - -/**********************************************************/ -/* XXX - The following is a clone of fastobj.c from spin */ -/**********************************************************/ - - -fastobj* -readfastobj(char *name) -{ - FILE *inf; - fastobj *obj; - int i; - int nlongs; - int magic; - GLint *ip; - char filename[512]; - - inf = fopen(name,"r"); - if(!inf) { - sprintf(filename,"%s",name); - inf = fopen(filename,"r"); - if(!inf) { - fprintf(stderr,"readfast: can't open input file %s\n",name); - exit(1); - } - } - fread(&magic,sizeof(int),1,inf); - if(magic != FASTMAGIC) { - fprintf(stderr,"readfast: bad magic in object file\n"); - fclose(inf); - exit(1); - } - obj = (fastobj *)malloc(sizeof(fastobj)); - fread(&obj->npoints,sizeof(int),1,inf); - fread(&obj->colors,sizeof(int),1,inf); - - /* - * Insure that the data is quad-word aligned and begins on a page - * boundary. This shields us from the performance loss which occurs - * whenever we try to fetch data which straddles a page boundary (the OS - * has to map in the next virtual page and re-start the DMA transfer). - */ - nlongs = 8 * obj->npoints; - obj->data = (GLint *) malloc(nlongs*sizeof(int) + 4096); - obj->data = (GLint *) (((int)(obj->data)) + 0xfff); - obj->data = (GLint *) (((int)(obj->data)) & 0xfffff000); - - /* XXX Careful, sizeof(GLint) could change from implementation - to implementation making this file format implementation - dependent. -mjk */ - for (i = 0, ip = obj->data; i < nlongs/4; i++, ip += 4) - fread(ip, 3 * sizeof(GLint), 1, inf); - fclose(inf); - return obj; -} - - -/* - * objmaxpoint - * - * find the vertex farthest from the origin, - * so we can set the near and far clipping planes tightly. - */ - -#define MAXVERT(v) if ( (len = sqrt( (*(v)) * (*(v)) + \ - (*(v+1)) * (*(v+1)) + \ - (*(v+2)) * (*(v+2)) )) > max) \ - max = len; - -float -objmaxpoint(obj) -fastobj *obj; -{ - register float *p, *end; - register int npolys; - register float len; - register float max = 0.0; - - p = (float *) (obj->data); - - if (obj->colors) { - npolys = obj->npoints/4; - while(npolys--) { - MAXVERT(p+4); - MAXVERT(p+12); - MAXVERT(p+20); - MAXVERT(p+28); - p += 32; - } - } else { - end = p + 8 * obj->npoints; - while ( p < end) { - MAXVERT(p+4); - MAXVERT(p+12); - MAXVERT(p+20); - MAXVERT(p+28); - p += 32; - } - } - - return max; -} - -static void -idle(void) -{ - assert(!freeze || spinning); - if (!freeze) { - calcball(); - } - if (spinning) { - tbStepAnimation(); - } - glutPostWindowRedisplay(window); -} - -/* When not visible, stop animating. Restart when visible again. */ -static void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - if (!freeze || spinning) - glutIdleFunc(idle); - } else { - if (!freeze || spinning) - glutIdleFunc(NULL); - } -} - -static void -reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (float)width/height, EYEZ-2.0, EYEZ+2.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.25, -EYEZ); - - tbReshape(width, height); - gluiReshape(width, height); -} - -void -update_fatt(float value) -{ - fatt = 5 * value; - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, fatt); - glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, fatt); - glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, fatt); - glutPostWindowRedisplay(window); -} - -void -update_grid(float value) -{ - wallgrid = WALLGRIDMAX*value; - if (wallgrid < 1) - wallgrid = 1; - initobjects(); - glutPostWindowRedisplay(window); -} - -void -spinChange(int state) -{ - spinning = state; - if (spinning || !freeze) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(512, 512); - glutInitWindowPosition(64, 64); - glutInit(&argc, argv); - - if (argc > 1) - { - int i; - - for (i=0; argv[1][i] != '/' && argv[1][i] != '\0'; i++); - if (argv[1][i] != '/') - { - strcpy(ofile, "/usr/demos/data/models/"); - strcat(ofile, argv[1]); - } - else - strcpy(ofile, argv[1]); - - if (obj = readfastobj(ofile)) - objecton = GL_TRUE; - } - - ballsize = .04; - ballscale = 1.0 - ballsize; - - initialize(); - - make_menu(); - - resetballs(); - - /* Use local lights for the box */ - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_LIGHT2); - - make_menu(); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutDisplayFunc(drawimage); - glutReshapeFunc(reshape); - glutVisibilityFunc(visible); - - gluiHorizontalSlider(window, 130, -10, -10, 20, - (float)wallgrid/WALLGRIDMAX, update_grid); - gluiHorizontalSlider(window, 130, -40, -10, 20, fatt/5.0, update_fatt); - - tbInit(GLUT_LEFT_BUTTON); - tbAnimate(1); - tbAnimateFunc(spinChange); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/bounce/bounce.dsp b/lib/glut-3.7.6/progs/demos/bounce/bounce.dsp deleted file mode 100644 index a5531005ea4c6694d0d3d9b38429806d6daa7c02..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/bounce.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bounce" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bounce - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bounce.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bounce.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bounce - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bounce - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bounce - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bounce - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bounce - Win32 Release" -# Name "bounce - Win32 Debug" -# Begin Source File - -SOURCE=.\bounce.c -# End Source File -# Begin Source File - -SOURCE=.\glui.c -# End Source File -# Begin Source File - -SOURCE=.\glui.h -# End Source File -# Begin Source File - -SOURCE=.\tb.c -# End Source File -# Begin Source File - -SOURCE=.\tb.h -# End Source File -# Begin Source File - -SOURCE=.\trackball.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/bounce/glui.c b/lib/glut-3.7.6/progs/demos/bounce/glui.c deleted file mode 100644 index b29aba72f75ea2e4c903f3b9f64c4a5de3cd9ad9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/glui.c +++ /dev/null @@ -1,509 +0,0 @@ - -/* - glui.c - Nate Robins, 1997. - - OpenGL based user interface. - - */ - -#include -#include -#include - -#define GLUI_BORDER 3 -#define GLUI_KNOB 40 - -#define GLUI_RAISED 1 -#define GLUI_SUNKEN 0 - -#define GLUI_HORIZONTAL 0 -#define GLUI_VERTICAL 1 - -#define GLUI_LESS -1 -#define GLUI_HIT 0 -#define GLUI_MORE 1 - -#define GLUI_HILITE 0.15 - -typedef struct _GLUIslider { - int type; /* vertical/horizontal */ - int parent; /* parent of this slider */ - int window; /* this sliders window */ - int win_x; /* slider window x (parent relative) */ - int win_y; /* slider window y (parent relative) */ - int win_w; /* slider window width */ - int win_h; /* slider window height */ - int length; /* length of the slider in pixels */ - int knob; /* position of the knob in pixels */ - int lit; /* currently lit? */ - void (*update)(float); /* callback for updating (returns %) */ - struct _GLUIslider* next; -} GLUIslider; - -static GLUIslider* _gluiSliders = NULL; -static GLUIslider* _gluiHit = NULL; - -static GLUIslider* -_gluiCurrentSlider(void) -{ - GLUIslider* slider = _gluiSliders; - int window = glutGetWindow(); - - while(slider) { - if (slider->window == window) - break; - slider = slider->next; - } - - if (!slider) - printf("glui: _gluiCurrentSlider() failed!\n"); - - return slider; -} - -static void -_gluiEmboss(int raised, int lit, int x, int y, int width, int height) -{ - int i; - float c; - - for (i = 0; i < GLUI_BORDER; i++) { - c = (float)i / (GLUI_BORDER * 5) + (lit ? GLUI_HILITE : 0.0); - if (raised) - glColor3f(0.275+c, 0.2+c, 0.2+c); - else - glColor3f(0.875-c, 0.8-c, 0.8-c); - glBegin(GL_LINE_STRIP); - glVertex2f(x+i+1, y+i); - glVertex2f(x+width-i-1, y+i); - glVertex2f(x+width-i-1, y+height-i); - glEnd(); - } - - for (i = 0; i < GLUI_BORDER; i++) { - c = (float)i / (GLUI_BORDER * 5); - if (raised) - glColor3f(0.875-c, 0.8-c, 0.8-c); - else - glColor3f(0.275+c, 0.2+c, 0.2+c); - glBegin(GL_LINE_STRIP); - glVertex2f(x+i, y+i); - glVertex2f(x+i, y+height-i-1); - glVertex2f(x+width-i-1, y+height-i-1); - glEnd(); - } - - c = lit ? GLUI_HILITE : 0.0; - - if (raised) - glColor3f(0.575+c, 0.5+c, 0.5+c); - else - glColor3f(0.475+c, 0.3+c, 0.3+c); - glRectf(x+i, y+i, x+width-i, y+height-i); -} - -static void -_gluiDisplay(void) -{ - int lit; - GLUIslider* slider = _gluiCurrentSlider(); - - lit = slider->lit ? GLUI_HILITE : 0.0; - - glClear(GL_COLOR_BUFFER_BIT); - if (slider->type == GLUI_HORIZONTAL) { - _gluiEmboss(GLUI_SUNKEN, 0, /* never lit */ - 0, 0, slider->length, slider->win_h); - _gluiEmboss(GLUI_RAISED, slider->lit, - slider->knob - GLUI_KNOB/2, GLUI_BORDER, - GLUI_KNOB + GLUI_BORDER, slider->win_h - GLUI_BORDER*2); - /* XXX why is it GLUI_KNOB+GLUI_BORDER ? */ - glColor3f(0.975+lit, 0.9+lit, 0.9+lit); - glBegin(GL_LINES); - glVertex2f(slider->knob-2, GLUI_BORDER*2-1); - glVertex2f(slider->knob-2, slider->win_h-GLUI_BORDER*2+1); - glVertex2f(slider->knob+1, GLUI_BORDER*2-1); - glVertex2f(slider->knob+1, slider->win_h-GLUI_BORDER*2+1); - glVertex2f(slider->knob+4, GLUI_BORDER*2-1); - glVertex2f(slider->knob+4, slider->win_h-GLUI_BORDER*2+1); - glEnd(); - glColor3f(0.175+lit, 0.1+lit, 0.1+lit); - glBegin(GL_LINES); - glVertex2f(slider->knob-3, GLUI_BORDER*2-1); - glVertex2f(slider->knob-3, slider->win_h-GLUI_BORDER*2+1); - glVertex2f(slider->knob+0, GLUI_BORDER*2-1); - glVertex2f(slider->knob+0, slider->win_h-GLUI_BORDER*2+1); - glVertex2f(slider->knob+3, GLUI_BORDER*2-1); - glVertex2f(slider->knob+3, slider->win_h-GLUI_BORDER*2+1); - glEnd(); - } else { - _gluiEmboss(GLUI_SUNKEN, 0, /* never lit */ - 0, 0, slider->win_w, slider->length); - _gluiEmboss(GLUI_RAISED, slider->lit, - GLUI_BORDER, slider->knob - GLUI_KNOB/2, - slider->win_w - GLUI_BORDER*2, GLUI_KNOB + GLUI_BORDER); - /* XXX why is it GLUI_KNOB+GLUI_BORDER ? */ - glColor3f(0.175+lit, 0.1+lit, 0.1+lit); - glBegin(GL_LINES); - glVertex2f(GLUI_BORDER*2-1, slider->knob-2); - glVertex2f(slider->win_w-GLUI_BORDER*2+1, slider->knob-2); - glVertex2f(GLUI_BORDER*2-1, slider->knob+1); - glVertex2f(slider->win_w-GLUI_BORDER*2+1, slider->knob+1); - glVertex2f(GLUI_BORDER*2-1, slider->knob+4); - glVertex2f(slider->win_w-GLUI_BORDER*2+1, slider->knob+4); - glEnd(); - glColor3f(0.975+lit, 0.9+lit, 0.9+lit); - glBegin(GL_LINES); - glVertex2f(GLUI_BORDER*2-1, slider->knob-3); - glVertex2f(slider->win_w-GLUI_BORDER*2+1, slider->knob-3); - glVertex2f(GLUI_BORDER*2-1, slider->knob+0); - glVertex2f(slider->win_w-GLUI_BORDER*2+1, slider->knob+0); - glVertex2f(GLUI_BORDER*2-1, slider->knob+3); - glVertex2f(slider->win_w-GLUI_BORDER*2+1, slider->knob+3); - glEnd(); - } - - glutSwapBuffers(); -} - -static int -_gluiHitKnob(GLUIslider* slider, int x, int y) -{ - if (slider->type == GLUI_HORIZONTAL) { - /* we know that we don't have to test the y coordinate because - the mouse came down in the window (this means that they can - hit the borders and still move the knob, but that's okay). - */ - if (x > slider->knob - GLUI_KNOB/2 && x < slider->knob + GLUI_KNOB/2) - return GLUI_HIT; - else if (x < slider->knob) - return GLUI_LESS; - else - return GLUI_MORE; - } else { - /* we know that we don't have to test the x coordinate because - the mouse came down in the window (this means that they can - hit the borders and still move the knob, but that's okay). - */ - if (y > slider->knob - GLUI_KNOB/2 && y < slider->knob + GLUI_KNOB/2) - return GLUI_HIT; - else if (y < slider->knob) - return GLUI_LESS; - else - return GLUI_MORE; - } -} - -static void -_gluiConstrainKnob(GLUIslider* slider) -{ - if (slider->knob > slider->length - GLUI_BORDER*2 - GLUI_KNOB/2) - slider->knob = slider->length - GLUI_BORDER*2 - GLUI_KNOB/2; - else if (slider->knob < GLUI_BORDER + GLUI_KNOB/2) - slider->knob = GLUI_BORDER + GLUI_KNOB/2; -} - - -static float -_gluiKnobPercent(GLUIslider* slider) -{ - return (float)(slider->knob - GLUI_KNOB/2 - GLUI_BORDER) / - (slider->length - GLUI_BORDER*3 - GLUI_KNOB); -} - -static int -_gluiKnobPosition(GLUIslider* slider, float percent) -{ - return GLUI_BORDER + GLUI_KNOB/2 + percent * - (slider->length - GLUI_BORDER*3 - GLUI_KNOB); -} - -static int _gluiX; -static int _gluiY; -static int _gluiMouseDown; - -static void -_gluiTimer(int value) -{ - GLUIslider* slider = (GLUIslider*)value; - float percent; - - percent = _gluiKnobPercent(slider); - - if (_gluiMouseDown != 0 && percent > 0.0 && percent < 1.0) { - if (_gluiMouseDown == GLUI_LESS) { - slider->knob -= slider->length / 25.0; - _gluiConstrainKnob(slider); - } else { - slider->knob += slider->length / 25.0; - _gluiConstrainKnob(slider); - } - glutSetWindow(slider->window); - glutPostRedisplay(); - slider->update(_gluiKnobPercent(slider)); - glutTimerFunc(20, _gluiTimer, (int)slider); - } -} - -static void -_gluiConvertY(GLUIslider* slider, int* y) -{ - if (slider->win_h < 0) { - glutSetWindow(slider->parent); - *y = glutGet(GLUT_WINDOW_HEIGHT) + slider->win_h - slider->win_y - *y; - glutSetWindow(slider->window); - } else { - *y = slider->win_h - *y; - } -} - -/* ARGSUSED */ -static void -_gluiMouse(int button, int state, int x, int y) -{ - GLUIslider* slider = _gluiCurrentSlider(); - int side; - - _gluiConvertY(slider, &y); - - _gluiX = x; - _gluiY = y; - _gluiHit = NULL; - _gluiMouseDown = GL_FALSE; - - if (state == GLUT_DOWN) { - side = _gluiHitKnob(slider, x, y); - if (side == GLUI_HIT) { - _gluiHit = slider; - } else if (side == GLUI_LESS) { - slider->knob -= slider->length / 25.0; - _gluiConstrainKnob(slider); - } else { - slider->knob += slider->length / 25.0; - _gluiConstrainKnob(slider); - } - glutPostRedisplay(); - slider->update(_gluiKnobPercent(slider)); - _gluiMouseDown = side; - if (side != 0) { - glutTimerFunc(500, _gluiTimer, (int)slider); - } - } else { - slider->lit = GL_FALSE; - } -} - -static void -_gluiMotion(int x, int y) -{ - GLUIslider* slider = _gluiHit; - - if (slider) { - _gluiConvertY(slider, &y); - - if (slider->type == GLUI_HORIZONTAL) { - /* clamp the incoming old position, or else the knob will - possibly "jump" due to the false delta. */ - if (_gluiX < GLUI_BORDER+1) - _gluiX = GLUI_BORDER+1; - if (_gluiX > slider->length - GLUI_BORDER*2) - _gluiX = slider->length - GLUI_BORDER*2; - /* we don't want to take any action if the mouse pointer - has moved passed the extents of the slider. */ - if (x > GLUI_BORDER && x < slider->length - GLUI_BORDER*2) { - slider->knob -= _gluiX - x; - _gluiX = x; - } - } else { - /* clamp the incoming old position, or else the knob will - possibly "jump" due to the false delta. */ - if (_gluiY < GLUI_BORDER+1) - _gluiY = GLUI_BORDER+1; - if (_gluiY > slider->length - GLUI_BORDER*2) - _gluiY = slider->length - GLUI_BORDER*2; - /* we don't want to take any action if the mouse pointer - has moved passed the extents of the slider. */ - if (y > GLUI_BORDER && y < slider->length - GLUI_BORDER*2) { - slider->knob -= _gluiY - y; - _gluiY = y; - } - } - _gluiConstrainKnob(slider); - - /* post a display _before_ updating the user, so that the knob - won't lag behind. */ - glutPostRedisplay(); - - /* make sure to set the parent window current, otherwise if - there is OpenGL state being changed in the update callback, - it will be done to the sliders context! */ - glutSetWindow(slider->parent); - slider->update(_gluiKnobPercent(slider)); - } -} - -static void -_gluiPassive(int x, int y) -{ - GLUIslider* slider = _gluiCurrentSlider(); - - _gluiConvertY(slider, &y); - - if (_gluiHitKnob(slider, x, y) == 0) - slider->lit = GL_TRUE; - else - slider->lit = GL_FALSE; - - glutPostRedisplay(); -} - -/* ARGSUSED */ -static void -_gluiEntry(int state) -{ - GLUIslider* slider = _gluiCurrentSlider(); - - /* set the lit flag to false whether we are coming or going - because if we are doing either, we can't be on top of the knob! */ - slider->lit = GL_FALSE; - glutPostRedisplay(); -} - -void -gluiReshape(int width, int height) -{ - float percent; - int x, y, w, h; - GLUIslider* slider = _gluiSliders; - - while (slider) { - /* we need to get the width and height of the parent, so set - it current. */ - glutSetWindow(slider->parent); - - /* all this mumbo jumbo takes care of the negative arguments - to attach the slider to different sides of the window. */ - x = slider->win_x; - if (x < 0) - x = width - slider->win_w + x + 1; - y = slider->win_y; - if (y < 0) - y = height - slider->win_h + y + 1; - w = slider->win_w; - if (w < 0) - w = glutGet(GLUT_WINDOW_WIDTH) + slider->win_w - slider->win_x; - h = slider->win_h; - if (h < 0) - h = glutGet(GLUT_WINDOW_HEIGHT) + slider->win_h - slider->win_y; - - glutSetWindow(slider->window); - glutPositionWindow(x, y); - glutReshapeWindow(w, h); - - percent = _gluiKnobPercent(slider); - - if (slider->type == GLUI_HORIZONTAL) - slider->length = w; - else - slider->length = h; - - slider->knob = _gluiKnobPosition(slider, percent); - - _gluiConstrainKnob(slider); - - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - slider = slider->next; - } -} - - - -int -gluiVerticalSlider(int parent, int x, int y, int width, int height, - float percent, void (*update)(float)) -{ - GLUIslider* slider = (GLUIslider*)malloc(sizeof(GLUIslider)); - slider->next = _gluiSliders; - _gluiSliders = slider; - - slider->type = GLUI_VERTICAL; - slider->parent = parent; - slider->window = glutCreateSubWindow(parent, x, y, width, height); - slider->win_x = x; - slider->win_y = y; - slider->win_w = width; - slider->win_h = height; - slider->update = update; - slider->lit = GL_FALSE; - -/* glutSetCursor(GLUT_CURSOR_LEFT_RIGHT); */ - glutDisplayFunc(_gluiDisplay); - glutEntryFunc(_gluiEntry); - glutMouseFunc(_gluiMouse); - glutMotionFunc(_gluiMotion); - glutPassiveMotionFunc(_gluiPassive); - - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - - slider->length = height; - if (height < 0) { - glutSetWindow(parent); - slider->length = glutGet(GLUT_WINDOW_HEIGHT) + height - slider->win_y; - } - - slider->knob = _gluiKnobPosition(slider, percent); - _gluiConstrainKnob(slider); - - return slider->window; -} - - -/* On a horizontal slider, the height must be non-negative. */ - -int -gluiHorizontalSlider(int parent, int x, int y, int width, int height, - float percent, void (*update)(float)) -{ - GLUIslider* slider = (GLUIslider*)malloc(sizeof(GLUIslider)); - slider->next = _gluiSliders; - _gluiSliders = slider; - - slider->type = GLUI_HORIZONTAL; - slider->parent = parent; - slider->window = glutCreateSubWindow(parent, x, y, width, height); - slider->win_x = x; - slider->win_y = y; - slider->win_w = width; - slider->win_h = height; - slider->update = update; - slider->lit = GL_FALSE; - -/* glutSetCursor(GLUT_CURSOR_LEFT_RIGHT); */ - glutDisplayFunc(_gluiDisplay); - glutEntryFunc(_gluiEntry); - glutMouseFunc(_gluiMouse); - glutMotionFunc(_gluiMotion); - glutPassiveMotionFunc(_gluiPassive); - - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - - slider->length = width; - if (width < 0) { - glutSetWindow(parent); - slider->length = glutGet(GLUT_WINDOW_WIDTH) + width - slider->win_x; - } - - slider->knob = _gluiKnobPosition(slider, percent); - _gluiConstrainKnob(slider); - - return slider->window; -} diff --git a/lib/glut-3.7.6/progs/demos/bounce/glui.h b/lib/glut-3.7.6/progs/demos/bounce/glui.h deleted file mode 100644 index 24770f3ac31d83c215a864230ab5c661e762e6c2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/glui.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - glui.h - Nate Robins, 1997. - - OpenGL based user interface. - - */ - -int -gluiHorizontalSlider(int parent, int x, int y, int width, int height, - float percent, void (*update)(float)); - -int -gluiVerticalSlider(int parent, int x, int y, int width, int height, - float percent, void (*update)(float)); - -void -gluiReshape(int width, int height); diff --git a/lib/glut-3.7.6/progs/demos/bounce/tb.c b/lib/glut-3.7.6/progs/demos/bounce/tb.c deleted file mode 100644 index 73bbc9c5220fb8a542cdf3b711f191377a9a90c0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/tb.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - */ - - -/* includes */ -#include -#include -#include -#include "tb.h" -#include "trackball.h" - -/* globals */ -static GLuint tb_lasttime; - -float curquat[4]; -float lastquat[4]; -int beginx, beginy; - -static GLuint tb_width; -static GLuint tb_height; - -static GLint tb_button = -1; -static GLboolean tb_tracking = GL_FALSE; -static GLboolean tb_animate = GL_TRUE; - -void -tbStepAnimation(void) -{ - add_quats(lastquat, curquat, curquat); -} - -void -_tbAnimate(void) -{ - tbStepAnimation(); - glutPostRedisplay(); -} - -static void -defaultAnimateFunc(int animate) -{ - if (animate) { - glutIdleFunc(_tbAnimate); - } else { - glutIdleFunc(0); - } -} - -void (*animateFunc)(int animate) = defaultAnimateFunc; - -void -_tbStartMotion(int x, int y, int time) -{ - assert(tb_button != -1); - - animateFunc(0); - tb_tracking = GL_TRUE; - tb_lasttime = time; - beginx = x; - beginy = y; -} - -void -_tbStopMotion(unsigned time) -{ - assert(tb_button != -1); - - tb_tracking = GL_FALSE; - - if (time == tb_lasttime && tb_animate) { - animateFunc(1); - } else { - if (tb_animate) { - animateFunc(0); - } - } -} - -void -tbAnimate(GLboolean animate) -{ - tb_animate = animate; -} - -void -tbInit(GLuint button) -{ - tb_button = button; - trackball(curquat, 0.0, 0.0, 0.0, 0.0); -} - -void -tbMatrix(void) -{ - GLfloat m[4][4]; - - assert(tb_button != -1); - build_rotmatrix(m, curquat); - glMultMatrixf(&m[0][0]); -} - -void -tbReshape(int width, int height) -{ - assert(tb_button != -1); - - tb_width = width; - tb_height = height; -} - -void -tbMouse(int button, int state, int x, int y) -{ - assert(tb_button != -1); - - if (state == GLUT_DOWN && button == tb_button) - _tbStartMotion(x, y, glutGet(GLUT_ELAPSED_TIME)); - else if (state == GLUT_UP && button == tb_button) - _tbStopMotion(glutGet(GLUT_ELAPSED_TIME)); -} - -void -tbMotion(int x, int y) -{ - if (tb_tracking) { - trackball(lastquat, - (2.0 * beginx - tb_width) / tb_width, - (tb_height - 2.0 * beginy) / tb_height, - (2.0 * x - tb_width) / tb_width, - (tb_height - 2.0 * y) / tb_height - ); - beginx = x; - beginy = y; - tb_animate = 1; - tb_lasttime = glutGet(GLUT_ELAPSED_TIME); - tbStepAnimation(); - } -} - -void -tbAnimateFunc(void (*func)(int animate)) -{ - animateFunc = func; -} diff --git a/lib/glut-3.7.6/progs/demos/bounce/tb.h b/lib/glut-3.7.6/progs/demos/bounce/tb.h deleted file mode 100644 index c999bd583ce38c17c0a1bea3726e6ab4c2ffb71d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/tb.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - * - * - * Usage: - * - * o call tbInit() in before any other tb call - * o call tbReshape() from the reshape callback - * o call tbMatrix() to get the trackball matrix rotation - * o call tbStartMotion() to begin trackball movememt - * o call tbStopMotion() to stop trackball movememt - * o call tbMotion() from the motion callback - * o call tbAnimate(GL_TRUE) if you want the trackball to continue - * spinning after the mouse button has been released - * o call tbAnimate(GL_FALSE) if you want the trackball to stop - * spinning after the mouse button has been released - * - * Typical setup: - * - * - void - init(void) - { - tbInit(GLUT_MIDDLE_BUTTON); - tbAnimate(GL_TRUE); - . . . - } - - void - reshape(int width, int height) - { - tbReshape(width, height); - . . . - } - - void - display(void) - { - glPushMatrix(); - - tbMatrix(); - . . . draw the scene . . . - - glPopMatrix(); - } - - void - mouse(int button, int state, int x, int y) - { - tbMouse(button, state, x, y); - . . . - } - - void - motion(int x, int y) - { - tbMotion(x, y); - . . . - } - - int - main(int argc, char** argv) - { - . . . - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - . . . - } - * - * */ - - -/* functions */ -extern void tbInit(GLuint button); -extern void tbMatrix(void); -extern void tbReshape(int width, int height); -extern void tbMouse(int button, int state, int x, int y); -extern void tbMotion(int x, int y); -extern void tbAnimate(GLboolean animate); -extern void tbAnimateFunc(void (*func)(int animate)); -extern void tbStepAnimation(void); diff --git a/lib/glut-3.7.6/progs/demos/bounce/trackball.c b/lib/glut-3.7.6/progs/demos/bounce/trackball.c deleted file mode 100644 index cce919b5ac1fa3e48ab6af59733945f5a489afe7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/trackball.c +++ /dev/null @@ -1,346 +0,0 @@ -#include -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * Trackball code: - * - * Implementation of a virtual trackball. - * Implemented by Gavin Bell, lots of ideas from Thant Tessman and - * the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129. - * - * Vector manip code: - * - * Original code from: - * David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli - * - * Much mucking with by: - * Gavin Bell - */ -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#endif -#include -#include "trackball.h" - -/* - * This size should really be based on the distance from the center of - * rotation to the point on the object underneath the mouse. That - * point would then track the mouse as closely as possible. This is a - * simple example, though, so that is left as an Exercise for the - * Programmer. - */ -#define TRACKBALLSIZE (0.8f) - -/* - * Local function prototypes (not defined in trackball.h) - */ -static float tb_project_to_sphere(float, float, float); -static void normalize_quat(float [4]); - -void -vzero(float *v) -{ - v[0] = 0.0; - v[1] = 0.0; - v[2] = 0.0; -} - -void -vset(float *v, float x, float y, float z) -{ - v[0] = x; - v[1] = y; - v[2] = z; -} - -void -vsub(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] - src2[0]; - dst[1] = src1[1] - src2[1]; - dst[2] = src1[2] - src2[2]; -} - -void -vcopy(const float *v1, float *v2) -{ - register int i; - for (i = 0 ; i < 3 ; i++) - v2[i] = v1[i]; -} - -void -vcross(const float *v1, const float *v2, float *cross) -{ - float temp[3]; - - temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); - vcopy(temp, cross); -} - -float -vlength(const float *v) -{ - return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); -} - -void -vscale(float *v, float div) -{ - v[0] *= div; - v[1] *= div; - v[2] *= div; -} - -void -vnormal(float *v) -{ - vscale(v,1.0/vlength(v)); -} - -float -vdot(const float *v1, const float *v2) -{ - return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; -} - -void -vadd(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] + src2[0]; - dst[1] = src1[1] + src2[1]; - dst[2] = src1[2] + src2[2]; -} - -/* - * Ok, simulate a track-ball. Project the points onto the virtual - * trackball, then figure out the axis of rotation, which is the cross - * product of P1 P2 and O P1 (O is the center of the ball, 0,0,0) - * Note: This is a deformed trackball-- is a trackball in the center, - * but is deformed into a hyperbolic sheet of rotation away from the - * center. This particular function was chosen after trying out - * several variations. - * - * It is assumed that the arguments to this routine are in the range - * (-1.0 ... 1.0) - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y) -{ - float a[3]; /* Axis of rotation */ - float phi; /* how much to rotate about axis */ - float p1[3], p2[3], d[3]; - float t; - - if (p1x == p2x && p1y == p2y) { - /* Zero rotation */ - vzero(q); - q[3] = 1.0; - return; - } - - /* - * First, figure out z-coordinates for projection of P1 and P2 to - * deformed sphere - */ - vset(p1,p1x,p1y,tb_project_to_sphere(TRACKBALLSIZE,p1x,p1y)); - vset(p2,p2x,p2y,tb_project_to_sphere(TRACKBALLSIZE,p2x,p2y)); - - /* - * Now, we want the cross product of P1 and P2 - */ - vcross(p2,p1,a); - - /* - * Figure out how much to rotate around that axis. - */ - vsub(p1,p2,d); - t = vlength(d) / (2.0*TRACKBALLSIZE); - - /* - * Avoid problems with out-of-control values... - */ - if (t > 1.0) t = 1.0; - if (t < -1.0) t = -1.0; - phi = 2.0 * asin(t); - - axis_to_quat(a,phi,q); -} - -/* - * Given an axis and angle, compute quaternion. - */ -void -axis_to_quat(float a[3], float phi, float q[4]) -{ - vnormal(a); - vcopy(a,q); - vscale(q,sin(phi/2.0)); - q[3] = cos(phi/2.0); -} - -/* - * Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet - * if we are away from the center of the sphere. - */ -static float -tb_project_to_sphere(float r, float x, float y) -{ - float d, t, z; - - d = sqrt(x*x + y*y); - if (d < r * 0.70710678118654752440) { /* Inside sphere */ - z = sqrt(r*r - d*d); - } else { /* On hyperbola */ - t = r / 1.41421356237309504880; - z = t*t / d; - } - return z; -} - -/* - * Given two rotations, e1 and e2, expressed as quaternion rotations, - * figure out the equivalent single rotation and stuff it into dest. - * - * This routine also normalizes the result every RENORMCOUNT times it is - * called, to keep error from creeping in. - * - * NOTE: This routine is written so that q1 or q2 may be the same - * as dest (or each other). - */ - -#define RENORMCOUNT 97 - -void -negate_quat(float q[4], float nq[4]) -{ - nq[0] = -q[0]; - nq[1] = -q[1]; - nq[2] = -q[2]; - nq[3] = q[3]; -} - -void -add_quats(float q1[4], float q2[4], float dest[4]) -{ - static int count=0; - float t1[4], t2[4], t3[4]; - float tf[4]; - -#if 0 -printf("q1 = %f %f %f %f\n", q1[0], q1[1], q1[2], q1[3]); -printf("q2 = %f %f %f %f\n", q2[0], q2[1], q2[2], q2[3]); -#endif - - vcopy(q1,t1); - vscale(t1,q2[3]); - - vcopy(q2,t2); - vscale(t2,q1[3]); - - vcross(q2,q1,t3); - vadd(t1,t2,tf); - vadd(t3,tf,tf); - tf[3] = q1[3] * q2[3] - vdot(q1,q2); - -#if 0 -printf("tf = %f %f %f %f\n", tf[0], tf[1], tf[2], tf[3]); -#endif - - dest[0] = tf[0]; - dest[1] = tf[1]; - dest[2] = tf[2]; - dest[3] = tf[3]; - - if (++count > RENORMCOUNT) { - count = 0; - normalize_quat(dest); - } -} - -/* - * Quaternions always obey: a^2 + b^2 + c^2 + d^2 = 1.0 - * If they don't add up to 1.0, dividing by their magnitued will - * renormalize them. - * - * Note: See the following for more information on quaternions: - * - * - Shoemake, K., Animating rotation with quaternion curves, Computer - * Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985. - * - Pletinckx, D., Quaternion calculus as a basic tool in computer - * graphics, The Visual Computer 5, 2-13, 1989. - */ -static void -normalize_quat(float q[4]) -{ - int i; - float mag; - - mag = sqrt(q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); - for (i = 0; i < 4; i++) q[i] /= mag; -} - -/* - * Build a rotation matrix, given a quaternion rotation. - * - */ -void -build_rotmatrix(float m[4][4], float q[4]) -{ - m[0][0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2]); - m[0][1] = 2.0 * (q[0] * q[1] - q[2] * q[3]); - m[0][2] = 2.0 * (q[2] * q[0] + q[1] * q[3]); - m[0][3] = 0.0; - - m[1][0] = 2.0 * (q[0] * q[1] + q[2] * q[3]); - m[1][1]= 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0]); - m[1][2] = 2.0 * (q[1] * q[2] - q[0] * q[3]); - m[1][3] = 0.0; - - m[2][0] = 2.0 * (q[2] * q[0] - q[1] * q[3]); - m[2][1] = 2.0 * (q[1] * q[2] + q[0] * q[3]); - m[2][2] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0]); - m[2][3] = 0.0; - - m[3][0] = 0.0; - m[3][1] = 0.0; - m[3][2] = 0.0; - m[3][3] = 1.0; -} - diff --git a/lib/glut-3.7.6/progs/demos/bounce/trackball.h b/lib/glut-3.7.6/progs/demos/bounce/trackball.h deleted file mode 100644 index 61a1d8c354cd97ec7705fb0881b2de1ffcc151d3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/bounce/trackball.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * trackball.h - * A virtual trackball implementation - * Written by Gavin Bell for Silicon Graphics, November 1988. - */ - -/* - * Pass the x and y coordinates of the last and current positions of - * the mouse, scaled so they are from (-1.0 ... 1.0). - * - * The resulting rotation is returned as a quaternion rotation in the - * first paramater. - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y); - -void -negate_quat(float *q, float *qn); - -/* - * Given two quaternions, add them together to get a third quaternion. - * Adding quaternions to get a compound rotation is analagous to adding - * translations to get a compound translation. When incrementally - * adding rotations, the first argument here should be the new - * rotation, the second and third the total rotation (which will be - * over-written with the resulting new total rotation). - */ -void -add_quats(float *q1, float *q2, float *dest); - -/* - * A useful function, builds a rotation matrix in Matrix based on - * given quaternion. - */ -void -build_rotmatrix(float m[4][4], float q[4]); - -/* - * This function computes a quaternion based on an axis (defined by - * the given vector) and an angle about which to rotate. The angle is - * expressed in radians. The result is put into the third argument. - */ -void -axis_to_quat(float a[3], float phi, float q[4]); - diff --git a/lib/glut-3.7.6/progs/demos/chess/Imakefile b/lib/glut-3.7.6/progs/demos/chess/Imakefile deleted file mode 100644 index ffe65cd2b9c7f23dacb310835dbf3707287fa646..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = chess - -SRCS = chess.c main.c animate.c pathplan.c texture.c - -OBJS = chess.o main.o animate.o pathplan.o texture.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(chess,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/chess/animate.c b/lib/glut-3.7.6/progs/demos/chess/animate.c deleted file mode 100644 index 2375d15d3152b994b371a3dc75f155f15610439b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/animate.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * animate.c - part of the chess demo in the glut distribution. - * - * (C) Henk Kok (kok@wins.uva.nl) - * - * This file can be freely copied, changed, redistributed, etc. as long as - * this copyright notice stays intact. - */ - -#include -#include -#include -#include "chess.h" - -#define MOVE_FRAC 8 - -int frac; -int stage; -int piece; -int piece2; -int X, Y, NX, NY, XD, YD; -GLfloat CX1, CY1; -GLfloat CX2, CY2, CZ2; - -FILE *inpf = NULL; - -extern int path[10][10]; -extern int board[10][10]; -extern int cycle[10][10], cyclem, cycle2; -extern int stunt[10][10], stuntm, stunt2; - -void read_move(void) -{ - char buf[256]; - - if (!inpf) - inpf = fopen("chess.inp", "r"); - - if (!inpf) - { - fprintf(stderr, "Could not open file chess.inp for reading.\n"); - exit(1); - } - - if (feof(inpf)) - return; - - fgets(buf, 200, inpf); - - CX1 = NX = X = buf[0]-'a'+1; - CY1 = NY = Y = buf[1]-'0'; - CX2 = XD = buf[2]-'a'+1; - CY2 = YD = buf[3]-'0'; - - piece = board[X][Y]; - piece2 = board[XD][YD]; - board[X][Y] = 0; - board[XD][YD] = 0; - solve_path(X, Y, XD, YD); - stage = 0; - frac = 0; - cyclem = cycle[X][Y]; - cycle2 = cycle[XD][YD]; - stuntm = stunt[X][Y]; - stunt2 = stunt[XD][YD]; - switch(path[X][Y]) - { - case NORTH: NY--; break; - case SOUTH: NY++; break; - case WEST: NX--; break; - case EAST: NX++; break; - case NORTHWEST: NX--; NY--; break; - case NORTHEAST: NX++; NY--; break; - case SOUTHWEST: NX--; NY++; break; - case SOUTHEAST: NX++; NY++; break; - } - if (NY == YD && NX == XD) - stage = 1; -} - -void proceed(void) -{ - frac ++; - if (stage == 1) - { - if (piece2 && frac <= MOVE_FRAC * 2) - { - CZ2 = -((GLfloat) frac)/MOVE_FRAC/1.8; - return; - } - frac = 0; - piece2 = 0; - stage ++; - return; - } - else if (stage == 3) - return; - else - CZ2 = 0.0; - - if (frac >= MOVE_FRAC) - { - frac = 0; - X = NX; - Y = NY; - if (NX == XD && NY == YD) - { - board[XD][YD] = piece; - cycle[XD][YD] = cyclem; - stunt[XD][YD] = stuntm; - piece = 0; - read_move(); - return; - } - switch(path[X][Y]) - { - case NORTH: NY--; break; - case SOUTH: NY++; break; - case WEST: NX--; break; - case EAST: NX++; break; - case NORTHWEST: NX--; NY--; break; - case NORTHEAST: NX++; NY--; break; - case SOUTHWEST: NX--; NY++; break; - case SOUTHEAST: NX++; NY++; break; - } - if (NX == XD && NY == YD) - stage ++; - } - CX1 = ((GLfloat) (X*(MOVE_FRAC-frac) + NX*frac))/ MOVE_FRAC; - CY1 = ((GLfloat) (Y*(MOVE_FRAC-frac) + NY*frac))/ MOVE_FRAC; -} diff --git a/lib/glut-3.7.6/progs/demos/chess/chess.c b/lib/glut-3.7.6/progs/demos/chess/chess.c deleted file mode 100644 index 87aee65240d582157e69f657b32f5df913248823..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/chess.c +++ /dev/null @@ -1,995 +0,0 @@ -/* - * chess.c - part of the chess demo in the glut distribution. - * - * (C) Henk Kok (kok@wins.uva.nl) - * - * This file can be freely copied, changed, redistributed, etc. as long as - * this copyright notice stays intact. - */ - -#include -#include -#include -#include -#include "chess.h" - -#if 0 -/* Uncomment to debug various scenarios. */ -#undef GL_VERSION_1_1 -#undef GL_EXT_texture_object -#undef GL_EXT_texture -#endif - -#ifndef GL_VERSION_1_1 - -#if defined(GL_EXT_texture_object) && defined(GL_EXT_texture) -#define glGenTextures glGenTexturesEXT -#define glBindTexture glBindTextureEXT -#else -#define USE_DISPLAY_LISTS -#endif - -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -int texturing = 0; -int reflection = 0; -int chaos = 0; -int chaosPieces = 0; -int animating = 1; -static GLuint texName[3]; - -extern int path[10][10], piece, piece2; - -extern GLfloat CX1, CY1, CX2, CY2, CZ2; - -#define WIT 0 -#define ZWART 16 - -int board[10][10]; - -GLubyte white_square[TXSX][TXSY][3]; -GLubyte black_square[TXSX][TXSY][3]; -GLubyte wood[TXSX][TXSY][3]; - -extern GLfloat lightpos[]; - -GLfloat buf[256], phase; -GLfloat transl[48]; -int list[48]; - -GLfloat width[144], height[144]; -GLfloat bwidth, bheight; - -int cycle[10][10], cyclem, cycle2; -int stunt[10][10], stuntm, stunt2; - -GLfloat blackamb[4] = { 0.2, 0.1, 0.1, 0.5 }; -GLfloat blackdif[4] = { 0.2, 0.1, 0.0, 0.5 }; -GLfloat blackspec[4] = { 0.5, 0.5, 0.5, 0.5 }; - -GLfloat whiteamb[4] = { 0.7, 0.7, 0.4, 0.5 }; -GLfloat whitedif[4] = { 0.8, 0.7, 0.4, 0.5 }; -GLfloat whitespec[4] = { 0.8, 0.7, 0.4, 0.5 }; - -GLfloat copperamb[4] = { 0.24, 0.2, 0.07, 1.0 }; -GLfloat copperdif[4] = { 0.75, 0.61, 0.22, 1.0 }; -GLfloat copperspec[4] = { 0.32, 0.25, 0.17, 1.0 }; - -GLfloat darkamb[4] = { 0.10, 0.10, 0.10, 1.0 }; -GLfloat darkdif[4] = { 0.6, 0.6, 0.6, 1.0 }; -GLfloat darkspec[4] = { 0.25, 0.25, 0.25, 1.0 }; - -GLdouble ClipPlane[4] = { 0.0, 1.0, 0.0, 0.0 }; - -void white_texture(void) -{ - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, whitedif); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, whiteamb); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, whitespec); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 40.0); -} - -void black_texture(void) -{ - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, blackdif); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, blackamb); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, blackspec); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 40.0); -} - -void copper_texture(void) -{ - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, copperdif); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, copperamb); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, copperspec); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 40.0); -} - -void dark_texture(void) -{ - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, darkdif); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, darkamb); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, darkspec); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 40.0); -} - -void border_texture(void) -{ - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, copperdif); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, copperamb); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, copperspec); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 90.0); -} - -void init_textures(void) -{ -#if !defined(USE_DISPLAY_LISTS) - glGenTextures(3, texName); -#else - texName[0] = 1000; - texName[1] = 1001; - texName[2] = 1002; -#endif - GenerateTextures(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, texName[0]); -#else - glNewList(texName[0], GL_COMPILE); -#endif - glTexImage2D(GL_TEXTURE_2D, 0, 3, TXSX, TXSY, 0, GL_RGB, - GL_UNSIGNED_BYTE, &wood[0][0][0]); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); -#if defined(USE_DISPLAY_LISTS) - glEndList(); -#endif - -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, texName[1]); -#else - glNewList(texName[1], GL_COMPILE); -#endif - glTexImage2D(GL_TEXTURE_2D, 0, 3, TXSX, TXSY, 0, GL_RGB, - GL_UNSIGNED_BYTE, &white_square[0][0][0]); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); -#if defined(USE_DISPLAY_LISTS) - glEndList(); -#endif - -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, texName[2]); -#else - glNewList(texName[2], GL_COMPILE); -#endif - glTexImage2D(GL_TEXTURE_2D, 0, 3, TXSX, TXSY, 0, GL_RGB, - GL_UNSIGNED_BYTE, &black_square[0][0][0]); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); -#if defined(USE_DISPLAY_LISTS) - glEndList(); -#endif -} - -void do_border(void) -{ - glPushMatrix(); - glTranslatef(-0.5, 0.0, -0.5); - if (texturing) - { -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, texName[0]); -#else - glCallList(texName[0]); -#endif - glEnable(GL_TEXTURE_2D); - } else - border_texture(); - - glBegin(GL_QUADS); - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.0); glVertex3f(8.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.6); glVertex3f(8.5, 0.08, -0.5); - glTexCoord2f(0.0, 0.6); glVertex3f(-0.5, 0.08, -0.5); - - glTexCoord2f(0.0, 0.0); glVertex3f(8.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.0); glVertex3f(8.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.6); glVertex3f(8.5, 0.08, 8.5); - glTexCoord2f(0.0, 0.6); glVertex3f(8.5, 0.08, -0.5); - - glTexCoord2f(0.0, 0.0); glVertex3f(8.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.0); glVertex3f(0.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.6); glVertex3f(-0.5, 0.08, 8.5); - glTexCoord2f(0.0, 0.6); glVertex3f(8.5, 0.08, 8.5); - - glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.0); glVertex3f(0.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.6); glVertex3f(-0.5, 0.08, -0.5); - glTexCoord2f(0.0, 0.6); glVertex3f(-0.5, 0.08, 8.5); - glEnd(); - - glBegin(GL_QUADS); - glNormal3f(0.0, 0.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.0); glVertex3f(8.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.6); glVertex3f(8.0, -0.08, 0.0); - glTexCoord2f(0.0, 0.6); glVertex3f(0.0, -0.08, 0.0); - - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2f(0.0, 0.0); glVertex3f(8.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.0); glVertex3f(8.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.6); glVertex3f(8.0, -0.08, 8.0); - glTexCoord2f(0.0, 0.6); glVertex3f(8.0, -0.08, 0.0); - - glNormal3f(0.0, 0.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(8.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.0); glVertex3f(0.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.6); glVertex3f(0.0, -0.08, 8.0); - glTexCoord2f(0.0, 0.6); glVertex3f(8.0, -0.08, 8.0); - - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.08, 8.0); - glTexCoord2f(0.6, 0.0); glVertex3f(0.0, 0.08, 0.0); - glTexCoord2f(0.6, 0.6); glVertex3f(0.0, -0.08, 0.0); - glTexCoord2f(0.0, 0.6); glVertex3f(0.0, -0.08, 8.0); - glEnd(); - - glBegin(GL_QUADS); - glNormal3f(0.0, 0.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, 0.08, -0.5); - glTexCoord2f(0.6, 0.0); glVertex3f(8.5, 0.08, -0.5); - glTexCoord2f(0.6, 0.6); glVertex3f(8.5, -0.08, -0.5); - glTexCoord2f(0.0, 0.6); glVertex3f(-0.5, -0.08, -0.5); - - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2f(0.0, 0.0); glVertex3f(8.5, 0.08, -0.5); - glTexCoord2f(0.6, 0.0); glVertex3f(8.5, 0.08, 8.5); - glTexCoord2f(0.6, 0.6); glVertex3f(8.5, -0.08, 8.5); - glTexCoord2f(0.0, 0.6); glVertex3f(8.5, -0.08, -0.5); - - glNormal3f(0.0, 0.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(8.5, 0.08, 8.5); - glTexCoord2f(0.6, 0.0); glVertex3f(-0.5, 0.08, 8.5); - glTexCoord2f(0.6, 0.6); glVertex3f(-0.5, -0.08, 8.5); - glTexCoord2f(0.0, 0.6); glVertex3f(8.5, -0.08, 8.5); - - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-0.5, 0.08, 8.5); - glTexCoord2f(0.6, 0.0); glVertex3f(-0.5, 0.08, -0.5); - glTexCoord2f(0.6, 0.6); glVertex3f(-0.5, -0.08, -0.5); - glTexCoord2f(0.0, 0.6); glVertex3f(-0.5, -0.08, 8.5); - glEnd(); - - if (texturing) - glDisable(GL_TEXTURE_2D); - - glPopMatrix(); -} - -void do_vlakje(void) -{ - glColor4f(1.0, 1.0, 1.0, 1.0); - glDisable(GL_LIGHTING); - glPushMatrix(); - glTranslatef(-0.5, 0.0, -0.5); - glBegin(GL_QUADS); - glVertex3f(0.0, 0.0, 0.0); - glVertex3f(8.0, 0.0, 0.0); - glVertex3f(8.0, 0.0, 8.0); - glVertex3f(0.0, 0.0, 8.0); - glEnd(); - glPopMatrix(); - glEnable(GL_LIGHTING); -} - -void do_board(void) -{ - int x,y; - - glPushMatrix(); - glTranslatef(-0.5, 0.0, -0.5); - white_texture(); - if (texturing) - { -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, texName[1]); -#else - glCallList(texName[1]); -#endif - glEnable(GL_TEXTURE_2D); - } - - glBegin(GL_QUADS); - glNormal3f(0.0, 1.0, 0.0); - for (x=0;x<8;x++) - { - for (y=x%2;y<8;y+=2) - { - glTexCoord2f(0.2*x, 0.2*y); glVertex3f(x, 0, y); - glTexCoord2f(0.17+0.2*x, 0.2*y); glVertex3f(x+1, 0, y); - glTexCoord2f(0.17+0.2*x, 0.17+0.2*y); glVertex3f(x+1, 0, y+1); - glTexCoord2f(0.2*x, 0.17+0.2*y); glVertex3f(x, 0, y+1); - } - } - glEnd(); - if (texturing) - { - glDisable(GL_TEXTURE_2D); - -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, texName[2]); -#else - glCallList(texName[2]); -#endif - glEnable(GL_TEXTURE_2D); - } else - black_texture(); - - glBegin(GL_QUADS); - glNormal3f(0.0, 1.0, 0.0); - for (x=0;x<8;x++) - { - for (y=1-(x%2);y<8;y+=2) - { - glTexCoord2f(0.2*x, 0.2*y); glVertex3f(x, 0, y); - glTexCoord2f(0.17+0.2*x, 0.2*y); glVertex3f(x+1, 0, y); - glTexCoord2f(0.17+0.2*x, 0.17+0.2*y); glVertex3f(x+1, 0, y+1); - glTexCoord2f(0.2*x, 0.17+0.2*y); glVertex3f(x, 0, y+1); - } - } - glEnd(); - if (texturing) - glDisable(GL_TEXTURE_2D); - glPopMatrix(); -} - -void do_solid(GLfloat *f, int sz, GLfloat width) -{ - GLfloat nx, ny, s; - GLfloat length; - int i,j; - - for (i=0;i bwidth) - bwidth = buf[i]; -*/ - if (buf[i+1] > bheight) - bheight = buf[i+1]; - } - - glBegin(GL_QUAD_STRIP); - for (i=2;i bwidth) - bwidth = buf[i]; - if (buf[i+1] > bheight) - bheight = buf[i+1]; - } - - for (i=2;i= 0) - (*cl)++; - if (*cl < 0 && ((rand()%300) < 4) && chaos) - { - chaosPieces++; - *cl = 0; - *st = rand() % 6; - } - if (*cl >= 48) { - chaosPieces--; - if (chaosPieces == 0 && !chaos) { - if (!animating && (speed == 0)) - glutIdleFunc(NULL); - } - *cl = -1; - } - - if (*cl < 0) - { - glPushMatrix(); - glTranslatef(x - 1.0, ((x==CX2 && y==CY2)?CZ2:0.0), 8.0 - y); - if (color == ZWART && pc == PAARD) - glRotatef(180.0, 0.0, 1.0, 0.0); - glScalef(1.2, 1.2, 1.2); - glCallList(pc+list[0]); - glPopMatrix(); - return; - } - - glPushMatrix(); - switch (*st) - { - case 0: - glTranslatef(x - 1.0, transl[(*cl)>=0?*cl:0] + - ((x==CX2 && y==CY2)?CZ2:0.0), 8.0 - y); - if (color == ZWART && pc == PAARD) - glRotatef(180.0, 0.0, 1.0, 0.0); - glScalef(1.2, 1.2, 1.2); - glCallList(list[(*cl)>=0?*cl:0]+pc); - break; - case 1: - case 2: - glTranslatef(x - 1.0, transl[(*cl)>=0?*cl:0] + - ((x==CX2 && y==CY2)?CZ2:0.0), 8.0 - y); - if (color == ZWART && pc == PAARD) - glRotatef(180.0, 0.0, 1.0, 0.0); - if ((*cl > 16) && (*cl < 32)) - { - glTranslatef(0.0, height[list[*cl]+pc]/2, 0.0); - if (*st == 1) - glRotatef(((*cl)-16) * 22.5, 1.0, 0.0, 0.0); - else - glRotatef(-((*cl)-16) * 22.5, 1.0, 0.0, 0.0); - glTranslatef(0.0, -height[list[*cl]+pc]/2, 0.0); - } - glScalef(1.2, 1.2, 1.2); - glCallList(list[*cl]+pc); - break; - case 3: - glTranslatef(x - 1.0, ((x==CX2 && y==CY2)?CZ2:0.0), 8.0 - y); - if (color == ZWART && pc == PAARD) - glRotatef(180.0, 0.0, 1.0, 0.0); - a = ((GLfloat) (*cl)) * M_PI / 12; - s = sin(a); - glRotatef(15*s, 0.0, 0.0, 1.0); - glTranslatef(0.0, width[list[0]+pc]*s*s, 0.0); - glScalef(1.2, 1.2, 1.2); - glCallList(list[0] + pc); - break; - default: - glTranslatef(x - 1.0, ((x==CX2 && y==CY2)?CZ2:0.0), 8.0 - y); - if (color == ZWART && pc == PAARD) - glRotatef(180.0, 0.0, 1.0, 0.0); - a = ((GLfloat) (*cl)) * M_PI / 12; - s = sin(a); - glRotatef(15*s, 0.0, 0.0, 1.0); - glRotatef((*cl) * 30, 0.0, 1.0, 0.0); - glTranslatef(0.0, width[list[0]+pc]*s*s, 0.0); - glScalef(1.2, 1.2, 1.2); - glCallList(list[0]+pc); - break; - } - glPopMatrix(); -} - -void do_pieces(void) -{ - int i,j; - - copper_texture(); - for (i=0;i<10;i++) - { - for (j=0;j<10;j++) - { - if (board[i][j]&16 || !(board[i][j]&15)) - continue; - do_piece(board[i][j]&15, i, j, &stunt[i][j], &cycle[i][j], WIT); - } - } - - if ((piece&16) == WIT && piece > 0) - { - glPushMatrix(); - glTranslatef(0.0, 0.2, 0.0); - do_piece(piece&15, CX1, CY1, &stuntm, &cyclem, WIT); - glPopMatrix(); - } - - if ((piece2&16) == WIT && piece2 > 0) - do_piece(piece2&15, CX2, CY1, &stunt2, &cycle2, WIT); - - dark_texture(); - for (i=0;i<10;i++) - { - for (j=0;j<10;j++) - { - if (!(board[i][j]&16) || !board[i][j]) - continue; - do_piece(board[i][j]&15, i, j, &stunt[i][j], &cycle[i][j], ZWART); - } - } - - if ((piece&16) == ZWART && piece > 0) - { - glPushMatrix(); - glTranslatef(0.0, 0.2, 0.0); - do_piece(piece&15, CX1, CY1, &stuntm, &cyclem, ZWART); - glPopMatrix(); - } - - if ((piece2&16) == ZWART && piece2 > 0) - do_piece(piece2&15, CX2, CY2, &stunt2, &cycle2, ZWART); -} - -void do_display(void) -{ - glDisable(GL_DEPTH_TEST); - /* glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); */ - if (reflection) { - glEnable(GL_STENCIL_TEST); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glStencilFunc(GL_ALWAYS, 1, 0xffffffff); - } - do_vlakje(); - glEnable(GL_DEPTH_TEST); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - - if (reflection) - { - glStencilFunc(GL_EQUAL, 1, 0xffffffff); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - glPushMatrix(); - glScalef(1.0, -1.0, 1.0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glClipPlane(GL_CLIP_PLANE1, ClipPlane); - glEnable(GL_CLIP_PLANE1); - do_pieces(); - glPopMatrix(); - glDisable(GL_CLIP_PLANE1); - glDisable(GL_STENCIL_TEST); - - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - } - -/* - * Also without texturing I want to blend, to keep the contrast of the board - * consistent. - */ - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - do_board(); - - glDisable(GL_BLEND); - - do_border(); - - glClipPlane(GL_CLIP_PLANE1, ClipPlane); - glEnable(GL_CLIP_PLANE1); - do_pieces(); - glDisable(GL_CLIP_PLANE1); -} diff --git a/lib/glut-3.7.6/progs/demos/chess/chess.dsp b/lib/glut-3.7.6/progs/demos/chess/chess.dsp deleted file mode 100644 index 0657d0c5fb06dc820c769dbeb240bb4072e7cc08..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/chess.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="chess" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=chess - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "chess.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "chess.mak" CFG="chess - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "chess - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "chess - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "chess - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "chess - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "chess - Win32 Release" -# Name "chess - Win32 Debug" -# Begin Source File - -SOURCE=.\animate.c -# End Source File -# Begin Source File - -SOURCE=.\chess.c -# End Source File -# Begin Source File - -SOURCE=.\chess.h -# End Source File -# Begin Source File - -SOURCE=.\main.c -# End Source File -# Begin Source File - -SOURCE=.\pathplan.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/chess/chess.h b/lib/glut-3.7.6/progs/demos/chess/chess.h deleted file mode 100644 index 4347d132ce06ff60cbad73e7126e4c3f5766b8d3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/chess.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * chess.h - part of the chess demo in the glut distribution. - * - * (C) Henk Kok (kok@wins.uva.nl) - * - * This file can be freely copied, changed, redistributed, etc. as long as - * this copyright notice stays intact. - */ - -#define PION 1 -#define TOREN 2 -#define PAARD 3 -#define LOPER 4 -#define KONING 5 -#define DAME 6 - -#define NORTH 1 -#define SOUTH 2 -#define EAST 3 -#define WEST 4 -#define NORTHWEST 5 -#define NORTHEAST 6 -#define SOUTHWEST 7 -#define SOUTHEAST 8 - -#define ACC 8 -#define TXSX 128 -#define TXSY 128 - -extern void GenerateTextures(void); -extern void read_move(void); -extern int solve_path(int x1, int y1, int x2, int y2); -extern void proceed(void); -extern void init(void); -extern void do_display(void); -extern void init_lists(void); diff --git a/lib/glut-3.7.6/progs/demos/chess/chess.inp b/lib/glut-3.7.6/progs/demos/chess/chess.inp deleted file mode 100644 index f4e91be52656ea71bacbf6c5fbd60b18e2f99bac..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/chess.inp +++ /dev/null @@ -1,62 +0,0 @@ -d2d4 -g8f6 -c2c4 -g7g6 -b1c3 -f8g7 -e2e4 -d7d6 -f2f3 -e8g8 -h8f8 -c1e3 -c7c6 -f1d3 -a7a6 -g1e2 -b7b5 -e1g1 -h1f1 -b8d7 -a1c1 -e7e5 -a2a3 -e5d4 -e2d4 -c8b7 -c4b5 -c6b5 -f1e1 -d7e5 -d3f1 -f8e8 -e3f2 -d6d5 -e4d5 -f6d5 -c3d5 -d8d5 -a3a4 -g7h6 -c1a1 -e5c4 -a4b5 -a6b5 -a1a8 -e8a8 -d1b3 -b7c6 -f1d3 -c4d6 -b3d5 -c6d5 -d4b5 -d6b5 -d3b5 -h6g7 -b2b4 -g7c3 -e1d1 -d5b3 -d1b1 -b3a2 diff --git a/lib/glut-3.7.6/progs/demos/chess/main.c b/lib/glut-3.7.6/progs/demos/chess/main.c deleted file mode 100644 index fa0bc7db4650cdcadcd5c5409236c2336d267434..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/main.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * main.c - part of the chess demo in the glut distribution. - * - * (C) Henk Kok (kok@wins.uva.nl) - * - * This file can be freely copied, changed, redistributed, etc. as long as - * this copyright notice stays intact. - */ - -#include -#include -#include - -#include "chess.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define M_TEXTURING 1 -#define M_REFLECTION 2 -#define M_CHAOS 3 -#define M_ANIMATION 4 - -extern int reflection, texturing, animating, chaos; - -GLfloat lightpos[4] = { 2.0, 1.0, 1.0, 0.0 }; -GLfloat lightamb[4] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat lightdif[4] = { 1.0, 1.0, 1.0, 1.0 }; - -float angle = 0.0, a2 = 45.0; -int speed = 0; -GLfloat px = -3.5, py = -16.5, pz = 9.5; - -void SetCamera(void) -{ - gluLookAt(0.0,2.0,2.0, 0.0,2.0,0.0, 0.0,1.0,0.0); - glRotatef(a2, 1.0, 0.0, 0.0); - glRotatef(angle, 0.0, 1.0, 0.0); - glTranslatef(px, -pz, py); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); -} - -void display(void) -{ - glLoadIdentity(); - SetCamera(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - do_display(); - glutSwapBuffers(); -} - -void myinit(void) -{ - glShadeModel (GL_SMOOTH); - glFrontFace(GL_CCW); - glEnable(GL_DEPTH_TEST); - - glLoadIdentity(); - glClearColor(0.0, 0.0, 0.0, 1.0); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glLightfv(GL_LIGHT0, GL_AMBIENT, lightamb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightdif); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - init_lists(); -} - -void Animate(void) -{ - px -= speed * 0.02 * sin(angle*M_PI/180); - py += speed * 0.02 * cos(angle*M_PI/180); - if (animating) - proceed(); - glutPostRedisplay(); -} - -extern int chaosPieces; - -/* ARGSUSED1 */ -void parsekey(unsigned char key, int x, int y) -{ - switch (key) - { - case 27: exit(0); - case 13: speed = 0; break; - case 'a': a2 += 5; break; - case 'z': a2 -= 5; break; - case 'A': pz += 0.5; break; - case 'Z': pz -= 0.5; break; - default: - return; - } - glutPostRedisplay(); - if (animating || (chaosPieces > 0) || (speed != 0)) - glutIdleFunc(Animate); - else - glutIdleFunc(NULL); -} - -/* ARGSUSED1 */ -void parsekey_special(int key, int x, int y) -{ - switch (key) - { - case GLUT_KEY_UP: speed += 1; break; - case GLUT_KEY_DOWN: speed -= 1; break; - case GLUT_KEY_RIGHT: angle += 5; break; - case GLUT_KEY_LEFT: angle -= 5; break; - case GLUT_KEY_HOME: - angle = 0.0, a2 = 45.0; - speed = 0; - px = -3.5, py = -16.5, pz = 9.5; - break; - default: - return; - } - glutPostRedisplay(); - if (animating || (chaosPieces > 0) || (speed != 0)) - glutIdleFunc(Animate); - else - glutIdleFunc(NULL); -} - -void handle_main_menu(int item) -{ - switch(item) { - case M_REFLECTION: - reflection = !reflection; - glutPostRedisplay(); - break; - case M_TEXTURING: - texturing = !texturing; - glutPostRedisplay(); - break; - case M_ANIMATION: - animating = !animating; - if (animating || (chaosPieces > 0) || (speed != 0)) - glutIdleFunc(Animate); - else - glutIdleFunc(NULL); - break; - case M_CHAOS: - chaos = !chaos; - if (animating || chaos || (speed != 0)) - glutIdleFunc(Animate); - break; - } -} - -void -Visible(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (animating || (chaosPieces > 0) || (speed != 0)) - glutIdleFunc(Animate); - } else { - glutIdleFunc(NULL); - } -} - -void myReshape(int w, int h) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum (-0.1, 0.1, -0.1, 0.1, 0.3, 200.0); - glMatrixMode (GL_MODELVIEW); - glViewport(0, 0, w, h); - glLoadIdentity(); - SetCamera(); -} - -int main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE | GLUT_MULTISAMPLE | GLUT_STENCIL); - glutCreateWindow("Chess"); - glutDisplayFunc(display); - glutInitWindowPosition(200, 0); - glutInitWindowSize(300, 300); - glutKeyboardFunc(parsekey); - glutSpecialFunc(parsekey_special); - glutReshapeFunc(myReshape); - glutVisibilityFunc(Visible); - myinit(); - - glutCreateMenu(handle_main_menu); - glutAddMenuEntry("Toggle texturing", M_TEXTURING); - glutAddMenuEntry("Toggle reflection", M_REFLECTION); - glutAddMenuEntry("-----------------", -1); - glutAddMenuEntry("Toggle animation", M_ANIMATION); - glutAddMenuEntry("Toggle CHAOS!", M_CHAOS); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutSwapBuffers(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/chess/pathplan.c b/lib/glut-3.7.6/progs/demos/chess/pathplan.c deleted file mode 100644 index 8feeb4406220132f12ccf2f372fecb761c07d8f5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/pathplan.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * pathplan.c - part of the chess demo in the glut distribution. - * - * (C) Henk Kok (kok@wins.uva.nl) - * - * This file can be freely copied, changed, redistributed, etc. as long as - * this copyright notice stays intact. - */ - -#include "chess.h" - -extern int board[10][10]; - -int path[10][10]; -int hops[10][10]; - -int steps; -int cur_hops; - -void init_board(void) -{ - int i,j; - for (i=0;i<10;i++) - { - for(j=0;j<10;j++) - { - hops[i][j] = 0; - path[i][j] = (board[i][j]?-1:0); - } - } -} - -void test_exit(int i, int j, int dir) -{ - if (i<0 || i>9 || j<0 || j>9) - return; - if (path[i][j]) - return; - steps ++; - path[i][j] = dir; - hops[i][j] = cur_hops + 1; -} - -int solve_path(int x1, int y1, int x2, int y2) -{ - int i,j; - init_board(); - path[x2][y2] = 9; - hops[x2][y2] = 1; - path[x1][y1] = 0; - cur_hops = 1; - for (;;) - { - steps = 0; - for (i=0;i<10;i++) - { - for (j=0;j<10;j++) - { - if (hops[i][j] != cur_hops) - continue; - test_exit(i, j-1, SOUTH); - test_exit(i, j+1, NORTH); - test_exit(i-1, j, EAST); - test_exit(i+1, j, WEST); - } - } - for (i=0;i<10;i++) - { - for (j=0;j<10;j++) - { - if (hops[i][j] != cur_hops) - continue; - test_exit(i-1, j-1, SOUTHEAST); - test_exit(i+1, j-1, SOUTHWEST); - test_exit(i-1, j+1, NORTHEAST); - test_exit(i+1, j+1, NORTHWEST); - } - } - cur_hops++; - if (path[x1][y1]) - return 1; - if (steps == 0) - return 0; - } -} diff --git a/lib/glut-3.7.6/progs/demos/chess/texture.c b/lib/glut-3.7.6/progs/demos/chess/texture.c deleted file mode 100644 index 4c78a0eb10d04a98f43885077db5e79ad1fac644..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/chess/texture.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * chess.c - part of the chess demo in the glut distribution. - * - * (C) Henk Kok (kok@wins.uva.nl) - * - * This file can be freely copied, changed, redistributed, etc. as long as - * this copyright notice stays intact. - */ - -/* - * Marble texture - shamelessly ripped from siggraph92_C23.shar - */ - -#include -#include -#include -#include -#include "chess.h" - -#define DOT(a,b) (a[0] * b[0] + a[1] * b[1] + a[2] * b[2]) - -#define B 256 - -static int p[B + B + 2]; -static GLfloat g[B + B + 2][3]; -static int start = 1; - -#define setup(i,b0,b1,r0,r1) \ - t = vec[i] + 10000.; \ - b0 = ((int)t) & (B-1); \ - b1 = (b0+1) & (B-1); \ - r0 = t - (int)t; \ - r1 = r0 - 1.; - -GLfloat noise3(GLfloat vec[3]) -{ - int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11; - GLfloat rx0, rx1, ry0, ry1, rz0, rz1, *q, sx, sy, sz, a, b, c, d, t, u, v; - register int i, j; - - if (start) { - start = 0; - init(); - } - - setup(0, bx0,bx1, rx0,rx1); - setup(1, by0,by1, ry0,ry1); - setup(2, bz0,bz1, rz0,rz1); - - i = p[ bx0 ]; - j = p[ bx1 ]; - - b00 = p[ i + by0 ]; - b10 = p[ j + by0 ]; - b01 = p[ i + by1 ]; - b11 = p[ j + by1 ]; -#define at(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] ) - -#define surve(t) ( t * t * (3. - 2. * t) ) - -#define lerp(t, a, b) ( a + t * (b - a) ) - - sx = surve(rx0); - sy = surve(ry0); - sz = surve(rz0); - - - q = g[ b00 + bz0 ] ; u = at(rx0,ry0,rz0); - q = g[ b10 + bz0 ] ; v = at(rx1,ry0,rz0); - a = lerp(sx, u, v); - - q = g[ b01 + bz0 ] ; u = at(rx0,ry1,rz0); - q = g[ b11 + bz0 ] ; v = at(rx1,ry1,rz0); - b = lerp(sx, u, v); - - c = lerp(sy, a, b); /* interpolate in y at lo x */ - - q = g[ b00 + bz1 ] ; u = at(rx0,ry0,rz1); - q = g[ b10 + bz1 ] ; v = at(rx1,ry0,rz1); - a = lerp(sx, u, v); - - q = g[ b01 + bz1 ] ; u = at(rx0,ry1,rz1); - q = g[ b11 + bz1 ] ; v = at(rx1,ry1,rz1); - b = lerp(sx, u, v); - - d = lerp(sy, a, b); /* interpolate in y at hi x */ - - return 1.5 * lerp(sz, c, d); /* interpolate in z */ -} - -void -init(void) -{ - int i, j, k; - GLfloat v[3], s; - -/* Create an array of random gradient vectors uniformly on the unit sphere */ - - srand(1); - for (i = 0 ; i < B ; i++) { - do { /* Choose uniformly in a cube */ - for (j=0 ; j<3 ; j++) - v[j] = (GLfloat)((rand() % (B + B)) - B) / B; - s = DOT(v,v); - } while (s > 1.0); /* If not in sphere try again */ - s = sqrt(s); - for (j = 0 ; j < 3 ; j++) /* Else normalize */ - g[i][j] = v[j] / s; - } - -/* Create a pseudorandom permutation of [1..B] */ - - for (i = 0 ; i < B ; i++) - p[i] = i; - for (i = B ; i > 0 ; i -= 2) { - k = p[i]; - p[i] = p[j = rand() % B]; - p[j] = k; - } - -/* Extend g and p arrays to allow for faster indexing */ - - for (i = 0 ; i < B + 2 ; i++) { - p[B + i] = p[i]; - for (j = 0 ; j < 3 ; j++) - g[B + i][j] = g[i][j]; - } -} - -GLfloat turbulence(GLfloat x, GLfloat y, GLfloat z, GLfloat lofreq, GLfloat hifreq) -{ - GLfloat freq, t, p[3]; - - p[0] = x + 123.456; - p[1] = y; - p[2] = z; - - t = 0; - for (freq = lofreq ; freq < hifreq ; freq *= 2.) { - t += fabs(noise3(p)) / freq; - p[0] *= 2.; - p[1] *= 2.; - p[2] *= 2.; - } - return t - 0.3; /* readjust to make mean value = 0.0 */ -} - -GLfloat marble(GLfloat x, GLfloat y, GLfloat z) -{ - GLfloat m; - m = turbulence(x, y, z, 0.3, 400.0); - if (m > 1.0) - m = 1.0; - if (m < 0.0) - m = 0.0; - return m; -} - -extern GLubyte white_square[TXSX][TXSY][3]; -extern GLubyte black_square[TXSX][TXSY][3]; -extern GLubyte wood[TXSX][TXSY][3]; - -void GenerateTextures(void) -{ - int i,j,k; - GLfloat x,y,t,w,b; - for (i=0;i 1.0) - t = 1.0; - - wood[i][j][0] = (0.6*t)*255; - wood[i][j][1] = (0.4*t)*255; - wood[i][j][2] = (0.5-0.4*t)*255; - - x = ((GLfloat) i)/20.0; - y = ((GLfloat) j)/20.0; - t = marble(x, y, 0.0); - - t = 0.2 + t; - if (t > 1.0) - t = 1.0; - - w = t; - b = 0.8 -t; - if (b < 0.0 ) - b = 0.0; - - for (k=0;k<3;k++) - { - white_square[i][j][k] = w*255; - black_square[i][TXSY-j][k] = b*255; - } - } - } -} diff --git a/lib/glut-3.7.6/progs/demos/geoface/Imakefile b/lib/glut-3.7.6/progs/demos/geoface/Imakefile deleted file mode 100644 index 30214a6cab53b73dd25975fed69a50574cc78d4f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/Imakefile +++ /dev/null @@ -1,15 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = geoface - -SRCS = display.c fileio.c main.c make_face.c muscle.c -OBJS = display.o fileio.o main.o make_face.o muscle.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(geoface,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/geoface/README b/lib/glut-3.7.6/progs/demos/geoface/README deleted file mode 100644 index 329c5ac4f16f30d85168f28aae18e30fd2a0c7ba..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/README +++ /dev/null @@ -1,32 +0,0 @@ - -The geoface example in this directory is a modified version of the code -presented in Appendix 1 of Frederic I Parke and Keith Waters's most -interesting book "Computer Facial Animation" (A.K. Peters, ISBN -1-56881-014-8). Information about the book can be found at: - - http://www.research.digital.com/CRL/personal/waters/book.html - -From the book's Preface: - - This book is about computer facial models, computer generated facial - images, and facial animation. In particular it concerns the - principles of creating face models and the manipulation or control of - computer generated facial attributes. In addition, various sections - in the book describe and explain the development of specific computer - facial animation techniques over the past twenty years, as well as - those expected in the near future. - -The original Appendix 1 code (using the aux library) can be found at: - - http://www.research.digital.com/CRL/books/facebook/appendix1/appendix1.html - -I've improved the code to add menus, better mouse motion handling, -arrow key support, and less terminal output. - -DEC has a program called DECface that looks even more involved: - - http://www.research.digital.com/CRL/projects/DECface/DECface.html - -If the example here intrigues you, you'll definitely want the book. - -- Mark Kilgard diff --git a/lib/glut-3.7.6/progs/demos/geoface/display.c b/lib/glut-3.7.6/progs/demos/geoface/display.c deleted file mode 100644 index 223d6fc9ced4cdad260ffd742c57c0d27907e940..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/display.c +++ /dev/null @@ -1,313 +0,0 @@ -/* ========================================================================== - DISPLAY_C -============================================================================= - - FUNCTION NAMES - - void paint_muscles -- displays the muscles. - void paint_polyline -- paint the polyline. - paint_polygons -- display the polygons. - calculate_polygon_vertex_normal -- calculate the vertex norms. - calc_normal -- calculate a normal. - - C SPECIFICATIONS - - void paint_muscles ( HEAD *face ) - void paint_polyline ( HEAD *face ) - paint_polygons ( HEAD *face, int type, int normals ) - calculate_polygon_vertex_normal ( HEAD *face ) - calc_normal ( float *p1, float *p2, float *p3, - float *norm ) - - DESCRIPTION - - This module is responsible for displaying the face geometry. - This module comes as is with no warranties. - - HISTORY - 16-Dec-94 Keith Waters (waters) at DEC's Cambridge Research Lab - Created. - -============================================================================ */ - -#include /* C header for any math functions */ -#include /* C header for standard I/O */ -#include /* For String compare */ -#include -#ifndef _WIN32 -#include -#include -#endif -#include /* OpenGl headers */ - -#include "head.h" /* local header for the face */ - -void calc_normal ( float *p1, float *p2, float *p3, float *norm ); - -/* ========================================================================= */ -/* paint_muscles */ -/* ========================================================================= */ -/* -** Displays the face muscles. -** -*/ - -#define PAINT_MUSCLES_DEBUG 0 -void paint_muscles ( HEAD *face ) -{ - int i,j; - float v1[3], v2[3] ; - - glLineWidth ( 3.0 ) ; - glColor3f ( 100.0, 200.0, 200.0 ) ; - - for ( i=0; inmuscles; i++ ) { - - for (j=0; j<3; j++) { - v1[j] = face->muscle[i]->head[j] ; - v2[j] = face->muscle[i]->tail[j] ; - } - -#if PAINT_MUSCLES_DEBUG - fprintf (stderr, "head x: %f y: %f z: %f\n", v1[0], v1[1], v1[2] ) ; - fprintf (stderr, "tail x: %f y: %f z: %f\n\n", v2[0], v2[1], v2[2] ) ; -#endif - - glBegin ( GL_LINE_STRIP ) ; - glVertex3f ( v1[0], v1[1], v1[2] ) ; - glVertex3f ( v2[0], v2[1], v2[2] ) ; - glEnd ( ) ; - } - glLineWidth ( 1.0 ) ; -} - -/* ========================================================================= */ -/* paint_polyline */ -/* ========================================================================= */ -/* -** Displays the polyline. -** -*/ - -void paint_polyline ( HEAD *face ) -{ - int i,j,cnt ; - float v1[3] ; - static float r ; - - glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ; - glLineWidth ( 1.0 ) ; - glColor3f ( 100.0, 100.0, 0.0 ) ; - - glPushMatrix ( ) ; - glRotatef ( r, 1.0, 1.0, 1.0 ) ; - - glBegin ( GL_LINE_STRIP ) ; - for (cnt=0, i=0; inpolylinenodes; i++ ) { - - for (j=0; j<3; j++, cnt++) - v1[j] = face->polyline[cnt] ; - -#if PAINT_POLYLINE_DEBUG - printf ("x: %f y: %f z: %f\n", v1[0], v1[1], v1[2] ) ; -#endif - - glVertex3f ( v1[0], v1[1], v1[2] ) ; - } - - glEnd ( ) ; - - glPopMatrix ( ) ; - glFlush ( ) ; - -} - - -/* ========================================================================= */ -/* paint_polygons */ -/* ========================================================================= */ -/* -** Paints the polygons of the face. -** Type indicates if they are to be -** drawn (type=0), -** flat shaded (type=1), -** smooth shaded (type=2). -*/ - -void paint_polygons ( HEAD *face, int type, int normals ) -{ - int i, j ; - float v1[3], v2[3], v3[3] ; - float norm1[3], norm2[3], norm3[3] ; - float vn1[3], vn2[3], vn3[3] ; - - glLineWidth ( 2.0 ) ; - - for (i=0; inpolygons; i++ ) - { - for (j=0; j<3; j++) { - v1[j] = face->polygon[i]->vertex[0]->xyz[j] ; - v2[j] = face->polygon[i]->vertex[1]->xyz[j] ; - v3[j] = face->polygon[i]->vertex[2]->xyz[j] ; - } - - if ( type == 0 ) { - - for (j=0; j<3; j++) { - norm1[j] = face->polygon[i]->vertex[0]->norm[j] ; - norm2[j] = face->polygon[i]->vertex[1]->norm[j] ; - norm3[j] = face->polygon[i]->vertex[2]->norm[j] ; - } - glBegin ( GL_LINE_LOOP ) ; { - glNormal3f ( norm1[0], norm1[1], norm1[2] ) ; - glVertex3f ( v1[0], v1[1], v1[2] ) ; - glNormal3f ( norm2[0], norm2[1], norm2[2] ) ; - glVertex3f ( v2[0], v2[1], v2[2] ) ; - glNormal3f ( norm3[0], norm3[1], norm3[2] ) ; - glVertex3f ( v3[0], v3[1], v3[2] ) ; - } glEnd ( ) ; - - } /* end if drawn */ - - if ( type == 1 ) { - - for (j=0; j<3; j++) { - norm1[j] = face->polygon[i]->vertex[0]->norm[j] ; - norm2[j] = face->polygon[i]->vertex[1]->norm[j] ; - norm3[j] = face->polygon[i]->vertex[2]->norm[j] ; - } - glBegin ( GL_TRIANGLES ) ; { - glNormal3f ( norm1[0], norm1[1], norm1[2] ) ; - glVertex3f ( v1[0], v1[1], v1[2] ) ; - glNormal3f ( norm2[0], norm2[1], norm2[2] ) ; - glVertex3f ( v2[0], v2[1], v2[2] ) ; - glNormal3f ( norm3[0], norm3[1], norm3[2] ) ; - glVertex3f ( v3[0], v3[1], v3[2] ) ; - } glEnd ( ) ; - - } /* end if drawn */ - - - else if ( type == 1) { - for (j=0; j<3; j++) { - norm1[j] = face->polygon[i]->vertex[0]->norm[j] ; - norm2[j] = face->polygon[i]->vertex[1]->norm[j] ; - norm3[j] = face->polygon[i]->vertex[2]->norm[j] ; - } - } /* end if flat */ - - else if ( type == 2 ) { - - averaged_vertex_normals ( face, i, norm1, norm2, norm3 ) ; - - } /* end if smoothed */ - - if ( type ) { - - glBegin ( GL_TRIANGLES ) ; { - glNormal3f ( norm1[0], norm1[1], norm1[2] ) ; - glVertex3f ( v1[0], v1[1], v1[2] ) ; - glNormal3f ( norm2[0], norm2[1], norm2[2] ) ; - glVertex3f ( v2[0], v2[1], v2[2] ) ; - glNormal3f ( norm3[0], norm3[1], norm3[2] ) ; - glVertex3f ( v3[0], v3[1], v3[2] ) ; - } glEnd ( ) ; - } /* endif painted */ - - if ( normals ) { - for (j=0; j<3; j++) { - vn1[j] = face->polygon[i]->vertex[0]->xyz[j] + norm1[j] ; - vn2[j] = face->polygon[i]->vertex[1]->xyz[j] + norm2[j] ; - vn3[j] = face->polygon[i]->vertex[2]->xyz[j] + norm3[j] ; - } - - glBegin ( GL_LINE_STRIP ) ; { - glVertex3f ( v1[0], v1[1], v1[2] ) ; - glVertex3f ( vn1[0], vn1[1], vn1[2] ) ; - } glEnd ( ) ; - - - glBegin ( GL_LINES ) ; { - glVertex3f ( v2[0], v2[1], v2[2] ) ; - glVertex3f ( vn2[0], vn2[1], vn2[2] ) ; - } glEnd ( ) ; - - - glBegin ( GL_LINES ) ; { - glVertex3f ( v3[0], v3[1], v3[2] ) ; - glVertex3f ( vn3[0], vn3[1], vn3[2] ) ; - } glEnd ( ) ; - - } - } - glLineWidth ( 1.0 ) ; -} - -/* ========================================================================= */ -/* calculate_polygon_vertex_normal. */ -/* ========================================================================= */ -/* -** As it says. -*/ - -void -calculate_polygon_vertex_normal ( HEAD *face ) -{ - int i,j,k ; - float p1[3], p2[3], p3[3] ; - float norm[3] ; - for (i=0; inpolygons; i++ ) - { - for (j=0; j<3; j++) - p1[j] = face->polygon[i]->vertex[0]->xyz[j] ; - for (j=0; j<3; j++) - p2[j] = face->polygon[i]->vertex[1]->xyz[j] ; - for (j=0; j<3; j++) - p3[j] = face->polygon[i]->vertex[2]->xyz[j] ; - - calc_normal ( p1, p2, p3, norm ) ; - - for (j=0; j<3; j++) - for (k=0; k<3; k++) - face->polygon[i]->vertex[j]->norm[k] = norm[k] ; - } -} - -/* ========================================================================= */ -/* calc_normal. */ -/* ========================================================================= */ -/* -** Calculates the normal vector from three vertices. -*/ -void -calc_normal ( float *p1, float *p2, float *p3, float *norm ) -{ - float coa, cob, coc ; - float px1, py1, pz1 ; - float px2, py2, pz2 ; - float px3, py3, pz3 ; - - float absvec ; - - px1 = p1[0] ; - py1 = p1[1] ; - pz1 = p1[2] ; - - px2 = p2[0] ; - py2 = p2[1] ; - pz2 = p2[2] ; - - px3 = p3[0] ; - py3 = p3[1] ; - pz3 = p3[2] ; - - coa = -(py1 * (pz2-pz3) + py2*(pz3-pz1) + py3*(pz1-pz2)) ; - cob = -(pz1 * (px2-px3) + pz2*(px3-px1) + pz3*(px1-px2)) ; - coc = -(px1 * (py2-py3) + px2*(py3-py1) + px3*(py1-py2)) ; - - absvec = sqrt ((double) ((coa*coa) + (cob*cob) + (coc*coc))) ; - - norm[0] = coa/absvec ; - norm[1] = cob/absvec ; - norm[2] = coc/absvec ; -} diff --git a/lib/glut-3.7.6/progs/demos/geoface/faceline.dat b/lib/glut-3.7.6/progs/demos/geoface/faceline.dat deleted file mode 100644 index 0a4a26dc06f7553299b179365c4b587507700170..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/faceline.dat +++ /dev/null @@ -1,257 +0,0 @@ -256 - 0.000 -2.280 8.875 - 0.000 -2.456 8.980 - 0.000 -2.701 9.005 - -0.509 -2.230 8.865 - -0.577 -2.414 8.962 - -0.585 -2.670 8.987 - -1.027 -2.201 8.544 - -1.135 -2.372 8.658 - -1.182 -2.556 8.657 - -1.570 -2.221 8.025 - -1.805 -2.354 8.037 - -1.151 -3.134 8.433 - -0.565 -3.181 8.583 - 0.000 -3.216 8.631 - 0.000 -3.545 8.640 - -0.582 -3.517 8.557 - -1.158 -3.443 8.329 - -1.999 -2.568 7.895 - -2.121 -2.222 7.917 - -2.395 -2.073 7.692 - -2.213 -2.797 7.639 - -1.358 -3.775 8.198 - -0.837 -3.880 8.520 - -0.590 -3.910 8.645 - 0.000 -3.914 8.646 - 0.000 -4.564 8.583 - -0.700 -4.532 8.584 - -1.058 -4.461 8.459 - -1.579 -4.290 8.085 - -1.995 -3.660 7.538 - -2.572 -2.969 7.100 - -2.746 -1.859 7.124 - -2.990 -1.690 6.640 - -2.751 -3.033 6.688 - -2.147 -4.156 7.145 - -1.620 -4.770 7.945 - -1.081 -4.944 8.281 - -0.699 -4.994 8.360 - 0.000 -5.021 8.360 - 0.000 -5.412 7.852 - -0.602 -5.444 7.853 - -0.990 -5.418 7.854 - -1.597 -5.169 7.416 - -2.342 -4.202 6.524 - -3.374 -1.344 5.866 - -3.118 -3.043 5.708 - -2.559 -4.377 5.351 - -1.600 -5.205 6.353 - -0.945 -5.501 6.834 - -0.542 -5.601 7.067 - 0.000 -5.636 7.068 - -3.232 -3.283 3.861 - -3.686 -2.281 4.257 - -3.797 -0.831 4.703 - -4.136 -0.236 3.398 - -4.093 -1.041 3.153 - -3.959 -1.660 2.889 - -4.295 0.021 2.170 - -3.485 -2.252 2.286 - -2.740 -3.866 3.388 - -2.315 -4.570 4.819 - -0.966 -5.443 4.589 - -0.556 -5.511 4.589 - 0.000 -5.553 4.589 - 0.000 -7.061 3.726 - -0.436 -6.971 3.553 - -0.926 -6.872 3.196 - -2.414 -4.428 2.801 - -3.120 -3.336 1.701 - -3.204 -2.934 1.002 - -3.120 -5.511 0.149 - -3.119 -5.510 0.702 - -2.343 -6.297 1.993 - -2.389 -6.885 1.708 - -1.053 -8.199 2.359 - -0.336 -8.622 2.554 - 0.000 -8.714 2.559 - 0.000 -2.278 8.878 - 0.000 -2.064 9.078 - 0.000 -1.830 9.119 - -0.484 -1.720 9.116 - -0.512 -2.003 9.070 - -0.521 -2.231 8.876 - -1.170 -1.928 9.000 - -1.083 -2.093 8.703 - -1.032 -2.198 8.549 - -1.773 -2.057 8.299 - -1.572 -2.217 8.022 - -2.039 -1.735 8.072 - -1.285 -1.456 8.655 - -0.456 -1.314 8.986 - 0.000 -1.461 8.920 - 0.000 -0.710 8.876 - -0.237 -0.648 8.971 - -0.446 -0.648 8.971 - -1.316 -0.911 8.428 - -2.206 -1.333 7.855 - -2.274 -1.067 7.654 - -1.276 -0.534 8.239 - -0.753 -0.441 8.580 - -0.534 -0.074 8.714 - -0.191 -0.056 9.150 - -0.171 -0.426 9.051 - 0.000 -0.441 9.053 - 0.000 -0.232 9.570 - -0.168 -0.224 9.570 - -0.560 0.058 9.376 - -0.767 0.046 9.042 - -0.843 -0.128 8.806 - -0.978 -0.276 8.684 - -1.091 -0.204 8.513 - -0.905 -0.325 8.292 - -1.320 -0.188 8.010 - -0.895 0.194 8.202 - -1.002 0.217 8.462 - -1.077 0.307 8.703 - -1.017 0.325 8.904 - -0.900 0.099 9.033 - -0.574 0.252 9.485 - -0.118 -0.099 9.722 - 0.000 -0.098 9.723 - 0.000 0.512 9.855 - -0.158 0.508 9.820 - -0.587 0.550 9.557 - -0.660 0.776 9.277 - -0.242 1.137 9.532 - -0.208 0.854 9.713 - 0.000 0.862 9.749 - 0.000 1.192 9.559 - 0.000 1.445 9.385 - -0.250 1.387 9.361 - -0.495 1.190 9.132 - -0.526 1.443 8.894 - -0.284 1.740 9.158 - 0.000 1.817 9.200 - 0.000 2.180 8.995 - -0.322 2.100 8.927 - -0.667 1.571 8.598 - -1.312 0.849 8.093 - -2.093 0.282 7.775 - -2.327 -0.805 7.560 - -3.108 -0.078 7.267 - -3.182 0.649 7.412 - -3.805 0.868 6.790 - -4.108 1.022 5.942 - -4.360 1.772 4.387 - -4.187 2.611 4.596 - -4.028 1.464 6.118 - -3.708 2.236 6.211 - -3.359 1.693 6.896 - -2.876 1.352 7.271 - -2.100 1.207 7.559 - -1.337 1.263 8.027 - -1.270 1.664 7.809 - -0.723 2.023 8.332 - -0.357 2.487 8.669 - 0.000 2.608 8.699 - 0.000 2.909 8.460 - -0.392 2.825 8.420 - -0.623 2.411 8.173 - -0.853 2.189 7.760 - -1.119 2.259 7.352 - -1.460 1.887 7.332 - -2.095 1.531 7.388 - -2.765 1.605 7.294 - -3.156 1.949 6.974 - -3.399 2.397 6.443 - -3.657 2.603 6.413 - -3.904 2.477 5.990 - -4.092 1.936 5.653 - -3.994 2.776 5.641 - -4.121 3.106 4.611 - -4.105 3.756 4.772 - -3.883 2.972 6.298 - -3.928 4.609 5.060 - -3.866 3.453 6.724 - -3.788 3.260 6.846 - -3.556 2.930 6.956 - -3.201 2.669 6.903 - -3.001 2.353 7.274 - -2.571 2.177 7.578 - -2.113 2.147 7.561 - -1.602 2.246 7.687 - -1.210 2.404 7.438 - -0.967 2.609 7.023 - -0.638 2.684 7.661 - -0.584 3.052 8.055 - -0.431 3.211 8.189 - 0.000 3.262 8.208 - 0.000 3.664 8.101 - -0.487 3.639 8.101 - -0.760 3.420 7.947 - -0.829 3.210 7.554 - -1.006 2.963 7.129 - -1.309 3.290 7.370 - -1.772 3.474 7.615 - -2.268 3.493 7.824 - -2.704 3.315 7.781 - -3.129 3.065 7.391 - -3.421 3.337 7.438 - -3.624 3.650 7.348 - -3.730 3.872 7.238 - -3.285 4.274 7.783 - -2.569 4.558 8.182 - -1.841 4.676 8.353 - -1.067 4.327 8.469 - -1.150 4.072 8.222 - -1.853 4.265 8.296 - -2.509 4.191 8.259 - -3.195 3.970 7.895 - -2.963 3.637 7.879 - -2.381 3.830 8.100 - -1.782 3.850 8.071 - -1.227 3.657 8.072 - -0.450 4.377 8.175 - -0.991 4.862 8.093 - -1.731 5.054 7.962 - -2.474 4.937 7.775 - -3.170 4.658 7.356 - -3.605 4.334 6.861 - -3.890 3.957 6.326 - -3.941 3.197 5.815 - -3.590 5.230 6.286 - -3.102 5.495 6.831 - -2.330 5.690 7.264 - -1.576 5.648 7.632 - -0.888 5.445 7.804 - -0.406 5.084 7.869 - 0.000 4.670 7.912 - 0.000 6.172 7.196 - -0.354 6.247 7.229 - -0.746 6.328 7.263 - -1.426 6.432 7.212 - -2.244 6.373 6.969 - -3.105 6.092 6.495 - -3.639 5.648 5.945 - -3.562 6.154 5.544 - -3.109 6.630 5.986 - -2.176 7.198 6.426 - -1.281 7.365 6.600 - -0.547 7.488 6.717 - -0.286 7.510 6.750 - 0.000 7.522 6.764 - -0.973 2.625 7.123 - -1.041 2.870 7.229 - -1.295 3.155 7.470 - -1.693 3.288 7.715 - -2.196 3.267 7.924 - -2.545 3.146 7.881 - -2.856 2.944 7.491 - -3.091 2.634 7.003 - -2.846 2.481 7.474 - -2.383 2.398 7.878 - -2.012 2.370 7.961 - -1.574 2.388 7.987 - -1.197 2.479 7.638 diff --git a/lib/glut-3.7.6/progs/demos/geoface/fileio.c b/lib/glut-3.7.6/progs/demos/geoface/fileio.c deleted file mode 100644 index c1f95e35ea4358e1f91524d7027cd4d9340f926e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/fileio.c +++ /dev/null @@ -1,289 +0,0 @@ -/* ========================================================================== - FILEIO_C -============================================================================= - - FUNCTION NAMES - - read_polygon_indices -- reads the polygon indices file. - read_polygon_line -- read the face polyline. - read_muscles -- reads the face muscles. - read_expression_vectors -- reads a vector of expressions. - add_muscle_to_face -- add a muscle to the face. - - C SPECIFICATIONS - - read_polygon_indices ( FileName, face ) - read_polygon_line ( FileName, face ) - read_muscles ( FileName, face ) - read_expression_vectors ( FileName, face ) - add_muscle_to_face ( m, face ) - - DESCRIPTION - - This module is responsible for reading the face data files. - This module comes as is with no warranties. - - SIDE EFFECTS - Unknown. - - HISTORY - Created 16-Dec-94 Keith Waters at DEC's Cambridge Research Lab. - Modified 22-Nov-96 Sing Bing Kang (sbk@crl.dec.com) - modified function read_expression_vectors() to allocate - memory to face->expression (done once) - -============================================================================ */ - -#include /* C header for any math functions */ -#include /* C header for standard I/O */ -#include /* For String compare */ -#include -#ifndef _WIN32 -#include -#include -#endif - -/* - * from /usr/include/sys/types.h - * Just in case TRUE and FALSE are not defined - */ - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - - -#include "head.h" /* local header for the face data structure */ -#include "memory.h" - -void add_muscle_to_face ( MUSCLE *m , HEAD *face ); - -/* ========================================================================= */ -/* read_polygon_indices */ -/* ========================================================================= */ -/* -** Read in the face data file (x,y,z) -** -*/ - -void -read_polygon_indices ( char *FileName, HEAD *face ) - { - FILE *InFile ; - int i, ii ; - - /* - * Check the FileName. - */ - if (( InFile = fopen ( FileName, "r" )) == 0 ) { - fprintf ( stderr, "can't open input file: %s\n", FileName ) ; - exit(-1) ; - } - - fscanf ( InFile,"%d", &face->npindices ) ; - - /* - * Allocate some memory. - */ - face->indexlist = ( int * ) malloc ( face->npindices*4 * sizeof ( int )) ; - - for( i=0, ii=0; inpindices; i++, ii+=4 ) - fscanf(InFile,"%d%d%d%d", - &face->indexlist[ii], &face->indexlist[ii+1], - &face->indexlist[ii+2], &face->indexlist[ii+3] ) ; - - fclose( InFile ) ; - - } - -/* ========================================================================= */ -/* read_polygon_line */ -/* ========================================================================= */ -/* -** Read in the face data file (x,y,z) -** -*/ - -void -read_polygon_line ( char *FileName, HEAD *face ) -{ - FILE *InFile ; - int i, ii ; - - /* - * Check the FileName. - */ - if (( InFile = fopen ( FileName, "r" )) == 0 ) { - fprintf ( stderr, "can't open input file: %s\n", FileName ) ; - exit(-1) ; - } - - fscanf ( InFile, "%d", &face->npolylinenodes ) ; - - /* - * Allocate some memory. - */ - face->polyline = ( float * ) malloc ( face->npolylinenodes*3 * sizeof ( float )) ; - - for ( i=0, ii=0; inpolylinenodes; i++, ii+=3 ) { - - fscanf ( InFile,"%f%f%f", - &face->polyline[ii], - &face->polyline[ii+1], - &face->polyline[ii+2] ) ; - } - - fclose ( InFile ) ; - -} - -/* ============================================================= - read_muscles ( FileName, face ) - ========================================================== */ -/* -** This function reads in the muscles. -** -*/ - -void -read_muscles ( char *FileName, HEAD *face ) -{ - FILE *Infile; - int i, nm ; - MUSCLE *m ; - - /* - * Open the file to be read. - */ - if((Infile = fopen(FileName,"r")) == 0) { - fprintf(stderr,"Opening error on file:%10s\n", FileName) ; - exit(0); - } - fscanf ( Infile, "%d", &nm ) ; - - for ( i=0; i < nm; i++ ) { - - m = _new ( MUSCLE ) ; - - fscanf (Infile, "%s %f %f %f %f %f %f %f %f %f %f", - &(*m->name), - &m->head[0], &m->head[1], &m->head[2], - &m->tail[0], &m->tail[1], &m->tail[2], - &m->fs, &m->fe, &m->zone, &m->clampv ) ; - - m->active = FALSE ; - m->mstat = 0.0 ; - - if (verbose) { - fprintf(stderr,"%s: %d\n========================\nhx: %2.2f hy: %2.2f hz: %2.2f\ntx: %2.2f ty: %2.2f tz: %2.2f\n fall start: %2.2f\n fall end: %2.2f\n zone: %2.2f\n clampv: %2.2f mstat: %2.2f\n\n", - m->name, i, - m->head[0], - m->head[1], - m->head[2], - m->tail[0], - m->tail[1], - m->tail[2], - m->fs, - m->fe, - m->zone, - m->clampv, - m->mstat ) ; - } - - add_muscle_to_face ( m, face ) ; - - } - - fclose(Infile) ; -} - - -/* ========================================================================= */ -/* read_expression_vectors */ -/* ========================================================================= */ -/* sbk - added allocated var - 11/22/96 */ - -/* -** Read in the expression vectors. -*/ -void -read_expression_vectors ( char *FileName, HEAD *face ) -{ - FILE *InFile ; - int i, k ; - EXPRESSION *e ; - static int allocated = 0; - - /* - * Check the FileName. - */ - if (( InFile = fopen ( FileName, "r" )) == 0 ) { -#if 0 /* Silently ignore the lack of expression vectors. I never got the file. -mjk */ - fprintf ( stderr, "can't open input file: %s\n", FileName ) ; -#endif - face->expression = NULL; - return; - } - - fscanf ( InFile, "%d", &face->nexpressions ) ; - fprintf( stderr, "Number of expressions = %d\n", face->nexpressions ) ; - - /* - * Allocate some memory. - */ - if (!allocated) - face->expression = (EXPRESSION **)malloc( face->nexpressions* - sizeof(EXPRESSION *) ); - - for ( i=0; inexpressions; i++) { - if (allocated) - e = face->expression[i]; - else - e = face->expression[i] = _new(EXPRESSION) ; - - fscanf ( InFile, "%s\n", &(*e->name) ) ; - - fprintf ( stderr, "%s\n", e->name ) ; - - for ( k=0; k < 17; k++) { - - fscanf ( InFile,(k==16) ? "%f\n" : "%f ", &e->m[k]) ; - fprintf (stderr,"%2.2f ", e->m[k] ) ; - } - fprintf (stderr, "\n") ; - } - - fclose ( InFile ) ; - - allocated = 1; -} - -/* =============================================================== - add_muscle_to_face ( m, face ) - =============================================================== */ -/* -** adds a muscle to the face muscle list. -** -*/ - -void -add_muscle_to_face ( MUSCLE *m , HEAD *face ) -{ - int nn ; - - if(face->nmuscles == 0) - face->muscle = _new_array(MUSCLE *, 50) ; - else if(face->nmuscles % 50 == 0) - face->muscle = _resize_array(face->muscle,MUSCLE *,face->nmuscles+50) ; - - nn = face->nmuscles ; - face->muscle[nn] = m ; - - face->nmuscles++ ; - -} - diff --git a/lib/glut-3.7.6/progs/demos/geoface/geoface.dsp b/lib/glut-3.7.6/progs/demos/geoface/geoface.dsp deleted file mode 100644 index c1c8a7d9d141814a2748a20562e67e9ca4ca8eec..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/geoface.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="geoface" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=geoface - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "geoface.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "geoface.mak" CFG="geoface - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "geoface - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "geoface - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "geoface - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "geoface - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "geoface - Win32 Release" -# Name "geoface - Win32 Debug" -# Begin Source File - -SOURCE=.\display.c -# End Source File -# Begin Source File - -SOURCE=.\fileio.c -# End Source File -# Begin Source File - -SOURCE=.\head.h -# End Source File -# Begin Source File - -SOURCE=.\main.c -# End Source File -# Begin Source File - -SOURCE=.\make_face.c -# End Source File -# Begin Source File - -SOURCE=.\memory.h -# End Source File -# Begin Source File - -SOURCE=.\muscle.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/geoface/head.h b/lib/glut-3.7.6/progs/demos/geoface/head.h deleted file mode 100644 index 8b02cf8ed9d5afa4c5dc75f83647a9761b0b6ff4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/head.h +++ /dev/null @@ -1,101 +0,0 @@ -typedef struct TAG { - - int poly ; /* an index to a tagged polygon */ - int vert ; /* an index to the tagged vertex */ - -} TAG ; - -typedef struct EXPRESSION { - - char name[80] ; /* name of the expression */ - float m[20] ; /* an expression vector */ - float bias ; /* an bias control for the muscles */ - -} EXPRESSION ; - - -typedef struct MUSCLE { - - int active ; /* activity switch for the muscle */ - float head[3] ; /* head of the muscle vector */ - float tail[3] ; /* tail of the muscle vector */ - float zone, /* zone of influence */ - fs, fe, mval ; /* zone, start, end, contraction */ - char name[80] ; /* name of the muscle */ - float clampv ; /* clamping value */ - float mstat ; /* current contraction value */ - -} MUSCLE ; - - -typedef struct VERTEX { - - float xyz[3] ; /* x,y,z of the vertex (modified) */ - float nxyz[3] ; /* x,y,z of the vertex (never modified) */ - int np ; /* number of polygons associated with node */ - int plist[30] ; /* list of polygons associated with node */ - float norm[3] ; /* polygon vertex normal */ - -} VERTEX ; - - -typedef struct POLYGON { - - VERTEX *vertex[3] ; /* pointer to an array of three vertices */ - -} POLYGON ; - - -typedef struct HEAD { - - int npindices ; /* number of polygon indices */ - int *indexlist ; /* integer index list of size npindices*4 */ - - int npolylinenodes ; /* number of nodes in the poly line */ - float *polyline ; /* xyz nodes in the poly line */ - - int npolygons ; /* total number of polygons */ - POLYGON **polygon ; /* pointer to the polygon list */ - - int neyelidtags ; /* number of eyelid tags */ - TAG **eyelidtag ; /* pointer to the eyelid tags */ - float eyelidang ; /* rotation of the eyelids */ - - int njawtags ; /* number of jaw tags */ - TAG **jawtag ; /* pointer to the eyelid tags */ - float jawang ; /* rotation of the jaw */ - - int nmuscles ; /* number of muscles in the face */ - MUSCLE **muscle ; /* pointer to the muscle list */ - - int nexpressions ; /* number of expressions in the */ - EXPRESSION **expression ; /* point to an expression vector */ - -} HEAD ; - -/* main.c */ -extern int verbose; - -/* make_face.c */ -HEAD *create_face ( char *, char * ) ; -void averaged_vertex_normals ( HEAD *face, int p, - float *n1, float *n2, float *n3 ) ; -void face_reset ( HEAD *face ); -void expressions ( HEAD *face, int e ); -void data_struct ( HEAD *face ); - -/* display.c */ -void paint_polyline ( HEAD *face ) ; -void paint_polygons ( HEAD *face, int type, int normals ) ; -void calculate_polygon_vertex_normal ( HEAD *face ); -void paint_muscles ( HEAD *face ); - -/* muscle.c */ -void activate_muscle (HEAD *face, float *vt, float *vh, float fstart, float fin, float ang, float val); - -/* fileio.c */ -void read_polygon_indices ( char *FileName, HEAD *face ); -void read_polygon_line ( char *FileName , HEAD *face ); -void read_muscles ( char *FileName , HEAD *face ); -void read_expression_vectors ( char *FileName , HEAD *face ); - diff --git a/lib/glut-3.7.6/progs/demos/geoface/index.dat b/lib/glut-3.7.6/progs/demos/geoface/index.dat deleted file mode 100644 index 8eafd7f49d1daad0d5963ffd1d4c496c7918d8e4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/index.dat +++ /dev/null @@ -1,239 +0,0 @@ -238 -1 2 5 4 -2 3 6 5 -7 4 5 8 -8 5 6 9 -1000 11 8 9 -10 7 8 11 -6 3 14 13 -9 6 13 12 -1000 11 9 12 -11 12 17 18 -12 13 16 17 -13 14 15 16 -16 15 25 24 -1000 16 24 23 -17 16 23 22 -18 17 22 21 -1000 19 11 18 -20 19 18 21 -24 25 26 27 -23 24 27 28 -22 23 28 29 -21 22 29 30 -32 20 21 31 -31 21 30 35 -35 30 29 36 -29 28 37 36 -28 27 38 37 -27 26 39 38 -38 39 40 41 -37 38 41 42 -36 37 42 43 -35 36 43 44 -34 31 35 44 -33 32 31 34 -45 33 34 46 -46 34 44 47 -47 44 43 48 -48 43 42 49 -42 41 50 49 -41 40 51 50 -50 51 64 63 -49 50 63 62 -48 49 62 61 -1000 47 48 61 -63 64 65 66 -66 65 77 76 -67 66 76 75 -62 63 66 67 -73 67 75 74 -68 62 67 73 -60 61 62 68 -52 47 61 60 -53 46 47 52 -54 45 46 53 -55 54 53 56 -1000 58 55 56 -1000 58 56 57 -56 53 52 57 -1000 58 57 59 -57 52 60 59 -58 59 69 70 -59 60 68 69 -70 69 72 71 -69 68 73 72 -1000 72 73 74 -1000 58 146 55 -146 145 54 55 -145 144 45 54 -1000 144 142 45 -142 141 33 45 -141 98 32 33 -98 97 20 32 -97 89 19 20 -1000 89 87 19 -1000 19 87 11 -87 88 10 11 -87 85 86 88 -1000 87 84 85 -84 81 82 85 -85 82 83 86 -81 80 79 82 -82 79 78 83 -89 90 84 87 -90 91 81 84 -91 92 80 81 -94 93 92 91 -1000 95 94 91 -96 95 91 90 -97 96 90 89 -98 99 96 97 -99 100 95 96 -100 101 102 95 -102 103 94 95 -103 104 93 94 -106 105 104 103 -1000 102 106 103 -1000 107 106 102 -1000 109 101 100 -1000 110 109 100 -111 110 100 112 -111 117 118 110 -110 118 108 109 -118 119 107 109 -119 120 106 107 -120 121 105 106 -123 122 121 120 -124 123 120 119 -117 124 119 118 -115 116 117 111 -113 112 100 99 -141 113 99 98 -114 115 111 112 -1000 114 112 113 -116 125 124 117 -1000 124 127 123 -127 128 122 123 -126 129 128 127 -125 126 127 124 -131 130 129 126 -132 131 126 125 -115 132 125 116 -134 135 130 131 -133 134 131 132 -133 132 115 114 -139 114 113 140 -140 113 141 142 -1000 143 140 142 -1000 144 143 142 -1000 148 144 145 -170 148 145 146 -1000 147 170 146 -147 171 169 170 -169 149 148 170 -149 150 144 148 -150 151 143 144 -151 152 140 143 -152 153 139 140 -1000 153 138 139 -139 138 133 114 -1000 153 138 139 -138 137 134 133 -137 136 135 134 -156 157 136 137 -155 156 137 138 -154 155 138 153 -1000 152 154 153 -159 158 157 156 -160 159 156 155 -161 160 155 154 -163 162 161 154 -164 163 154 152 -165 164 152 151 -166 165 151 150 -167 166 150 149 -169 168 167 149 -171 174 168 169 -174 177 178 168 -168 178 179 167 -179 180 166 167 -180 181 165 166 -181 182 164 165 -182 183 163 164 -183 184 162 163 -1000 184 185 162 -185 186 161 162 -186 187 160 161 -187 188 159 160 -188 189 158 159 -191 190 189 188 -192 191 188 187 -193 192 187 186 -194 193 186 185 -214 193 194 195 -214 207 192 193 -208 207 214 213 -213 214 195 196 -212 213 196 197 -211 212 197 198 -200 211 198 199 -178 200 199 179 -177 201 200 178 -201 210 211 200 -210 209 212 211 -209 208 213 212 -206 191 192 207 -205 206 207 208 -204 205 208 209 -203 204 209 210 -202 203 210 201 -176 202 201 177 -1000 174 176 177 -1000 191 215 190 -215 228 229 190 -228 231 230 229 -231 242 243 230 -232 241 242 231 -232 231 228 227 -227 228 215 216 -216 215 191 206 -217 216 206 205 -226 227 216 217 -233 232 227 226 -240 241 232 233 -239 240 233 234 -234 233 226 225 -225 226 217 218 -218 217 205 204 -219 218 204 203 -224 225 218 219 -235 234 225 224 -238 239 234 235 -237 238 235 236 -236 235 224 223 -223 224 219 220 -221 220 202 176 -220 219 203 202 -1000 175 237 236 -1000 175 236 223 -175 223 220 221 -222 221 176 174 -1000 222 174 171 -175 221 222 173 -173 222 171 172 -1000 172 171 147 -147 171 169 170 -244 245 194 185 -245 246 195 194 -246 247 196 195 -247 248 197 196 -248 249 198 197 -249 250 199 198 -250 251 179 199 -179 251 252 180 -181 180 252 253 -182 181 253 254 -183 182 254 255 -184 183 255 256 -185 184 256 244 diff --git a/lib/glut-3.7.6/progs/demos/geoface/main.c b/lib/glut-3.7.6/progs/demos/geoface/main.c deleted file mode 100644 index 8545fdfc8fc0f02150aa0236ec2655dd0df70a85..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/main.c +++ /dev/null @@ -1,572 +0,0 @@ -/* aux2glut conversion Copyright (c) Mark J. Kilgard, 1997 */ - -/* ========================================================================== - MAIN_C -============================================================================= - - FUNCTION NAMES - - movelight -- moves the light source. - rotatexface -- rotates the face about the X axis. - rotateyface -- rotates the face about the Y axis. - myinit -- local initialization. - faceinit -- glutInit(&argc, argv); initialize the face data. - display -- display functions. - myReshape -- window respahe callback. - error_exit -- error function. - usage -- usage function. - GLenum Key -- keyboard mappings. - main -- main program. - - - C SPECIFICATIONS - - void movelight ( int x, int y ) - void rotatexface ( int x, int y ) - void rotateyface ( int x, int y ) - void myinit ( void ) - faceinit ( void ) - void display ( void ) - void myReshape ( GLsizei w, GLsizei h ) - void error_exit ( char *error_message ) - void usage ( char *name ) - static GLenum Key ( int key, GLenum mask ) - void main ( int argc, char** argv ) - - DESCRIPTION - - This module is where everything starts. This module comes as is - with no warranties. - - SIDE EFFECTS - Unknown. - - HISTORY - Created 16-Dec-94 Keith Waters at DEC's Cambridge Research Lab. - Modified 22-Nov-96 Sing Bing Kang (sbk@crl.dec.com) - Added function print_mesg to print out all the keyboard commands - Added the following functionalities: - rereading the expression file - changing the expression (based on the expression file) - quitting the program with 'q' or 'Q' in addition to 'Esc' - -============================================================================ */ - -#include -#include -#include -#include - -#include "memory.h" /* Local memory allocation macros */ -/*#include "window.h" Local window header */ -#include "head.h" /* Local head data structure */ - -int verbose = 0; - -void print_mesg(void); - -int DRAW_MODE = 2 ; - -HEAD *face ; - -static int spinxlight = 0 ; -static int spinylight = 0 ; -static int spinxface = 0 ; -static int spinyface = 0 ; - - -/* ========================================================================= */ -/* motion */ -/* ========================================================================= */ -/* -** Rotate the face and light about. -*/ - -int rotate = 0, movelight = 0, origx, origy; - -void motion ( int x, int y ) -{ - if (rotate) { - spinyface = ( spinyface + (x - origx) ) % 360 ; - spinxface = ( spinxface + (y - origy) ) % 360 ; - origx = x; - origy = y; - glutPostRedisplay(); - } - if (movelight) { - spinylight = ( spinylight + (x - origx ) ) % 360 ; - spinxlight = ( spinxlight + (y - origy ) ) % 360 ; - origx = x; - origy = y; - glutPostRedisplay(); - } -} - -void -mouse(int button, int state, int x, int y) -{ - switch(button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) { - origx = x; - origy = y; - rotate = 1; - } else { - rotate = 0; - } - break; - case GLUT_MIDDLE_BUTTON: - if (state == GLUT_DOWN) { - origx = x; - origy = y; - movelight = 1; - } else { - movelight = 0; - } - break; - } -} - - -/* ========================================================================= */ -/* myinit */ -/* ========================================================================= */ -/* -** Do the lighting thing. -*/ - -void myinit ( void ) -{ - glEnable ( GL_LIGHTING ) ; - glEnable ( GL_LIGHT0 ) ; - glDepthFunc ( GL_LEQUAL ) ; - glEnable ( GL_DEPTH_TEST ) ; -} - - -/* ========================================================================= */ -/* faceinit */ -/* ========================================================================= */ -/* -** Read in the datafiles and glutInit(&argc, argv); initialize the face data structures. -*/ - -void -faceinit ( void ) -{ - face = create_face ( "index.dat", "faceline.dat") ; - read_muscles ("muscle.dat", face ) ; - read_expression_vectors ("expression-vectors.dat", face ) ; - data_struct ( face ) ; -} - -void -read_expressions(void) -{ - read_expression_vectors ("expression-vectors.dat", face ) ; -} - -/* ========================================================================= */ -/* display */ -/* ========================================================================= */ -/* -** Here's were all the display action takes place. -*/ - -void display ( void ) -{ - GLfloat position [] = { 30.0, 70.0, 100.0, 1.0 } ; - - glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ; - - glPushMatrix ( ) ; - - glTranslatef ( 0.0, 0.0, -30.0 ) ; - - glRotated ( (GLdouble) spinxface, 1.0, 0.0, 0.0 ) ; - glRotated ( (GLdouble) spinyface, 0.0, 1.0, 0.0 ) ; - - glPushMatrix ( ) ; - glRotated ( (GLdouble) spinxlight, 1.0, 0.0, 0.0 ) ; - glRotated ( (GLdouble) spinylight, 0.0, 1.0, 0.0 ) ; - glLightfv ( GL_LIGHT0, GL_POSITION, position ) ; - - glTranslated ( 0.0, 0.0, 50.0 ) ; - glDisable ( GL_LIGHTING ) ; - glColor3f ( 0.0, 1.0, 1.0 ) ; - glutWireCube ( 0.1 ) ; - glEnable ( GL_LIGHTING ) ; - glPopMatrix ( ) ; - - calculate_polygon_vertex_normal ( face ) ; - - paint_polygons ( face, DRAW_MODE, 0 ) ; - - if ( DRAW_MODE == 0 ) - paint_muscles ( face ) ; - - glPopMatrix(); - - glutSwapBuffers(); -} - - -/* ========================================================================= */ -/* myReshape */ -/* ========================================================================= */ -/* -** What to do of the window is modified. -*/ - -void myReshape ( GLsizei w, GLsizei h ) -{ - glViewport ( 0,0,w,h ) ; - glMatrixMode ( GL_PROJECTION ) ; - glLoadIdentity( ) ; - gluPerspective( 40.0, (GLfloat) w/(GLfloat) h, 1.0, 100.0 ) ; - glMatrixMode ( GL_MODELVIEW ) ; -} - - -/* ========================================================================= */ -/* error_exit */ -/* ========================================================================= */ -/* -** Problems! -*/ - -void error_exit( char *error_message ) -{ - fprintf ( stderr, "%s\n", error_message ) ; - exit( 1 ) ; -} - - -/* ========================================================================= */ -/* usage */ -/* ========================================================================= */ -/* -** At startup provide usage modes. -*/ - -void usage( char *name ) -{ - fprintf( stderr, "\n%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", - "usage: ", name, " [options]\n\n", - " Options:\n", - " -display displayname specify an X server connection\n", - " -geometry geometry specify window geometry in pixels\n", - " -rgba ask for rgba visual\n", - " -index ask for color index visual\n", - " -doublebuffer ask for double buffered visual\n", - " -singlebuffer ask for single buffered visual\n", - " -accum ask for accumulation buffer\n", - " -alpha ask for alpha buffer\n", - " -depth ask for depth buffer\n", - " -stencil ask for stencil buffer\n", - " -aux nauxbuf specify number of aux buffers\n", - " -level planes specify planes (0=main,>0=overlay,<0=underlay\n", - " -transparent ask for transparent overlay\n", - " -opaque ask for opaque overlay\n" - ); - - exit( 1); -} - -/* ========================================================================= */ -/* Key */ -/* ========================================================================= */ -/* -** Actions on a key press. -*/ - -static int m = 0, e = 0; - -/* ARGSUSED1 */ -static void Key ( unsigned char key, int x, int y ) -{ - char title[512]; - - switch ( key ) { - case 27 : - case 'q' : - case 'Q' : - exit (0) ; - - case 'r' : - case 'R' : - printf ("Rereading expression file\n"); - read_expressions(); - e = 0; /* reset the expression count variable */ - glutPostRedisplay(); - break; - - case 'a' : - printf ("increment muscle: %s\n", face->muscle[m]->name ) ; - - /* set the muscle activation */ - face->muscle[m]->mstat += 0.1 ; - - activate_muscle ( face, - face->muscle[m]->head, - face->muscle[m]->tail, - face->muscle[m]->fs, - face->muscle[m]->fe, - face->muscle[m]->zone, - 0.1 ) ; - glutPostRedisplay(); - break; - - case 'A' : - printf ("decrement muscle: %s\n", face->muscle[m]->name ) ; - face->muscle[m]->mstat -= 0.1 ; - - activate_muscle ( face, - face->muscle[m]->head, - face->muscle[m]->tail, - face->muscle[m]->fs, - face->muscle[m]->fe, - face->muscle[m]->zone, - -0.1 ) ; - glutPostRedisplay(); - break; - - case 'b' : - DRAW_MODE++ ; - - if ( DRAW_MODE >= 3 ) DRAW_MODE = 0 ; - printf ("draw mode: %d\n", DRAW_MODE ) ; - glutPostRedisplay(); - break; - - case 'c' : - face_reset ( face ) ; - glutPostRedisplay(); - break; - - case 'n' : - m++ ; - if ( m >= face->nmuscles ) m = 0 ; - sprintf(title, "geoface (%s)", face->muscle[m]->name); - glutSetWindowTitle(title); - break; - - case 'e' : - if (face->expression) { - face_reset ( face ) ; - expressions ( face, e ) ; - - e++ ; - if ( e >= face->nexpressions ) e = 0 ; - glutPostRedisplay(); - } - break; - - case 'h' : - - print_mesg(); - - } -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - char title[512]; - - switch(key) { - case GLUT_KEY_RIGHT: - m++ ; - if ( m >= face->nmuscles ) m = 0 ; - sprintf(title, "geoface (%s)", face->muscle[m]->name); - glutSetWindowTitle(title); - break; - case GLUT_KEY_LEFT: - m-- ; - if ( m < 0 ) m = face->nmuscles - 1 ; - sprintf(title, "geoface (%s)", face->muscle[m]->name); - glutSetWindowTitle(title); - break; - case GLUT_KEY_UP: - face->muscle[m]->mstat += 0.1 ; - - activate_muscle ( face, - face->muscle[m]->head, - face->muscle[m]->tail, - face->muscle[m]->fs, - face->muscle[m]->fe, - face->muscle[m]->zone, - 0.1 ) ; - glutPostRedisplay(); - break; - case GLUT_KEY_DOWN: - face->muscle[m]->mstat -= 0.1 ; - - activate_muscle ( face, - face->muscle[m]->head, - face->muscle[m]->tail, - face->muscle[m]->fs, - face->muscle[m]->fe, - face->muscle[m]->zone, - -0.1 ) ; - glutPostRedisplay(); - break; - } -} - - -/* ========================================================================= * - * print_mesg - * Written by: Sing Bing Kang (sbk@crl.dec.com) - * Date: 11/22/96 - * ========================================================================= */ -/* -** Prints out help message -*/ -void -print_mesg(void) -{ -fprintf(stderr,"\n"); -fprintf(stderr,"a: draw mode (to `pull' the current facial muscle)\n"); -fprintf(stderr,"A: draw mode (to `contract' current facial muscle)\n"); -fprintf(stderr,"c: face reset\n"); -fprintf(stderr,"n: next muscle (to select another facial muscle to manipulate)\n"); -fprintf(stderr,"e: next expression\n"); -fprintf(stderr,"b: to change draw mode: wireframe->polygonal patches->smooth surface\n"); -fprintf(stderr,"r,R: reread the expression file (../face-data/expression-vectors.dat)\n (Note: this resets the expression sequence to the beginning)\n"); -fprintf(stderr,"q,Q,Esc: quit\n"); -fprintf(stderr,"h: outputs this message\n"); -fprintf(stderr,"\n"); -} - -void -muscle_select(int value) -{ - char title[512]; - - /* Select muscle. */ - m = value; - sprintf(title, "geoface (%s)", face->muscle[m]->name); - glutSetWindowTitle(title); -} - -void -main_menu_select(int value) -{ - char title[512]; - - switch(value) { - case 1: - face_reset ( face ) ; - glutPostRedisplay(); - break; - case 2: - print_mesg(); - break; - case 3: - face->muscle[m]->mstat += 0.25 ; - activate_muscle ( face, - face->muscle[m]->head, - face->muscle[m]->tail, - face->muscle[m]->fs, - face->muscle[m]->fe, - face->muscle[m]->zone, - +0.25 ) ; - glutPostRedisplay(); - break; - case 4: - face->muscle[m]->mstat -= 0.25 ; - activate_muscle ( face, - face->muscle[m]->head, - face->muscle[m]->tail, - face->muscle[m]->fs, - face->muscle[m]->fe, - face->muscle[m]->zone, - -0.25 ) ; - glutPostRedisplay(); - break; - case 5: - m++ ; - if ( m >= face->nmuscles ) m = 0 ; - sprintf(title, "geoface (%s)", face->muscle[m]->name); - glutSetWindowTitle(title); - break; - case 666: - exit(0); - break; - } -} - -void -draw_mode_select(int value) -{ - DRAW_MODE = value; - glutPostRedisplay(); -} - -void -make_menus(void) -{ - int i, j, muscle_menu, draw_mode_menu; - char *entry; - - muscle_menu = glutCreateMenu(muscle_select); - for (i=0; inmuscles; i++) { - entry = face->muscle[i]->name; - for(j=(int) strlen(entry)-1; j>=0; j--) { - if (entry[j] == '_') entry[j] = ' '; - } - glutAddMenuEntry(entry, i); - } - draw_mode_menu = glutCreateMenu(draw_mode_select); - glutAddMenuEntry("Wireframe", 0); - glutAddMenuEntry("Polygonal patches", 1); - glutAddMenuEntry("Smooth surface", 2); - glutCreateMenu(main_menu_select); - glutAddMenuEntry("Pull muscle up", 3); - glutAddMenuEntry("Pull muscle down", 4); - glutAddMenuEntry("Next muscle", 5); - glutAddSubMenu("Select muscle", muscle_menu); - glutAddSubMenu("Draw mode", draw_mode_menu); - glutAddMenuEntry("Face reset", 1); - glutAddMenuEntry("Print help", 2); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -/* ========================================================================= */ -/* main */ -/* ========================================================================= */ -/* -** All the initialization and action takes place here. -*/ - -int main ( int argc, char** argv ) -{ - int i; - - glutInitWindowSize ( 400, 600 ) ; - glutInit(&argc, argv); - for(i=1; i /* C header for any math functions */ -#include /* C header for standard I/O */ -#include /* For String compare */ -#include -#ifndef _WIN32 -#include -#include -#endif - -#include "memory.h" /* Local memory allocation macros */ -#include "head.h" /* local header for the face */ - -void reflect_polygon ( POLYGON *poly, HEAD *face ); -void add_polygon_to_face ( POLYGON *p, HEAD *face ); -void make_face ( HEAD *face ); - -/* ========================================================================= */ -/* face_reset */ -/* ========================================================================= */ -/* -** Resets the geometry of the face to neutral. -** -*/ - -void face_reset ( HEAD *face ) -{ - int i,j,k ; - - - for ( i=0; inpolygons; i++ ) { - - for ( j=0; j<3; j++ ) { - - for ( k=0; k<3; k++ ) { - face->polygon[i]->vertex[j]->xyz[k] = - face->polygon[i]->vertex[j]->nxyz[k] ; - } - } - } -} - - -/* ========================================================================= - expressions - Written by: Sing Bing Kang - Date: 11/22/96 - ========================================================================= */ -/* -** Produces the facial expressions as indicated by the muscle contraction -** vector -** -*/ - -void -expressions ( HEAD *face, int e ) -{ - int m; - - fprintf( stderr, "Expression: %s\n", face->expression[e]->name ); - - for (m=0; mnmuscles; m++) { - float m_val = face->expression[e]->m[m], - m_diff = m_val - face->muscle[m]->mstat; - - face->muscle[m]->mstat = m_val; - activate_muscle ( face, - face->muscle[m]->head, - face->muscle[m]->tail, - face->muscle[m]->fs, - face->muscle[m]->fe, - face->muscle[m]->zone, - m_diff ) ; - } - -} - -/* ========================================================================= */ -/* create_face */ -/* ========================================================================= */ -/* -** create the default structures for the face and retrun a pointer. -** -*/ - -HEAD *create_face ( char *f1, char *f2 ) -{ - HEAD *h ; - - h = _new ( HEAD ) ; - - h->npolygons = 0 ; - h->npindices = 0 ; - h->npolylinenodes = 0 ; - h->nmuscles = 0 ; - - read_polygon_indices ( f1, h ) ; - read_polygon_line ( f2, h ) ; - - make_face ( h ) ; - - return ( h ) ; - -} - -/* ========================================================================= */ -/* make_face */ -/* ========================================================================= */ -/* -** makes the face from the two input files. -** -*/ - -void -make_face ( HEAD *face ) -{ - POLYGON *p ; - int i, ii, j, k, - p1, p2, p3, p4 ; - int parray[4] ; - - for ( i=0, ii=0; i < face->npindices; i++,ii+=4 ) { - - p1 = face->indexlist[ii] -1 ; - p2 = face->indexlist[ii+1] -1 ; - p3 = face->indexlist[ii+2] -1 ; - p4 = face->indexlist[ii+3] -1 ; - - for (j=0; j<4; j++) - parray[j] = face->indexlist[ii+j] -1; - - if ( p1 == 999 ) { - - p = _new ( POLYGON ) ; - for (j=0; j<3; j++) { - p->vertex[j] = _new ( VERTEX ) ; - p->vertex[j]->np = 0 ; - } - - for (j=0; j<3; j++) - p->vertex[0]->nxyz[j] = - p->vertex[0]->xyz[j] = face->polyline[ p2*3 + j ] ; - - for (j=0; j<3; j++) - p->vertex[1]->nxyz[j] = - p->vertex[1]->xyz[j] = face->polyline[ p3*3 + j ] ; - - for (j=0; j<3; j++) - p->vertex[2]->nxyz[j] = - p->vertex[2]->xyz[j] = face->polyline[ p4*3 + j ] ; - - add_polygon_to_face ( p, face ) ; - reflect_polygon ( p, face ) ; - } - else { - p = _new ( POLYGON ) ; - for (j=0; j<3; j++) { - p->vertex[j] = _new ( VERTEX ) ; - p->vertex[j]->np = 0 ; - } - - for (k=0; k<3; k++) { - for (j=0; j<3; j++) - p->vertex[k]->nxyz[j] = - p->vertex[k]->xyz[j] = face->polyline[ parray[k]*3 + j ] ; - } - - add_polygon_to_face ( p, face ) ; - reflect_polygon ( p, face ) ; - - p = _new ( POLYGON ) ; - for (j=0; j<3; j++) { - p->vertex[j] = _new ( VERTEX ) ; - p->vertex[j]->np = 0 ; - } - - for (j=0; j<3; j++) - p->vertex[0]->nxyz[j] = - p->vertex[0]->xyz[j] = face->polyline[ p1*3 + j ] ; - - for (j=0; j<3; j++) - p->vertex[1]->nxyz[j] = - p->vertex[1]->xyz[j] = face->polyline[ p3*3 + j ] ; - - for (j=0; j<3; j++) - p->vertex[2]->nxyz[j] = - p->vertex[2]->xyz[j] = face->polyline[ p4*3 + j ] ; - - add_polygon_to_face ( p, face ) ; - reflect_polygon ( p, face ) ; - } - } - -} - -/* ========================================================================= */ -/* add_polygon_to_face */ -/* ========================================================================= */ -/* -** add a polygon to the face structure. -** -*/ - -void -add_polygon_to_face ( POLYGON *p, HEAD *face ) -{ - int nn ; - - if(face->npolygons == 0) - face->polygon = _new_array(POLYGON *, 500) ; - else if(face->npolygons % 500 == 0) - face->polygon = _resize_array(face->polygon,POLYGON *,face->npolygons+500) ; - - nn = face->npolygons ; - face->polygon[nn] = p ; - - face->npolygons++ ; - -} - - -/* ========================================================================= */ -/* reflect_polygon */ -/* ========================================================================= */ -/* -** Reflects all the polygons in the half-face and adds them to -** the data structure. -** -*/ - -void -reflect_polygon ( POLYGON *poly, HEAD *face ) -{ - POLYGON *newp ; - float temp[3] ; - int i, j ; - - /* - * Allocate memory for the new polygon. - */ - newp = _new ( POLYGON ) ; - for (j=0; j<3; j++) { - newp->vertex[j] = _new ( VERTEX ) ; - newp->vertex[j]->np = 0 ; - } - - /* - * Load the old polygon values. - */ - for (i=0; i<3; i++) - for (j=0; j<3; j++) - newp->vertex[i]->nxyz[j] = - newp->vertex[i]->xyz[j] = poly->vertex[i]->xyz[j] ; - - /* - * flip the X component. - */ - for (i=0; i<3; i++) - newp->vertex[i]->nxyz[0] = - newp->vertex[i]->xyz[0] = -newp->vertex[i]->xyz[0] ; - - /* - * Re-order the vertices, flip 0 and 1. - */ - for (j=0; j<3; j++) - temp[j] = newp->vertex[0]->xyz[j] ; - - for (j=0; j<3; j++) - newp->vertex[0]->nxyz[j] = - newp->vertex[0]->xyz[j] = newp->vertex[1]->xyz[j]; - - for (j=0; j<3; j++) - newp->vertex[1]->nxyz[j] = - newp->vertex[1]->xyz[j] = temp[j] ; - - add_polygon_to_face ( newp, face ) ; - -} - -/* ========================================================================= */ -/* averaged_vertex_normals */ -/* ========================================================================= */ -/* -** Caculates the averaged polygon normal. -*/ - -void averaged_vertex_normals ( HEAD *face, int p, float *n1, float *n2, float *n3 ) -{ - int i,j,np, pt ; - float norm[3] ; - - - for (i=0; i<3; i++) - norm[i] = 0.0 ; - - np = face->polygon[p]->vertex[0]->np ; - - for ( i=0; ipolygon[p]->vertex[0]->plist[i] ; - - for ( j=0; j<3; j++) { - norm[j] += face->polygon[pt]->vertex[0]->norm[j] ; - } - } - - for (i=0; i<3; i++) - norm[i] = norm[i] / (float)np ; - - for (i=0; i<3; i++) - n1[i] = norm[i] ; - - for (i=0; i<3; i++) - norm[i] = 0.0 ; - - np = face->polygon[p]->vertex[1]->np ; - - for ( i=0; ipolygon[p]->vertex[1]->plist[i] ; - - for ( j=0; j<3; j++) { - norm[j] += face->polygon[pt]->vertex[1]->norm[j] ; - } - } - - for (i=0; i<3; i++) - norm[i] = norm[i] / (float) np ; - - for (i=0; i<3; i++) - n2[i] = norm[i] ; - - for (i=0; i<3; i++) - norm[i] = 0.0 ; - - np = face->polygon[p]->vertex[2]->np ; - - for ( i=0; ipolygon[p]->vertex[2]->plist[i] ; - - for ( j=0; j<3; j++) { - norm[j] += face->polygon[pt]->vertex[2]->norm[j] ; - } - } - - for (i=0; i<3; i++) - norm[i] = norm[i]/ (float) np ; - - for (i=0; i<3; i++) - n3[i] = norm[i] ; - -} - -/* ========================================================================= */ -/* data_struct */ -/* ========================================================================= */ -/* -** Create a new data structure for the polygons. -** -*/ -#define DATA_STRUCT_DEBUG 0 - -void -data_struct ( HEAD *face ) -{ - int i,j, n ; - int flag, cptr ; - float x1,y1,z1, x2, y2, z2, x3, y3, z3 ; - float tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3 ; - - for (i=0; inpolygons; i++ ){ - - x1 = face->polygon[i]->vertex[0]->xyz[0] ; - y1 = face->polygon[i]->vertex[0]->xyz[1] ; - z1 = face->polygon[i]->vertex[0]->xyz[2] ; - - x2 = face->polygon[i]->vertex[1]->xyz[0] ; - y2 = face->polygon[i]->vertex[1]->xyz[1] ; - z2 = face->polygon[i]->vertex[1]->xyz[2] ; - - x3 = face->polygon[i]->vertex[2]->xyz[0] ; - y3 = face->polygon[i]->vertex[2]->xyz[1] ; - z3 = face->polygon[i]->vertex[2]->xyz[2] ; -#if DATA_STRUCT_DEBUG - fprintf (stderr,"BASE polygon: %d\n", i) ; - fprintf (stderr,"x1: %f y1: %f z1: %f\n", x1,y1,z1) ; - fprintf (stderr,"x1: %f y1: %f z1: %f\n", x2,y2,z2) ; - fprintf (stderr,"x1: %f y1: %f z1: %f\n", x3,y3,z3) ; -#endif - j = 0 ; - flag = 0 ; - while ( !flag && - jnpolygons ) { - - tx1 = face->polygon[j]->vertex[0]->xyz[0] ; - ty1 = face->polygon[j]->vertex[0]->xyz[1] ; - tz1 = face->polygon[j]->vertex[0]->xyz[2] ; - - tx2 = face->polygon[j]->vertex[1]->xyz[0] ; - ty2 = face->polygon[j]->vertex[1]->xyz[1] ; - tz2 = face->polygon[j]->vertex[1]->xyz[2] ; - - tx3 = face->polygon[j]->vertex[2]->xyz[0] ; - ty3 = face->polygon[j]->vertex[2]->xyz[1] ; - tz3 = face->polygon[j]->vertex[2]->xyz[2] ; -#if DATA_STRUCT_DEBUG - fprintf (stderr, "COMPARED TO polygon: %d\n", j) ; - fprintf (stderr,"tx1: %f ty1: %f tz1: %f\n", tx1,ty1,tz1) ; - fprintf (stderr,"tx1: %f ty1: %f tz1: %f\n", tx2,ty2,tz2) ; - fprintf (stderr,"tx1: %f ty1: %f tz1: %f\n", tx3,ty3,tz3) ; -#endif - if ( (x1 == tx1 && y1 == ty1 && z1 == tz1) || - (x1 == tx2 && y1 == ty2 && z1 == tz2) || - (x1 == tx3 && y1 == ty3 && z1 == tz3)) { - cptr = j ; -#if DATA_STRUCT_DEBUG - fprintf (stderr,"found a vertex match on polygon: %d and %d\n", i,j); -#endif - n = face->polygon[i]->vertex[0]->np ; - face->polygon[i]->vertex[0]->plist[n] = cptr ; - face->polygon[i]->vertex[0]->np++ ; -#if DATA_STRUCT_DEBUG - fprintf (stderr,"loaded: %d onto polygon: %d vertex[0]\n", cptr, i) ; - fprintf (stderr,"total on vertex: %d\n", face->polygon[i]->vertex[0]->np); -#endif - } - j++ ; - - } /* end while */ - - - j = 0 ; - flag = 0 ; - while ( !flag && - jnpolygons ) { - tx1 = face->polygon[j]->vertex[0]->xyz[0] ; - ty1 = face->polygon[j]->vertex[0]->xyz[1] ; - tz1 = face->polygon[j]->vertex[0]->xyz[2] ; - - tx2 = face->polygon[j]->vertex[1]->xyz[0] ; - ty2 = face->polygon[j]->vertex[1]->xyz[1] ; - tz2 = face->polygon[j]->vertex[1]->xyz[2] ; - - tx3 = face->polygon[j]->vertex[2]->xyz[0] ; - ty3 = face->polygon[j]->vertex[2]->xyz[1] ; - tz3 = face->polygon[j]->vertex[2]->xyz[2] ; - - if ( (x2 == tx1 && y2 == ty1 && z2 == tz1) || - (x2 == tx2 && y2 == ty2 && z2 == tz2) || - (x2 == tx3 && y2 == ty3 && z2 == tz3)) { - cptr = j ; - - n = face->polygon[i]->vertex[1]->np ; - face->polygon[i]->vertex[1]->plist[n] = j ; - face->polygon[i]->vertex[1]->np++ ; - - } - j++ ; - - } /* end while */ - - j = 0 ; - flag = 0 ; - while ( !flag && - jnpolygons ) { - tx1 = face->polygon[j]->vertex[0]->xyz[0] ; - ty1 = face->polygon[j]->vertex[0]->xyz[1] ; - tz1 = face->polygon[j]->vertex[0]->xyz[2] ; - - tx2 = face->polygon[j]->vertex[1]->xyz[0] ; - ty2 = face->polygon[j]->vertex[1]->xyz[1] ; - tz2 = face->polygon[j]->vertex[1]->xyz[2] ; - - tx3 = face->polygon[j]->vertex[2]->xyz[0] ; - ty3 = face->polygon[j]->vertex[2]->xyz[1] ; - tz3 = face->polygon[j]->vertex[2]->xyz[2] ; - - if ( x3 == tx1 && y3 == ty1 && z3 == tz1 || - x3 == tx2 && y3 == ty2 && z3 == tz2 || - x3 == tx3 && y3 == ty3 && z3 == tz3) { - cptr = j ; - - n = face->polygon[i]->vertex[2]->np ; - face->polygon[i]->vertex[2]->plist[n] = cptr ; - face->polygon[i]->vertex[2]->np++ ; - - } - j++ ; - - } /* end while */ - } /* end for i */ -} diff --git a/lib/glut-3.7.6/progs/demos/geoface/memory.h b/lib/glut-3.7.6/progs/demos/geoface/memory.h deleted file mode 100644 index 07c24f147c4359a515513ee6b9b45312362ef2ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/memory.h +++ /dev/null @@ -1,29 +0,0 @@ -/* ========================================================================== - MEMORY_H -============================================================================= - - AUTHOR: Keith Waters - DATE : Tue Jan 7 10:16:52 EST 1992 - - SYNOPSIS - Memory macros. - - DESCRIPTION - Simple memory macros for allocation. - -============================================================================ */ - - -#ifndef MEMORY_H -#define MEMORY_H - - -#define _new(t) ((t*)malloc(sizeof(t))) -#define _new_array(t, n) ((t*)malloc(sizeof(t) * (n))) -#define _resize_array(a, t, n) ((t*)realloc((a), sizeof(t) * (n))) -#define _size_array(a,t,n0,n1) a = (n0 == 0 ? _new_array(t,n1) : \ - _resize_array(a,t,n1)) -#define _delete(object) ((void)(((object)!=NULL) ? \ - free((char*)(object)),(object)=NULL : 0)) -#endif /* _MEMORY_H */ - diff --git a/lib/glut-3.7.6/progs/demos/geoface/muscle.c b/lib/glut-3.7.6/progs/demos/geoface/muscle.c deleted file mode 100644 index d00eea2c6505814fcda62d2aff1b8eecc6758e4e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/muscle.c +++ /dev/null @@ -1,213 +0,0 @@ -/* ========================================================================== - MUSCLE_C -============================================================================= - - FUNCTION NAMES - - float VecLen -- calculates a vector length. - float CosAng -- compute the cosine angle between two vectors. - activate_muscle -- activate a muscle. - act_muscles -- activate muscles. - reset_muscles -- reset all the muscles. - - C SPECIFICATIONS - - float VecLen ( float *v ) - float CosAng ( float *v1, float *v2 ) - activate_muscle ( HEAD *face, float *vt, float *vh, - float fstart, float fin, float ang, float val ) - act_muscles ( HEAD *face ) - reset_muscles ( HEAD *face ) - - DESCRIPTION - - This module is where all the muscle action takes place. This module - comes as is with no warranties. - - SIDE EFFECTS - Unknown. - - HISTORY - Created 16-Dec-94 Keith Waters at DEC's Cambridge Research Lab. - -============================================================================ */ - -#include -#include -#include "head.h" - -#ifdef _WIN32 -#pragma warning (disable:4244) /* Disable bogus conversion warnings. */ -#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#define DTOR(deg) ((deg)*0.017453292) /* degrees to radians */ -#define RTOD(rad) ((rad)*57.29577951) /* radians to degrees */ -#define RADF 180.0 / M_PI - - -/* ======================================================================== */ -/* float VecLen ( vec ) */ -/* ======================================================================== */ -/* -** Caculates the length of the vector. -*/ - -float VecLen ( float *v ) -{ - return (float) sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); -} - -/* ======================================================================== */ -/* float CosAng ( v1, v2 ) */ -/* ======================================================================== */ -/* -** Rotates the facial muscles 90.0 degrees. -*/ - -float CosAng ( float *v1, float *v2 ) -{ - float ang, a,b ; - - a = VecLen ( v1 ) ; - b = VecLen ( v2 ) ; - - ang = ((v1[0]*v2[0]) + (v1[1]*v2[1] ) + (v1[2]*v2[2])) / (a*b) ; - - return ( ang ) ; -} - -/* ======================================================================== */ -/* activate_muscle ( face, vt, vh, fstart, fin, ang, val ) */ -/* ======================================================================== */ -/* -** activate the muscle. -*/ - -void -activate_muscle (HEAD *face, float *vt, float *vh, float fstart, float fin, float ang, float val) -{ - float newp[3], va[3], vb[3] ; - int i,j,k,l ; - float valen, vblen ; - float cosa, cosv, dif, tot, percent, thet, newv, the, radf ; - - radf = 180.0/ M_PI ; - the = ang / radf ; ; - thet = cos ( the ) ; - - cosa = 0.0 ; - - /* find the length of the muscle */ - for (i=0; i<3; i++) - va[i] = vt[i] - vh[i] ; - valen = VecLen ( va ) ; - - /* loop for all polygons */ - for (i=0; inpolygons; i++) { - - /* loop for all vertices */ - for (j=0; j<3; j++) { - - /* find the length of the muscle head to the mesh node */ - for (k=0; k<3; k++) - vb[k] = face->polygon[i]->vertex[j]->xyz[k] - vh[k] ; - vblen = VecLen ( vb ) ; - - if ( valen > 0.0 && vblen > 0.0) { - cosa = CosAng ( va, vb ) ; - - if ( cosa >= thet ) { - if ( vblen <= fin ) { - cosv = val * ( 1.0 - (cosa/thet) ) ; - - if ( vblen >= fstart && vblen <= fin) { - dif = vblen - fstart ; - tot = fin - fstart ; - percent = dif/tot ; - newv = cos ( DTOR(percent*90.0) ) ; - - for ( l=0; l<3; l++) - newp[l] = (vb[l] * cosv) * newv ; - } - else { - for ( l=0; l<3; l++) - newp[l] = vb[l] * cosv ; - - } /* endif vblen>fin */ - - for (l=0; l<3; l++) - face->polygon[i]->vertex[j]->xyz[l] += newp[l] ; - - } /* endif vblen>fin */ - } /* endif cosa>thet */ - } /* endif mlen&&tlen */ - } /* end for j vertices */ - } /* end for i polygon */ -} - -/* ======================================================================== */ -/* act_muscles ( face ) */ -/* ======================================================================== */ -/* -** activate the muscles -*/ - -void -act_muscles ( HEAD *face ) -{ - int i ; - - /* - * Loop all the muscles. - */ - for (i=0; inmuscles; i++) { - - /* - * Check to see if the muscle is active. - */ - if (face->muscle[i]->active) { - - activate_muscle ( face, face->muscle[i]->head, - face->muscle[i]->tail, - face->muscle[i]->fs, - face->muscle[i]->fe, - face->muscle[i]->zone, - face->muscle[i]->mval ) ; - - /* - * Reset the muscle activity. - */ - face->muscle[i]->active = 1 ; - - } - } -} - -/* ======================================================================== */ -/* reset_muscles ( face ) */ -/* ======================================================================== */ -/* -** Resets the muscles of the face. This is achieved by reversing -** the muscle contraction. -*/ - -void -reset_muscles ( HEAD *face ) -{ - int i,j,k ; - - for ( i=0; inpolygons; i++ ) { - for ( j=0; j<3; j++ ) { - - for ( k=0; k<3; k++ ) - face->polygon[i]->vertex[j]->xyz[k] = - face->polygon[i]->vertex[j]->nxyz[k] ; - - } /* end for j */ - } /* end for i */ -} diff --git a/lib/glut-3.7.6/progs/demos/geoface/muscle.dat b/lib/glut-3.7.6/progs/demos/geoface/muscle.dat deleted file mode 100644 index 45e4dde071b32cd8b486ea4a2cb39558220b1f58..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/geoface/muscle.dat +++ /dev/null @@ -1,91 +0,0 @@ -18 - -L_Zygomatic_Major --1.5700 -2.2210 7.8200 --3.8050 0.8680 6.6000 - 0.1 4.8 45.0 1.0 - -R_Zygomatic_Major -1.5700 -2.2210 7.8200 -3.8050 0.8680 6.6000 -0.1 4.8 45.0 1.0 - -L_Angular_Depressor --1.5700 -2.2210 8.0250 --2.5590 -4.2770 5.3510 - 0.3 4.5 65.0 1.0 - -R_Angular_Depressor -1.5700 -2.2210 8.0250 -2.5590 -4.2770 5.3510 -0.3 4.5 65.0 1.0 - -Left_Frontalis_Inner --0.4870 3.6390 8.1010 --0.3540 6.2470 7.2290 - 0.1 3.6 35.0 4.0 - -Right_Frontalis_Inner -0.4870 3.6390 8.1010 -0.3540 6.2470 7.2290 -0.1 3.6 35.0 4.0 - -Left_Frontalis_Major --2.3810 3.8300 8.0000 --2.2440 6.3630 6.9690 -0.1 3.7 65.0 0.5 - -Right_Frontalis_Major -2.3810 3.8300 8.0000 -2.2440 6.3630 6.9690 -0.1 3.7 65.0 0.5 - -Left_Frontalis_Outer --3.0950 3.9700 7.8950 --3.6390 5.6480 5.9450 -0.1 3.5 45.0 2.5 - -Right_Frontalis_Outer -3.0950 3.9700 7.8950 -3.6390 5.6480 5.9450 -0.1 3.5 45.0 2.5 - -Left_Labi_Nasi --1.7760 -0.8340 8.2390 --1.5600 1.8870 7.3320 - 0.1 5.2 35.0 3.0 - -Right_Labi_Nasi -1.7760 -0.8340 8.2390 -1.5600 1.8870 7.3320 -0.1 5.2 35.0 3.0 - -Left_Inner_Labi_Nasi --1.0020 0.2170 8.4620 --0.6380 2.0840 7.6610 -0.1 4.5 35.0 1.0 - -Right_Inner_Labi_Nasi -1.0020 0.2170 8.4620 -0.6380 2.0840 7.6610 -0.1 4.5 35.0 1.0 - -Left_Lateral_Corigator --1.1700 4.6580 7.3560 - 0.0000 3.2620 8.2080 - 0.5 3.0 45.0 3.0 - -Right_Lateral_Corigator -1.1700 4.6580 7.3560 -0.0000 3.2620 8.2080 -0.5 3.0 45.0 3.0 - -Left_Secondary_Frontalis --0.5840 3.0520 8.0550 --0.9910 4.8620 8.0930 -0.1 4.8 45.0 1.0 - -Right_Secondary_Frontalis -0.5840 3.0520 8.0550 -0.9910 4.8620 8.0930 -0.1 4.8 45.0 1.0 diff --git a/lib/glut-3.7.6/progs/demos/glflare/Flare1.bw b/lib/glut-3.7.6/progs/demos/glflare/Flare1.bw deleted file mode 100644 index 6ccd9cce283478930b2a6130991538ede713780b..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Flare1.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Flare2.bw b/lib/glut-3.7.6/progs/demos/glflare/Flare2.bw deleted file mode 100644 index 6a1940d59731aff64b8ac54b4cbfd0561ca34a6f..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Flare2.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Flare3.bw b/lib/glut-3.7.6/progs/demos/glflare/Flare3.bw deleted file mode 100644 index 563b6f80f0d4b7bf7bc79f6ef5d84d82545b3827..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Flare3.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Flare4.bw b/lib/glut-3.7.6/progs/demos/glflare/Flare4.bw deleted file mode 100644 index 513557d0dcdf32f768eda9a43bb570acde5a20e7..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Flare4.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Flare5.bw b/lib/glut-3.7.6/progs/demos/glflare/Flare5.bw deleted file mode 100644 index 65dca1b7de1efdde2694cadef135cc31f2834351..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Flare5.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Flare6.bw b/lib/glut-3.7.6/progs/demos/glflare/Flare6.bw deleted file mode 100644 index 8612cb3514ec2b7b738f60f4adf39c077d0d7cf1..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Flare6.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Imakefile b/lib/glut-3.7.6/progs/demos/glflare/Imakefile deleted file mode 100644 index 93c145c6a8ffaf55d39b560695e694f5e44b0b3f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glflare/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = glflare - -SRCS = glflare.c loadlum.c - -OBJS = glflare.o loadlum.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(glflare,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/glflare/OpenGL.bw b/lib/glut-3.7.6/progs/demos/glflare/OpenGL.bw deleted file mode 100644 index 3234974ffc2754d33f3e927985675aea090a7057..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/OpenGL.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine0.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine0.bw deleted file mode 100644 index 2a1182580f272bbf697ea9b7d5158c5cd94a92fb..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine0.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine1.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine1.bw deleted file mode 100644 index be760792ae567b3f62dacfed1189b566931c11ec..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine1.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine2.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine2.bw deleted file mode 100644 index bf45ab484ff4c26010a5dde76b448a40f41134f1..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine2.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine3.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine3.bw deleted file mode 100644 index cac1866e62e97757325eb7030907d0e19e57dd8e..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine3.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine4.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine4.bw deleted file mode 100644 index c1ba95a8b0516688f54325c4c1027b8054590ab2..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine4.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine5.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine5.bw deleted file mode 100644 index bff6f7044fb6aa29e3329cc5e8d11cb14fecca26..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine5.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine6.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine6.bw deleted file mode 100644 index decca9efefdef5078776fad535431de0faa3d8f9..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine6.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine7.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine7.bw deleted file mode 100644 index 91f51226476b6c7351d9e60fd482919aed0964da..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine7.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine8.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine8.bw deleted file mode 100644 index b17eb331f3465a13ebc7fdc828ecb049b81b7665..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine8.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/Shine9.bw b/lib/glut-3.7.6/progs/demos/glflare/Shine9.bw deleted file mode 100644 index ef9c7efed8e649a0554bdbf8a108284b2ff478e0..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/glflare/Shine9.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/glflare/glflare.c b/lib/glut-3.7.6/progs/demos/glflare/glflare.c deleted file mode 100644 index c98f098323fa61647adb15b414239c23ec1ae972..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glflare/glflare.c +++ /dev/null @@ -1,331 +0,0 @@ - -/* This source code is based on Direct3D-based code written by Stephen - Coy of Microsoft. All credit for the original implementation of the - idea should go to Stephen. While I referenced Stephen's code during - the writing of my code, my code was completely written by me from - scratch. The algorithms are basically the same to ease critical - comparison of the OpenGL and Direct3D versions. */ - -/* The image files used by this program are derived from images - developed by Microsoft. */ - -#include -#include -#include -#include -#include - -#if !defined(GL_VERSION_1_1) -/* Assume the texture object extension is supported. */ -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif - -#include "loadlum.h" - -GLfloat red[3] = {1.0, 0.0, 0.0}; -GLfloat green[3] = {0.0, 1.0, 0.0}; -GLfloat blue[3] = {0.0, 0.0, 1.0}; -GLfloat from[3] = {0.0, 0.0, 20.0}; -GLfloat at[3] = {0.0, 0.0, 0.0}; -GLfloat near_clip = 1.0; -int useMipmaps = 0, verbose = 0; -GLuint logoTex, flareTex[6], shineTex[10]; - -typedef struct t_flare { - int type; /* flare texture index, 0..5 */ - float scale; - float loc; /* postion on axis */ - GLfloat color[3]; -} Flare; - -Flare -set_flare(int type, float location, float scale, GLfloat color[3], float colorScale) -{ - Flare ret; - - ret.type = type; - ret.loc = location; - ret.scale = scale; - ret.color[0] = color[0] * colorScale; - ret.color[1] = color[1] * colorScale; - ret.color[2] = color[2] * colorScale; - return ret; -} - -Flare flare[20]; -int num_flares = 0; -static float tic = 0.0; -float position[3]; -int shine_tic = 0; - -void -init_flares(void) -{ - /* Shines */ - flare[0] = set_flare(-1, 1.0, 0.3, blue, 1.0); - flare[1] = set_flare(-1, 1.0, 0.2, green, 1.0); - flare[2] = set_flare(-1, 1.0, 0.25, red, 1.0); - - /* Flares, ordered to eliminate redundant texture binds */ - flare[3] = set_flare(1, 0.5, 0.2f, red, 0.3); - flare[4] = set_flare(2, 1.3, 0.04f, red, 0.6); - flare[5] = set_flare(3, 1.0, 0.1f, red, 0.4); - flare[6] = set_flare(3, 0.2, 0.05f, red, 0.3); - flare[7] = set_flare(0, 0.0, 0.04f, red, 0.3); - flare[8] = set_flare(5, -0.25, 0.07f, red, 0.5); - flare[9] = set_flare(5, -0.4, 0.02f, red, 0.6); - flare[10] = set_flare(5, -0.6, 0.04f, red, 0.4); - flare[11] = set_flare(5, -1.0, 0.03f, red, 0.2); - num_flares = 12; -} - -#include "vec3d.c" /* Simple 3D vector math routines. */ - -void -DoFlares(GLfloat from[3], GLfloat at[3], GLfloat light[3], GLfloat near_clip) -{ - GLfloat view_dir[3], tmp[3], light_dir[3], position[3], dx[3], dy[3], - center[3], axis[3], sx[3], sy[3], dot, global_scale = 1.5; - GLuint bound_to = 0; - int i; - - /* view_dir = normalize(at-from) */ - vdiff(view_dir, at, from); - vnorm(view_dir); - - /* center = from + near_clip * view_dir */ - vscale(tmp, view_dir, near_clip); - vadd(center, from, tmp); - - /* light_dir = normalize(light-from) */ - vdiff(light_dir, light, from); - vnorm(light_dir); - - /* light = from + dot(light,view_dir)*near_clip*light_dir */ - dot = vdot(light_dir, view_dir); - vscale(tmp, light_dir, near_clip / dot); - vadd(light, from, light_dir); - - /* axis = light - center */ - vdiff(axis, light, center); - vcopy(dx, axis); - - /* dx = normalize(axis) */ - vnorm(dx); - - /* dy = cross(dx,view_dir) */ - vcross(dy, dx, view_dir); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_DITHER); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - - for (i = 0; i < num_flares; i++) { - vscale(sx, dx, flare[i].scale * global_scale); - vscale(sy, dy, flare[i].scale * global_scale); - - glColor3fv(flare[i].color); - /* Note logic below to eliminate duplicate texture binds. */ - if (flare[i].type < 0) { - if (bound_to) - glEnd(); - glBindTexture(GL_TEXTURE_2D, shineTex[shine_tic]); - bound_to = shineTex[shine_tic]; - shine_tic = (shine_tic + 1) % 10; - glBegin(GL_QUADS); - } else { - if (bound_to != flareTex[flare[i].type]) { - glEnd(); - glBindTexture(GL_TEXTURE_2D, flareTex[flare[i].type]); - bound_to = flareTex[flare[i].type]; - glBegin(GL_QUADS); - } - } - - /* position = center + flare[i].loc * axis */ - vscale(tmp, axis, flare[i].loc); - vadd(position, center, tmp); - - glTexCoord2f(0.0, 0.0); - vadd(tmp, position, sx); - vadd(tmp, tmp, sy); - glVertex3fv(tmp); - - glTexCoord2f(1.0, 0.0); - vdiff(tmp, position, sx); - vadd(tmp, tmp, sy); - glVertex3fv(tmp); - - glTexCoord2f(1.0, 1.0); - vdiff(tmp, position, sx); - vdiff(tmp, tmp, sy); - glVertex3fv(tmp); - - glTexCoord2f(0.0, 1.0); - vadd(tmp, position, sx); - vdiff(tmp, tmp, sy); - glVertex3fv(tmp); - } - glEnd(); -} - -void -DoBackground(void) -{ - glEnable(GL_DITHER); - glDisable(GL_BLEND); - glBindTexture(GL_TEXTURE_2D, logoTex); - - glBegin(GL_QUADS); - glColor3f(0.0, 0.0, 1.0); - glTexCoord2f(0.075, 0.1); - glVertex3f(-11.0, -7.0, 0.0); - - glColor3f(0.8, 0.8, 1.0); - glTexCoord2f(1.0, 0.1); - glVertex3f(11.0, -7.0, 0.0); - - glColor3f(0.0, 0.0, 1.0); - glTexCoord2f(1.0, 0.9); - glVertex3f(11.0, 7.0, 0.0); - - glColor3f(0.0, 0.5, 1.0); - glTexCoord2f(0.075, 0.9); - glVertex3f(-11.0, 7.0, 0.0); - glEnd(); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - position[0] = sin(tic * 0.73) * 6; - position[1] = 4.0 + 8.0 * sin(tic * 0.678); - position[2] = sin(tic * 0.895) * 6; - DoBackground(); - DoFlares(from, at, position, near_clip); - - glutSwapBuffers(); -} - -void -idle(void) -{ - tic += 0.08f; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -void -setup_texture(char *filename, GLuint texobj, - GLenum minFilter, GLenum maxFilter) -{ - unsigned char *buf; - int width, height, components; - - glBindTexture(GL_TEXTURE_2D, texobj); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, maxFilter); - if (verbose) - printf("Loading %s:", filename); - buf = load_luminance(filename, &width, &height, &components); - if (verbose) - printf(" %dx%dx%d\n", width, height, components); - if (useMipmaps) - gluBuild2DMipmaps(GL_TEXTURE_2D, 1, width, height, - GL_LUMINANCE, GL_UNSIGNED_BYTE, buf); - else - glTexImage2D(GL_TEXTURE_2D, 0, 1, width, height, 0, - GL_LUMINANCE, GL_UNSIGNED_BYTE, buf); - free(buf); -} - -void -load_textures(void) -{ - char filename[256]; - GLenum minFilter, maxFilter; - int id = 1, i; - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - if (useMipmaps) { - minFilter = GL_LINEAR_MIPMAP_LINEAR; - maxFilter = GL_LINEAR; - } else { - minFilter = GL_LINEAR; - maxFilter = GL_LINEAR; - } - logoTex = id; - setup_texture("OpenGL.bw", logoTex, minFilter, maxFilter); - id++; - - if (!useMipmaps) { - minFilter = GL_NEAREST; - maxFilter = GL_NEAREST; - } - for (i = 0; i < 10; i++) { - shineTex[i] = id; - sprintf(filename, "Shine%d.bw", i); - setup_texture(filename, shineTex[i], minFilter, maxFilter); - id++; - } - for (i = 0; i < 6; i++) { - flareTex[i] = id; - sprintf(filename, "Flare%d.bw", i + 1); - setup_texture(filename, flareTex[i], minFilter, maxFilter); - id++; - } -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - for (i=1; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glflare - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glflare.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glflare.mak" CFG="glflare - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glflare - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glflare - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glflare - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "glflare - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "glflare - Win32 Release" -# Name "glflare - Win32 Debug" -# Begin Source File - -SOURCE=.\glflare.c -# End Source File -# Begin Source File - -SOURCE=.\loadlum.c -# End Source File -# Begin Source File - -SOURCE=.\loadlum.h -# End Source File -# Begin Source File - -SOURCE=.\vec3d.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/glflare/loadlum.c b/lib/glut-3.7.6/progs/demos/glflare/loadlum.c deleted file mode 100644 index e3a4676e91bd10ef936124c60979d04f0e05abbc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glflare/loadlum.c +++ /dev/null @@ -1,182 +0,0 @@ - -/* texture.c - by David Blythe, SGI */ - -/* load_luminace is a simplistic routine for reading an SGI .bw image file. */ - -#include -#include -#include - -#include "loadlum.h" - -typedef struct _ImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short xsize, ysize, zsize; - unsigned int min, max; - unsigned int wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp; - unsigned long rleEnd; - unsigned int *rowStart; - int *rowSize; -} ImageRec; - -static void -ConvertShort(unsigned short *array, unsigned int length) -{ - unsigned short b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *) array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void -ConvertUint(unsigned *array, unsigned int length) -{ - unsigned int b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *) array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static ImageRec * -ImageOpen(char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - ImageRec *image; - int swapFlag, x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) - swapFlag = 1; - else - swapFlag = 0; - - image = (ImageRec *) malloc(sizeof(ImageRec)); - if (image == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - if ((image->file = fopen(fileName, "rb")) == NULL) { - perror(fileName); - exit(1); - } - fread(image, 1, 12, image->file); - - if (swapFlag) - ConvertShort(&image->imagic, 6); - image->tmp = (unsigned char *) malloc(image->xsize * 256); - if (image->tmp == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - if ((image->type & 0xFF00) == 0x0100) { - x = image->ysize * image->zsize * (int) sizeof(unsigned); - image->rowStart = (unsigned *) malloc(x); - image->rowSize = (int *) malloc(x); - if (image->rowStart == NULL || image->rowSize == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - image->rleEnd = 512 + (2 * x); - fseek(image->file, 512, SEEK_SET); - fread(image->rowStart, 1, x, image->file); - fread(image->rowSize, 1, x, image->file); - if (swapFlag) { - ConvertUint(image->rowStart, x / (int) sizeof(unsigned)); - ConvertUint((unsigned *) image->rowSize, x / (int) sizeof(int)); - } - } - return image; -} - -static void -ImageClose(ImageRec * image) -{ - fclose(image->file); - free(image->tmp); - free(image); -} - -static void -ImageGetRow(ImageRec * image, unsigned char *buf, int y, int z) -{ - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((image->type & 0xFF00) == 0x0100) { - fseek(image->file, (long) image->rowStart[y + z * image->ysize], SEEK_SET); - fread(image->tmp, 1, (unsigned int) image->rowSize[y + z * image->ysize], - image->file); - iPtr = image->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int) (pixel & 0x7F); - if (!count) - return; - if (pixel & 0x80) { - while (count--) - *oPtr++ = *iPtr++; - } else { - pixel = *iPtr++; - while (count--) - *oPtr++ = pixel; - } - } - } else { - fseek(image->file, 512 + (y * image->xsize) + (z * image->xsize * image->ysize), - SEEK_SET); - fread(buf, 1, image->xsize, image->file); - } -} - -unsigned char * -load_luminance(char *name, int *width, int *height, int *components) -{ - unsigned char *base, *lptr; - ImageRec *image; - int y; - - image = ImageOpen(name); - - if (!image) - return NULL; - if (image->zsize != 1) - return NULL; - - *width = image->xsize; - *height = image->ysize; - *components = image->zsize; - - base = (unsigned char *) - malloc(image->xsize * image->ysize * sizeof(unsigned char)); - if (!base) - return NULL; - lptr = base; - for (y = 0; y < image->ysize; y++) { - ImageGetRow(image, lptr, y, 0); - lptr += image->xsize; - } - ImageClose(image); - return base; -} diff --git a/lib/glut-3.7.6/progs/demos/glflare/loadlum.h b/lib/glut-3.7.6/progs/demos/glflare/loadlum.h deleted file mode 100644 index 9c825f26d7a80e3cb277b8e3c8614198d3e578e0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glflare/loadlum.h +++ /dev/null @@ -1,11 +0,0 @@ - -/* texture.h - by David Blythe, SGI */ - -/* Simple SGI .bw image file loader routine. */ - -extern unsigned char * load_luminance( - char *name, - int *width, - int *height, - int *components); - diff --git a/lib/glut-3.7.6/progs/demos/glflare/vec3d.c b/lib/glut-3.7.6/progs/demos/glflare/vec3d.c deleted file mode 100644 index af52f98bcae3f2b66831d7a0505c6e3e0b9d3399..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glflare/vec3d.c +++ /dev/null @@ -1,73 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Simple 3D vector routines. This file is meant to be included in - a .c file, hence all the routines are defined statically. A - good C compiler should be able to automatically inline all - these routines. */ - -#include - -static void -vnorm(float vec[3]) -{ - float len; - - len = (float)sqrt(vec[0] * vec[0] + vec[1] * vec[1] + vec[2] * vec[2]); - vec[0] = vec[0] / len; - vec[1] = vec[1] / len; - vec[2] = vec[2] / len; -} - -static float -vdot(float a[3], float b[3]) -{ - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -static void -vdiff(float dst[3], float a[3], float b[3]) -{ - dst[0] = a[0] - b[0]; - dst[1] = a[1] - b[1]; - dst[2] = a[2] - b[2]; -} - -static void -vadd(float dst[3], float a[3], float b[3]) -{ - dst[0] = a[0] + b[0]; - dst[1] = a[1] + b[1]; - dst[2] = a[2] + b[2]; -} - -static void -vcopy(float dst[3], float src[3]) -{ - dst[0] = src[0]; - dst[1] = src[1]; - dst[2] = src[2]; -} - -static void -vscale(float dst[3], float src[3], float scale) -{ - dst[0] = src[0] * scale; - dst[1] = src[1] * scale; - dst[2] = src[2] * scale; -} - -static void -vcross(float cross[3], const float v1[3], const float v2[3]) -{ - float tmp[3]; - - tmp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - tmp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - tmp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); - vcopy(cross, tmp); -} diff --git a/lib/glut-3.7.6/progs/demos/gliq/Imakefile b/lib/glut-3.7.6/progs/demos/gliq/Imakefile deleted file mode 100644 index f3feaad94f56f8fb15709f6df71dcb656a948cd5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/Imakefile +++ /dev/null @@ -1,29 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../../Glut.cf" - -TARGETS = gliq - -SRCS = board.c game.c gliq.c pick.c score.c tb.c trackball.c - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(gliq,board.o game.o gliq.o pick.o score.o tb.o trackball.o) - -LinkFile(trackball.c, ../../examples/trackball.c) -LinkFile(trackball.h, ../../examples/trackball.h) - -trackball.o: trackball.h -tb.o: trackball.h -gliq.h: trackball.h -board.c: gliq.h -game.c: gliq.h -gliq.c: gliq.h -pick.c: gliq.h -score.c: gliq.h - -/* some old imake configs do setup "make depend" dependencies on linked files */ -depend:: trackball.c trackball.h tb.c tb.h - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/gliq/board.c b/lib/glut-3.7.6/progs/demos/gliq/board.c deleted file mode 100644 index c6c77f1c34692a0a02fc4104d83e7e8f3ed77b23..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/board.c +++ /dev/null @@ -1,343 +0,0 @@ -/* - * CS 453 - Final project : An OpenGL version of the pegboard game IQ - * Due : June 5, 1997 - * Author : Kiri Wagstaff - * - * File : board.c - * Description : Contains the board readin and selection functions. - * - * - */ - -#include "gliq.h" - -/* functions */ -void selectboard(void); -void readboards(void); -void drawboard(void); -void drawpegs(void); /* Draw all the pegs */ -void drawpeg(void); /* Draw one peg */ -void displaybuttons(void); - -/* globals */ -int numboards, curboard; -int*** boards; -int filled[BOARDSIZE][BOARDSIZE]; /* Current state of the pegs */ - -/* Define the board */ -GLfloat vertices[8*3] = { - -5.0,0.0,5.0, - 5.0,0.0,5.0, - 5.0,0.5,5.0, - -5.0,0.5,5.0, - -5.0,0.0,-5.0, - 5.0,0.0,-5.0, - 5.0,0.5,-5.0, - -5.0,0.5,-5.0 -}; - -GLuint faces[6*4] = { - 0,1,2,3, /*front*/ - 0,3,7,4, /*left*/ - 0,4,5,1, /*bottom*/ - 1,5,6,2, /*right*/ - 3,2,6,7, /*top*/ - 4,7,6,5 /*back*/ -}; - -GLfloat normals[6*3] = { - 0.0, 0.0, 1.0, - -1.0, 0.0, 0.0, - 0.0, -1.0, 0.0, - 1.0, 0.0, 0.0, - 0.0, 1.0, 0.0, - 0.0, 0.0, -1.0, -}; - - -void selectboard(void) -{ - int height=glutGet(GLUT_WINDOW_HEIGHT); - int width=glutGet(GLUT_WINDOW_WIDTH); - static float spin=0.0; - - /* Eventually make it spin */ - /* Display the buttons */ - displaybuttons(); - /* Draw the quit button */ - drawquit(7.0, 9.0, 0.4, 1.0); - /* Quit */ - glColor3f(1.0, 1.0, 1.0); /* white */ - /* text(0.78*width, 0.89*height, 0.1*height, "Quit"); */ - /* Select message */ - glColor3f(0.0, 1.0, 0.0); - text(0.3*width, 0.9*height, 0.07*height, "Select a board"); - - /* Draw the total # of pegs */ - glPushMatrix(); - glColor3f(1.0, 1.0, 0.0); /* yellow */ - glTranslatef(-7.8, 8.8, 0.0); - drawpeg(); - text(0.1*width, 0.9*height, 0.07*height, ": %02d", totalpegs); - glPopMatrix(); - - /* do the trackball rotation. */ - glPushMatrix(); - /* tbMatrix(); */ - glRotatef(45.0, 1.0, 0.0, 0.0); - glRotatef(spin, 0.0, 1.0, 0.0); - drawboard(); - drawpegs(); - glPopMatrix(); - spin++; -} - -void readboards(void) -{ - int i, j, hole; - FILE* fp; - - /* Read in the boards */ - fp = fopen("boards.txt", "r"); - if (!fp) - { - printf("Could not open boards.txt, exiting.\n"); - exit(1); - } - fscanf(fp, "%d", &numboards); - boards = (int***)malloc(numboards*sizeof(int**)); - for (i=0; i0) && (filled[i-1][j]==FULL) && (filled[i-2][j]==EMPTY)) - return 1; - else if ((i+20) && (filled[i][j-1]==FULL) && (filled[i][j-2]==EMPTY)) - return 1; - else if ((j+2=numboards) - curboard = 0; - /* Set up filled array */ - for (i=0; i minpegs)) - { - curstate = HIGHSC; - numentered = 0; - written = 0; - glutKeyboardFunc(keyscores); - glutIdleFunc(idlescore); - break; - } - curstate = SELBOARD; - glutIdleFunc(idle); - totalpegs = 0; - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gliq - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gliq.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gliq.mak" CFG="gliq - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gliq - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gliq - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gliq - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gliq - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gliq - Win32 Release" -# Name "gliq - Win32 Debug" -# Begin Source File - -SOURCE=.\board.c -# End Source File -# Begin Source File - -SOURCE=.\game.c -# End Source File -# Begin Source File - -SOURCE=.\gliq.c -# End Source File -# Begin Source File - -SOURCE=.\gliq.h -# End Source File -# Begin Source File - -SOURCE=.\pick.c -# End Source File -# Begin Source File - -SOURCE=.\score.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/gliq/gliq.h b/lib/glut-3.7.6/progs/demos/gliq/gliq.h deleted file mode 100644 index fa30f48d4d9d04758d0de179c227c385d5ad2c60..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/gliq.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * CS 453 - Final project : An OpenGL version of the pegboard game IQ - * Due : June 5, 1997 - * Author : Kiri Wagstaff - * - * File : gliq.h - * Description : Main header file - * - */ - -#ifndef GLIQ_H -#define GLIQ_H - -#include -#include -#include -#include -#include "trackball.h" - -/* defines */ -#define BOARDSIZE 9 /* on a side, total of 81 holes */ -#define SELECT_BUFFER 256 - -/* enums */ -enum {UNUSED, EMPTY, FULL, CANMOVE, CANTMOVE}; /* for each hole */ -enum {SELBOARD, PLAY, HIGHSC, VIEWSCORES}; /* current state */ -enum {NONE, LEFTARR=100, SELECT, RIGHTARR, QUIT}; /* board selection */ - -/* from gliq.c */ -extern int curstate; -extern int lastpicked; -extern int pegs; -extern int totalpegs; -extern void display(void); - -/* from board.c */ -extern int*** boards; -extern int curboard; -extern int numboards; -extern int filled[BOARDSIZE][BOARDSIZE]; -extern void selectboard(void); -extern void readboards(void); -extern void drawboard(void); -extern void drawpegs(void); -extern void drawpeg(void); -extern void displaybuttons(void); - -/* from game.c */ -extern int playdone; -extern void playgame(void); -extern int legalmove(void); -extern int canmove(int peg); -extern int movesexist(void); -extern void drawquit(float x, float y, float r1, float r2); - -/* from score.c */ -extern int minscore; -extern int minpegs; -extern int numentered; -extern int written; -extern void highscore(void); -extern void readscores(void); -extern void showhighscores(void); -extern void keyscores(unsigned char key, int x, int y); -extern void idlescore(void); - -/* from pick.c */ -extern int picked; -extern GLuint select_buffer[]; -extern GLboolean selection; -extern GLuint pick(int x, int y); -extern void passive(int x, int y); -extern void text(GLfloat x, GLfloat y, GLfloat scale, char *format, ...); - -#endif diff --git a/lib/glut-3.7.6/progs/demos/gliq/pick.c b/lib/glut-3.7.6/progs/demos/gliq/pick.c deleted file mode 100644 index b72f4190680d21c36fdb0b997bea33861eb153ec..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/pick.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * CS 453 - Final project : An OpenGL version of the pegboard game IQ - * Due : June 5, 1997 - * Author : Kiri Wagstaff - * - * File : pick.c - * Description : Routines for picking ability. MANY thanks to Nate - * Robins since all of this code is his. I couldn't - * have done it without him. :) - * - */ - -#include -#include "gliq.h" - -int picked=0; /* Which piece has been selected? */ -GLuint select_buffer[SELECT_BUFFER]; -GLboolean selection = GL_FALSE; - -GLuint pick(int x, int y); -void passive(int x, int y); - -GLuint pick(int x, int y) -{ - GLuint i, hits, num_names, picked; - GLuint* p; - GLboolean save; - GLuint depth = (GLuint)-1; - GLint viewport[4]; - int height = glutGet(GLUT_WINDOW_HEIGHT); - int width = glutGet(GLUT_WINDOW_WIDTH); - - /* fill in the current viewport parameters */ - viewport[0] = 0; - viewport[1] = 0; - viewport[2] = width; - viewport[3] = height; - - /* set the render mode to selection */ - glRenderMode(GL_SELECT); - selection = GL_TRUE; - glInitNames(); - glPushName(0); - - /* setup a picking matrix and render into selection buffer */ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - - glLoadIdentity(); - gluPickMatrix(x, viewport[3] - y, 5.0, 5.0, viewport); - gluPerspective(60.0, (GLfloat)viewport[3]/(GLfloat)viewport[2], 1.0, 128.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, -2.0, -15.0); - - switch(curstate) - { - case SELBOARD: - /* Draw the quit button */ - drawquit(7.0, 9.0, 0.4, 1.0); - displaybuttons(); - break; - case PLAY: - /* Draw the quit button */ - drawquit(7.0, 9.0, 0.4, 1.0); - glPushMatrix(); - glRotatef(45.0, 1.0, 0.0, 0.0); - tbMatrix(); - drawpegs(); - glPopMatrix(); - break; - case HIGHSC: - break; - case VIEWSCORES: - break; - default: - printf("Unknown state %d, exiting.\n", curstate); - exit(1); - } - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - hits = glRenderMode(GL_RENDER); - - selection = GL_FALSE; - - p = select_buffer; - picked = 0; - for (i = 0; i < hits; i++) { - save = GL_FALSE; - num_names = *p; /* number of names in this hit */ - p++; - - if (*p <= depth) { /* check the 1st depth value */ - depth = *p; - save = GL_TRUE; - } - p++; - if (*p <= depth) { /* check the 2nd depth value */ - depth = *p; - save = GL_TRUE; - } - p++; - - if (save) - picked = *p; - - p += num_names; /* skip over the rest of the names */ - } - - return picked; -} - -void passive(int x, int y) -{ - picked = pick(x,y); - glutPostRedisplay(); -} - -/* text: general purpose text routine. draws a string according to - * format in a stroke font at x, y after scaling it by the scale - * specified (scale is in window-space (lower-left origin) pixels). - * - * x - position in x (in window-space) - * y - position in y (in window-space) - * scale - scale in pixels - * format - as in printf() - */ -void -text(GLfloat x, GLfloat y, GLfloat scale, char* format, ...) -{ - va_list args; - char buffer[255], *p; - GLfloat font_scale = 119.05 + 33.33; - - va_start(args, format); - vsprintf(buffer, format, args); - va_end(args); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, glutGet(GLUT_WINDOW_WIDTH), 0, glutGet(GLUT_WINDOW_HEIGHT)); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); - glTranslatef(x, y, 0.0); - - glScalef(scale/font_scale, scale/font_scale, scale/font_scale); - - for(p = buffer; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - - glPopAttrib(); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); -} - - diff --git a/lib/glut-3.7.6/progs/demos/gliq/score.c b/lib/glut-3.7.6/progs/demos/gliq/score.c deleted file mode 100644 index e3b347d67cbe179ae911845687938a34794ebddb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/score.c +++ /dev/null @@ -1,277 +0,0 @@ -/* - * CS 453 - Final project : An OpenGL version of the pegboard game IQ - * Due : June 5, 1997 - * Author : Kiri Wagstaff - * - * File : score.c - * Description : Maintains and adds to highscores. - * - */ - -#include "gliq.h" - -int scores[10]; -int totpegs[10]; -char inits[10][4]; -int minscore=0; -int minpegs=100; -char newinits[3]; -int numentered=0; -int written=0; -float color1=1.0, color2=1.0, color3=0.0; -int lasthigh=-1; - -void highscore(void); -void readscores(void); -void showhighscores(void); -void keyscores(unsigned char key, int x, int y); - -void highscore(void) -{ - int i, j; - int width = glutGet(GLUT_WINDOW_WIDTH); - int height = glutGet(GLUT_WINDOW_HEIGHT); - FILE* fp; - - /* Prompt for initials */ - glColor3f(1.0, 1.0, 0.0); /* yellow */ - text(0.08*width, 0.85*height, 0.1*height, "CONGRATULATIONS!"); - glColor3f(1.0, 0.0, 0.0); /* red */ - text(0.05*width, 0.7*height, 0.07*height, "You made it into the top 10!"); - glColor3f(1.0, 1.0, 0.0); /* yellow */ - text(0.2*width, 0.55*height, 0.07*height, "%02d remaining of %02d", - pegs, totalpegs); - glColor3f(0.0, 0.0, 1.0); /* blue */ - text(0.13*width, 0.4*height, 0.07*height, "Please enter your initials:"); - - /* Display what's been entered */ - glColor3f(color1, color2, color3); - for (i=0; itotpegs[i]))) - break; - for (j=9; j>i; j--) - { - if (scores[j-1]==-1 || scores[j-1]==0) - continue; -#if 0 -// printf("compare : "); -// printf(" %s %02d %02d\n", inits[j], scores[j], totpegs[j]); -#endif - scores[j] = scores[j-1]; - totpegs[j] = totpegs[j-1]; - inits[j][0] = inits[j-1][0]; - inits[j][1] = inits[j-1][1]; - inits[j][2] = inits[j-1][2]; - inits[j][3] = inits[j-1][3]; -#if 0 -// printf("with : "); -// printf(" %s %02d %02d\n", inits[j], scores[j], totpegs[j]); -#endif - } -#if 0 -// printf("Storing in index %d\n", i); -#endif - lasthigh=i; - scores[i] = pegs; - totpegs[i] = totalpegs; - inits[i][0] = newinits[0]; - inits[i][1] = newinits[1]; - inits[i][2] = newinits[2]; - inits[i][3] = 0; - - /* get the new min */ - for (j=9; j>0; j--) - if (scores[j]==-1 || scores[j]==0) - continue; - else - { - minscore = scores[j]; - minpegs = totpegs[j]; - break; - } -#if 0 -// printf("New minscore %d, minpegs %d\n", minscore, minpegs); -#endif - fp = fopen("scores.txt", "w"); - if (!fp) - { - printf("Could not open scores.txt, exiting.\n"); - exit(1); - } - for (i=0; i<10; i++) - if (scores[i]!=-1 && scores[i]!=0) - fprintf(fp, "%02d %02d %s\n", scores[i], totpegs[i], inits[i]); - else - break; - written=1; - } - -} - -void readscores(void) -{ - int i; - FILE* fp; - - newinits[0] = 0; - newinits[1] = 0; - newinits[2] = 0; - - /* Read in the current high scores */ - fp = fopen("scores.txt", "r"); - if (!fp) - { - printf("Could not open scores.txt, exiting.\n"); - exit(1); - } - for (i=0; i<10; i++) - { - /* Pegs remaining */ - if ((fscanf(fp, "%d", &(scores[i])))!=1) - { - scores[i] = -1; - break; - } - /* Total pegs */ - if ((fscanf(fp, "%d", &(totpegs[i])))!=1) - { - totpegs[i] = -1; - break; - } - fscanf(fp, "%s", inits[i]); -#if 0 -// printf("read %s\n", inits[i]); -#endif - } - if (i>0) - { - minscore = scores[i-1]; - minpegs = totpegs[i-1]; - } - - if (i<10) - { - minscore=100; - minpegs=0; - } -#if 0 -// printf("Minscore is %d, minpegs is %d\n", minscore, minpegs); -#endif -} - -void showhighscores(void) -{ - int i; - int width = glutGet(GLUT_WINDOW_WIDTH); - int height = glutGet(GLUT_WINDOW_HEIGHT); - - /* Display the current highs */ - glColor3f(1.0, 1.0, 0.0); /* yellow */ - text(0.15*width, 0.9*height, 0.07*height, "Initials Score Out of"); - for (i=0; i<10; i++) - { - if (i>=1) - glColor3f(1.0, 0.0, 0.0); /* red */ - else if (i>=5) - glColor3f(0.0, 0.0, 1.0); /* blue */ - if (scores[i]>0) - { - if (i==lasthigh) - glColor3f(color1, color2, color3); - text(0.15*width, (8.0-0.65*i)/10.0*height, 0.05*height, - " %s", inits[i]); - text(0.48*width, (8.0-0.65*i)/10.0*height, 0.05*height, - "%02d", scores[i]); - text(0.75*width, (8.0-0.65*i)/10.0*height, 0.05*height, - "%02d", totpegs[i]); - } - } - glColor3f(color1, color2, color3); - text(0.15*width, 0.1*height, 0.07*height, "Click to continue..."); - -} - -/* ARGSUSED1 */ -void keyscores(unsigned char key, int x, int y) -{ -#if 0 - if (key == '\r') /*return*/ { - - } else if (key == '\b') /*backspace*/ { - } -#endif - if (numentered>=3) - return; - newinits[numentered] = key; - numentered++; -#if 0 -// printf("Read a %c\n", key); -#endif - glutPostRedisplay(); -} - -void idlescore(void) -{ - static int hscolor=0; - - switch(hscolor) - { - case 0: - color1=1.0; - color2=0.0; - color3=0.0; - hscolor++; - break; - case 1: - color1=0.5; - color2=0.5; - color3=0.0; - hscolor++; - break; - case 2: - color1=1.0; - color2=1.0; - color3=0.0; - hscolor++; - break; - case 3: - color1=0.0; - color2=1.0; - color3=0.0; - hscolor++; - break; - case 4: - color1=0.0; - color2=0.0; - color3=1.0; - hscolor++; - break; - case 5: - color1=1.0; - color2=0.0; - color3=1.0; - hscolor=0; - break; - } - - if (curstate==HIGHSC) - highscore(); - else if (curstate==VIEWSCORES) - showhighscores(); - else - { - printf("Unknown state %d, exiting\n", curstate); - exit(1); - } - - glutPostRedisplay(); -} diff --git a/lib/glut-3.7.6/progs/demos/gliq/tb.c b/lib/glut-3.7.6/progs/demos/gliq/tb.c deleted file mode 100644 index d0b175e8c13dbe768f2c1c27e9896cdd67eefbbf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/tb.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - */ - - -/* includes */ -#include -#include /* SunOS 5.6 multithreaded assert() needs . Lame. */ -#include -#include -#include "trackball.h" - -/* globals */ -static GLuint tb_lasttime; - -float curquat[4]; -float lastquat[4]; -int beginx, beginy; - -static GLuint tb_width; -static GLuint tb_height; - -static GLint tb_button = -1; -static GLboolean tb_tracking = GL_FALSE; -static GLboolean tb_animate = GL_TRUE; - -static void -_tbAnimate(void) -{ - add_quats(lastquat, curquat, curquat); - glutPostRedisplay(); -} - -void -_tbStartMotion(int x, int y, int time) -{ - assert(tb_button != -1); - - glutIdleFunc(0); - tb_tracking = GL_TRUE; - tb_lasttime = time; - beginx = x; - beginy = y; -} - -void -_tbStopMotion(unsigned time) -{ - assert(tb_button != -1); - - tb_tracking = GL_FALSE; - - if (time == tb_lasttime && tb_animate) { - glutIdleFunc(_tbAnimate); - } else { - if (tb_animate) { - glutIdleFunc(0); - } - } -} - -void -tbAnimate(GLboolean animate) -{ - tb_animate = animate; -} - -void -tbInit(GLuint button) -{ - tb_button = button; - trackball(curquat, 0.0, 0.0, 0.0, 0.0); -} - -void -tbMatrix(void) -{ - GLfloat m[4][4]; - - assert(tb_button != -1); - build_rotmatrix(m, curquat); - glMultMatrixf(&m[0][0]); -} - -void -tbReshape(int width, int height) -{ - assert(tb_button != -1); - - tb_width = width; - tb_height = height; -} - -void -tbMouse(int button, int state, int x, int y) -{ - assert(tb_button != -1); - - if (state == GLUT_DOWN && button == tb_button) - _tbStartMotion(x, y, glutGet(GLUT_ELAPSED_TIME)); - else if (state == GLUT_UP && button == tb_button) - _tbStopMotion(glutGet(GLUT_ELAPSED_TIME)); -} - -void -tbMotion(int x, int y) -{ - if (tb_tracking) { - trackball(lastquat, - (2.0 * beginx - tb_width) / tb_width, - (tb_height - 2.0 * beginy) / tb_height, - (2.0 * x - tb_width) / tb_width, - (tb_height - 2.0 * y) / tb_height - ); - beginx = x; - beginy = y; - tb_animate = 1; - tb_lasttime = glutGet(GLUT_ELAPSED_TIME); - _tbAnimate(); - } -} diff --git a/lib/glut-3.7.6/progs/demos/gliq/tb.h b/lib/glut-3.7.6/progs/demos/gliq/tb.h deleted file mode 100644 index e4205fb4344d1017a80918e31cf7e657bfa77ff4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/tb.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - * - * - * Usage: - * - * o call tbInit() in before any other tb call - * o call tbReshape() from the reshape callback - * o call tbMatrix() to get the trackball matrix rotation - * o call tbStartMotion() to begin trackball movememt - * o call tbStopMotion() to stop trackball movememt - * o call tbMotion() from the motion callback - * o call tbAnimate(GL_TRUE) if you want the trackball to continue - * spinning after the mouse button has been released - * o call tbAnimate(GL_FALSE) if you want the trackball to stop - * spinning after the mouse button has been released - * - * Typical setup: - * - * - void - init(void) - { - tbInit(GLUT_MIDDLE_BUTTON); - tbAnimate(GL_TRUE); - . . . - } - - void - reshape(int width, int height) - { - tbReshape(width, height); - . . . - } - - void - display(void) - { - glPushMatrix(); - - tbMatrix(); - . . . draw the scene . . . - - glPopMatrix(); - } - - void - mouse(int button, int state, int x, int y) - { - tbMouse(button, state, x, y); - . . . - } - - void - motion(int x, int y) - { - tbMotion(x, y); - . . . - } - - int - main(int argc, char** argv) - { - . . . - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - . . . - } - * - * */ - - -/* functions */ -void -tbInit(GLuint button); - -void -tbMatrix(void); - -void -tbReshape(int width, int height); - -void -tbMouse(int button, int state, int x, int y); - -void -tbMotion(int x, int y); - -void -tbAnimate(GLboolean animate); diff --git a/lib/glut-3.7.6/progs/demos/gliq/trackball.c b/lib/glut-3.7.6/progs/demos/gliq/trackball.c deleted file mode 100644 index c2501e8f452cd328e829526a39dba35353ffdcd3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/trackball.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - */ - - -/* includes */ -#include -#include -#include -#include "trackball.h" - - -/* globals */ -static GLuint tb_lasttime; -static GLfloat tb_lastposition[3]; - -static GLfloat tb_angle = 0.0; -static GLfloat tb_axis[3]; -static GLfloat tb_transform[4][4]; - -static GLuint tb_width; -static GLuint tb_height; - -static GLint tb_button = -1; -static GLboolean tb_tracking = GL_FALSE; -static GLboolean tb_animate = GL_TRUE; - - -/* functions */ -static void -_tbPointToVector(int x, int y, int width, int height, float v[3]) -{ - float d, a; - - /* project x, y onto a hemi-sphere centered within width, height. */ - v[0] = (2.0 * x - width) / width; - v[1] = (height - 2.0 * y) / height; - d = sqrt(v[0] * v[0] + v[1] * v[1]); - v[2] = cos((3.14159265 / 2.0) * ((d < 1.0) ? d : 1.0)); - a = 1.0 / sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - v[0] *= a; - v[1] *= a; - v[2] *= a; -} - -static void -_tbAnimate(void) -{ - glutPostRedisplay(); -} - -void -_tbStartMotion(int x, int y, int button, int time) -{ - assert(tb_button != -1); - - tb_tracking = GL_TRUE; - tb_lasttime = time; - _tbPointToVector(x, y, tb_width, tb_height, tb_lastposition); -} - -void -_tbStopMotion(int button, unsigned time) -{ - assert(tb_button != -1); - - tb_tracking = GL_FALSE; - - if (time == tb_lasttime && tb_animate) { - glutIdleFunc(_tbAnimate); - } else { - tb_angle = 0.0; - if (tb_animate) - glutIdleFunc(0); - } -} - -void -tbAnimate(GLboolean animate) -{ - tb_animate = animate; -} - -void -tbInit(GLuint button) -{ - tb_button = button; - tb_angle = 0.0; - - /* put the identity in the trackball transform */ - glPushMatrix(); - glLoadIdentity(); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)tb_transform); - glPopMatrix(); -} - -void -tbMatrix() -{ - assert(tb_button != -1); - - glPushMatrix(); - glLoadIdentity(); - glRotatef(tb_angle, tb_axis[0], tb_axis[1], tb_axis[2]); - glMultMatrixf((GLfloat *)tb_transform); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)tb_transform); - glPopMatrix(); - - glMultMatrixf((GLfloat *)tb_transform); -} - -void -tbReshape(int width, int height) -{ - assert(tb_button != -1); - - tb_width = width; - tb_height = height; -} - -void -tbMouse(int button, int state, int x, int y) -{ - assert(tb_button != -1); - - if (state == GLUT_DOWN && button == tb_button) - _tbStartMotion(x, y, button, glutGet(GLUT_ELAPSED_TIME)); - else if (state == GLUT_UP && button == tb_button) - _tbStopMotion(button, glutGet(GLUT_ELAPSED_TIME)); -} - -void -tbMotion(int x, int y) -{ - GLfloat current_position[3], dx, dy, dz; - - assert(tb_button != -1); - - if (tb_tracking == GL_FALSE) - return; - - _tbPointToVector(x, y, tb_width, tb_height, current_position); - - /* calculate the angle to rotate by (directly proportional to the - length of the mouse movement */ - dx = current_position[0] - tb_lastposition[0]; - dy = current_position[1] - tb_lastposition[1]; - dz = current_position[2] - tb_lastposition[2]; - tb_angle = 90.0 * sqrt(dx * dx + dy * dy + dz * dz); - - /* calculate the axis of rotation (cross product) */ - tb_axis[0] = tb_lastposition[1] * current_position[2] - - tb_lastposition[2] * current_position[1]; - tb_axis[1] = tb_lastposition[2] * current_position[0] - - tb_lastposition[0] * current_position[2]; - tb_axis[2] = tb_lastposition[0] * current_position[1] - - tb_lastposition[1] * current_position[0]; - - /* reset for next time */ - tb_lasttime = glutGet(GLUT_ELAPSED_TIME); - tb_lastposition[0] = current_position[0]; - tb_lastposition[1] = current_position[1]; - tb_lastposition[2] = current_position[2]; - - /* remember to draw new position */ - glutPostRedisplay(); -} diff --git a/lib/glut-3.7.6/progs/demos/gliq/trackball.h b/lib/glut-3.7.6/progs/demos/gliq/trackball.h deleted file mode 100644 index de0f00c6bd07ca9267394ba9b797929a1cc9a129..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/gliq/trackball.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - * - * - * Usage: - * - * o call tbInit() in before any other tb call - * o call tbReshape() from the reshape callback - * o call tbMatrix() to get the trackball matrix rotation - * o call tbStartMotion() to begin trackball movememt - * o call tbStopMotion() to stop trackball movememt - * o call tbMotion() from the motion callback - * o call tbAnimate(GL_TRUE) if you want the trackball to continue - * spinning after the mouse button has been released - * o call tbAnimate(GL_FALSE) if you want the trackball to stop - * spinning after the mouse button has been released - * - * Typical setup: - * - * - void - init(void) - { - tbInit(GLUT_MIDDLE_BUTTON); - tbAnimate(GL_TRUE); - . . . - } - - void - reshape(int width, int height) - { - tbReshape(width, height); - . . . - } - - void - display(void) - { - glPushMatrix(); - - tbMatrix(); - . . . draw the scene . . . - - glPopMatrix(); - } - - void - mouse(int button, int state, int x, int y) - { - tbMouse(button, state, x, y); - . . . - } - - void - motion(int x, int y) - { - tbMotion(x, y); - . . . - } - - int - main(int argc, char** argv) - { - . . . - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - . . . - } - * - * */ - - -/* functions */ -void -tbInit(GLuint button); - -void -tbMatrix(void); - -void -tbReshape(int width, int height); - -void -tbMouse(int button, int state, int x, int y); - -void -tbMotion(int x, int y); - -void -tbAnimate(GLboolean animate); diff --git a/lib/glut-3.7.6/progs/demos/glutmech/Imakefile b/lib/glut-3.7.6/progs/demos/glutmech/Imakefile deleted file mode 100644 index 7b6bac3dd1ef221db7fefbf6598d67f78ebaf750..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glutmech/Imakefile +++ /dev/null @@ -1,15 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -#include "../../../Glut.cf" - -TARGETS = glutmech - -SRCS = glutmech.c -OBJS = glutmech.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(glutmech,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/glutmech/glutmech.c b/lib/glut-3.7.6/progs/demos/glutmech/glutmech.c deleted file mode 100644 index 5b0193a24559a2d67a2946bd5764af7066f17a9d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glutmech/glutmech.c +++ /dev/null @@ -1,1764 +0,0 @@ - -/** -* program : glutmech V1.1 -* author : Simon Parkinson-Bates. -* E-mail : sapb@yallara.cs.rmit.edu.au -* Copyright Simon Parkinson-Bates. -* "source if freely avaliable to anyone to copy as long as they -* acknowledge me in their work." -* -* Funtional features -* ------------------ -* * online menu system avaliable by pressing left mouse button -* * online cascading help system avaliable, providing information on -* the several key strokes and what they do. -* * animation sequence coded which makes the mech walk through an -* environment. Shadows will soon be added to make it look -* more realistic. -* * menu control to view mech in wireframe or sold mode. -* * various key strokes avaliable to control idependently the mechs -* many joints. -* * various key strokes avaliable to view mech and environment from -* different angles -* * various key strokes avaliable to alter positioning of the single -* light source. -* -* -* Program features -* ---------------- -* * uses double buffering -* * uses display lists -* * uses glut to manage windows, callbacks, and online menu. -* * uses glpolygonfill() to maintain colors in wireframe and solid -* mode. -* -**/ - -/* start of compilation conditions */ -#define SPHERE -#define COLOR -#define LIGHT -#define TORSO -#define HIP -#define SHOULDER -#define UPPER_ARM -#define LOWER_ARM -#define ROCKET_POD -#define UPPER_LEG -#define LOWER_LEG -#define NO_NORM -#define ANIMATION -#define DRAW_MECH -#define DRAW_ENVIRO -#define MOVE_LIGHT -/* end of compilation conditions */ - -/* start various header files needed */ -#include -#include -#define GLUT -#define GLUT_KEY -#define GLUT_SPEC -#include -/* end of header files */ - -/* start of display list definitions */ -#define SOLID_MECH_TORSO 1 -#define SOLID_MECH_HIP 2 -#define SOLID_MECH_SHOULDER 3 -#define SOLID_MECH_UPPER_ARM 4 -#define SOLID_MECH_FOREARM 5 -#define SOLID_MECH_UPPER_LEG 6 -#define SOLID_MECH_FOOT 7 -#define SOLID_MECH_ROCKET 8 -#define SOLID_MECH_VULCAN 9 -#define SOLID_ENVIRO 10 -/* end of display list definitions */ - -/* start of motion rate variables */ -#define ANKLE_RATE 3 -#define HEEL_RATE 3 -#define ROTATE_RATE 10 -#define TILT_RATE 10 -#define ELBOW_RATE 2 -#define SHOULDER_RATE 5 -#define LAT_RATE 5 -#define CANNON_RATE 40 -#define UPPER_LEG_RATE 3 -#define UPPER_LEG_RATE_GROIN 10 -#define LIGHT_TURN_RATE 10 -#define VIEW_TURN_RATE 10 -/* end of motion rate variables */ - -/* start of motion variables */ - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -GLUquadricObj *qobj; - -char leg = 0; - -int shoulder1 = 0, shoulder2 = 0, shoulder3 = 0, shoulder4 = 0, lat1 = 20, lat2 = 20, - elbow1 = 0, elbow2 = 0, pivot = 0, tilt = 10, ankle1 = 0, ankle2 = 0, heel1 = 0, - heel2 = 0, hip11 = 0, hip12 = 10, hip21 = 0, hip22 = 10, fire = 0, solid_part = 0, - anim = 0, turn = 0, turn1 = 0, lightturn = 0, lightturn1 = 0; - -float elevation = 0.0, distance = 0.0, frame = 3.0 - /* foot1v[] = {} foot2v[] = {} */ ; - -/* end of motion variables */ - -/* start of material definitions */ -#ifdef LIGHT -GLfloat mat_specular[] = -{0.628281, 0.555802, 0.366065, 1.0}; -GLfloat mat_ambient[] = -{0.24725, 0.1995, 0.0745, 1.0}; -GLfloat mat_diffuse[] = -{0.75164, 0.60648, 0.22648, 1.0}; -GLfloat mat_shininess[] = -{128.0 * 0.4}; - -GLfloat mat_specular2[] = -{0.508273, 0.508273, 0.508373}; -GLfloat mat_ambient2[] = -{0.19225, 0.19225, 0.19225}; -GLfloat mat_diffuse2[] = -{0.50754, 0.50754, 0.50754}; -GLfloat mat_shininess2[] = -{128.0 * 0.6}; - -GLfloat mat_specular3[] = -{0.296648, 0.296648, 0.296648}; -GLfloat mat_ambient3[] = -{0.25, 0.20725, 0.20725}; -GLfloat mat_diffuse3[] = -{1, 0.829, 0.829}; -GLfloat mat_shininess3[] = -{128.0 * 0.088}; - -GLfloat mat_specular4[] = -{0.633, 0.727811, 0.633}; -GLfloat mat_ambient4[] = -{0.0215, 0.1745, 0.0215}; -GLfloat mat_diffuse4[] = -{0.07568, 0.61424, 0.07568}; -GLfloat mat_shininess4[] = -{128 * 0.6}; - -GLfloat mat_specular5[] = -{0.60, 0.60, 0.50}; -GLfloat mat_ambient5[] = -{0.0, 0.0, 0.0}; -GLfloat mat_diffuse5[] = -{0.5, 0.5, 0.0}; -GLfloat mat_shininess5[] = -{128.0 * 0.25}; - -#endif -/* end of material definitions */ - -/* start of the body motion functions */ -void -Heel1Add(void) -{ - heel1 = (heel1 + HEEL_RATE) % 360; -} - -void -Heel1Subtract(void) -{ - heel1 = (heel1 - HEEL_RATE) % 360; -} - -void -Heel2Add(void) -{ - heel2 = (heel2 + HEEL_RATE) % 360; -} - -void -Heel2Subtract(void) -{ - heel2 = (heel2 - HEEL_RATE) % 360; -} - -void -Ankle1Add(void) -{ - ankle1 = (ankle1 + ANKLE_RATE) % 360; -} - -void -Ankle1Subtract(void) -{ - ankle1 = (ankle1 - ANKLE_RATE) % 360; -} - -void -Ankle2Add(void) -{ - ankle2 = (ankle2 + ANKLE_RATE) % 360; -} - -void -Ankle2Subtract(void) -{ - ankle2 = (ankle2 - ANKLE_RATE) % 360; -} - -void -RotateAdd(void) -{ - pivot = (pivot + ROTATE_RATE) % 360; -} - -void -RotateSubtract(void) -{ - pivot = (pivot - ROTATE_RATE) % 360; -} - -void -MechTiltSubtract(void) -{ - tilt = (tilt - TILT_RATE) % 360; -} - -void -MechTiltAdd(void) -{ - tilt = (tilt + TILT_RATE) % 360; -} - -void -elbow1Add(void) -{ - elbow1 = (elbow1 + ELBOW_RATE) % 360; -} - -void -elbow1Subtract(void) -{ - elbow1 = (elbow1 - ELBOW_RATE) % 360; -} - -void -elbow2Add(void) -{ - elbow2 = (elbow2 + ELBOW_RATE) % 360; -} - -void -elbow2Subtract(void) -{ - elbow2 = (elbow2 - ELBOW_RATE) % 360; -} - -void -shoulder1Add(void) -{ - shoulder1 = (shoulder1 + SHOULDER_RATE) % 360; -} - -void -shoulder1Subtract(void) -{ - shoulder1 = (shoulder1 - SHOULDER_RATE) % 360; -} - -void -shoulder2Add(void) -{ - shoulder2 = (shoulder2 + SHOULDER_RATE) % 360; -} - -void -shoulder2Subtract(void) -{ - shoulder2 = (shoulder2 - SHOULDER_RATE) % 360; -} - -void -shoulder3Add(void) -{ - shoulder3 = (shoulder3 + SHOULDER_RATE) % 360; -} - -void -shoulder3Subtract(void) -{ - shoulder3 = (shoulder3 - SHOULDER_RATE) % 360; -} - -void -shoulder4Add(void) -{ - shoulder4 = (shoulder4 + SHOULDER_RATE) % 360; -} - -void -shoulder4Subtract(void) -{ - shoulder4 = (shoulder4 - SHOULDER_RATE) % 360; -} - -void -lat1Raise(void) -{ - lat1 = (lat1 + LAT_RATE) % 360; -} - -void -lat1Lower(void) -{ - lat1 = (lat1 - LAT_RATE) % 360; -} - -void -lat2Raise(void) -{ - lat2 = (lat2 + LAT_RATE) % 360; -} - -void -lat2Lower(void) -{ - lat2 = (lat2 - LAT_RATE) % 360; -} - -void -FireCannon(void) -{ - fire = (fire + CANNON_RATE) % 360; -} - -void -RaiseLeg1Forward(void) -{ - hip11 = (hip11 + UPPER_LEG_RATE) % 360; -} - -void -LowerLeg1Backwards(void) -{ - hip11 = (hip11 - UPPER_LEG_RATE) % 360; -} - -void -RaiseLeg1Outwards(void) -{ - hip12 = (hip12 + UPPER_LEG_RATE_GROIN) % 360; -} - -void -LowerLeg1Inwards(void) -{ - hip12 = (hip12 - UPPER_LEG_RATE_GROIN) % 360; -} - -void -RaiseLeg2Forward(void) -{ - hip21 = (hip21 + UPPER_LEG_RATE) % 360; -} - -void -LowerLeg2Backwards(void) -{ - hip21 = (hip21 - UPPER_LEG_RATE) % 360; -} - -void -RaiseLeg2Outwards(void) -{ - hip22 = (hip22 + UPPER_LEG_RATE_GROIN) % 360; -} - -void -LowerLeg2Inwards(void) -{ - hip22 = (hip22 - UPPER_LEG_RATE_GROIN) % 360; -} - -/* end of body motion functions */ - -/* start of light source position functions */ -void -TurnRight(void) -{ - turn = (turn - VIEW_TURN_RATE) % 360; -} - -void -TurnLeft(void) -{ - turn = (turn + VIEW_TURN_RATE) % 360; -} - -void -TurnForwards(void) -{ - turn1 = (turn1 - VIEW_TURN_RATE) % 360; -} - -void -TurnBackwards(void) -{ - turn1 = (turn1 + VIEW_TURN_RATE) % 360; -} - -void -LightTurnRight(void) -{ - lightturn = (lightturn + LIGHT_TURN_RATE) % 360; -} - -void -LightTurnLeft(void) -{ - lightturn = (lightturn - LIGHT_TURN_RATE) % 360; -} - -void -LightForwards(void) -{ - lightturn1 = (lightturn1 + LIGHT_TURN_RATE) % 360; -} - -void -LightBackwards(void) -{ - lightturn1 = (lightturn1 - LIGHT_TURN_RATE) % 360; -} - -/* end of light source position functions */ - -/* start of geometric shape functions */ -void -Box(float width, float height, float depth, char solid) -{ - char i, j = 0; - float x = width / 2.0, y = height / 2.0, z = depth / 2.0; - - for (i = 0; i < 4; i++) { - glRotatef(90.0, 0.0, 0.0, 1.0); - if (j) { - if (!solid) - glBegin(GL_LINE_LOOP); - else - glBegin(GL_QUADS); - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(-x, y, z); - glVertex3f(-x, -y, z); - glVertex3f(-x, -y, -z); - glVertex3f(-x, y, -z); - glEnd(); - if (solid) { - glBegin(GL_TRIANGLES); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(0.0, 0.0, z); - glVertex3f(-x, y, z); - glVertex3f(-x, -y, z); - glNormal3f(0.0, 0.0, -1.0); - glVertex3f(0.0, 0.0, -z); - glVertex3f(-x, -y, -z); - glVertex3f(-x, y, -z); - glEnd(); - } - j = 0; - } else { - if (!solid) - glBegin(GL_LINE_LOOP); - else - glBegin(GL_QUADS); - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(-y, x, z); - glVertex3f(-y, -x, z); - glVertex3f(-y, -x, -z); - glVertex3f(-y, x, -z); - glEnd(); - if (solid) { - glBegin(GL_TRIANGLES); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(0.0, 0.0, z); - glVertex3f(-y, x, z); - glVertex3f(-y, -x, z); - glNormal3f(0.0, 0.0, -1.0); - glVertex3f(0.0, 0.0, -z); - glVertex3f(-y, -x, -z); - glVertex3f(-y, x, -z); - glEnd(); - } - j = 1; - } - } -} - -void -Octagon(float side, float height, char solid) -{ - char j; - float x = sin(0.785398163) * side, y = side / 2.0, z = height / 2.0, c; - - c = x + y; - for (j = 0; j < 8; j++) { - glTranslatef(-c, 0.0, 0.0); - if (!solid) - glBegin(GL_LINE_LOOP); - else - glBegin(GL_QUADS); - glNormal3f(-1.0, 0.0, 0.0); - glVertex3f(0.0, -y, z); - glVertex3f(0.0, y, z); - glVertex3f(0.0, y, -z); - glVertex3f(0.0, -y, -z); - glEnd(); - glTranslatef(c, 0.0, 0.0); - if (solid) { - glBegin(GL_TRIANGLES); - glNormal3f(0.0, 0.0, 1.0); - glVertex3f(0.0, 0.0, z); - glVertex3f(-c, -y, z); - glVertex3f(-c, y, z); - glNormal3f(0.0, 0.0, -1.0); - glVertex3f(0.0, 0.0, -z); - glVertex3f(-c, y, -z); - glVertex3f(-c, -y, -z); - glEnd(); - } - glRotatef(45.0, 0.0, 0.0, 1.0); - } -} - -/* end of geometric shape functions */ -#ifdef NORM -void -Normalize(float v[3]) -{ - GLfloat d = sqrt(v[1] * v[1] + v[2] * v[2] + v[3] * v[3]); - - if (d == 0.0) { - printf("zero length vector"); - return; - } - v[1] /= d; - v[2] /= d; - v[3] /= d; -} - -void -NormXprod(float v1[3], float v2[3], float v[3], float out[3]) -{ - GLint i, j; - GLfloat length; - - out[0] = v1[1] * v2[2] - v1[2] * v2[1]; - out[1] = v1[2] * v2[0] - v1[0] * v2[2]; - out[2] = v1[0] * v2[1] - v1[1] * v2[0]; - Normalize(out); -} - -#endif - -void -SetMaterial(GLfloat spec[], GLfloat amb[], GLfloat diff[], GLfloat shin[]) -{ - - glMaterialfv(GL_FRONT, GL_SPECULAR, spec); - glMaterialfv(GL_FRONT, GL_SHININESS, shin); - glMaterialfv(GL_FRONT, GL_AMBIENT, amb); - glMaterialfv(GL_FRONT, GL_DIFFUSE, diff); -} - -void -MechTorso(char solid) -{ - glNewList(SOLID_MECH_TORSO, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Box(1.0, 1.0, 3.0, solid); - glTranslatef(0.75, 0.0, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - Box(0.5, 0.6, 2.0, solid); - glTranslatef(-1.5, 0.0, 0.0); - Box(0.5, 0.6, 2.0, solid); - glTranslatef(0.75, 0.0, 0.0); - glEndList(); -} - -void -MechHip(char solid) -{ - int i; - - glNewList(SOLID_MECH_HIP, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Octagon(0.7, 0.5, solid); -#ifdef SPHERE - for (i = 0; i < 2; i++) { - if (i) - glScalef(-1.0, 1.0, 1.0); - glTranslatef(1.0, 0.0, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - gluSphere(qobj, 0.2, 16, 16); - glTranslatef(-1.0, 0.0, 0.0); - } - glScalef(-1.0, 1.0, 1.0); -#endif - glEndList(); -} - -void -Shoulder(char solid) -{ - glNewList(SOLID_MECH_SHOULDER, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Box(1.0, 0.5, 0.5, solid); - glTranslatef(0.9, 0.0, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); -#ifdef SPHERE - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - gluSphere(qobj, 0.6, 16, 16); -#endif - glTranslatef(-0.9, 0.0, 0.0); - glEndList(); -} - -void -UpperArm(char solid) -{ - int i; - - glNewList(SOLID_MECH_UPPER_ARM, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Box(1.0, 2.0, 1.0, solid); - glTranslatef(0.0, -0.95, 0.0); - glRotatef(90.0, 1.0, 0.0, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - gluCylinder(qobj, 0.4, 0.4, 1.5, 16, 10); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - glRotatef(-90.0, 1.0, 0.0, 0.0); - glTranslatef(-0.4, -1.85, 0.0); - glRotatef(90.0, 0.0, 1.0, 0.0); - for (i = 0; i < 2; i++) { - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - if (i) - gluCylinder(qobj, 0.5, 0.5, 0.8, 16, 10); - else - gluCylinder(qobj, 0.2, 0.2, 0.8, 16, 10); - } - for (i = 0; i < 2; i++) { - if (i) - glScalef(-1.0, 1.0, 1.0); - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - if (i) - glTranslatef(0.0, 0.0, 0.8); - gluDisk(qobj, 0.2, 0.5, 16, 10); - if (i) - glTranslatef(0.0, 0.0, -0.8); - } - glScalef(-1.0, 1.0, 1.0); - glRotatef(-90.0, 0.0, 1.0, 0.0); - glTranslatef(0.4, 2.9, 0.0); - glEndList(); -} - -void -VulcanGun(char solid) -{ - int i; - - glNewList(SOLID_MECH_VULCAN, GL_COMPILE); - -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - - if (!solid) { - gluQuadricDrawStyle(qobj, GLU_LINE); - } - gluCylinder(qobj, 0.5, 0.5, 0.5, 16, 10); - glTranslatef(0.0, 0.0, 0.5); - gluDisk(qobj, 0.0, 0.5, 16, 10); - - for (i = 0; i < 5; i++) { - glRotatef(72.0, 0.0, 0.0, 1.0); - glTranslatef(0.0, 0.3, 0.0); - if (!solid) { - gluQuadricDrawStyle(qobj, GLU_LINE); - } - gluCylinder(qobj, 0.15, 0.15, 2.0, 16, 10); - gluCylinder(qobj, 0.06, 0.06, 2.0, 16, 10); - glTranslatef(0.0, 0.0, 2.0); - gluDisk(qobj, 0.1, 0.15, 16, 10); - gluCylinder(qobj, 0.1, 0.1, 0.1, 16, 5); - glTranslatef(0.0, 0.0, 0.1); - gluDisk(qobj, 0.06, 0.1, 16, 5); - glTranslatef(0.0, -0.3, -2.1); - } - glEndList(); -} - -void -ForeArm(char solid) -{ - char i; - - glNewList(SOLID_MECH_FOREARM, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - for (i = 0; i < 5; i++) { - glTranslatef(0.0, -0.1, -0.15); - Box(0.6, 0.8, 0.2, solid); - glTranslatef(0.0, 0.1, -0.15); - Box(0.4, 0.6, 0.1, solid); - } - glTranslatef(0.0, 0.0, 2.45); - Box(1.0, 1.0, 2.0, solid); - glTranslatef(0.0, 0.0, -1.0); - glEndList(); -} - -void -UpperLeg(char solid) -{ - int i; - - glNewList(SOLID_MECH_UPPER_LEG, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - if (!solid) { - gluQuadricDrawStyle(qobj, GLU_LINE); - } - glTranslatef(0.0, -1.0, 0.0); - Box(0.4, 1.0, 0.7, solid); - glTranslatef(0.0, -0.65, 0.0); - for (i = 0; i < 5; i++) { - Box(1.2, 0.3, 1.2, solid); - glTranslatef(0.0, -0.2, 0.0); - Box(1.0, 0.1, 1.0, solid); - glTranslatef(0.0, -0.2, 0.0); - } - glTranslatef(0.0, -0.15, -0.4); - Box(2.0, 0.5, 2.0, solid); - glTranslatef(0.0, -0.3, -0.2); - glRotatef(90.0, 1.0, 0.0, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - gluCylinder(qobj, 0.6, 0.6, 3.0, 16, 10); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - glRotatef(-90.0, 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.5, 1.0); - Box(1.5, 3.0, 0.5, solid); - glTranslatef(0.0, -1.75, -0.8); - Box(2.0, 0.5, 2.0, solid); - glTranslatef(0.0, -0.9, -0.85); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - gluCylinder(qobj, 0.8, 0.8, 1.8, 16, 10); - for (i = 0; i < 2; i++) { - if (i) - glScalef(-1.0, 1.0, 1.0); - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - if (i) - glTranslatef(0.0, 0.0, 1.8); - gluDisk(qobj, 0.0, 0.8, 16, 10); - if (i) - glTranslatef(0.0, 0.0, -1.8); - } - glScalef(-1.0, 1.0, 1.0); - glEndList(); -} - -void -Foot(char solid) -{ - - glNewList(SOLID_MECH_FOOT, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - glRotatef(90.0, 1.0, 0.0, 0.0); - Octagon(1.5, 0.6, solid); - glRotatef(-90.0, 1.0, 0.0, 0.0); - glEndList(); -} - -void -LowerLeg(char solid) -{ - float k, l; - -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - for (k = 0.0; k < 2.0; k++) { - for (l = 0.0; l < 2.0; l++) { - glPushMatrix(); - glTranslatef(k, 0.0, l); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Box(1.0, 0.5, 1.0, solid); - glTranslatef(0.0, -0.45, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); -#ifdef SPHERE - if (!solid) - glutWireSphere(0.2, 16, 10); - else - glutSolidSphere(0.2, 16, 10); -#endif - if (leg) - glRotatef((GLfloat) heel1, 1.0, 0.0, 0.0); - else - glRotatef((GLfloat) heel2, 1.0, 0.0, 0.0); - /* glTranslatef(0.0, -0.2, 0.0); */ - glTranslatef(0.0, -1.7, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Box(0.25, 3.0, 0.25, solid); - glTranslatef(0.0, -1.7, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); -#ifdef SPHERE - if (!solid) - glutWireSphere(0.2, 16, 10); - else - glutSolidSphere(0.2, 16, 10); -#endif - if (leg) - glRotatef((GLfloat) - heel1, 1.0, 0.0, 0.0); - else - glRotatef((GLfloat) - heel2, 1.0, 0.0, 0.0); - glTranslatef(0.0, -0.45, 0.0); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Box(1.0, 0.5, 1.0, solid); - if (!k && !l) { - int j; - - glTranslatef(-0.4, -0.8, 0.5); - if (leg) - glRotatef((GLfloat) ankle1, 1.0, 0.0, 0.0); - else - glRotatef((GLfloat) ankle2, 1.0, 0.0, 0.0); - glRotatef(90.0, 0.0, 1.0, 0.0); - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - gluCylinder(qobj, 0.8, 0.8, 1.8, 16, 10); - for (j = 0; j < 2; j++) { - if (!solid) - gluQuadricDrawStyle(qobj, GLU_LINE); - if (j) { - glScalef(-1.0, 1.0, 1.0); - glTranslatef(0.0, 0.0, 1.8); - } - gluDisk(qobj, 0.0, 0.8, 16, 10); - if (j) - glTranslatef(0.0, 0.0, -1.8); - } - glScalef(-1.0, 1.0, 1.0); - glRotatef(-90.0, 0.0, 1.0, 0.0); - glTranslatef(0.95, -0.8, 0.0); - glCallList(SOLID_MECH_FOOT); - } - glPopMatrix(); - } - } -} - -void -RocketPod(char solid) -{ - - int i, j, k = 0; - - glNewList(SOLID_MECH_ROCKET, GL_COMPILE); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glColor3f(0.5, 0.5, 0.5); - glScalef(0.4, 0.4, 0.4); - glRotatef(45.0, 0.0, 0.0, 1.0); - glTranslatef(1.0, 0.0, 0.0); - Box(2.0, 0.5, 3.0, solid); - glTranslatef(1.0, 0.0, 0.0); - glRotatef(45.0, 0.0, 0.0, 1.0); - glTranslatef(0.5, 0.0, 0.0); - Box(1.2, 0.5, 3.0, solid); - glTranslatef(2.1, 0.0, 0.0); - glRotatef(-90.0, 0.0, 0.0, 1.0); -#ifdef LIGHT - SetMaterial(mat_specular, mat_ambient, mat_diffuse, mat_shininess); -#endif - glColor3f(1.0, 1.0, 0.0); - Box(2.0, 3.0, 4.0, solid); - glTranslatef(-0.5, -1.0, 1.3); - for (i = 0; i < 2; i++) { - for (j = 0; j < 3; j++) { - if (!solid) { - gluQuadricDrawStyle(qobj, GLU_LINE); - } - glTranslatef(i, j, 0.6); -#ifdef LIGHT - SetMaterial(mat_specular3, mat_ambient3, mat_diffuse3, mat_shininess3); -#endif - glColor3f(1.0, 1.0, 1.0); - gluCylinder(qobj, 0.4, 0.4, 0.3, 16, 10); - glTranslatef(0.0, 0.0, 0.3); -#ifdef LIGHT - SetMaterial(mat_specular4, mat_ambient4, mat_diffuse4, mat_shininess4); -#endif - glColor3f(0.0, 1.0, 0.0); - gluCylinder(qobj, 0.4, 0.0, 0.5, 16, 10); - k++; - glTranslatef(-i, -j, -0.9); - } - } - glEndList(); -} - -void -Enviro(char solid) -{ - - int i, j; - - glNewList(SOLID_ENVIRO, GL_COMPILE); - SetMaterial(mat_specular4, mat_ambient4, mat_diffuse4, mat_shininess4); - glColor3f(0.0, 1.0, 0.0); - Box(20.0, 0.5, 30.0, solid); - SetMaterial(mat_specular4, mat_ambient3, mat_diffuse2, mat_shininess); - glColor3f(0.6, 0.6, 0.6); - glTranslatef(0.0, 0.0, -10.0); - for (j = 0; j < 6; j++) { - for (i = 0; i < 2; i++) { - if (i) - glScalef(-1.0, 1.0, 1.0); - glTranslatef(10.0, 4.0, 0.0); - Box(4.0, 8.0, 2.0, solid); - glTranslatef(0.0, -1.0, -3.0); - Box(4.0, 6.0, 2.0, solid); - glTranslatef(-10.0, -3.0, 3.0); - } - glScalef(-1.0, 1.0, 1.0); - glTranslatef(0.0, 0.0, 5.0); - } - glEndList(); -} - -void -Toggle(void) -{ - if (solid_part) - solid_part = 0; - else - solid_part = 1; -} - -void -disable(void) -{ - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - glDisable(GL_NORMALIZE); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); -} - -void -lighting(void) -{ - - GLfloat position[] = - {0.0, 0.0, 2.0, 1.0}; - -#ifdef MOVE_LIGHT - glRotatef((GLfloat) lightturn1, 1.0, 0.0, 0.0); - glRotatef((GLfloat) lightturn, 0.0, 1.0, 0.0); - glRotatef(0.0, 1.0, 0.0, 0.0); -#endif - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_NORMALIZE); - glDepthFunc(GL_LESS); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 80.0); - - glTranslatef(0.0, 0.0, 2.0); - glDisable(GL_LIGHTING); - Box(0.1, 0.1, 0.1, 0); - glEnable(GL_LIGHTING); -} - -void -DrawMech(void) -{ - int i, j; - - glScalef(0.5, 0.5, 0.5); - glPushMatrix(); - glTranslatef(0.0, -0.75, 0.0); - glRotatef((GLfloat) tilt, 1.0, 0.0, 0.0); - - glRotatef(90.0, 1.0, 0.0, 0.0); -#ifdef HIP - glCallList(SOLID_MECH_HIP); -#endif - glRotatef(-90.0, 1.0, 0.0, 0.0); - - glTranslatef(0.0, 0.75, 0.0); - glPushMatrix(); - glRotatef((GLfloat) pivot, 0.0, 1.0, 0.0); - glPushMatrix(); -#ifdef TORSO - glCallList(SOLID_MECH_TORSO); -#endif - glPopMatrix(); - glPushMatrix(); - glTranslatef(0.5, 0.5, 0.0); -#ifdef ROCKET_POD - glCallList(SOLID_MECH_ROCKET); -#endif - glPopMatrix(); - for (i = 0; i < 2; i++) { - glPushMatrix(); - if (i) - glScalef(-1.0, 1.0, 1.0); - glTranslatef(1.5, 0.0, 0.0); -#ifdef SHOULDER - glCallList(SOLID_MECH_SHOULDER); -#endif - glTranslatef(0.9, 0.0, 0.0); - if (i) { - glRotatef((GLfloat) lat1, 0.0, 0.0, 1.0); - glRotatef((GLfloat) shoulder1, 1.0, 0.0, 0.0); - glRotatef((GLfloat) shoulder3, 0.0, 1.0, 0.0); - } else { - glRotatef((GLfloat) lat2, 0.0, 0.0, 1.0); - glRotatef((GLfloat) shoulder2, 1.0, 0.0, 0.0); - glRotatef((GLfloat) shoulder4, 0.0, 1.0, 0.0); - } - glTranslatef(0.0, -1.4, 0.0); -#ifdef UPPER_ARM - glCallList(SOLID_MECH_UPPER_ARM); -#endif - glTranslatef(0.0, -2.9, 0.0); - if (i) - glRotatef((GLfloat) elbow1, 1.0, 0.0, 0.0); - else - glRotatef((GLfloat) elbow2, 1.0, 0.0, 0.0); - glTranslatef(0.0, -0.9, -0.2); -#ifdef LOWER_ARM - glCallList(SOLID_MECH_FOREARM); - glPushMatrix(); - glTranslatef(0.0, 0.0, 2.0); - glRotatef((GLfloat) fire, 0.0, 0.0, 1.0); - glCallList(SOLID_MECH_VULCAN); - glPopMatrix(); -#endif - glPopMatrix(); - } - glPopMatrix(); - - glPopMatrix(); - - for (j = 0; j < 2; j++) { - glPushMatrix(); - if (j) { - glScalef(-0.5, 0.5, 0.5); - leg = 1; - } else { - glScalef(0.5, 0.5, 0.5); - leg = 0; - } - glTranslatef(2.0, -1.5, 0.0); - if (j) { - glRotatef((GLfloat) hip11, 1.0, 0.0, 0.0); - glRotatef((GLfloat) hip12, 0.0, 0.0, 1.0); - } else { - glRotatef((GLfloat) hip21, 1.0, 0.0, 0.0); - glRotatef((GLfloat) hip22, 0.0, 0.0, 1.0); - } - glTranslatef(0.0, 0.3, 0.0); -#ifdef UPPER_LEG - glPushMatrix(); - glCallList(SOLID_MECH_UPPER_LEG); - glPopMatrix(); -#endif - glTranslatef(0.0, -8.3, -0.4); - if (j) - glRotatef((GLfloat) - hip12, 0.0, 0.0, 1.0); - else - glRotatef((GLfloat) - hip22, 0.0, 0.0, 1.0); - glTranslatef(-0.5, -0.85, -0.5); -#ifdef LOWER_LEG - LowerLeg(1); -#endif - glPopMatrix(); - } -} - -void -display(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - - glPushMatrix(); - glRotatef((GLfloat) turn, 0.0, 1.0, 0.0); - glRotatef((GLfloat) turn1, 1.0, 0.0, 0.0); -#ifdef LIGHT - if (solid_part) { - glPushMatrix(); - lighting(); - glPopMatrix(); - } else - disable(); -#endif -#ifdef DRAW_MECH - glPushMatrix(); - glTranslatef(0.0, elevation, 0.0); - DrawMech(); - glPopMatrix(); -#endif -#ifdef DRAW_ENVIRO - glPushMatrix(); - if (distance >= 20.136) - distance = 0.0; - glTranslatef(0.0, -5.0, -distance); - glCallList(SOLID_ENVIRO); - glTranslatef(0.0, 0.0, 10.0); - glCallList(SOLID_ENVIRO); - glPopMatrix(); -#endif - glPopMatrix(); - glFlush(); - glutSwapBuffers(); -} - -void -myinit(void) -{ - char i = 1; - - qobj = gluNewQuadric(); -#ifdef LIGHT - SetMaterial(mat_specular2, mat_ambient2, mat_diffuse2, mat_shininess2); -#endif - glEnable(GL_DEPTH_TEST); - MechTorso(i); - MechHip(i); - Shoulder(i); - RocketPod(i); - UpperArm(i); - ForeArm(i); - UpperLeg(i); - Foot(i); - VulcanGun(i); - Enviro(i); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(65.0, (GLfloat) w / (GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 1.2, -5.5); /* viewing transform */ -} - -#ifdef ANIMATION -void -animation_walk(void) -{ - float angle; - static int step; - - if (step == 0 || step == 2) { - /* for(frame=3.0; frame<=21.0; frame=frame+3.0){ */ - if (frame >= 0.0 && frame <= 21.0) { - if (frame == 0.0) - frame = 3.0; - angle = (180 / M_PI) * (acos(((cos((M_PI / 180) * frame) * 2.043) + 1.1625) / 3.2059)); - if (frame > 0) { - elevation = -(3.2055 - (cos((M_PI / 180) * angle) * 3.2055)); - } else - elevation = 0.0; - if (step == 0) { - hip11 = -(frame * 1.7); - if (1.7 * frame > 15) - heel1 = frame * 1.7; - heel2 = 0; - ankle1 = frame * 1.7; - if (frame > 0) - hip21 = angle; - else - hip21 = 0; - ankle2 = -hip21; - shoulder1 = frame * 1.5; - shoulder2 = -frame * 1.5; - elbow1 = frame; - elbow2 = -frame; - } else { - hip21 = -(frame * 1.7); - if (1.7 * frame > 15) - heel2 = frame * 1.7; - heel1 = 0; - ankle2 = frame * 1.7; - if (frame > 0) - hip11 = angle; - else - hip11 = 0; - ankle1 = -hip11; - shoulder1 = -frame * 1.5; - shoulder2 = frame * 1.5; - elbow1 = -frame; - elbow2 = frame; - } - if (frame == 21) - step++; - if (frame < 21) - frame = frame + 3.0; - } - } - if (step == 1 || step == 3) { - /* for(x=21.0; x>=0.0; x=x-3.0){ */ - if (frame <= 21.0 && frame >= 0.0) { - angle = (180 / M_PI) * (acos(((cos((M_PI / 180) * frame) * 2.043) + 1.1625) / 3.2029)); - if (frame > 0) - elevation = -(3.2055 - (cos((M_PI / 180) * angle) * 3.2055)); - else - elevation = 0.0; - if (step == 1) { - elbow2 = hip11 = -frame; - elbow1 = heel1 = frame; - heel2 = 15; - ankle1 = frame; - if (frame > 0) - hip21 = angle; - else - hip21 = 0; - ankle2 = -hip21; - shoulder1 = 1.5 * frame; - shoulder2 = -frame * 1.5; - } else { - elbow1 = hip21 = -frame; - elbow2 = heel2 = frame; - heel1 = 15; - ankle2 = frame; - if (frame > 0) - hip11 = angle; - else - hip11 = 0; - ankle1 = -hip11; - shoulder1 = -frame * 1.5; - shoulder2 = frame * 1.5; - } - if (frame == 0.0) - step++; - if (frame > 0) - frame = frame - 3.0; - } - } - if (step == 4) - step = 0; - distance += 0.1678; - glutPostRedisplay(); -} - -void -animation(void) -{ - animation_walk(); -} - -#endif - -#ifdef GLUT -#ifdef GLUT_KEY -/* ARGSUSED1 */ -void -keyboard(unsigned char key, int x, int y) -{ - - int i = 0; - - switch (key) { - /* start arm control functions */ - case 'q':{ - shoulder2Subtract(); - i++; - } - break; - case 'a':{ - shoulder2Add(); - i++; - } - break; - case 'w':{ - shoulder1Subtract(); - i++; - } - break; - case 's':{ - shoulder1Add(); - i++; - } - break; - case '2':{ - shoulder3Add(); - i++; - } - break; - case '1':{ - shoulder4Add(); - i++; - } - break; - case '4':{ - shoulder3Subtract(); - i++; - } - break; - case '3':{ - shoulder4Subtract(); - i++; - } - break; - - case 'z':{ - lat2Raise(); - i++; - } - break; - case 'Z':{ - lat2Lower(); - i++; - } - break; - case 'x':{ - lat1Raise(); - i++; - } - break; - case 'X':{ - lat1Lower(); - i++; - } - break; - - case 'A':{ - elbow2Add(); - i++; - } - break; - case 'Q':{ - elbow2Subtract(); - i++; - } - break; - case 'S':{ - elbow1Add(); - i++; - } - break; - case 'W':{ - elbow1Subtract(); - i++; - } - break; - /* end of arm control functions */ - - /* start of torso control functions */ - case 'd':{ - RotateAdd(); - i++; - } - break; - case 'g':{ - RotateSubtract(); - i++; - } - break; - case 'r':{ - MechTiltAdd(); - i++; - } - break; - case 'f':{ - MechTiltSubtract(); - i++; - } - break; - /* end of torso control functions */ - - /* start of leg control functions */ - case 'h':{ - RaiseLeg2Forward(); - i++; - } - break; - case 'y':{ - LowerLeg2Backwards(); - i++; - } - break; - case 'Y':{ - RaiseLeg2Outwards(); - i++; - } - break; - case 'H':{ - LowerLeg2Inwards(); - i++; - } - break; - - case 'j':{ - RaiseLeg1Forward(); - i++; - } - break; - case 'u':{ - LowerLeg1Backwards(); - i++; - } - break; - case 'U':{ - RaiseLeg1Outwards(); - i++; - } - break; - case 'J':{ - LowerLeg1Inwards(); - i++; - } - break; - - case 'N':{ - Heel2Add(); - i++; - } - break; - case 'n':{ - Heel2Subtract(); - i++; - } - break; - case 'M':{ - Heel1Add(); - i++; - } - break; - case 'm':{ - Heel1Subtract(); - i++; - } - break; - - case 'k':{ - Ankle2Add(); - i++; - } - break; - case 'K':{ - Ankle2Subtract(); - i++; - } - break; - case 'l':{ - Ankle1Add(); - i++; - } - break; - case 'L':{ - Ankle1Subtract(); - i++; - } - break; - /* end of leg control functions */ - - /* start of light source position functions */ - case 'p':{ - LightTurnRight(); - i++; - } - break; - case 'i':{ - LightTurnLeft(); - i++; - } - break; - case 'o':{ - LightForwards(); - i++; - } - break; - case '9':{ - LightBackwards(); - i++; - } - break; - /* end of light source position functions */ - } - if (i) - glutPostRedisplay(); -} - -#endif - -#ifdef GLUT_SPEC -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - - int i = 0; - - switch (key) { - /* start of view position functions */ - case GLUT_KEY_RIGHT:{ - TurnRight(); - i++; - } - break; - case GLUT_KEY_LEFT:{ - TurnLeft(); - i++; - } - break; - case GLUT_KEY_DOWN:{ - TurnForwards(); - i++; - } - break; - case GLUT_KEY_UP:{ - TurnBackwards(); - i++; - } - break; - /* end of view postions functions */ - /* start of miseclleneous functions */ - case GLUT_KEY_PAGE_UP:{ - FireCannon(); - i++; - } - break; - /* end of miscelleneous functions */ - } - if (i) - glutPostRedisplay(); -} - -#endif -#endif -void -menu_select(int mode) -{ - switch (mode) { -#ifdef ANIMATION - case 1: - glutIdleFunc(animation); - break; -#endif - case 2: - glutIdleFunc(NULL); - break; - case 3: - Toggle(); - glutPostRedisplay(); - break; - case 4: - exit(EXIT_SUCCESS); - } -} - -/* ARGSUSED */ -void -null_select(int mode) -{ -} - -void -glutMenu(void) -{ - - int glut_menu[13]; - - glut_menu[5] = glutCreateMenu(null_select); - glutAddMenuEntry("forward : q,w", 0); - glutAddMenuEntry("backwards : a,s", 0); - glutAddMenuEntry("outwards : z,x", 0); - glutAddMenuEntry("inwards : Z,X", 0); - - glut_menu[6] = glutCreateMenu(null_select); - glutAddMenuEntry("upwards : Q,W", 0); - glutAddMenuEntry("downwards : A,S", 0); - glutAddMenuEntry("outwards : 1,2", 0); - glutAddMenuEntry("inwards : 3,4", 0); - - glut_menu[1] = glutCreateMenu(null_select); - glutAddMenuEntry(" : Page_up", 0); - - glut_menu[8] = glutCreateMenu(null_select); - glutAddMenuEntry("forward : y,u", 0); - glutAddMenuEntry("backwards : h.j", 0); - glutAddMenuEntry("outwards : Y,U", 0); - glutAddMenuEntry("inwards : H,J", 0); - - glut_menu[9] = glutCreateMenu(null_select); - glutAddMenuEntry("forward : n,m", 0); - glutAddMenuEntry("backwards : N,M", 0); - - glut_menu[9] = glutCreateMenu(null_select); - glutAddMenuEntry("forward : n,m", 0); - glutAddMenuEntry("backwards : N,M", 0); - - glut_menu[10] = glutCreateMenu(null_select); - glutAddMenuEntry("toes up : K,L", 0); - glutAddMenuEntry("toes down : k,l", 0); - - glut_menu[11] = glutCreateMenu(null_select); - glutAddMenuEntry("right : right arrow", 0); - glutAddMenuEntry("left : left arrow", 0); - glutAddMenuEntry("down : up arrow", 0); - glutAddMenuEntry("up : down arrow", 0); - - glut_menu[12] = glutCreateMenu(null_select); - glutAddMenuEntry("right : p", 0); - glutAddMenuEntry("left : i", 0); - glutAddMenuEntry("up : 9", 0); - glutAddMenuEntry("down : o", 0); - - glut_menu[4] = glutCreateMenu(NULL); - glutAddSubMenu("at the shoulders? ", glut_menu[5]); - glutAddSubMenu("at the elbows?", glut_menu[6]); - - glut_menu[7] = glutCreateMenu(NULL); - glutAddSubMenu("at the hip? ", glut_menu[8]); - glutAddSubMenu("at the knees?", glut_menu[9]); - glutAddSubMenu("at the ankles? ", glut_menu[10]); - - glut_menu[2] = glutCreateMenu(null_select); - glutAddMenuEntry("turn left : d", 0); - glutAddMenuEntry("turn right : g", 0); - - glut_menu[3] = glutCreateMenu(null_select); - glutAddMenuEntry("tilt backwards : f", 0); - glutAddMenuEntry("tilt forwards : r", 0); - - glut_menu[0] = glutCreateMenu(NULL); - glutAddSubMenu("move the arms.. ", glut_menu[4]); - glutAddSubMenu("fire the vulcan guns?", glut_menu[1]); - glutAddSubMenu("move the legs.. ", glut_menu[7]); - glutAddSubMenu("move the torso?", glut_menu[2]); - glutAddSubMenu("move the hip?", glut_menu[3]); - glutAddSubMenu("rotate the scene..", glut_menu[11]); -#ifdef MOVE_LIGHT - glutAddSubMenu("rotate the light source..", glut_menu[12]); -#endif - - glutCreateMenu(menu_select); -#ifdef ANIMATION - glutAddMenuEntry("Start Walk", 1); - glutAddMenuEntry("Stop Walk", 2); -#endif - glutAddMenuEntry("Toggle Wireframe", 3); - glutAddSubMenu("How do I ..", glut_menu[0]); - glutAddMenuEntry("Quit", 4); - glutAttachMenu(GLUT_LEFT_BUTTON); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -int -main(int argc, char **argv) -{ -#ifdef GLUT - /* start of glut windowing and control functions */ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); - glutInitWindowSize(800, 600); - glutCreateWindow("glutmech: Vulcan Gunner"); - myinit(); - glutDisplayFunc(display); - glutReshapeFunc(myReshape); -#ifdef GLUT_KEY - glutKeyboardFunc(keyboard); -#endif -#ifdef GLUT_SPEC - glutSpecialFunc(special); -#endif - glutMenu(); - glutMainLoop(); - /* end of glut windowing and control functions */ -#endif - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/glutmech/glutmech.dsp b/lib/glut-3.7.6/progs/demos/glutmech/glutmech.dsp deleted file mode 100644 index b068151fd1bf529ee8d5e7c6d2c62753d610e069..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/glutmech/glutmech.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glutmech" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glutmech - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glutmech.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glutmech.mak" CFG="glutmech - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glutmech - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glutmech - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glutmech - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "glutmech - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "glutmech - Win32 Release" -# Name "glutmech - Win32 Debug" -# Begin Source File - -SOURCE=.\glutmech.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/ideas/Imakefile b/lib/glut-3.7.6/progs/demos/ideas/Imakefile deleted file mode 100644 index 8d203a5a4137cec004ea7722c2601df1fff77b54..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/Imakefile +++ /dev/null @@ -1,20 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../../Glut.cf" - -TARGETS = ideas - -SRCS = a.c b.c d.c draw_holder.c draw_lamp.c draw_logo.c \ - draw_logo_line.c draw_logo_shadow.c e.c f.c h.c i.c ideas.c m.c n.c \ - o.c p.c r.c s.c t.c w.c - -OBJS = a.o b.o d.o draw_holder.o draw_lamp.o draw_logo.o \ - draw_logo_line.o draw_logo_shadow.o e.o f.o h.o i.o ideas.o m.o n.o \ - o.o p.o r.o s.o t.o w.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(ideas,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/ideas/a.c b/lib/glut-3.7.6/progs/demos/ideas/a.c deleted file mode 100644 index f568c38b77c99355d4bec71805c3889683b74d9b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/a.c +++ /dev/null @@ -1,194 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -static float a_data[][2] = { - {5.618949, 10.261048}, - {5.322348, 9.438848}, - {5.124614, 10.030832}, - {4.860968, 9.488181}, - {4.811534, 9.932169}, - {3.938208, 9.438848}, - {3.658084, 9.685509}, - {2.784758, 8.994862}, - {2.801236, 9.175745}, - {1.960865, 8.172662}, - {1.186406, 7.761562}, - {1.252317, 6.561151}, - {0.576725, 6.610483}, - {0.939238, 5.525180}, - {0.164779, 4.883864}, - {0.840371, 4.818089}, - {0.230690, 3.963001}, - {0.939238, 4.242549}, - {0.609681, 3.255909}, - {1.268795, 3.963001}, - {1.021627, 3.075026}, - {1.861998, 4.045221}, - {1.829042, 3.535457}, - {2.817714, 4.818089}, - {3.163749, 4.998972}, - {3.971164, 6.643371}, - {4.267765, 6.725591}, - {4.663234, 7.630010}, - - {5.404737, 9.734840}, - {4.646756, 9.669065}, - {5.108136, 8.731757}, - {4.679712, 8.600205}, - {4.926879, 7.564234}, - {4.366632, 6.692703}, - {4.663234, 5.344296}, - {3.888774, 4.850976}, - {4.630278, 4.094553}, - {3.954686, 3.963001}, - {4.828012, 3.798561}, - {4.168898, 3.321686}, - {5.157569, 3.864337}, - {4.514933, 3.091470}, - {5.553038, 4.045221}, - {5.305870, 3.634121}, - {5.932029, 4.176773}, - -}; - -void draw_a(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(a_data[0]); - glVertex2fv(a_data[1]); - glVertex2fv(a_data[2]); - glVertex2fv(a_data[3]); - glVertex2fv(a_data[4]); - glVertex2fv(a_data[5]); - glVertex2fv(a_data[6]); - glVertex2fv(a_data[7]); - glVertex2fv(a_data[8]); - glVertex2fv(a_data[9]); - glVertex2fv(a_data[10]); - glVertex2fv(a_data[11]); - glVertex2fv(a_data[12]); - glVertex2fv(a_data[13]); - glVertex2fv(a_data[14]); - glVertex2fv(a_data[15]); - glVertex2fv(a_data[16]); - glVertex2fv(a_data[17]); - glVertex2fv(a_data[18]); - glVertex2fv(a_data[19]); - glVertex2fv(a_data[20]); - glVertex2fv(a_data[21]); - glVertex2fv(a_data[22]); - glVertex2fv(a_data[23]); - glVertex2fv(a_data[24]); - glVertex2fv(a_data[25]); - glVertex2fv(a_data[26]); - glVertex2fv(a_data[27]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(a_data[28]); - glVertex2fv(a_data[29]); - glVertex2fv(a_data[30]); - glVertex2fv(a_data[31]); - glVertex2fv(a_data[32]); - glVertex2fv(a_data[33]); - glVertex2fv(a_data[34]); - glVertex2fv(a_data[35]); - glVertex2fv(a_data[36]); - glVertex2fv(a_data[37]); - glVertex2fv(a_data[38]); - glVertex2fv(a_data[39]); - glVertex2fv(a_data[40]); - glVertex2fv(a_data[41]); - glVertex2fv(a_data[42]); - glVertex2fv(a_data[43]); - glVertex2fv(a_data[44]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(a_data[0]); - glVertex2fv(a_data[2]); - glVertex2fv(a_data[4]); - glVertex2fv(a_data[6]); - glVertex2fv(a_data[8]); - glVertex2fv(a_data[10]); - glVertex2fv(a_data[12]); - glVertex2fv(a_data[14]); - glVertex2fv(a_data[16]); - glVertex2fv(a_data[18]); - glVertex2fv(a_data[20]); - glVertex2fv(a_data[22]); - glVertex2fv(a_data[24]); - glVertex2fv(a_data[26]); - glVertex2fv(a_data[27]); - glVertex2fv(a_data[25]); - glVertex2fv(a_data[23]); - glVertex2fv(a_data[21]); - glVertex2fv(a_data[19]); - glVertex2fv(a_data[17]); - glVertex2fv(a_data[15]); - glVertex2fv(a_data[13]); - glVertex2fv(a_data[11]); - glVertex2fv(a_data[9]); - glVertex2fv(a_data[7]); - glVertex2fv(a_data[5]); - glVertex2fv(a_data[3]); - glVertex2fv(a_data[1]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(a_data[28]); - glVertex2fv(a_data[30]); - glVertex2fv(a_data[32]); - glVertex2fv(a_data[34]); - glVertex2fv(a_data[36]); - glVertex2fv(a_data[38]); - glVertex2fv(a_data[40]); - glVertex2fv(a_data[42]); - glVertex2fv(a_data[44]); - glVertex2fv(a_data[43]); - glVertex2fv(a_data[41]); - glVertex2fv(a_data[39]); - glVertex2fv(a_data[37]); - glVertex2fv(a_data[35]); - glVertex2fv(a_data[33]); - glVertex2fv(a_data[31]); - glVertex2fv(a_data[29]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/b.c b/lib/glut-3.7.6/progs/demos/ideas/b.c deleted file mode 100644 index 1a26c70068c9024cfa3d09d152f091a4a3d4f443..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/b.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float b_data[][2] = { - {1.437827, 15.482255}, - {3.711599, 15.716075}, - {2.658307, 15.315240}, - {3.477534, 15.081420}, - {2.741902, 14.997912}, - {2.006270, 7.983298}, - {0.234065, 3.139875}, - {1.103448, 4.192067}, - {1.538140, 3.139875}, - {1.404389, 3.958246}, - {2.374086, 3.306889}, - {2.792058, 3.807933}, - {3.243469, 3.691023}, - {3.544410, 4.158664}, - {4.497388, 4.776618}, - {3.979101, 4.759916}, - {4.815047, 5.227557}, - {4.413793, 5.979123}, - {5.400209, 6.864301}, - {4.497388, 8.133612}, - {5.667712, 8.734864}, - {4.263323, 9.002088}, - {5.416928, 9.686848}, - {4.012539, 9.219207}, - {4.898642, 10.020877}, - {3.494253, 9.118998}, - {3.745037, 9.620042}, - {2.775340, 8.684760}, - {2.708464, 8.835073}, - {1.805643, 7.382046}, - {1.688610, 7.582463}, - -}; - -void draw_b(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(b_data[0]); - glVertex2fv(b_data[1]); - glVertex2fv(b_data[2]); - glVertex2fv(b_data[3]); - glVertex2fv(b_data[4]); - glVertex2fv(b_data[5]); - glVertex2fv(b_data[6]); - glVertex2fv(b_data[7]); - glVertex2fv(b_data[8]); - glVertex2fv(b_data[9]); - glVertex2fv(b_data[10]); - glVertex2fv(b_data[11]); - glVertex2fv(b_data[12]); - glVertex2fv(b_data[13]); - glVertex2fv(b_data[14]); - glVertex2fv(b_data[15]); - glVertex2fv(b_data[16]); - glVertex2fv(b_data[17]); - glVertex2fv(b_data[18]); - glVertex2fv(b_data[19]); - glVertex2fv(b_data[20]); - glVertex2fv(b_data[21]); - glVertex2fv(b_data[22]); - glVertex2fv(b_data[23]); - glVertex2fv(b_data[24]); - glVertex2fv(b_data[25]); - glVertex2fv(b_data[26]); - glVertex2fv(b_data[27]); - glVertex2fv(b_data[28]); - glVertex2fv(b_data[29]); - glVertex2fv(b_data[30]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(b_data[0]); - glVertex2fv(b_data[2]); - glVertex2fv(b_data[4]); - glVertex2fv(b_data[6]); - glVertex2fv(b_data[8]); - glVertex2fv(b_data[10]); - glVertex2fv(b_data[12]); - glVertex2fv(b_data[14]); - glVertex2fv(b_data[16]); - glVertex2fv(b_data[18]); - glVertex2fv(b_data[20]); - glVertex2fv(b_data[22]); - glVertex2fv(b_data[24]); - glVertex2fv(b_data[26]); - glVertex2fv(b_data[28]); - glVertex2fv(b_data[30]); - glVertex2fv(b_data[29]); - glVertex2fv(b_data[27]); - glVertex2fv(b_data[25]); - glVertex2fv(b_data[23]); - glVertex2fv(b_data[21]); - glVertex2fv(b_data[19]); - glVertex2fv(b_data[17]); - glVertex2fv(b_data[15]); - glVertex2fv(b_data[13]); - glVertex2fv(b_data[11]); - glVertex2fv(b_data[9]); - glVertex2fv(b_data[7]); - glVertex2fv(b_data[5]); - glVertex2fv(b_data[3]); - glVertex2fv(b_data[1]); - glVertex2fv(b_data[0]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/d.c b/lib/glut-3.7.6/progs/demos/ideas/d.c deleted file mode 100644 index 59162835931ad4035ba88482f1d010e557a8cb5c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/d.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float d_data[][2] = { - {4.714579, 9.987679}, - {2.841889, 9.429158}, - {2.825462, 9.166325}, - {1.856263, 8.722793}, - {2.004107, 8.000000}, - {0.969199, 7.605750}, - {1.494866, 6.636550}, - {0.607803, 6.028748}, - {1.527721, 4.960986}, - {0.772074, 4.254620}, - {1.774127, 4.139630}, - {1.445585, 3.186858}, - {2.266940, 3.843942}, - {2.250513, 3.022587}, - {2.776181, 3.843942}, - {3.137577, 3.383984}, - {3.351129, 4.008214}, - {3.909651, 4.451746}, - {4.090349, 4.960986}, - {4.862423, 5.946612}, - {4.763860, 6.652977}, - {5.388090, 7.572895}, - {4.862423, 8.492813}, - {5.618070, 9.921971}, - {4.698152, 10.940452}, - {5.338809, 12.303902}, - {4.238193, 12.960985}, - {4.451746, 14.554415}, - {3.581109, 14.291581}, - {3.613963, 15.342916}, - {2.677618, 15.145790}, - {2.480493, 15.540041}, - {2.036961, 15.211499}, - {1.281314, 15.112936}, - -}; - -void draw_d(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(d_data[0]); - glVertex2fv(d_data[1]); - glVertex2fv(d_data[2]); - glVertex2fv(d_data[3]); - glVertex2fv(d_data[4]); - glVertex2fv(d_data[5]); - glVertex2fv(d_data[6]); - glVertex2fv(d_data[7]); - glVertex2fv(d_data[8]); - glVertex2fv(d_data[9]); - glVertex2fv(d_data[10]); - glVertex2fv(d_data[11]); - glVertex2fv(d_data[12]); - glVertex2fv(d_data[13]); - glVertex2fv(d_data[14]); - glVertex2fv(d_data[15]); - glVertex2fv(d_data[16]); - glVertex2fv(d_data[17]); - glVertex2fv(d_data[18]); - glVertex2fv(d_data[19]); - glVertex2fv(d_data[20]); - glVertex2fv(d_data[21]); - glVertex2fv(d_data[22]); - glVertex2fv(d_data[23]); - glVertex2fv(d_data[24]); - glVertex2fv(d_data[25]); - glVertex2fv(d_data[26]); - glVertex2fv(d_data[27]); - glVertex2fv(d_data[28]); - glVertex2fv(d_data[29]); - glVertex2fv(d_data[30]); - glVertex2fv(d_data[31]); - glVertex2fv(d_data[32]); - glVertex2fv(d_data[33]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(d_data[0]); - glVertex2fv(d_data[2]); - glVertex2fv(d_data[4]); - glVertex2fv(d_data[6]); - glVertex2fv(d_data[8]); - glVertex2fv(d_data[10]); - glVertex2fv(d_data[12]); - glVertex2fv(d_data[14]); - glVertex2fv(d_data[16]); - glVertex2fv(d_data[18]); - glVertex2fv(d_data[20]); - glVertex2fv(d_data[22]); - glVertex2fv(d_data[24]); - glVertex2fv(d_data[26]); - glVertex2fv(d_data[28]); - glVertex2fv(d_data[30]); - glVertex2fv(d_data[32]); - glVertex2fv(d_data[33]); - glVertex2fv(d_data[31]); - glVertex2fv(d_data[29]); - glVertex2fv(d_data[27]); - glVertex2fv(d_data[25]); - glVertex2fv(d_data[23]); - glVertex2fv(d_data[21]); - glVertex2fv(d_data[19]); - glVertex2fv(d_data[17]); - glVertex2fv(d_data[15]); - glVertex2fv(d_data[13]); - glVertex2fv(d_data[11]); - glVertex2fv(d_data[9]); - glVertex2fv(d_data[7]); - glVertex2fv(d_data[5]); - glVertex2fv(d_data[3]); - glVertex2fv(d_data[1]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/draw_holder.c b/lib/glut-3.7.6/progs/demos/ideas/draw_holder.c deleted file mode 100644 index 2ed004328ebafc4ccd043d114f0303780e3ae828..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/draw_holder.c +++ /dev/null @@ -1,1358 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -#include "objects.h" - -float bn[5][3] = { - {-1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {1.0, 0.0, 0.0}, - {0.0, -1.0, 0.0}, - {0.0, 0.0, 1.0}, -}; - -float bp[4][8][3] = { - { - {-14.000000, -14.000000, 0.000000}, - {-14.000000, -14.000000, 4.000000}, - {-14.000000, 14.000000, 0.000000}, - {-14.000000, 14.000000, 4.000000}, - {14.000000, 14.000000, 0.000000}, - {14.000000, 14.000000, 4.000000}, - {14.000000, -14.000000, 0.000000}, - {14.000000, -14.000000, 4.000000}, - }, - { - {-12.000000, -12.000000, 4.000000}, - {-12.000000, -12.000000, 8.000000}, - {-12.000000, 12.000000, 4.000000}, - {-12.000000, 12.000000, 8.000000}, - {12.000000, 12.000000, 4.000000}, - {12.000000, 12.000000, 8.000000}, - {12.000000, -12.000000, 4.000000}, - {12.000000, -12.000000, 8.000000}, - }, - { - {-10.000000, -10.000000, 8.000000}, - {-10.000000, -10.000000, 12.000000}, - {-10.000000, 10.000000, 8.000000}, - {-10.000000, 10.000000, 12.000000}, - {10.000000, 10.000000, 8.000000}, - {10.000000, 10.000000, 12.000000}, - {10.000000, -10.000000, 8.000000}, - {10.000000, -10.000000, 12.000000}, - }, - { - {-8.000000, -8.000000, 12.000000}, - {-8.000000, -8.000000, 8.000000}, - {-8.000000, 8.000000, 12.000000}, - {-8.000000, 8.000000, 8.000000}, - {8.000000, 8.000000, 12.000000}, - {8.000000, 8.000000, 8.000000}, - {8.000000, -8.000000, 12.000000}, - {8.000000, -8.000000, 8.000000}, - }, -}; - -float tp[12][21][3] = { - { - {10.000000, 0.000000, 1.000000}, - {9.510565, -3.090170, 1.000000}, - {8.090170, -5.877852, 1.000000}, - {5.877852, -8.090170, 1.000000}, - {3.090170, -9.510565, 1.000000}, - {0.000000, -10.000000, 1.000000}, - {-3.090170, -9.510565, 1.000000}, - {-5.877852, -8.090170, 1.000000}, - {-8.090170, -5.877852, 1.000000}, - {-9.510565, -3.090170, 1.000000}, - {-10.000000, 0.000000, 1.000000}, - {-9.510565, 3.090170, 1.000000}, - {-8.090170, 5.877852, 1.000000}, - {-5.877852, 8.090170, 1.000000}, - {-3.090170, 9.510565, 1.000000}, - {0.000000, 10.000000, 1.000000}, - {3.090170, 9.510565, 1.000000}, - {5.877852, 8.090170, 1.000000}, - {8.090170, 5.877852, 1.000000}, - {9.510565, 3.090170, 1.000000}, - {10.000000, 0.000000, 1.000000}, - }, - - { - {10.540641, 0.000000, 0.841254}, - {10.024745, -3.257237, 0.841254}, - {8.527557, -6.195633, 0.841254}, - {6.195633, -8.527557, 0.841254}, - {3.257237, -10.024745, 0.841254}, - {0.000000, -10.540641, 0.841254}, - {-3.257237, -10.024745, 0.841254}, - {-6.195633, -8.527557, 0.841254}, - {-8.527557, -6.195633, 0.841254}, - {-10.024745, -3.257237, 0.841254}, - {-10.540641, 0.000000, 0.841254}, - {-10.024745, 3.257237, 0.841254}, - {-8.527557, 6.195633, 0.841254}, - {-6.195633, 8.527557, 0.841254}, - {-3.257237, 10.024745, 0.841254}, - {0.000000, 10.540641, 0.841254}, - {3.257237, 10.024745, 0.841254}, - {6.195633, 8.527557, 0.841254}, - {8.527557, 6.195633, 0.841254}, - {10.024745, 3.257237, 0.841254}, - {10.540641, 0.000000, 0.841254}, - }, - - { - {10.909632, 0.000000, 0.415415}, - {10.375676, -3.371262, 0.415415}, - {8.826077, -6.412521, 0.415415}, - {6.412521, -8.826077, 0.415415}, - {3.371262, -10.375676, 0.415415}, - {0.000000, -10.909632, 0.415415}, - {-3.371262, -10.375676, 0.415415}, - {-6.412521, -8.826077, 0.415415}, - {-8.826077, -6.412521, 0.415415}, - {-10.375676, -3.371262, 0.415415}, - {-10.909632, 0.000000, 0.415415}, - {-10.375676, 3.371262, 0.415415}, - {-8.826077, 6.412521, 0.415415}, - {-6.412521, 8.826077, 0.415415}, - {-3.371262, 10.375676, 0.415415}, - {0.000000, 10.909632, 0.415415}, - {3.371262, 10.375676, 0.415415}, - {6.412521, 8.826077, 0.415415}, - {8.826077, 6.412521, 0.415415}, - {10.375676, 3.371262, 0.415415}, - {10.909632, 0.000000, 0.415415}, - }, - - { - {10.989821, 0.000000, -0.142315}, - {10.451941, -3.396042, -0.142315}, - {8.890952, -6.459655, -0.142315}, - {6.459655, -8.890952, -0.142315}, - {3.396042, -10.451941, -0.142315}, - {0.000000, -10.989821, -0.142315}, - {-3.396042, -10.451941, -0.142315}, - {-6.459655, -8.890952, -0.142315}, - {-8.890952, -6.459655, -0.142315}, - {-10.451941, -3.396042, -0.142315}, - {-10.989821, 0.000000, -0.142315}, - {-10.451941, 3.396042, -0.142315}, - {-8.890952, 6.459655, -0.142315}, - {-6.459655, 8.890952, -0.142315}, - {-3.396042, 10.451941, -0.142315}, - {0.000000, 10.989821, -0.142315}, - {3.396042, 10.451941, -0.142315}, - {6.459655, 8.890952, -0.142315}, - {8.890952, 6.459655, -0.142315}, - {10.451941, 3.396042, -0.142315}, - {10.989821, 0.000000, -0.142315}, - }, - - { - {10.755750, 0.000000, -0.654861}, - {10.229325, -3.323709, -0.654861}, - {8.701584, -6.322071, -0.654861}, - {6.322071, -8.701584, -0.654861}, - {3.323709, -10.229325, -0.654861}, - {0.000000, -10.755750, -0.654861}, - {-3.323709, -10.229325, -0.654861}, - {-6.322071, -8.701584, -0.654861}, - {-8.701584, -6.322071, -0.654861}, - {-10.229325, -3.323709, -0.654861}, - {-10.755750, 0.000000, -0.654861}, - {-10.229325, 3.323709, -0.654861}, - {-8.701584, 6.322071, -0.654861}, - {-6.322071, 8.701584, -0.654861}, - {-3.323709, 10.229325, -0.654861}, - {0.000000, 10.755750, -0.654861}, - {3.323709, 10.229325, -0.654861}, - {6.322071, 8.701584, -0.654861}, - {8.701584, 6.322071, -0.654861}, - {10.229325, 3.323709, -0.654861}, - {10.755750, 0.000000, -0.654861}, - }, - - { - {10.281733, 0.000000, -0.959493}, - {9.778509, -3.177230, -0.959493}, - {8.318096, -6.043451, -0.959493}, - {6.043451, -8.318096, -0.959493}, - {3.177230, -9.778509, -0.959493}, - {0.000000, -10.281733, -0.959493}, - {-3.177230, -9.778509, -0.959493}, - {-6.043451, -8.318096, -0.959493}, - {-8.318096, -6.043451, -0.959493}, - {-9.778509, -3.177230, -0.959493}, - {-10.281733, 0.000000, -0.959493}, - {-9.778509, 3.177230, -0.959493}, - {-8.318096, 6.043451, -0.959493}, - {-6.043451, 8.318096, -0.959493}, - {-3.177230, 9.778509, -0.959493}, - {0.000000, 10.281733, -0.959493}, - {3.177230, 9.778509, -0.959493}, - {6.043451, 8.318096, -0.959493}, - {8.318096, 6.043451, -0.959493}, - {9.778509, 3.177230, -0.959493}, - {10.281733, 0.000000, -0.959493}, - }, - - { - {9.718267, 0.000000, -0.959493}, - {9.242621, -3.003110, -0.959493}, - {7.862244, -5.712255, -0.959493}, - {5.712255, -7.862244, -0.959493}, - {3.003110, -9.242621, -0.959493}, - {0.000000, -9.718267, -0.959493}, - {-3.003110, -9.242621, -0.959493}, - {-5.712255, -7.862244, -0.959493}, - {-7.862244, -5.712255, -0.959493}, - {-9.242621, -3.003110, -0.959493}, - {-9.718267, 0.000000, -0.959493}, - {-9.242621, 3.003110, -0.959493}, - {-7.862244, 5.712255, -0.959493}, - {-5.712255, 7.862244, -0.959493}, - {-3.003110, 9.242621, -0.959493}, - {0.000000, 9.718267, -0.959493}, - {3.003110, 9.242621, -0.959493}, - {5.712255, 7.862244, -0.959493}, - {7.862244, 5.712255, -0.959493}, - {9.242621, 3.003110, -0.959493}, - {9.718267, 0.000000, -0.959493}, - }, - - { - {9.244250, 0.000000, -0.654861}, - {8.791805, -2.856631, -0.654861}, - {7.478756, -5.433634, -0.654861}, - {5.433634, -7.478756, -0.654861}, - {2.856631, -8.791805, -0.654861}, - {0.000000, -9.244250, -0.654861}, - {-2.856631, -8.791805, -0.654861}, - {-5.433634, -7.478756, -0.654861}, - {-7.478756, -5.433634, -0.654861}, - {-8.791805, -2.856631, -0.654861}, - {-9.244250, 0.000000, -0.654861}, - {-8.791805, 2.856631, -0.654861}, - {-7.478756, 5.433634, -0.654861}, - {-5.433634, 7.478756, -0.654861}, - {-2.856631, 8.791805, -0.654861}, - {0.000000, 9.244250, -0.654861}, - {2.856631, 8.791805, -0.654861}, - {5.433634, 7.478756, -0.654861}, - {7.478756, 5.433634, -0.654861}, - {8.791805, 2.856631, -0.654861}, - {9.244250, 0.000000, -0.654861}, - }, - - { - {9.010179, 0.000000, -0.142315}, - {8.569189, -2.784298, -0.142315}, - {7.289388, -5.296050, -0.142315}, - {5.296050, -7.289388, -0.142315}, - {2.784298, -8.569189, -0.142315}, - {0.000000, -9.010179, -0.142315}, - {-2.784298, -8.569189, -0.142315}, - {-5.296050, -7.289388, -0.142315}, - {-7.289388, -5.296050, -0.142315}, - {-8.569189, -2.784298, -0.142315}, - {-9.010179, 0.000000, -0.142315}, - {-8.569189, 2.784298, -0.142315}, - {-7.289388, 5.296050, -0.142315}, - {-5.296050, 7.289388, -0.142315}, - {-2.784298, 8.569189, -0.142315}, - {0.000000, 9.010179, -0.142315}, - {2.784298, 8.569189, -0.142315}, - {5.296050, 7.289388, -0.142315}, - {7.289388, 5.296050, -0.142315}, - {8.569189, 2.784298, -0.142315}, - {9.010179, 0.000000, -0.142315}, - }, - - { - {9.090367, 0.000000, 0.415414}, - {8.645453, -2.809078, 0.415414}, - {7.354262, -5.343184, 0.415414}, - {5.343184, -7.354262, 0.415414}, - {2.809078, -8.645453, 0.415414}, - {0.000000, -9.090367, 0.415414}, - {-2.809078, -8.645453, 0.415414}, - {-5.343184, -7.354262, 0.415414}, - {-7.354262, -5.343184, 0.415414}, - {-8.645453, -2.809078, 0.415414}, - {-9.090367, 0.000000, 0.415414}, - {-8.645453, 2.809078, 0.415414}, - {-7.354262, 5.343184, 0.415414}, - {-5.343184, 7.354262, 0.415414}, - {-2.809078, 8.645453, 0.415414}, - {0.000000, 9.090367, 0.415414}, - {2.809078, 8.645453, 0.415414}, - {5.343184, 7.354262, 0.415414}, - {7.354262, 5.343184, 0.415414}, - {8.645453, 2.809078, 0.415414}, - {9.090367, 0.000000, 0.415414}, - }, - - { - {9.459358, 0.000000, 0.841253}, - {8.996385, -2.923103, 0.841253}, - {7.652781, -5.560071, 0.841253}, - {5.560071, -7.652781, 0.841253}, - {2.923103, -8.996385, 0.841253}, - {0.000000, -9.459358, 0.841253}, - {-2.923103, -8.996385, 0.841253}, - {-5.560071, -7.652781, 0.841253}, - {-7.652781, -5.560071, 0.841253}, - {-8.996385, -2.923103, 0.841253}, - {-9.459358, 0.000000, 0.841253}, - {-8.996385, 2.923103, 0.841253}, - {-7.652781, 5.560071, 0.841253}, - {-5.560071, 7.652781, 0.841253}, - {-2.923103, 8.996385, 0.841253}, - {0.000000, 9.459358, 0.841253}, - {2.923103, 8.996385, 0.841253}, - {5.560071, 7.652781, 0.841253}, - {7.652781, 5.560071, 0.841253}, - {8.996385, 2.923103, 0.841253}, - {9.459358, 0.000000, 0.841253}, - }, - - { - {9.999999, 0.000000, 1.000000}, - {9.510564, -3.090170, 1.000000}, - {8.090169, -5.877852, 1.000000}, - {5.877852, -8.090169, 1.000000}, - {3.090170, -9.510564, 1.000000}, - {0.000000, -9.999999, 1.000000}, - {-3.090170, -9.510564, 1.000000}, - {-5.877852, -8.090169, 1.000000}, - {-8.090169, -5.877852, 1.000000}, - {-9.510564, -3.090170, 1.000000}, - {-9.999999, 0.000000, 1.000000}, - {-9.510564, 3.090170, 1.000000}, - {-8.090169, 5.877852, 1.000000}, - {-5.877852, 8.090169, 1.000000}, - {-3.090170, 9.510564, 1.000000}, - {0.000000, 9.999999, 1.000000}, - {3.090170, 9.510564, 1.000000}, - {5.877852, 8.090169, 1.000000}, - {8.090169, 5.877852, 1.000000}, - {9.510564, 3.090170, 1.000000}, - {9.999999, 0.000000, 1.000000}, - }, - -}; - -float tn[12][21][3] = { - { - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - }, - - { - {0.540641, 0.000000, 0.841254}, - {0.514180, -0.167067, 0.841254}, - {0.437388, -0.317781, 0.841254}, - {0.317781, -0.437388, 0.841254}, - {0.167067, -0.514180, 0.841254}, - {0.000000, -0.540641, 0.841254}, - {-0.167067, -0.514180, 0.841254}, - {-0.317781, -0.437388, 0.841254}, - {-0.437388, -0.317781, 0.841254}, - {-0.514180, -0.167067, 0.841254}, - {-0.540641, 0.000000, 0.841254}, - {-0.514180, 0.167067, 0.841254}, - {-0.437388, 0.317781, 0.841254}, - {-0.317781, 0.437388, 0.841254}, - {-0.167067, 0.514180, 0.841254}, - {0.000000, 0.540641, 0.841254}, - {0.167067, 0.514180, 0.841254}, - {0.317781, 0.437388, 0.841254}, - {0.437388, 0.317781, 0.841254}, - {0.514180, 0.167067, 0.841254}, - {0.540641, 0.000000, 0.841254}, - }, - - { - {0.909632, 0.000000, 0.415415}, - {0.865111, -0.281092, 0.415415}, - {0.735908, -0.534668, 0.415415}, - {0.534668, -0.735908, 0.415415}, - {0.281092, -0.865111, 0.415415}, - {0.000000, -0.909632, 0.415415}, - {-0.281092, -0.865111, 0.415415}, - {-0.534668, -0.735908, 0.415415}, - {-0.735908, -0.534668, 0.415415}, - {-0.865111, -0.281092, 0.415415}, - {-0.909632, 0.000000, 0.415415}, - {-0.865111, 0.281092, 0.415415}, - {-0.735908, 0.534668, 0.415415}, - {-0.534668, 0.735908, 0.415415}, - {-0.281092, 0.865111, 0.415415}, - {0.000000, 0.909632, 0.415415}, - {0.281092, 0.865111, 0.415415}, - {0.534668, 0.735908, 0.415415}, - {0.735908, 0.534668, 0.415415}, - {0.865111, 0.281092, 0.415415}, - {0.909632, 0.000000, 0.415415}, - }, - - { - {0.989821, 0.000000, -0.142315}, - {0.941376, -0.305872, -0.142315}, - {0.800782, -0.581802, -0.142315}, - {0.581802, -0.800782, -0.142315}, - {0.305872, -0.941376, -0.142315}, - {0.000000, -0.989821, -0.142315}, - {-0.305872, -0.941376, -0.142315}, - {-0.581802, -0.800782, -0.142315}, - {-0.800782, -0.581802, -0.142315}, - {-0.941376, -0.305872, -0.142315}, - {-0.989821, 0.000000, -0.142315}, - {-0.941376, 0.305872, -0.142315}, - {-0.800782, 0.581802, -0.142315}, - {-0.581802, 0.800782, -0.142315}, - {-0.305872, 0.941376, -0.142315}, - {0.000000, 0.989821, -0.142315}, - {0.305872, 0.941376, -0.142315}, - {0.581802, 0.800782, -0.142315}, - {0.800782, 0.581802, -0.142315}, - {0.941376, 0.305872, -0.142315}, - {0.989821, 0.000000, -0.142315}, - }, - - { - {0.755750, 0.000000, -0.654861}, - {0.718761, -0.233539, -0.654861}, - {0.611414, -0.444218, -0.654861}, - {0.444218, -0.611414, -0.654861}, - {0.233539, -0.718761, -0.654861}, - {0.000000, -0.755750, -0.654861}, - {-0.233539, -0.718761, -0.654861}, - {-0.444218, -0.611414, -0.654861}, - {-0.611414, -0.444218, -0.654861}, - {-0.718761, -0.233539, -0.654861}, - {-0.755750, 0.000000, -0.654861}, - {-0.718761, 0.233539, -0.654861}, - {-0.611414, 0.444218, -0.654861}, - {-0.444218, 0.611414, -0.654861}, - {-0.233539, 0.718761, -0.654861}, - {0.000000, 0.755750, -0.654861}, - {0.233539, 0.718761, -0.654861}, - {0.444218, 0.611414, -0.654861}, - {0.611414, 0.444218, -0.654861}, - {0.718761, 0.233539, -0.654861}, - {0.755750, 0.000000, -0.654861}, - }, - - { - {0.281733, 0.000000, -0.959493}, - {0.267944, -0.087060, -0.959493}, - {0.227927, -0.165598, -0.959493}, - {0.165598, -0.227927, -0.959493}, - {0.087060, -0.267944, -0.959493}, - {0.000000, -0.281733, -0.959493}, - {-0.087060, -0.267944, -0.959493}, - {-0.165598, -0.227927, -0.959493}, - {-0.227927, -0.165598, -0.959493}, - {-0.267944, -0.087060, -0.959493}, - {-0.281733, 0.000000, -0.959493}, - {-0.267944, 0.087060, -0.959493}, - {-0.227927, 0.165598, -0.959493}, - {-0.165598, 0.227927, -0.959493}, - {-0.087060, 0.267944, -0.959493}, - {0.000000, 0.281733, -0.959493}, - {0.087060, 0.267944, -0.959493}, - {0.165598, 0.227927, -0.959493}, - {0.227927, 0.165598, -0.959493}, - {0.267944, 0.087060, -0.959493}, - {0.281733, 0.000000, -0.959493}, - }, - - { - {-0.281732, 0.000000, -0.959493}, - {-0.267943, 0.087060, -0.959493}, - {-0.227926, 0.165598, -0.959493}, - {-0.165598, 0.227926, -0.959493}, - {-0.087060, 0.267943, -0.959493}, - {0.000000, 0.281732, -0.959493}, - {0.087060, 0.267943, -0.959493}, - {0.165598, 0.227926, -0.959493}, - {0.227926, 0.165598, -0.959493}, - {0.267943, 0.087060, -0.959493}, - {0.281732, 0.000000, -0.959493}, - {0.267943, -0.087060, -0.959493}, - {0.227926, -0.165598, -0.959493}, - {0.165598, -0.227926, -0.959493}, - {0.087060, -0.267943, -0.959493}, - {0.000000, -0.281732, -0.959493}, - {-0.087060, -0.267943, -0.959493}, - {-0.165598, -0.227926, -0.959493}, - {-0.227926, -0.165598, -0.959493}, - {-0.267943, -0.087060, -0.959493}, - {-0.281732, 0.000000, -0.959493}, - }, - - { - {-0.755749, 0.000000, -0.654861}, - {-0.718760, 0.233539, -0.654861}, - {-0.611414, 0.444218, -0.654861}, - {-0.444218, 0.611414, -0.654861}, - {-0.233539, 0.718760, -0.654861}, - {0.000000, 0.755749, -0.654861}, - {0.233539, 0.718760, -0.654861}, - {0.444218, 0.611414, -0.654861}, - {0.611414, 0.444218, -0.654861}, - {0.718760, 0.233539, -0.654861}, - {0.755749, 0.000000, -0.654861}, - {0.718760, -0.233539, -0.654861}, - {0.611414, -0.444218, -0.654861}, - {0.444218, -0.611414, -0.654861}, - {0.233539, -0.718760, -0.654861}, - {0.000000, -0.755749, -0.654861}, - {-0.233539, -0.718760, -0.654861}, - {-0.444218, -0.611414, -0.654861}, - {-0.611414, -0.444218, -0.654861}, - {-0.718760, -0.233539, -0.654861}, - {-0.755749, 0.000000, -0.654861}, - }, - - { - {-0.989821, 0.000000, -0.142315}, - {-0.941376, 0.305872, -0.142315}, - {-0.800782, 0.581802, -0.142315}, - {-0.581802, 0.800782, -0.142315}, - {-0.305872, 0.941376, -0.142315}, - {0.000000, 0.989821, -0.142315}, - {0.305872, 0.941376, -0.142315}, - {0.581802, 0.800782, -0.142315}, - {0.800782, 0.581802, -0.142315}, - {0.941376, 0.305872, -0.142315}, - {0.989821, 0.000000, -0.142315}, - {0.941376, -0.305872, -0.142315}, - {0.800782, -0.581802, -0.142315}, - {0.581802, -0.800782, -0.142315}, - {0.305872, -0.941376, -0.142315}, - {0.000000, -0.989821, -0.142315}, - {-0.305872, -0.941376, -0.142315}, - {-0.581802, -0.800782, -0.142315}, - {-0.800782, -0.581802, -0.142315}, - {-0.941376, -0.305872, -0.142315}, - {-0.989821, 0.000000, -0.142315}, - }, - - { - {-0.909632, 0.000000, 0.415414}, - {-0.865112, 0.281092, 0.415414}, - {-0.735908, 0.534668, 0.415414}, - {-0.534668, 0.735908, 0.415414}, - {-0.281092, 0.865112, 0.415414}, - {0.000000, 0.909632, 0.415414}, - {0.281092, 0.865112, 0.415414}, - {0.534668, 0.735908, 0.415414}, - {0.735908, 0.534668, 0.415414}, - {0.865112, 0.281092, 0.415414}, - {0.909632, 0.000000, 0.415414}, - {0.865112, -0.281092, 0.415414}, - {0.735908, -0.534668, 0.415414}, - {0.534668, -0.735908, 0.415414}, - {0.281092, -0.865112, 0.415414}, - {0.000000, -0.909632, 0.415414}, - {-0.281092, -0.865112, 0.415414}, - {-0.534668, -0.735908, 0.415414}, - {-0.735908, -0.534668, 0.415414}, - {-0.865112, -0.281092, 0.415414}, - {-0.909632, 0.000000, 0.415414}, - }, - - { - {-0.540642, 0.000000, 0.841253}, - {-0.514181, 0.167067, 0.841253}, - {-0.437388, 0.317781, 0.841253}, - {-0.317781, 0.437388, 0.841253}, - {-0.167067, 0.514181, 0.841253}, - {0.000000, 0.540642, 0.841253}, - {0.167067, 0.514181, 0.841253}, - {0.317781, 0.437388, 0.841253}, - {0.437388, 0.317781, 0.841253}, - {0.514181, 0.167067, 0.841253}, - {0.540642, 0.000000, 0.841253}, - {0.514181, -0.167067, 0.841253}, - {0.437388, -0.317781, 0.841253}, - {0.317781, -0.437388, 0.841253}, - {0.167067, -0.514181, 0.841253}, - {0.000000, -0.540642, 0.841253}, - {-0.167067, -0.514181, 0.841253}, - {-0.317781, -0.437388, 0.841253}, - {-0.437388, -0.317781, 0.841253}, - {-0.514181, -0.167067, 0.841253}, - {-0.540642, 0.000000, 0.841253}, - }, - - { - {-0.000001, 0.000000, 1.000000}, - {-0.000001, 0.000000, 1.000000}, - {-0.000001, 0.000001, 1.000000}, - {-0.000001, 0.000001, 1.000000}, - {0.000000, 0.000001, 1.000000}, - {0.000000, 0.000001, 1.000000}, - {0.000000, 0.000001, 1.000000}, - {0.000001, 0.000001, 1.000000}, - {0.000001, 0.000001, 1.000000}, - {0.000001, 0.000000, 1.000000}, - {0.000001, 0.000000, 1.000000}, - {0.000001, 0.000000, 1.000000}, - {0.000001, -0.000001, 1.000000}, - {0.000001, -0.000001, 1.000000}, - {0.000000, -0.000001, 1.000000}, - {0.000000, -0.000001, 1.000000}, - {0.000000, -0.000001, 1.000000}, - {-0.000001, -0.000001, 1.000000}, - {-0.000001, -0.000001, 1.000000}, - {-0.000001, 0.000000, 1.000000}, - {-0.000001, 0.000000, 1.000000}, - }, - -}; - -void draw_base(void) { - - glCallList( MAT_HOLDER_BASE); - - glBegin(GL_POLYGON); - glNormal3fv(bn[0]); - glVertex3fv(bp[0][0]); - glVertex3fv(bp[0][1]); - glVertex3fv(bp[0][3]); - glVertex3fv(bp[0][2]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[1]); - glVertex3fv(bp[0][2]); - glVertex3fv(bp[0][3]); - glVertex3fv(bp[0][5]); - glVertex3fv(bp[0][4]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[2]); - glVertex3fv(bp[0][4]); - glVertex3fv(bp[0][5]); - glVertex3fv(bp[0][7]); - glVertex3fv(bp[0][6]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[3]); - glVertex3fv(bp[0][6]); - glVertex3fv(bp[0][7]); - glVertex3fv(bp[0][1]); - glVertex3fv(bp[0][0]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(bn[4]); - glVertex3fv(bp[0][1]); - glVertex3fv(bp[1][0]); - glVertex3fv(bp[0][3]); - glVertex3fv(bp[1][2]); - glVertex3fv(bp[0][5]); - glVertex3fv(bp[1][4]); - glVertex3fv(bp[0][7]); - glVertex3fv(bp[1][6]); - glVertex3fv(bp[0][1]); - glVertex3fv(bp[1][0]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[0]); - glVertex3fv(bp[1][0]); - glVertex3fv(bp[1][1]); - glVertex3fv(bp[1][3]); - glVertex3fv(bp[1][2]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[1]); - glVertex3fv(bp[1][2]); - glVertex3fv(bp[1][3]); - glVertex3fv(bp[1][5]); - glVertex3fv(bp[1][4]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[2]); - glVertex3fv(bp[1][4]); - glVertex3fv(bp[1][5]); - glVertex3fv(bp[1][7]); - glVertex3fv(bp[1][6]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[3]); - glVertex3fv(bp[1][6]); - glVertex3fv(bp[1][7]); - glVertex3fv(bp[1][1]); - glVertex3fv(bp[1][0]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(bn[4]); - glVertex3fv(bp[1][1]); - glVertex3fv(bp[2][0]); - glVertex3fv(bp[1][3]); - glVertex3fv(bp[2][2]); - glVertex3fv(bp[1][5]); - glVertex3fv(bp[2][4]); - glVertex3fv(bp[1][7]); - glVertex3fv(bp[2][6]); - glVertex3fv(bp[1][1]); - glVertex3fv(bp[2][0]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[0]); - glVertex3fv(bp[2][0]); - glVertex3fv(bp[2][1]); - glVertex3fv(bp[2][3]); - glVertex3fv(bp[2][2]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[1]); - glVertex3fv(bp[2][2]); - glVertex3fv(bp[2][3]); - glVertex3fv(bp[2][5]); - glVertex3fv(bp[2][4]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[2]); - glVertex3fv(bp[2][4]); - glVertex3fv(bp[2][5]); - glVertex3fv(bp[2][7]); - glVertex3fv(bp[2][6]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[3]); - glVertex3fv(bp[2][6]); - glVertex3fv(bp[2][7]); - glVertex3fv(bp[2][1]); - glVertex3fv(bp[2][0]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(bn[4]); - glVertex3fv(bp[2][1]); - glVertex3fv(bp[3][0]); - glVertex3fv(bp[2][3]); - glVertex3fv(bp[3][2]); - glVertex3fv(bp[2][5]); - glVertex3fv(bp[3][4]); - glVertex3fv(bp[2][7]); - glVertex3fv(bp[3][6]); - glVertex3fv(bp[2][1]); - glVertex3fv(bp[3][0]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[2]); - glVertex3fv(bp[3][0]); - glVertex3fv(bp[3][1]); - glVertex3fv(bp[3][3]); - glVertex3fv(bp[3][2]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[3]); - glVertex3fv(bp[3][2]); - glVertex3fv(bp[3][3]); - glVertex3fv(bp[3][5]); - glVertex3fv(bp[3][4]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[0]); - glVertex3fv(bp[3][4]); - glVertex3fv(bp[3][5]); - glVertex3fv(bp[3][7]); - glVertex3fv(bp[3][6]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[1]); - glVertex3fv(bp[3][6]); - glVertex3fv(bp[3][7]); - glVertex3fv(bp[3][1]); - glVertex3fv(bp[3][0]); - glEnd(); - - glBegin(GL_POLYGON); - glNormal3fv(bn[4]); - glVertex3fv(bp[3][1]); - glVertex3fv(bp[3][3]); - glVertex3fv(bp[3][5]); - glVertex3fv(bp[3][7]); - glEnd(); -} - -void draw_torus(void) { - - glCallList( MAT_HOLDER_RINGS); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[0][0]); glVertex3fv(tp[0][0]); - glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]); - glNormal3fv(tn[0][1]); glVertex3fv(tp[0][1]); - glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]); - glNormal3fv(tn[0][2]); glVertex3fv(tp[0][2]); - glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]); - glNormal3fv(tn[0][3]); glVertex3fv(tp[0][3]); - glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]); - glNormal3fv(tn[0][4]); glVertex3fv(tp[0][4]); - glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]); - glNormal3fv(tn[0][5]); glVertex3fv(tp[0][5]); - glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]); - glNormal3fv(tn[0][6]); glVertex3fv(tp[0][6]); - glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]); - glNormal3fv(tn[0][7]); glVertex3fv(tp[0][7]); - glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]); - glNormal3fv(tn[0][8]); glVertex3fv(tp[0][8]); - glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]); - glNormal3fv(tn[0][9]); glVertex3fv(tp[0][9]); - glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]); - glNormal3fv(tn[0][10]); glVertex3fv(tp[0][10]); - glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]); - glNormal3fv(tn[0][11]); glVertex3fv(tp[0][11]); - glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]); - glNormal3fv(tn[0][12]); glVertex3fv(tp[0][12]); - glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]); - glNormal3fv(tn[0][13]); glVertex3fv(tp[0][13]); - glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]); - glNormal3fv(tn[0][14]); glVertex3fv(tp[0][14]); - glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]); - glNormal3fv(tn[0][15]); glVertex3fv(tp[0][15]); - glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]); - glNormal3fv(tn[0][16]); glVertex3fv(tp[0][16]); - glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]); - glNormal3fv(tn[0][17]); glVertex3fv(tp[0][17]); - glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]); - glNormal3fv(tn[0][18]); glVertex3fv(tp[0][18]); - glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]); - glNormal3fv(tn[0][19]); glVertex3fv(tp[0][19]); - glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]); - glNormal3fv(tn[0][20]); glVertex3fv(tp[0][20]); - glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[1][0]); glVertex3fv(tp[1][0]); - glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]); - glNormal3fv(tn[1][1]); glVertex3fv(tp[1][1]); - glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]); - glNormal3fv(tn[1][2]); glVertex3fv(tp[1][2]); - glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]); - glNormal3fv(tn[1][3]); glVertex3fv(tp[1][3]); - glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]); - glNormal3fv(tn[1][4]); glVertex3fv(tp[1][4]); - glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]); - glNormal3fv(tn[1][5]); glVertex3fv(tp[1][5]); - glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]); - glNormal3fv(tn[1][6]); glVertex3fv(tp[1][6]); - glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]); - glNormal3fv(tn[1][7]); glVertex3fv(tp[1][7]); - glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]); - glNormal3fv(tn[1][8]); glVertex3fv(tp[1][8]); - glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]); - glNormal3fv(tn[1][9]); glVertex3fv(tp[1][9]); - glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]); - glNormal3fv(tn[1][10]); glVertex3fv(tp[1][10]); - glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]); - glNormal3fv(tn[1][11]); glVertex3fv(tp[1][11]); - glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]); - glNormal3fv(tn[1][12]); glVertex3fv(tp[1][12]); - glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]); - glNormal3fv(tn[1][13]); glVertex3fv(tp[1][13]); - glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]); - glNormal3fv(tn[1][14]); glVertex3fv(tp[1][14]); - glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]); - glNormal3fv(tn[1][15]); glVertex3fv(tp[1][15]); - glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]); - glNormal3fv(tn[1][16]); glVertex3fv(tp[1][16]); - glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]); - glNormal3fv(tn[1][17]); glVertex3fv(tp[1][17]); - glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]); - glNormal3fv(tn[1][18]); glVertex3fv(tp[1][18]); - glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]); - glNormal3fv(tn[1][19]); glVertex3fv(tp[1][19]); - glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]); - glNormal3fv(tn[1][20]); glVertex3fv(tp[1][20]); - glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[2][0]); glVertex3fv(tp[2][0]); - glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]); - glNormal3fv(tn[2][1]); glVertex3fv(tp[2][1]); - glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]); - glNormal3fv(tn[2][2]); glVertex3fv(tp[2][2]); - glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]); - glNormal3fv(tn[2][3]); glVertex3fv(tp[2][3]); - glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]); - glNormal3fv(tn[2][4]); glVertex3fv(tp[2][4]); - glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]); - glNormal3fv(tn[2][5]); glVertex3fv(tp[2][5]); - glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]); - glNormal3fv(tn[2][6]); glVertex3fv(tp[2][6]); - glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]); - glNormal3fv(tn[2][7]); glVertex3fv(tp[2][7]); - glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]); - glNormal3fv(tn[2][8]); glVertex3fv(tp[2][8]); - glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]); - glNormal3fv(tn[2][9]); glVertex3fv(tp[2][9]); - glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]); - glNormal3fv(tn[2][10]); glVertex3fv(tp[2][10]); - glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]); - glNormal3fv(tn[2][11]); glVertex3fv(tp[2][11]); - glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]); - glNormal3fv(tn[2][12]); glVertex3fv(tp[2][12]); - glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]); - glNormal3fv(tn[2][13]); glVertex3fv(tp[2][13]); - glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]); - glNormal3fv(tn[2][14]); glVertex3fv(tp[2][14]); - glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]); - glNormal3fv(tn[2][15]); glVertex3fv(tp[2][15]); - glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]); - glNormal3fv(tn[2][16]); glVertex3fv(tp[2][16]); - glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]); - glNormal3fv(tn[2][17]); glVertex3fv(tp[2][17]); - glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]); - glNormal3fv(tn[2][18]); glVertex3fv(tp[2][18]); - glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]); - glNormal3fv(tn[2][19]); glVertex3fv(tp[2][19]); - glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]); - glNormal3fv(tn[2][20]); glVertex3fv(tp[2][20]); - glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[3][0]); glVertex3fv(tp[3][0]); - glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]); - glNormal3fv(tn[3][1]); glVertex3fv(tp[3][1]); - glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]); - glNormal3fv(tn[3][2]); glVertex3fv(tp[3][2]); - glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]); - glNormal3fv(tn[3][3]); glVertex3fv(tp[3][3]); - glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]); - glNormal3fv(tn[3][4]); glVertex3fv(tp[3][4]); - glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]); - glNormal3fv(tn[3][5]); glVertex3fv(tp[3][5]); - glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]); - glNormal3fv(tn[3][6]); glVertex3fv(tp[3][6]); - glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]); - glNormal3fv(tn[3][7]); glVertex3fv(tp[3][7]); - glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]); - glNormal3fv(tn[3][8]); glVertex3fv(tp[3][8]); - glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]); - glNormal3fv(tn[3][9]); glVertex3fv(tp[3][9]); - glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]); - glNormal3fv(tn[3][10]); glVertex3fv(tp[3][10]); - glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]); - glNormal3fv(tn[3][11]); glVertex3fv(tp[3][11]); - glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]); - glNormal3fv(tn[3][12]); glVertex3fv(tp[3][12]); - glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]); - glNormal3fv(tn[3][13]); glVertex3fv(tp[3][13]); - glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]); - glNormal3fv(tn[3][14]); glVertex3fv(tp[3][14]); - glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]); - glNormal3fv(tn[3][15]); glVertex3fv(tp[3][15]); - glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]); - glNormal3fv(tn[3][16]); glVertex3fv(tp[3][16]); - glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]); - glNormal3fv(tn[3][17]); glVertex3fv(tp[3][17]); - glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]); - glNormal3fv(tn[3][18]); glVertex3fv(tp[3][18]); - glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]); - glNormal3fv(tn[3][19]); glVertex3fv(tp[3][19]); - glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]); - glNormal3fv(tn[3][20]); glVertex3fv(tp[3][20]); - glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[4][0]); glVertex3fv(tp[4][0]); - glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]); - glNormal3fv(tn[4][1]); glVertex3fv(tp[4][1]); - glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]); - glNormal3fv(tn[4][2]); glVertex3fv(tp[4][2]); - glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]); - glNormal3fv(tn[4][3]); glVertex3fv(tp[4][3]); - glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]); - glNormal3fv(tn[4][4]); glVertex3fv(tp[4][4]); - glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]); - glNormal3fv(tn[4][5]); glVertex3fv(tp[4][5]); - glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]); - glNormal3fv(tn[4][6]); glVertex3fv(tp[4][6]); - glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]); - glNormal3fv(tn[4][7]); glVertex3fv(tp[4][7]); - glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]); - glNormal3fv(tn[4][8]); glVertex3fv(tp[4][8]); - glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]); - glNormal3fv(tn[4][9]); glVertex3fv(tp[4][9]); - glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]); - glNormal3fv(tn[4][10]); glVertex3fv(tp[4][10]); - glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]); - glNormal3fv(tn[4][11]); glVertex3fv(tp[4][11]); - glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]); - glNormal3fv(tn[4][12]); glVertex3fv(tp[4][12]); - glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]); - glNormal3fv(tn[4][13]); glVertex3fv(tp[4][13]); - glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]); - glNormal3fv(tn[4][14]); glVertex3fv(tp[4][14]); - glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]); - glNormal3fv(tn[4][15]); glVertex3fv(tp[4][15]); - glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]); - glNormal3fv(tn[4][16]); glVertex3fv(tp[4][16]); - glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]); - glNormal3fv(tn[4][17]); glVertex3fv(tp[4][17]); - glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]); - glNormal3fv(tn[4][18]); glVertex3fv(tp[4][18]); - glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]); - glNormal3fv(tn[4][19]); glVertex3fv(tp[4][19]); - glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]); - glNormal3fv(tn[4][20]); glVertex3fv(tp[4][20]); - glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[5][0]); glVertex3fv(tp[5][0]); - glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]); - glNormal3fv(tn[5][1]); glVertex3fv(tp[5][1]); - glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]); - glNormal3fv(tn[5][2]); glVertex3fv(tp[5][2]); - glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]); - glNormal3fv(tn[5][3]); glVertex3fv(tp[5][3]); - glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]); - glNormal3fv(tn[5][4]); glVertex3fv(tp[5][4]); - glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]); - glNormal3fv(tn[5][5]); glVertex3fv(tp[5][5]); - glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]); - glNormal3fv(tn[5][6]); glVertex3fv(tp[5][6]); - glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]); - glNormal3fv(tn[5][7]); glVertex3fv(tp[5][7]); - glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]); - glNormal3fv(tn[5][8]); glVertex3fv(tp[5][8]); - glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]); - glNormal3fv(tn[5][9]); glVertex3fv(tp[5][9]); - glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]); - glNormal3fv(tn[5][10]); glVertex3fv(tp[5][10]); - glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]); - glNormal3fv(tn[5][11]); glVertex3fv(tp[5][11]); - glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]); - glNormal3fv(tn[5][12]); glVertex3fv(tp[5][12]); - glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]); - glNormal3fv(tn[5][13]); glVertex3fv(tp[5][13]); - glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]); - glNormal3fv(tn[5][14]); glVertex3fv(tp[5][14]); - glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]); - glNormal3fv(tn[5][15]); glVertex3fv(tp[5][15]); - glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]); - glNormal3fv(tn[5][16]); glVertex3fv(tp[5][16]); - glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]); - glNormal3fv(tn[5][17]); glVertex3fv(tp[5][17]); - glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]); - glNormal3fv(tn[5][18]); glVertex3fv(tp[5][18]); - glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]); - glNormal3fv(tn[5][19]); glVertex3fv(tp[5][19]); - glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]); - glNormal3fv(tn[5][20]); glVertex3fv(tp[5][20]); - glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[6][0]); glVertex3fv(tp[6][0]); - glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]); - glNormal3fv(tn[6][1]); glVertex3fv(tp[6][1]); - glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]); - glNormal3fv(tn[6][2]); glVertex3fv(tp[6][2]); - glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]); - glNormal3fv(tn[6][3]); glVertex3fv(tp[6][3]); - glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]); - glNormal3fv(tn[6][4]); glVertex3fv(tp[6][4]); - glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]); - glNormal3fv(tn[6][5]); glVertex3fv(tp[6][5]); - glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]); - glNormal3fv(tn[6][6]); glVertex3fv(tp[6][6]); - glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]); - glNormal3fv(tn[6][7]); glVertex3fv(tp[6][7]); - glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]); - glNormal3fv(tn[6][8]); glVertex3fv(tp[6][8]); - glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]); - glNormal3fv(tn[6][9]); glVertex3fv(tp[6][9]); - glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]); - glNormal3fv(tn[6][10]); glVertex3fv(tp[6][10]); - glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]); - glNormal3fv(tn[6][11]); glVertex3fv(tp[6][11]); - glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]); - glNormal3fv(tn[6][12]); glVertex3fv(tp[6][12]); - glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]); - glNormal3fv(tn[6][13]); glVertex3fv(tp[6][13]); - glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]); - glNormal3fv(tn[6][14]); glVertex3fv(tp[6][14]); - glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]); - glNormal3fv(tn[6][15]); glVertex3fv(tp[6][15]); - glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]); - glNormal3fv(tn[6][16]); glVertex3fv(tp[6][16]); - glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]); - glNormal3fv(tn[6][17]); glVertex3fv(tp[6][17]); - glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]); - glNormal3fv(tn[6][18]); glVertex3fv(tp[6][18]); - glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]); - glNormal3fv(tn[6][19]); glVertex3fv(tp[6][19]); - glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]); - glNormal3fv(tn[6][20]); glVertex3fv(tp[6][20]); - glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[7][0]); glVertex3fv(tp[7][0]); - glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]); - glNormal3fv(tn[7][1]); glVertex3fv(tp[7][1]); - glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]); - glNormal3fv(tn[7][2]); glVertex3fv(tp[7][2]); - glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]); - glNormal3fv(tn[7][3]); glVertex3fv(tp[7][3]); - glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]); - glNormal3fv(tn[7][4]); glVertex3fv(tp[7][4]); - glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]); - glNormal3fv(tn[7][5]); glVertex3fv(tp[7][5]); - glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]); - glNormal3fv(tn[7][6]); glVertex3fv(tp[7][6]); - glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]); - glNormal3fv(tn[7][7]); glVertex3fv(tp[7][7]); - glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]); - glNormal3fv(tn[7][8]); glVertex3fv(tp[7][8]); - glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]); - glNormal3fv(tn[7][9]); glVertex3fv(tp[7][9]); - glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]); - glNormal3fv(tn[7][10]); glVertex3fv(tp[7][10]); - glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]); - glNormal3fv(tn[7][11]); glVertex3fv(tp[7][11]); - glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]); - glNormal3fv(tn[7][12]); glVertex3fv(tp[7][12]); - glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]); - glNormal3fv(tn[7][13]); glVertex3fv(tp[7][13]); - glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]); - glNormal3fv(tn[7][14]); glVertex3fv(tp[7][14]); - glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]); - glNormal3fv(tn[7][15]); glVertex3fv(tp[7][15]); - glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]); - glNormal3fv(tn[7][16]); glVertex3fv(tp[7][16]); - glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]); - glNormal3fv(tn[7][17]); glVertex3fv(tp[7][17]); - glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]); - glNormal3fv(tn[7][18]); glVertex3fv(tp[7][18]); - glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]); - glNormal3fv(tn[7][19]); glVertex3fv(tp[7][19]); - glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]); - glNormal3fv(tn[7][20]); glVertex3fv(tp[7][20]); - glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[8][0]); glVertex3fv(tp[8][0]); - glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]); - glNormal3fv(tn[8][1]); glVertex3fv(tp[8][1]); - glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]); - glNormal3fv(tn[8][2]); glVertex3fv(tp[8][2]); - glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]); - glNormal3fv(tn[8][3]); glVertex3fv(tp[8][3]); - glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]); - glNormal3fv(tn[8][4]); glVertex3fv(tp[8][4]); - glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]); - glNormal3fv(tn[8][5]); glVertex3fv(tp[8][5]); - glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]); - glNormal3fv(tn[8][6]); glVertex3fv(tp[8][6]); - glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]); - glNormal3fv(tn[8][7]); glVertex3fv(tp[8][7]); - glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]); - glNormal3fv(tn[8][8]); glVertex3fv(tp[8][8]); - glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]); - glNormal3fv(tn[8][9]); glVertex3fv(tp[8][9]); - glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]); - glNormal3fv(tn[8][10]); glVertex3fv(tp[8][10]); - glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]); - glNormal3fv(tn[8][11]); glVertex3fv(tp[8][11]); - glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]); - glNormal3fv(tn[8][12]); glVertex3fv(tp[8][12]); - glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]); - glNormal3fv(tn[8][13]); glVertex3fv(tp[8][13]); - glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]); - glNormal3fv(tn[8][14]); glVertex3fv(tp[8][14]); - glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]); - glNormal3fv(tn[8][15]); glVertex3fv(tp[8][15]); - glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]); - glNormal3fv(tn[8][16]); glVertex3fv(tp[8][16]); - glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]); - glNormal3fv(tn[8][17]); glVertex3fv(tp[8][17]); - glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]); - glNormal3fv(tn[8][18]); glVertex3fv(tp[8][18]); - glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]); - glNormal3fv(tn[8][19]); glVertex3fv(tp[8][19]); - glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]); - glNormal3fv(tn[8][20]); glVertex3fv(tp[8][20]); - glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[9][0]); glVertex3fv(tp[9][0]); - glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]); - glNormal3fv(tn[9][1]); glVertex3fv(tp[9][1]); - glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]); - glNormal3fv(tn[9][2]); glVertex3fv(tp[9][2]); - glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]); - glNormal3fv(tn[9][3]); glVertex3fv(tp[9][3]); - glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]); - glNormal3fv(tn[9][4]); glVertex3fv(tp[9][4]); - glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]); - glNormal3fv(tn[9][5]); glVertex3fv(tp[9][5]); - glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]); - glNormal3fv(tn[9][6]); glVertex3fv(tp[9][6]); - glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]); - glNormal3fv(tn[9][7]); glVertex3fv(tp[9][7]); - glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]); - glNormal3fv(tn[9][8]); glVertex3fv(tp[9][8]); - glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]); - glNormal3fv(tn[9][9]); glVertex3fv(tp[9][9]); - glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]); - glNormal3fv(tn[9][10]); glVertex3fv(tp[9][10]); - glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]); - glNormal3fv(tn[9][11]); glVertex3fv(tp[9][11]); - glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]); - glNormal3fv(tn[9][12]); glVertex3fv(tp[9][12]); - glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]); - glNormal3fv(tn[9][13]); glVertex3fv(tp[9][13]); - glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]); - glNormal3fv(tn[9][14]); glVertex3fv(tp[9][14]); - glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]); - glNormal3fv(tn[9][15]); glVertex3fv(tp[9][15]); - glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]); - glNormal3fv(tn[9][16]); glVertex3fv(tp[9][16]); - glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]); - glNormal3fv(tn[9][17]); glVertex3fv(tp[9][17]); - glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]); - glNormal3fv(tn[9][18]); glVertex3fv(tp[9][18]); - glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]); - glNormal3fv(tn[9][19]); glVertex3fv(tp[9][19]); - glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]); - glNormal3fv(tn[9][20]); glVertex3fv(tp[9][20]); - glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(tn[10][0]); glVertex3fv(tp[10][0]); - glNormal3fv(tn[11][0]); glVertex3fv(tp[11][0]); - glNormal3fv(tn[10][1]); glVertex3fv(tp[10][1]); - glNormal3fv(tn[11][1]); glVertex3fv(tp[11][1]); - glNormal3fv(tn[10][2]); glVertex3fv(tp[10][2]); - glNormal3fv(tn[11][2]); glVertex3fv(tp[11][2]); - glNormal3fv(tn[10][3]); glVertex3fv(tp[10][3]); - glNormal3fv(tn[11][3]); glVertex3fv(tp[11][3]); - glNormal3fv(tn[10][4]); glVertex3fv(tp[10][4]); - glNormal3fv(tn[11][4]); glVertex3fv(tp[11][4]); - glNormal3fv(tn[10][5]); glVertex3fv(tp[10][5]); - glNormal3fv(tn[11][5]); glVertex3fv(tp[11][5]); - glNormal3fv(tn[10][6]); glVertex3fv(tp[10][6]); - glNormal3fv(tn[11][6]); glVertex3fv(tp[11][6]); - glNormal3fv(tn[10][7]); glVertex3fv(tp[10][7]); - glNormal3fv(tn[11][7]); glVertex3fv(tp[11][7]); - glNormal3fv(tn[10][8]); glVertex3fv(tp[10][8]); - glNormal3fv(tn[11][8]); glVertex3fv(tp[11][8]); - glNormal3fv(tn[10][9]); glVertex3fv(tp[10][9]); - glNormal3fv(tn[11][9]); glVertex3fv(tp[11][9]); - glNormal3fv(tn[10][10]); glVertex3fv(tp[10][10]); - glNormal3fv(tn[11][10]); glVertex3fv(tp[11][10]); - glNormal3fv(tn[10][11]); glVertex3fv(tp[10][11]); - glNormal3fv(tn[11][11]); glVertex3fv(tp[11][11]); - glNormal3fv(tn[10][12]); glVertex3fv(tp[10][12]); - glNormal3fv(tn[11][12]); glVertex3fv(tp[11][12]); - glNormal3fv(tn[10][13]); glVertex3fv(tp[10][13]); - glNormal3fv(tn[11][13]); glVertex3fv(tp[11][13]); - glNormal3fv(tn[10][14]); glVertex3fv(tp[10][14]); - glNormal3fv(tn[11][14]); glVertex3fv(tp[11][14]); - glNormal3fv(tn[10][15]); glVertex3fv(tp[10][15]); - glNormal3fv(tn[11][15]); glVertex3fv(tp[11][15]); - glNormal3fv(tn[10][16]); glVertex3fv(tp[10][16]); - glNormal3fv(tn[11][16]); glVertex3fv(tp[11][16]); - glNormal3fv(tn[10][17]); glVertex3fv(tp[10][17]); - glNormal3fv(tn[11][17]); glVertex3fv(tp[11][17]); - glNormal3fv(tn[10][18]); glVertex3fv(tp[10][18]); - glNormal3fv(tn[11][18]); glVertex3fv(tp[11][18]); - glNormal3fv(tn[10][19]); glVertex3fv(tp[10][19]); - glNormal3fv(tn[11][19]); glVertex3fv(tp[11][19]); - glNormal3fv(tn[10][20]); glVertex3fv(tp[10][20]); - glNormal3fv(tn[11][20]); glVertex3fv(tp[11][20]); - glEnd(); -} - -void draw_holder(void) { - - glCallList( MAT_HOLDER_RINGS); - - glPushMatrix(); - draw_base(); - glTranslatef(0.0, 0.0, 20.000000); - draw_torus(); - glTranslatef(0.0, 0.0, 5.000000); - draw_torus(); - glTranslatef(0.0, 0.0, 5.000000); - draw_torus(); - glPopMatrix(); -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/draw_lamp.c b/lib/glut-3.7.6/progs/demos/ideas/draw_lamp.c deleted file mode 100644 index 70e5b96a9a203aa6813cf0307dbddd190674a79a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/draw_lamp.c +++ /dev/null @@ -1,826 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -#include "objects.h" -/* -#define glNormal3fv(v) \ -{ \ - printf("%g, %g, %g --> %.10f\n", \ - v[0], v[1], v[2], v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); \ - glNormal3fv(v); \ -} -*/ -float hp[6][13][3] = { - - { - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - }, - { - {0.438371, 0.000000, 0.898794}, - {0.379641, 0.219186, 0.898794}, - {0.219186, 0.379641, 0.898794}, - {0.000000, 0.438371, 0.898794}, - {-0.219186, 0.379641, 0.898794}, - {-0.379641, 0.219186, 0.898794}, - {-0.438371, 0.000000, 0.898794}, - {-0.379641, -0.219186, 0.898794}, - {-0.219186, -0.379641, 0.898794}, - {0.000000, -0.438371, 0.898794}, - {0.219186, -0.379641, 0.898794}, - {0.379641, -0.219186, 0.898794}, - {0.438371, 0.000000, 0.898794}, - }, - { - {0.788011, 0.000000, 0.615662}, - {0.682437, 0.394005, 0.615662}, - {0.394005, 0.682437, 0.615662}, - {0.000000, 0.788011, 0.615662}, - {-0.394005, 0.682437, 0.615662}, - {-0.682437, 0.394005, 0.615662}, - {-0.788011, 0.000000, 0.615662}, - {-0.682437, -0.394005, 0.615662}, - {-0.394005, -0.682437, 0.615662}, - {0.000000, -0.788011, 0.615662}, - {0.394005, -0.682437, 0.615662}, - {0.682437, -0.394005, 0.615662}, - {0.788011, 0.000000, 0.615662}, - }, - { - {0.978148, 0.000000, 0.207912}, - {0.847101, 0.489074, 0.207912}, - {0.489074, 0.847101, 0.207912}, - {0.000000, 0.978148, 0.207912}, - {-0.489074, 0.847101, 0.207912}, - {-0.847101, 0.489074, 0.207912}, - {-0.978148, 0.000000, 0.207912}, - {-0.847101, -0.489074, 0.207912}, - {-0.489074, -0.847101, 0.207912}, - {0.000000, -0.978148, 0.207912}, - {0.489074, -0.847101, 0.207912}, - {0.847101, -0.489074, 0.207912}, - {0.978148, 0.000000, 0.207912}, - }, - { - {0.970296, 0.000000, -0.241922}, - {0.840301, 0.485148, -0.241922}, - {0.485148, 0.840301, -0.241922}, - {0.000000, 0.970296, -0.241922}, - {-0.485148, 0.840301, -0.241922}, - {-0.840301, 0.485148, -0.241922}, - {-0.970296, 0.000000, -0.241922}, - {-0.840301, -0.485148, -0.241922}, - {-0.485148, -0.840301, -0.241922}, - {0.000000, -0.970296, -0.241922}, - {0.485148, -0.840301, -0.241922}, - {0.840301, -0.485148, -0.241922}, - {0.970296, 0.000000, -0.241922}, - }, - { - {0.766044, 0.000000, -0.642788}, - {0.663414, 0.383022, -0.642788}, - {0.383022, 0.663414, -0.642788}, - {0.000000, 0.766044, -0.642788}, - {-0.383022, 0.663414, -0.642788}, - {-0.663414, 0.383022, -0.642788}, - {-0.766044, 0.000000, -0.642788}, - {-0.663414, -0.383022, -0.642788}, - {-0.383022, -0.663414, -0.642788}, - {0.000000, -0.766044, -0.642788}, - {0.383022, -0.663414, -0.642788}, - {0.663414, -0.383022, -0.642788}, - {0.766044, 0.000000, -0.642788}, - }, -}; - -float ltp[9][25][3] = { - { - {10.000000, 0.000000, 1.000000}, - {9.659258, -2.588191, 1.000000}, - {8.660254, -5.000000, 1.000000}, - {7.071068, -7.071068, 1.000000}, - {5.000000, -8.660254, 1.000000}, - {2.588191, -9.659258, 1.000000}, - {0.000000, -10.000000, 1.000000}, - {-2.588191, -9.659258, 1.000000}, - {-5.000000, -8.660254, 1.000000}, - {-7.071068, -7.071068, 1.000000}, - {-8.660254, -5.000000, 1.000000}, - {-9.659258, -2.588191, 1.000000}, - {-10.000000, 0.000000, 1.000000}, - {-9.659258, 2.588191, 1.000000}, - {-8.660254, 5.000000, 1.000000}, - {-7.071068, 7.071068, 1.000000}, - {-5.000000, 8.660254, 1.000000}, - {-2.588191, 9.659258, 1.000000}, - {0.000000, 10.000000, 1.000000}, - {2.588191, 9.659258, 1.000000}, - {5.000000, 8.660254, 1.000000}, - {7.071068, 7.071068, 1.000000}, - {8.660254, 5.000000, 1.000000}, - {9.659258, 2.588191, 1.000000}, - {10.000000, 0.000000, 1.000000}, - }, - - { - {10.707107, 0.000000, 0.707107}, - {10.342271, -2.771203, 0.707107}, - {9.272627, -5.353553, 0.707107}, - {7.571068, -7.571068, 0.707107}, - {5.353553, -9.272627, 0.707107}, - {2.771203, -10.342271, 0.707107}, - {0.000000, -10.707107, 0.707107}, - {-2.771203, -10.342271, 0.707107}, - {-5.353553, -9.272627, 0.707107}, - {-7.571068, -7.571068, 0.707107}, - {-9.272627, -5.353553, 0.707107}, - {-10.342271, -2.771203, 0.707107}, - {-10.707107, 0.000000, 0.707107}, - {-10.342271, 2.771203, 0.707107}, - {-9.272627, 5.353553, 0.707107}, - {-7.571068, 7.571068, 0.707107}, - {-5.353553, 9.272627, 0.707107}, - {-2.771203, 10.342271, 0.707107}, - {0.000000, 10.707107, 0.707107}, - {2.771203, 10.342271, 0.707107}, - {5.353553, 9.272627, 0.707107}, - {7.571068, 7.571068, 0.707107}, - {9.272627, 5.353553, 0.707107}, - {10.342271, 2.771203, 0.707107}, - {10.707107, 0.000000, 0.707107}, - }, - - { - {11.000000, 0.000000, 0.000000}, - {10.625184, -2.847009, 0.000000}, - {9.526279, -5.500000, 0.000000}, - {7.778174, -7.778174, 0.000000}, - {5.500000, -9.526279, 0.000000}, - {2.847009, -10.625184, 0.000000}, - {0.000000, -11.000000, 0.000000}, - {-2.847009, -10.625184, 0.000000}, - {-5.500000, -9.526279, 0.000000}, - {-7.778174, -7.778174, 0.000000}, - {-9.526279, -5.500000, 0.000000}, - {-10.625184, -2.847009, 0.000000}, - {-11.000000, 0.000000, 0.000000}, - {-10.625184, 2.847009, 0.000000}, - {-9.526279, 5.500000, 0.000000}, - {-7.778174, 7.778174, 0.000000}, - {-5.500000, 9.526279, 0.000000}, - {-2.847009, 10.625184, 0.000000}, - {0.000000, 11.000000, 0.000000}, - {2.847009, 10.625184, 0.000000}, - {5.500000, 9.526279, 0.000000}, - {7.778174, 7.778174, 0.000000}, - {9.526279, 5.500000, 0.000000}, - {10.625184, 2.847009, 0.000000}, - {11.000000, 0.000000, 0.000000}, - }, - - { - {10.707107, 0.000000, -0.707107}, - {10.342271, -2.771203, -0.707107}, - {9.272627, -5.353553, -0.707107}, - {7.571068, -7.571068, -0.707107}, - {5.353553, -9.272627, -0.707107}, - {2.771203, -10.342271, -0.707107}, - {0.000000, -10.707107, -0.707107}, - {-2.771203, -10.342271, -0.707107}, - {-5.353553, -9.272627, -0.707107}, - {-7.571068, -7.571068, -0.707107}, - {-9.272627, -5.353553, -0.707107}, - {-10.342271, -2.771203, -0.707107}, - {-10.707107, 0.000000, -0.707107}, - {-10.342271, 2.771203, -0.707107}, - {-9.272627, 5.353553, -0.707107}, - {-7.571068, 7.571068, -0.707107}, - {-5.353553, 9.272627, -0.707107}, - {-2.771203, 10.342271, -0.707107}, - {0.000000, 10.707107, -0.707107}, - {2.771203, 10.342271, -0.707107}, - {5.353553, 9.272627, -0.707107}, - {7.571068, 7.571068, -0.707107}, - {9.272627, 5.353553, -0.707107}, - {10.342271, 2.771203, -0.707107}, - {10.707107, 0.000000, -0.707107}, - }, - - { - {10.000000, 0.000000, -1.000000}, - {9.659258, -2.588191, -1.000000}, - {8.660254, -5.000000, -1.000000}, - {7.071068, -7.071068, -1.000000}, - {5.000000, -8.660254, -1.000000}, - {2.588191, -9.659258, -1.000000}, - {0.000000, -10.000000, -1.000000}, - {-2.588191, -9.659258, -1.000000}, - {-5.000000, -8.660254, -1.000000}, - {-7.071068, -7.071068, -1.000000}, - {-8.660254, -5.000000, -1.000000}, - {-9.659258, -2.588191, -1.000000}, - {-10.000000, 0.000000, -1.000000}, - {-9.659258, 2.588191, -1.000000}, - {-8.660254, 5.000000, -1.000000}, - {-7.071068, 7.071068, -1.000000}, - {-5.000000, 8.660254, -1.000000}, - {-2.588191, 9.659258, -1.000000}, - {0.000000, 10.000000, -1.000000}, - {2.588191, 9.659258, -1.000000}, - {5.000000, 8.660254, -1.000000}, - {7.071068, 7.071068, -1.000000}, - {8.660254, 5.000000, -1.000000}, - {9.659258, 2.588191, -1.000000}, - {10.000000, 0.000000, -1.000000}, - }, - - { - {9.292893, 0.000000, -0.707107}, - {8.976246, -2.405178, -0.707107}, - {8.047881, -4.646447, -0.707107}, - {6.571068, -6.571068, -0.707107}, - {4.646447, -8.047881, -0.707107}, - {2.405178, -8.976246, -0.707107}, - {0.000000, -9.292893, -0.707107}, - {-2.405178, -8.976246, -0.707107}, - {-4.646447, -8.047881, -0.707107}, - {-6.571068, -6.571068, -0.707107}, - {-8.047881, -4.646447, -0.707107}, - {-8.976246, -2.405178, -0.707107}, - {-9.292893, 0.000000, -0.707107}, - {-8.976246, 2.405178, -0.707107}, - {-8.047881, 4.646447, -0.707107}, - {-6.571068, 6.571068, -0.707107}, - {-4.646447, 8.047881, -0.707107}, - {-2.405178, 8.976246, -0.707107}, - {0.000000, 9.292893, -0.707107}, - {2.405178, 8.976246, -0.707107}, - {4.646447, 8.047881, -0.707107}, - {6.571068, 6.571068, -0.707107}, - {8.047881, 4.646447, -0.707107}, - {8.976246, 2.405178, -0.707107}, - {9.292893, 0.000000, -0.707107}, - }, - - { - {9.000000, 0.000000, 0.000000}, - {8.693333, -2.329371, 0.000000}, - {7.794229, -4.500000, 0.000000}, - {6.363961, -6.363961, 0.000000}, - {4.500000, -7.794229, 0.000000}, - {2.329371, -8.693333, 0.000000}, - {0.000000, -9.000000, 0.000000}, - {-2.329371, -8.693333, 0.000000}, - {-4.500000, -7.794229, 0.000000}, - {-6.363961, -6.363961, 0.000000}, - {-7.794229, -4.500000, 0.000000}, - {-8.693333, -2.329371, 0.000000}, - {-9.000000, 0.000000, 0.000000}, - {-8.693333, 2.329371, 0.000000}, - {-7.794229, 4.500000, 0.000000}, - {-6.363961, 6.363961, 0.000000}, - {-4.500000, 7.794229, 0.000000}, - {-2.329371, 8.693333, 0.000000}, - {0.000000, 9.000000, 0.000000}, - {2.329371, 8.693333, 0.000000}, - {4.500000, 7.794229, 0.000000}, - {6.363961, 6.363961, 0.000000}, - {7.794229, 4.500000, 0.000000}, - {8.693333, 2.329371, 0.000000}, - {9.000000, 0.000000, 0.000000}, - }, - - { - {9.292893, 0.000000, 0.707107}, - {8.976246, -2.405178, 0.707107}, - {8.047881, -4.646447, 0.707107}, - {6.571068, -6.571068, 0.707107}, - {4.646447, -8.047881, 0.707107}, - {2.405178, -8.976246, 0.707107}, - {0.000000, -9.292893, 0.707107}, - {-2.405178, -8.976246, 0.707107}, - {-4.646447, -8.047881, 0.707107}, - {-6.571068, -6.571068, 0.707107}, - {-8.047881, -4.646447, 0.707107}, - {-8.976246, -2.405178, 0.707107}, - {-9.292893, 0.000000, 0.707107}, - {-8.976246, 2.405178, 0.707107}, - {-8.047881, 4.646447, 0.707107}, - {-6.571068, 6.571068, 0.707107}, - {-4.646447, 8.047881, 0.707107}, - {-2.405178, 8.976246, 0.707107}, - {0.000000, 9.292893, 0.707107}, - {2.405178, 8.976246, 0.707107}, - {4.646447, 8.047881, 0.707107}, - {6.571068, 6.571068, 0.707107}, - {8.047881, 4.646447, 0.707107}, - {8.976246, 2.405178, 0.707107}, - {9.292893, 0.000000, 0.707107}, - }, - - { - {10.000000, 0.000000, 1.000000}, - {9.659258, -2.588191, 1.000000}, - {8.660254, -5.000000, 1.000000}, - {7.071068, -7.071068, 1.000000}, - {5.000000, -8.660254, 1.000000}, - {2.588191, -9.659258, 1.000000}, - {0.000000, -10.000000, 1.000000}, - {-2.588191, -9.659258, 1.000000}, - {-5.000000, -8.660254, 1.000000}, - {-7.071068, -7.071068, 1.000000}, - {-8.660254, -5.000000, 1.000000}, - {-9.659258, -2.588191, 1.000000}, - {-10.000000, 0.000000, 1.000000}, - {-9.659258, 2.588191, 1.000000}, - {-8.660254, 5.000000, 1.000000}, - {-7.071068, 7.071068, 1.000000}, - {-5.000000, 8.660254, 1.000000}, - {-2.588191, 9.659258, 1.000000}, - {0.000000, 10.000000, 1.000000}, - {2.588191, 9.659258, 1.000000}, - {5.000000, 8.660254, 1.000000}, - {7.071068, 7.071068, 1.000000}, - {8.660254, 5.000000, 1.000000}, - {9.659258, 2.588191, 1.000000}, - {10.000000, 0.000000, 1.000000}, - }, - -}; - -float ltn[9][25][3] = { - { - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - }, - - { - {0.707107, 0.000000, 0.707107}, - {0.683013, -0.183013, 0.707107}, - {0.612372, -0.353553, 0.707107}, - {0.500000, -0.500000, 0.707107}, - {0.353553, -0.612372, 0.707107}, - {0.183013, -0.683013, 0.707107}, - {0.000000, -0.707107, 0.707107}, - {-0.183013, -0.683013, 0.707107}, - {-0.353553, -0.612372, 0.707107}, - {-0.500000, -0.500000, 0.707107}, - {-0.612372, -0.353553, 0.707107}, - {-0.683013, -0.183013, 0.707107}, - {-0.707107, 0.000000, 0.707107}, - {-0.683013, 0.183013, 0.707107}, - {-0.612372, 0.353553, 0.707107}, - {-0.500000, 0.500000, 0.707107}, - {-0.353553, 0.612372, 0.707107}, - {-0.183013, 0.683013, 0.707107}, - {0.000000, 0.707107, 0.707107}, - {0.183013, 0.683013, 0.707107}, - {0.353553, 0.612372, 0.707107}, - {0.500000, 0.500000, 0.707107}, - {0.612372, 0.353553, 0.707107}, - {0.683013, 0.183013, 0.707107}, - {0.707107, 0.000000, 0.707107}, - }, - - { - {1.000000, 0.000000, 0.000000}, - {0.965926, -0.258819, 0.000000}, - {0.866025, -0.500000, 0.000000}, - {0.707107, -0.707107, 0.000000}, - {0.500000, -0.866025, 0.000000}, - {0.258819, -0.965926, 0.000000}, - {0.000000, -1.000000, 0.000000}, - {-0.258819, -0.965926, 0.000000}, - {-0.500000, -0.866025, 0.000000}, - {-0.707107, -0.707107, 0.000000}, - {-0.866025, -0.500000, 0.000000}, - {-0.965926, -0.258819, 0.000000}, - {-1.000000, 0.000000, 0.000000}, - {-0.965926, 0.258819, 0.000000}, - {-0.866025, 0.500000, 0.000000}, - {-0.707107, 0.707107, 0.000000}, - {-0.500000, 0.866025, 0.000000}, - {-0.258819, 0.965926, 0.000000}, - {0.000000, 1.000000, 0.000000}, - {0.258819, 0.965926, 0.000000}, - {0.500000, 0.866025, 0.000000}, - {0.707107, 0.707107, 0.000000}, - {0.866025, 0.500000, 0.000000}, - {0.965926, 0.258819, 0.000000}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {0.707107, 0.000000, -0.707107}, - {0.683013, -0.183013, -0.707107}, - {0.612372, -0.353553, -0.707107}, - {0.500000, -0.500000, -0.707107}, - {0.353553, -0.612372, -0.707107}, - {0.183013, -0.683013, -0.707107}, - {0.000000, -0.707107, -0.707107}, - {-0.183013, -0.683013, -0.707107}, - {-0.353553, -0.612372, -0.707107}, - {-0.500000, -0.500000, -0.707107}, - {-0.612372, -0.353553, -0.707107}, - {-0.683013, -0.183013, -0.707107}, - {-0.707107, 0.000000, -0.707107}, - {-0.683013, 0.183013, -0.707107}, - {-0.612372, 0.353553, -0.707107}, - {-0.500000, 0.500000, -0.707107}, - {-0.353553, 0.612372, -0.707107}, - {-0.183013, 0.683013, -0.707107}, - {0.000000, 0.707107, -0.707107}, - {0.183013, 0.683013, -0.707107}, - {0.353553, 0.612372, -0.707107}, - {0.500000, 0.500000, -0.707107}, - {0.612372, 0.353553, -0.707107}, - {0.683013, 0.183013, -0.707107}, - {0.707107, 0.000000, -0.707107}, - }, - - { - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - {0.000000, 0.000000, -1.000000}, - }, - - { - {-0.707107, 0.000000, -0.707107}, - {-0.683013, 0.183013, -0.707107}, - {-0.612372, 0.353553, -0.707107}, - {-0.500000, 0.500000, -0.707107}, - {-0.353553, 0.612372, -0.707107}, - {-0.183013, 0.683013, -0.707107}, - {0.000000, 0.707107, -0.707107}, - {0.183013, 0.683013, -0.707107}, - {0.353553, 0.612372, -0.707107}, - {0.500000, 0.500000, -0.707107}, - {0.612372, 0.353553, -0.707107}, - {0.683013, 0.183013, -0.707107}, - {0.707107, 0.000000, -0.707107}, - {0.683013, -0.183013, -0.707107}, - {0.612372, -0.353553, -0.707107}, - {0.500000, -0.500000, -0.707107}, - {0.353553, -0.612372, -0.707107}, - {0.183013, -0.683013, -0.707107}, - {0.000000, -0.707107, -0.707107}, - {-0.183013, -0.683013, -0.707107}, - {-0.353553, -0.612372, -0.707107}, - {-0.500000, -0.500000, -0.707107}, - {-0.612372, -0.353553, -0.707107}, - {-0.683013, -0.183013, -0.707107}, - {-0.707107, 0.000000, -0.707107}, - }, - - { - {-1.000000, 0.000000, 0.000000}, - {-0.965926, 0.258819, 0.000000}, - {-0.866025, 0.500000, 0.000000}, - {-0.707107, 0.707107, 0.000000}, - {-0.500000, 0.866025, 0.000000}, - {-0.258819, 0.965926, 0.000000}, - {0.000000, 1.000000, 0.000000}, - {0.258819, 0.965926, 0.000000}, - {0.500000, 0.866025, 0.000000}, - {0.707107, 0.707107, 0.000000}, - {0.866025, 0.500000, 0.000000}, - {0.965926, 0.258819, 0.000000}, - {1.000000, 0.000000, 0.000000}, - {0.965926, -0.258819, 0.000000}, - {0.866025, -0.500000, 0.000000}, - {0.707107, -0.707107, 0.000000}, - {0.500000, -0.866025, 0.000000}, - {0.258819, -0.965926, 0.000000}, - {0.000000, -1.000000, 0.000000}, - {-0.258819, -0.965926, 0.000000}, - {-0.500000, -0.866025, 0.000000}, - {-0.707107, -0.707107, 0.000000}, - {-0.866025, -0.500000, 0.000000}, - {-0.965926, -0.258819, 0.000000}, - {-1.000000, 0.000000, 0.000000}, - }, - - { - {-0.707107, 0.000000, 0.707107}, - {-0.683013, 0.183013, 0.707107}, - {-0.612372, 0.353553, 0.707107}, - {-0.500000, 0.500000, 0.707107}, - {-0.353553, 0.612372, 0.707107}, - {-0.183013, 0.683013, 0.707107}, - {0.000000, 0.707107, 0.707107}, - {0.183013, 0.683013, 0.707107}, - {0.353553, 0.612372, 0.707107}, - {0.500000, 0.500000, 0.707107}, - {0.612372, 0.353553, 0.707107}, - {0.683013, 0.183013, 0.707107}, - {0.707107, 0.000000, 0.707107}, - {0.683013, -0.183013, 0.707107}, - {0.612372, -0.353553, 0.707107}, - {0.500000, -0.500000, 0.707107}, - {0.353553, -0.612372, 0.707107}, - {0.183013, -0.683013, 0.707107}, - {0.000000, -0.707107, 0.707107}, - {-0.183013, -0.683013, 0.707107}, - {-0.353553, -0.612372, 0.707107}, - {-0.500000, -0.500000, 0.707107}, - {-0.612372, -0.353553, 0.707107}, - {-0.683013, -0.183013, 0.707107}, - {-0.707107, 0.000000, 0.707107}, - }, - - { - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - {0.000000, 0.000000, 1.000000}, - }, - -}; - -void draw_hemisphere(void) { - - glCallList(MAT_HEMISPHERE); - glEnable(GL_LIGHTING); - - /* CF damn! */ - /* glEnable(GL_NORMALIZE); */ - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(hp[0][0]); glVertex3fv(hp[0][0]); - glNormal3fv(hp[1][0]); glVertex3fv(hp[1][0]); - glNormal3fv(hp[0][1]); glVertex3fv(hp[0][1]); - glNormal3fv(hp[1][1]); glVertex3fv(hp[1][1]); - glNormal3fv(hp[0][2]); glVertex3fv(hp[0][2]); - glNormal3fv(hp[1][2]); glVertex3fv(hp[1][2]); - glNormal3fv(hp[0][3]); glVertex3fv(hp[0][3]); - glNormal3fv(hp[1][3]); glVertex3fv(hp[1][3]); - glNormal3fv(hp[0][4]); glVertex3fv(hp[0][4]); - glNormal3fv(hp[1][4]); glVertex3fv(hp[1][4]); - glNormal3fv(hp[0][5]); glVertex3fv(hp[0][5]); - glNormal3fv(hp[1][5]); glVertex3fv(hp[1][5]); - glNormal3fv(hp[0][6]); glVertex3fv(hp[0][6]); - glNormal3fv(hp[1][6]); glVertex3fv(hp[1][6]); - glNormal3fv(hp[0][7]); glVertex3fv(hp[0][7]); - glNormal3fv(hp[1][7]); glVertex3fv(hp[1][7]); - glNormal3fv(hp[0][8]); glVertex3fv(hp[0][8]); - glNormal3fv(hp[1][8]); glVertex3fv(hp[1][8]); - glNormal3fv(hp[0][9]); glVertex3fv(hp[0][9]); - glNormal3fv(hp[1][9]); glVertex3fv(hp[1][9]); - glNormal3fv(hp[0][10]); glVertex3fv(hp[0][10]); - glNormal3fv(hp[1][10]); glVertex3fv(hp[1][10]); - glNormal3fv(hp[0][11]); glVertex3fv(hp[0][11]); - glNormal3fv(hp[1][11]); glVertex3fv(hp[1][11]); - glNormal3fv(hp[0][12]); glVertex3fv(hp[0][12]); - glNormal3fv(hp[1][12]); glVertex3fv(hp[1][12]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(hp[1][0]); glVertex3fv(hp[1][0]); - glNormal3fv(hp[2][0]); glVertex3fv(hp[2][0]); - glNormal3fv(hp[1][1]); glVertex3fv(hp[1][1]); - glNormal3fv(hp[2][1]); glVertex3fv(hp[2][1]); - glNormal3fv(hp[1][2]); glVertex3fv(hp[1][2]); - glNormal3fv(hp[2][2]); glVertex3fv(hp[2][2]); - glNormal3fv(hp[1][3]); glVertex3fv(hp[1][3]); - glNormal3fv(hp[2][3]); glVertex3fv(hp[2][3]); - glNormal3fv(hp[1][4]); glVertex3fv(hp[1][4]); - glNormal3fv(hp[2][4]); glVertex3fv(hp[2][4]); - glNormal3fv(hp[1][5]); glVertex3fv(hp[1][5]); - glNormal3fv(hp[2][5]); glVertex3fv(hp[2][5]); - glNormal3fv(hp[1][6]); glVertex3fv(hp[1][6]); - glNormal3fv(hp[2][6]); glVertex3fv(hp[2][6]); - glNormal3fv(hp[1][7]); glVertex3fv(hp[1][7]); - glNormal3fv(hp[2][7]); glVertex3fv(hp[2][7]); - glNormal3fv(hp[1][8]); glVertex3fv(hp[1][8]); - glNormal3fv(hp[2][8]); glVertex3fv(hp[2][8]); - glNormal3fv(hp[1][9]); glVertex3fv(hp[1][9]); - glNormal3fv(hp[2][9]); glVertex3fv(hp[2][9]); - glNormal3fv(hp[1][10]); glVertex3fv(hp[1][10]); - glNormal3fv(hp[2][10]); glVertex3fv(hp[2][10]); - glNormal3fv(hp[1][11]); glVertex3fv(hp[1][11]); - glNormal3fv(hp[2][11]); glVertex3fv(hp[2][11]); - glNormal3fv(hp[1][12]); glVertex3fv(hp[1][12]); - glNormal3fv(hp[2][12]); glVertex3fv(hp[2][12]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(hp[2][0]); glVertex3fv(hp[2][0]); - glNormal3fv(hp[3][0]); glVertex3fv(hp[3][0]); - glNormal3fv(hp[2][1]); glVertex3fv(hp[2][1]); - glNormal3fv(hp[3][1]); glVertex3fv(hp[3][1]); - glNormal3fv(hp[2][2]); glVertex3fv(hp[2][2]); - glNormal3fv(hp[3][2]); glVertex3fv(hp[3][2]); - glNormal3fv(hp[2][3]); glVertex3fv(hp[2][3]); - glNormal3fv(hp[3][3]); glVertex3fv(hp[3][3]); - glNormal3fv(hp[2][4]); glVertex3fv(hp[2][4]); - glNormal3fv(hp[3][4]); glVertex3fv(hp[3][4]); - glNormal3fv(hp[2][5]); glVertex3fv(hp[2][5]); - glNormal3fv(hp[3][5]); glVertex3fv(hp[3][5]); - glNormal3fv(hp[2][6]); glVertex3fv(hp[2][6]); - glNormal3fv(hp[3][6]); glVertex3fv(hp[3][6]); - glNormal3fv(hp[2][7]); glVertex3fv(hp[2][7]); - glNormal3fv(hp[3][7]); glVertex3fv(hp[3][7]); - glNormal3fv(hp[2][8]); glVertex3fv(hp[2][8]); - glNormal3fv(hp[3][8]); glVertex3fv(hp[3][8]); - glNormal3fv(hp[2][9]); glVertex3fv(hp[2][9]); - glNormal3fv(hp[3][9]); glVertex3fv(hp[3][9]); - glNormal3fv(hp[2][10]); glVertex3fv(hp[2][10]); - glNormal3fv(hp[3][10]); glVertex3fv(hp[3][10]); - glNormal3fv(hp[2][11]); glVertex3fv(hp[2][11]); - glNormal3fv(hp[3][11]); glVertex3fv(hp[3][11]); - glNormal3fv(hp[2][12]); glVertex3fv(hp[2][12]); - glNormal3fv(hp[3][12]); glVertex3fv(hp[3][12]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(hp[3][0]); glVertex3fv(hp[3][0]); - glNormal3fv(hp[4][0]); glVertex3fv(hp[4][0]); - glNormal3fv(hp[3][1]); glVertex3fv(hp[3][1]); - glNormal3fv(hp[4][1]); glVertex3fv(hp[4][1]); - glNormal3fv(hp[3][2]); glVertex3fv(hp[3][2]); - glNormal3fv(hp[4][2]); glVertex3fv(hp[4][2]); - glNormal3fv(hp[3][3]); glVertex3fv(hp[3][3]); - glNormal3fv(hp[4][3]); glVertex3fv(hp[4][3]); - glNormal3fv(hp[3][4]); glVertex3fv(hp[3][4]); - glNormal3fv(hp[4][4]); glVertex3fv(hp[4][4]); - glNormal3fv(hp[3][5]); glVertex3fv(hp[3][5]); - glNormal3fv(hp[4][5]); glVertex3fv(hp[4][5]); - glNormal3fv(hp[3][6]); glVertex3fv(hp[3][6]); - glNormal3fv(hp[4][6]); glVertex3fv(hp[4][6]); - glNormal3fv(hp[3][7]); glVertex3fv(hp[3][7]); - glNormal3fv(hp[4][7]); glVertex3fv(hp[4][7]); - glNormal3fv(hp[3][8]); glVertex3fv(hp[3][8]); - glNormal3fv(hp[4][8]); glVertex3fv(hp[4][8]); - glNormal3fv(hp[3][9]); glVertex3fv(hp[3][9]); - glNormal3fv(hp[4][9]); glVertex3fv(hp[4][9]); - glNormal3fv(hp[3][10]); glVertex3fv(hp[3][10]); - glNormal3fv(hp[4][10]); glVertex3fv(hp[4][10]); - glNormal3fv(hp[3][11]); glVertex3fv(hp[3][11]); - glNormal3fv(hp[4][11]); glVertex3fv(hp[4][11]); - glNormal3fv(hp[3][12]); glVertex3fv(hp[3][12]); - glNormal3fv(hp[4][12]); glVertex3fv(hp[4][12]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(hp[4][0]); glVertex3fv(hp[4][0]); - glNormal3fv(hp[5][0]); glVertex3fv(hp[5][0]); - glNormal3fv(hp[4][1]); glVertex3fv(hp[4][1]); - glNormal3fv(hp[5][1]); glVertex3fv(hp[5][1]); - glNormal3fv(hp[4][2]); glVertex3fv(hp[4][2]); - glNormal3fv(hp[5][2]); glVertex3fv(hp[5][2]); - glNormal3fv(hp[4][3]); glVertex3fv(hp[4][3]); - glNormal3fv(hp[5][3]); glVertex3fv(hp[5][3]); - glNormal3fv(hp[4][4]); glVertex3fv(hp[4][4]); - glNormal3fv(hp[5][4]); glVertex3fv(hp[5][4]); - glNormal3fv(hp[4][5]); glVertex3fv(hp[4][5]); - glNormal3fv(hp[5][5]); glVertex3fv(hp[5][5]); - glNormal3fv(hp[4][6]); glVertex3fv(hp[4][6]); - glNormal3fv(hp[5][6]); glVertex3fv(hp[5][6]); - glNormal3fv(hp[4][7]); glVertex3fv(hp[4][7]); - glNormal3fv(hp[5][7]); glVertex3fv(hp[5][7]); - glNormal3fv(hp[4][8]); glVertex3fv(hp[4][8]); - glNormal3fv(hp[5][8]); glVertex3fv(hp[5][8]); - glNormal3fv(hp[4][9]); glVertex3fv(hp[4][9]); - glNormal3fv(hp[5][9]); glVertex3fv(hp[5][9]); - glNormal3fv(hp[4][10]); glVertex3fv(hp[4][10]); - glNormal3fv(hp[5][10]); glVertex3fv(hp[5][10]); - glNormal3fv(hp[4][11]); glVertex3fv(hp[4][11]); - glNormal3fv(hp[5][11]); glVertex3fv(hp[5][11]); - glNormal3fv(hp[4][12]); glVertex3fv(hp[4][12]); - glNormal3fv(hp[5][12]); glVertex3fv(hp[5][12]); - glEnd(); - - glDisable(GL_LIGHTING); - glColor3ub(255, 255, 255); - glBegin(GL_POLYGON); - glVertex3fv(hp[5][0]); - glVertex3fv(hp[5][1]); - glVertex3fv(hp[5][2]); - glVertex3fv(hp[5][3]); - glVertex3fv(hp[5][4]); - glVertex3fv(hp[5][5]); - glVertex3fv(hp[5][6]); - glVertex3fv(hp[5][7]); - glVertex3fv(hp[5][8]); - glVertex3fv(hp[5][9]); - glVertex3fv(hp[5][10]); - glVertex3fv(hp[5][11]); - glEnd(); - - /* CF damn! */ - /* glDisable(GL_NORMALIZE); */ - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/draw_logo.c b/lib/glut-3.7.6/progs/demos/ideas/draw_logo.c deleted file mode 100644 index 6bf90fec259abdc799534a735c0b07de7e2999f1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/draw_logo.c +++ /dev/null @@ -1,524 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -#include "objects.h" - -static float scp[18][3] = { - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000}, - {0.707107, 0.707107, 0.000000}, {0.707107, 0.707107, 5.000000}, - {0.000000, 1.000000, 0.000000}, {0.000000, 1.000000, 5.000000}, - {-0.707107, 0.707107, 0.000000}, {-0.707107, 0.707107, 5.000000}, - {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 5.000000}, - {-0.707107, -0.707107, 0.000000}, {-0.707107, -0.707107, 5.000000}, - {0.000000, -1.000000, 0.000000}, {0.000000, -1.000000, 5.000000}, - {0.707107, -0.707107, 0.000000}, {0.707107, -0.707107, 5.000000}, - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000}, -}; - -static float dcp[18][3] = { - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000}, - {0.707107, 0.707107, 0.000000}, {0.707107, 0.707107, 7.000000}, - {0.000000, 1.000000, 0.000000}, {0.000000, 1.000000, 7.000000}, - {-0.707107, 0.707107, 0.000000}, {-0.707107, 0.707107, 7.000000}, - {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 7.000000}, - {-0.707107, -0.707107, 0.000000}, {-0.707107, -0.707107, 7.000000}, - {0.000000, -1.000000, 0.000000}, {0.000000, -1.000000, 7.000000}, - {0.707107, -0.707107, 0.000000}, {0.707107, -0.707107, 7.000000}, - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000}, -}; - -static float ep[7][9][3] = { - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.707107, 0.000000}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.707107, 0.000000}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.707107, 0.000000}, - {0.000000, -1.000000, 0.000000}, - {0.707107, -0.707107, 0.000000}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.034074, 0.258819}, - {0.707107, 0.717087, 0.075806}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.717087, 0.075806}, - {-1.000000, 0.034074, 0.258819}, - {-0.707107, -0.648939, 0.441832}, - {0.000000, -0.931852, 0.517638}, - {0.707107, -0.648939, 0.441832}, - {1.000000, 0.034074, 0.258819}, - }, - - { - {1.000000, 0.133975, 0.500000}, - {0.707107, 0.746347, 0.146447}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.746347, 0.146447}, - {-1.000000, 0.133975, 0.500000}, - {-0.707107, -0.478398, 0.853553}, - {0.000000, -0.732051, 1.000000}, - {0.707107, -0.478398, 0.853553}, - {1.000000, 0.133975, 0.500000}, - }, - - { - {1.000000, 0.292893, 0.707107}, - {0.707107, 0.792893, 0.207107}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.792893, 0.207107}, - {-1.000000, 0.292893, 0.707107}, - {-0.707107, -0.207107, 1.207107}, - {0.000000, -0.414214, 1.414214}, - {0.707107, -0.207107, 1.207107}, - {1.000000, 0.292893, 0.707107}, - }, - - { - {1.000000, 0.500000, 0.866025}, - {0.707107, 0.853553, 0.253653}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.853553, 0.253653}, - {-1.000000, 0.500000, 0.866025}, - {-0.707107, 0.146447, 1.478398}, - {0.000000, 0.000000, 1.732051}, - {0.707107, 0.146447, 1.478398}, - {1.000000, 0.500000, 0.866025}, - }, - - { - {1.000000, 0.741181, 0.965926}, - {0.707107, 0.924194, 0.282913}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.924194, 0.282913}, - {-1.000000, 0.741181, 0.965926}, - {-0.707107, 0.558168, 1.648939}, - {0.000000, 0.482362, 1.931852}, - {0.707107, 0.558168, 1.648939}, - {1.000000, 0.741181, 0.965926}, - }, - - { - {1.000000, 1.000000, 1.000000}, - {0.707107, 1.000000, 0.292893}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 1.000000, 0.292893}, - {-1.000000, 1.000000, 1.000000}, - {-0.707107, 1.000000, 1.707107}, - {0.000000, 1.000000, 2.000000}, - {0.707107, 1.000000, 1.707107}, - {1.000000, 1.000000, 1.000000}, - }, - -}; - -static float en[7][9][3] = { - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.707107, 0.000000}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.707107, 0.000000}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.707107, 0.000000}, - {0.000000, -1.000000, 0.000000}, - {0.707107, -0.707107, 0.000000}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.683013, -0.183013}, - {0.000000, 0.965926, -0.258819}, - {-0.707107, 0.683013, -0.183013}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.683013, 0.183013}, - {0.000000, -0.965926, 0.258819}, - {0.707107, -0.683013, 0.183013}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.612372, -0.353553}, - {0.000000, 0.866025, -0.500000}, - {-0.707107, 0.612372, -0.353553}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.612372, 0.353553}, - {0.000000, -0.866025, 0.500000}, - {0.707107, -0.612372, 0.353553}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.500000, -0.500000}, - {0.000000, 0.707107, -0.707107}, - {-0.707107, 0.500000, -0.500000}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.500000, 0.500000}, - {0.000000, -0.707107, 0.707107}, - {0.707107, -0.500000, 0.500000}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.353553, -0.612372}, - {0.000000, 0.500000, -0.866025}, - {-0.707107, 0.353553, -0.612372}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.353553, 0.612372}, - {0.000000, -0.500000, 0.866025}, - {0.707107, -0.353553, 0.612372}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.183013, -0.683013}, - {0.000000, 0.258819, -0.965926}, - {-0.707107, 0.183013, -0.683013}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.183013, 0.683013}, - {0.000000, -0.258819, 0.965926}, - {0.707107, -0.183013, 0.683013}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.000000, -0.707107}, - {0.000000, 0.000000, -1.000000}, - {-0.707107, 0.000000, -0.707107}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, 0.000000, 0.707107}, - {0.000000, 0.000000, 1.000000}, - {0.707107, 0.000000, 0.707107}, - {1.000000, 0.000000, 0.000000}, - }, - -}; - -static void draw_single_cylinder(void) { - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(scp[0]); glVertex3fv(scp[0]); - glNormal3fv(scp[0]); glVertex3fv(scp[1]); - glNormal3fv(scp[2]); glVertex3fv(scp[2]); - glNormal3fv(scp[2]); glVertex3fv(scp[3]); - glNormal3fv(scp[4]); glVertex3fv(scp[4]); - glNormal3fv(scp[4]); glVertex3fv(scp[5]); - glNormal3fv(scp[6]); glVertex3fv(scp[6]); - glNormal3fv(scp[6]); glVertex3fv(scp[7]); - glNormal3fv(scp[8]); glVertex3fv(scp[8]); - glNormal3fv(scp[8]); glVertex3fv(scp[9]); - glNormal3fv(scp[10]); glVertex3fv(scp[10]); - glNormal3fv(scp[10]); glVertex3fv(scp[11]); - glNormal3fv(scp[12]); glVertex3fv(scp[12]); - glNormal3fv(scp[12]); glVertex3fv(scp[13]); - glNormal3fv(scp[14]); glVertex3fv(scp[14]); - glNormal3fv(scp[14]); glVertex3fv(scp[15]); - glNormal3fv(scp[16]); glVertex3fv(scp[16]); - glNormal3fv(scp[16]); glVertex3fv(scp[17]); - glEnd(); -} - -static void draw_double_cylinder(void) { - - glEnable(GL_NORMALIZE); - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(dcp[0]); glVertex3fv(dcp[0]); - glNormal3fv(dcp[0]); - glVertex3fv(dcp[1]); - glNormal3fv(dcp[2]); glVertex3fv(dcp[2]); - glNormal3fv(dcp[2]); - glVertex3fv(dcp[3]); - glNormal3fv(dcp[4]); glVertex3fv(dcp[4]); - glNormal3fv(dcp[4]); - glVertex3fv(dcp[5]); - glNormal3fv(dcp[6]); glVertex3fv(dcp[6]); - glNormal3fv(dcp[6]); - glVertex3fv(dcp[7]); - glNormal3fv(dcp[8]); glVertex3fv(dcp[8]); - glNormal3fv(dcp[8]); - glVertex3fv(dcp[9]); - glNormal3fv(dcp[10]); glVertex3fv(dcp[10]); - glNormal3fv(dcp[10]); - glVertex3fv(dcp[11]); - glNormal3fv(dcp[12]); glVertex3fv(dcp[12]); - glNormal3fv(dcp[12]); - glVertex3fv(dcp[13]); - glNormal3fv(dcp[14]); glVertex3fv(dcp[14]); - glNormal3fv(dcp[14]); - glVertex3fv(dcp[15]); - glNormal3fv(dcp[16]); glVertex3fv(dcp[16]); - glNormal3fv(dcp[16]); - glVertex3fv(dcp[17]); - glEnd(); -} - -static void draw_elbow(void) { - - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[0][0]); glVertex3fv(ep[0][0]); - glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]); - glNormal3fv(en[0][1]); glVertex3fv(ep[0][1]); - glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]); - glNormal3fv(en[0][2]); glVertex3fv(ep[0][2]); - glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]); - glNormal3fv(en[0][3]); glVertex3fv(ep[0][3]); - glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]); - glNormal3fv(en[0][4]); glVertex3fv(ep[0][4]); - glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]); - glNormal3fv(en[0][5]); glVertex3fv(ep[0][5]); - glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]); - glNormal3fv(en[0][6]); glVertex3fv(ep[0][6]); - glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]); - glNormal3fv(en[0][7]); glVertex3fv(ep[0][7]); - glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]); - glNormal3fv(en[0][8]); glVertex3fv(ep[0][8]); - glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]); - glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]); - glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]); - glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]); - glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]); - glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]); - glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]); - glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]); - glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]); - glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]); - glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]); - glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]); - glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]); - glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]); - glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]); - glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]); - glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]); - glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]); - glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]); - glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]); - glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]); - glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]); - glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]); - glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]); - glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]); - glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]); - glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]); - glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]); - glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]); - glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]); - glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]); - glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]); - glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]); - glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]); - glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]); - glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]); - glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]); - glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]); - glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]); - glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]); - glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]); - glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]); - glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]); - glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]); - glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]); - glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]); - glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]); - glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]); - glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]); - glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]); - glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]); - glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]); - glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]); - glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]); - glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]); - glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]); - glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]); - glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]); - glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]); - glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]); - glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]); - glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]); - glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]); - glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]); - glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]); - glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]); - glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]); - glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]); - glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]); - glNormal3fv(en[6][0]); glVertex3fv(ep[6][0]); - glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]); - glNormal3fv(en[6][1]); glVertex3fv(ep[6][1]); - glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]); - glNormal3fv(en[6][2]); glVertex3fv(ep[6][2]); - glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]); - glNormal3fv(en[6][3]); glVertex3fv(ep[6][3]); - glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]); - glNormal3fv(en[6][4]); glVertex3fv(ep[6][4]); - glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]); - glNormal3fv(en[6][5]); glVertex3fv(ep[6][5]); - glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]); - glNormal3fv(en[6][6]); glVertex3fv(ep[6][6]); - glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]); - glNormal3fv(en[6][7]); glVertex3fv(ep[6][7]); - glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]); - glNormal3fv(en[6][8]); glVertex3fv(ep[6][8]); - glEnd(); -} - -static void bend_forward(void) { - - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -static void bend_left(void) { - glRotatef (0.1 * (-900), 0.0, 0.0, 1.0); - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -static void bend_right(void) { - glRotatef (0.1 * (900), 0.0, 0.0, 1.0); - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -void draw_logo(void) { - - glCallList( MAT_LOGO); - - glTranslatef(5.500000, -3.500000, 4.500000); - - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); - - glDisable(GL_NORMALIZE); -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/draw_logo_line.c b/lib/glut-3.7.6/progs/demos/ideas/draw_logo_line.c deleted file mode 100644 index 906a21733a8e08df4d33a73d606a10197d4f5b32..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/draw_logo_line.c +++ /dev/null @@ -1,378 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -#include "objects.h" - -float scp[14][3] = { - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000}, - {0.500000, 0.866025, 0.000000}, {0.500000, 0.866025, 5.000000}, - {-0.500000, 0.866025, 0.000000}, {-0.500000, 0.866025, 5.000000}, - {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 5.000000}, - {-0.500000, -0.866025, 0.000000}, {-0.500000, -0.866025, 5.000000}, - {0.500000, -0.866025, 0.000000}, {0.500000, -0.866025, 5.000000}, - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000}, -}; - -float dcp[14][3] = { - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000}, - {0.500000, 0.866025, 0.000000}, {0.500000, 0.866025, 7.000000}, - {-0.500000, 0.866025, 0.000000}, {-0.500000, 0.866025, 7.000000}, - {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 7.000000}, - {-0.500000, -0.866025, 0.000000}, {-0.500000, -0.866025, 7.000000}, - {0.500000, -0.866025, 0.000000}, {0.500000, -0.866025, 7.000000}, - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000}, -}; - -float ep[7][7][3] = { - { - {1.000000, 0.000000, 0.000000}, - {0.500000, 0.866025, 0.000000}, - {-0.500000, 0.866025, 0.000000}, - {-1.000000, 0.000000, 0.000000}, - {-0.500000, -0.866025, 0.000000}, - {0.500000, -0.866025, 0.000000}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.034074, 0.258819}, - {0.500000, 0.870590, 0.034675}, - {-0.500000, 0.870590, 0.034675}, - {-1.000000, 0.034074, 0.258819}, - {-0.500000, -0.802442, 0.482963}, - {0.500000, -0.802442, 0.482963}, - {1.000000, 0.034074, 0.258819}, - }, - - { - {1.000000, 0.133975, 0.500000}, - {0.500000, 0.883975, 0.066987}, - {-0.500000, 0.883975, 0.066987}, - {-1.000000, 0.133975, 0.500000}, - {-0.500000, -0.616025, 0.933013}, - {0.500000, -0.616025, 0.933013}, - {1.000000, 0.133975, 0.500000}, - }, - - { - {1.000000, 0.292893, 0.707107}, - {0.500000, 0.905266, 0.094734}, - {-0.500000, 0.905266, 0.094734}, - {-1.000000, 0.292893, 0.707107}, - {-0.500000, -0.319479, 1.319479}, - {0.500000, -0.319479, 1.319479}, - {1.000000, 0.292893, 0.707107}, - }, - - { - {1.000000, 0.500000, 0.866025}, - {0.500000, 0.933013, 0.116025}, - {-0.500000, 0.933013, 0.116025}, - {-1.000000, 0.500000, 0.866025}, - {-0.500000, 0.066987, 1.616025}, - {0.500000, 0.066987, 1.616025}, - {1.000000, 0.500000, 0.866025}, - }, - - { - {1.000000, 0.741181, 0.965926}, - {0.500000, 0.965325, 0.129410}, - {-0.500000, 0.965325, 0.129410}, - {-1.000000, 0.741181, 0.965926}, - {-0.500000, 0.517037, 1.802442}, - {0.500000, 0.517037, 1.802442}, - {1.000000, 0.741181, 0.965926}, - }, - - { - {1.000000, 1.000000, 1.000000}, - {0.500000, 1.000000, 0.133975}, - {-0.500000, 1.000000, 0.133975}, - {-1.000000, 1.000000, 1.000000}, - {-0.500000, 1.000000, 1.866025}, - {0.500000, 1.000000, 1.866025}, - {1.000000, 1.000000, 1.000000}, - }, - -}; - -void draw_single_cylinder(void) { - - glBegin(GL_LINE_STRIP); -glVertex3fv(scp[0]); -glVertex3fv(scp[1]); -glVertex3fv(scp[2]); -glVertex3fv(scp[3]); -glVertex3fv(scp[4]); -glVertex3fv(scp[5]); -glVertex3fv(scp[6]); -glVertex3fv(scp[7]); -glVertex3fv(scp[8]); -glVertex3fv(scp[9]); -glVertex3fv(scp[10]); -glVertex3fv(scp[11]); -glVertex3fv(scp[12]); -glVertex3fv(scp[13]); - glEnd(); -} - -void draw_double_cylinder(void) { - - glBegin(GL_LINE_STRIP); -glVertex3fv(dcp[0]); -glVertex3fv(dcp[1]); -glVertex3fv(dcp[2]); -glVertex3fv(dcp[3]); -glVertex3fv(dcp[4]); -glVertex3fv(dcp[5]); -glVertex3fv(dcp[6]); -glVertex3fv(dcp[7]); -glVertex3fv(dcp[8]); -glVertex3fv(dcp[9]); -glVertex3fv(dcp[10]); -glVertex3fv(dcp[11]); -glVertex3fv(dcp[12]); -glVertex3fv(dcp[13]); - glEnd(); -} - -void draw_elbow(void) { - - glBegin(GL_LINE_STRIP); - glVertex3fv(ep[0][0]); - glVertex3fv(ep[1][0]); - glVertex3fv(ep[0][1]); - glVertex3fv(ep[1][1]); - glVertex3fv(ep[0][2]); - glVertex3fv(ep[1][2]); - glVertex3fv(ep[0][3]); - glVertex3fv(ep[1][3]); - glVertex3fv(ep[0][4]); - glVertex3fv(ep[1][4]); - glVertex3fv(ep[0][5]); - glVertex3fv(ep[1][5]); - glVertex3fv(ep[0][6]); - glVertex3fv(ep[1][6]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex3fv(ep[1][0]); - glVertex3fv(ep[2][0]); - glVertex3fv(ep[1][1]); - glVertex3fv(ep[2][1]); - glVertex3fv(ep[1][2]); - glVertex3fv(ep[2][2]); - glVertex3fv(ep[1][3]); - glVertex3fv(ep[2][3]); - glVertex3fv(ep[1][4]); - glVertex3fv(ep[2][4]); - glVertex3fv(ep[1][5]); - glVertex3fv(ep[2][5]); - glVertex3fv(ep[1][6]); - glVertex3fv(ep[2][6]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex3fv(ep[2][0]); - glVertex3fv(ep[3][0]); - glVertex3fv(ep[2][1]); - glVertex3fv(ep[3][1]); - glVertex3fv(ep[2][2]); - glVertex3fv(ep[3][2]); - glVertex3fv(ep[2][3]); - glVertex3fv(ep[3][3]); - glVertex3fv(ep[2][4]); - glVertex3fv(ep[3][4]); - glVertex3fv(ep[2][5]); - glVertex3fv(ep[3][5]); - glVertex3fv(ep[2][6]); - glVertex3fv(ep[3][6]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex3fv(ep[3][0]); - glVertex3fv(ep[4][0]); - glVertex3fv(ep[3][1]); - glVertex3fv(ep[4][1]); - glVertex3fv(ep[3][2]); - glVertex3fv(ep[4][2]); - glVertex3fv(ep[3][3]); - glVertex3fv(ep[4][3]); - glVertex3fv(ep[3][4]); - glVertex3fv(ep[4][4]); - glVertex3fv(ep[3][5]); - glVertex3fv(ep[4][5]); - glVertex3fv(ep[3][6]); - glVertex3fv(ep[4][6]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex3fv(ep[4][0]); - glVertex3fv(ep[5][0]); - glVertex3fv(ep[4][1]); - glVertex3fv(ep[5][1]); - glVertex3fv(ep[4][2]); - glVertex3fv(ep[5][2]); - glVertex3fv(ep[4][3]); - glVertex3fv(ep[5][3]); - glVertex3fv(ep[4][4]); - glVertex3fv(ep[5][4]); - glVertex3fv(ep[4][5]); - glVertex3fv(ep[5][5]); - glVertex3fv(ep[4][6]); - glVertex3fv(ep[5][6]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex3fv(ep[5][0]); - glVertex3fv(ep[6][0]); - glVertex3fv(ep[5][1]); - glVertex3fv(ep[6][1]); - glVertex3fv(ep[5][2]); - glVertex3fv(ep[6][2]); - glVertex3fv(ep[5][3]); - glVertex3fv(ep[6][3]); - glVertex3fv(ep[5][4]); - glVertex3fv(ep[6][4]); - glVertex3fv(ep[5][5]); - glVertex3fv(ep[6][5]); - glVertex3fv(ep[5][6]); - glVertex3fv(ep[6][6]); - glEnd(); -} - -void bend_forward(void) { - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -void bend_left(void) { - glRotatef (0.1 * (-900), 0.0, 0.0, 1.0); - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -void bend_right(void) { - glRotatef (0.1 * (900), 0.0, 0.0, 1.0); - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -void draw_logo_line(void) { - - glCallList( MAT_LOGO); - - glTranslatef(5.500000, -3.500000, 4.500000); - - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/draw_logo_shadow.c b/lib/glut-3.7.6/progs/demos/ideas/draw_logo_shadow.c deleted file mode 100644 index 976da3085f319841ab97f7fce83cb6ecb776bf99..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/draw_logo_shadow.c +++ /dev/null @@ -1,488 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -#include "objects.h" - -static float scp[18][3] = { - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000}, - {0.707107, 0.707107, 0.000000}, {0.707107, 0.707107, 5.000000}, - {0.000000, 1.000000, 0.000000}, {0.000000, 1.000000, 5.000000}, - {-0.707107, 0.707107, 0.000000}, {-0.707107, 0.707107, 5.000000}, - {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 5.000000}, - {-0.707107, -0.707107, 0.000000}, {-0.707107, -0.707107, 5.000000}, - {0.000000, -1.000000, 0.000000}, {0.000000, -1.000000, 5.000000}, - {0.707107, -0.707107, 0.000000}, {0.707107, -0.707107, 5.000000}, - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 5.000000}, -}; - -static float dcp[18][3] = { - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000}, - {0.707107, 0.707107, 0.000000}, {0.707107, 0.707107, 7.000000}, - {0.000000, 1.000000, 0.000000}, {0.000000, 1.000000, 7.000000}, - {-0.707107, 0.707107, 0.000000}, {-0.707107, 0.707107, 7.000000}, - {-1.000000, 0.000000, 0.000000}, {-1.000000, 0.000000, 7.000000}, - {-0.707107, -0.707107, 0.000000}, {-0.707107, -0.707107, 7.000000}, - {0.000000, -1.000000, 0.000000}, {0.000000, -1.000000, 7.000000}, - {0.707107, -0.707107, 0.000000}, {0.707107, -0.707107, 7.000000}, - {1.000000, 0.000000, 0.000000}, {1.000000, 0.000000, 7.000000}, -}; - -static float ep[9][9][3] = { - { - {1.000000, 0.000000, 0.000000}, - {0.707107, 0.707107, 0.000000}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.707107, 0.000000}, - {-1.000000, 0.000000, 0.000000}, - {-0.707107, -0.707107, 0.000000}, - {0.000000, -1.000000, 0.000000}, - {0.707107, -0.707107, 0.000000}, - {1.000000, 0.000000, 0.000000}, - }, - - { - {1.000000, 0.019215, 0.195090}, - {0.707107, 0.712735, 0.057141}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.712735, 0.057141}, - {-1.000000, 0.019215, 0.195090}, - {-0.707107, -0.674305, 0.333040}, - {0.000000, -0.961571, 0.390181}, - {0.707107, -0.674305, 0.333040}, - {1.000000, 0.019215, 0.195090}, - }, - - { - {1.000000, 0.076120, 0.382683}, - {0.707107, 0.729402, 0.112085}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.729402, 0.112085}, - {-1.000000, 0.076120, 0.382683}, - {-0.707107, -0.577161, 0.653282}, - {0.000000, -0.847759, 0.765367}, - {0.707107, -0.577161, 0.653282}, - {1.000000, 0.076120, 0.382683}, - }, - - { - {1.000000, 0.168530, 0.555570}, - {0.707107, 0.756468, 0.162723}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.756468, 0.162723}, - {-1.000000, 0.168530, 0.555570}, - {-0.707107, -0.419407, 0.948418}, - {0.000000, -0.662939, 1.111140}, - {0.707107, -0.419407, 0.948418}, - {1.000000, 0.168530, 0.555570}, - }, - - { - {1.000000, 0.292893, 0.707107}, - {0.707107, 0.792893, 0.207107}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.792893, 0.207107}, - {-1.000000, 0.292893, 0.707107}, - {-0.707107, -0.207107, 1.207107}, - {0.000000, -0.414214, 1.414214}, - {0.707107, -0.207107, 1.207107}, - {1.000000, 0.292893, 0.707107}, - }, - - { - {1.000000, 0.444430, 0.831470}, - {0.707107, 0.837277, 0.243532}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.837277, 0.243532}, - {-1.000000, 0.444430, 0.831470}, - {-0.707107, 0.051582, 1.419407}, - {0.000000, -0.111140, 1.662939}, - {0.707107, 0.051582, 1.419407}, - {1.000000, 0.444430, 0.831470}, - }, - - { - {1.000000, 0.617317, 0.923880}, - {0.707107, 0.887915, 0.270598}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.887915, 0.270598}, - {-1.000000, 0.617317, 0.923880}, - {-0.707107, 0.346719, 1.577161}, - {0.000000, 0.234633, 1.847759}, - {0.707107, 0.346719, 1.577161}, - {1.000000, 0.617317, 0.923880}, - }, - - { - {1.000000, 0.804910, 0.980785}, - {0.707107, 0.942859, 0.287265}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 0.942859, 0.287265}, - {-1.000000, 0.804910, 0.980785}, - {-0.707107, 0.666960, 1.674305}, - {0.000000, 0.609819, 1.961571}, - {0.707107, 0.666960, 1.674305}, - {1.000000, 0.804910, 0.980785}, - }, - - { - {1.000000, 1.000000, 1.000000}, - {0.707107, 1.000000, 0.292893}, - {0.000000, 1.000000, 0.000000}, - {-0.707107, 1.000000, 0.292893}, - {-1.000000, 1.000000, 1.000000}, - {-0.707107, 1.000000, 1.707107}, - {0.000000, 1.000000, 2.000000}, - {0.707107, 1.000000, 1.707107}, - {1.000000, 1.000000, 1.000000}, - }, - -}; - -static void draw_single_cylinder(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(scp[0]); - glVertex3fv(scp[1]); - glVertex3fv(scp[2]); - glVertex3fv(scp[3]); - glVertex3fv(scp[4]); - glVertex3fv(scp[5]); - glVertex3fv(scp[6]); - glVertex3fv(scp[7]); - glVertex3fv(scp[8]); - glVertex3fv(scp[9]); - glVertex3fv(scp[10]); - glVertex3fv(scp[11]); - glVertex3fv(scp[12]); - glVertex3fv(scp[13]); - glVertex3fv(scp[14]); - glVertex3fv(scp[15]); - glVertex3fv(scp[16]); - glVertex3fv(scp[17]); - glEnd(); -} - -static void draw_double_cylinder(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(dcp[0]); - glVertex3fv(dcp[1]); - glVertex3fv(dcp[2]); - glVertex3fv(dcp[3]); - glVertex3fv(dcp[4]); - glVertex3fv(dcp[5]); - glVertex3fv(dcp[6]); - glVertex3fv(dcp[7]); - glVertex3fv(dcp[8]); - glVertex3fv(dcp[9]); - glVertex3fv(dcp[10]); - glVertex3fv(dcp[11]); - glVertex3fv(dcp[12]); - glVertex3fv(dcp[13]); - glVertex3fv(dcp[14]); - glVertex3fv(dcp[15]); - glVertex3fv(dcp[16]); - glVertex3fv(dcp[17]); - glEnd(); -} - -static void draw_elbow(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[0][0]); - glVertex3fv(ep[1][0]); - glVertex3fv(ep[0][1]); - glVertex3fv(ep[1][1]); - glVertex3fv(ep[0][2]); - glVertex3fv(ep[1][2]); - glVertex3fv(ep[0][3]); - glVertex3fv(ep[1][3]); - glVertex3fv(ep[0][4]); - glVertex3fv(ep[1][4]); - glVertex3fv(ep[0][5]); - glVertex3fv(ep[1][5]); - glVertex3fv(ep[0][6]); - glVertex3fv(ep[1][6]); - glVertex3fv(ep[0][7]); - glVertex3fv(ep[1][7]); - glVertex3fv(ep[0][8]); - glVertex3fv(ep[1][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[1][0]); - glVertex3fv(ep[2][0]); - glVertex3fv(ep[1][1]); - glVertex3fv(ep[2][1]); - glVertex3fv(ep[1][2]); - glVertex3fv(ep[2][2]); - glVertex3fv(ep[1][3]); - glVertex3fv(ep[2][3]); - glVertex3fv(ep[1][4]); - glVertex3fv(ep[2][4]); - glVertex3fv(ep[1][5]); - glVertex3fv(ep[2][5]); - glVertex3fv(ep[1][6]); - glVertex3fv(ep[2][6]); - glVertex3fv(ep[1][7]); - glVertex3fv(ep[2][7]); - glVertex3fv(ep[1][8]); - glVertex3fv(ep[2][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[2][0]); - glVertex3fv(ep[3][0]); - glVertex3fv(ep[2][1]); - glVertex3fv(ep[3][1]); - glVertex3fv(ep[2][2]); - glVertex3fv(ep[3][2]); - glVertex3fv(ep[2][3]); - glVertex3fv(ep[3][3]); - glVertex3fv(ep[2][4]); - glVertex3fv(ep[3][4]); - glVertex3fv(ep[2][5]); - glVertex3fv(ep[3][5]); - glVertex3fv(ep[2][6]); - glVertex3fv(ep[3][6]); - glVertex3fv(ep[2][7]); - glVertex3fv(ep[3][7]); - glVertex3fv(ep[2][8]); - glVertex3fv(ep[3][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[3][0]); - glVertex3fv(ep[4][0]); - glVertex3fv(ep[3][1]); - glVertex3fv(ep[4][1]); - glVertex3fv(ep[3][2]); - glVertex3fv(ep[4][2]); - glVertex3fv(ep[3][3]); - glVertex3fv(ep[4][3]); - glVertex3fv(ep[3][4]); - glVertex3fv(ep[4][4]); - glVertex3fv(ep[3][5]); - glVertex3fv(ep[4][5]); - glVertex3fv(ep[3][6]); - glVertex3fv(ep[4][6]); - glVertex3fv(ep[3][7]); - glVertex3fv(ep[4][7]); - glVertex3fv(ep[3][8]); - glVertex3fv(ep[4][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[4][0]); - glVertex3fv(ep[5][0]); - glVertex3fv(ep[4][1]); - glVertex3fv(ep[5][1]); - glVertex3fv(ep[4][2]); - glVertex3fv(ep[5][2]); - glVertex3fv(ep[4][3]); - glVertex3fv(ep[5][3]); - glVertex3fv(ep[4][4]); - glVertex3fv(ep[5][4]); - glVertex3fv(ep[4][5]); - glVertex3fv(ep[5][5]); - glVertex3fv(ep[4][6]); - glVertex3fv(ep[5][6]); - glVertex3fv(ep[4][7]); - glVertex3fv(ep[5][7]); - glVertex3fv(ep[4][8]); - glVertex3fv(ep[5][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[5][0]); - glVertex3fv(ep[6][0]); - glVertex3fv(ep[5][1]); - glVertex3fv(ep[6][1]); - glVertex3fv(ep[5][2]); - glVertex3fv(ep[6][2]); - glVertex3fv(ep[5][3]); - glVertex3fv(ep[6][3]); - glVertex3fv(ep[5][4]); - glVertex3fv(ep[6][4]); - glVertex3fv(ep[5][5]); - glVertex3fv(ep[6][5]); - glVertex3fv(ep[5][6]); - glVertex3fv(ep[6][6]); - glVertex3fv(ep[5][7]); - glVertex3fv(ep[6][7]); - glVertex3fv(ep[5][8]); - glVertex3fv(ep[6][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[6][0]); - glVertex3fv(ep[7][0]); - glVertex3fv(ep[6][1]); - glVertex3fv(ep[7][1]); - glVertex3fv(ep[6][2]); - glVertex3fv(ep[7][2]); - glVertex3fv(ep[6][3]); - glVertex3fv(ep[7][3]); - glVertex3fv(ep[6][4]); - glVertex3fv(ep[7][4]); - glVertex3fv(ep[6][5]); - glVertex3fv(ep[7][5]); - glVertex3fv(ep[6][6]); - glVertex3fv(ep[7][6]); - glVertex3fv(ep[6][7]); - glVertex3fv(ep[7][7]); - glVertex3fv(ep[6][8]); - glVertex3fv(ep[7][8]); - glEnd(); - glBegin(GL_TRIANGLE_STRIP); - glVertex3fv(ep[7][0]); - glVertex3fv(ep[8][0]); - glVertex3fv(ep[7][1]); - glVertex3fv(ep[8][1]); - glVertex3fv(ep[7][2]); - glVertex3fv(ep[8][2]); - glVertex3fv(ep[7][3]); - glVertex3fv(ep[8][3]); - glVertex3fv(ep[7][4]); - glVertex3fv(ep[8][4]); - glVertex3fv(ep[7][5]); - glVertex3fv(ep[8][5]); - glVertex3fv(ep[7][6]); - glVertex3fv(ep[8][6]); - glVertex3fv(ep[7][7]); - glVertex3fv(ep[8][7]); - glVertex3fv(ep[7][8]); - glVertex3fv(ep[8][8]); - glEnd(); -} - -static void bend_forward(void) { - - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -static void bend_left(void) { - - glRotatef (0.1 * (-900), 0.0, 0.0, 1.0); - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -static void bend_right(void) { - - glRotatef (0.1 * (900), 0.0, 0.0, 1.0); - glTranslatef(0.0, 1.000000, 0.0); - glRotatef (0.1 * (900), 1.0, 0.0, 0.0); - glTranslatef(0.0, -1.000000, 0.0); -} - -void draw_logo_shadow(void) { - - glTranslatef(5.500000, -3.500000, 4.500000); - - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_right(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -7.000000); - draw_double_cylinder(); - bend_forward(); - draw_elbow(); - glTranslatef(0.0, 0.0, -5.000000); - draw_single_cylinder(); - bend_left(); - draw_elbow(); -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/e.c b/lib/glut-3.7.6/progs/demos/ideas/e.c deleted file mode 100644 index 9f6b667e6f68980442e3d418ed599f50064f88c1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/e.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float e_data[][2] = { - {1.095436, 6.190871}, - {2.107884, 6.970954}, - {2.556017, 7.020747}, - {3.020747, 7.867220}, - {3.518672, 8.033195}, - {3.269710, 8.531120}, - {4.165975, 8.929461}, - {3.302905, 9.062241}, - {4.331950, 9.626556}, - {3.286307, 9.344398}, - {4.116183, 9.958507}, - {3.004149, 9.510373}, - {3.518672, 9.991701}, - {2.705394, 9.493776}, - {2.091286, 9.311203}, - {2.041494, 9.062241}, - {1.178423, 8.514523}, - {1.443983, 8.165976}, - {0.481328, 7.535270}, - {1.045643, 6.904564}, - {0.149378, 6.091286}, - {1.095436, 5.410789}, - {0.464730, 4.232365}, - {1.377593, 4.497925}, - {1.261411, 3.136930}, - {1.925311, 3.950207}, - {2.240664, 3.037344}, - {2.589212, 3.834025}, - {3.087137, 3.269710}, - {3.236515, 3.867220}, - {3.684647, 3.867220}, - {3.867220, 4.448133}, - {4.398340, 5.128631}, - -}; - -void draw_e(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(e_data[0]); - glVertex2fv(e_data[1]); - glVertex2fv(e_data[2]); - glVertex2fv(e_data[3]); - glVertex2fv(e_data[4]); - glVertex2fv(e_data[5]); - glVertex2fv(e_data[6]); - glVertex2fv(e_data[7]); - glVertex2fv(e_data[8]); - glVertex2fv(e_data[9]); - glVertex2fv(e_data[10]); - glVertex2fv(e_data[11]); - glVertex2fv(e_data[12]); - glVertex2fv(e_data[13]); - glVertex2fv(e_data[14]); - glVertex2fv(e_data[15]); - glVertex2fv(e_data[16]); - glVertex2fv(e_data[17]); - glVertex2fv(e_data[18]); - glVertex2fv(e_data[19]); - glVertex2fv(e_data[20]); - glVertex2fv(e_data[21]); - glVertex2fv(e_data[22]); - glVertex2fv(e_data[23]); - glVertex2fv(e_data[24]); - glVertex2fv(e_data[25]); - glVertex2fv(e_data[26]); - glVertex2fv(e_data[27]); - glVertex2fv(e_data[28]); - glVertex2fv(e_data[29]); - glVertex2fv(e_data[30]); - glVertex2fv(e_data[31]); - glVertex2fv(e_data[32]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(e_data[0]); - glVertex2fv(e_data[2]); - glVertex2fv(e_data[4]); - glVertex2fv(e_data[6]); - glVertex2fv(e_data[8]); - glVertex2fv(e_data[10]); - glVertex2fv(e_data[12]); - glVertex2fv(e_data[14]); - glVertex2fv(e_data[16]); - glVertex2fv(e_data[18]); - glVertex2fv(e_data[20]); - glVertex2fv(e_data[22]); - glVertex2fv(e_data[24]); - glVertex2fv(e_data[26]); - glVertex2fv(e_data[28]); - glVertex2fv(e_data[30]); - glVertex2fv(e_data[32]); - glVertex2fv(e_data[31]); - glVertex2fv(e_data[29]); - glVertex2fv(e_data[27]); - glVertex2fv(e_data[25]); - glVertex2fv(e_data[23]); - glVertex2fv(e_data[21]); - glVertex2fv(e_data[19]); - glVertex2fv(e_data[17]); - glVertex2fv(e_data[15]); - glVertex2fv(e_data[13]); - glVertex2fv(e_data[11]); - glVertex2fv(e_data[9]); - glVertex2fv(e_data[7]); - glVertex2fv(e_data[5]); - glVertex2fv(e_data[3]); - glVertex2fv(e_data[1]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/f.c b/lib/glut-3.7.6/progs/demos/ideas/f.c deleted file mode 100644 index 63bb886eb10b67ca63a2c1e83419a354d4d20c5d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/f.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float f_data[][2] = { - {0.157570-3.0, 0.105155-2.0}, - {1.820803-3.0, 0.736082-2.0}, - {2.030896-3.0, 0.525773-2.0}, - {2.731205-3.0, 1.507216-2.0}, - {2.906282-3.0, 1.139175-2.0}, - {3.378991-3.0, 2.611340-2.0}, - {4.009269-3.0, 3.014433-2.0}, - {4.429454-3.0, 5.730928-2.0}, - {5.042224-3.0, 5.783505-2.0}, - {5.269825-3.0, 10.252578-2.0}, - {6.092688-3.0, 10.708247-2.0}, - {5.917611-3.0, 12.758763-2.0}, - {6.915551-3.0, 13.635052-2.0}, - {6.565396-3.0, 14.388659-2.0}, - {7.370752-3.0, 14.686598-2.0}, - {7.003089-3.0, 15.159794-2.0}, - {7.720906-3.0, 15.300000-2.0}, - {7.633368-3.0, 15.668041-2.0}, - {8.403708-3.0, 15.930928-2.0}, - {9.401648-3.0, 16.596907-2.0}, - {9.261586-3.0, 16.211340-2.0}, - {9.874356-3.0, 16.719587-2.0}, - {10.136972-3.0, 16.228867-2.0}, - {10.469619-3.0, 16.789690-2.0}, - {10.854789-3.0, 16.228867-2.0}, - {11.064881-3.0, 16.667011-2.0}, - {11.169928-3.0, 16.369072-2.0}, - - {3.956746-3.0, 10.988660-2.0}, - {5.147271-3.0, 11.479382-2.0}, - {5.654995-3.0, 11.006186-2.0}, - {5.812564-3.0, 11.970103-2.0}, - {6.127703-3.0, 11.023711-2.0}, - {6.495366-3.0, 11.461856-2.0}, - {7.230690-3.0, 11.006186-2.0}, - {7.318229-3.0, 11.321650-2.0}, - {7.983522-3.0, 11.198969-2.0}, - {8.106076-3.0, 11.426805-2.0}, - {8.613800-3.0, 11.584537-2.0}, - -}; - -void draw_f(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(f_data[0]); - glVertex2fv(f_data[1]); - glVertex2fv(f_data[2]); - glVertex2fv(f_data[3]); - glVertex2fv(f_data[4]); - glVertex2fv(f_data[5]); - glVertex2fv(f_data[6]); - glVertex2fv(f_data[7]); - glVertex2fv(f_data[8]); - glVertex2fv(f_data[9]); - glVertex2fv(f_data[10]); - glVertex2fv(f_data[11]); - glVertex2fv(f_data[12]); - glVertex2fv(f_data[13]); - glVertex2fv(f_data[14]); - glVertex2fv(f_data[15]); - glVertex2fv(f_data[16]); - glVertex2fv(f_data[17]); - glVertex2fv(f_data[18]); - glVertex2fv(f_data[19]); - glVertex2fv(f_data[20]); - glVertex2fv(f_data[21]); - glVertex2fv(f_data[22]); - glVertex2fv(f_data[23]); - glVertex2fv(f_data[24]); - glVertex2fv(f_data[25]); - glVertex2fv(f_data[26]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(f_data[27]); - glVertex2fv(f_data[28]); - glVertex2fv(f_data[29]); - glVertex2fv(f_data[30]); - glVertex2fv(f_data[31]); - glVertex2fv(f_data[32]); - glVertex2fv(f_data[33]); - glVertex2fv(f_data[34]); - glVertex2fv(f_data[35]); - glVertex2fv(f_data[36]); - glVertex2fv(f_data[37]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(f_data[0]); - glVertex2fv(f_data[2]); - glVertex2fv(f_data[4]); - glVertex2fv(f_data[6]); - glVertex2fv(f_data[8]); - glVertex2fv(f_data[10]); - glVertex2fv(f_data[12]); - glVertex2fv(f_data[14]); - glVertex2fv(f_data[16]); - glVertex2fv(f_data[18]); - glVertex2fv(f_data[20]); - glVertex2fv(f_data[22]); - glVertex2fv(f_data[24]); - glVertex2fv(f_data[26]); - glVertex2fv(f_data[25]); - glVertex2fv(f_data[23]); - glVertex2fv(f_data[21]); - glVertex2fv(f_data[19]); - glVertex2fv(f_data[17]); - glVertex2fv(f_data[15]); - glVertex2fv(f_data[13]); - glVertex2fv(f_data[11]); - glVertex2fv(f_data[9]); - glVertex2fv(f_data[7]); - glVertex2fv(f_data[5]); - glVertex2fv(f_data[3]); - glVertex2fv(f_data[1]); - glVertex2fv(f_data[0]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(f_data[27]); - glVertex2fv(f_data[29]); - glVertex2fv(f_data[31]); - glVertex2fv(f_data[33]); - glVertex2fv(f_data[35]); - glVertex2fv(f_data[37]); - glVertex2fv(f_data[36]); - glVertex2fv(f_data[34]); - glVertex2fv(f_data[32]); - glVertex2fv(f_data[30]); - glVertex2fv(f_data[28]); - glVertex2fv(f_data[27]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/h.c b/lib/glut-3.7.6/progs/demos/ideas/h.c deleted file mode 100644 index 07c20bc98b0f4ff7183d85105cb1f79632b36534..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/h.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float h_data[][2] = { - {1.462963, 17.499485-3.0}, - {3.259259, 17.851700-3.0}, - {2.074074, 17.351185-3.0}, - {3.037037, 17.073120-3.0}, - {2.277778, 17.054583-3.0}, - {2.814815, 15.775489-3.0}, - {2.018518, 14.737384-3.0}, - {2.203704, 12.142121-3.0}, - {1.296296, 10.158600-3.0}, - {1.259259, 7.674562-3.0}, - {0.666667, 6.933059-3.0}, - {0.685185, 5.728116-3.0}, - {0.314815, 5.653965-3.0}, - {0.444444, 5.227601-3.0}, - {0.074074, 5.097837-3.0}, - - {1.611111, 9.824923-3.0}, - {1.333333, 8.527291-3.0}, - {2.240741, 10.937179-3.0}, - {2.500000, 10.992791-3.0}, - {2.888889, 11.771370-3.0}, - {3.314815, 11.845520-3.0}, - {3.462963, 12.253347-3.0}, - {3.740741, 12.067971-3.0}, - {4.500000, 12.846550-3.0}, - {4.148148, 12.030896-3.0}, - {5.185185, 12.883625-3.0}, - {4.296296, 11.771370-3.0}, - {5.351852, 12.420185-3.0}, - {4.333333, 11.196705-3.0}, - {5.129630, 10.955716-3.0}, - {4.129630, 9.583934-3.0}, - {4.203704, 7.192585-3.0}, - {3.518518, 6.414006-3.0}, - {4.129630, 6.469619-3.0}, - {3.537037, 5.765191-3.0}, - {4.296296, 6.061792-3.0}, - {3.851852, 5.171988-3.0}, - {4.722222, 5.802266-3.0}, - {4.277778, 5.060762-3.0}, - {5.314815, 5.894954-3.0}, - {5.148148, 5.431514-3.0}, - {5.777778, 6.098867-3.0}, - -}; - -void draw_h(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(h_data[0]); - glVertex2fv(h_data[1]); - glVertex2fv(h_data[2]); - glVertex2fv(h_data[3]); - glVertex2fv(h_data[4]); - glVertex2fv(h_data[5]); - glVertex2fv(h_data[6]); - glVertex2fv(h_data[7]); - glVertex2fv(h_data[8]); - glVertex2fv(h_data[9]); - glVertex2fv(h_data[10]); - glVertex2fv(h_data[11]); - glVertex2fv(h_data[12]); - glVertex2fv(h_data[13]); - glVertex2fv(h_data[14]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(h_data[15]); - glVertex2fv(h_data[16]); - glVertex2fv(h_data[17]); - glVertex2fv(h_data[18]); - glVertex2fv(h_data[19]); - glVertex2fv(h_data[20]); - glVertex2fv(h_data[21]); - glVertex2fv(h_data[22]); - glVertex2fv(h_data[23]); - glVertex2fv(h_data[24]); - glVertex2fv(h_data[25]); - glVertex2fv(h_data[26]); - glVertex2fv(h_data[27]); - glVertex2fv(h_data[28]); - glVertex2fv(h_data[29]); - glVertex2fv(h_data[30]); - glVertex2fv(h_data[31]); - glVertex2fv(h_data[32]); - glVertex2fv(h_data[33]); - glVertex2fv(h_data[34]); - glVertex2fv(h_data[35]); - glVertex2fv(h_data[36]); - glVertex2fv(h_data[37]); - glVertex2fv(h_data[38]); - glVertex2fv(h_data[39]); - glVertex2fv(h_data[40]); - glVertex2fv(h_data[41]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(h_data[0]); - glVertex2fv(h_data[2]); - glVertex2fv(h_data[4]); - glVertex2fv(h_data[6]); - glVertex2fv(h_data[8]); - glVertex2fv(h_data[10]); - glVertex2fv(h_data[12]); - glVertex2fv(h_data[14]); - glVertex2fv(h_data[13]); - glVertex2fv(h_data[11]); - glVertex2fv(h_data[9]); - glVertex2fv(h_data[7]); - glVertex2fv(h_data[5]); - glVertex2fv(h_data[3]); - glVertex2fv(h_data[1]); - glVertex2fv(h_data[0]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(h_data[15]); - glVertex2fv(h_data[17]); - glVertex2fv(h_data[19]); - glVertex2fv(h_data[21]); - glVertex2fv(h_data[23]); - glVertex2fv(h_data[25]); - glVertex2fv(h_data[27]); - glVertex2fv(h_data[29]); - glVertex2fv(h_data[31]); - glVertex2fv(h_data[33]); - glVertex2fv(h_data[35]); - glVertex2fv(h_data[37]); - glVertex2fv(h_data[39]); - glVertex2fv(h_data[41]); - glVertex2fv(h_data[40]); - glVertex2fv(h_data[38]); - glVertex2fv(h_data[36]); - glVertex2fv(h_data[34]); - glVertex2fv(h_data[32]); - glVertex2fv(h_data[30]); - glVertex2fv(h_data[28]); - glVertex2fv(h_data[26]); - glVertex2fv(h_data[24]); - glVertex2fv(h_data[22]); - glVertex2fv(h_data[20]); - glVertex2fv(h_data[18]); - glVertex2fv(h_data[16]); - glVertex2fv(h_data[15]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/i.c b/lib/glut-3.7.6/progs/demos/ideas/i.c deleted file mode 100644 index 209c2614c7afa24d29f97bb07c9e8dc491edfe8d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/i.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float i_data[][2] = { - {0.548767, 9.414791}, - {2.795284, 9.757771}, - {1.457663, 9.311897}, - {2.503751, 9.157557}, - {1.714898, 8.986067}, - {2.109325, 7.785638}, - {1.286174, 7.013934}, - {1.800643, 6.070740}, - {0.994641, 5.161843}, - {1.783494, 4.767417}, - {0.943194, 4.167202}, - {1.852090, 4.304394}, - {1.063237, 3.549839}, - {2.023580, 3.978564}, - {1.406217, 3.172562}, - {2.315113, 3.875670}, - {2.006431, 3.018221}, - {2.812433, 3.944266}, - {2.726688, 3.429796}, - {3.258307, 4.132905}, - - {1.989282, 10.923902}, - {2.778135, 12.295820}, - {2.966774, 11.678456}, - {3.687031, 12.947481}, - -}; - - -void draw_i(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(i_data[0]); - glVertex2fv(i_data[1]); - glVertex2fv(i_data[2]); - glVertex2fv(i_data[3]); - glVertex2fv(i_data[4]); - glVertex2fv(i_data[5]); - glVertex2fv(i_data[6]); - glVertex2fv(i_data[7]); - glVertex2fv(i_data[8]); - glVertex2fv(i_data[9]); - glVertex2fv(i_data[10]); - glVertex2fv(i_data[11]); - glVertex2fv(i_data[12]); - glVertex2fv(i_data[13]); - glVertex2fv(i_data[14]); - glVertex2fv(i_data[15]); - glVertex2fv(i_data[16]); - glVertex2fv(i_data[17]); - glVertex2fv(i_data[18]); - glVertex2fv(i_data[19]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(i_data[20]); - glVertex2fv(i_data[21]); - glVertex2fv(i_data[22]); - glVertex2fv(i_data[23]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(i_data[0]); - glVertex2fv(i_data[2]); - glVertex2fv(i_data[4]); - glVertex2fv(i_data[6]); - glVertex2fv(i_data[8]); - glVertex2fv(i_data[10]); - glVertex2fv(i_data[12]); - glVertex2fv(i_data[14]); - glVertex2fv(i_data[16]); - glVertex2fv(i_data[18]); - glVertex2fv(i_data[19]); - glVertex2fv(i_data[17]); - glVertex2fv(i_data[15]); - glVertex2fv(i_data[13]); - glVertex2fv(i_data[11]); - glVertex2fv(i_data[9]); - glVertex2fv(i_data[7]); - glVertex2fv(i_data[5]); - glVertex2fv(i_data[3]); - glVertex2fv(i_data[1]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(i_data[20]); - glVertex2fv(i_data[22]); - glVertex2fv(i_data[23]); - glVertex2fv(i_data[21]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/ideas.c b/lib/glut-3.7.6/progs/demos/ideas/ideas.c deleted file mode 100644 index ae54438f2cabdfb8db37ec73c0bf0184de863d46..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/ideas.c +++ /dev/null @@ -1,1056 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1995. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include -#ifdef _WIN32 -#include -#include -#include -#define gettimeofday(_x, _y) \ -{ \ - struct timeb _t; \ - ftime(&_t); \ - (_x)->tv_sec = _t.time; \ - (_x)->tv_usec = _t.millitm * 1000; \ -} -#else -#include -#endif -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#include -#include -#include "objects.h" -#include - -#define X 0 -#define Y 1 -#define Z 2 - -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -#define DEG *M_PI/180.0 -#define RAD *180.0/M_PI - -float move_speed; /* Spline distance per second */ - -int multisample = 0; /* Antialias polygons? */ -int doublebuffer = 1; /* Doublebuffer? */ - - -#define SPEED_SLOW 0.2 /* Spline distances per second */ -#define SPEED_MEDIUM 0.4 -#define SPEED_FAST 0.7 -#define SPEED_SUPER_FAST 1.0 - -#define O_NOMS 7 -#define O_4MS 8 -#define O_8MS 9 -#define O_16MS 10 - -static int RGBA_SB_attributes = GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE; - -static int RGBA_DB_attributes = GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE; - -float light1_ambient[] = { 0.0,0.0,0.0,1.0 }; -float light1_lcolor[] = { 1.0,1.0,1.0,1.0 }; -float light1_position[] = { 0.0,1.0,0.0,0.0 }; - -float light2_ambient[] = { 0.0,0.0,0.0,1.0 }; -float light2_lcolor[] = { 0.3,0.3,0.5,1.0 }; -float light2_position[] = { -1.0,0.0,0.0,0.0 }; - -float light3_ambient[] = { 0.2,0.2,0.2,1.0 }; -float light3_lcolor[] = { 0.2,0.2,0.2,1.0 }; -float light3_position[] = { 0.0,-1.0,0.0,0.0 }; - -float lmodel_LVW[] = { 0.0 }; -float lmodel_ambient[] = { 0.3,0.3,0.3,1.0 }; -float lmodel_TWO[] = { GL_TRUE }; - -float mat_logo_ambient[] = {0.1, 0.1, 0.1, 1.0}; -float mat_logo_diffuse[] = {0.5, 0.4, 0.7, 1.0}; -float mat_logo_specular[] = {1.0, 1.0, 1.0, 1.0}; -float mat_logo_shininess[] = {30.0}; - -float mat_holder_base_ambient[] = {0.0, 0.0, 0.0, 1.0}; -float mat_holder_base_diffuse[] = {0.6, 0.6, 0.6, 1.0}; -float mat_holder_base_specular[] = {0.8, 0.8, 0.8, 1.0}; -float mat_holder_base_shininess[] = {30.0}; - -float mat_holder_rings_ambient[] = { 0.0,0.0,0.0,1.0 }; -float mat_holder_rings_diffuse[] = { 0.9,0.8,0.0,1.0 }; -float mat_holder_rings_specular[] = { 1.0,1.0,1.0,1.0 }; -float mat_holder_rings_shininess[] = { 30.0 }; - -float mat_hemisphere_ambient[] = {0.0, 0.0, 0.0,1.0 }; -float mat_hemisphere_diffuse[] = {1.0, 0.2, 0.2,1.0 }; -float mat_hemisphere_specular[] = {0.5, 0.5, 0.5,1.0 }; -float mat_hemisphere_shininess[] = {20.0}; - -GLubyte stipple[32*32]; - -typedef float vector[3]; -typedef float vector4[4]; -typedef vector parameter[4]; - -/* - * Function definitions - */ -static void initialize(void); -static void resize_window(int w, int h); -static void build_table(void); -static parameter *calc_spline_params(vector *ctl_pts, int n); -static void calc_spline(vector v, parameter *params, float current_time); -static void normalize(vector v); -static float dot(vector v1, vector v2); -void draw_table(void); -void draw_logo_shadow(void); -void draw_hemisphere(void); -void draw_logo(void); -void draw_under_table(void); -void draw_i(void); -void draw_d(void); -void draw_e(void); -void draw_a(void); -void draw_s(void); -void draw_n(void); -void draw_m(void); -void draw_o(void); -void draw_t(void); - -int post_idle = 0; -static void idle(void); -static void do_post_idle(void); -static void display(void); -static void mouse(int b, int s, int x, int y); -static void keyboard(unsigned char c, int x, int y); -static void vis(int); - -static void init_materials(void) { - int x, y; - - /* Stipple pattern */ - for (y = 0; y < 32; y++) - for (x = 0; x < 4; x++) - stipple[y * 4 + x] = (y % 2) ? 0xaa : 0x55; - - glNewList(MAT_LOGO, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_logo_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_logo_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_logo_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_logo_shininess); - glEndList(); - - glNewList( MAT_HOLDER_BASE, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_holder_base_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_holder_base_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_holder_base_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_holder_base_shininess); - glEndList(); - - glNewList(MAT_HOLDER_RINGS, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_holder_rings_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_holder_rings_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_holder_rings_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_holder_rings_shininess); - glEndList(); - - glNewList(MAT_HEMISPHERE, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_hemisphere_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_hemisphere_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_hemisphere_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_hemisphere_shininess); - glEndList(); - -} - -void init_lights(void) { - static float ambient[] = { 0.1, 0.1, 0.1, 1.0 }; - static float diffuse[] = { 0.5, 1.0, 1.0, 1.0 }; - static float position[] = { 90.0, 90.0, 150.0, 0.0 }; - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glLightfv (GL_LIGHT1, GL_AMBIENT, light1_ambient); - glLightfv (GL_LIGHT1, GL_SPECULAR, light1_lcolor); - glLightfv (GL_LIGHT1, GL_DIFFUSE, light1_lcolor); - glLightfv (GL_LIGHT1, GL_POSITION, light1_position); - - glLightfv (GL_LIGHT2, GL_AMBIENT, light2_ambient); - glLightfv (GL_LIGHT2, GL_SPECULAR, light2_lcolor); - glLightfv (GL_LIGHT2, GL_DIFFUSE, light2_lcolor); - glLightfv (GL_LIGHT2, GL_POSITION, light2_position); - - glLightfv (GL_LIGHT3, GL_AMBIENT, light3_ambient); - glLightfv (GL_LIGHT3, GL_SPECULAR, light3_lcolor); - glLightfv (GL_LIGHT3, GL_DIFFUSE, light3_lcolor); - glLightfv (GL_LIGHT3, GL_POSITION, light3_position); - - glLightModelfv (GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_LVW); - glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); -} - -short dev, val; - -float current_time=0.0; -float hold_time=0.0; /* Used when auto-running */ - -float tmplight[] = { - GL_POSITION, 0.0, 0.0, 0.0, 0.0, -}; - -GLfloat tv[4][4] = { - {1.0, 0.0, 0.0, 0.0}, - {0.0, 1.0, 0.0, -1.0}, - {0.0, 0.0, 1.0, 0.0}, - {0.0, 0.0, 0.0, 0.0}, -}; - -#define TABLERES 12 - -float pcr, pcg, pcb, pca; - -vector table_points[TABLERES+1][TABLERES+1]; -GLubyte tablecolors[TABLERES+1][TABLERES+1]; - -vector paper_points[4] = { - {-0.8, 0.0, 0.4}, - {-0.2, 0.0, -1.4}, - {1.0, 0.0, -1.0}, - {0.4, 0.0, 0.8}, -}; - -float dot(vector, vector); - -#define TIME 15 -#define START_TIME 0.6 - -vector light_pos_ctl[] = { - - {0.0, 1.8, 0.0}, - {0.0, 1.8, 0.0}, - {0.0, 1.6, 0.0}, - - {0.0, 1.6, 0.0}, - {0.0, 1.6, 0.0}, - {0.0, 1.6, 0.0}, - {0.0, 1.4, 0.0}, - - {0.0, 1.3, 0.0}, - {-0.2, 1.5, 2.0}, - {0.8, 1.5, -0.4}, - {-0.8, 1.5, -0.4}, - - {0.8, 2.0, 1.0}, - {1.8, 5.0, -1.8}, - {8.0, 10.0, -4.0}, - {8.0, 10.0, -4.0}, - {8.0, 10.0, -4.0}, -}; - -vector logo_pos_ctl[] = { - - {0.0, -0.5, 0.0}, - - {0.0, -0.5, 0.0}, - {0.0, -0.5, 0.0}, - - {0.0, -0.5, 0.0}, - {0.0, -0.5, 0.0}, - {0.0, -0.5, 0.0}, - {0.0, 0.0, 0.0}, - - {0.0, 0.6, 0.0}, - {0.0, 0.75, 0.0}, - {0.0, 0.8, 0.0}, - {0.0, 0.8, 0.0}, - - {0.0, 0.5, 0.0}, - {0.0, 0.5, 0.0}, - {0.0, 0.5, 0.0}, - {0.0, 0.5, 0.0}, - {0.0, 0.5, 0.0}, -}; - - -vector logo_rot_ctl[] = { - - {0.0, 0.0, -18.4}, - - {0.0, 0.0, -18.4}, - {0.0, 0.0, -18.4}, - - {0.0, 0.0, -18.4}, - {0.0, 0.0, -18.4}, - {0.0, 0.0, -18.4}, - {0.0, 0.0, -18.4}, - {0.0, 0.0, -18.4}, - -/* {90.0, 0.0, -90.0}, - {180.0, 180.0, 90.0}, */ - {240.0, 360.0, 180.0}, - {90.0, 180.0, 90.0}, - - {11.9, 0.0, -18.4}, - {11.9, 0.0, -18.4}, - {11.9, 0.0, -18.4}, - {11.9, 0.0, -18.4}, - {11.9, 0.0, -18.4}, -}; - - -vector view_from_ctl[] = { - - {-1.0, 1.0, -4.0}, - - {-1.0, -3.0, -4.0}, /* 0 */ - {-3.0, 1.0, -3.0}, /* 1 */ - - {-1.8, 2.0, 5.4}, /* 2 */ - {-0.4, 2.0, 1.2}, /* 3 */ - {-0.2, 1.5, 0.6}, /* 4 */ - {-0.2, 1.2, 0.6}, /* 5 */ - - {-0.8, 1.0, 2.4}, /* 6 */ - {-1.0, 2.0, 3.0}, /* 7 */ - {0.0, 4.0, 3.6}, /* 8 */ - {-0.8, 4.0, 1.2}, /* 9 */ - - {-0.2, 3.0, 0.6}, /* 10 */ - {-0.1, 2.0, 0.3}, /* 11 */ - {-0.1, 2.0, 0.3}, /* 12 */ - {-0.1, 2.0, 0.3}, /* 13 */ - {-0.1, 2.0, 0.3}, /* 13 */ - - -}; - -vector view_to_ctl[] = { - - {-1.0, 1.0, 0.0}, - - {-1.0, -3.0, 0.0}, - {-1.0, 1.0, 0.0}, - - {0.1, 0.0, -0.3}, - {0.1, 0.0, -0.3}, - {0.1, 0.0, -0.3}, - {0.0, 0.2, 0.0}, - - {0.0, 0.6, 0.0}, - {0.0, 0.8, 0.0}, - {0.0, 0.8, 0.0}, - {0.0, 0.8, 0.0}, - - {0.0, 0.8, 0.0}, - {0.0, 0.8, 0.0}, - {0.0, 0.8, 0.0}, - {0.0, 0.8, 0.0}, - {0.0, 0.8, 0.0}, - -}; - - -vector view_from, view_to, logo_pos, logo_rot; -vector4 light_pos; - -parameter *view_from_spline, *view_to_spline, - *light_pos_spline, *logo_pos_spline, - *logo_rot_spline; - -double a3, a4; - -void ideas_usage(void) -{ - fprintf(stderr, "Usage: ideas [-a] [-m] [-d] -s{1-4}\n"); - fprintf(stderr, "Press ESC to quit, 1-4 to control speed, any other key\n"); - fprintf(stderr, "to pause.\n"); -} - - int auto_run; /* If set, then automatically run forever */ - float new_speed; /* Set new animation speed? */ - int timejerk; /* Set to indicate time jerked! (menu pulled down) */ - int paused = 0; /* Paused? */ - int right = 0; /* Draw right eye? */ - int resetclock; /* Reset the clock? */ - float timeoffset; /* Used to compute timing */ - struct timeval start; - -int main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - - auto_run = 0; /* Don't automatically run forever */ - /* .4 spline distance per second by default */ - move_speed = SPEED_MEDIUM; - new_speed = SPEED_MEDIUM; - timeoffset = START_TIME; - - for (i = 1; i < argc; i++) { - if (argv[i][0] != '-') { - break; - } - - switch(argv[i][1]) { - case 'a': /* Keep running forever */ - auto_run = 1; - break; - case 'm': /* Multisample */ - multisample = 1; - break; - case 'd': /* Single buffer */ - doublebuffer = 0; - break; - case 's': - switch(argv[i][2]) { - case '1': - move_speed = new_speed = SPEED_SLOW; - break; - case '2': - move_speed = new_speed = SPEED_MEDIUM; - break; - case '3': - move_speed = new_speed = SPEED_FAST; - break; - case '4': - move_speed = new_speed = SPEED_SUPER_FAST; - break; - } - break; - default: - ideas_usage(); - break; - } - } - - initialize(); - - current_time = timeoffset; - resetclock = 1; - timejerk = 0; - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -static void idle(void) -{ - if ((current_time) > (TIME*1.0)-3.0) { - if (auto_run) { - hold_time += current_time - (TIME - 3.001); - if (hold_time > 3.0) { /* 3 second hold */ - hold_time = 0.0; - resetclock = 1; - } - } else { - if(!resetclock) glutIdleFunc(NULL); - } - current_time = (TIME*1.0)-3.001; - } else { - post_idle = 1; - } - glutPostRedisplay(); -} - -/* ARGSUSED2 */ -static void -mouse(int b, int s, int x, int y) -{ - if(b == GLUT_LEFT_BUTTON && s == GLUT_DOWN) { - resetclock = 1; - paused = 0; - glutIdleFunc(idle); - } -} - -/* ARGSUSED1 */ -static void -keyboard(unsigned char c, int x, int y) -{ - switch(c) { - case 27: - exit(0); - break; - case '1': - new_speed = SPEED_SLOW; - break; - case '2': - new_speed = SPEED_MEDIUM; - break; - case '3': - new_speed = SPEED_FAST; - break; - case '4': - new_speed = SPEED_SUPER_FAST; - break; - default: - if (paused) timejerk = 1; - paused = ~paused; - if(paused) { - glutIdleFunc(NULL); - } else { - glutIdleFunc(idle); - } - } -} - -static void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if(!paused) glutIdleFunc(idle); - do_post_idle(); - } else { - if(!paused) glutIdleFunc(NULL); - } -} - -static void display(void) -{ - float x, y, z, c; - - calc_spline(view_from, view_from_spline, current_time); - calc_spline(view_to, view_to_spline, current_time); - calc_spline(light_pos, light_pos_spline, current_time); - light_pos[3] = 0.0; - calc_spline(logo_pos, logo_pos_spline, current_time); - calc_spline(logo_rot, logo_rot_spline, current_time); - - tmplight[1] = light_pos[X] - logo_pos[X]; - tmplight[2] = light_pos[Y] - logo_pos[Y]; - tmplight[3] = light_pos[Z] - logo_pos[Z]; - - glNewList(LIGHT_TMP, GL_COMPILE); - glMaterialf(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, * tmplight); - glEndList(); - - tv[0][0] = tv[1][1] = tv[2][2] = light_pos[Y]; - - glColor3ub(0, 0, 0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* - * SHADOW - */ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(view_from[X], view_from[Y], view_from[Z], - view_to[X], view_to[Y], view_to[Z], - 0.0, 1.0, 0.0); - - if (view_from[Y] > 0.0) draw_table(); - - glEnable(GL_CULL_FACE); - glDisable(GL_DEPTH_TEST); - - if (logo_pos[Y] < 0.0) { - - if (logo_pos[Y]>-0.33) { - /* We're emerging from the table */ - c = 1.0 - (logo_pos[Y]) / -0.33; - pca /= 4.0; - glColor3ub((GLubyte)(128.0*(1.0-c)*0.5 + 255.0*pca*c), - (GLubyte)(102.0*(1.0-c)*0.5 + 255.0*pca*c), - (GLubyte)(179.0*(1.0-c)*0.5 + 200.0*pca*c)); - } else { - /* Still under table */ - glColor3ub(128/2, 102/2, 179/2); - } - - glPushMatrix(); - glScalef(0.04, 0.0, 0.04); - glRotatef(0.1 * (-900), 1.0, 0.0, 0.0); - glRotatef(0.1 * ((int)(10.0*logo_rot[Z])), 0.0, 0.0, 1.0); - glRotatef(0.1 * ((int)(10.0*logo_rot[Y])), 0.0, 1.0, 0.0); - glRotatef(0.1 * ((int)(10.0*logo_rot[X])), 1.0, 0.0, 0.0); - glRotatef(0.1 * (353), 1.0, 0.0, 0.0); - glRotatef(0.1 * (450), 0.0, 1.0, 0.0); - draw_logo_shadow(); - glPopMatrix(); - } - - if (logo_pos[Y] > 0.0) { - glPushMatrix(); - if (logo_pos[Y]<0.33) { - pca /= 4.0; - c = 1.0 - (logo_pos[Y])/0.33; - glColor3ub((GLubyte)(255.0*pca*c), - (GLubyte)(255.0*pca*c), - (GLubyte)(200.0*pca*c)); - } else { - glColor3ub(0, 0, 0); - } - - glTranslatef(light_pos[X], light_pos[Y], light_pos[Z]); - glMultMatrixf(&tv[0][0]); - glTranslatef(-light_pos[X]+logo_pos[X], - -light_pos[Y]+logo_pos[Y], - -light_pos[Z]+logo_pos[Z]); - glScalef(0.04, 0.04, 0.04); - glRotatef (0.1 * (-900), 1.0, 0.0, 0.0); - glRotatef (0.1 * ((int)(10.0*logo_rot[Z])), 0.0, 0.0, 1.0); - glRotatef (0.1 * ((int)(10.0*logo_rot[Y])), 0.0, 1.0, 0.0); - glRotatef (0.1 * ((int)(10.0*logo_rot[X])), 1.0, 0.0, 0.0); - glRotatef (0.1 * (353), 1.0, 0.0, 0.0); - glRotatef (0.1 * (450), 0.0, 1.0, 0.0); - - - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple); - draw_logo_shadow(); - glDisable(GL_POLYGON_STIPPLE); - glPopMatrix(); - } - /* - * DONE SHADOW - */ - - - glEnable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(.1*(450), 5.0/4.0, 0.5, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - gluLookAt(view_from[X], view_from[Y], view_from[Z], - view_to[X], view_to[Y], view_to[Z], - 0.0, 1.0, 0.0); - - glCallList( MAT_HOLDER_RINGS); - - glPushMatrix(); - glTranslatef(light_pos[X], light_pos[Y], light_pos[Z]); - glScalef(0.1, 0.1, 0.1); - - x = light_pos[X] - logo_pos[X]; - y = light_pos[Y] - logo_pos[Y]; - z = light_pos[Z] - logo_pos[Z]; - - if (x!=0.0) { - a3 = -atan2(z, x)*10.0 RAD; - } else a3 = 0.0; - - a4 = -atan2(sqrt(x*x + z*z), y)*10.0 RAD; - - glRotatef (0.1 * ((int)a3), 0.0, 1.0, 0.0); - glRotatef (0.1 * ((int)a4), 0.0, 0.0, 1.0); - glRotatef (0.1 * (-900), 1.0, 0.0, 0.0); - - glEnable(GL_LIGHT2); - glEnable(GL_LIGHT3); - glCallList(MAT_HEMISPHERE); - glEnable(GL_NORMALIZE); - draw_hemisphere(); - glDisable(GL_NORMALIZE); - glPopMatrix(); - - glDisable(GL_LIGHT2); - glDisable(GL_LIGHT3); - glEnable(GL_LIGHT1); - glLightfv(GL_LIGHT1, GL_POSITION, light_pos); - - if (logo_pos[Y] > -0.33) { - - glCallList(MAT_LOGO); - - glPushMatrix(); - glTranslatef(logo_pos[X], logo_pos[Y], logo_pos[Z]); - glScalef(0.04, 0.04, 0.04); - glRotatef (0.1 * (-900), 1.0, 0.0, 0.0); - glRotatef (0.1 * ((int)(10.0*logo_rot[Z])), 0.0, 0.0, 1.0); - glRotatef (0.1 * ((int)(10.0*logo_rot[Y])), 0.0, 1.0, 0.0); - glRotatef (0.1 * ((int)(10.0*logo_rot[X])), 1.0, 0.0, 0.0); - glRotatef (0.1 * (353), 1.0, 0.0, 0.0); - glRotatef (0.1 * (450), 0.0, 1.0, 0.0); - glEnable(GL_LIGHTING); - draw_logo(); - glPopMatrix(); - } - - if (view_from[Y] < 0.0) draw_under_table(); - - glutSwapBuffers(); - - if(post_idle) do_post_idle(); -} - -static void do_post_idle(void) -{ - struct timeval current; - float timediff; - - /* Time jerked -- adjust clock appropriately */ - if (timejerk) { - timejerk = 0; - timeoffset = current_time; - gettimeofday(&start, NULL); - } - - /* Reset our timer */ - if (resetclock) { - resetclock = 0; - paused = 0; - timeoffset = START_TIME; - gettimeofday(&start, NULL); - } - - /* Compute new time */ - gettimeofday(¤t, NULL); - timediff = (current.tv_sec - start.tv_sec) + - ((double) (current.tv_usec - start.tv_usec)) / 1000000.0; - if (!paused) { - current_time = timediff * move_speed + timeoffset; - } - - /* Adjust to new speed */ - if (new_speed != move_speed) { - move_speed = new_speed; - timeoffset = current_time; - gettimeofday(&start, NULL); - } - post_idle = 0; -} - -static void resize_window(int w, int h) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective (45.0, 5.0/4.0, 0.5, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glViewport(0, 0, w, h); -} - -static void initialize(void) -{ - int attr; - - attr = doublebuffer ? RGBA_DB_attributes : RGBA_SB_attributes; - glutInitDisplayMode(attr); - glutInitWindowSize(640, 480); - glutCreateWindow("Ideas"); - - if (multisample) glEnable(GL_POLYGON_SMOOTH); - - init_lights(); - init_materials(); - - build_table(); - - view_from_spline = calc_spline_params(view_from_ctl, TIME); - view_to_spline = calc_spline_params(view_to_ctl, TIME); - light_pos_spline = calc_spline_params(light_pos_ctl, TIME); - logo_pos_spline = calc_spline_params(logo_pos_ctl, TIME); - logo_rot_spline = calc_spline_params(logo_rot_ctl, TIME); - - glutReshapeFunc(resize_window); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); - glutVisibilityFunc(vis); - - glMatrixMode(GL_MODELVIEW); -} - - -static void build_table(void) -{ - float i, j; - - for (j=0.0; j<=TABLERES*1.0; j+=1.0) { - for (i=0.0; i<=TABLERES*1.0; i+=1.0) { - table_points[(int)j][(int)i][Z] = (i-TABLERES*1.0/2.0)/2.0; - table_points[(int)j][(int)i][X] = (j-TABLERES*1.0/2.0)/2.0; - table_points[(int)j][(int)i][Y] = 0.0; - } - } -} - - -void draw_table(void) -{ - float c; - int i, j; - int k, l; - float ov[3], lv[3]; - - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - - ov[X] = light_pos[X]-logo_pos[X]; - ov[Y] = light_pos[Y]-logo_pos[Y]; - ov[Z] = light_pos[Z]-logo_pos[Z]; - - normalize(ov); - - for (j=0; j<=TABLERES; j++) { - for (i=0; i<=TABLERES; i++) { - lv[X] = light_pos[X] - table_points[j][i][X]; - lv[Y] = light_pos[Y] - table_points[j][i][Y]; - lv[Z] = light_pos[Z] - table_points[j][i][Z]; - normalize(lv); - if ((c = dot(lv, ov))<0.0) c = 0.0; - c = c * c * c * lv[Y] * 255.0; - /* fade */ - if ((current_time>TIME-5.0) && (current_time-0.33 && logo_pos[Y]<0.33) { - glEnable(GL_DEPTH_TEST); - } - - pca = 0.0; - glBegin(GL_POLYGON); - for (i=0; i<4; i++) { - lv[X] = light_pos[X] - paper_points[i][X]; - lv[Y] = light_pos[Y] - paper_points[i][Y]; - lv[Z] = light_pos[Z] - paper_points[i][Z]; - normalize(lv); - if ((c = dot(lv, ov))<0.0) c = 0.0; - c = c * c * c * lv[Y]; - /* fade */ - if ((current_time>TIME-5.0) && (current_timeTIME*1.0-5.0) { - c = (current_time-(TIME*1.0-5.0))/2.0; - glColor3ub((GLubyte)(c*255.0), (GLubyte)(c*255.0), (GLubyte)(c*255.0)); - } else glColor3ub(0, 0, 0); - - glDisable(GL_DEPTH_TEST); - - draw_i(); - glTranslatef(3.0, 0.0, 0.0); - - draw_d(); - glTranslatef(6.0, 0.0, 0.0); - - draw_e(); - glTranslatef(5.0, 0.0, 0.0); - - draw_a(); - glTranslatef(6.0, 0.0, 0.0); - - draw_s(); - glTranslatef(10.0, 0.0, 0.0); - - draw_i(); - glTranslatef(3.0, 0.0, 0.0); - - draw_n(); - glTranslatef(-31.0, -13.0, 0.0); - - draw_m(); - glTranslatef(10.0, 0.0, 0.0); - - draw_o(); - glTranslatef(5.0, 0.0, 0.0); - - draw_t(); - glTranslatef(4.0, 0.0, 0.0); - - draw_i(); - glTranslatef(3.5, 0.0, 0.0); - - draw_o(); - glTranslatef(5.0, 0.0, 0.0); - - draw_n(); - - glPopMatrix(); - -} - - - -void draw_under_table(void) -{ - int k, l; - - glDisable(GL_DEPTH_TEST); - - - glColor3ub(0, 0, 0); - - for (l=0; l= (TIME - 3)) { - ti = TIME - 4; - } - - for (i=0; i<3; i++) { - v[i] = params[ti][3][i] + - params[ti][2][i] * t + - params[ti][1][i] * t * t + - params[ti][0][i] * t * t * t; - } - -} - -static parameter *calc_spline_params(vector *ctl_pts, int n) -{ - - int i, j; - parameter *params; - - if (n<4) { - fprintf(stderr, - "calc_spline_params: not enough control points\n"); - return (NULL); - } - - params = (parameter *)malloc(sizeof(parameter) * (n-3)); - - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ideas - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ideas.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ideas.mak" CFG="ideas - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ideas - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ideas - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ideas - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ideas - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "ideas - Win32 Release" -# Name "ideas - Win32 Debug" -# Begin Source File - -SOURCE=.\a.c -# End Source File -# Begin Source File - -SOURCE=.\b.c -# End Source File -# Begin Source File - -SOURCE=.\d.c -# End Source File -# Begin Source File - -SOURCE=.\draw_holder.c -# End Source File -# Begin Source File - -SOURCE=.\draw_lamp.c -# End Source File -# Begin Source File - -SOURCE=.\draw_logo.c -# End Source File -# Begin Source File - -SOURCE=.\draw_logo_line.c -# End Source File -# Begin Source File - -SOURCE=.\draw_logo_shadow.c -# End Source File -# Begin Source File - -SOURCE=.\e.c -# End Source File -# Begin Source File - -SOURCE=.\f.c -# End Source File -# Begin Source File - -SOURCE=.\h.c -# End Source File -# Begin Source File - -SOURCE=.\i.c -# End Source File -# Begin Source File - -SOURCE=.\ideas.c -# End Source File -# Begin Source File - -SOURCE=.\m.c -# End Source File -# Begin Source File - -SOURCE=.\n.c -# End Source File -# Begin Source File - -SOURCE=.\o.c -# End Source File -# Begin Source File - -SOURCE=.\objects.h -# End Source File -# Begin Source File - -SOURCE=.\p.c -# End Source File -# Begin Source File - -SOURCE=.\r.c -# End Source File -# Begin Source File - -SOURCE=.\s.c -# End Source File -# Begin Source File - -SOURCE=.\t.c -# End Source File -# Begin Source File - -SOURCE=.\w.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/ideas/m.c b/lib/glut-3.7.6/progs/demos/ideas/m.c deleted file mode 100644 index 1ce138fa1b5a8b77fe44c4a43ea3b2d37cca181f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/m.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float m_data[][2] = { - {0.590769, 9.449335}, - {2.116923, 9.842375}, - {1.362051, 9.383828}, - {2.527179, 9.825998}, - {1.591795, 9.072672}, - {2.789744, 9.514841}, - {1.690256, 8.663255}, - {2.658462, 8.335722}, - {1.575385, 7.222108}, - {2.067692, 6.255886}, - {0.918974, 4.028659}, - {1.050256, 3.013306}, - {0.705641, 3.013306}, - - {2.018461, 6.386899}, - {1.788718, 5.617196}, - {2.921026, 7.991812}, - {3.167180, 8.008188}, - {3.544615, 8.827022}, - {3.872821, 8.843398}, - {4.414359, 9.547595}, - {4.447179, 9.056294}, - {5.120000, 9.891504}, - {4.841026, 8.843398}, - {5.825641, 9.809621}, - {5.005128, 8.040941}, - {5.989744, 8.761515}, - {4.906667, 6.714432}, - {5.595897, 7.123848}, - {3.987692, 2.996929}, - {4.348718, 2.996929}, - - {5.218462, 5.977482}, - {5.251282, 6.354146}, - {6.449231, 7.893552}, - {6.400000, 8.221085}, - {7.302564, 8.843398}, - {7.351795, 9.334698}, - {7.827693, 9.154554}, - {8.008205, 9.842375}, - {8.139487, 9.121801}, - {8.795897, 9.973388}, - {8.402051, 8.728762}, - {9.337436, 9.531218}, - {8.402051, 8.040941}, - {9.288205, 8.433982}, - {7.745641, 5.813715}, - {8.320000, 5.928352}, - {7.286154, 4.012282}, - {7.991795, 4.126919}, - {7.499487, 3.357216}, - {8.533334, 3.766633}, - {8.123077, 3.062436}, - {8.927179, 3.832139}, - {8.910769, 3.340839}, - {9.550769, 4.126919}, - -}; - -void draw_m(void) { - - glBegin(GL_LINE_STRIP); - glVertex2fv(m_data[0]); - glVertex2fv(m_data[2]); - glVertex2fv(m_data[4]); - glVertex2fv(m_data[6]); - glVertex2fv(m_data[8]); - glVertex2fv(m_data[10]); - glVertex2fv(m_data[12]); - glVertex2fv(m_data[11]); - glVertex2fv(m_data[9]); - glVertex2fv(m_data[7]); - glVertex2fv(m_data[5]); - glVertex2fv(m_data[3]); - glVertex2fv(m_data[1]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(m_data[14]); - glVertex2fv(m_data[16]); - glVertex2fv(m_data[18]); - glVertex2fv(m_data[20]); - glVertex2fv(m_data[22]); - glVertex2fv(m_data[24]); - glVertex2fv(m_data[26]); - glVertex2fv(m_data[28]); - glVertex2fv(m_data[29]); - glVertex2fv(m_data[27]); - glVertex2fv(m_data[25]); - glVertex2fv(m_data[23]); - glVertex2fv(m_data[21]); - glVertex2fv(m_data[19]); - glVertex2fv(m_data[17]); - glVertex2fv(m_data[15]); - glVertex2fv(m_data[13]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(m_data[30]); - glVertex2fv(m_data[32]); - glVertex2fv(m_data[34]); - glVertex2fv(m_data[36]); - glVertex2fv(m_data[38]); - glVertex2fv(m_data[40]); - glVertex2fv(m_data[42]); - glVertex2fv(m_data[44]); - glVertex2fv(m_data[46]); - glVertex2fv(m_data[48]); - glVertex2fv(m_data[50]); - glVertex2fv(m_data[52]); - glVertex2fv(m_data[53]); - glVertex2fv(m_data[51]); - glVertex2fv(m_data[49]); - glVertex2fv(m_data[47]); - glVertex2fv(m_data[45]); - glVertex2fv(m_data[43]); - glVertex2fv(m_data[41]); - glVertex2fv(m_data[39]); - glVertex2fv(m_data[37]); - glVertex2fv(m_data[35]); - glVertex2fv(m_data[33]); - glVertex2fv(m_data[31]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(m_data[0]); - glVertex2fv(m_data[1]); - glVertex2fv(m_data[2]); - glVertex2fv(m_data[3]); - glVertex2fv(m_data[4]); - glVertex2fv(m_data[5]); - glVertex2fv(m_data[6]); - glVertex2fv(m_data[7]); - glVertex2fv(m_data[8]); - glVertex2fv(m_data[9]); - glVertex2fv(m_data[10]); - glVertex2fv(m_data[11]); - glVertex2fv(m_data[12]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(m_data[13]); - glVertex2fv(m_data[14]); - glVertex2fv(m_data[15]); - glVertex2fv(m_data[16]); - glVertex2fv(m_data[17]); - glVertex2fv(m_data[18]); - glVertex2fv(m_data[19]); - glVertex2fv(m_data[20]); - glVertex2fv(m_data[21]); - glVertex2fv(m_data[22]); - glVertex2fv(m_data[23]); - glVertex2fv(m_data[24]); - glVertex2fv(m_data[25]); - glVertex2fv(m_data[26]); - glVertex2fv(m_data[27]); - glVertex2fv(m_data[28]); - glVertex2fv(m_data[29]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(m_data[30]); - glVertex2fv(m_data[31]); - glVertex2fv(m_data[32]); - glVertex2fv(m_data[33]); - glVertex2fv(m_data[34]); - glVertex2fv(m_data[35]); - glVertex2fv(m_data[36]); - glVertex2fv(m_data[37]); - glVertex2fv(m_data[38]); - glVertex2fv(m_data[39]); - glVertex2fv(m_data[40]); - glVertex2fv(m_data[41]); - glVertex2fv(m_data[42]); - glVertex2fv(m_data[43]); - glVertex2fv(m_data[44]); - glVertex2fv(m_data[45]); - glVertex2fv(m_data[46]); - glVertex2fv(m_data[47]); - glVertex2fv(m_data[48]); - glVertex2fv(m_data[49]); - glVertex2fv(m_data[50]); - glVertex2fv(m_data[51]); - glVertex2fv(m_data[52]); - glVertex2fv(m_data[53]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/n.c b/lib/glut-3.7.6/progs/demos/ideas/n.c deleted file mode 100644 index 65ef1104f1e6db43896e7b3819cf10945569e05c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/n.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float n_data[][2] = { - {1.009307, 9.444788}, - {2.548087, 9.742002}, - {1.737332, 9.213622}, - {2.994829, 9.659443}, - {1.985522, 8.751290}, - {3.127198, 9.180598}, - {1.935884, 7.975232}, - {2.481903, 6.571723}, - {1.472596, 5.019608}, - {1.439504, 2.988648}, - {1.025853, 2.988648}, - - {2.283350, 6.059855}, - {2.035160, 5.366357}, - {3.292658, 7.711042}, - {3.540848, 7.744066}, - {4.384695, 9.031992}, - {4.699069, 8.916409}, - {5.609100, 9.808049}, - {5.145812, 8.982456}, - {6.155119, 9.791537}, - {5.410548, 8.635707}, - {6.337125, 9.312694}, - {5.360910, 7.991744}, - {6.088935, 8.090816}, - {4.947259, 5.977296}, - {5.261634, 4.804954}, - {4.616339, 4.028896}, - {5.211996, 3.962848}, - {4.732162, 3.318886}, - {5.559462, 3.814241}, - {5.228542, 3.038184}, - {5.940021, 3.814241}, - {5.906929, 3.335397}, - {6.684591, 4.094943}, - -}; - -void draw_n(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(n_data[0]); - glVertex2fv(n_data[1]); - glVertex2fv(n_data[2]); - glVertex2fv(n_data[3]); - glVertex2fv(n_data[4]); - glVertex2fv(n_data[5]); - glVertex2fv(n_data[6]); - glVertex2fv(n_data[7]); - glVertex2fv(n_data[8]); - glVertex2fv(n_data[9]); - glVertex2fv(n_data[10]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(n_data[11]); - glVertex2fv(n_data[12]); - glVertex2fv(n_data[13]); - glVertex2fv(n_data[14]); - glVertex2fv(n_data[15]); - glVertex2fv(n_data[16]); - glVertex2fv(n_data[17]); - glVertex2fv(n_data[18]); - glVertex2fv(n_data[19]); - glVertex2fv(n_data[20]); - glVertex2fv(n_data[21]); - glVertex2fv(n_data[22]); - glVertex2fv(n_data[23]); - glVertex2fv(n_data[24]); - glVertex2fv(n_data[25]); - glVertex2fv(n_data[26]); - glVertex2fv(n_data[27]); - glVertex2fv(n_data[28]); - glVertex2fv(n_data[29]); - glVertex2fv(n_data[30]); - glVertex2fv(n_data[31]); - glVertex2fv(n_data[32]); - glVertex2fv(n_data[33]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(n_data[0]); - glVertex2fv(n_data[2]); - glVertex2fv(n_data[4]); - glVertex2fv(n_data[6]); - glVertex2fv(n_data[8]); - glVertex2fv(n_data[10]); - glVertex2fv(n_data[9]); - glVertex2fv(n_data[7]); - glVertex2fv(n_data[5]); - glVertex2fv(n_data[3]); - glVertex2fv(n_data[1]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(n_data[12]); - glVertex2fv(n_data[14]); - glVertex2fv(n_data[16]); - glVertex2fv(n_data[18]); - glVertex2fv(n_data[20]); - glVertex2fv(n_data[22]); - glVertex2fv(n_data[24]); - glVertex2fv(n_data[26]); - glVertex2fv(n_data[28]); - glVertex2fv(n_data[30]); - glVertex2fv(n_data[32]); - glVertex2fv(n_data[33]); - glVertex2fv(n_data[31]); - glVertex2fv(n_data[29]); - glVertex2fv(n_data[27]); - glVertex2fv(n_data[25]); - glVertex2fv(n_data[23]); - glVertex2fv(n_data[21]); - glVertex2fv(n_data[19]); - glVertex2fv(n_data[17]); - glVertex2fv(n_data[15]); - glVertex2fv(n_data[13]); - glVertex2fv(n_data[11]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/o.c b/lib/glut-3.7.6/progs/demos/ideas/o.c deleted file mode 100644 index b442355adf5c09f1f8eec98009744db944c9ad84..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/o.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float o_data[][2] = { - {2.975610, 9.603255}, - {2.878049, 9.342828}, - {2.292683, 9.131231}, - {2.048780, 8.691760}, - {1.707317, 8.528993}, - {1.658537, 7.731434}, - {0.878049, 7.047813}, - {1.349594, 5.550356}, - {0.569106, 5.029501}, - {1.528455, 4.443540}, - {0.991870, 3.434385}, - {1.967480, 3.955239}, - {1.772358, 2.994914}, - {2.422764, 3.825025}, - {2.829268, 3.092574}, - {3.154472, 3.971516}, - {3.512195, 3.727365}, - {3.772358, 4.264496}, - {4.130081, 4.524924}, - {4.162601, 4.996948}, - {4.699187, 5.403866}, - {4.471545, 6.461852}, - {5.219512, 7.243133}, - {4.439024, 8.105799}, - {5.235772, 8.756866}, - {4.065041, 8.870804}, - {4.991870, 9.391658}, - {3.853658, 9.228891}, - {4.390244, 9.912513}, - {3.463415, 9.407935}, - {3.674797, 9.912513}, - {2.829268, 9.342828}, - {2.959350, 9.603255}, - -}; - -void draw_o(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(o_data[0]); - glVertex2fv(o_data[1]); - glVertex2fv(o_data[2]); - glVertex2fv(o_data[3]); - glVertex2fv(o_data[4]); - glVertex2fv(o_data[5]); - glVertex2fv(o_data[6]); - glVertex2fv(o_data[7]); - glVertex2fv(o_data[8]); - glVertex2fv(o_data[9]); - glVertex2fv(o_data[10]); - glVertex2fv(o_data[11]); - glVertex2fv(o_data[12]); - glVertex2fv(o_data[13]); - glVertex2fv(o_data[14]); - glVertex2fv(o_data[15]); - glVertex2fv(o_data[16]); - glVertex2fv(o_data[17]); - glVertex2fv(o_data[18]); - glVertex2fv(o_data[19]); - glVertex2fv(o_data[20]); - glVertex2fv(o_data[21]); - glVertex2fv(o_data[22]); - glVertex2fv(o_data[23]); - glVertex2fv(o_data[24]); - glVertex2fv(o_data[25]); - glVertex2fv(o_data[26]); - glVertex2fv(o_data[27]); - glVertex2fv(o_data[28]); - glVertex2fv(o_data[29]); - glVertex2fv(o_data[30]); - glVertex2fv(o_data[31]); - glVertex2fv(o_data[32]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(o_data[0]); - glVertex2fv(o_data[2]); - glVertex2fv(o_data[4]); - glVertex2fv(o_data[6]); - glVertex2fv(o_data[8]); - glVertex2fv(o_data[10]); - glVertex2fv(o_data[12]); - glVertex2fv(o_data[14]); - glVertex2fv(o_data[16]); - glVertex2fv(o_data[18]); - glVertex2fv(o_data[20]); - glVertex2fv(o_data[22]); - glVertex2fv(o_data[24]); - glVertex2fv(o_data[26]); - glVertex2fv(o_data[28]); - glVertex2fv(o_data[30]); - glVertex2fv(o_data[32]); - glVertex2fv(o_data[31]); - glVertex2fv(o_data[29]); - glVertex2fv(o_data[27]); - glVertex2fv(o_data[25]); - glVertex2fv(o_data[23]); - glVertex2fv(o_data[21]); - glVertex2fv(o_data[19]); - glVertex2fv(o_data[17]); - glVertex2fv(o_data[15]); - glVertex2fv(o_data[13]); - glVertex2fv(o_data[11]); - glVertex2fv(o_data[9]); - glVertex2fv(o_data[7]); - glVertex2fv(o_data[5]); - glVertex2fv(o_data[3]); - glVertex2fv(o_data[1]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/objects.h b/lib/glut-3.7.6/progs/demos/ideas/objects.h deleted file mode 100644 index 85e6bdc472f4f013f3e5536f5a050c478abf3803..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/objects.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#define MAT_LOGO 1 - -#define MAT_PENCIL_ERASER 2 -#define MAT_PENCIL_END 3 -#define MAT_PENCIL_PAINT 4 -#define MAT_PENCIL_WOOD 5 -#define MAT_PENCIL_TIP 6 - -#define MAT_HOLDER_BASE 7 -#define MAT_HOLDER_RINGS 8 - -#define MAT_HEMISPHERE 9 - -#define LIGHT_TMP 10 - -extern float idmat[4][4]; -extern float light1[]; -extern float light2[]; -extern float light3[]; -extern float lmodel[]; -extern float mat_logo[]; -extern float mat_holder_base[]; -extern float mat_holder_rings[]; -extern float mat_hemisphere[]; diff --git a/lib/glut-3.7.6/progs/demos/ideas/p.c b/lib/glut-3.7.6/progs/demos/ideas/p.c deleted file mode 100644 index 035d760ed0c48e87ace5aceef34ee0c980295a2c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/p.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float p_data[][2] = { - {1.987500, 11.437500-3.0}, - {2.606250, 11.662500-3.0}, - {2.887500, 12.150000-3.0}, - {3.037500, 11.943750-3.0}, - {3.618750, 12.956250-3.0}, - {2.793750, 10.256250-3.0}, - {3.037500, 8.775000-3.0}, - {2.418750, 8.006250-3.0}, - {2.381250, 3.656250-3.0}, - {1.518750, 2.756250-3.0}, - {1.856250, 1.687500-3.0}, - {0.975000, 1.087500-3.0}, - {1.087500, 0.393750-3.0}, - {0.600000, 0.431250-3.0}, - {0.018750, 0.037500-3.0}, - - {3.093750, 9.787500-3.0}, - {3.037500, 9.412500-3.0}, - {4.050000, 11.231250-3.0}, - {4.331250, 11.175000-3.0}, - {5.100000, 12.187500-3.0}, - {5.137500, 11.906250-3.0}, - {5.831250, 12.712500-3.0}, - {5.643750, 12.000000-3.0}, - {6.656250, 12.731250-3.0}, - {5.962500, 11.831250-3.0}, - {6.956250, 12.393750-3.0}, - {6.112500, 11.512500-3.0}, - {7.012500, 11.512500-3.0}, - {6.093750, 10.575000-3.0}, - {6.787500, 9.993750-3.0}, - {5.868750, 9.412500-3.0}, - {6.018750, 7.950000-3.0}, - {5.193750, 7.256250-3.0}, - {5.043750, 6.318750-3.0}, - {4.068750, 5.775000-3.0}, - {3.881250, 5.418750-3.0}, - {3.337500, 5.606250-3.0}, - {3.093750, 5.193750-3.0}, - {2.868750, 5.793750-3.0}, - {2.493750, 5.512500-3.0}, - {2.643750, 6.675000-3.0}, - -}; - -void draw_p(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(p_data[0]); - glVertex2fv(p_data[1]); - glVertex2fv(p_data[2]); - glVertex2fv(p_data[3]); - glVertex2fv(p_data[4]); - glVertex2fv(p_data[5]); - glVertex2fv(p_data[6]); - glVertex2fv(p_data[7]); - glVertex2fv(p_data[8]); - glVertex2fv(p_data[9]); - glVertex2fv(p_data[10]); - glVertex2fv(p_data[11]); - glVertex2fv(p_data[12]); - glVertex2fv(p_data[13]); - glVertex2fv(p_data[14]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(p_data[15]); - glVertex2fv(p_data[16]); - glVertex2fv(p_data[17]); - glVertex2fv(p_data[18]); - glVertex2fv(p_data[19]); - glVertex2fv(p_data[20]); - glVertex2fv(p_data[21]); - glVertex2fv(p_data[22]); - glVertex2fv(p_data[23]); - glVertex2fv(p_data[24]); - glVertex2fv(p_data[25]); - glVertex2fv(p_data[26]); - glVertex2fv(p_data[27]); - glVertex2fv(p_data[28]); - glVertex2fv(p_data[29]); - glVertex2fv(p_data[30]); - glVertex2fv(p_data[31]); - glVertex2fv(p_data[32]); - glVertex2fv(p_data[33]); - glVertex2fv(p_data[34]); - glVertex2fv(p_data[35]); - glVertex2fv(p_data[36]); - glVertex2fv(p_data[37]); - glVertex2fv(p_data[38]); - glVertex2fv(p_data[39]); - glVertex2fv(p_data[40]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(p_data[0]); - glVertex2fv(p_data[2]); - glVertex2fv(p_data[4]); - glVertex2fv(p_data[6]); - glVertex2fv(p_data[8]); - glVertex2fv(p_data[10]); - glVertex2fv(p_data[12]); - glVertex2fv(p_data[14]); - glVertex2fv(p_data[13]); - glVertex2fv(p_data[11]); - glVertex2fv(p_data[9]); - glVertex2fv(p_data[7]); - glVertex2fv(p_data[5]); - glVertex2fv(p_data[3]); - glVertex2fv(p_data[1]); - glVertex2fv(p_data[0]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(p_data[15]); - glVertex2fv(p_data[17]); - glVertex2fv(p_data[19]); - glVertex2fv(p_data[21]); - glVertex2fv(p_data[23]); - glVertex2fv(p_data[25]); - glVertex2fv(p_data[27]); - glVertex2fv(p_data[29]); - glVertex2fv(p_data[31]); - glVertex2fv(p_data[33]); - glVertex2fv(p_data[35]); - glVertex2fv(p_data[37]); - glVertex2fv(p_data[39]); - glVertex2fv(p_data[40]); - glVertex2fv(p_data[38]); - glVertex2fv(p_data[36]); - glVertex2fv(p_data[34]); - glVertex2fv(p_data[32]); - glVertex2fv(p_data[30]); - glVertex2fv(p_data[28]); - glVertex2fv(p_data[26]); - glVertex2fv(p_data[24]); - glVertex2fv(p_data[22]); - glVertex2fv(p_data[20]); - glVertex2fv(p_data[18]); - glVertex2fv(p_data[16]); - glVertex2fv(p_data[15]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/r.c b/lib/glut-3.7.6/progs/demos/ideas/r.c deleted file mode 100644 index 4e8f57fc6b2e148431c506d6daac5eba64bbf6b9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/r.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float r_data[][2] = { - {0.018462, 12.344969-3.0}, - {0.775385, 12.677618-3.0}, - {0.812308, 12.344969-3.0}, - {1.421538, 12.899384-3.0}, - {1.126154, 12.123203-3.0}, - {1.864615, 12.825462-3.0}, - {1.181538, 11.716633-3.0}, - {2.030769, 12.603696-3.0}, - {1.089231, 10.700206-3.0}, - {1.495385, 9.351130-3.0}, - {0.516923, 7.355236-3.0}, - {0.756923, 6.375770-3.0}, - {0.129231, 5.119096-3.0}, - {0.461538, 5.322382-3.0}, - - {1.680000, 10.663244-3.0}, - {1.550769, 9.942505-3.0}, - {2.160000, 11.383984-3.0}, - {2.400000, 11.531828-3.0}, - {2.640000, 12.086243-3.0}, - {2.916923, 12.086243-3.0}, - {3.341538, 12.806981-3.0}, - {3.526154, 12.160164-3.0}, - {4.043077, 12.954825-3.0}, - {4.209231, 12.308008-3.0}, - {4.504615, 12.880903-3.0}, - {4.541538, 12.622176-3.0}, - -}; - -void draw_r(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(r_data[0]); - glVertex2fv(r_data[1]); - glVertex2fv(r_data[2]); - glVertex2fv(r_data[3]); - glVertex2fv(r_data[4]); - glVertex2fv(r_data[5]); - glVertex2fv(r_data[6]); - glVertex2fv(r_data[7]); - glVertex2fv(r_data[8]); - glVertex2fv(r_data[9]); - glVertex2fv(r_data[10]); - glVertex2fv(r_data[11]); - glVertex2fv(r_data[12]); - glVertex2fv(r_data[13]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(r_data[14]); - glVertex2fv(r_data[15]); - glVertex2fv(r_data[16]); - glVertex2fv(r_data[17]); - glVertex2fv(r_data[18]); - glVertex2fv(r_data[19]); - glVertex2fv(r_data[20]); - glVertex2fv(r_data[21]); - glVertex2fv(r_data[22]); - glVertex2fv(r_data[23]); - glVertex2fv(r_data[24]); - glVertex2fv(r_data[25]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(r_data[0]); - glVertex2fv(r_data[2]); - glVertex2fv(r_data[4]); - glVertex2fv(r_data[6]); - glVertex2fv(r_data[8]); - glVertex2fv(r_data[10]); - glVertex2fv(r_data[12]); - glVertex2fv(r_data[13]); - glVertex2fv(r_data[11]); - glVertex2fv(r_data[9]); - glVertex2fv(r_data[7]); - glVertex2fv(r_data[5]); - glVertex2fv(r_data[3]); - glVertex2fv(r_data[1]); - glVertex2fv(r_data[0]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(r_data[14]); - glVertex2fv(r_data[16]); - glVertex2fv(r_data[18]); - glVertex2fv(r_data[20]); - glVertex2fv(r_data[22]); - glVertex2fv(r_data[24]); - glVertex2fv(r_data[25]); - glVertex2fv(r_data[23]); - glVertex2fv(r_data[21]); - glVertex2fv(r_data[19]); - glVertex2fv(r_data[17]); - glVertex2fv(r_data[15]); - glVertex2fv(r_data[14]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/s.c b/lib/glut-3.7.6/progs/demos/ideas/s.c deleted file mode 100644 index 988ead6a2e6663ce232026214dcba85e73725a56..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/s.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float s_data[][2] = { - {0.860393, 5.283798}, - {0.529473, 3.550052}, - {0.992761, 4.491228}, - {0.910031, 3.368421}, - {1.240951, 3.830753}, - {1.456050, 3.104231}, - {1.935884, 3.517028}, - {2.002068, 2.988648}, - {2.763185, 3.533540}, - {3.061013, 3.120743}, - {3.391934, 3.748194}, - {4.053774, 3.632611}, - {3.822130, 4.540764}, - {4.550155, 4.590299}, - {3.656670, 5.465428}, - {4.517063, 5.713106}, - {3.276112, 5.894737}, - {3.921407, 6.538700}, - {2.299896, 6.736842}, - {3.044467, 7.430341}, - {1.886246, 7.496388}, - {2.581179, 8.222910}, - {1.902792, 8.751290}, - {2.680455, 8.883385}, - {2.283350, 9.312694}, - {3.358842, 9.609907}, - {3.507756, 9.907121}, - {4.285419, 9.758514}, - {5.112720, 9.973168}, - {4.748707, 9.593395}, - -}; - -void draw_s(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(s_data[0]); - glVertex2fv(s_data[1]); - glVertex2fv(s_data[2]); - glVertex2fv(s_data[3]); - glVertex2fv(s_data[4]); - glVertex2fv(s_data[5]); - glVertex2fv(s_data[6]); - glVertex2fv(s_data[7]); - glVertex2fv(s_data[8]); - glVertex2fv(s_data[9]); - glVertex2fv(s_data[10]); - glVertex2fv(s_data[11]); - glVertex2fv(s_data[12]); - glVertex2fv(s_data[13]); - glVertex2fv(s_data[14]); - glVertex2fv(s_data[15]); - glVertex2fv(s_data[16]); - glVertex2fv(s_data[17]); - glVertex2fv(s_data[18]); - glVertex2fv(s_data[19]); - glVertex2fv(s_data[20]); - glVertex2fv(s_data[21]); - glVertex2fv(s_data[22]); - glVertex2fv(s_data[23]); - glVertex2fv(s_data[24]); - glVertex2fv(s_data[25]); - glVertex2fv(s_data[26]); - glVertex2fv(s_data[27]); - glVertex2fv(s_data[28]); - glVertex2fv(s_data[29]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(s_data[0]); - glVertex2fv(s_data[2]); - glVertex2fv(s_data[4]); - glVertex2fv(s_data[6]); - glVertex2fv(s_data[8]); - glVertex2fv(s_data[10]); - glVertex2fv(s_data[12]); - glVertex2fv(s_data[14]); - glVertex2fv(s_data[16]); - glVertex2fv(s_data[18]); - glVertex2fv(s_data[20]); - glVertex2fv(s_data[22]); - glVertex2fv(s_data[24]); - glVertex2fv(s_data[26]); - glVertex2fv(s_data[28]); - glVertex2fv(s_data[29]); - glVertex2fv(s_data[27]); - glVertex2fv(s_data[25]); - glVertex2fv(s_data[23]); - glVertex2fv(s_data[21]); - glVertex2fv(s_data[19]); - glVertex2fv(s_data[17]); - glVertex2fv(s_data[15]); - glVertex2fv(s_data[13]); - glVertex2fv(s_data[11]); - glVertex2fv(s_data[9]); - glVertex2fv(s_data[7]); - glVertex2fv(s_data[5]); - glVertex2fv(s_data[3]); - glVertex2fv(s_data[1]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/t.c b/lib/glut-3.7.6/progs/demos/ideas/t.c deleted file mode 100644 index 31140d146bd13dddc13dda6380f1168b794fb1dc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/t.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float t_data[][2] = { - {2.986667, 14.034801}, - {2.445128, 10.088024}, - {1.788718, 9.236438}, - {2.264615, 7.664279}, - {1.165128, 5.666326}, - {2.034872, 4.945752}, - {1.132308, 3.766633}, - {2.182564, 3.570113}, - {1.411282, 2.309109}, - {2.510769, 2.341863}, - {2.149744, 1.048106}, - {3.364103, 1.375640}, - {3.167180, 0.327533}, - {4.381538, 0.736950}, - {5.005128, 0.032753}, - {5.612308, 0.638690}, - {6.235898, 0.540430}, - {7.187692, 1.162743}, - - {1.985641, 9.039918}, - {2.133333, 10.186285}, - {1.509744, 9.023541}, - {1.608205, 9.662231}, - {1.050256, 9.023541}, - {1.050256, 9.334698}, - {0.196923, 9.007165}, - - {2.363077, 9.711361}, - {2.264615, 9.023541}, - {3.282051, 9.563972}, - {3.446154, 9.023541}, - {4.069744, 9.531218}, - {4.299487, 9.236438}, - {4.644103, 9.613101}, - {5.251282, 9.875128}, - -}; - -void draw_t(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(t_data[0]); - glVertex2fv(t_data[1]); - glVertex2fv(t_data[2]); - glVertex2fv(t_data[3]); - glVertex2fv(t_data[4]); - glVertex2fv(t_data[5]); - glVertex2fv(t_data[6]); - glVertex2fv(t_data[7]); - glVertex2fv(t_data[8]); - glVertex2fv(t_data[9]); - glVertex2fv(t_data[10]); - glVertex2fv(t_data[11]); - glVertex2fv(t_data[12]); - glVertex2fv(t_data[13]); - glVertex2fv(t_data[14]); - glVertex2fv(t_data[15]); - glVertex2fv(t_data[16]); - glVertex2fv(t_data[17]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(t_data[18]); - glVertex2fv(t_data[19]); - glVertex2fv(t_data[20]); - glVertex2fv(t_data[21]); - glVertex2fv(t_data[22]); - glVertex2fv(t_data[23]); - glVertex2fv(t_data[24]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(t_data[25]); - glVertex2fv(t_data[26]); - glVertex2fv(t_data[27]); - glVertex2fv(t_data[28]); - glVertex2fv(t_data[29]); - glVertex2fv(t_data[30]); - glVertex2fv(t_data[31]); - glVertex2fv(t_data[32]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(t_data[0]); - glVertex2fv(t_data[2]); - glVertex2fv(t_data[4]); - glVertex2fv(t_data[6]); - glVertex2fv(t_data[8]); - glVertex2fv(t_data[10]); - glVertex2fv(t_data[12]); - glVertex2fv(t_data[14]); - glVertex2fv(t_data[16]); - glVertex2fv(t_data[17]); - glVertex2fv(t_data[15]); - glVertex2fv(t_data[13]); - glVertex2fv(t_data[11]); - glVertex2fv(t_data[9]); - glVertex2fv(t_data[7]); - glVertex2fv(t_data[5]); - glVertex2fv(t_data[3]); - glVertex2fv(t_data[1]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(t_data[18]); - glVertex2fv(t_data[20]); - glVertex2fv(t_data[22]); - glVertex2fv(t_data[24]); - glVertex2fv(t_data[23]); - glVertex2fv(t_data[21]); - glVertex2fv(t_data[19]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(t_data[26]); - glVertex2fv(t_data[28]); - glVertex2fv(t_data[30]); - glVertex2fv(t_data[32]); - glVertex2fv(t_data[31]); - glVertex2fv(t_data[29]); - glVertex2fv(t_data[27]); - glVertex2fv(t_data[25]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/ideas/w.c b/lib/glut-3.7.6/progs/demos/ideas/w.c deleted file mode 100644 index f0637cc409beccb0ccee321c2433f3a664fd0a89..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/ideas/w.c +++ /dev/null @@ -1,245 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -#include - -float w_data[][2] = { - {2.400000, 12.899384-3.0}, - {1.624615, 12.344969-3.0}, - {1.513846, 11.790554-3.0}, - {0.812308, 11.310061-3.0}, - {1.292308, 10.570842-3.0}, - {0.387692, 9.554415-3.0}, - {1.163077, 8.907598-3.0}, - {0.443077, 8.427105-3.0}, - {1.236923, 7.983573-3.0}, - {0.627692, 6.911705-3.0}, - {1.218462, 6.874743-3.0}, - {0.701538, 5.765914-3.0}, - {1.089231, 5.858316-3.0}, - {0.590769, 5.082136-3.0}, - - {0.904615, 5.636550-3.0}, - {1.070769, 6.227926-3.0}, - {1.716923, 6.708419-3.0}, - {1.993846, 7.577002-3.0}, - {2.603077, 7.780287-3.0}, - {2.621538, 8.408625-3.0}, - {3.138462, 8.630390-3.0}, - {3.193846, 9.314168-3.0}, - {4.080000, 10.995893-3.0}, - {4.209231, 11.550308-3.0}, - - {4.689231, 12.954825-3.0}, - {4.209231, 11.809035-3.0}, - {4.615385, 12.030801-3.0}, - {4.006154, 10.552361-3.0}, - {4.633846, 10.995893-3.0}, - {4.080000, 9.887064-3.0}, - {4.966154, 9.850102-3.0}, - {4.375385, 8.981520-3.0}, - {5.409231, 8.889117-3.0}, - {4.744616, 7.946612-3.0}, - {5.704616, 7.687885-3.0}, - {5.058462, 7.041068-3.0}, - {5.889231, 6.135524-3.0}, - {5.427692, 5.599589-3.0}, - {5.501538, 5.026694-3.0}, - - {5.630769, 5.414784-3.0}, - {5.741539, 5.987679-3.0}, - {6.203077, 6.264887-3.0}, - {6.572308, 7.281314-3.0}, - {7.347692, 7.817248-3.0}, - {7.255384, 9.221766-3.0}, - {7.993846, 9.166325-3.0}, - {7.458462, 11.032854-3.0}, - {8.603077, 11.550308-3.0}, - {7.403077, 11.975359-3.0}, - {8.510769, 12.511293-3.0}, - {7.070769, 12.326488-3.0}, - {7.956923, 12.936345-3.0}, - {6.590769, 12.308008-3.0}, - {7.236923, 12.954825-3.0}, - {6.000000, 12.012321-3.0}, - {6.461538, 12.511293-3.0}, - -}; - -void draw_w(void) { - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(w_data[0]); - glVertex2fv(w_data[1]); - glVertex2fv(w_data[2]); - glVertex2fv(w_data[3]); - glVertex2fv(w_data[4]); - glVertex2fv(w_data[5]); - glVertex2fv(w_data[6]); - glVertex2fv(w_data[7]); - glVertex2fv(w_data[8]); - glVertex2fv(w_data[9]); - glVertex2fv(w_data[10]); - glVertex2fv(w_data[11]); - glVertex2fv(w_data[12]); - glVertex2fv(w_data[13]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(w_data[14]); - glVertex2fv(w_data[15]); - glVertex2fv(w_data[16]); - glVertex2fv(w_data[17]); - glVertex2fv(w_data[18]); - glVertex2fv(w_data[19]); - glVertex2fv(w_data[20]); - glVertex2fv(w_data[21]); - glVertex2fv(w_data[22]); - glVertex2fv(w_data[23]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(w_data[24]); - glVertex2fv(w_data[25]); - glVertex2fv(w_data[26]); - glVertex2fv(w_data[27]); - glVertex2fv(w_data[28]); - glVertex2fv(w_data[29]); - glVertex2fv(w_data[30]); - glVertex2fv(w_data[31]); - glVertex2fv(w_data[32]); - glVertex2fv(w_data[33]); - glVertex2fv(w_data[34]); - glVertex2fv(w_data[35]); - glVertex2fv(w_data[36]); - glVertex2fv(w_data[37]); - glVertex2fv(w_data[38]); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2fv(w_data[39]); - glVertex2fv(w_data[40]); - glVertex2fv(w_data[41]); - glVertex2fv(w_data[42]); - glVertex2fv(w_data[43]); - glVertex2fv(w_data[44]); - glVertex2fv(w_data[45]); - glVertex2fv(w_data[46]); - glVertex2fv(w_data[47]); - glVertex2fv(w_data[48]); - glVertex2fv(w_data[49]); - glVertex2fv(w_data[50]); - glVertex2fv(w_data[51]); - glVertex2fv(w_data[52]); - glVertex2fv(w_data[53]); - glVertex2fv(w_data[54]); - glVertex2fv(w_data[55]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(w_data[0]); - glVertex2fv(w_data[2]); - glVertex2fv(w_data[4]); - glVertex2fv(w_data[6]); - glVertex2fv(w_data[8]); - glVertex2fv(w_data[10]); - glVertex2fv(w_data[12]); - glVertex2fv(w_data[13]); - glVertex2fv(w_data[11]); - glVertex2fv(w_data[9]); - glVertex2fv(w_data[7]); - glVertex2fv(w_data[5]); - glVertex2fv(w_data[3]); - glVertex2fv(w_data[1]); - glVertex2fv(w_data[0]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(w_data[14]); - glVertex2fv(w_data[16]); - glVertex2fv(w_data[18]); - glVertex2fv(w_data[20]); - glVertex2fv(w_data[22]); - glVertex2fv(w_data[23]); - glVertex2fv(w_data[21]); - glVertex2fv(w_data[19]); - glVertex2fv(w_data[17]); - glVertex2fv(w_data[15]); - glVertex2fv(w_data[14]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(w_data[24]); - glVertex2fv(w_data[26]); - glVertex2fv(w_data[28]); - glVertex2fv(w_data[30]); - glVertex2fv(w_data[32]); - glVertex2fv(w_data[34]); - glVertex2fv(w_data[36]); - glVertex2fv(w_data[38]); - glVertex2fv(w_data[37]); - glVertex2fv(w_data[35]); - glVertex2fv(w_data[33]); - glVertex2fv(w_data[31]); - glVertex2fv(w_data[29]); - glVertex2fv(w_data[27]); - glVertex2fv(w_data[25]); - glVertex2fv(w_data[24]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2fv(w_data[39]); - glVertex2fv(w_data[41]); - glVertex2fv(w_data[43]); - glVertex2fv(w_data[45]); - glVertex2fv(w_data[47]); - glVertex2fv(w_data[49]); - glVertex2fv(w_data[51]); - glVertex2fv(w_data[53]); - glVertex2fv(w_data[55]); - glVertex2fv(w_data[54]); - glVertex2fv(w_data[52]); - glVertex2fv(w_data[50]); - glVertex2fv(w_data[48]); - glVertex2fv(w_data[46]); - glVertex2fv(w_data[44]); - glVertex2fv(w_data[42]); - glVertex2fv(w_data[40]); - glVertex2fv(w_data[39]); - glEnd(); - -} - diff --git a/lib/glut-3.7.6/progs/demos/lorenz/Imakefile b/lib/glut-3.7.6/progs/demos/lorenz/Imakefile deleted file mode 100644 index 4c9c2d779d5dae1e3acd30e7a50786921aecd7d1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/lorenz/Imakefile +++ /dev/null @@ -1,15 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -#include "../../../Glut.cf" - -TARGETS = lorenz - -SRCS = lorenz.c -OBJS = lorenz.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(lorenz,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/lorenz/lorenz.c b/lib/glut-3.7.6/progs/demos/lorenz/lorenz.c deleted file mode 100644 index 0bbd5567f5d2c81a57cea923c1cb0a32903a72ca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/lorenz/lorenz.c +++ /dev/null @@ -1,644 +0,0 @@ -/* - * Lorenz Attractor Demo - * - * Adapted from code originally written for the 4D60GT by - * Aaron T. Ferrucci (aaronf@cse.ucsc.edu), 7/3/92. - * - * Description: - * - * This program shows some particles stuck in a Lorenz attractor (the parameters - * used are r=28, b=8/3, sigma=10). The eye is attracted to the red particle, - * with a force directly proportionate to distance. A command line - * puts the whole mess inside a box made of hexagons. I think this helps to - * maintain the illusion of 3 dimensions, but it can slow things down. - * Other options allow you to play with the redraw rate and the number of new - * lines per redraw. So you can customize it to the speed of your machine. - * - * For general info on Lorenz attractors I recommend "An Introduction to - * the Lorenz Equations", IEEE Transactions on Circuits and Systems, August '83. - * - * Bugs: hidden surface removal doesn't apply to hexagons, and - * works poorly on lines when they are too close together. - * - * Notes on OpenGL port: - * - * The timer functions do not exist in OpenGL, so the drawing occurs in a - * continuous loop, controlled by step, stop and go input from the keyboard. - * Perhaps system function could be called to control timing. - * - */ - -#include -#include -#include -#include -#include -#include - -float -random_float(void) -{ - return (float)rand()/RAND_MAX; -} - -void -seed_random_float(long seed) -{ - srand(seed); -} - -static GLuint asphere; - -#define POINTMASK 511 -#define G (0.002) /* eyept to red sphere gravity */ -#define LG (0.3) -#define CUBESIDE (120.) -#define CUBESCALE (23.) -#define CUBEOFFX (-4.) -#define CUBEOFFY (0.) -#define CUBEOFFZ (57.) -#define FALSE 0 -#define TRUE 1 - -/* globals */ -float sigma = 10., r = 28., b = 8./3., dt = 0.003; -int rp = 0, bp = 0, gp = 0, yp = 0, mp = 0; -long xmax, ymax, zmax, zmin; -float rv[POINTMASK+1][3], /* red points */ - bv[POINTMASK+1][3], /* blue points */ - gv[POINTMASK+1][3], /* green points */ - yv[POINTMASK+1][3], /* yellow points */ - mv[POINTMASK+1][3]; /* magenta points */ - -int lpf; /* number of new lines per frame */ - -float eyex[3], /* eye location */ - eyev[3], /* eye velocity */ - eyel[3]; /* lookat point location */ -GLint fovy = 600; -float dx, dy, dz; -GLUquadricObj *quadObj; - -float cubeoffx = CUBEOFFX; -float cubeoffy = CUBEOFFY; -float cubeoffz = CUBEOFFZ; -float farplane = 80.; - -int animate = 1; - -/* option flags */ -GLboolean hexflag, /* hexagons? */ - sflag, - fflag, - wflag, - gflag, - debug; - -/* option values */ -short hexbright; /* brightness for hexagon color */ -int speed, /* speed (number of new line segs per redraw) */ - frame; /* frame rate (actually noise value for TIMER0) */ -float a = 0, - da; /* hexagon rotational velocity (.1 degree/redraw) */ -float gravity; - -/* function declarations */ -void init_3d(void); -void init_graphics(void); -void draw_hexcube(void); -void draw_hexplane(void); -void draw_hexagon(void); -void move_eye(void); -void redraw(void); -void next_line(float v[][3], int *p); -void parse_args(int argc, char **argv); -void print_usage(char*); -void print_info(void); -void sphdraw(float args[4]); -void setPerspective(int angle, float aspect, float zNear, float zFar); - - -static void Reshape(int width, int height) -{ - - glViewport(0,0,width,height); - glClear(GL_COLOR_BUFFER_BIT); - xmax = width; - ymax = height; -} - -/* ARGSUSED1 */ -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 'g': - animate = 1; - glutPostRedisplay(); - break; - case 's': - animate = 0; - glutPostRedisplay(); - break; - case 27: - gluDeleteQuadric(quadObj); - exit(0); - } -} - -static void Draw(void) -{ - int i; - - if (animate) { - i = speed; - while (i--) { - next_line(rv, &rp); - next_line(bv, &bp); - next_line(gv, &gp); - next_line(yv, &yp); - next_line(mv, &mp); - } - glPushMatrix(); - move_eye(); - redraw(); - glPopMatrix(); - } -} - -int main(int argc, char **argv) -{ - glutInitWindowSize(600, 600); - - glutInit(&argc, argv); - - parse_args(argc, argv); - - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - - glutCreateWindow("Lorenz Attractors"); - - init_3d(); - init_graphics(); - - /* draw the first POINTMASK points in each color */ - while(rp < POINTMASK) { - next_line(rv, &rp); - next_line(bv, &bp); - next_line(gv, &gp); - next_line(yv, &yp); - next_line(mv, &mp); - } - - eyex[0] = eyex[1] = eyex[2] = 0.; - eyel[0] = rv[rp][0]; - eyel[1] = rv[rp][1]; - eyel[2] = rv[rp][2]; - - glPushMatrix(); - move_eye(); - redraw(); - glPopMatrix(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutIdleFunc(Draw); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -/* compute the next point on the path according to Lorenz' equations. */ -void next_line(float v[][3], int *p) -{ - - dx = sigma * (v[*p][1] - v[*p][0]) * dt; - dy = (r*v[*p][0] - v[*p][1] + v[*p][0]*v[*p][2]) * dt; - dz = (v[*p][0] *v[*p][1] + b*v[*p][2]) * dt; - - v[(*p + 1) & POINTMASK][0] = v[*p][0] + dx; - v[(*p + 1) & POINTMASK][1] = v[*p][1] + dy; - v[(*p + 1) & POINTMASK][2] = v[*p][2] - dz; - *p = (*p + 1) & POINTMASK; -} - -void drawLines(int index, float array[POINTMASK][3]) -{ - int p; - int i; - -#define LINE_STEP 4 - - p = (index+1)&POINTMASK; - i = LINE_STEP-(p % LINE_STEP); - if (i == LINE_STEP) i=0; - glBegin(GL_LINE_STRIP); - /* draw points in order from oldest to newest */ - while(p != index) { - if (i == 0) { - glVertex3fv(array[p]); - i = LINE_STEP; - } - i--; - p = (p+1) & POINTMASK; - } - glVertex3fv(array[index]); - glEnd(); -} - -void redraw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if(hexflag) - draw_hexcube(); - - glColor3f(1.0, 0.0, 0.0); - drawLines(rp, rv); - sphdraw(rv[rp]); - - glColor3f(0.0, 0.0, 1.0); - drawLines(bp, bv); - sphdraw(bv[bp]); - - glColor3f(0.0, 1.0, 0.0); - drawLines(gp, gv); - sphdraw(gv[gp]); - - glColor3f(1.0, 0.0, 1.0); - drawLines(yp, yv); - sphdraw(yv[yp]); - - glColor3f(0.0, 1.0, 1.0); - drawLines(mp, mv); - sphdraw(mv[mp]); - - glutSwapBuffers(); -} - -void move_eye(void) -{ - /* first move the eye */ - eyev[0] += gravity * (rv[rp][0] - eyex[0]); - eyev[1] += gravity * (rv[rp][1] - eyex[1]); - eyev[2] += gravity * (rv[rp][2] - eyex[2]); - - /* adjust position using new velocity */ - eyex[0] += eyev[0] * dt; - eyex[1] += eyev[1] * dt; - eyex[2] += eyev[2] * dt; - - /* move the lookat point */ - /* it catches up to the red point if it's moving slowly enough */ - eyel[0] += LG * (rv[rp][0] - eyel[0]); - eyel[1] += LG * (rv[rp][1] - eyel[1]); - eyel[2] += LG * (rv[rp][2] - eyel[2]); - - /* change view */ - gluLookAt(eyex[0], eyex[1], eyex[2], eyel[0], eyel[1], eyel[2], - 0, 1, 0); -} - -void draw_hexcube(void) -{ - - a += da; - if(a >= 720.) /* depends on slowest rotation factor */ - a = 0.; - - /* draw hexplanes, without changing z-values */ - glDepthMask(GL_FALSE); - glDisable(GL_DEPTH_TEST); - - /* x-y plane */ - glColor3f(0.2, 0.2, 0.6); - glPushMatrix(); - glTranslatef(cubeoffx, cubeoffy, cubeoffz); - glScalef(CUBESCALE, CUBESCALE, CUBESCALE); - draw_hexplane(); - glPopMatrix(); - - /* x-y plane, translated */ - glPushMatrix(); - glTranslatef(cubeoffx, cubeoffy, cubeoffz - 2*CUBESIDE); - glScalef(CUBESCALE, CUBESCALE, CUBESCALE); - draw_hexplane(); - glPopMatrix(); - - glColor3f(0.6, 0.2, 0.2); - /* x-z plane, translate low */ - glPushMatrix(); - glRotatef(90, 1.0, 0.0, 0.0); - glTranslatef(cubeoffx, cubeoffz - CUBESIDE, -cubeoffy + CUBESIDE); - glScalef(CUBESCALE, CUBESCALE, CUBESCALE); - draw_hexplane(); - glPopMatrix(); - - /* x-z plane, translate high */ - glPushMatrix(); - glRotatef(90, 1.0, 0.0, 0.0); - glTranslatef(cubeoffx, cubeoffz - CUBESIDE, -cubeoffy - CUBESIDE); - glScalef(CUBESCALE, CUBESCALE, CUBESCALE); - draw_hexplane(); - glPopMatrix(); - - glColor3f(0.2, 0.6, 0.2); - /* y-z plane, translate low */ - glPushMatrix(); - glRotatef(90, 0.0, 1.0, 0.0); - glTranslatef(-cubeoffz + CUBESIDE, cubeoffy, cubeoffx + CUBESIDE); - glScalef(CUBESCALE, CUBESCALE, CUBESCALE); - draw_hexplane(); - glPopMatrix(); - - /* y-z plane, translate high */ - glPushMatrix(); - glRotatef (90, 0.0, 1.0, 0.0); - glTranslatef(-cubeoffz + CUBESIDE, cubeoffy, cubeoffx - CUBESIDE); - glScalef(CUBESCALE, CUBESCALE, CUBESCALE); - draw_hexplane(); - glPopMatrix(); - - glFlush(); - glDepthMask(GL_TRUE); - glEnable(GL_DEPTH_TEST); -} - -float hex_data[8][3] = { - {0., 0., 0.}, - {1.155, 0., 0.}, - {0.577, 1., 0.}, - {-0.577, 1., 0.}, - {-1.155, 0., 0.}, - {-0.577, -1., 0.}, - {0.577, -1., 0.}, - {1.155, 0., 0.}, -}; - -/* draws a hexagon 2 units across, in the x-y plane, */ -/* centered at <0, 0, 0> */ - -void draw_hexagon(void) -{ - if(wflag) { - glPushMatrix(); - glRotatef(a, 0.0, 0.0, 1.0); - } - - glBegin(GL_TRIANGLE_FAN); - glVertex3fv(hex_data[0]); - glVertex3fv(hex_data[1]); - glVertex3fv(hex_data[2]); - glVertex3fv(hex_data[3]); - glVertex3fv(hex_data[4]); - glVertex3fv(hex_data[5]); - glVertex3fv(hex_data[6]); - glVertex3fv(hex_data[7]); - glEnd(); - - if(wflag) - glPopMatrix(); -} - -void tmp_draw_hexplane(void) -{ - glRectf(-2.0, -2.0, 2.0, 2.0); -} - -/* draw 7 hexagons */ -void draw_hexplane(void) -{ - if(wflag) { - glPushMatrix(); - glRotatef(-0.5*a, 0.0, 0.0, 1.0); - } - - /* center , <0, 0, 0> */ - draw_hexagon(); - - /* 12 o'clock, <0, 4, 0> */ - glTranslatef(0., 4., 0.); - draw_hexagon(); - - /* 10 o'clock, <-3.464, 2, 0> */ - glTranslatef(-3.464, -2., 0.); - draw_hexagon(); - - /* 8 o'clock, <-3.464, -2, 0> */ - glTranslatef(0., -4., 0.); - draw_hexagon(); - - /* 6 o'clock, <0, -4, 0> */ - glTranslatef(3.464, -2., 0.); - draw_hexagon(); - - /* 4 o'clock, <3.464, -2, 0> */ - glTranslatef(3.464, 2., 0.); - draw_hexagon(); - - /* 2 o'clock, <3.464, 2, 0> */ - glTranslatef(0., 4., 0.); - draw_hexagon(); - - if(wflag) - glPopMatrix(); -} - -void sphdraw(float args[3]) -{ - glPushMatrix(); - glTranslatef(args[0], args[1], args[2]); - glCallList(asphere); - glPopMatrix(); -} - -void setPerspective(int angle, float aspect, float zNear, float zFar) -{ - glPushAttrib(GL_TRANSFORM_BIT); - glMatrixMode(GL_PROJECTION); - gluPerspective(angle * 0.1, aspect, zNear, zFar); - glPopAttrib(); -} - -/* initialize global 3-vectors */ -void init_3d(void) -{ - (void)seed_random_float((long)time((time_t*)NULL)); - - /* initialize colored points */ - rv[0][0] = (float)random_float() * 10.; - rv[0][1] = (float)random_float() * 10.; - rv[0][2] = (float)random_float() * 10. - 10.; - - bv[0][0] = rv[0][0] + (float)random_float()*5.; - bv[0][1] = rv[0][1] + (float)random_float()*5.; - bv[0][0] = rv[0][2] + (float)random_float()*5.; - - gv[0][0] = rv[0][0] + (float)random_float()*5.; - gv[0][1] = rv[0][1] + (float)random_float()*5.; - gv[0][0] = rv[0][2] + (float)random_float()*5.; - - yv[0][0] = rv[0][0] + (float)random_float()*5.; - yv[0][1] = rv[0][1] + (float)random_float()*5.; - yv[0][0] = rv[0][2] + (float)random_float()*5.; - - mv[0][0] = rv[0][0] + (float)random_float()*5.; - mv[0][1] = rv[0][1] + (float)random_float()*5.; - mv[0][0] = rv[0][2] + (float)random_float()*5.; - - /* initialize eye velocity */ - eyev[0] = eyev[1] = eyev[2] = 0.; -} - - -void init_graphics(void) -{ - int width = 600; - int height = 600; - - xmax = width; - ymax = height; - glDrawBuffer(GL_BACK); - glEnable(GL_DEPTH_TEST); - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearDepth(1.0); - - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - glViewport(0, 0, xmax, ymax); - setPerspective(fovy, (float)xmax/(float)ymax, 0.01, farplane); - quadObj = gluNewQuadric(); - gluQuadricNormals(quadObj, GLU_NONE); - asphere = glGenLists(1); - glNewList(asphere, GL_COMPILE); - gluSphere(quadObj, 0.3, 12, 8); - glEndList(); -} - -#define USAGE "usage message: this space for rent\n" -void parse_args(int argc, char **argv) -{ - hexflag = sflag = fflag = wflag = gflag = debug = FALSE; - - while (--argc) { - if (strcmp("-X", argv[argc]) == 0) { - debug = TRUE; - } else if (strcmp("-h", argv[argc]) == 0) { - print_usage(argv[0]); - exit(1); - } else if (strcmp("-i", argv[argc]) == 0) { - print_info(); - exit(1); - } else if (strcmp("-x", argv[argc]) == 0) { - hexflag = TRUE; - farplane = 300.; - } else if (strcmp("-s", argv[argc]) == 0) { - sflag = TRUE; - if (argv[argc+1]) - speed = atoi(argv[argc+1]); - else { - printf("%s: -s option requires an argument.\n", argv[0]); - exit(1); - } - } else if (strcmp("-f", argv[argc]) == 0) { - fflag = TRUE; - if (argv[argc+1]) - frame = atoi(argv[argc+1]); - else { - printf("%s: -f option requires an argument.\n", argv[0]); - exit(1); - } - if(frame < 0) { - fprintf(stderr, "Try a small positive value for \n"); - fprintf(stderr, "'f'; this is the number of vertical "); - fprintf(stderr, "retraces per redraw\n"); - fprintf(stderr, "Try %s -h for help\n", argv[0]); - exit(1); - } - } else if (strcmp("-w", argv[argc]) == 0) { - wflag = TRUE; - if (argv[argc+1]) - da = atof(argv[argc+1]); - else { - printf("%s: -w option requires an argument.\n", argv[0]); - exit(1); - } - if(da > 10.) { - fprintf(stderr, "That's a large rotational velocity ('w')"); - fprintf(stderr, " but you asked for it\n"); - } - break; - } else if (strcmp("-g", argv[argc]) == 0) { - gflag = TRUE; - if (argv[argc+1]) - gravity = atof(argv[argc+1]); - else { - printf("%s: -g option requires an argument.\n", argv[0]); - exit(1); - } - if(gravity <= 0) { - fprintf(stderr, "Gravity ('g') should be positive\n"); - fprintf(stderr, "Try %s -h for help\n", argv[0]); - } - } else if (strcmp("-?", argv[argc]) == 0) { - fprintf(stderr, USAGE); - } - } - - /* set up default values */ - if(!sflag) - speed = 3; - if(!fflag) - frame = 2; - if(!wflag) - da = 0.; - if(!gflag) - gravity = G; -} - -void print_usage(char *program) -{ -printf("\nUsage: %s [-h] [-i] [-x] [-s speed]", program); -printf(" [-w rot_v] [-g gravity]\n\n"); -printf("-h Print this message.\n"); -printf("-i Print information about the demo.\n"); -printf("-x Enclose the particles in a box made of hexagons.\n"); -printf("-s speed Sets the number of new line segments per redraw \n"); -printf(" interval per line. Default value: 3.\n"); - -/*** The X port does not currently include a timer, so this feature is disabled. -printf("-f framenoise Sets the number of vertical retraces per redraw\n"); -printf(" interval. Example: -f 2 specifies one redraw per\n"); -printf(" 2 vertical retraces, or 30 frames per second.\n"); -printf(" Default value: 2.\n"); -************/ - -printf("-w rot_v Spins the hexagons on their centers, and the sides\n"); -printf(" of the box on their centers. Hexagons spin at the\n"); -printf(" rate rot_v degrees per redraw, and box sides spin\n"); -printf(" at -rot_v/2 degrees per redraw.\n"); -printf("-g gravity Sets the strength of the attraction of the eye to\n"); -printf(" the red particle. Actually, it's not gravity since\n"); -printf(" the attraction is proportionate to distance.\n"); -printf(" Default value: 0.002. Try large values!\n"); -/* input added for GLX port */ -printf(" Executions control: \n"); -printf(" step through single frames\n"); -printf(" g begin continuous frames\n"); -printf(" s stop continuous frames\n"); - -} - -void print_info(void) -{ -printf("\nLORENZ ATTRACTOR DEMO\n\n"); -printf("This program shows some particles stuck in a Lorenz attractor (the \n"); -printf("parameters used are r=28, b=8/3, sigma=10). The eye is attracted to \n"); -printf("the red particle, with a force directly proportional to distance. \n"); -printf("A command line argument puts the particles inside a box made of hexagons, \n"); -printf("helping to maintain the sense of 3 dimensions, but it can slow things down.\n"); -printf("Other options allow you to play with the redraw rate and gravity.\n\n"); - -printf("Try lorenz -h for the usage message.\n"); -} diff --git a/lib/glut-3.7.6/progs/demos/lorenz/lorenz.dsp b/lib/glut-3.7.6/progs/demos/lorenz/lorenz.dsp deleted file mode 100644 index e5eb290c416a673ceb3df4334a0104b37268e8a8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/lorenz/lorenz.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lorenz" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=lorenz - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lorenz.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lorenz.mak" CFG="lorenz - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lorenz - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "lorenz - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lorenz - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "lorenz - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "lorenz - Win32 Release" -# Name "lorenz - Win32 Debug" -# Begin Source File - -SOURCE=.\lorenz.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/newave/Imakefile b/lib/glut-3.7.6/progs/demos/newave/Imakefile deleted file mode 100644 index 12d04471d8de8dc27c5b77baf49ee29f4561982c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/newave/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -#include "../../../Glut.cf" - -TARGETS = newave - -SRCS = newave.c texture.c - -OBJS = newave.o texture.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(newave,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/newave/newave.c b/lib/glut-3.7.6/progs/demos/newave/newave.c deleted file mode 100644 index 802b6ebe67394c95c4addd3916f12f1bbe59e7b0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/newave/newave.c +++ /dev/null @@ -1,890 +0,0 @@ -/* - - Newave - Ported from the original IrisGL SGI demo - (see https://www.sgi.com/toolbox/src/) - - I've ported an old IrisGL demo, newave, to OpenGL and GLUT. - This port has a couple of new features compared to the - "ancient" GL demo: - - * environment mapping (very cool!) - * texture mapping - * line antialiasing (needs some work) - * better wave propagation - - I haven't implemented the mesh editing found in the old demo. - - By default the program loads "texmap.rgb" and "spheremap.rgb" - if no filenames are given as command line arguments. - Specify the texture map as the first argument and the sphere - map as the second argument. - - Left mouse rotates the scene, middle mouse or +/- keys zoom, - right mouse for menu. - - Erik Larsen - cayman@sprintmail.com - -*/ - -#include -#include -#include -#include "texture.h" - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#endif -#if defined(GL_EXT_polygon_offset) && !defined(GL_VERSION_1_1) -#define glPolygonOffset(A,B) glPolygonOffsetEXT(A,B) -/* OpenGL 1.1's polygon offset can be different for each - polygon mode primitive type. The EXT extension has - only one offset. */ -#define GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_EXT -#endif - -typedef int bool; -#define true 1 -#define false 0 - -/* Grid */ -#define MAXGRID 63 -enum {WIREFRAME, HIDDENLINE, FLATSHADED, SMOOTHSHADED, TEXTURED}; -enum {FULLSCREEN, FACENORMALS, ANTIALIAS, ENVMAP}; -enum {WEAK, NORMAL, STRONG}; -enum {SMALL, MEDIUM, LARGE, XLARGE}; -enum {CURRENT, FLAT, SPIKE, DIAGONALWALL, SIDEWALL, HOLE, - MIDDLEBLOCK, DIAGONALBLOCK, CORNERBLOCK, HILL, HILLFOUR}; -int displayMode = WIREFRAME; -int resetMode = DIAGONALBLOCK; -int grid = 17; -float dt = 0.004; -float force[MAXGRID][MAXGRID], - veloc[MAXGRID][MAXGRID], - posit[MAXGRID][MAXGRID], - vertNorms[MAXGRID][MAXGRID][3], - faceNorms[2][MAXGRID][MAXGRID][3], - faceNormSegs[2][2][MAXGRID][MAXGRID][3]; -bool waving = false, editing = false, - drawFaceNorms = false, antialias = false, - envMap = false; -#define SQRTOFTWOINV 1.0 / 1.414213562 - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -int texWidth, texHeight; -GLubyte *texData; -char *texFilename1 = "texmap.rgb", *texFilename2 = "spheremap.rgb"; -GLuint texId1, texId2; -float texCoords[MAXGRID][MAXGRID][2]; - -/* Viewing */ -float sphi=90.0, stheta=45.0; -float sdepth = 5.0/4.0 * MAXGRID; -float zNear=15.0, zFar=100.0; -float aspect = 5.0/4.0; -long xsize, ysize; -int downX, downY; -bool leftButton = false, middleButton = false; -int i,j; -GLfloat lightPosition[] = { 0.0, 0.0, 1.0, 1.0}; -int displayMenu, otherMenu, speedMenu, sizeMenu, - resetMenu, mainMenu; - -void getforce(void) -{ - float d; - - for(i=0;i 0) - { - add( avg, avg, faceNorms[0][i-1][j] ); - add( avg, avg, faceNorms[1][i-1][j] ); - } - /* Left & above */ - if (j > 0 && i < grid-1) - { - add( avg, avg, faceNorms[0][i][j-1] ); - add( avg, avg, faceNorms[1][i][j-1] ); - } - /* Left & below */ - if (j > 0 && i > 0) - { - add( avg, avg, faceNorms[1][i-1][j-1] ); - } - - /* Normalize */ - norm( avg ); - copy( vertNorms[i][j], avg ); - } - } -} - - -void getFaceNormSegs(void) -{ - float center0[3], center1[3], normSeg0[3], normSeg1[3]; - float geom0[3], geom1[3], geom2[3], geom3[3]; - for (i = 0; i < grid - 1; ++i) - { - for (j = 0; j < grid - 1; ++j) - { - geom0[0] = i; geom0[1] = j; geom0[2] = posit[i][j]; - geom1[0] = i; geom1[1] = j+1; geom1[2] = posit[i][j+1]; - geom2[0] = i+1; geom2[1] = j; geom2[2] = posit[i+1][j]; - geom3[0] = i+1; geom3[1] = j+1; geom3[2] = posit[i+1][j+1]; - - /* find center of triangle face by averaging three vertices */ - add( center0, geom2, geom0 ); - add( center0, center0, geom1 ); - scalDiv( center0, 3.0 ); - - add( center1, geom2, geom1 ); - add( center1, center1, geom3 ); - scalDiv( center1, 3.0 ); - - /* translate normal to center of triangle face to get normal segment */ - add( normSeg0, center0, faceNorms[0][i][j] ); - add( normSeg1, center1, faceNorms[1][i][j] ); - - copy( faceNormSegs[0][0][i][j], center0 ); - copy( faceNormSegs[1][0][i][j], center1 ); - - copy( faceNormSegs[0][1][i][j], normSeg0 ); - copy( faceNormSegs[1][1][i][j], normSeg1 ); - } - } -} - -void getTexCoords(void) -{ - for (i = 0; i < grid; ++i) - { - for (j = 0; j < grid; ++j) - { - texCoords[i][j][0] = (float)j/(float)(grid-1); - texCoords[i][j][1] = (float)i/(float)(grid-1); - } - } -} - - -void wave(void) -{ - if (waving) - { - getforce(); - getvelocity(); - getposition(); - glutPostRedisplay(); - } -} - -void go(void) -{ - waving = true; - editing = false; - glutIdleFunc(wave); -} - -void stop(void) -{ - waving = false; - glutIdleFunc(NULL); -} - -void edit(void) -{ - stop(); - editing = true; -} - -void reverse(void) -{ - for(i=1;i<(grid-1);i++) - for(j=1;j<(grid-1);j++) - veloc[i][j]= -veloc[i][j]; - - if (!waving) - go(); -} - -void reset(int value) -{ - if (waving) - stop(); - - if (value != CURRENT) - resetMode = value; - for(i=0;i grid/3 && j > grid/3)&&(i < grid*2/3 && j < grid*2/3))) ? grid/4 : 0.0; - break; - case DIAGONALWALL: - posit[i][j]= (((grid-i)-j<3) && ((grid-i)-j>0)) ? grid/6 : 0.0; - break; - case SIDEWALL: - posit[i][j]= (i==1) ? grid/4 : 0.0; - break; - case DIAGONALBLOCK: - posit[i][j]= ((grid-i)-j<3) ? grid/6 : 0.0; - break; - case MIDDLEBLOCK: - posit[i][j]= ((i > grid/3 && j > grid/3)&&(i < grid*2/3 && j < grid*2/3)) ? grid/4 : 0.0; - break; - case CORNERBLOCK: - posit[i][j]= ((i > grid*3/4 && j > grid*3/4)) ? grid/4 : 0.0; - break; - case HILL: - posit[i][j]= - (sin(M_PI * ((float)i/(float)grid)) + - sin(M_PI * ((float)j/(float)grid)))* grid/6.0; - break; - case HILLFOUR: - posit[i][j]= - (sin(M_PI*2 * ((float)i/(float)grid)) + - sin(M_PI*2 * ((float)j/(float)grid)))* grid/6.0; - break; - } - if (i==0||j==0||i==grid-1||j==grid-1) posit[i][j]=0.0; - } - glutPostRedisplay(); -} - -void setSize(int value) -{ - int prevGrid = grid; - switch(value) - { - case SMALL : grid = MAXGRID/4; break; - case MEDIUM: grid = MAXGRID/2; break; - case LARGE : grid = MAXGRID/1.5; break; - case XLARGE : grid = MAXGRID; break; - } - if (prevGrid > grid) - { - reset(resetMode); - } - zNear= grid/10.0; - zFar= grid*3.0; - sdepth = 5.0/4.0 * grid; - getTexCoords(); - glutPostRedisplay(); -} - -void setSpeed(int value) -{ - switch(value) - { - case WEAK : dt = 0.001; break; - case NORMAL: dt = 0.004; break; - case STRONG: dt = 0.008; break; - } -} - -void setDisplay(int value) -{ - displayMode = value; - switch(value) - { - case WIREFRAME : - glShadeModel(GL_FLAT); - glDisable(GL_LIGHTING); - break; - case HIDDENLINE: - glShadeModel(GL_FLAT); - glDisable(GL_LIGHTING); - break; - case FLATSHADED : - glShadeModel(GL_FLAT); - glEnable(GL_LIGHTING); - break; - case SMOOTHSHADED: - glShadeModel(GL_SMOOTH); - glEnable(GL_LIGHTING); - break; - case TEXTURED: - glShadeModel(GL_SMOOTH); - glEnable(GL_LIGHTING); - break; - } - glutPostRedisplay(); -} - -void setOther(int value) -{ - switch (value) - { - case FULLSCREEN: - glutFullScreen(); - break; - case FACENORMALS: - drawFaceNorms = !drawFaceNorms; - break; - case ANTIALIAS: - antialias = !antialias; - if (antialias) - { - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_LINE_SMOOTH); - glLineWidth(1.5); - } - else - { - glDisable(GL_BLEND); - glDisable(GL_LINE_SMOOTH); - glLineWidth(1.0); - } - break; - case ENVMAP: - envMap = !envMap; - if (envMap) - { - glBindTexture(GL_TEXTURE_2D, texId2); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - } - else - { - glBindTexture(GL_TEXTURE_2D, texId1); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - } - break; - } - glutPostRedisplay(); -} - -void setMain(int value) -{ - switch(value) - { - case 1: edit(); break; - case 2: go(); break; /* set idle func to something */ - case 3: stop(); break; /* set idle func to null */ - case 4: reverse(); break; - case 5: exit(0); break; - } -} - - -void drawFaceNormals(void) -{ - glColor3f(1.0,1.0,1.0); - for (i = 0; i < grid - 1; ++i) - { - for (j = 0; j < grid - 1; ++j) - { - glBegin(GL_LINES); - glVertex3fv(faceNormSegs[0][0][i][j]); - glVertex3fv(faceNormSegs[0][1][i][j]); - glEnd(); - - glBegin(GL_LINES); - glVertex3fv(faceNormSegs[1][0][i][j]); - glVertex3fv(faceNormSegs[1][1][i][j]); - glEnd(); - } - } -} - -void drawSmoothShaded(void) -{ - glColor3f(0.8f, 0.2f, 0.8f); - for (i = 0; i < grid - 1; ++i) - { - glBegin(GL_TRIANGLE_STRIP); - for (j = 0; j < grid; ++j) - { - glNormal3fv( vertNorms[i][j] ); - glVertex3f( i, j, posit[i][j] ); - glNormal3fv( vertNorms[i+1][j] ); - glVertex3f( i+1, j, posit[i+1][j] ); - } - glEnd(); - } -} - -void drawWireframe(void) -{ - glColor3f(1.0, 1.0, 1.0); - - for(i=0;i 1 && argv[1] != 0) - texFilename1 = argv[1]; - if (argc > 2 && argv[2] != 0) - texFilename2 = argv[2]; - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - glClearColor(0.0, 0.0, 0.0, 0.0); - glPolygonOffset(1.0, 1.0); - glEnable(GL_CULL_FACE); - glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); - glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - glEnable(GL_COLOR_MATERIAL); - glColorMaterial(GL_FRONT, GL_DIFFUSE); - glLightfv (GL_LIGHT0, GL_POSITION, lightPosition); - glEnable(GL_LIGHT0); - loadImageTexture(); - - setSize(MEDIUM); - setSpeed(NORMAL); - setDisplay(TEXTURED); - setOther(ENVMAP); - reset(HILLFOUR); - - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutVisibilityFunc(visibility); - - glutKeyboardFunc(keyboard); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - displayMenu = glutCreateMenu(setDisplay); - glutAddMenuEntry("Wireframe", WIREFRAME); - glutAddMenuEntry("Hidden Line", HIDDENLINE); - glutAddMenuEntry("Flat Shaded", FLATSHADED); - glutAddMenuEntry("Smooth Shaded", SMOOTHSHADED); - glutAddMenuEntry("Textured", TEXTURED); - - otherMenu = glutCreateMenu(setOther); - glutAddMenuEntry("Full Screen", FULLSCREEN); - glutAddMenuEntry("Face Normals", FACENORMALS); - glutAddMenuEntry("Antialias", ANTIALIAS); - glutAddMenuEntry("Environment Map", ENVMAP); - - speedMenu = glutCreateMenu(setSpeed); - glutAddMenuEntry("Weak", WEAK); - glutAddMenuEntry("Normal", NORMAL); - glutAddMenuEntry("Strong", STRONG); - - sizeMenu = glutCreateMenu(setSize); - glutAddMenuEntry("Small", SMALL); - glutAddMenuEntry("Medium", MEDIUM); - glutAddMenuEntry("Large", LARGE); - glutAddMenuEntry("Extra Large", XLARGE); - - resetMenu = glutCreateMenu(reset); - glutAddMenuEntry("Current", CURRENT); - glutAddMenuEntry("Spike", SPIKE); - glutAddMenuEntry("Hole", HOLE); - glutAddMenuEntry("Diagonal Wall", DIAGONALWALL); - glutAddMenuEntry("Side Wall", SIDEWALL); - glutAddMenuEntry("Middle Block", MIDDLEBLOCK); - glutAddMenuEntry("Diagonal Block", DIAGONALBLOCK); - glutAddMenuEntry("Corner Block", CORNERBLOCK); - glutAddMenuEntry("Hill", HILL); - glutAddMenuEntry("Hill Four", HILLFOUR); - - mainMenu = glutCreateMenu(setMain); - glutAddMenuEntry("Go", 2); - glutAddMenuEntry("Stop", 3); - glutAddMenuEntry("Reverse", 4); - glutAddSubMenu("Display", displayMenu); - glutAddSubMenu("Reset", resetMenu); - glutAddSubMenu("Size", sizeMenu); - glutAddSubMenu("Speed", speedMenu); - glutAddSubMenu("Other", otherMenu); - glutAddMenuEntry("Exit", 5); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - - diff --git a/lib/glut-3.7.6/progs/demos/newave/newave.dsp b/lib/glut-3.7.6/progs/demos/newave/newave.dsp deleted file mode 100644 index 6aaf004716d335390781b9360781d14b5e2de291..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/newave/newave.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="newave" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=newave - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "newave.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "newave.mak" CFG="newave - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "newave - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "newave - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "newave - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "newave - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "newave - Win32 Release" -# Name "newave - Win32 Debug" -# Begin Source File - -SOURCE=.\newave.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/newave/spheremap.rgb b/lib/glut-3.7.6/progs/demos/newave/spheremap.rgb deleted file mode 100644 index 87665fb5dbe374cd8fc6d83dc0372ac9cc0d4444..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/newave/spheremap.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/newave/texmap.rgb b/lib/glut-3.7.6/progs/demos/newave/texmap.rgb deleted file mode 100644 index 9d41d5efdad836fb38016eea34e357aac9ff7468..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/newave/texmap.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/newave/texture.c b/lib/glut-3.7.6/progs/demos/newave/texture.c deleted file mode 100644 index a72bf58b74ebf6cc7dfc050b7dde7b9a13faa0b3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/newave/texture.c +++ /dev/null @@ -1,283 +0,0 @@ - -/* texture.c - by David Blythe, SGI */ - -/* read_texture is a simplistic routine for reading an SGI .rgb image file. */ - -#include -#include -#include -#include - -void -bwtorgba(unsigned char *b,unsigned char *l,int n) { - while(n--) { - l[0] = *b; - l[1] = *b; - l[2] = *b; - l[3] = 0xff; - l += 4; b++; - } -} - -void -rgbtorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *l,int n) { - while(n--) { - l[0] = r[0]; - l[1] = g[0]; - l[2] = b[0]; - l[3] = 0xff; - l += 4; r++; g++; b++; - } -} - -void -rgbatorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *a,unsigned char *l,int n) { - while(n--) { - l[0] = r[0]; - l[1] = g[0]; - l[2] = b[0]; - l[3] = a[0]; - l += 4; r++; g++; b++; a++; - } -} - -typedef struct _ImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short xsize, ysize, zsize; - unsigned int min, max; - unsigned int wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp, *tmpR, *tmpG, *tmpB; - unsigned long rleEnd; - unsigned int *rowStart; - int *rowSize; -} ImageRec; - -static void -ConvertShort(unsigned short *array, unsigned int length) { - unsigned short b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void -ConvertUint(unsigned *array, unsigned int length) { - unsigned int b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static ImageRec *ImageOpen(char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - ImageRec *image; - int swapFlag; - int x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) { - swapFlag = 1; - } else { - swapFlag = 0; - } - - image = (ImageRec *)malloc(sizeof(ImageRec)); - if (image == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - if ((image->file = fopen(fileName, "rb")) == NULL) { - perror(fileName); - exit(1); - } - - fread(image, 1, 12, image->file); - - if (swapFlag) { - ConvertShort(&image->imagic, 6); - } - - image->tmp = (unsigned char *)malloc(image->xsize*256); - image->tmpR = (unsigned char *)malloc(image->xsize*256); - image->tmpG = (unsigned char *)malloc(image->xsize*256); - image->tmpB = (unsigned char *)malloc(image->xsize*256); - if (image->tmp == NULL || image->tmpR == NULL || image->tmpG == NULL || - image->tmpB == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - - if ((image->type & 0xFF00) == 0x0100) { - x = image->ysize * image->zsize * (int) sizeof(unsigned); - image->rowStart = (unsigned *)malloc(x); - image->rowSize = (int *)malloc(x); - if (image->rowStart == NULL || image->rowSize == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - image->rleEnd = 512 + (2 * x); - fseek(image->file, 512, SEEK_SET); - fread(image->rowStart, 1, x, image->file); - fread(image->rowSize, 1, x, image->file); - if (swapFlag) { - ConvertUint(image->rowStart, x/(int) sizeof(unsigned)); - ConvertUint((unsigned *)image->rowSize, x/(int) sizeof(int)); - } - } - return image; -} - -static void -ImageClose(ImageRec *image) { - fclose(image->file); - free(image->tmp); - free(image->tmpR); - free(image->tmpG); - free(image->tmpB); - free(image); -} - -static void -ImageGetRow(ImageRec *image, unsigned char *buf, int y, int z) { - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((image->type & 0xFF00) == 0x0100) { - fseek(image->file, (long) image->rowStart[y+z*image->ysize], SEEK_SET); - fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize], - image->file); - - iPtr = image->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int)(pixel & 0x7F); - if (!count) { - return; - } - if (pixel & 0x80) { - while (count--) { - *oPtr++ = *iPtr++; - } - } else { - pixel = *iPtr++; - while (count--) { - *oPtr++ = pixel; - } - } - } - } else { - fseek(image->file, 512+(y*image->xsize)+(z*image->xsize*image->ysize), - SEEK_SET); - fread(buf, 1, image->xsize, image->file); - } -} - -unsigned * -read_texture(char *name, int *width, int *height, int *components) { - unsigned *base, *lptr; - unsigned char *rbuf, *gbuf, *bbuf, *abuf; - ImageRec *image; - int y; - - image = ImageOpen(name); - - if(!image) - return NULL; - (*width)=image->xsize; - (*height)=image->ysize; - (*components)=image->zsize; - base = (unsigned *)malloc(image->xsize*image->ysize*sizeof(unsigned)); - rbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - gbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - bbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - abuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - if(!base || !rbuf || !gbuf || !bbuf) - return NULL; - lptr = base; - for(y=0; yysize; y++) { - if(image->zsize>=4) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - ImageGetRow(image,abuf,y,3); - rgbatorgba(rbuf,gbuf,bbuf,abuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } else if(image->zsize==3) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - rgbtorgba(rbuf,gbuf,bbuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } else { - ImageGetRow(image,rbuf,y,0); - bwtorgba(rbuf,(unsigned char *)lptr,image->xsize); - lptr += image->xsize; - } - } - ImageClose(image); - free(rbuf); - free(gbuf); - free(bbuf); - free(abuf); - - return (unsigned *) base; -} - -void imgLoad(char *filenameIn, int borderIn, GLfloat borderColorIn[4], - int *wOut, int *hOut, GLubyte ** imgOut) -{ - int border = borderIn; - int width, height; - int w, h; - GLubyte *image, *img, *p; - int i, j, components; - - image = (GLubyte *) read_texture(filenameIn, &width, &height, &components); - w = width + 2 * border; - h = height + 2 * border; - img = (GLubyte *) calloc(w * h, 4 * sizeof(unsigned char)); - - p = img; - for (j = -border; j < height + border; ++j) { - for (i = -border; i < width + border; ++i) { - if (0 <= j && j <= height - 1 && 0 <= i && i <= width - 1) { - p[0] = image[4 * (j * width + i) + 0]; - p[1] = image[4 * (j * width + i) + 1]; - p[2] = image[4 * (j * width + i) + 2]; - p[3] = 0xff; - } else { - p[0] = borderColorIn[0] * 0xff; - p[1] = borderColorIn[1] * 0xff; - p[2] = borderColorIn[2] * 0xff; - p[3] = borderColorIn[3] * 0xff; - } - p += 4; - } - } - free(image); - *wOut = w; - *hOut = h; - *imgOut = img; -} diff --git a/lib/glut-3.7.6/progs/demos/newave/texture.h b/lib/glut-3.7.6/progs/demos/newave/texture.h deleted file mode 100644 index d2b8c025ad6b802f8aa076a23bee54b084f4aba3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/newave/texture.h +++ /dev/null @@ -1,11 +0,0 @@ - -/* texture.h - by David Blythe, SGI */ - -/* Simple SGI .rgb image file loader routine. */ -unsigned * -read_texture(char *name, int *width, int *height, int *components); - -extern void imgLoad(char *filenameIn, - int borderIn, GLfloat borderColorIn[4], - int *wOut, int *hOut, GLubyte ** imgOut); - diff --git a/lib/glut-3.7.6/progs/demos/opengl_logo/Imakefile b/lib/glut-3.7.6/progs/demos/opengl_logo/Imakefile deleted file mode 100644 index ac0c51d861983d4956894b0832b450650791b697..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/opengl_logo/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = opengl_logo - -SRCS = opengl_logo.c def_logo.c - -OBJS = opengl_logo.o def_logo.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(opengl_logo,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/opengl_logo/def_logo.c b/lib/glut-3.7.6/progs/demos/opengl_logo/def_logo.c deleted file mode 100644 index 41b9e201a1416853e157ce5d3c4759e87ae6580d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/opengl_logo/def_logo.c +++ /dev/null @@ -1,622 +0,0 @@ -/* - * Def_logo.c - * - * This file is part of the openGL-logo demo. - * (c) Henk Kok (kok@wins.uva.nl) - * - * Copying, redistributing, etc is permitted as long as this copyright - * notice and the Dutch variable names :) stay in tact. - */ - -#include -#include -#include - -/* some math.h's don't define M_PI */ -#ifndef M_PI -#define M_PI 3.14159265359 -#endif - -#define ACC 8 -#define ACC2 16 -#define ACC3 48 -#define ACC4 24 -#define THLD 0.6 -#define THLD2 0.8 - -extern int angle, rotating; -extern float progress; - -GLfloat TRANS[7][3]; -GLfloat ROTAXIS[7][3]; -GLfloat ROT[7]; - -GLfloat char_El[ACC3+1][ACC][3]; -GLfloat normal_El[ACC3+1][ACC][3]; - -GLfloat char_O[ACC4][ACC][3]; -GLfloat normal_O[ACC4][ACC][3]; - -GLfloat char_P[ACC2][ACC][3]; -GLfloat normal_P[ACC2][ACC][3]; - -GLfloat char_G[ACC4][ACC][3]; -GLfloat normal_G[ACC4][ACC][3]; - -GLfloat accSIN[ACC], accCOS[ACC]; - -GLfloat difmat4[4] = { 0.425, 0.570, 0.664, 1.0 }; -GLfloat difamb4[4] = { 0.425, 0.570, 0.664, 1.0 }; -GLfloat matspec4[4] = { 0.174, 0.174, 0.174, 1.0 }; - -int rnd(int i) -{ - return rand()%i; -} - -void groen_texture(void) -{ - glMaterialfv(GL_FRONT, GL_DIFFUSE, difmat4); - glMaterialfv(GL_FRONT, GL_AMBIENT, difamb4); - glMaterialfv(GL_FRONT, GL_SPECULAR, matspec4); - glMaterialf(GL_FRONT, GL_SHININESS, 35.0); -} - -void def_O(void) -{ - float a, s, c, ln; - int i,j,k,l,m,n; - float dx, dy; - float dx1, dx2, dy1, dy2, dz1, dz2; - GLfloat center_O[ACC4+4][3]; - GLfloat width_O[ACC4+4]; - for (i=0;i1.01?0.8:0)) + 0.8; - center_O[i][2] = 0.0; - width_O[i] = 0.6; - } -/* I should be able to generalise this. oh well */ - for (i=0;iTHLD?THLD:s)); - } - } - for (i=0;i1.01?0.7:0)) + 0.7; - center_P[i][2] = 0.0; - width_P[i] = 0.5; - } - - for (i=0;iTHLD?THLD:s)); - } - } - for (i=0;iTHLD2?THLD2:s)); - } - } - for (i=0;i1.01?0.8:0)) + 0.8; - center_G[i][2] = 0.0; - width_G[i] = 0.9; - if (i>ACC4*3/4) - width_G[i] = 0.9 - ((i-ACC4*3/4)*0.9)/ACC; - } - for (i=0;iTHLD?THLD:s)); - } - } - for (i=0;i=ACC) - k = 0; - glBegin(GL_QUAD_STRIP); - for (j=0;j=ACC) - k = 0; - glBegin(GL_QUAD_STRIP); - for (j=0;j=ACC) - k = 0; - glBegin(GL_QUAD_STRIP); - glNormal3f(normal_P[0][k][0], normal_P[0][k][1], normal_P[0][k][2]); - glVertex3f(char_P[0][k][0], char_P[0][k][1]+0.0, char_P[0][k][2]); - glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]); - glVertex3f(char_P[0][i][0], char_P[0][i][1]+0.0, char_P[0][i][2]); - for (j=1;j=ACC) - k = 0; - glBegin(GL_QUAD_STRIP); - for (j=0;j<=ACC3;j++) - { - glNormal3f(normal_El[j][k][0], normal_El[j][k][1], normal_El[j][k][2]); - glVertex3f(char_El[j][k][0], char_El[j][k][1], char_El[j][k][2]); - glNormal3f(normal_El[j][i][0], normal_El[j][i][1], normal_El[j][i][2]); - glVertex3f(char_El[j][i][0], char_El[j][i][1], char_El[j][i][2]); - } - glEnd(); - } -} - -void draw_N(void) -{ - int i,j,k; - for (i=0;i=ACC) - k = 0; - glBegin(GL_QUAD_STRIP); - for (j=0;j<=ACC2/2;j++) - { - glNormal3f(normal_P[j][k][0], normal_P[j][k][1], normal_P[j][k][2]); - glVertex3f(char_P[j][k][0], char_P[j][k][1], char_P[j][k][2]); - glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]); - glVertex3f(char_P[j][i][0], char_P[j][i][1], char_P[j][i][2]); - } - glEnd(); - } - - j = 0; - glBegin(GL_QUAD_STRIP); - for (i=0;i=ACC) - k = 0; - glBegin(GL_QUAD_STRIP); - glNormal3f(normal_G[0][k][0], normal_G[0][k][1], normal_G[0][k][2]); - glVertex3f(char_G[0][k][0], char_G[0][k][1]+1.2, char_G[0][k][2]); - glNormal3f(normal_G[0][i][0], normal_G[0][i][1], normal_G[0][i][2]); - glVertex3f(char_G[0][i][0], char_G[0][i][1]+1.2, char_G[0][i][2]); - for (j=1;j=0;i--) - glVertex3f(5.6, 0.9+0.9*accSIN[i], 0.9*accCOS[i]); - glVertex3f(5.6, 0.9+0.9*accSIN[ACC-1], 0.9*accCOS[ACC-1]); - glEnd(); -} - -void draw_part(int i) -{ - glPushMatrix(); - glTranslatef(TRANS[i][0]*progress, TRANS[i][1]*progress, TRANS[i][2]*progress); - glRotatef(ROT[i]*progress, ROTAXIS[i][0], ROTAXIS[i][1], ROTAXIS[i][2]); - switch(i) - { - case 0: draw_El(); break; - case 1: draw_O(); break; - case 2: draw_P(); break; - case 3: draw_E(); break; - case 4: draw_N(); break; - case 5: draw_G(); break; - case 6: draw_L(); break; - } - glPopMatrix(); -} - -void draw_logo(void) -{ - groen_texture(); - glEnable(GL_CULL_FACE); - glTranslatef(-2.8, 0.0, 0.0); - - draw_part(0); - glTranslatef(-12.0, 4.3, 0.0); - draw_part(1); - glTranslatef(7.3, 0.0, 0.0); - draw_part(2); - glTranslatef(5.4, 0.0, 0.0); - draw_part(3); - glTranslatef(5.4, 0.0, 0.0); - draw_part(4); - glTranslatef(7.4, 0.0, 0.0); - draw_part(5); - glTranslatef(6.8, 0.0, 0.0); - draw_part(6); -} diff --git a/lib/glut-3.7.6/progs/demos/opengl_logo/opengl_logo.c b/lib/glut-3.7.6/progs/demos/opengl_logo/opengl_logo.c deleted file mode 100644 index 1672858d6d193bf6bd438c75e1bf04667d2b6338..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/opengl_logo/opengl_logo.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Main.c - * - * This file is part of the openGL-logo demo. - * (c) Henk Kok (kok@wins.uva.nl) - * - * Copying, redistributing, etc is permitted as long as this copyright - * notice and the Dutch variable names :) stay in tact. - */ - -#include -#include -#include -#include - -GLfloat lightpos[4] = { 1.0, 1.0, 1.0, 0.0 }; -GLfloat lightamb[4] = { 0.3, 0.3, 0.3, 1.0 }; -GLfloat lightdif[4] = { 0.8, 0.8, 0.8, 1.0 }; -float speed=0, progress = 1; -void SetCamera(void); - -extern void randomize(void); -extern void def_logo(void); -extern void draw_logo(void); - -void do_display (void) -{ - SetCamera(); - draw_logo(); - glFlush(); - glutSwapBuffers(); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - do_display(); -} - -void myinit (void) -{ - glShadeModel (GL_SMOOTH); - glEnable(GL_DEPTH_TEST); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glLightfv(GL_LIGHT0, GL_AMBIENT, lightamb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightdif); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glColor3f(1.0, 1.0, 1.0); - glClearColor(0.0, 0.0, 0.0, 1.0); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glEnable(GL_NORMALIZE); - def_logo(); - glCullFace(GL_BACK); - glEnable(GL_CULL_FACE); -} - -/* ARGSUSED1 */ -void parsekey(unsigned char key, int x, int y) -{ - switch (key) - { - case 27: exit(0); break; - case 13: break; - case ' ': progress = 1; randomize(); break; - } -} - -/* ARGSUSED1 */ -void parsekey_special(int key, int x, int y) -{ - switch (key) - { - case GLUT_KEY_UP: break; - case GLUT_KEY_DOWN: break; - case GLUT_KEY_RIGHT: break; - case GLUT_KEY_LEFT: break; - } -} - -void Animate(void) -{ - speed = -0.95*speed + progress*0.05; - if (progress > 0.0 && speed < 0.0003) - speed = 0.0003; - if (speed > 0.01) - speed = 0.01; - progress = progress - speed; - if (progress < 0.0) - { - progress = 0.0; - speed = 0; - } - glutPostRedisplay(); -} - -void myReshape(int w, int h) -{ - glMatrixMode (GL_MODELVIEW); - glViewport (0, 0, w, h); - glLoadIdentity(); - SetCamera(); -} - -void SetCamera(void) -{ - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - glFrustum (-0.1333, 0.1333, -0.1, 0.1, 0.2, 150.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0,1.5,2, 0,1.5,0, 0,1,0); - glTranslatef(0.0, -8.0, -45.0); - glRotatef(-progress*720, 0.0, 1.0, 0.0); -} - -int main(int argc, char *argv[]) -{ - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE | GLUT_MULTISAMPLE); - glutInitWindowPosition(200, 0); - glutInitWindowSize(640, 480); - glutCreateWindow("Rotating OpenGL Logo"); - glutDisplayFunc(display); - glutKeyboardFunc(parsekey); - glutSpecialFunc(parsekey_special); - glutReshapeFunc(myReshape); - glutIdleFunc(Animate); - randomize(); - myinit(); - glutSwapBuffers(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/opengl_logo/opengl_logo.dsp b/lib/glut-3.7.6/progs/demos/opengl_logo/opengl_logo.dsp deleted file mode 100644 index c5b130d509503df0e31ee1b96e770473c42c7a04..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/opengl_logo/opengl_logo.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="opengl_logo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=opengl_logo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "opengl_logo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "opengl_logo.mak" CFG="opengl_logo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "opengl_logo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "opengl_logo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "opengl_logo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "opengl_logo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "opengl_logo - Win32 Release" -# Name "opengl_logo - Win32 Debug" -# Begin Source File - -SOURCE=.\def_logo.c -# End Source File -# Begin Source File - -SOURCE=.\opengl_logo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/particle/Imakefile b/lib/glut-3.7.6/progs/demos/particle/Imakefile deleted file mode 100644 index 92614a7cbf6c583cf28f4ae9cea939563eadcc2f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/particle/Imakefile +++ /dev/null @@ -1,15 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -#include "../../../Glut.cf" - -TARGETS = particle - -SRCS = particle.c -OBJS = particle.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(particle,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/particle/particle.c b/lib/glut-3.7.6/progs/demos/particle/particle.c deleted file mode 100644 index 6dacc6327a16b0f457318a7fdea638338d9e7871..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/particle/particle.c +++ /dev/null @@ -1,728 +0,0 @@ -/* - particle.c - Nate Robins, 1998 - - An example of a simple particle system. - - */ - - -#include -#include -#include -#include -#include - - -#ifdef _WIN32 -#define drand48() ((float)rand()/RAND_MAX) -#endif - - -/* #define SCREEN_SAVER_MODE */ - -#define PS_GRAVITY -9.8 -#define PS_WATERFALL 0 -#define PS_FOUNTAIN 1 - - -typedef struct { - float x, y, z; - float radius; -} PSsphere; - -typedef struct { - float position[3]; /* current position */ - float previous[3]; /* previous position */ - float velocity[3]; /* velocity (magnitude & direction) */ - float dampening; /* % of energy lost on collision */ - int alive; /* is this particle alive? */ -} PSparticle; - - -PSparticle* particles = NULL; -#define NUM_SPHERES 3 -PSsphere spheres[NUM_SPHERES] = { /* position of spheres */ - { -0.1, 0.6, 0, 0.4 }, - { -0.7, 1.4, 0, 0.25 }, - { 0.1, 1.5, 0.1, 0.3 }, -}; -int num_particles = 10000; -int type = PS_WATERFALL; -int points = 1; -int draw_spheres = 1; -int frame_rate = 1; -float frame_time = 0; -float flow = 500; -float slow_down = 1; - -float spin_x = 0; -float spin_y = 0; -int point_size = 4; - - -/* timedelta: returns the number of seconds that have elapsed since - the previous call to the function. */ -#if defined(_WIN32) -#include -#else -#include -#include -#include -#include -#endif -#ifndef CLK_TCK -#define CLK_TCK 1000 -#endif -float -timedelta(void) -{ - static long begin = 0; - static long finish, difference; - -#if defined(_WIN32) - static struct timeb tb; - ftime(&tb); - finish = tb.time*1000+tb.millitm; -#else - static struct tms tb; - finish = times(&tb); -#endif - - difference = finish - begin; - begin = finish; - - return (float)difference/(float)CLK_TCK; -} - - -/* text: draws a string of text with an 18 point helvetica bitmap font - at position (x,y) in window space (bottom left corner is (0,0). */ -void -text(int x, int y, char* s) -{ - int lines; - char* p; - - glDisable(GL_DEPTH_TEST); - glDisable(GL_FOG); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0, glutGet(GLUT_WINDOW_WIDTH), - 0, glutGet(GLUT_WINDOW_HEIGHT), -1, 1); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glColor3ub(0, 0, 0); - glRasterPos2i(x+1, y-1); - for(p = s, lines = 0; *p; p++) { - if (*p == '\n') { - lines++; - glRasterPos2i(x+1, y-1-(lines*18)); - } - glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *p); - } - glColor3ub(128, 0, 255); - glRasterPos2i(x, y); - for(p = s, lines = 0; *p; p++) { - if (*p == '\n') { - lines++; - glRasterPos2i(x, y-(lines*18)); - } - glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *p); - } - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glEnable(GL_FOG); - glEnable(GL_DEPTH_TEST); -} - - -int -fequal(float a, float b) -{ - float epsilon = 0.1; - float f = a - b; - - if (f < epsilon && f > -epsilon) - return 1; - else - return 0; -} - - -void -psTimeStep(PSparticle* p, float dt) -{ - if (p->alive == 0) - return; - - p->velocity[0] += 0; - p->velocity[1] += PS_GRAVITY*dt; - p->velocity[2] += 0; - - p->previous[0] = p->position[0]; - p->previous[1] = p->position[1]; - p->previous[2] = p->position[2]; - - p->position[0] += p->velocity[0]*dt; - p->position[1] += p->velocity[1]*dt; - p->position[2] += p->velocity[2]*dt; -} - - -void -psNewParticle(PSparticle* p, float dt) -{ - if (type == PS_WATERFALL) { - p->velocity[0] = -2*(drand48()-0.0); - p->velocity[1] = 0; - p->velocity[2] = 0.5*(drand48()-0.0); - p->position[0] = 0; - p->position[1] = 2; - p->position[2] = 0; - p->previous[0] = p->position[0]; - p->previous[1] = p->position[1]; - p->previous[2] = p->position[2]; - p->dampening = 0.45*drand48(); - p->alive = 1; - } else if (type == PS_FOUNTAIN) { - p->velocity[0] = 2*(drand48()-0.5); - p->velocity[1] = 5; - p->velocity[2] = 2*(drand48()-0.5); - p->position[0] = -0.1; - p->position[1] = 0.9; - p->position[2] = 0; - p->previous[0] = p->position[0]; - p->previous[1] = p->position[1]; - p->previous[2] = p->position[2]; - p->dampening = 0.35*drand48(); - p->alive = 1; - } - - psTimeStep(p, 2*dt*drand48()); -} - - -/* psBounce: the particle has gone past (or exactly hit) the ground - plane, so calculate the time at which the particle actually - intersected the ground plane (s). essentially, this just rolls - back time to when the particle hit the ground plane, then starts - time again from then. - - - - o A (previous position) - | | \ - | s \ o (position it _should_ be at) - - t | \ / | t - s - | - ------X-------- - - | \ - - o B (new position) - - A + V*s = 0 or s = -A/V - - to calculate where the particle should be: - - A + V*t + V*(t-s)*d - - where d is a damping factor which accounts for the loss - of energy due to the bounce. */ -void -psBounce(PSparticle* p, float dt) -{ - float s; - - if (p->alive == 0) - return; - - /* since we know it is the ground plane, we only need to - calculate s for a single dimension. */ - s = -p->previous[1]/p->velocity[1]; - - p->position[0] = (p->previous[0] + p->velocity[0] * s + - p->velocity[0] * (dt-s) * p->dampening); - p->position[1] = -p->velocity[1] * (dt-s) * p->dampening; /* reflect */ - p->position[2] = (p->previous[2] + p->velocity[2] * s + - p->velocity[2] * (dt-s) * p->dampening); - - /* damp the reflected velocity (since the particle hit something, - it lost some energy) */ - p->velocity[0] *= p->dampening; - p->velocity[1] *= -p->dampening; /* reflect */ - p->velocity[2] *= p->dampening; -} - -void -psCollideSphere(PSparticle* p, PSsphere* s) -{ - float vx = p->position[0] - s->x; - float vy = p->position[1] - s->y; - float vz = p->position[2] - s->z; - float distance; - - if (p->alive == 0) - return; - - distance = sqrt(vx*vx + vy*vy + vz*vz); - - if (distance < s->radius) { -#if 0 - vx /= distance; vy /= distance; vz /= distance; - d = 2*(-vx*p->velocity[0] + -vy*p->velocity[1] + -vz*p->velocity[2]); - p->velocity[0] += vx*d*2; - p->velocity[1] += vy*d*2; - p->velocity[2] += vz*d*2; - d = sqrt(p->velocity[0]*p->velocity[0] + - p->velocity[1]*p->velocity[1] + - p->velocity[2]*p->velocity[2]); - p->velocity[0] /= d; - p->velocity[1] /= d; - p->velocity[2] /= d; -#else - p->position[0] = s->x+(vx/distance)*s->radius; - p->position[1] = s->y+(vy/distance)*s->radius; - p->position[2] = s->z+(vz/distance)*s->radius; - p->previous[0] = p->position[0]; - p->previous[1] = p->position[1]; - p->previous[2] = p->position[2]; - p->velocity[0] = vx/distance; - p->velocity[1] = vy/distance; - p->velocity[2] = vz/distance; -#endif - } -} - - -void -reshape(int width, int height) -{ - float black[] = { 0, 0, 0, 0 }; - - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60, (float)width/height, 0.1, 1000); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 1, 3, 0, 1, 0, 0, 1, 0); - glFogfv(GL_FOG_COLOR, black); - glFogf(GL_FOG_START, 2.5); - glFogf(GL_FOG_END, 4); - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_LINEAR); - glPointSize(point_size); - glEnable(GL_POINT_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - - timedelta(); -} - - -void -display(void) -{ - static int i; - static float c; - static int j = 0; - static char s[32]; - static int frames = 0; - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - - glRotatef(spin_y, 1, 0, 0); - glRotatef(spin_x, 0, 1, 0); - - glEnable(GL_LIGHTING); - if (draw_spheres) { - for (i = 0; i < draw_spheres; i++) { - glPushMatrix(); - glTranslatef(spheres[i].x, spheres[i].y, spheres[i].z); - glColor3ub(0, 255, 128); - glutSolidSphere(spheres[i].radius, 16, 16); - glPopMatrix(); - } - } - glDisable(GL_LIGHTING); - - glBegin(GL_QUADS); - glColor3ub(0, 128, 255); - glVertex3f(-2, 0, -2); - glVertex3f(-2, 0, 2); - glVertex3f(2, 0, 2); - glVertex3f(2, 0, -2); - glEnd(); - - if (points) { - glBegin(GL_POINTS); - - for (i = 0; i < num_particles; i++) { - if (particles[i].alive == 0) - continue; - c = particles[i].position[1]/2.1*255; - glColor3ub(c, 128+c*0.5, 255); - glVertex3fv(particles[i].position); - } - glEnd(); - } else { - glBegin(GL_LINES); - for (i = 0; i < num_particles; i++) { - if (particles[i].alive == 0) - continue; - c = particles[i].previous[1]/2.1*255; - glColor4ub(c, 128+c*0.5, 255, 32); - glVertex3fv(particles[i].previous); - c = particles[i].position[1]/2.1*255; - glColor4ub(c, 128+c*0.5, 255, 196); - glVertex3fv(particles[i].position); - } - glEnd(); - } - - /* spit out frame rate. */ - if (frame_rate) { - frames++; - if (frames > 7) { - sprintf(s, "%g fps", (float)7/frame_time); - frame_time = 0; - frames = 0; - } - text(5, 5, s); - } - - glPopMatrix(); - glutSwapBuffers(); -} - -void -idle(void) -{ - static int i, j; - static int living = 0; /* index to end of live particles */ - static float dt; - static float last = 0; - - dt = timedelta(); - frame_time += dt; - -#if 1 - /* slow the simulation if we can't keep the frame rate up around - 10 fps */ - if (dt > 0.1) { - slow_down = 1.0/(100*dt); - } else if (dt < 0.1) { - slow_down = 1; - } -#endif - - dt *= slow_down; - - /* resurrect a few particles */ - for (i = 0; i < flow*dt; i++) { - psNewParticle(&particles[living], dt); - living++; - if (living >= num_particles) - living = 0; - } - - for (i = 0; i < num_particles; i++) { - psTimeStep(&particles[i], dt); - - /* collision with sphere? */ - if (draw_spheres) { - for (j = 0; j < draw_spheres; j++) { - psCollideSphere(&particles[i], &spheres[j]); - } - } - - /* collision with ground? */ - if (particles[i].position[1] <= 0) { - psBounce(&particles[i], dt); - } - - /* dead particle? */ - if (particles[i].position[1] < 0.1 && - fequal(particles[i].velocity[1], 0)) { - particles[i].alive = 0; - } - } - - glutPostRedisplay(); -} - -void -visible(int state) -{ - if (state == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -void -bail(int code) -{ - free(particles); - exit(code); -} - -#ifdef SCREEN_SAVER_MODE -void -ss_keyboard(char key, int x, int y) -{ - bail(0); -} - -void -ss_mouse(int button, int state, int x, int y) -{ - bail(0); -} - -void -ss_passive(int x, int y) -{ - static int been_here = 0; - - /* for some reason, GLUT sends an initial passive motion callback - when a window is initialized, so this would immediately - terminate the program. to get around this, see if we've been - here before. (actually if we've been here twice.) */ - - if (been_here > 1) - bail(0); - been_here++; -} - -#else - -void -keyboard(unsigned char key, int x, int y) -{ - static int fullscreen = 0; - static int old_x = 50; - static int old_y = 50; - static int old_width = 512; - static int old_height = 512; - static int s = 0; - - switch (key) { - case 27: - bail(0); - break; - - case 't': - if (type == PS_WATERFALL) - type = PS_FOUNTAIN; - else if (type == PS_FOUNTAIN) - type = PS_WATERFALL; - break; - - case 's': - draw_spheres++; - if (draw_spheres > NUM_SPHERES) - draw_spheres = 0; - break; - - case 'S': - printf("PSsphere spheres[NUM_SPHERES] = {/* position of spheres */\n"); - for (s = 0; s < NUM_SPHERES; s++) { - printf(" { %g, %g, %g, %g },\n", - spheres[s].x, spheres[s].y, - spheres[s].z, spheres[s].radius); - } - printf("};\n"); - break; - - case 'l': - points = !points; - break; - - case 'P': - point_size++; - glPointSize(point_size); - break; - - case 'p': - point_size--; - if (point_size < 1) - point_size = 1; - glPointSize(point_size); - break; - - case '+': - flow += 100; - if (flow > num_particles) - flow = num_particles; - printf("%g particles/second\n", flow); - break; - - case '-': - flow -= 100; - if (flow < 0) - flow = 0; - printf("%g particles/second\n", flow); - break; - - case '#': - frame_rate = !frame_rate; - break; - - case '~': - fullscreen = !fullscreen; - if (fullscreen) { - old_x = glutGet(GLUT_WINDOW_X); - old_y = glutGet(GLUT_WINDOW_Y); - old_width = glutGet(GLUT_WINDOW_WIDTH); - old_height = glutGet(GLUT_WINDOW_HEIGHT); - glutFullScreen(); - } else { - glutReshapeWindow(old_width, old_height); - glutPositionWindow(old_x, old_y); - } - break; - - case '!': - s++; - if (s >= NUM_SPHERES) - s = 0; - break; - - case '4': - spheres[s].x -= 0.05; - break; - - case '6': - spheres[s].x += 0.05; - break; - - case '2': - spheres[s].y -= 0.05; - break; - - case '8': - spheres[s].y += 0.05; - break; - - case '7': - spheres[s].z -= 0.05; - break; - - case '3': - spheres[s].z += 0.05; - break; - - case '9': - spheres[s].radius += 0.05; - break; - - case '1': - spheres[s].radius -= 0.05; - break; - - } -} - -void -menu(int item) -{ - keyboard((unsigned char)item, 0, 0); -} - -void -menustate(int state) -{ - /* hook up a fake time delta to avoid jumping when menu comes up */ - if (state == GLUT_MENU_NOT_IN_USE) - timedelta(); -} -#endif - -int old_x, old_y; - -void -mouse(int button, int state, int x, int y) -{ - old_x = x; - old_y = y; - - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - spin_x = x - old_x; - spin_y = y - old_y; - - glutPostRedisplay(); -} - -int -main(int argc, char** argv) -{ - glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE); - glutInitWindowPosition(0, 0); - glutInitWindowSize(640, 480); - glutInit(&argc, argv); - - glutCreateWindow("Particles"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); -#ifdef SCREEN_SAVER_MODE - glutPassiveMotionFunc(ss_passive); - glutKeyboardFunc(ss_keyboard); - glutMouseFunc(ss_mouse); - glutSetCursor(GLUT_CURSOR_NONE); - glutFullScreen(); -#else - glutMotionFunc(motion); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); -#endif - - glutMenuStateFunc(menustate); - glutCreateMenu(menu); - glutAddMenuEntry("Particle", 0); - glutAddMenuEntry("", 0); - glutAddMenuEntry("[f] Fog on/off", 'f'); - glutAddMenuEntry("[t] Spray type", 't'); - glutAddMenuEntry("[s] Collision spheres", 's'); - glutAddMenuEntry("[-] Less flow", '-'); - glutAddMenuEntry("[+] More flow", '+'); - glutAddMenuEntry("[p] Smaller points", 'p'); - glutAddMenuEntry("[P] Larger points", 'P'); - glutAddMenuEntry("[l] Toggle points/lines", 'l'); - glutAddMenuEntry("[#] Toggle framerate on/off", '#'); - glutAddMenuEntry("[~] Toggle fullscreen on/off", '~'); - glutAddMenuEntry("", 0); - glutAddMenuEntry("Use the numeric keypad to move the spheres", 0); - glutAddMenuEntry("[!] Change active sphere", 0); - glutAddMenuEntry("", 0); - glutAddMenuEntry("[Esc] Quit", 27); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - if (argc > 1) { - if (strcmp(argv[1], "-h") == 0) { - fprintf(stderr, "%s [particles] [flow] [speed%]\n", argv[0]); - exit(0); - } - sscanf(argv[1], "%d", &num_particles); - if (argc > 2) - sscanf(argv[2], "%f", &flow); - if (argc > 3) - sscanf(argv[3], "%f", &slow_down); - } - - particles = (PSparticle*)malloc(sizeof(PSparticle) * num_particles); - - glutVisibilityFunc(visible); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/demos/particle/particle.dsp b/lib/glut-3.7.6/progs/demos/particle/particle.dsp deleted file mode 100644 index fb943011dfb15e4b059588ba08483e01d62eada6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/particle/particle.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="particle" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=particle - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "particle.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "particle.mak" CFG="particle - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "particle - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "particle - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "particle - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "particle - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "particle - Win32 Release" -# Name "particle - Win32 Debug" -# Begin Source File - -SOURCE=.\particle.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/rollercoaster/Imakefile b/lib/glut-3.7.6/progs/demos/rollercoaster/Imakefile deleted file mode 100644 index 353780caa1656117524ee39c42445bb06f60331c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/rollercoaster/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = rc - -SRCS = defrc.c matrix.c rc.c - -OBJS = defrc.o matrix.o rc.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(rc,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/rollercoaster/defrc.c b/lib/glut-3.7.6/progs/demos/rollercoaster/defrc.c deleted file mode 100644 index 4d941522902ce5382085999ccc3a4a2949332c9f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/rollercoaster/defrc.c +++ /dev/null @@ -1,305 +0,0 @@ -#include -#include -#include -#include -#include "matrix.h" - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -typedef struct parameter -{ - double value; - double speed; - int steps; -} Parameter; - -Matrix pos; -Parameter roll, alignment, heading, pitch; -double tot_al = 0.0; -int tot = 0; - -#define MAX 10000 - -extern GLfloat x[MAX], y[MAX], z[MAX]; -extern GLfloat dx[MAX], dy[MAX], dz[MAX]; -extern GLfloat hd[MAX], al[MAX], pt[MAX], rl[MAX]; -extern GLfloat strips[27][MAX][3], normal[24][MAX][3]; -extern int opt[MAX]; -extern GLfloat bnormal[2][MAX][3]; -extern GLfloat r1[MAX], r2[MAX], r3[MAX]; - -void update_parameters(void); -void update_parameter(Parameter *p); -void init_parameter(Parameter *p); - -Vector strips_tmp[27], normal_tmp[27]; - -void calculate_rc(void) -{ - FILE *in; - int i, j; - char cmd[256]; - double a; - Vector v; - Matrix tmp, t2; -#if 0 - GLfloat nx, ny, nz, ac; -#endif - - printf("Reading RC parameters.\n"); -/* - out = fopen("rc.in", "w"); - if (!out) - { - fprintf(stderr, "Failed to open file 'rc.in' for writing.\n"); - exit(1); - } -*/ - - in = fopen("rc.def", "r"); - if (!in) - { - fprintf(stderr, "Failed to open file 'rc.def'.\n"); - exit(1); - } - - init_parameter(&roll); - init_parameter(&pitch); - init_parameter(&heading); - init_parameter(&alignment); - - init_matrix(&pos); - pos.index[3][2] = 0; - - for (i=0;i<27;i++) - { - init_vector(&normal_tmp[i]); - init_vector(&strips_tmp[i]); - } - - for (i=0;i<8;i++) - { - strips_tmp[i].index[2] = 1.0; - strips_tmp[i+8].index[2] = -1.0; - strips_tmp[i+16].index[1] = -1.0; - } - - for (i=0;i<3;i++) - { - for (j=0;j<8;j++) - { - normal_tmp[i*8+j].index[2] = cos(j*M_PI/4); - normal_tmp[i*8+j].index[1] = sin(j*M_PI/4); - strips_tmp[i*8+j].index[2] += cos(j*M_PI/4)/(i==2?2:4); - strips_tmp[i*8+j].index[1] += sin(j*M_PI/4)/(i==2?2:4); - } - strips_tmp[24].index[2] = 1.0; - strips_tmp[25].index[2] = -1.0; - strips_tmp[26].index[1] = -1.0; - } - - while (!feof(in)) - { - for (i=0;i<256;i++) - { - int ch; - - ch = fgetc(in); - if ((ch == '\n') || (ch == EOF)) - { - cmd[i] = 0; - break; - } - cmd[i] = ch; - } - if (cmd[0] == '#') - continue; - else if (!cmd[0]) - continue; - else if (sscanf(cmd, "pitch %lf %d", &a, &i)) - { - pitch.speed = (a - pitch.value)/i; - pitch.steps = i; - } - else if (sscanf(cmd, "alignment %lf %d", &a, &i)) - { - alignment.speed = (a - alignment.value)/i; - alignment.steps = i; - } - else if (sscanf(cmd, "heading %lf %d", &a, &i)) - { - heading.speed = (a - heading.value)/i; - heading.steps = i; - } - else if (sscanf(cmd, "roll %lf %d", &a, &i)) - { - roll.speed = (a - roll.value)/i; - roll.steps = i; - } - else if (sscanf(cmd, "wait %d", &i)) - { - for (;i>=0;i--) - { - update_parameters(); - - init_vector(&v); - v.index[0] = 0.15; - multiply_matrix_vector(&pos, &v); - for (j=0;j<3;j++) - pos.index[3][j] = v.index[j]; - - rotate_x(-roll.value*M_PI/(180*50), &pos); - rotate_y(-heading.value*M_PI/(180*50), &pos); - rotate_z(-pitch.value*M_PI/(180*50), &pos); - - x[tot] = v.index[0]; - y[tot] = v.index[1]; - z[tot] = v.index[2]; - al[tot] = alignment.value/50.0; - rl[tot] = roll.value/50.0; - hd[tot] = heading.value/50.0; - pt[tot] = pitch.value/50.0; - opt[tot] = 100*fabs(rl[tot] - al[tot]) + 100*fabs(hd[tot])+ - 100*fabs(pt[tot]); - - copy_matrix(&tmp, &pos); - init_vector(&v); - v.index[1] = 1; - tot_al += alignment.value*M_PI/180/50; - rotate_x(-tot_al, &tmp); - multiply_matrix_vector(&tmp, &v); - dx[tot] = v.index[0] - tmp.index[3][0]; - dy[tot] = v.index[1] - tmp.index[3][1]; - dz[tot] = v.index[2] - tmp.index[3][2]; - - copy_matrix(&tmp, &pos); - tot_al += alignment.value*M_PI/180/50; - rotate_x(-tot_al, &tmp); - copy_matrix(&t2, &tmp); - for (j=0;j<27;j++) - { - copy_vector(&v, &strips_tmp[j]); - multiply_matrix_vector(&t2, &v); - - strips[j][tot][0] = v.index[0]; - strips[j][tot][1] = v.index[1]; - strips[j][tot][2] = v.index[2]; - - copy_vector(&v, &normal_tmp[j]); - multiply_matrix_vector(&t2, &v); - - normal[j][tot][0] = v.index[0] - t2.index[3][0]; - normal[j][tot][1] = v.index[1] - t2.index[3][1]; - normal[j][tot][2] = v.index[2] - t2.index[3][2]; - } - init_vector(&v); - v.index[0] = -1.0; - v.index[1] = -1.5; - multiply_matrix_vector(&pos, &v); - bnormal[0][tot][0] = v.index[0] - pos.index[3][0]; - bnormal[0][tot][1] = v.index[1] - pos.index[3][1]; - bnormal[0][tot][2] = v.index[2] - pos.index[3][2]; - - init_vector(&v); - v.index[2] = -1.0; - v.index[1] = 1.5; - multiply_matrix_vector(&pos, &v); - bnormal[0][tot][0] = v.index[0] - pos.index[3][0]; - bnormal[0][tot][1] = v.index[1] - pos.index[3][1]; - bnormal[0][tot][2] = v.index[2] - pos.index[3][2]; - -#if 0 - copy_matrix(&tmp, &pos); - tmp.index[3][0] = 0.0; - tmp.index[3][1] = 0.0; - tmp.index[3][2] = 0.0; - - init_vector(&v); - v.index[0] = 1.0; - multiply_matrix_vector(&tmp, &v); - - nx = v.index[0]; - ny = v.index[1]; - nz = v.index[2]; - - ac = sqrt(nx*nx+nz*nz); - - if (ac == 0.0) - r1[tot] = 0.0; - else if (nx > 0) - r1[tot] = asin(nz/ac); - else - r1[tot] = M_PI-asin(nz/ac); - - r2[tot] = asin(ny); - - rotate_y(-r1[tot], &tmp); - rotate_z(-r2[tot], &tmp); - - init_vector(&v); - v.index[1] = 1.0; - multiply_matrix_vector(&tmp, &v); - nx = v.index[0]; - ny = v.index[1]; - nz = v.index[2]; - - ac = sqrt(nz*nz+ny*ny); /* this *should* be 1 */ - - if (ac == 0.0) - r3[tot] = 0.0; - else if (nz > 0) - r3[tot] = M_PI-asin(ny/ac); - else - r3[tot] = asin(ny/ac); -#endif - - copy_matrix(&tmp, &pos); - rotate_x(-tot_al, &tmp); - if (tmp.index[0][0] == 0.0 && tmp.index[0][1] == 0.0) { - r1[tot] = atan2(- tmp.index[1][0], - tmp.index[2][0]); - r2[tot] = 0.5 * M_PI; - r3[tot] = 0.0; - } else { - r1[tot] = atan2(tmp.index[1][2], tmp.index[2][2]); - r2[tot] = asin(tmp.index[0][2]); - r3[tot] = atan2(tmp.index[0][1], tmp.index[0][0]); - } - -#if 0 - printf("R: %f, %f, %f.\n", r1[tot], r2[tot], r3[tot]); -#endif - tot ++; - } - } - else - fprintf(stderr, "Not understood: %s\n", cmd); - } - printf("Done.\nTotal of %d parts\n", tot); - printf("Ended at %f, %f, %f\n", x[tot-1], y[tot-1], z[tot-1]); -} - -void update_parameters(void) -{ - update_parameter(&roll); - update_parameter(&pitch); - update_parameter(&heading); - update_parameter(&alignment); -} - -void update_parameter(Parameter *p) -{ - if (!p->steps) - return; - p->steps--; - p->value += p->speed; -} - -void init_parameter(Parameter *p) -{ - p->value = 0; - p->speed = 0; - p->steps = 10; -} diff --git a/lib/glut-3.7.6/progs/demos/rollercoaster/matrix.c b/lib/glut-3.7.6/progs/demos/rollercoaster/matrix.c deleted file mode 100644 index 5dcc7ca9720f6ac81b9f61df2b6d2b8d729d70e9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/rollercoaster/matrix.c +++ /dev/null @@ -1,113 +0,0 @@ -#include "matrix.h" -#include "math.h" - -void init_matrix(Matrix *m) -{ - int i,j; - for (i=0;i<4;i++) - for (j=0;j<4;j++) - m->index[i][j] = (i==j?1:0); -} - -void init_vector(Vector *v) -{ - int i; - for (i=0;i<3;i++) - v->index[i] = 0; - v->index[3] = 1; -} - -void copy_vector(Vector *v1, Vector *v2) -{ - int i; - for (i=0;i<4;i++) - v1->index[i] = v2->index[i]; -} - -void copy_matrix(Matrix *m1, Matrix *m2) -{ - int i,j; - for (i=0;i<4;i++) - for (j=0;j<4;j++) - m1->index[i][j] = m2->index[i][j]; -} - -void multiply_vector_matrix(Matrix *m, Vector *v) -{ - int i,j; - Vector t; - for (i=0;i<4;i++) - { - t.index[i] = 0; - for (j=0;j<4;j++) - t.index[i] += m->index[i][j] * v->index[j]; - } - copy_vector(v, &t); -} - -void multiply_matrix_vector(Matrix *m, Vector *v) -{ - int i,j; - Vector t; - for (i=0;i<4;i++) - { - t.index[i] = 0; - for (j=0;j<4;j++) - t.index[i] += m->index[j][i] * v->index[j]; - } - copy_vector(v, &t); -} - -void multiply_matrix(Matrix *m2, Matrix *m1) -{ - int i,j,k; - Matrix m; - for (i=0;i<4;i++) - { - for (j=0;j<4;j++) - { - m.index[i][j] = 0; - for (k=0;k<4;k++) - m.index[i][j] += m1->index[i][k]* m2->index[k][j]; - } - } - copy_matrix(m2, &m); -} - -void rotate_x(double angle, Matrix *m) -{ - Matrix r; - double c = cos(angle), s = sin(angle); - init_matrix(&r); - r.index[1][1] = c; - r.index[1][2] = s; - r.index[2][1] = -s; - r.index[2][2] = c; - multiply_matrix(m, &r); -} - -void rotate_y(double angle, Matrix *m) -{ - Matrix r; - double c = cos(angle), s = sin(angle); - init_matrix(&r); - r.index[0][0] = c; - r.index[0][2] = -s; - r.index[2][0] = s; - r.index[2][2] = c; - multiply_matrix(m, &r); -} - -void rotate_z(double angle, Matrix *m) -{ - Matrix r; - double c = cos(angle), s = sin(angle); - init_matrix(&r); - r.index[0][0] = c; - r.index[0][1] = s; - r.index[1][0] = -s; - r.index[1][1] = c; - multiply_matrix(m, &r); -} - -void mcount() {} diff --git a/lib/glut-3.7.6/progs/demos/rollercoaster/matrix.h b/lib/glut-3.7.6/progs/demos/rollercoaster/matrix.h deleted file mode 100644 index c685b16bb9e4977e19034614725f1a4c3073cd69..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/rollercoaster/matrix.h +++ /dev/null @@ -1,18 +0,0 @@ -typedef struct matrix { - double index[4][4]; -} Matrix; - -typedef struct vector { - double index[4]; -} Vector; - -void init_matrix(Matrix *m); -void init_vector(Vector *v); -void copy_vector(Vector *v1, Vector *v2); -void copy_matrix(Matrix *m1, Matrix *m2); -void multiply_vector_matrix(Matrix *m, Vector *v); -void multiply_matrix_vector(Matrix *m, Vector *v); -void multiply_matrix(Matrix *m1, Matrix *m2); -void rotate_x(double angle, Matrix *m); -void rotate_y(double angle, Matrix *m); -void rotate_z(double angle, Matrix *m); diff --git a/lib/glut-3.7.6/progs/demos/rollercoaster/rc.c b/lib/glut-3.7.6/progs/demos/rollercoaster/rc.c deleted file mode 100644 index d6aa26463b1b5e378cc69132ec052d1206cd1076..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/rollercoaster/rc.c +++ /dev/null @@ -1,703 +0,0 @@ -#include -#include -#include -#include -double floor(double o); -#define ACC 48 - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define FOG -#define FOG_D 0.1 -#define DIST 30 - -#define MESA_BUGGED - -int rr=0; -int frame = 0; - -GLfloat difmat1[4] = { 1.0, 0.4, 0.4, 1.0 }; -GLfloat difamb1[4] = { 1.0, 0.4, 0.4, 1.0 }; -GLfloat difmat2[4] = { 0.6, 0.6, 0.6, 1.0 }; -GLfloat difamb2[4] = { 0.6, 0.6, 0.6, 1.0 }; -GLfloat difmat3[4] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat difamb3[4] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat difmat4[4] = { 0.5, 0.5, 1.0, 1.0 }; -GLfloat difamb4[4] = { 0.5, 0.5, 1.0, 1.0 }; -GLfloat difmat5[4] = { 1.0, 1.0, 0.5, 1.0 }; -GLfloat difamb5[4] = { 1.0, 1.0, 0.5, 1.0 }; -GLfloat matspec1[4] = { 1.0, 1.0, 1.0, 0.0 }; -GLfloat matspec2[4] = { 0.774, 0.774, 0.774, 1.0 }; -GLfloat matspec4[4] = { 0.5, 0.5, 1.0, 1.0 }; -GLfloat dif_zwart[4] = { 0.3, 0.3, 0.3, 1.0 }; -GLfloat amb_zwart[4] = { 0.4, 0.4, 0.4, 1.0 }; -GLfloat spc_zwart[4] = { 0.4, 0.4, 0.4, 1.0 }; -GLfloat dif_copper[4] = { 0.5, 0.3, 0.1, 1.0 }; -GLfloat amb_copper[4] = { 0.2, 0.1, 0.0, 1.0 }; -GLfloat spc_copper[4] = { 0.3, 0.1, 0.1, 1.0 }; -GLfloat fogcol[4] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat hishin[1] = { 100.0 }; -GLfloat loshin[1] = { 5.0 }; -GLfloat lightpos[4] = { 1.0, 1.0, 1.0, 0.0 }; -GLfloat lightamb[4] = { 0.2, 0.2, 0.2, 1.0 }; -GLfloat lightdif[4] = { 0.8, 0.8, 0.8, 1.0 }; - -GLubyte texture[32][32][3]; -GLubyte sky[32][32][3]; - -#if defined(_WIN32) -#define drand48() (((float) rand())/((float) RAND_MAX)) -#endif - -int rnd(int i) -{ - return (int) ((double) drand48()*i); -} - -void make_texture(void) -{ - int i,j; - GLubyte r, g, b; - for (i=0;i<32;i++) - { - for (j=0;j<32;j++) - { - r = 100 + rnd(156); - g = 100 + rnd(156); - b = (b+g)/2 - rnd(100); - texture[i][j][0] = r/2; - texture[i][j][1] = g/2; - texture[i][j][2] = b/2; - r = rnd(100); - b = rnd(100)+156; - sky[i][j][1] = sky[i][j][0] = r; - sky[i][j][2] = b; - } - } -} - -#define MAX 10000 -extern int tot; -float plaatje = 0.0; -float speed = 0; -int angle = 0; -float angle2 = 0; -float angle3 = 0; - -GLfloat x[MAX], y[MAX], z[MAX]; -GLfloat dx[MAX], dy[MAX], dz[MAX]; -GLfloat al[MAX], rl[MAX], hd[MAX], pt[MAX]; -GLfloat strips[27][MAX][3], normal[27][MAX][3], bnormal[2][MAX][3]; -GLdouble cum_al = 0.0, view_al = 0.0; -int opt[MAX]; -GLfloat r1[MAX], r2[MAX], r3[MAX]; - -void copper_texture(void) -{ - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, dif_copper); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb_copper); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spc_copper); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 13); -} - -void groen_texture(void) -{ - glMaterialfv(GL_FRONT, GL_DIFFUSE, difmat4); - glMaterialfv(GL_FRONT, GL_AMBIENT, difamb4); - glMaterialfv(GL_FRONT, GL_SPECULAR, matspec4); - glMaterialf(GL_FRONT, GL_SHININESS, 5.0); -} - -void rood_texture(void) -{ - glMaterialfv(GL_FRONT, GL_DIFFUSE, difmat1); - glMaterialfv(GL_FRONT, GL_AMBIENT, difamb1); - glMaterialfv(GL_FRONT, GL_SPECULAR, matspec1); - glMaterialf(GL_FRONT, GL_SHININESS, 0.1*128); -} - -void metaal_texture(void) -{ - glMaterialfv(GL_FRONT, GL_DIFFUSE, difmat2); - glMaterialfv(GL_FRONT, GL_AMBIENT, difamb2); - glMaterialfv(GL_FRONT, GL_SPECULAR, matspec2); - glMaterialf(GL_FRONT, GL_SHININESS, 0.6*128.0); -} - -void wit_texture(void) -{ - glMaterialfv(GL_FRONT, GL_DIFFUSE, difmat3); - glMaterialfv(GL_FRONT, GL_AMBIENT, difamb3); - glMaterialfv(GL_FRONT, GL_SPECULAR, matspec1); - glMaterialf(GL_FRONT, GL_SHININESS, 0.8*128.0); -} - -void geel_texture(void) -{ - glMaterialfv(GL_FRONT, GL_DIFFUSE, difmat5); - glMaterialfv(GL_FRONT, GL_AMBIENT, difamb5); - glMaterialfv(GL_FRONT, GL_SPECULAR, matspec1); - glMaterialf(GL_FRONT, GL_SHININESS, 0.8*128.0); -} - -void zwart_texture(void) -{ - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, dif_zwart); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb_zwart); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spc_zwart); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 90); -} - -#define VERTEX(I,J) glNormal3fv(normal[I][J]); glVertex3fv(strips[I][J]); - -void do_display (void) -{ - int i,j,s,t, tmp; - cum_al = 0.0; - - metaal_texture(); - - for (s=0;s<24;s += 2) - { - t = s+2; - if (!(t&7)) - t=t-8; - - if (s == 16) - rood_texture(); - glBegin(GL_QUADS); - for (i=0;i 4000 || (!(j%(3*DIST)))) - break; - - if (j>=tot) - j = 0; - - rr++; - VERTEX(s, j); - VERTEX(s, i); - VERTEX(t, i); - VERTEX(t, j); - if (!j) - break; - } - glEnd(); - } - printf("Split up to %d parts.\n", rr); - rood_texture(); - for (i=0;i= tot) - plaatje2 -= tot; - display_cart(plaatje2); - - plaatje2 = plaatje + 20; - if (plaatje2 >= tot) - plaatje2 -= tot; - display_cart(plaatje2); - - plaatje2 = plaatje - 20; - if (plaatje2 < 0) - plaatje2 += tot; - display_wheel(plaatje2); - - glFlush(); - glutSwapBuffers(); - glPopMatrix(); -} - -void myinit (void) { - glShadeModel (GL_SMOOTH); - glFrontFace(GL_CCW); - glEnable(GL_DEPTH_TEST); - - glClearColor(fogcol[0], fogcol[1], fogcol[2], fogcol[3]); - glLightfv(GL_LIGHT0, GL_POSITION, lightpos); - glLightfv(GL_LIGHT0, GL_AMBIENT, lightamb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightdif); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glColor3f(1.0, 1.0, 1.0); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - -#ifdef FOG -/* fog */ - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogfv(GL_FOG_COLOR, fogcol); - glFogf(GL_FOG_DENSITY, 0.01); - glFogf(GL_FOG_START, 0.01); - glFogf(GL_FOG_END, 55.0); - glHint(GL_FOG_HINT, GL_NICEST); -#endif - - make_texture(); - init_wheel(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); -/* - glTexImage2D(GL_TEXTURE_2D, 0, 3, 32, 32, 0, GL_RGB, GL_UNSIGNED_BYTE, - &texture[0][0][0]); -*/ - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); -} - -/* ARGSUSED1 */ -void parsekey(unsigned char key, int x, int y) -{ - switch (key) - { - case 27: exit(0); - case 13: speed = 0; break; - } -} - -/* ARGSUSED1 */ -void parsekey_special(int key, int x, int y) -{ - switch (key) - { - case GLUT_KEY_UP: speed ++; break; - case GLUT_KEY_DOWN: speed --; break; - case GLUT_KEY_RIGHT: angle ++; break; - case GLUT_KEY_LEFT: angle --; break; - } -} - -void SetCamera(void) -{ - float plaatje2; - int l,l2; - l = plaatje; - plaatje2 = plaatje + 10; - - if (plaatje2 >= tot) - plaatje2 -= tot; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum (-0.1, 0.1, -0.1, 0.1, 0.1, 550.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - -#if 1 - glTranslated(0.0, +0.4, 0.0); - glRotated(angle*5.0, 0.0, 1.0, 0.0); - glTranslatef(0.0, 0.0, -6.5-2*sin(angle2)-sin(angle3)); - glRotatef(45 - 35*cos(angle3), 1.0, 0.0, 0.0); - glRotatef(-100*sin(angle3), 0.0, 1.0, 0.0); -#else - glRotatef(100*sin(angle3), 0.0, 1.0, 0.0); - glRotatef(-45 + 35*cos(angle3), 1.0, 0.0, 0.0); - glTranslatef(0.0, 0.0, +6+2*sin(angle2)+sin(angle3)); - glRotated(-angle*5.0, 0.0, 1.0, 0.0); - glTranslated(0.0, -0.4, 0.0); -#endif - - l2 = plaatje2; - glTranslatef(-0.15*(plaatje-l), 0.0, 0.0); - - gluLookAt(x[l], y[l], z[l], - x[l2], y[l2], z[l2], - dx[l], dy[l], dz[l]); -} - -void Animate(void) -{ - int l1; - - l1 = plaatje; - speed += (y[l1] - y[l1+4])*2-0.005; - - speed -= (fabs(rl[l1]-al[l1]) + fabs(pt[l1]) + fabs(hd[l1])) * speed/200; - - if (frame > 450) - speed -= 0.2208; - - if (speed < 0) - speed = 0; - - if (frame < 10) - speed = 0; - - if (frame == 10) - speed = 4.5; - - if (frame > 155 && frame < 195) - speed = 7.72; - - plaatje += speed; - - if (plaatje >= tot) { - plaatje = tot - 1; - glutIdleFunc(NULL); - return; - } - - if (plaatje < 0) - plaatje += tot; - - SetCamera(); - - angle2 = frame*4*M_PI/503; - angle3 = frame*6*M_PI/503; - - glutPostRedisplay(); - frame++; -} - -void myReshape(int w, int h) -{ - SetCamera(); - glViewport (0, 0, w, h); -} - -int main(int argc, char *argv[]) -{ - int sz; - extern void calculate_rc(void); - - calculate_rc(); - printf("tot = %d\n", tot); - if (argc > 1) - sz = atoi(argv[1]); - else - sz = 200; - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGBA | GLUT_DOUBLE | GLUT_MULTISAMPLE); - glutInitWindowPosition(200, 0); - glutInitWindowSize(sz, sz); - glutCreateWindow("Roller coaster"); - glNewList(1, GL_COMPILE); - do_display(); - glEndList(); - glutDisplayFunc(display); - glutKeyboardFunc(parsekey); - glutSpecialFunc(parsekey_special); - glutReshapeFunc(myReshape); - glutIdleFunc(Animate); - myinit(); - glutSwapBuffers(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/rollercoaster/rc.def b/lib/glut-3.7.6/progs/demos/rollercoaster/rc.def deleted file mode 100644 index 1126a330a3293a6a79a1c63d8ad7cba64143dd9c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/rollercoaster/rc.def +++ /dev/null @@ -1,217 +0,0 @@ -# eerste (hele flauwe) helling -pitch 16 10 -wait 10 -# weer recht zetten -pitch 0 10 -wait 100 -pitch -16 10 -wait 10 -pitch 0 10 -wait 10 - -# eerste bocht (rechts): -# begin indraaien -alignment 40 30 -wait 20 -# begin bocht -heading -45 10 -wait 10 -# einde indraaien -alignment 0 30 -wait 79 -# begin uitdraaien -alignment -10 30 -wait 10 -# einde bocht -heading 0 10 -wait 20 -# einde uitdraaien -alignment 0 10 -wait 160 - -# tweede bocht (rechts): -# begin indraaien -alignment 10 10 -wait 20 -# begin bocht -heading -45 10 -wait 10 -# einde indraaien -alignment 0 30 -wait 79 -# begin uitdraaien -alignment -40 30 -wait 10 -# einde bocht -heading 0 10 -wait 20 -# einde uitdraaien -alignment 0 30 -wait 50 - -# begin stijging -pitch -45 10 -wait 50 -# stabiel stijging -pitch 0 10 -wait 250 -# einde stijging -pitch 45 10 -wait 50 -# stabiel -pitch 0 10 -# alignment voor de bocht die gaat komen. -wait 30 -roll 20 30 -wait 30 - -# nu gaat het gebeuren! -# in een bocht naar rechts naar beneden storten. -# roll 0 30 -heading -52 20 -alignment 6 40 -wait 40 -alignment 0 40 -wait 120 -heading 0 20 -roll 10 40 -alignment -11 40 -wait 40 -roll 0 40 -heading 0 30 -alignment 0 40 -wait 80 - -# loop 1!!!! -pitch -45 50 -roll -10 50 -wait 440 - -# einde van de loop -pitch -20 50 -wait 100 - -# loop 2!!!! -pitch -45 50 -wait 150 - -# voorbereiding bocht in looping 2 -roll -32 20 -wait 100 -roll 0 20 - -heading 0 40 -wait 80 - -pitch 0 50 -heading 0 30 -roll -18 40 -alignment 25 40 -wait 50 - -pitch 10 20 -roll 0 40 -alignment 0 40 -wait 50 -pitch 0 20 -wait 30 - -heading -45 20 -alignment -25 40 -roll -15 40 -wait 50 -alignment 0 40 -roll 0 40 -wait 49 -heading 0 20 -wait 20 -pitch -20 30 -wait 30 -pitch 0 30 -heading -74 20 -wait 99 -# einde bocht - -heading 0 20 -roll -42 40 -pitch 20 20 -wait 30 -pitch 0 20 -wait 20 -roll -40 40 -heading -40 40 -pitch -40 40 -wait 250 -heading 0 40 -roll 0 40 -alignment -40 10 -wait 20 -alignment 0 10 -wait 80 -pitch 0 40 -# scherpe bocht na schroef -heading 90 40 -wait 100 -heading 0 40 -alignment 40 10 -roll -65 10 -pitch 15 20 -wait 20 -alignment 0 10 -roll 0 10 -pitch 0 20 -heading 37 10 -wait 10 -heading 0 10 -wait 30 -pitch -60 10 -wait 50 -pitch 0 10 -wait 60 -heading 20 10 -wait 30 -heading 0 10 -wait 10 -alignment 40 10 -wait 40 -alignment 0 10 -heading -50 10 -wait 200 -heading 0 10 -wait 10 -alignment -40 40 -wait 40 -alignment 0 40 -wait 79 -roll -13 10 -pitch -13.113200 10 -wait 10 -roll 0 10 -pitch 0 10 -wait 10 -wait 70 -alignment 40 40 -wait 19 -#laatste bocht! -heading -36.2 20 -wait 20 -alignment 0 40 -wait 24 -heading 0 20 -wait 20 -wait 10 -heading -44.4373 20 -wait 134 -heading 0 20 -wait 20 -alignment -40 40 -wait 40 -alignment 0 40 -pitch -5 10 -wait 10 -pitch 0 10 -wait 29 -pitch 5 10 -wait 10 -pitch 0 18 -wait 115 diff --git a/lib/glut-3.7.6/progs/demos/rollercoaster/rollercoaster.dsp b/lib/glut-3.7.6/progs/demos/rollercoaster/rollercoaster.dsp deleted file mode 100644 index 5c36b6d3516f5cfb557867bf39abf6903fa5fbcf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/rollercoaster/rollercoaster.dsp +++ /dev/null @@ -1,100 +0,0 @@ -# Microsoft Developer Studio Project File - Name="rollercoaster" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=rollercoaster - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "rollercoaster.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "rollercoaster.mak" CFG="rollercoaster - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "rollercoaster - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "rollercoaster - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "rollercoaster - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "rollercoaster - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "rollercoaster - Win32 Release" -# Name "rollercoaster - Win32 Debug" -# Begin Source File - -SOURCE=.\defrc.c -# End Source File -# Begin Source File - -SOURCE=.\matrix.c -# End Source File -# Begin Source File - -SOURCE=.\matrix.h -# End Source File -# Begin Source File - -SOURCE=.\rc.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/skyfly/Imakefile b/lib/glut-3.7.6/progs/demos/skyfly/Imakefile deleted file mode 100644 index 375918ea379495e3458bf4edf33edd1bcaf8a709..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/Imakefile +++ /dev/null @@ -1,14 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = skyfly - -SRCS = database.c fly.c gm_main.c image.c perfdraw.c skyfly.c - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(skyfly,database.o fly.o gm_main.o image.o perfdraw.o skyfly.o) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/skyfly/clouds.bw b/lib/glut-3.7.6/progs/demos/skyfly/clouds.bw deleted file mode 100644 index c62c1dc02bb0f877444416c6be7dd0272ec9c08b..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/skyfly/clouds.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/skyfly/database.c b/lib/glut-3.7.6/progs/demos/skyfly/database.c deleted file mode 100644 index 3d4c76c755c5594883a7ac89e84f328589dc3c0e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/database.c +++ /dev/null @@ -1,522 +0,0 @@ - -/* - * database.c $Revision: 1.2 $ - */ - -#include -#include -#include -#include "skyfly.h" - -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -#endif - -#define cosf(a) cos((float)a) -#define sinf(a) sin((float)a) -#define sqrtf(a) sqrt((float)a) -#define expf(a) exp((float)a) - -static void create_terrain(void); -static void erode_terrain(void); -static void color_terrain(void); -static void init_cells(void); -static void put_cell(float *source, perfobj_t *pobj); -static void put_paper_plane(float *source, perfobj_t *pobj); -static void put_texture_bind(int bind, perfobj_t *pobj); - -int clouds; -static float paper_plane_vertexes[] = { -/*Nx Ny Nz Vx Vy Vz */ -/* ---------------------------- Top view of plane, middle streached open */ - 0.2, 0., .98, -.10, 0, .02,/* vertex #'s 4 (.48,0,-.06) */ - 0., 0., 1., -.36, .20, -.04,/* . */ - 0., 0., 1., .36, .01, 0,/* ... */ - 0., 0.,-1., -.32, .02, 0,/* . +X */ - 0., 1., 0., .48, 0, -.06,/* 2 . 6,8 ^ */ - 0., 1., 0., -.30, 0, -.12,/* . . . | */ - 0.,-1., 0., .36, -.01, 0,/* .. . .. | */ - 0.,-1., 0., -.32, -.02, 0,/* . . . | */ - 0., 0.,-1., .36, -.01, 0,/* . . . . . +Y<-----* */ - 0., 0.,-1., -.36, -.20, -.04,/* . . . for this picture */ - -0.2, 0., .98, -.10, 0, .02,/* . . . . . coord system rot. */ - -0.2, 0., -.98, -.10, 0, .02,/* . . . 90 degrees */ - 0., 0., -1., -.36, .20, -.04,/* . . . . . */ - 0., 0., -1., .36, .01, 0,/* . # . # marks */ - 0., 0., 1., -.32, .02, 0,/* . . . . . (0,0) origin */ - 0., -1., 0., .48, 0, -.06,/* . . . (z=0 at top */ - 0., -1., 0., -.30, 0, -.12,/* . 0 . 10 . of plane) */ - 0.,1., 0., .36, -.01, 0,/* . . . . . */ - 0.,1., 0., -.32, -.02, 0,/* . . . . . . . */ - 0., 0.,1., .36, -.01, 0,/* . . . . . */ - 0., 0.,1., -.36, -.20, -.04,/* 1.......3.5.7.......9 */ - 0.2, 0., -.98, -.10, 0, .02,/* (-.36,.2,-.04) */ -}; - -#define SIZE 400 - -float *A; - -void init_paper_planes(void) -{ - perfobj_t *pobj; - - /* - * create various perf-objs for planes - */ - pobj = &(SharedData->paper_plane_obj); - pobj->flags = SharedData->paper_plane_flags; - pobj->vdata = (float *) SharedData->paper_plane_verts; - put_paper_plane(paper_plane_vertexes, pobj); - - pobj = &(SharedData->paper_plane_start_obj); - pobj->flags = SharedData->paper_plane_start_flags; - *(pobj->flags) = PD_PAPER_PLANE_MODE; - *(pobj->flags + 1) = PLANES_START; - *(pobj->flags + 2) = PD_END; - - pobj = &(SharedData->paper_plane_2ndpass_obj); - pobj->flags = SharedData->paper_plane_2ndpass_flags; - *(pobj->flags) = PD_PAPER_PLANE_MODE; - *(pobj->flags + 1) = PLANES_SECOND_PASS; - *(pobj->flags + 2) = PD_END; - - pobj = &(SharedData->paper_plane_end_obj); - pobj->flags = SharedData->paper_plane_end_flags; - *(pobj->flags) = PD_PAPER_PLANE_MODE; - *(pobj->flags + 1) = PLANES_END; - *(pobj->flags + 2) = PD_END; -} - - -/* - * create perfobj from static definition of plane geometry above - */ - -static void put_paper_plane(float *source, perfobj_t *pobj) -{ - int j; - perfobj_vert_t *pdataptr =(perfobj_vert_t *) pobj->vdata; - unsigned int *flagsptr = pobj->flags; - float *sp = source; - - *flagsptr++ = PD_DRAW_PAPER_PLANE; - - for (j = 0; j < 22; j++) { - putn3fdata(sp + 0, pdataptr); - putv3fdata(sp + 3, pdataptr); - - sp += 6; - pdataptr++; - } - *flagsptr++ = PD_END; - -} - -static void put_texture_bind(int bind, perfobj_t *pobj) -{ - unsigned int *flagsptr = pobj->flags; - - *flagsptr++ = PD_TEXTURE_BIND; - *flagsptr++ = bind; - - *flagsptr++ = PD_END; - -} - -static void put_clouds_vert(float s, float t, float x, float y, float z, - perfobj_vert_t *pdataptr) -{ - float D[5]; - D[0] = s; - D[1] = t; - D[2] = x; - D[3] = y; - D[4] = z; - putt2fdata(D, pdataptr); - putv3fdata(D + 2, pdataptr); -} - -float S[SIZE][SIZE]; -float T[SIZE][SIZE]; -float C[SIZE][SIZE][3]; -int M[SIZE][SIZE]; - -void init_terrain(void) -{ - GridDim = CellDim * NumCells; - XYScale = (float)GRID_RANGE / (float)GridDim; - CellSize = (float)GRID_RANGE / (float)NumCells; - - create_terrain(); - erode_terrain(); - color_terrain(); - init_cells(); -} - -#define SKY 50. - -void init_clouds(void) -{ - perfobj_t *pobj; - perfobj_vert_t *pdataptr; - - clouds = 0; - pobj = &(SharedData->clouds_texture_obj); - pobj->flags = SharedData->clouds_texture_flags; - put_texture_bind(2,pobj); - - pobj = &(SharedData->clouds_obj); - pobj->flags = SharedData->clouds_flags; - pobj->vdata = (float *)SharedData->clouds_verts; - *(pobj->flags+ 0) = PD_DRAW_CLOUDS; - *(pobj->flags+ 1) = PD_END; - - pdataptr =(perfobj_vert_t *) pobj->vdata; - - put_clouds_vert(0.,0., -SKY, -SKY, SKY_HIGH,pdataptr); - pdataptr++; - put_clouds_vert(24.,0., SKY+GRID_RANGE, -SKY, SKY_HIGH,pdataptr); - pdataptr++; - put_clouds_vert(24.,24., SKY+GRID_RANGE, SKY+GRID_RANGE, SKY_HIGH,pdataptr); - pdataptr++; - put_clouds_vert(0.,24., -SKY, SKY+GRID_RANGE, SKY_HIGH,pdataptr); -} - -static void create_terrain(void) -{ - int r, c, i, x1, y1, x2, y2; - int hillsize; - - hillsize = GRID_RANGE / 12; - - A = (float*)calloc(GridDim * GridDim, sizeof(float)); - - /* - * initialize elevation to zero, except band down middle - * where make a maximum height 'hill' that will later be - * inverted to make the negative elevation 'canyon' - */ - - for (r = 0; r < GridDim; r++) - for (c = 0; c < GridDim; c++) - if(r>=(GridDim/2-2-IRND(2)) && r<=(GridDim/2+2+IRND(2))) - A[r * GridDim + c] = 1.0; - else - A[r * GridDim + c] = 0.0; - - /* - * create random sinusoidal hills that add on top - * of each other - */ - for (i = 1; i <= 10*GridDim; i++) { - - /* randomly position hill */ - x1 = IRND(GridDim - hillsize); - x2 = x1 + hillsize/ 8 + IRND(hillsize-hillsize/ 8); - y1 = IRND(GridDim - hillsize); - y2 = y1 + hillsize/ 8 + IRND(hillsize-hillsize/ 8); - - if((x1<=GridDim/2-4 && x2>=GridDim/2-4) || - (x1<=GridDim/2+4 && x2>=GridDim/2+4)) - { - x1 = IRND(2)-2 + GridDim/2; - x2 = x1 + IRND(GridDim/2 - x1 + 2); - } - - /* make a sinusoidal hill */ - for (r = x1; r < x2; r++) - for (c = y1; c < y2; c++) { - A[r * GridDim + c] +=.35 * - (sinf(M_PI * (float) (r - x1) / (float) (x2 - x1)) * - (sinf(M_PI * (float) (c - y1) / (float) (y2 - y1)))); - } - } - - /* clamp the elevation of the terrain */ - for (r = 1; r < GridDim; r++) - for (c = 1; c < GridDim; c++) { - A[r * GridDim + c] = MIN(A[r * GridDim + c], .95); - A[r * GridDim + c] = MAX(A[r * GridDim + c], 0.); - } - -} - -#define NUM_DROPS 80 - -static void erode_terrain(void) -{ - float x, y, xv, yv, dx, dy; - float cut, min, take; - int nm; - int t, xi, yi, xo, yo, done; - int ii, jj, r, c; - - for (nm = 1; nm < NUM_DROPS*GridDim; nm++) { - - /* find a random position to start the 'rain drop' */ - x = (float) (IRND(GridDim)); - y = (float) (IRND(GridDim)); - - /* Clamp x and y to be inside grid */ - x = MIN(MAX(2., x), (float)GridDim-2.); - y = MIN(MAX(2., y), (float)GridDim-2.); - - done = 0; - yv = xv = 0.; - - t = 0; - cut = .3; - - while (!done) { - xi = (int) x; - yi = (int) y; - - min = 90.; - - if (xi != xo || yi != yo) { - cut *=.99; - - /* gradient */ - dx = (A[(xi + 1)*GridDim + yi] - A[(xi - 1) * GridDim + yi]); - dy = (A[xi * GridDim + yi + 1] - A[xi * GridDim + yi - 1]); - - - /* find lowest neighbor */ - for (ii = -1; ii <= 1; ii++) - for (jj = -1; jj <= 1; jj++) - if (A[(xi + ii)*GridDim + yi + jj] < min) - min = A[(xi + ii)*GridDim + yi + jj]; - - /* evaporate drop if sitting on my old location */ - if (M[xi][yi] == nm) - done = 1; - M[xi][yi] = nm; - - /* cave in neighbors by .3 */ - for (ii = -1; ii <= 1; ii++) - for (jj = -1; jj <= 1; jj++) { - take =.3 * cut * (A[(xi + ii)*GridDim + yi + jj]-min); - A[(xi + ii)*GridDim + yi + jj] -= take; - } - - /* take away from this cell by .7 */ - take = (A[xi*GridDim + yi] - min) *.7 * cut; - A[xi*GridDim + yi] -= take; - - } - xo = xi; - yo = yi; - - /* move drop using kinematic motion*/ - xv = xv - dx -.8 * xv; - yv = yv - dy -.8 * yv; - - x += xv; - y += yv; - - /* - * make sure can't move by more that 1.0 - * in any direction - */ - - xv = MAX(xv, -1); - yv = MAX(yv, -1); - xv = MIN(xv, 1); - yv = MIN(yv, 1); - - /* check to see if need a new drop */ - /* ie ran of world, got stuck, or at 'sea level' */ - if (x < 1.|| x > GridDim - 1.|| y < 1.|| y > GridDim - 1. - || t++ > 2000 - || cut <.01) - done = 1; - - if (A[xi*GridDim + yi] < 0.0001) { - A[xi*GridDim + yi] = 0.; - done = 1; - } - } /* while (!done) with this drop */ - } /* next drop */ - - /* - * invert the pseudo hill int the pseudo canyon - */ - - for (r = 0; r < GridDim; r++) - for (c = 0; c < GridDim; c++) - if(r>=GridDim/2-4 && r<=GridDim/2+4) - A[r * GridDim + c] = MAX((-3.2 * A[r * GridDim + c]), -1.8); -} - -static void color_terrain(void) -{ - float N[3], D, alt, maxelev = -1.; - int x, y; - - for (x = 0; x < GridDim; x++) - for (y = 0; y < GridDim; y++) - maxelev = MAX(maxelev, A[x * GridDim + y]); - - for (x = 1; x < GridDim - 1; x++) - for (y = 1; y < GridDim - 1; y++) { - alt = A[x * GridDim + y] * 1.5; - /* randomly perterb to get a mottling effect */ - alt += IRND(100) / 400. -.125; - alt = MIN(alt, 1.0); - if (alt < -.11) { - C[x][y][0] = 0.6; /* soil/rock in canyon */ - C[x][y][1] = 0.5; - C[x][y][2] = 0.2; - } else if (alt < .000001) { - C[x][y][0] = 0.0; /* dark, jungle lowlands */ - C[x][y][1] = 0.2; - C[x][y][2] = 0.05; - } else if (alt <.90) { - C[x][y][0] = alt*.25; /* green to redish hillsides */ - C[x][y][1] = (1.0 - alt) *.4 + .1; - C[x][y][2] = 0.1; - } else { - C[x][y][0] = alt; - C[x][y][1] = alt; /* incresingly white snow */ - C[x][y][2] = alt; - } - - /* compute normal to terrain */ - - N[0] = A[(x - 1)*GridDim + y] - A[(x + 1)*GridDim + y]; - N[1] = A[x*GridDim + y - 1] - A[x*GridDim + y + 1]; - N[2] = 2.0 / ScaleZ; - - D = 1.0 / sqrtf(N[0] * N[0] + N[1] * N[1] + N[2] * N[2]); - - N[0] *= D; - N[1] *= D; - N[2] *= D; - - /* perform diffuse lighting of terrain */ - - D = N[0] * LX + N[1] * LY + N[2] * LZ; - D *= 1.2; - - if(!IRND(4)) D *= .5; - - D = MAX(D,0); - - /* darken terrain on shaded side */ - C[x][y][0] *= D; - C[x][y][1] *= D; - C[x][y][2] *= D; - - S[x][y] = (float) (x) / (float)CellDim; - T[x][y] = (float) (y) / (float)CellDim; - - } -} - -/* - * create perobj to hold a cell of terrain - * for a 5x5 terrain cell, there will be 5 - * tmeshes each with 10 triangles (12 vertexes) - * this means looking past my cell to neighbors - * to stitch things together. To keep data contigious, - * vertexes are repeated in tmeshes, not shared. - */ - -static void init_cells(void) -{ - int x, y, xx, yy, world_x, world_y; - int pntr, index, sstart, tstart; - float *D; - perfobj_t *pobj; - - D = (float*)calloc(CellDim *(CellDim + 1) * - 2 * FLOATS_PER_VERT_PAIR, sizeof(float)); - - pobj = &(SharedData->terrain_texture_obj); - pobj->flags = SharedData->terrain_texture_flags; - - put_texture_bind(1, pobj); - - for (x = 0; x < NumCells; x++) - for (y = 0; y < NumCells; y++) { - index = x*NumCells+y; - SharedData->terrain_cells[index].flags = - SharedData->terrain_cell_flags[index]; - - SharedData->terrain_cells[index].vdata = - (float *) SharedData->terrain_cell_verts[index]; - - pntr = 0; - - /* - * Guarantee S,T to be within range 0-8 for tmesh strip using - * 256x256 sized texture. This avoids texture index clipping - * in pipe. - */ - sstart = (int)S[x*CellDim][y*CellDim]; - tstart = (int)T[x*CellDim][y*CellDim]; - - for (xx = 0; xx < CellDim; xx++) - for (yy = 0; yy < CellDim + 1; yy++) { - - /* init a perfobj */ - - world_x = MIN(x * CellDim + xx, GridDim-2); - world_y = MIN(y * CellDim + yy, GridDim-2); - - D[pntr + 0] = S[world_x][world_y] - sstart; - D[pntr + 1] = T[world_x][world_y] - tstart; - D[pntr + 2] = C[world_x][world_y][0]; - D[pntr + 3] = C[world_x][world_y][1]; - D[pntr + 4] = C[world_x][world_y][2]; - D[pntr + 5] = (float)world_x * XYScale; - D[pntr + 6] = (float)world_y * XYScale; - D[pntr + 7] = A[world_x*GridDim + world_y]*ScaleZ; - - - D[pntr + 8] = S[world_x + 1][world_y] - sstart; - D[pntr + 9] = T[world_x + 1][world_y] - tstart; - D[pntr + 10] = C[world_x + 1][world_y][0]; - D[pntr + 11] = C[world_x + 1][world_y][1]; - D[pntr + 12] = C[world_x + 1][world_y][2]; - D[pntr + 13] = (float)(world_x+1) * XYScale; - D[pntr + 14] = (float)world_y * XYScale; - D[pntr + 15] = A[(world_x+1)*GridDim + world_y] * ScaleZ; - - pntr += FLOATS_PER_VERT_PAIR; - - } /* for each cell */ - put_cell(D, &(SharedData->terrain_cells[index])); - - } /* for all cells in world */ - - free(D); -} - -static void put_cell(float *source, perfobj_t *pobj) -{ - int i, j; - perfobj_vert_t *pdataptr =(perfobj_vert_t *) pobj->vdata; - unsigned int *flagsptr = pobj->flags; - float *sp = source; - - /* For all tmesh strips in cell */ - for (i = 0; i < CellDim; i++) { - *flagsptr++ = PD_DRAW_TERRAIN_CELL; - *flagsptr++ = (unsigned long) pdataptr; - - /* For all verts in tmesh strip */ - for (j = 0; j < (CellDim + 1) * 2; j++) { - putt2fdata(sp, pdataptr); - putc3fdata(sp + 2, pdataptr); - putv3fdata(sp + 5, pdataptr); - - sp += 8; - pdataptr++; - } - } - *flagsptr++ = PD_END; -} - diff --git a/lib/glut-3.7.6/progs/demos/skyfly/fly.c b/lib/glut-3.7.6/progs/demos/skyfly/fly.c deleted file mode 100644 index 35d3a6b220f1944d57077aa573f386a49994e3f3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/fly.c +++ /dev/null @@ -1,282 +0,0 @@ - -/* - * fly.c $Revision: 1.2 $ - */ - -#include "stdio.h" -#include "math.h" -#include "skyfly.h" - -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ -#endif - -#define cosf(a) cos((float)a) -#define sinf(a) sin((float)a) -#define sqrtf(a) sqrt((float)a) -#define expf(a) exp((float)a) - -typedef struct paper_plane_struct { - float Pturn_rate; - float PX, PY, PZ, PZv; - float Pazimuth; - float Proll; - int Pcount, Pdirection; -} paper_plane; - -static paper_plane flock[NUM_PLANES]; -static float X, Y, Z, Azimuth, Speed; -static int Keyboard_mode; - -extern float *A; -extern int Wxorg, Wyorg; - -static float terrain_height(float x, float y); - -int Xgetbutton(int b); -int Xgetvaluator(int v); - -void init_positions(void) -{ - int i; - - X = GRID_RANGE / 2.; - Y = GRID_RANGE / 2.; - Z = 1.5; - - /* - * randomly position the planes near center of world - * take MAX of height above terrain and 0, so planes - * don't fall into canyon. Canyon has negative elevation - */ - - for (i = 0; i < NUM_PLANES; i++) { - flock[i].PX = (float) IRND(20) + GRID_RANGE / 2 - 10; - flock[i].PY = (float) IRND(20) + GRID_RANGE / 2 - 10; - flock[i].PZ = MAX(terrain_height(flock[i].PX, flock[i].PY),0.) + - 2.*(float)i/NUM_PLANES+.3; - flock[i].Pazimuth = ((float)IRND(256) / 128.) * M_PI; - } - Speed = 0.1f; - Azimuth = M_PI / 2.; - -#if 0 -// if (Init_pos) { -// X = Init_x; -// Y = Init_y; -// Z = Init_z; -// Azimuth = Init_azimuth; -// Keyboard_mode = 1; -// } -#endif -} - -int _frame = 0; - -void fly(perfobj_t *viewer_pos) -{ - float terrain_z, xpos, ypos, xcntr, ycntr; - float delta_speed = .003; - -/* if (++_frame == 1000) { - _frame = 0; - init_positions(); - }*/ - - xcntr = Wxsize / 2; - ycntr = Wysize / 2; - - if (Xgetbutton(RKEY)) - init_positions(); - - if (Xgetbutton(SPACEKEY)) { - Keyboard_mode = !Keyboard_mode; - } - - if (Keyboard_mode) { - - /* - * step-at-a-time debugging mode - */ - - if (Keyboard_mode && Xgetbutton(LEFTARROWKEY)) { - Azimuth -= 0.025; - } - if (Keyboard_mode && Xgetbutton(RIGHTARROWKEY)) { - Azimuth += 0.025; - } - if (Keyboard_mode && Xgetbutton(UPARROWKEY)) { - X += cosf(-Azimuth + M_PI / 2.) * 0.025; - Y += sinf(-Azimuth + M_PI / 2.) * 0.025; - } - if (Keyboard_mode && Xgetbutton(DOWNARROWKEY)) { - X -= cosf(-Azimuth + M_PI / 2.) * 0.025; - Y -= sinf(-Azimuth + M_PI / 2.) * 0.025; - } - if (Keyboard_mode && Xgetbutton(PAGEUPKEY)) { - Z += 0.025; - } - if (Keyboard_mode && Xgetbutton(PAGEDOWNKEY)) { - Z -= 0.025; - } - - } else { - - /* - * simple, mouse-driven flight model - */ - - if (Xgetbutton(LEFTMOUSE) && Speed < .3) - Speed += delta_speed; - if (Xgetbutton(RIGHTMOUSE) && Speed > -.3) - Speed -= delta_speed; - if (Xgetbutton(MIDDLEMOUSE)) - Speed = Speed*.8; - - xpos = (Xgetvaluator(MOUSEX)-xcntr) / ((float)Wxsize*14.); - ypos = (Xgetvaluator(MOUSEY)-ycntr) / ((float)Wysize*.5); - - /* - * move in direction of view - */ - - Azimuth += xpos; - X += cosf(-Azimuth + M_PI / 2.) * Speed; - Y += sinf(-Azimuth + M_PI / 2.) * Speed; - Z -= ypos * Speed; - } - - /* - * keep from getting too close to terrain - */ - - terrain_z = terrain_height(X, Y); - if (Z < terrain_z +.4) - Z = terrain_z +.4; - - X = MAX(X, 1.); - X = MIN(X, GRID_RANGE); - Y = MAX(Y, 1.); - Y = MIN(Y, GRID_RANGE); - Z = MIN(Z, 20.); - - *((float *) viewer_pos->vdata + 0) = X; - *((float *) viewer_pos->vdata + 1) = Y; - *((float *) viewer_pos->vdata + 2) = Z; - *((float *) viewer_pos->vdata + 3) = Azimuth; -} - -void fly_paper_planes(perfobj_t *paper_plane_pos) -{ - int i; - float speed = .08; - float terrain_z; - - /* - * slow planes down in cyclops mode since - * frame rate is doubled - */ - - for (i = 0; i < NUM_PLANES; i++) { - /* - * If plane is not turning, one chance in 50 of - * starting a turn - */ - if (flock[i].Pcount == 0 && IRND(50) == 1) { - /* initiate a roll */ - /* roll for a random period */ - flock[i].Pcount = IRND(100); - /* random turn rate */ - flock[i].Pturn_rate = IRND(100) / 10000.; - flock[i].Pdirection = IRND(3) - 1; - } - if (flock[i].Pcount > 0) { - /* continue rolling */ - flock[i].Proll += flock[i].Pdirection * flock[i].Pturn_rate; - flock[i].Pcount--; - } else - /* damp amount of roll when turn complete */ - flock[i].Proll *=.95; - - /* turn as a function of roll */ - flock[i].Pazimuth -= flock[i].Proll *.05; - - /* follow terrain elevation */ - terrain_z=terrain_height(flock[i].PX,flock[i].PY); - - /* use a "spring-mass-damp" system of terrain follow */ - flock[i].PZv = flock[i].PZv - - .01 * (flock[i].PZ - (MAX(terrain_z,0.) + - 2.*(float)i/NUM_PLANES+.3)) - flock[i].PZv *.04; - - /* U-turn if fly off world!! */ - if (flock[i].PX < 1 || flock[i].PX > GRID_RANGE - 2 || flock[i].PY < 1 || flock[i].PY > GRID_RANGE - 2) - flock[i].Pazimuth += M_PI; - - /* move planes */ - flock[i].PX += cosf(flock[i].Pazimuth) * speed; - flock[i].PY += sinf(flock[i].Pazimuth) * speed; - flock[i].PZ += flock[i].PZv; - - } - - for (i = 0; i < NUM_PLANES; i++) { - *((float *) paper_plane_pos[i].vdata + 0) = flock[i].PX; - *((float *) paper_plane_pos[i].vdata + 1) = flock[i].PY; - *((float *) paper_plane_pos[i].vdata + 2) = flock[i].PZ; - *((float *) paper_plane_pos[i].vdata + 3) = flock[i].Pazimuth * RAD_TO_DEG; - *((float *) paper_plane_pos[i].vdata + 4) = flock[i].PZv * (-500.); - *((float *) paper_plane_pos[i].vdata + 5) = flock[i].Proll *RAD_TO_DEG; - } -} - -/* compute height above terrain */ -static float terrain_height(float x, float y) -{ - - float dx, dy; - float z00, z01, z10, z11; - float dzx1, dzx2, z1, z2; - int xi, yi; - - x /= XYScale; - y /= XYScale; - xi = MIN((int)x, GridDim-2); - yi = MIN((int)y, GridDim-2); - dx = x - xi; - dy = y - yi; - - /* - View looking straight down onto terrain - - <--dx--> - - z00----z1-------z10 (terrain elevations) - | | | - ^ | Z at(x,y) | - | | | | - dy | | | - | | | | - | | | | - V z00----z2-------z10 - (xi,yi) - - Z= height returned - - */ - - z00 = A[xi * GridDim + yi]; - z10 = A[(xi + 1) * GridDim + yi]; - z01 = A[xi * GridDim + yi + 1]; - z11 = A[(xi + 1) * GridDim + yi + 1]; - - dzx1 = z10 - z00; - dzx2 = z11 - z01; - - z1 = z00 + dzx1 * dx; - z2 = z01 + dzx2 * dx; - - return (ScaleZ*((1.0 - dy) * z1 + dy * z2)); -} - diff --git a/lib/glut-3.7.6/progs/demos/skyfly/gm_main.c b/lib/glut-3.7.6/progs/demos/skyfly/gm_main.c deleted file mode 100644 index a74c8f0bf0acbb74f4f57d048c0eb935d256e120..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/gm_main.c +++ /dev/null @@ -1,341 +0,0 @@ - -#include -#include -#include -#include - -#include "skyfly.h" - -void init_misc(void); -void init_skyfly(void); -void sim_singlechannel(void); -void cull_proc(void); -void draw_proc(void); - -#define SKY_R 0.23f -#define SKY_G 0.35f -#define SKY_B 0.78f - -#define TERR_DARK_R 0.27f -#define TERR_DARK_G 0.18f -#define TERR_DARK_B 0.00f - -#define TERR_LITE_R 0.24f -#define TERR_LITE_G 0.53f -#define TERR_LITE_B 0.05f - -typedef struct { - unsigned char red; - unsigned char green; - unsigned char blue; -} palette_t; - -palette_t pal[256]; -static int buttons[BUTCOUNT] = { 0 }; -static int mouse_x, mouse_y; - -GLboolean show_timer = GL_FALSE; -GLboolean fullscreen = GL_FALSE; - -int Xgetbutton(int button) -{ - int b; - if (button < 0 || button >= BUTCOUNT) - return -1; - b = buttons[button]; - if (button < LEFTMOUSE) - buttons[button] = 0; - return b; -} - -int Xgetvaluator(int val) -{ - switch (val) { - case MOUSEX: - return mouse_x; - case MOUSEY: - return mouse_y; - default: - return -1; - } -} - -void setPaletteIndex(int i, GLfloat r, GLfloat g, GLfloat b) -{ - pal[i].red = (255.0F * r); - pal[i].green = (255.0F * g); - pal[i].blue = (255.0F * b); -} - -void init_cmap(void) -{ - int ii, jj, color; - GLfloat r0, g0, b0, r1, g1, b1; - - /* Set up color map */ - color = 10; - memset(pal,0,sizeof(pal)); - - /* Sky colors */ - sky_base = color; - r0 = SKY_R; r1 = 1.0f; - g0 = SKY_G; g1 = 1.0f; - b0 = SKY_B; b1 = 1.0f; - for (ii = 0; ii < SKY_COLORS; ii++) { - GLfloat p, r, g, b; - p = (GLfloat) ii / (SKY_COLORS-1); - r = r0 + p * (r1 - r0); - g = g0 + p * (g1 - g0); - b = b0 + p * (b1 - b0); - for (jj = 0; jj < FOG_LEVELS; jj++) { - GLfloat fp, fr, fg, fb; - fp = (FOG_LEVELS > 1) ? (GLfloat) jj / (FOG_LEVELS-1) : 0.0f; - fr = r + fp * (fog_params[0] - r); - fg = g + fp * (fog_params[1] - g); - fb = b + fp * (fog_params[2] - b); - setPaletteIndex(sky_base + (ii*FOG_LEVELS) + jj, fr, fg, fb); - } - } - color += (SKY_COLORS * FOG_LEVELS); - - /* Terrain colors */ - terr_base = color; - r0 = TERR_DARK_R; r1 = TERR_LITE_R; - g0 = TERR_DARK_G; g1 = TERR_LITE_G; - b0 = TERR_DARK_B; b1 = TERR_LITE_B; - for (ii = 0; ii < TERR_COLORS; ii++) { - GLfloat p, r, g, b; - p = (GLfloat) ii / (TERR_COLORS-1); - r = r0 + p * (r1 - r0); - g = g0 + p * (g1 - g0); - b = b0 + p * (b1 - b0); - for (jj = 0; jj < FOG_LEVELS; jj++) { - GLfloat fp, fr, fg, fb; - fp = (FOG_LEVELS > 1) ? (GLfloat) jj / (FOG_LEVELS-1) : 0.0f; - fr = r + fp * (fog_params[0] - r); - fg = g + fp * (fog_params[1] - g); - fb = b + fp * (fog_params[2] - b); - setPaletteIndex(terr_base + (ii*FOG_LEVELS) + jj, fr, fg, fb); - } - } - color += (TERR_COLORS * FOG_LEVELS); - - /* Plane colors */ - plane_colors[0] = color; - plane_colors[1] = color + (PLANE_COLORS/2); - plane_colors[2] = color + (PLANE_COLORS-1); - r0 = 0.4; r1 = 0.8; - g0 = 0.4; g1 = 0.8; - b0 = 0.1; b1 = 0.1; - for (ii = 0; ii < PLANE_COLORS; ii++) { - GLfloat p, r, g, b; - p = (GLfloat) ii / (PLANE_COLORS); - r = r0 + p * (r1 - r0); - g = g0 + p * (g1 - g0); - b = b0 + p * (b1 - b0); - setPaletteIndex(plane_colors[0] + ii, r, g, b); - } - color += PLANE_COLORS; -#if 0 - GM_setPalette(pal,256,0); - GM_realizePalette(256,0,true); -#endif -} - -void draw(void); - -void gameLogic(void) -{ - sim_singlechannel(); - draw(); -} - -/* When not visible, stop animating. Restart when visible again. */ -static void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - glutIdleFunc(gameLogic); - } else { - glutIdleFunc(NULL); - } -} - -int lastCount; /* Timer count for last fps update */ -int frameCount; /* Number of frames for timing */ -int fpsRate; /* Current frames per second rate */ - -void draw(void) -{ - int newCount; - char buf[20]; - int i, len; - - /* Draw the frame */ - cull_proc(); - draw_proc(); - - /* Update the frames per second count if we have gone past at least - a quarter of a second since the last update. */ - newCount = glutGet(GLUT_ELAPSED_TIME); - frameCount++; - if ((newCount - lastCount) > 1000) { - fpsRate = (int) ((10000.0f / (newCount - lastCount)) * frameCount); - lastCount = newCount; - frameCount = 0; - } - if (show_timer) { - sprintf(buf,"%3d.%d fps", fpsRate / 10, fpsRate % 10); - glPushAttrib(GL_ENABLE_BIT | GL_CURRENT_BIT); - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); - glDisable(GL_FOG); - glDisable(GL_BLEND); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0, Wxsize, 0, Wysize, -1, 1); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glColor3f(1.0f, 1.0f, 0.0f); - glRasterPos2i(10, 10); - len = strlen(buf); - for (i = 0; i < len; i++) - glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, buf[i]); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopAttrib(); - } - - glutSwapBuffers(); -} - -void -reshape(int width, int height) -{ - Wxsize = width; - Wysize = height; - - mouse_x = Wxsize/2; - mouse_y = Wysize/2; - - glViewport(0, 0, width, height); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 0x1B: - exit(0); - break; - case 'r': - buttons[RKEY] = 1; - break; - case '.': - buttons[PERIODKEY] = 1; - break; - case ' ': - buttons[SPACEKEY] = 1; - break; - case 'f': - set_fog(!fog); - break; - case 'd': - set_dither(!dither); - break; - case 't': - show_timer = !show_timer; - break; - } -} - -void mouse(int button, int state, int x, int y) -{ - mouse_x = x; - mouse_y = y; - switch (button) { - case GLUT_LEFT_BUTTON: - buttons[LEFTMOUSE] = (state == GLUT_DOWN); - break; - case GLUT_MIDDLE_BUTTON: - buttons[MIDDLEMOUSE] = (state == GLUT_DOWN); - break; - case GLUT_RIGHT_BUTTON: - buttons[RIGHTMOUSE] = (state == GLUT_DOWN); - break; - } -} - -void motion(int x, int y) -{ - mouse_x = x; - mouse_y = y; -} - - -/* ARGSUSED1 */ -void special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - buttons[LEFTARROWKEY] = 1; - break; - case GLUT_KEY_UP: - buttons[UPARROWKEY] = 1; - break; - case GLUT_KEY_RIGHT: - buttons[RIGHTARROWKEY] = 1; - break; - case GLUT_KEY_DOWN: - buttons[DOWNARROWKEY] = 1; - break; - case GLUT_KEY_PAGE_UP: - buttons[PAGEUPKEY] = 1; - break; - case GLUT_KEY_PAGE_DOWN: - buttons[PAGEDOWNKEY] = 1; - break; - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (argc > 1 && !strcmp(argv[1], "-f")) - fullscreen = GL_TRUE; - - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - if (fullscreen) { - glutGameModeString("640x480:16@60"); - glutEnterGameMode(); - } else { - glutInitWindowSize(400, 400); - glutCreateWindow("GLUT-based OpenGL skyfly"); - } - glutDisplayFunc(draw); - glutReshapeFunc(reshape); - glutVisibilityFunc(visible); - glutKeyboardFunc(keyboard); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutPassiveMotionFunc(motion); - glutSpecialFunc(special); - - init_misc(); - if (!rgbmode) - init_cmap(); - init_skyfly(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/skyfly/image.c b/lib/glut-3.7.6/progs/demos/skyfly/image.c deleted file mode 100644 index b4448399dfaea631d49c0675ee0d841fd3ab16d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/image.c +++ /dev/null @@ -1,33 +0,0 @@ -#include "stdio.h" -#include "stdlib.h" -#include "string.h" - -unsigned char * read_bwimage(char *name, int *w, int *h) -{ - unsigned char *image; - FILE *image_in; - int components; - - if ( (image_in = fopen(name, "rb")) == NULL) { - return 0; - } - - if (strncmp("terrain", name, 7) == 0) { - *w = 256; - *h = 256; - } else if (strncmp("clouds", name, 6) == 0) { - *w = 128; - *h = 128; - } - components = 1; - - if (components != 1) - return 0; - - image = (unsigned char *)malloc(sizeof(unsigned char) * *w * *h); - - fread(image, sizeof image[0], *w * *h, image_in); - fclose(image_in); - return image; -} - diff --git a/lib/glut-3.7.6/progs/demos/skyfly/perfdraw.c b/lib/glut-3.7.6/progs/demos/skyfly/perfdraw.c deleted file mode 100644 index 5dc4bb9f516f4c1d96f611db4e26eb26a65dd128..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/perfdraw.c +++ /dev/null @@ -1,331 +0,0 @@ - -/* - * perfdraw.c - $Revision: 1.4 $ - */ - -#include -#include -#include -#include "skyfly.h" - -#if !defined(GL_VERSION_1_1) -#if defined(GL_EXT_texture_object) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B) -#else -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#define glDeleteTextures(A,B) -#endif -#endif - -/* static routine decls */ - -extern int clouds; -static void drawlitmesh_11(float *objdata); -static void drawcolrtexmesh_10(float *objdata); -static void drawclouds(float *objdata); - -void drawperfobj(perfobj_t *perfobj) -{ - float *vdata_ptr =(float *) perfobj->vdata; - extern void texenv(int), lightpos(void); - - unsigned int *flagsptr = perfobj->flags; - float *dp; - - for (;;) { - switch (*flagsptr) { - /* - * A paper plane is a single tmesh folded on itself so the orientations - * of some triangles in the mesh are incorrect with respect to - * their normals. This is solved by drawing the tmesh twice; - * first draw only backfaces, then only frontfaces. - */ - case PD_DRAW_PAPER_PLANE: - flagsptr += 1; - glCullFace(GL_FRONT); - drawlitmesh_11(vdata_ptr); - glCullFace(GL_BACK); - drawlitmesh_11((float *)((perfobj_vert_t *) vdata_ptr + 11)); - glPopMatrix(); - break; - - case PD_DRAW_TERRAIN_CELL: - dp = *(float **) (flagsptr + 1); - flagsptr += 2; - drawcolrtexmesh_10(dp); - break; - - case PD_DRAW_CLOUDS: - if (rgbmode) { -#if 0 - glColor3ub(0x30, 0x40, 0xb0); -#else - glColor3f(1.0f, 1.0f, 1.0f); -#endif - } - glDisable(GL_CULL_FACE); - glDisable(GL_DEPTH_TEST); - /*texenv(2);*/ - drawclouds(vdata_ptr); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - flagsptr += 1; - break; - - case PD_PAPER_PLANE_MODE: - switch (*(flagsptr + 1)) { - case PLANES_START: - glShadeModel(GL_FLAT); - glEnable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - if (fog && !rgbmode) - glDisable(GL_FOG); - break; - case PLANES_END: - glShadeModel(GL_SMOOTH); - glDisable(GL_LIGHTING); - if (fog && !rgbmode && FOG_LEVELS > 1) - glEnable(GL_FOG); - break; - } - flagsptr += 2; - break; - - case PD_PAPER_PLANE_POS: /* contains the pushmatrix */ - glPushMatrix(); - glTranslatef(*(vdata_ptr), *(vdata_ptr + 1), *(vdata_ptr + 2)); - glRotatef(*(vdata_ptr + 3), 0.0, 0.0, 1.0); - glRotatef(*(vdata_ptr + 4), 0.0, 1.0, 0.0); - glRotatef(*(vdata_ptr + 5), 1.0, 0.0, 0.0); - flagsptr += 1; - break; - - case PD_VIEWER_POS: - glLoadIdentity(); - glRotatef(-90., 1.0, 0., 0.); - glRotatef(*(vdata_ptr + 3) * RAD_TO_DEG, 0.0, 0.0, 1.0); /* yaw */ - lightpos(); - glTranslatef(-*(vdata_ptr), -*(vdata_ptr + 1), -*(vdata_ptr + 2)); - flagsptr += 1; - break; - - case PD_TEXTURE_BIND: - glBindTexture(GL_TEXTURE_2D, *(flagsptr + 1)); - texenv(*(flagsptr + 1)); - glEnable(GL_TEXTURE_2D); - flagsptr += 2; - break; - - case PD_END: - return; - - default: - fprintf(stderr, "Bad PD primitive %d\n", *flagsptr); - flagsptr++; - break; - } - } -} - -/* - * Notice how the following routines unwind loops and pre-compute indexes - * at compile time. This is crucial in obtaining the maximum data transfer - * from cpu to the graphics pipe. - */ -static void drawlitmesh_11(float *op) -{ - glBegin(GL_TRIANGLE_STRIP); - /* one */ - glNormal3fv((op + PD_V_NORMAL)); - glVertex3fv((op + PD_V_POINT)); - /* two */ - glNormal3fv((op + (PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (PD_V_SIZE + PD_V_POINT))); - /* three */ - glNormal3fv((op + (2 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (2 * PD_V_SIZE + PD_V_POINT))); - /* four */ - glNormal3fv((op + (3 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (3 * PD_V_SIZE + PD_V_POINT))); - /* five */ - glNormal3fv((op + (4 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (4 * PD_V_SIZE + PD_V_POINT))); - /* six */ - glNormal3fv((op + (5 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (5 * PD_V_SIZE + PD_V_POINT))); - /* seven */ - glNormal3fv((op + (6 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (6 * PD_V_SIZE + PD_V_POINT))); - /* eight */ - glNormal3fv((op + (7 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (7 * PD_V_SIZE + PD_V_POINT))); - /* nine */ - glNormal3fv((op + (8 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (8 * PD_V_SIZE + PD_V_POINT))); - /* ten */ - glNormal3fv((op + (9 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (9 * PD_V_SIZE + PD_V_POINT))); - /* eleven */ - glNormal3fv((op + (10 * PD_V_SIZE + PD_V_NORMAL))); - glVertex3fv((op + (10 * PD_V_SIZE + PD_V_POINT))); - - glEnd(); - -} - -static void drawcolrtexmesh_10(float *op) -{ - glBegin(GL_TRIANGLE_STRIP); - /* one */ - glTexCoord2fv((op + PD_V_TEX)); - glColor3fv((op + PD_V_COLOR)); - glVertex3fv((op + PD_V_POINT)); - /* two */ - glTexCoord2fv((op + (PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (PD_V_SIZE + PD_V_POINT))); - /* three */ - glTexCoord2fv((op + (2 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (2 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (2 * PD_V_SIZE + PD_V_POINT))); - /* four */ - glTexCoord2fv((op + (3 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (3 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (3 * PD_V_SIZE + PD_V_POINT))); - /* five */ - glTexCoord2fv((op + (4 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (4 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (4 * PD_V_SIZE + PD_V_POINT))); - /* six */ - glTexCoord2fv((op + (5 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (5 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (5 * PD_V_SIZE + PD_V_POINT))); - /* seven */ - glTexCoord2fv((op + (6 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (6 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (6 * PD_V_SIZE + PD_V_POINT))); - /* eight */ - glTexCoord2fv((op + (7 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (7 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (7 * PD_V_SIZE + PD_V_POINT))); - /* nine */ - glTexCoord2fv((op + (8 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (8 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (8 * PD_V_SIZE + PD_V_POINT))); - /* ten */ - glTexCoord2fv((op + (9 * PD_V_SIZE + PD_V_TEX))); - glColor3fv((op + (9 * PD_V_SIZE + PD_V_COLOR))); - glVertex3fv((op + (9 * PD_V_SIZE + PD_V_POINT))); - - glEnd(); -} - -static void drawclouds(float *op) -{ -#define SKY_STRIPS 24 - - /* Break into quad strips so cheap fog works better */ - if (0 == clouds) { - - GLfloat *vc0, *vc1, *vc2; - GLfloat *tc0, *tc1, *tc2; - GLfloat sky_s0, sky_s1, sky_t0, sky_t1; - GLfloat sky_x0, sky_x1, sky_y0, sky_y1, sky_z; - int ii, jj; - GLfloat s0, s1, t0, t1; - GLfloat x0, x1, y0, y1, z0; - - vc0 = op + PD_V_POINT; - vc1 = op + PD_V_POINT + PD_V_SIZE; - vc2 = op + PD_V_POINT + PD_V_SIZE * 2; - - tc0 = op + PD_V_TEX; - tc1 = op + PD_V_TEX + PD_V_SIZE; - tc2 = op + PD_V_TEX + PD_V_SIZE * 2; - - sky_s0 = tc0[0]; - sky_s1 = tc1[0]; - sky_t0 = tc0[1]; - sky_t1 = tc2[1]; - - sky_x0 = vc0[0]; - sky_x1 = vc1[0]; - sky_y0 = vc0[1]; - sky_y1 = vc2[1]; - sky_z = vc0[2]; - - clouds = glGenLists(1); - - glNewList(clouds, GL_COMPILE); - - s1 = (1.0f / SKY_STRIPS) * (sky_s1 - sky_s0); - t1 = (1.0f / SKY_STRIPS) * (sky_t1 - sky_t0); - x1 = (1.0f / SKY_STRIPS) * (sky_x1 - sky_x0); - y1 = (1.0f / SKY_STRIPS) * (sky_y1 - sky_y0); - - z0 = sky_z; - s0 = sky_s0; - x0 = sky_x0; - - for (ii = 0; ii < SKY_STRIPS; ii++, s0 += s1, x0 += x1) { - - t0 = sky_t0; - y0 = sky_y0; - - glBegin(GL_QUAD_STRIP); - - glTexCoord2f(s0, t0); - glVertex3f(x0, y0, z0); - - glTexCoord2f(s0 + s1, t0); - glVertex3f(x0 + x1, y0, z0); - - for (jj = 0; jj < SKY_STRIPS; jj++, t0 += t1, y0 += y1) { - - glTexCoord2f(s0 + s1, t0 + t1); - glVertex3f(x0 + x1, y0 + y1, z0); - - glTexCoord2f(s0, t0 + t1); - glVertex3f(x0, y0 + y1, z0); - } - - glEnd(); - - } - - glEndList(); - } - - glCallList(clouds); -} - -void putv3fdata(float *v, perfobj_vert_t *ptr) -{ - ptr->vert[0] = v[0]; - ptr->vert[1] = v[1]; - ptr->vert[2] = v[2]; -} - -void putc3fdata(float *c, perfobj_vert_t *ptr) -{ - ptr->color[0] = c[0]; - ptr->color[1] = c[1]; - ptr->color[2] = c[2]; -} - -void putn3fdata(float *n, perfobj_vert_t *ptr) -{ - ptr->normal[0] = n[0]; - ptr->normal[1] = n[1]; - ptr->normal[2] = n[2]; -} - -void putt2fdata(float *t, perfobj_vert_t *ptr) -{ - ptr->texture[0] = t[0]; - ptr->texture[1] = t[1]; -} - diff --git a/lib/glut-3.7.6/progs/demos/skyfly/random.c b/lib/glut-3.7.6/progs/demos/skyfly/random.c deleted file mode 100644 index 7c8ee43aa4f04fd5aeebae72e739c7c4bfe73761..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/random.c +++ /dev/null @@ -1,376 +0,0 @@ -/* - * Copyright (c) 1983 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#ifdef __STDC__ - #pragma weak initstate = _initstate - #pragma weak random = _random - #pragma weak setstate = _setstate - #pragma weak srandom = _srandom -#endif -/*#include "synonyms.h"*/ - -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)random.c 5.5 (Berkeley) 7/6/88"; -#endif /* LIBC_SCCS and not lint */ - -#include -#include /* for prototyping */ - -#undef random -long random(void); - -/* - * random.c: - * An improved random number generation package. In addition to the standard - * rand()/srand() like interface, this package also has a special state info - * interface. The initstate() routine is called with a seed, an array of - * bytes, and a count of how many bytes are being passed in; this array is then - * initialized to contain information for random number generation with that - * much state information. Good sizes for the amount of state information are - * 32, 64, 128, and 256 bytes. The state can be switched by calling the - * setstate() routine with the same array as was initiallized with initstate(). - * By default, the package runs with 128 bytes of state information and - * generates far better random numbers than a linear congruential generator. - * If the amount of state information is less than 32 bytes, a simple linear - * congruential R.N.G. is used. - * Internally, the state information is treated as an array of longs; the - * zeroeth element of the array is the type of R.N.G. being used (small - * integer); the remainder of the array is the state information for the - * R.N.G. Thus, 32 bytes of state information will give 7 longs worth of - * state information, which will allow a degree seven polynomial. (Note: the - * zeroeth word of state information also has some other information stored - * in it -- see setstate() for details). - * The random number generation technique is a linear feedback shift register - * approach, employing trinomials (since there are fewer terms to sum up that - * way). In this approach, the least significant bit of all the numbers in - * the state table will act as a linear feedback shift register, and will have - * period 2^deg - 1 (where deg is the degree of the polynomial being used, - * assuming that the polynomial is irreducible and primitive). The higher - * order bits will have longer periods, since their values are also influenced - * by pseudo-random carries out of the lower bits. The total period of the - * generator is approximately deg*(2**deg - 1); thus doubling the amount of - * state information has a vast influence on the period of the generator. - * Note: the deg*(2**deg - 1) is an approximation only good for large deg, - * when the period of the shift register is the dominant factor. With deg - * equal to seven, the period is actually much longer than the 7*(2**7 - 1) - * predicted by this formula. - */ - - - -/* - * For each of the currently supported random number generators, we have a - * break value on the amount of state information (you need at least this - * many bytes of state info to support this random number generator), a degree - * for the polynomial (actually a trinomial) that the R.N.G. is based on, and - * the separation between the two lower order coefficients of the trinomial. - */ - -#define TYPE_0 0 /* linear congruential */ -#define BREAK_0 8 -#define DEG_0 0 -#define SEP_0 0 - -#define TYPE_1 1 /* x**7 + x**3 + 1 */ -#define BREAK_1 32 -#define DEG_1 7 -#define SEP_1 3 - -#define TYPE_2 2 /* x**15 + x + 1 */ -#define BREAK_2 64 -#define DEG_2 15 -#define SEP_2 1 - -#define TYPE_3 3 /* x**31 + x**3 + 1 */ -#define BREAK_3 128 -#define DEG_3 31 -#define SEP_3 3 - -#define TYPE_4 4 /* x**63 + x + 1 */ -#define BREAK_4 256 -#define DEG_4 63 -#define SEP_4 1 - - -/* - * Array versions of the above information to make code run faster -- relies - * on fact that TYPE_i == i. - */ - -#define MAX_TYPES 5 /* max number of types above */ - -static const int degrees[ MAX_TYPES ] = { DEG_0, DEG_1, DEG_2, - DEG_3, DEG_4 }; - -static const int seps[ MAX_TYPES ] = { SEP_0, SEP_1, SEP_2, - SEP_3, SEP_4 }; - - - -/* - * Initially, everything is set up as if from : - * initstate( 1, &randtbl, 128 ); - * Note that this initialization takes advantage of the fact that srandom() - * advances the front and rear pointers 10*rand_deg times, and hence the - * rear pointer which starts at 0 will also end up at zero; thus the zeroeth - * element of the state information, which contains info about the current - * position of the rear pointer is just - * MAX_TYPES*(rptr - state) + TYPE_3 == TYPE_3. - */ - -static long randtbl[ DEG_3 + 1 ] = { TYPE_3, - 0x9a319039, 0x32d9c024, 0x9b663182, 0x5da1f342, - 0xde3b81e0, 0xdf0a6fb5, 0xf103bc02, 0x48f340fb, - 0x7449e56b, 0xbeb1dbb0, 0xab5c5918, 0x946554fd, - 0x8c2e680f, 0xeb3d799f, 0xb11ee0b7, 0x2d436b86, - 0xda672e2a, 0x1588ca88, 0xe369735d, 0x904f35f7, - 0xd7158fd6, 0x6fa6f051, 0x616e6b96, 0xac94efdc, - 0x36413f93, 0xc622c298, 0xf5a42ab8, 0x8a88d77b, - 0xf5ad9d0e, 0x8999220b, 0x27fb47b9 }; - -/* - * fptr and rptr are two pointers into the state info, a front and a rear - * pointer. These two pointers are always rand_sep places aparts, as they cycle - * cyclically through the state information. (Yes, this does mean we could get - * away with just one pointer, but the code for random() is more efficient this - * way). The pointers are left positioned as they would be from the call - * initstate( 1, randtbl, 128 ) - * (The position of the rear pointer, rptr, is really 0 (as explained above - * in the initialization of randtbl) because the state table pointer is set - * to point to randtbl[1] (as explained below). - */ - -static long *fptr = &randtbl[ SEP_3 + 1 ]; -static long *rptr = &randtbl[ 1 ]; - - - -/* - * The following things are the pointer to the state information table, - * the type of the current generator, the degree of the current polynomial - * being used, and the separation between the two pointers. - * Note that for efficiency of random(), we remember the first location of - * the state information, not the zeroeth. Hence it is valid to access - * state[-1], which is used to store the type of the R.N.G. - * Also, we remember the last location, since this is more efficient than - * indexing every time to find the address of the last element to see if - * the front and rear pointers have wrapped. - */ - -static long *state = &randtbl[ 1 ]; - -static int rand_type = TYPE_3; -static int rand_deg = DEG_3; -static int rand_sep = SEP_3; - -static long *end_ptr = &randtbl[ DEG_3 + 1 ]; - - - -/* - * srandom: - * Initialize the random number generator based on the given seed. If the - * type is the trivial no-state-information type, just remember the seed. - * Otherwise, initializes state[] based on the given "seed" via a linear - * congruential generator. Then, the pointers are set to known locations - * that are exactly rand_sep places apart. Lastly, it cycles the state - * information a given number of times to get rid of any initial dependencies - * introduced by the L.C.R.N.G. - * Note that the initialization of randtbl[] for default usage relies on - * values produced by this routine. - */ - -void -srandom( x ) - unsigned x; -{ - register int i; - - if( rand_type == TYPE_0 ) { - state[ 0 ] = (long) x; - } - else { - state[ 0 ] = (long) x; - for( i = 1; i < rand_deg; i++ ) { - state[i] = 1103515245*state[i - 1] + 12345; - } - fptr = &state[ rand_sep ]; - rptr = &state[ 0 ]; - for( i = 0; i < 10*rand_deg; i++ ) random(); - } -} - - - -/* - * initstate: - * Initialize the state information in the given array of n bytes for - * future random number generation. Based on the number of bytes we - * are given, and the break values for the different R.N.G.'s, we choose - * the best (largest) one we can and set things up for it. srandom() is - * then called to initialize the state information. - * Note that on return from srandom(), we set state[-1] to be the type - * multiplexed with the current value of the rear pointer; this is so - * successive calls to initstate() won't lose this information and will - * be able to restart with setstate(). - * Note: the first thing we do is save the current state, if any, just like - * setstate() so that it doesn't matter when initstate is called. - * Returns a pointer to the old state. - */ - -char * -initstate( seed, arg_state, n ) - - unsigned seed; /* seed for R. N. G. */ - char *arg_state; /* pointer to state array */ - size_t n; /* # bytes of state info */ -{ - register char *ostate = (char *)( &state[ -1 ] ); - - if( rand_type == TYPE_0 ) state[ -1 ] = rand_type; - else state[ -1 ] = MAX_TYPES*(rptr - state) + rand_type; - if( n < BREAK_1 ) { - if( n < BREAK_0 ) { - fprintf( stderr, "initstate: not enough state (%d bytes) with which to do jack; ignored.\n", n ); - return 0; - } - rand_type = TYPE_0; - rand_deg = DEG_0; - rand_sep = SEP_0; - } - else { - if( n < BREAK_2 ) { - rand_type = TYPE_1; - rand_deg = DEG_1; - rand_sep = SEP_1; - } - else { - if( n < BREAK_3 ) { - rand_type = TYPE_2; - rand_deg = DEG_2; - rand_sep = SEP_2; - } - else { - if( n < BREAK_4 ) { - rand_type = TYPE_3; - rand_deg = DEG_3; - rand_sep = SEP_3; - } - else { - rand_type = TYPE_4; - rand_deg = DEG_4; - rand_sep = SEP_4; - } - } - } - } - state = &( ( (long *)arg_state )[1] ); /* first location */ - end_ptr = &state[ rand_deg ]; /* must set end_ptr before srandom */ - srandom( seed ); - if( rand_type == TYPE_0 ) state[ -1 ] = rand_type; - else state[ -1 ] = MAX_TYPES*(rptr - state) + rand_type; - return( ostate ); -} - - - -/* - * setstate: - * Restore the state from the given state array. - * Note: it is important that we also remember the locations of the pointers - * in the current state information, and restore the locations of the pointers - * from the old state information. This is done by multiplexing the pointer - * location into the zeroeth word of the state information. - * Note that due to the order in which things are done, it is OK to call - * setstate() with the same state as the current state. - * Returns a pointer to the old state information. - */ - -char * -setstate( arg_state ) - - const char *arg_state; -{ - register long *new_state = (long *)arg_state; - register int type = (int)new_state[0]%MAX_TYPES; - register int rear = (int)new_state[0]/MAX_TYPES; - char *ostate = (char *)( &state[ -1 ] ); - - if( rand_type == TYPE_0 ) state[ -1 ] = rand_type; - else state[ -1 ] = MAX_TYPES*(rptr - state) + rand_type; - switch( type ) { - case TYPE_0: - case TYPE_1: - case TYPE_2: - case TYPE_3: - case TYPE_4: - rand_type = type; - rand_deg = degrees[ type ]; - rand_sep = seps[ type ]; - break; - - default: - fprintf( stderr, "setstate: state info has been munged; not changed.\n" ); - } - state = &new_state[ 1 ]; - if( rand_type != TYPE_0 ) { - rptr = &state[ rear ]; - fptr = &state[ (rear + rand_sep)%rand_deg ]; - } - end_ptr = &state[ rand_deg ]; /* set end_ptr too */ - return( ostate ); -} - - - -/* - * random: - * If we are using the trivial TYPE_0 R.N.G., just do the old linear - * congruential bit. Otherwise, we do our fancy trinomial stuff, which is the - * same in all ther other cases due to all the global variables that have been - * set up. The basic operation is to add the number at the rear pointer into - * the one at the front pointer. Then both pointers are advanced to the next - * location cyclically in the table. The value returned is the sum generated, - * reduced to 31 bits by throwing away the "least random" low bit. - * Note: the code takes advantage of the fact that both the front and - * rear pointers can't wrap on the same call by not testing the rear - * pointer if the front one has wrapped. - * Returns a 31-bit random number. - */ - -long -random(void) -{ - long i; - - if( rand_type == TYPE_0 ) { - i = state[0] = ( state[0]*1103515245 + 12345 )&0x7fffffff; - } - else { - *fptr += *rptr; - i = (*fptr >> 1)&0x7fffffff; /* chucking least random bit */ - if( ++fptr >= end_ptr ) { - fptr = state; - ++rptr; - } - else { - if( ++rptr >= end_ptr ) rptr = state; - } - } - return( i ); -} - diff --git a/lib/glut-3.7.6/progs/demos/skyfly/skyfly.c b/lib/glut-3.7.6/progs/demos/skyfly/skyfly.c deleted file mode 100644 index 8143cd3dde9beeaa60e1312fb9b18d90a3914f2a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/skyfly.c +++ /dev/null @@ -1,777 +0,0 @@ - -/* - * skyfly.c $Revision: 1.5 $ - */ - -#include -#include -#include -#include -#include -#include -#include -#include "skyfly.h" - -#if !defined(GL_VERSION_1_1) -#if defined(GL_EXT_texture_object) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B) -#else -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#define glDeleteTextures(A,B) -#endif -#if defined(GL_EXT_texture) -#define GL_RGB5 GL_RGB5_EXT -#else -#define GL_RGB5 GL_RGB -#endif -#endif - -#define ERR_WARNING 0x1 -#define ERR_FATAL 0x2 -#define ERR_SYSERR 0x4 - -#define AMALLOC(a, type, num, func) { \ - if((int)(a = (type*)malloc(sizeof(type)*(num))) <= 0) \ - err_msg(ERR_FATAL, func, "amalloc failed"); \ -} - -float ScaleZ = 2.3; /* Terrain height scale factor */ -int CellDim = 4; /* Terrain cell is CellDim X Celldim quads */ -int NumCells = 36; /* Terrain grid is NumCells X NumCells cells */ -int GridDim; /* Terrain grid is GridDim X GridDim quads */ -float XYScale; /* Conversion from world-space to grid index */ -float CellSize; /* World-space size of cell */ - -int Init_pos; /* if true, set initial position and kbd mode */ -float Init_x, Init_y, Init_z, Init_azimuth; -int rgbmode = GL_TRUE; - -/* Color index ramp info */ -int sky_base, terr_base; -int plane_colors[3]; - -/* - * Data that changes from frame to frame needs to be double-buffered because - * two processes may be working on two different frames at the same time. - */ -typedef struct buffered_data_struct { - - /* objects */ - perfobj_t paper_plane_pos_obj[NUM_PLANES]; - perfobj_t viewer_pos_obj; - - /* flags */ - unsigned int paper_plane_pos_flags[2]; - unsigned int viewer_pos_flags[2]; - - /* data */ - float paper_plane_position[NUM_PLANES][6]; - float viewer_position[4]; - -} buffered_data; - -/* - * This is the per-pipe data structure which holds pipe id, semaphores, - * and variable data buffers. Both gfxpipe and buffer structures live in - * shared memory so the sim can communicate with its forked children. - */ -typedef struct gfxpipe_data_struct { - int gfxpipenum; - buffered_data **buffers; - -} gfxpipe_data; - -static gfxpipe_data *gfxpipe; /* A processes' gfxpipe struct */ -static gfxpipe_data *gfxpipes[1]; /* Maximum of 1 graphics pipe */ -static int num_pipes; -float fog_params[4]; /* Fog and clear color */ -static float fog_density = 0.025*2; -float far_cull = 31.; /* Far clip distance from eye */ -int mipmap = 0; -static int texmode = GL_NEAREST; - -static int threecomp = 1; - -int dither = GL_TRUE, fog = GL_TRUE; -int Wxsize = 320, Wysize = 240; /* Default to 320x240 window */ - -/* - * All non-variable data like geometry is stored in shared memory. This way - * forked processes avoid duplicating data unnecessarily. - */ -shared_data *SharedData; - -/* //////////////////////////////////////////////////////////////////////// */ - -void sim_proc(void); -void sim_cyclops(void); -void sim_dualchannel(void); -void sim_singlechannel(void); -void cull_proc(void); -void draw_proc(void); -void sim_exit(void); -void init_misc(void); -void init_shmem(void); -void init_terrain(void); -void init_clouds(void); -void init_paper_planes(void); -void init_positions(void); -void init_gfxpipes(void); -void init_gl(int gfxpipenum); -void err_msg(int type, char* func, char* error); -void fly(perfobj_t *viewer_pos); -void fly_paper_planes(perfobj_t *paper_plane_pos); -float terrain_height(void); - -void init_skyfly(void) -{ - init_shmem(); - init_gfxpipes(); - init_clouds(); - init_terrain(); - init_paper_planes(); - init_positions(); - - gfxpipe = gfxpipes[0]; - init_gl(gfxpipe->gfxpipenum); -} - -/* - * This is a single-channel version of the dual-channel simulation - * described above. - */ -void sim_singlechannel(void) -{ - buffered_data **buffered = gfxpipes[0]->buffers; - - fly(&(buffered[0]->viewer_pos_obj)); - fly_paper_planes(buffered[0]->paper_plane_pos_obj); -} - -/*-------------------------------------- Cull ------------------------------*/ - -/* - * The cull and draw processes operate in a classic producer/consumer, - * write/read configuration using a ring buffer. The ring consists of pointers - * to perfobj's instead of actual geometric data. This is important because - * you want to minimize the amount of data 'shared' between two processes that - * run on different processors in order to reduce cache invalidations. - * enter_in_ring and get_from_ring spin on ring full and ring empty - * conditions respectively. - * Since cull/draw are shared group processes(sproc), the ring buffer is - * in the virtual address space of both processes and shared memory is not - * necessary. -*/ - -#define RING_SIZE 1000 /* Size of ring */ - -typedef struct render_ring_struct { - volatile unsigned int head, tail; - perfobj_t **ring; -} render_ring; - -render_ring ringbuffer; - -void enter_in_ring(perfobj_t *perfobj); -perfobj_t* get_from_ring(void); - -void cull_proc(void) -{ - - static struct cull { - perfobj_t **cells; - perfobj_t viewer_pos_obj[2]; - unsigned int viewer_pos_flags[4]; - float viewer_position[2][4]; - float fovx, side, farr, epsilon, plane_epsilon; - } cull; - - static int init = 0; - - if (!init) { - int x, y; - - cull.fovx = FOV *(float) Wxsize /(float) Wysize; - cull.side = far_cull / cosf(cull.fovx / 2.); - cull.farr = 2.* cull.side * sinf(cull.fovx / 2.); - cull.epsilon = sqrtf(2.) * CellSize / 2.; - cull.plane_epsilon = .5; - - cull.cells = (perfobj_t **) malloc(NumCells * NumCells * sizeof(perfobj_t *)); - for (x = 0; x < NumCells; x++) - for (y = 0; y < NumCells; y++) - cull.cells[x * NumCells + y] = - &(SharedData->terrain_cells[x * NumCells + y]); - - ringbuffer.ring = malloc(RING_SIZE * sizeof(perfobj_t *)); - ringbuffer.head = ringbuffer.tail = 0; - - cull.viewer_pos_obj[0].flags = cull.viewer_pos_flags; - cull.viewer_pos_obj[0].vdata = cull.viewer_position[0]; - cull.viewer_pos_obj[1].flags = cull.viewer_pos_flags; - cull.viewer_pos_obj[1].vdata = cull.viewer_position[1]; - - *(cull.viewer_pos_flags) = PD_VIEWER_POS; - *(cull.viewer_pos_flags + 1) = PD_END; - init = 1; - } - - { - float *viewer; - float vX, vY, vazimuth, px, py; - float left_area, right_area; - float left_dx, left_dy, right_dx, right_dy; - float ax, ay, bx, by, cx, cy; - float minx, maxx, miny, maxy; - int i, buffer = 0; - int x, y, x0, y0, x1, y1; - perfobj_t *viewer_pos, *paper_plane_pos; - buffered_data *buffered; - perfobj_t *terrain_texture = &(SharedData->terrain_texture_obj); - perfobj_t *paper_plane = &(SharedData->paper_plane_obj); - perfobj_t *paper_plane_start = &(SharedData->paper_plane_start_obj); - perfobj_t *paper_plane_end = &(SharedData->paper_plane_end_obj); - perfobj_t *clouds_texture = &(SharedData->clouds_texture_obj); - perfobj_t *clouds = &(SharedData->clouds_obj); - - buffered = gfxpipe->buffers[buffer]; - - viewer_pos = &(buffered->viewer_pos_obj); - paper_plane_pos = buffered->paper_plane_pos_obj; - - vX = *((float *) viewer_pos->vdata + 0); - vY = *((float *) viewer_pos->vdata + 1); - vazimuth = *((float *) viewer_pos->vdata + 3); - - viewer = cull.viewer_position[buffer]; - - viewer[0] = vX; - viewer[1] = vY; - viewer[2] = *((float *) viewer_pos->vdata + 2); - viewer[3] = vazimuth; - - /* - * Begin cull to viewing frustrum - */ - ax = (vX - sinf(-vazimuth + cull.fovx *.5) * cull.side); - ay = (vY + cosf(-vazimuth + cull.fovx *.5) * cull.side); - bx = vX; - by = vY; - cx = (vX + sinf(vazimuth + cull.fovx *.5) * cull.side); - cy = (vY + cosf(vazimuth + cull.fovx *.5) * cull.side); - - minx = MIN(MIN(ax, bx), cx); - miny = MIN(MIN(ay, by), cy); - maxx = MAX(MAX(ax, bx), cx); - maxy = MAX(MAX(ay, by), cy); - - x0 = MAX((int) (minx / CellSize), 0); - x1 = MIN((int) (maxx / CellSize) + 1, NumCells); - y0 = MAX((int) (miny / CellSize), 0); - y1 = MIN((int) (maxy / CellSize) + 1, NumCells); - - left_dx = ax - bx; - left_dy = ay - by; - right_dx = cx - bx; - right_dy = cy - by; - - enter_in_ring(&cull.viewer_pos_obj[buffer]); - - if (viewer[2] -cull.epsilon * cull.side)) { - enter_in_ring(cull.cells[x * NumCells + y]); - } - } - } - - enter_in_ring(paper_plane_start); - /* - * Add visible planes to ring buffer - */ - for (i = 0; i < NUM_PLANES; i++) { - - px = *((float *) paper_plane_pos[i].vdata + 0); - py = *((float *) paper_plane_pos[i].vdata + 1); - left_area = left_dx * (py - by) - left_dy * (px - bx); - right_area = right_dx * (py - by) - right_dy * (px - bx); - - if (left_area < cull.plane_epsilon * cull.side && right_area > -cull.plane_epsilon * cull.side) { - enter_in_ring(&paper_plane_pos[i]); - enter_in_ring(paper_plane); - } - } - - enter_in_ring(paper_plane_end); - - if (viewer[2]>SKY_HIGH) { - /* draw clouds after everything else */ - enter_in_ring(clouds_texture); - enter_in_ring(clouds); - } - - enter_in_ring((perfobj_t *) 0); /* 0 indicates end of frame */ - - buffer = !buffer; - } -} - -void enter_in_ring(perfobj_t *perfobj) -{ - while (ringbuffer.head == RING_SIZE+ringbuffer.tail-1) {} - ringbuffer.ring[ringbuffer.head % RING_SIZE] = perfobj; - ringbuffer.head++; -} - -perfobj_t* get_from_ring(void) -{ - static perfobj_t *pobj; - - while(ringbuffer.tail == ringbuffer.head) {} - pobj = ringbuffer.ring[ringbuffer.tail % RING_SIZE]; - ringbuffer.tail++; - return pobj; -} - -/*-------------------------------------- Draw ------------------------------*/ - -void draw_proc(void) -{ - perfobj_t *too_draw; - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - while ((too_draw = get_from_ring())) { - drawperfobj(too_draw); - } -} - - -/*------------------------------- Init -----------------------------------*/ - -void init_texture_and_lighting(void); -void init_buffered_data(buffered_data *buffered); - -void init_misc(void) -{ - float density; - - threecomp = rgbmode; - - /* - * Compute fog and clear color to be linear interpolation between blue - * and white. - */ - density = 1.- expf(-5.5 * fog_density * fog_density * - far_cull * far_cull); - density = MAX(MIN(density, 1.), 0.); - - fog_params[0] = .23 + density *.57; - fog_params[1] = .35 + density *.45; - fog_params[2] = .78 + density *.22; - fog_params[3] = 1.0f; -} - -void init_shmem(void) -{ - int i; - unsigned int *flagsptr; - perfobj_vert_t *vertsptr; - int nflags, nverts; - - AMALLOC(SharedData, shared_data, 1, "init_shmem"); - AMALLOC(SharedData->terrain_cells, perfobj_t, - NumCells * NumCells, "init_shmem"); - AMALLOC(SharedData->terrain_cell_flags, unsigned int *, - NumCells * NumCells, "init_shmem"); - AMALLOC(SharedData->terrain_cell_verts, perfobj_vert_t *, - NumCells * NumCells, "init_shmem"); - - /* - * Allocate the flags and vertices of all terrain cells in 2 big chunks - * to improve data locality and consequently, cache hits - */ - nflags = 2 * CellDim + 1; - AMALLOC(flagsptr, unsigned int, nflags * NumCells * NumCells, "init_shmem"); - nverts = (CellDim + 1) * 2 * CellDim; - AMALLOC(vertsptr, perfobj_vert_t, nverts * NumCells * NumCells, "init_shmem"); - - for (i = 0; i < NumCells * NumCells; i++) { - SharedData->terrain_cell_flags[i] = flagsptr; - flagsptr += nflags; - SharedData->terrain_cell_verts[i] = vertsptr; - vertsptr += nverts; - } -} - -/* - * Initialize gfxpipe data structures. There is one set of semaphores - * per pipe. - */ -void init_gfxpipes(void) -{ - int i, j; - - num_pipes = 1; - - for (i = 0; i < num_pipes; i++) { - - AMALLOC(gfxpipes[i], gfxpipe_data, 1, "initgfxpipes"); - AMALLOC(gfxpipes[i]->buffers, buffered_data *, NBUFFERS, - "init_gfxpipes"); - gfxpipes[i]->gfxpipenum = i; - } - - for (j = 0; j < NBUFFERS; j++) { - AMALLOC(gfxpipes[0]->buffers[j], buffered_data, 1, - "init_gfxpipes"); - init_buffered_data(gfxpipes[0]->buffers[j]); - } -} - -void init_buffered_data(buffered_data *buffered) -{ - int i; - perfobj_t *pobj; - - pobj = &(buffered->viewer_pos_obj); - pobj->flags = buffered->viewer_pos_flags; - pobj->vdata = buffered->viewer_position; - - *(buffered->viewer_pos_flags) = PD_VIEWER_POS; - *(buffered->viewer_pos_flags + 1) = PD_END; - - for (i = 0; i < NUM_PLANES; i++) { - pobj = &(buffered->paper_plane_pos_obj[i]); - pobj->flags = buffered->paper_plane_pos_flags; - pobj->vdata = buffered->paper_plane_position[i]; - } - *(buffered->paper_plane_pos_flags) = PD_PAPER_PLANE_POS; - *(buffered->paper_plane_pos_flags + 1) = PD_END; -} - -/* ARGSUSED */ -void init_gl(int gfxpipenum) -{ - glDrawBuffer(GL_BACK); - glClear(GL_COLOR_BUFFER_BIT); - if (!rgbmode) - glIndexi(0); - - set_fog(fog); - - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - - set_dither(dither); - - glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); - - init_texture_and_lighting(); - - glMatrixMode(GL_PROJECTION); - gluPerspective(FOV * RAD_TO_DEG, (float)Wxsize/(float)Wysize, - .1, far_cull *.95); - glMatrixMode(GL_MODELVIEW); - glHint(GL_FOG_HINT, GL_FASTEST); - glFogi(GL_FOG_MODE, GL_EXP2); - glFogf(GL_FOG_DENSITY, fog_density); - - if (rgbmode) { - glFogfv(GL_FOG_COLOR, fog_params); - if (fog && fog_density > 0) - glEnable(GL_FOG); - } else if (FOG_LEVELS > 1) { - glFogi(GL_FOG_INDEX, FOG_LEVELS-1); - if (fog) - glEnable(GL_FOG); - } -} - -unsigned char* read_bwimage(char *name, int *w, int *h); - -void init_texture_and_lighting(void) -{ - - unsigned char *bwimage256, *bwimage128; - int w, h; - - if(!(bwimage256 = (unsigned char*) read_bwimage("terrain.bw", &w, &h))) - if(!(bwimage256 = (unsigned char *) - read_bwimage("/usr/demos/data/textures/terrain.bw", &w, &h))) - err_msg(ERR_FATAL, "init_texture_and_lighting()", - "Can't open terrain.bw"); - - if(w != 256 || h != 256) - err_msg(ERR_FATAL, "init_texture_and_lighting()", - "terrain.bw must be 256x256"); - - if (!(bwimage128 = (unsigned char *) read_bwimage("clouds.bw", &w, &h))) - if (!(bwimage128 = (unsigned char *) - read_bwimage("/usr/demos/data/textures/clouds.bw", &w, &h))) - err_msg(ERR_FATAL, "init_misc()", "Can't open clouds.bw"); - - if (w != 128 || h != 128) - err_msg(ERR_FATAL, "init_misc()", "clouds.bw must be 128x128"); - - if (mipmap) - texmode = GL_LINEAR_MIPMAP_LINEAR; - else - texmode = GL_NEAREST; - - if (!threecomp) { - /* - * 1 and 2-component textures offer the highest performance on SkyWriter - * so they are the most recommended. - */ - glBindTexture(GL_TEXTURE_2D, 1); - if (!mipmap) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texmode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texmode); - if (mipmap) - gluBuild2DMipmaps(GL_TEXTURE_2D, /*0,*/ 1, 256, 256, /*0,*/ GL_LUMINANCE, GL_UNSIGNED_BYTE, bwimage256); - else if (rgbmode) - glTexImage2D(GL_TEXTURE_2D, 0, 1, 256, 256, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, bwimage256); - else { -#define TXSIZE 128 - GLubyte buf[TXSIZE*TXSIZE]; - int ii; - gluScaleImage(GL_LUMINANCE, 256, 256, GL_UNSIGNED_BYTE, bwimage256, - TXSIZE, TXSIZE, GL_UNSIGNED_BYTE, buf); - for (ii = 0; ii < TXSIZE*TXSIZE; ii++) { - buf[ii] = terr_base + - FOG_LEVELS * (buf[ii] >> (8-TERR_BITS)); - } -#ifdef GL_COLOR_INDEX8_EXT /* Requires SGI_index_texture and EXT_paletted_texture */ - glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, TXSIZE, TXSIZE, - 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, buf); -#endif -#undef TXSIZE - } - - glBindTexture(GL_TEXTURE_2D, 2); - if (!mipmap) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texmode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texmode); - if (mipmap) - gluBuild2DMipmaps(GL_TEXTURE_2D, /*0,*/ 1, 128, 128, /*0,*/ GL_LUMINANCE, GL_UNSIGNED_BYTE, bwimage128); - else if (rgbmode) - glTexImage2D(GL_TEXTURE_2D, 0, 1, 128, 128, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, bwimage128); - else { -#define TXSIZE 64 - GLubyte buf[TXSIZE*TXSIZE]; - int ii; - gluScaleImage(GL_LUMINANCE, 128, 128, GL_UNSIGNED_BYTE, bwimage128, - TXSIZE, TXSIZE, GL_UNSIGNED_BYTE, buf); - for (ii = 0; ii < TXSIZE*TXSIZE; ii++) { - buf[ii] = sky_base + - FOG_LEVELS * (buf[ii] >> (8-SKY_BITS)); - } -#ifdef GL_COLOR_INDEX8_EXT /* Requires SGI_index_texture and EXT_paletted_texture */ - glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, TXSIZE, TXSIZE, - 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, buf); -#endif -#undef TXSIZE - } - } else { - float r0, r1, g0, g1, b0, b1; - int i; - unsigned char *t256 = (unsigned char *)malloc(256*256*3); - - /* terrain */ - r0 = 0.40f; r1 = 0.30f; - g0 = 0.30f; g1 = 0.70f; - b0 = 0.15f; b1 = 0.10f; - - for(i = 0; i < 256*256; i++) { - float t = bwimage256[i] / 255.0f; - t256[3*i+0] = (unsigned char) (255.0f * (r0 + t*t * (r1-r0))); - t256[3*i+1] = (unsigned char) (255.0f * (g0 + t * (g1-g0))); - t256[3*i+2] = (unsigned char) (255.0f * (b0 + t*t * (b1-b0))); - } - glBindTexture(GL_TEXTURE_2D, 1); - if (!mipmap) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texmode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texmode); - if (mipmap) - gluBuild2DMipmaps(GL_TEXTURE_2D, /*0,*/ 3, 256, 256, /*0,*/ GL_RGB, GL_UNSIGNED_BYTE, t256); - else - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, t256); - - - /* sky without fog */ - r0 = 0.23; r1 = 1.0f; - g0 = 0.35; g1 = 1.0f; - b0 = 0.78; b1 = 1.0f; - for(i = 0; i < 128*128; i++) { - float t = bwimage128[i] / 255.0f; - t256[3*i+0] = (unsigned char) (255.0f * (r0 + t * (r1-r0))); - t256[3*i+1] = (unsigned char) (255.0f * (g0 + t * (g1-g0))); - t256[3*i+2] = (unsigned char) (255.0f * (b0 + t * (b1-b0))); - } - glBindTexture(GL_TEXTURE_2D, 2); - if (!mipmap) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texmode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texmode); - if (mipmap) - gluBuild2DMipmaps(GL_TEXTURE_2D, /*0,*/ 3, 128, 128, /*0,*/ GL_RGB, GL_UNSIGNED_BYTE, t256); - else - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, 128, 128, 0, GL_RGB, GL_UNSIGNED_BYTE, t256); - - /* sky with fog */ - r0 = fog_params[0]; r1 = 1.0f; - g0 = fog_params[1]; g1 = 1.0f; - b0 = fog_params[2]; b1 = 1.0f; - for(i = 0; i < 128*128; i++) { - float t = bwimage128[i] / 255.0f; - t256[3*i+0] = (unsigned char) (255.0f * (r0 + t * (r1-r0))); - t256[3*i+1] = (unsigned char) (255.0f * (g0 + t * (g1-g0))); - t256[3*i+2] = (unsigned char) (255.0f * (b0 + t * (b1-b0))); - } - glBindTexture(GL_TEXTURE_2D, 3); - if (!mipmap) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texmode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texmode); - if (mipmap) - gluBuild2DMipmaps(GL_TEXTURE_2D, /*0,*/ 3, 128, 128, /*0,*/ GL_RGB, GL_UNSIGNED_BYTE, t256); - else - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, 128, 128, 0, GL_RGB, GL_UNSIGNED_BYTE, t256); - free(t256); - } - - free(bwimage256); - free(bwimage128); - - /* both textures use BLEND environment */ - if (rgbmode) { - if (threecomp) { - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - } - else { - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); - } - } else if (FOG_LEVELS > 1) { - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); - } else { - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - } - - { - GLfloat position[] = { LX, LY, LZ, 0., }; - GLfloat one[] = { 1.0, 1.0, 1.0, 1.0 }; - - if (rgbmode) - glLightfv(GL_LIGHT0, GL_AMBIENT, one); - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightfv(GL_LIGHT0, GL_DIFFUSE, one); - glLightfv(GL_LIGHT0, GL_SPECULAR, one); - } - - if (rgbmode) { - GLfloat ambient[] = { 0.3, 0.3, 0.1, 0.0 }; - GLfloat diffuse[] = { 0.7, 0.7, 0.1, 0.0 }; - GLfloat zero[] = { 0.0, 0.0, 0.0, 0.0 }; - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, zero); - } else { - glMaterialiv(GL_FRONT_AND_BACK, GL_COLOR_INDEXES, plane_colors); - } - - { - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 0); - glEnable(GL_LIGHT0); - } -} - -void lightpos(void) -{ - GLfloat position[] = { LX, LY, LZ, 0., }; - glLightfv(GL_LIGHT0, GL_POSITION, position); -} - -void texenv(int env) -{ - GLfloat colors[3][4] = { { 0., 0., 0., 0., }, - { .1, .1, .1, 0., }, /* terrain */ - { 1., 1., 1., 0., }, }; /* sky */ - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, colors[env]); -} - -/*-------------------------------- Utility ---------------------------------*/ - -void err_msg(int type, char* func, char* error) -{ - char msg[512]; - - if (type & ERR_WARNING) { - fprintf(stderr, "Warning: "); - sprintf(msg, "Warning: %s", error); - } - else if (type & ERR_FATAL) { - fprintf(stderr, "FATAL: "); - sprintf(msg, "FATAL: %s", error); - } - - fprintf(stderr, "%s: %s\n", func, error); - if (type & ERR_SYSERR) { - perror("perror() = "); - fprintf(stderr, "errno = %d\n", errno); - } - fflush(stderr); - - if (type & ERR_FATAL) { - exit(-1); - } -} - -void set_fog(int enable) -{ - fog = enable; - if (fog) { - glEnable(GL_FOG); - if (rgbmode) - glClearColor(fog_params[0], fog_params[1], fog_params[2], 1.0); - else { - glClearIndex(sky_base + FOG_LEVELS - 1); - } - } else { - glDisable(GL_FOG); - if (rgbmode) - glClearColor(0.23, 0.35, 0.78, 1.0); - else { - glClearIndex(sky_base); - } - } -} - -void set_dither(int enable) -{ - dither = enable; - if (dither) { - glEnable(GL_DITHER); - } else { - glDisable(GL_DITHER); - } -} - diff --git a/lib/glut-3.7.6/progs/demos/skyfly/skyfly.dsp b/lib/glut-3.7.6/progs/demos/skyfly/skyfly.dsp deleted file mode 100644 index 9e0e07b3f34a956f4fa982430ae793f49ad4d85e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/skyfly.dsp +++ /dev/null @@ -1,116 +0,0 @@ -# Microsoft Developer Studio Project File - Name="skyfly" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=skyfly - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "skyfly.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "skyfly.mak" CFG="skyfly - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "skyfly - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "skyfly - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "skyfly - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "skyfly - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "skyfly - Win32 Release" -# Name "skyfly - Win32 Debug" -# Begin Source File - -SOURCE=.\database.c -# End Source File -# Begin Source File - -SOURCE=.\fly.c -# End Source File -# Begin Source File - -SOURCE=.\gm_main.c -# End Source File -# Begin Source File - -SOURCE=.\image.c -# End Source File -# Begin Source File - -SOURCE=.\perfdraw.c -# End Source File -# Begin Source File - -SOURCE=.\random.c -# End Source File -# Begin Source File - -SOURCE=.\skyfly.c -# End Source File -# Begin Source File - -SOURCE=.\skyfly.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/skyfly/skyfly.h b/lib/glut-3.7.6/progs/demos/skyfly/skyfly.h deleted file mode 100644 index 9ccc41341a46721df4de9d70d1da76e1532bdde4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/skyfly.h +++ /dev/null @@ -1,206 +0,0 @@ -/* - * skyfly.h $Revision: 1.3 $ -*/ - -#ifdef _WIN32 -#pragma warning(disable : 4244) -#endif - -/* buttons */ -#define ESCKEY 0 -#define RKEY 1 -#define PERIODKEY 2 -#define SPACEKEY 3 - -#define DOWNARROWKEY 4 -#define UPARROWKEY 5 -#define LEFTARROWKEY 6 -#define RIGHTARROWKEY 7 - -#define PAGEDOWNKEY 8 -#define PAGEUPKEY 9 - -#define LEFTMOUSE 10 -#define MIDDLEMOUSE 11 -#define RIGHTMOUSE 12 -#define BUTCOUNT 13 - -/* valuators */ -#define MOUSEX 0 -#define MOUSEY 1 -#define VALCOUNT 2 - -#ifdef _WIN32 -#undef random -extern long random(void); -#else -/* random is defined in stdlib.h, return type varies depending on headers*/ -#endif - -#undef MIN -#undef MAX -#define MIN(a,b) (((a)<(b)) ? (a) : (b)) -#define MAX(a,b) (((a)>(b)) ? (a) : (b)) -#define RAD_TO_DEG (180/M_PI) -#define IRND(x) ((int)((float)(x) * ((float)random()/(float)0x7fffffff))) -#define M_PI 3.14159265358979323846 - -#define NUM_PLANES 20 -#define GRID_RANGE 200 /* 200 kilometers */ -#define FOV (M_PI / 4.) /* 45 degrees */ - -/* - * Light vector -*/ -#define LX 0.0 -#define LY 0.707 -#define LZ 0.707 - -#define FLOATS_PER_VERT_PAIR 16 - -#define NBUFFERS 2 - -#define SKY_CYCLOPS 0 -#define SKY_DUALCHANNEL 1 -#define SKY_SINGLECHANNEL 2 - -/* - * perfobj flags -*/ -#define PD_TEXTURE_BIND 0 -#define PD_DRAW_PAPER_PLANE 1 -#define PD_DRAW_TERRAIN_CELL 2 -#define PD_PAPER_PLANE_MODE 3 -#define PD_PAPER_PLANE_POS 4 -#define PD_VIEWER_POS 5 -#define PD_DRAW_CLOUDS 6 -#define PD_END 0x3fff - -#define PLANES_START 0 -#define PLANES_SECOND_PASS 1 -#define PLANES_END 2 - -/* - * Offsets to data in perfobj_vert_t -*/ -#define PD_V_POINT 0 -#define PD_V_CPACK 3 -#define PD_V_NORMAL 4 -#define PD_V_COLOR 8 -#define PD_V_TEX 12 -#define PD_V_SIZE 16 - -/* - * Padding ensures that vertex data remains quad-word aligned within struct -*/ -typedef struct perfobj_vert_t { - float vert[3]; - unsigned long vpad; - - float normal[3]; - unsigned long npad; - - float color[3]; - unsigned long cpad; - - float texture[2]; - unsigned long tpad[2]; -} perfobj_vert_t; - -/* - * A perfobj is a structure designed for fast rendering. Flags are separated - * from vertex data to improve cacheing behavior. Typically the flags are - * tokens which determine the drawing operation to perform and the vdata are - * perfobj_vert_t's or other floating point data. -*/ -typedef struct perfobj_t { - unsigned int *flags; - float *vdata; -} perfobj_t; - -extern void drawperfobj( perfobj_t *perfptr ); - -extern void putv3fdata( float *source, perfobj_vert_t *vertptr ); -extern void putn3fdata( float *source, perfobj_vert_t *vertptr ); -extern void putc3fdata( float *source, perfobj_vert_t *vertptr ); -extern void putt2fdata( float *source, perfobj_vert_t *vertptr ); - -/* - * This is the structure which contains the database. It is amalloc'ed - * in shared memory so that forked processes can access it. Notice how - * the flags and vertex data are separated to improve cacheing behavior. -*/ -typedef struct shared_data_struct { - /* objects */ - perfobj_t paper_plane_obj; - perfobj_t paper_plane_start_obj; - perfobj_t paper_plane_2ndpass_obj; - perfobj_t paper_plane_end_obj; - perfobj_t terrain_texture_obj; - perfobj_t *terrain_cells; - perfobj_t clouds_texture_obj; - perfobj_t clouds_obj; - - /* flags */ - unsigned int paper_plane_flags[2]; - unsigned int paper_plane_start_flags[3]; - unsigned int paper_plane_2ndpass_flags[3]; - unsigned int paper_plane_end_flags[3]; - unsigned int terrain_texture_flags[3]; - unsigned int **terrain_cell_flags; - unsigned int clouds_texture_flags[3]; - unsigned int clouds_flags[2]; - - /* data */ - perfobj_vert_t paper_plane_verts[22]; - perfobj_vert_t **terrain_cell_verts; - perfobj_vert_t clouds_verts[4]; - -} shared_data; - -/* - * See skyfly.c for comments -*/ -extern shared_data *SharedData; -extern float ScaleZ; -extern int CellDim; -extern int NumCells; -extern int GridDim; -extern float FarCull; -extern float XYScale, CellSize; -extern int Wxsize, Wysize; - -extern int Init_pos; -extern float Init_x, Init_y, Init_z, Init_azimuth; - -extern float far_cull; -extern int rgbmode; -extern float fog_params[4]; -extern int dither, fog; -extern int mipmap; - -/* Color index ramp info */ -extern int sky_base, terr_base; -extern int plane_colors[3]; - -#define SKY_BITS 4 -#define SKY_COLORS (1 << SKY_BITS) - -#define TERR_BITS 4 -#define TERR_COLORS (1 << TERR_BITS) - -#define PLANE_BITS 4 -#define PLANE_COLORS (1 << PLANE_BITS) - -#define FOG_LEVELS 6 - -#define SKY_HIGH 5.0f - -extern void set_fog(int enable); -extern void set_dither(int enable); - -#define cosf(a) cos((float)a) -#define sinf(a) sin((float)a) -#define sqrtf(a) sqrt((float)a) -#define expf(a) exp((float)a) - diff --git a/lib/glut-3.7.6/progs/demos/skyfly/terrain.bw b/lib/glut-3.7.6/progs/demos/skyfly/terrain.bw deleted file mode 100644 index 64de86f6603b6e3003666860080c03a3c86114dc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/skyfly/terrain.bw +++ /dev/null @@ -1,42 +0,0 @@ -FFt{i²´·žéæÌËȵ°lôŸ}$#t¼èŠÇÂq]ñgp½;1V{úC¸¢¡·> 9.69?_dIR4.177/75+400/*/&*($51/-Pßô\ð#&((.8[Q)'13G\HCAD;K[O#g÷Ö‚æéZ¹„ùr{v]Fº¶_*-+2=B5JYY`AAKF[ip{xÜë@CTUv°éfxÈú@q{äjôž½Ûìoyqså|ìüéçànS:4A6:Ÿ«ŽžÿœœÞ¨ÞŸ±ôºú{þºS 5LÞìl(^èâ{tjâr+.&ùêmŸwbóüèåÝÐø÷ýÊǹüa8xP5~XêñvéëÁ­†°àÝýÍ ÷F_]o‰†Þ¾øe¹Ãþ蛾èqxYW3é‡Æ…‹â+6>3(HZX<=JWQN:)<9+7512+.)((%%&/3%.+,2+%!'28, Pü}e5%-)'.49K\NOBG<6HM-1¹Žž|u›tŸäãµþåhFF=61>:]oLâÜ`;EIJPmî°²¼¶j½ÝsóýÜ[ÿ‹¯êtâxbã²|iìþ|oZMKkfO_aGnxb.çùÈ۴öü»›ß÷ÿŸÜ²îê­ï[BF_P#ZïXX{CFD$74f¥Àbl´Ýwï²u`mv®·åÛDz¿Â¹²Zxeâzy÷’vP÷¼ç¯ùÿee©tI|ãÒŠù®Ïy<¹íPkdigvàì½L¶Žyà¡Ô^0_scUoü·t6!372=K;'&0,(?)$-+-66/7ŸœAð+.'+/CVja7;335>0;..+-/,-344- --ܦR!(!%+,7Ec^=C;>V[I1Súœyt¹½€Âl!4XXB68;9BOdxŸ{YYVJhçéêvçûú­}âøv±”©]ifŸåoèh}ÿä}}óž§îO>61%:-N\H7>îæ­Û Ïæì۞µø­ûœÝûÝôñd:Nž¼±;JßÞãK446Npxº´²jÛÝ]&^Èå[Päñ¦Ð·««pzæñlnãuwµøåžüôø÷ܹt_åœÔó q›i±úóÑÊÌ€°°}åpâïšÌ†Ïûë[1uÞg`àÁÙCGzcEmp#!+äÜQ*&õ%*'-45?LUC;JQR8@fd¹Ç»ñbâÖÝ/8E19<>BINmvVhèåhTRcëý¦¼›¼xS»ífÅ…ëëma­Æàpsom±Ÿãês{¦¼ÈÜqFNVYQT^3s·µê¿¬¿þëôø´ºôüäûžœœœtwhäæ›BrŸs9+30?bsë®Ýq`óåKð4nq^u½ÛºžÖæbŸ§¾Èåe½þÞ†äsñ÷ËÕê¼ùxb’¡ºÊ¼çÝ_¦ÕÉ ËÏåó®yrµÓÿƒª²þvåÿëž­ëTêâìSFéíK;A=G3JE;G=;?32',400+3ObmCSŸäuI%*$!3CKOLKD?>ML6Hꎑ«êN|©tGUC:B32>;O`àu[~ïzfcf~¦¸ž›©ÜµßGj÷w»ŒôèåkžÇ²žãWzþêêàm﮹¼ž}XS__NZçu|®¿­«Ñ¨µ¶¼¼©©øÿ½²µ¼ßêQvp=íÛ2 -]ôv2)01:G~íìçàRHtQð$@à|S{¹ºÈíä®îóêè꧟êëœÕ€¨œçøÛü¦œçq÷«Ð‚¼¬Þ«ÎÄ£‘əчجÁüoîùÝé®»Ž¿ûô_äpg?izh^pU>J0+<.26A70MQÜéýæF*YAõNT õ$+9E<7>=LkTa°¾åJíøf_jPIZcþ¹mQNžìèãîyv|yèÛ{lãóty¹ïúPqúퟲžúݸÈꈻntîž¼çYìÁ›û›ïûêtL<]C*óÃÀÕÉÙÅÉϸµ¦©´µ°_98©Y EãyhV930`±î_2[udlM"".1 9kmRdº‹ˆïÜy®íëýÖØΉljÎÇÍÐÊ¡•Ì ¤•Î¢ˆ‹”öÚ——––ö£‰üÈ°xiwô‡¨°¼Ý©ñk_éoGacZlwú©ŸøªªêH37DGRfeJE>4WGVM_lë­X0`^3!Lûz3 #::19C<[_@xôtyÇë9MRWhY\îînã{þôÝêèvgyâï»åSäë}jé¾úøçkxŸ›¬¯ïÞ¹ûدâvâèÛ·ýú}°žÞÜô||±l-&"ZèôÕ… ‚Ճ׾¸æ´´æ°åg#Z)J°çàsE42FXhw[7R`hN!E415( xr\©•”Ýû¾Ç¥Ç¡š‰Œš¬’‰‰™ÍɌΠ‹¤¢ö¤ÌŒ””“ö”ö–Ä£•tåèVTä°Ûº´žœµú²|?aâsV3f´„¬¿§µýi<OûœcBsàâ}nüés8(+4[ºßÅ‘òÎÐΗ¡ŒÎ¢Š‚‹†¥ ÙΕ׈¢•¢Ú“£ÎÊš„‚öòÚÚ”Ú“–ö‚zéÞhnÜèsäzé°åþí™imzEEmúÒõ´»µµc@k`]Xk{y{àóXWNQI@C>897-PèÞ¹Û¶¸­Að$%8QK6Hlªþ’ÿº½å}órUloç²¹ÛߺÈêŸquwluñ÷Ne{å{¿´|éµæ÷fC}ÁÏy-ïšÕþcf{¹ŽÜúÛ›Û{àêpä­ñé. -871ݾ¯­«‡…ÂÍÓÏÍÀ‹µõ1UkkíªLY\:DŸüeoT½wåŸk@46MjÞëìí÷waiznzú­œ­›Ÿ÷ûg^âìw~¬pH\{{º€®°²ý¿ôj?u›÷EêØìnA`쪹uôùøìŸíàå÷îÛ±c.3374)KŹ…ƒÌ¥×éÀÏY FI~¢‘o½ùÿbå®Üµäsk°ø½rCíÂÞmB==0mñ…ºžÌŠ¬¼ÔŸ°¯¬!;G<<4{ëøâ$5&"œ’¿«Ëµ÷§™¿ºÝø•}"":L2;Rs[|²rMUID~©ê2N>:;#%18!FFGx}*½¡Š•Œ¡ØØʃ¤‹…™ÔËჄÔÖ‘…¢ÓŽÍŃ£öÚ—…cÇ“–£ŒÖñôÏ•á½£¡ÇÑÏus¨Ãìž¿ñ»›ÍÀ|Rrçµþ|xz­¸ëEEIbkbWHL\ptwwóxL64:HDP<@3+53/*/56?72;M÷ãkbqþâmã|isÿêßwé«ÝúÀå@Lxï¦Ëãú÷úÒµ}rüýºkg{½Uî÷ÕíUzÛæú{/HÈþã{~óähTl\>F2?.U`Jêè-hłׇ•á„™™ËΈŠ‡ÔÔ™ËØÔ‘ ƒÇ€Ð€×ØÓ’ÆÎòÚÜŠ¡£òò—£ÄÄ–Æ¿ò””ÏñÁíÍ·uR_ZTWQkŸ§ã`}žû»Ñ’ªm>Wcf\WNx½âu\UYV\oyxv[>;KH3L_@7@:2093;0;?>CWjcTwqVUjsFrÈç|쪾¯­/GRZWmgrjpiltwWf¼ãåµ×žé­4[W›orâêsëìÿº­Üy[éüçœ{Èírxû¾®÷ºv(kýÙýÞϯÞêqt{X[o}qVgHQ<(#=, 鮦ŒÏœý¦»žêþ°|.DkOx²}MW|q~=9RdsYTuç~wX=R]MDYfjb^W@;K@HKYarqjXuì²þ~S÷œfz§ê~9ecD;\jbXbã칶±â{WÜz´Þó%rÆÙÍ˵è:{ulÜܲøÈÝþuHpïžwktèéêz?).zªª‚«ñÜêuã¹Þ¸¼âzJm붾aVäìL4_óT9MVSR^}Q66AfãhjóH1í¤‘Ìƒá ØÌÕÖÔá Ò™…á•ÚáÑÆÏÓÐÒÆÆÖÕÉáÌýì®ØÒéãúàäœË•ŒÖ­Ø‘öڴ”–£¢ånëcAuà@úü=TgTfWo÷viÈ®sv]JÜ¢Úí;?IHNN`lZJT1y^GjcjYB]fVSENBMS]ZKYJ>1?Mn¹ÜäqÛŸ­¬Ý°~ûù{wâfQURVENP^yë½nàdpu{­º°l`®Ðüþûà{|äìúªÜºªý­t22M|º²miàúÜwJ1/&>ݎ̵æßäzþ½žùïr|y½s'IhZEEFNY]RTX_N\[IMQARbkâî_;šÙ ‡ …Š†ÖÊÓÖšÖÌÕ‘“…šÑÊÕÓÖ×ÉÑÑÆÕ·îÁ²8V´´àÛûï›È×Ìþwü½vÈ¢ô™„×–€StìüKT/]vêoUMUO`ëvRî÷yqxTS»‹”‘rDYBûî²êÿéó©o412BQCOIãÈí^RKIK\þi}Ýê@5AEhhlóZB1-5BUSNZLLdfeœ¶±t++')8*756莾÷±­Ûïyänzç½vUmpWurX[aWN6hgZ«ÊS ÿ­ÃÑñ±ú¹¶Üt›Ç®îí²à(1>éwAé{ku°ž~2",Kï¼…™¿±fãºîÿür»ì¦¸êe|â[je2BLUNMiefXGBKKdh`DS;|ôÑ‘ŒÌË™Íə᠅ჇÓЙÒÓÉÉÕÖ’ÓØÐÖÀÀÀ¶¬ø©²±©¶®¦Ž ÕÝãÞÜÝí|zX.BLD5DTR²ñÉ°Rhtà½óëåíåä^àóVQd==ÿéZêôäM?⾈ΌÓþ_SJ[[XàÛ~``9C?,6vô®®ëXSacsc`êß¼©÷ü垧|Vmâ¹çéúaKu^]_l^kâtìÀ²íÛ«ÇÏÑÀ´ùž½lÿÅæ¼ï{k][àžç°Ürâ|m|ïG;?=/9kôÁ¨’¶å^aZ{ŸíßÛzâ¦ôt/@]ZNUciìçQ>QgOBCI@G=HL}ÝÍŠŒŠ„ŠŠˆ×Ï™ÌÔÑÉÉÉÉÕÍ¥ÇËᆥәǀЂ™Ø‰¢¢¶ìû ¶Üä¶L /úÒÙ¼ügI_W`Z,4/4èüÜ‘”Âc2ûùuFâÈôFCE7GiRK½ù¯Šb­¶PâýÅùãïÞÞéç춛Zhÿçph[MTYE6i¹Øàí¾éM2HNSIWvüñ°ëçÞ€ñ{RVwàtéâ@[]\`_RjêþŸ´µ§ý«ÖÔÓÅÍùºà`îšîºë~`^N^ä±ëqwŸ¼ªíxNM89N6`¶ƒ Õ¿­Bxvyܽ²äxï¹¹ÞXUOBNT]]lkIY`XNM@=CG>N~›ªùMTzT%>2.K²¾Ý¯‘âo>q;{gClrîSqP3væø­ï½¬…¹í©×¡Ñøÿ±¯ôÝŸÞ]GLFONAESXi]CïŨdfù‡·ó7C.@ME:Nµý°íü«½u\oQjüz>Y`aX\ü¼¹²÷ÇÐÅÉšÂûüqv§ÂóÞôÝlU]cóLDlyݦ¹lâîy^;OH"u·ƒÙÁÜlÜ~cyàÛûçïêÿŸûúkOFWXZheYN[bPQN@DOOK[;Eë´Éጇ †Ì  ÌØØšÕÒÖÓÓ†ÏÏ‚…ÌÌ‘„ÊÙ᪾ΊÜÿãx²êÝê"Rmüº½íTüµàï™®%@[*08>O%'÷ééŠÀêNTcîy>@H{|=0CãîO8àBæêúÓŸ}é¼Ê¯ÛåÞ‹ÃÝì^I4\çnXWC?ApìR[÷Ãÿdœ†Àºþa[GIPJ0éžÜêŸÝý»þêtkwÝleSjiXûù›¶¾ýÁŽÂ´¶¿»Ýžsi›ë󱬺âQ`qìþuRoâãçt;_±s]adT8føôàúª½s\pïøûþÜüÿ±Ýtlm`]ffpë÷n>=AXœÂx±‡þ²»p+ $$*$!:G9(=°›T2?KE5OíuŸôÞªç-j>7);'&A:S½ä±ÖÕ¼êxO\Xjïê½}ÜÁ§íNZVçv~úvKô¾å{éóézVCORSMdsâ±È|h¹Ò]DW²·ÿeí·Àñ©¦±´Àҫ޻ݸ°çîÞ½fþœ±­}qYgçlóÿã±ûuv}qíëm>zç½èh;KVKCH;GDGfoZ2+09I\k^}ri~óåé´ÆëïÑ\^H\y°©xkß›÷ý°÷ªéogibii_Yijv½ê…üdKà›­§¼¯¦¹¶·ÖËÁÁ­ëÿµ­þêûãóiÝçG]bfàoIQièzvlfíîv{xUUB9AOü¶Þû}hn|_Fjäèûú{m`Qaj`Mlóãäãunqjooqéÿ}uaTVÝÌÆ™¡×ÅÕÕÔÊÊÇÓÊÑŠ“áØ¡„ÌÙƒ‡ÕìУÚÊÃÙ»ñ}rçü{rtZ²ïqüæü(SzU}i=E/)-3*/2.1aôp'7QH4J6)3(&'7<6CTCFJ@KF>KUzhBHHJxþpYggíåªâyïåþÿbYé­¼íyŸ»é²€ôŸÛÞmèêþÿwnsV_`lî¼®ÞèeÆÒ¹Þ®Àƺý‡ÐÝëñ†¥ô®¸æ»çÛàmz|WkÛþü|NGovJ22.2GD@JI49UHCXIP[UFFJC?R]rìè~àfëÿäüú~jyâßl`ax}_Ÿùêk_ç¦ëè}­¾®~cóìúgbrytrsŸ©j}ûÁΚ×Ò®¼ø§¦äªßœ†Þlà›æ®ïôùª|àìKTþûóvþàTrlVxqiå²±ÝîTB]]WR}­’Ðù¸ý›êv[{²Ý°~LKaYií{ãüïŸþóhcM[v_dWVnàÞÁšØÑš ÌÏ̙ӈ†¤¢ŒÙ¡¤¤ö…†Ú¡‹‰‹§ôgpø¾ÝÒ‘®½ëhub_WOVaqsoX7%;KaI>*03AD8:C7=T?9EVFAQZF?JG?F@KK@?SUZs¹ôäéé^tnoyrob_i~›îeXuûã⛲ú÷©ú\WhèëogzwzhvÝÝïüïؚǀ¸±ï©÷ëÿ¹Èî°Ê´âî­¨ú¹¶Ûé~g;:Ov½wzcClì~oV~°Üº±ï}]ihI`ë€À¹ye½ìè~]YmêyÜÞèêêäâyrvREve}^hqåôÏ¥†Ö€¥ËÒəؤΓŒ‘‘‹ö‹ö‹Ù¤Ù Ñ†Þ»ÙƒšØ†¤«²²éÿnûfdUQZWóÛìÜ·%&ID?RYM653504;@92614OWCH3HfS9?D@?B@cúbç»ñ€ìâžâÿþmþ±P\½èg^hqÛ›{ioy½ßºœí~±îßþQ2Tn_`efjsÞô²ªÿåùÓÉÒÒÕÖÑÁ„ÃøÒ¹ÿü}{Ÿ±÷ß}pójgw@Clèëäí}ERóç~Vwüüäîîÿ÷ãaeää¿Ç¸ø¯ªäVUNXþ›jku\u÷åqwëçifäãëiâSTâ÷ß™Í×áÖÍχÖК„¢““‰†¢”Œ“ˆÍšÂ¨©‰šÜ¦ŠÎˆÓÕ˼{éà|{fHfkQN[róÿø:?@98+28.3;//40AB=:E=54,258@@<9HNXD?RBM@|­ÿœÀñÿïå²²yܹvôãëéu½sxtàhlÿë`fséúçìèìÛ¼›íßûyoèë|yg_WKFd­øµ¦ßØ…Ò„ˆØÌ„¾›œ±¶Üú÷Þ¯äîízpvñ€ÛqIgnzúœœûvú¼}q}Z{ååvuèÝÝçe]Zlâvïô×Ô±óëdJK>TTyt{pvYl~o_p`Gq`NRwpr~ÞЃáÊË Ñ™™„“•¢Š‘‚¡ÎÎ΋ÌÐýʵµª¯§Àú¶¤ŒØ¡Ö›¼ólŸé{\`ãdEACeXZCI=6EEH;6F1%2@LJEOUOIGDY\|Û®ªÿ»ÏýãDbþâïퟟÞí½Ý{eç|WVmkvnp|ÿ±þäî÷ô÷û®­Ý}{~zsrp^]Mhþݛѩ»ÞñÀñ€¶¦øœÈ›÷°ÏÈóäž»xXþᬹêYopmúýÓÖ›xîâóz{äàf|ïüÛûfJVQN34Tå®Ô»lm|k}wàv{óäëÜêzm_]RciSè{h]zt{z÷ÍáÊÉÕš¥ÕÔ•¢¢“‚„‡¡ˆÎ‡ÃÁÆ·¥×¤ƒæ˵½Æ–ö––ý÷êlÜ›žŸâsJ/3P>wûîN\BPTET`E?=AH]hK&FêÅ’çyuÛÛú¶·¦ž°åãÿúètsïÿêàþy^onû®¨ÒÆÑÕÒÊÑÊÐÙˆ¤”‹‡‹š®æŸÿ¹ô´Ã™÷Õ…™’ÖÂÖö—•¤ ƒûwç}ž­x½þQSGb±îcFe`[N>?B=DSfPXCIho}zdGGUL\þ´žfeWBccKé©uHå²êjH?}wbú°mstþ{âÜÜÛ}xhy|ãìêãë±²Ûû÷›ýÝܧ¼­ß½ã}g^Vv²Ýì¸ÖÌšÇЃ¡‘ÇÝí}ëjïßèy»Ïíwëâçüü©çêÛâ@Lþªý¶ª¦é~àà}Ûúêëø¼oBI8Tíþ^@IQHulM_{tXzº§²û²²¹÷åíéyuåžþëê|íë›ÀÆÇŽ¥ÉÕÓÅÖ­üîóßÈ­âó²Þýýñ»ùÈÁûvlgâéruYã4r¹|\LHTG:@9@J?:2GG5=cp?$9LYó¹ôël1wÿœýóŸ¸ëSVSKt±V9<8RHDPAY_SREC@JXQWUjklfpåmij[er]PY_P6;3S䟨ů¹÷ïã~ãoú²çûdMN]IÝucœ·Öˠμ™…´Ûüþôûzãçóyä°ëïë^IY_câÛ›ªÂùÃ’™´xYãÛà÷É×›ëJ=VUQNM^XNUeå{½üô­Ü±íëìçìþééíàëúâ÷§ÂÇ¥ÆÇ€ÉÏ«žµ¶«ªµëíÈ«æñ´¼ýæ·©¯Ð¾¦óTiçÝå÷v?NTT69C77D:;=JRQBY@Qç}^kèäcP[E2F?x’ülåÛÝîÛó/Hq~<,9769:JA9BBEPKEDRSZKD@:DJRRNZq[ben]__Yh`BEjmeR9*,PQåžôܱްþ°üôÜqík`LHBnîFÿø­ßÿýòÐæ›®µÈ¹»æµ°êàuéêåxçî^GKUM]û·§Þ¶¯¿ˆÖú~ÿÝß›¶žk}JCT`SPRXTTXhþžûôŸ›úÝÛéåêêîïüéç¹ÿó¹ÝóìýÒÑÓÒ€ŠÙÔ¸Ž¦¹ž©ø°ŸøŽ¸¼¼ªªù¯œÇô´úoä¹ïnrf==DCCB>?F;;Z\RYAG]mrå¼¾Åvhd>IŽ•î>O÷©Ûê}_YOE3E4=:5AE=?;5OTA>MRSfSAMMFA>@=?2CkZÿû™‚¼ÛÝ{[YMºÎ‰Ð¸`-'í¿|4ckGHBCF=G98?GEB?;@DKC>ENH]UEA@LZb`U^hiyéåhRBENjh^{åîíjëxgÝ®ÜÜßþûúŸúâžzkbvTA;`åW9KqÞÔѧ¾ù¦¼©©ìÿÝÿä~çäãíþóséî[FQPTQkçvwÛßätü߱ſx­®>U´¿±JGRZRMU[[Npìß»ôôß›²ÛÜ÷þäxäãéèéåé±¹±Þ¯ÉÒÕ’ŽÇÃÍ€ý·§µúâàüœñ´Ð‘ÒÆùµ®|jJSúæüOyLUDVYAJHFLVOB28KRfAà©rÉÍ·÷tsäxRfvíšôÓûmMIüÆ÷D7Y:C@DF;QH<=8AD:=E@EEK<;MRYWGDNURZWebk~ycMDFGD<526Góú~úÖ¾¨y}åvjjR]ST{‡Áúx¶…‘ÐÉ»`0A=GDQLQ8;6;F:>HCAHBCAMOWcLMTPKQX`hkL9DmèÝ~ijxâóóçädHnéëÜ›ôÝ÷÷ßÜûãú©xkïé`X^T<:Läq{ý²Þô­«­÷Þ»Þ}uó÷Ÿüêê{oäÿZ=HGIDJr~\bRD[jâvU0L~gâÿsq½êINKJTRVWRU✻œºž¹Üúüïÿëí÷þçãâþëîÂÑùœ²º’¶ÞÞÝ寯›¦ñÜóVo¹±55;?FLP<+?NZëK>:8>C=D_b;wµ¦²pg²ìÝÜpHúßíåpgnan†‚²}}8r¾ØÕÆ„h8VA6;TEG6579?=GDHMhgZZs_@YósywG9Gv±RHhMNFIUa`VWlãè¹ô°Ü¹ß¹Ÿíîï齟²êêü½ççí©©œÈôãœÝÛüª¶ìþú趾êé²eAbn[qß­ù¾zm`PWAD/A~ïÝÿ{oë}®Œšx=BLkyß²ûŸudWPWeyVGIKJGE?;7@I@DHL?EMQOPQOJMMXXVmb}ïÿâfE;>AA;ECUPE;]óœ®ÈžíìÞô²Û±½í›®îŸþÞœþh16<=^X›¦±íåë챩­ÜÞûîúŸüüåü¼žlBHLodLQNWNF:t·ýpH_{TSSU^fepîo1w´±Ya[[eaPC6BVDFKNNSJM^`RPRQ]TWYjuSgcaOD9152@84[IQ`vä½Ûñ·žŸß­Ûܺ²›»¦îå­÷ÿ²|ODC{[/íµ­›Ûêü›ÜêÿßµÜã~û¹Üýœd8GE^þçmm\^fëèóyh~éäïrí_WdaQEKahg]ddâûíïûèíéúû½çíéåíŸywã|âëÝž©Þ½°»¦æ­­žôíyü¯€à}雸ŒÇ±?9BJNKGIJJ>FSDYUPQTRNKGOI9Hn¹²ÜNWTU`[Wl{EaÛ­»ìQeÀ·ÍôàQEUG?CMF9-D|sp[R[U\bJDMFDIIMUGRfh[UVSUV]VWmv[F><>77EHAOhàyvéì½åé­µßøÛ²²­©ù­úúêºæ©nAlu=è«´œ©ºßô®¦œô­ºâó}ûôÞÜí`_z]eéu{u[I_àãô±h}ª_YXZTTWLP\e`GNâ±éëéíêîàâïï÷ïîìçàçâwêãì÷÷îô¦ñ¨Ò’øúí±ütë»ÞíßÑÐôá¡­à\EN[WCZóódNZckWWls[gh][XnµÎ°­Xyuz|fiTEPZú´°bUü°‡Àéh988GKIGDDE?A9@g`SWR\kirWHIIGLMQKO=GUNVTZTSQWXR@919LOb°œvrëíåbwïÿè즺ú¹œ¹±Þ¦±ÜÜíì°°qZ]m>.ÈÉ®›°Ý»›°œŽñ½nk{°ô»­åQcàeNäçàé½VJ_L[ûûho±âvïàY[^aYXitVIgŸüççy||vläíûß÷ïïàóãç½èúèóçú¹ŽË¯«Žæ¶ôãkQâÿìëþ¯‚„šØÒÍĘ̈h*½Ü²²êäۻȭÛÀ¨ê}sàüß®®éDRXG\ó_nz÷}nbo~a|ºŸ~~ãêVLYWTR\us{ú²ï}üextvâìîäï¹÷dtçèv~éäâì°ÿÛű{{åxó`LQìùÓ¡ˆ‚Èb}ûÁüad}ndbESdXuÿëät{åñŸrrfbea_YbésmêlE\VL9ì¿ûúÈ´€¶¦èû^URQKFBFSPLODJFLNT{xXQ\^mpe`KRVRIPMXVNX^VZQYejlû°E;A;::KlUzàäiozfwª÷þÞ´Ž´ž›þ~wznjþ·¦í½±úXE;휹ŸêéééÝ›°É×ÿlkäïúº¼ó?QMRqXYohty}xcqà|óûÞxâkU_RU]gu}ûßúéä›°hadjããç½sróãhhpoyêâãâë}âì®{ux÷°Üºãxxú¦è}Üübuz>î͵ÿnV]YYp|{iãìlp[bqìãmk_\\bmSóÞìj_cZZKC5uÝßz\®žëà¹hR[SDGDUf?HPMC;ACDOb^Zj^fvygz|mTLIFVUWe^TT]\lA71.1eà½ëó|{è¹›þü›Ðìøºéngw~ó|ß¾ñtéñ~DQO÷»ùÈ©žœ®Þ©²Ý²üÝÞ÷ßì8:C3DzåN}jWbqȼۜéMCmçQfsSJïÁ¬¹ø¬´»È±ï²évosàã}sg^iqhZUW^jvíàjzüÜÿ}|èrÿÜꮧxì}yãgI;CDTzyàkûûÜäQgss}zz}v{]do^kqóxhukWjc^_Ts]jeLVuT.;E=HMOSMILRWVTXORJFIEKJWQB:HG:CRSVTW`{ŸsãïÿuUPXadXcf`\k`Zhls\N`P,)EXB9Uf|çèäãþ±›®›†Ð’ùø»žpvâ}½ååûÜKwýþJELþüœ¨µ¬¬ží·’Þc{äàó[5FHKEU~ëeiffOgÝñÛþê^}qVR\\n¬Â¿Àè⦪Èܽ²]aäuzäynme_XW[RRXjóé|uzãxåït]i¹À±vêca^tc^sxwsâ²à›{ìzà±¹}z¸ÿxo}§ŽÈì|ämjea}|S]qpic\ì®ü]D@@:BHODIONOO[IQU]WPLFVXAFLM\RB:IDDPUOO`]Uo½t{sp}l]\URZahacadknuzjhéü`:?6JNYjuçëìïè÷¯À¯Ž¾Ö·¿¾Ápb||üÿzí|FúÛCHN^orî©îå¯È¯’¶°qzsaltK8G:EThãìwZDICLàŸ±äèíP]ZMVa÷¦ª»üt{yep|¶|HmoqqugfeSQUZSU[bàíïre{uŸ~uûÝÀÜVZcN{Ûê~û±±¦øîã÷rjdé´ýµÑŽè{ܱ©ø¹žëyvkYOMYlutslVZµÂr6MTHGGKKMAHYPSPTWRXRNNOMBKOK[Y[H=HLHGQY_`^WZ_^g]__owi_^iZnbrOLON_Q@e~}yewh^g{|à½êþÿŸ¹Í€·¥ÅÁ¾Ã’èefå÷íxfsåQSêcESUic`°}úþ¿ØÍ´²é{en|àS8LCGJILNSMKQQXV[VKLADDJPQSa_R?HIBFEMGZ_PKL_nYXUgvmlzsivszU@DEE=?;=Pbdzbboêóu}ã½²²Ÿ«ŽÂÉ·ØÇ’¯ýçfâè~{gZäãERSIK^n_R妩œ¸ŽùŽ’À¦þ{jpmçéR8JK;]fåçé\c½´ÆÀ¬¯¸¨¯Ûóoqsjwþn5&JNajwhswnS_`KZ|wSYUZtkghdsëž©ßߎ¼~Qwvg_nxãmCERXU_YZh\]YneI[±ÂþxXs°þÝÅÁ©ÁÂæ›ß¼ßåñüûâêëç½çú®¨©ÛßÎ̾žëÈýÝßÈ©ëßíª}~§ROSUHN[MQKQTWHFN\WTÜïDOI=MMDQLNQLVMHKLHS_VXfab`\_`_kuà|wó½ìïútqãûþäçä{ìí}y|åèìçݯ®¯€€¯¬¹ztìÿçpZldXrëh[Giµ…šªâdo²Òɒ;›âp}rcsí°²ã^G66ICByä^bloj][NZ_Zlszm_黼߰ü±«ÇîÜȺ¹»©ñ­ãQZ_^h[qm]mUg·‹Ç¸¦ïu}}þÝôÞìÿçã²þÞºïï¹Ûܲüäã}zj[\9JI=~µªäzûî{þèsÜxFrR@NXRUODEMQSPCIWPFEIMKEGKTVO°üDQ>:IMOPNNWQLJNUPOPj`RZc_fjhi[Xn|u{ókZWxþïuûÞŸ|xàãþÿâzäå}èyåûµ¶¯¨¬µ›¹Ÿ}q²æÿHkbjèìcUGQÛÑÖ¼²jxïÔ…ØÛpbt½wkaiíâAE@JM?6Säu\urkrr]|ä|Qoyîê}ÛȦŸÿþÛ§ª®Þú¶Èú±œß²Ý­àZ\]^]waOårWý×y^{vç}oYlóëêé½½½î±é¹ìîíÞœþ¦÷ägT[3%4*-#,AD'$2,3Ki°ãoW^OBPQJTQGLNVVCEO[E:NPJHFILTSs}GYCCEGNUUQRRGR^VPRWeaY\c_^ongfdsyxó|_ZRâ²þ½ûßþwiäâ½ëãó½å~|x|ãê¦ùª¼ª¶¦ºùæÝàîþvSbmhî›xD9@Ÿ¶»Ümåߨý¯¿ºUdéåiL=UYVTNWJ?RaVS^r|z~àtŸ©÷anå}}û©žžÿú©æíûêâܺÿ½êééúß°pZYMmè`^ëyHú¸~Vpxçàgil^ãüþþè½î°©¼œ¹ÜÿªßÜÜܪû`}nPMNBW=5;<:DܪÜîàgfyû©ëþüéípTv}[KE9GYYSQJ@dkTMeèìþîããüžëkhå{eí›ë{û¼ù÷Þëì›ïzããëÛûì°ãY^küíÿøç=R}±åilä{hjlSèÛìܹú÷¼¿¹Ü»´êbg|ìÝ­²›­þrSYog½ßîru]A;6Tûëq^RP@HRCN_QNJNUBJFACNSTIBKDGTagWVW^P;?EMMOVQOSWWUZX[ZSanmmroyklwwâ{|wqduèuiêé~âvle_gltnr}y|ç¦ñ®­±íûß¾¯©´«ÞLgdç­žVJ1]ýÈúþÿqVuoíëuïåäóTR^UKLNNOTYLVBE]\T赸µ­ÿ›¶ýßÿs_pã°œï|ãå·É±´Üúßìàçç~ãêóïíbåø„…þVefjn|yâvjgegÛñºô°›ì¹±²ÝûèÝñüóï÷ªøûvë°ÜÿzåþÞôÜîîûO9:4ã›|]WRDT[OPYPKfKLCNFBBAQQKMDLKMNN\U^Y\HFCIUJUWJVPU]_`^bdmzwuäy}xu}}â{~âêíólewwoã~wmlgefhvzä½åë~œ·Í§ª¸µÈñæÞê›Û~UfYëÜœaC2s®»´ùíó|óÿ÷ŸúÿçêäaKWaPQW^ZTV]SMMTVdãã¹´´¼Èª¸Þúäm[íûàû½r²ôí©›úûtvqsrþ÷ìÈswýÆÆÃûwszpttârqhkdk^Y±¦ºu±¹èm÷çób뛟¹°ß§­xpftŸô›©ž±êÿú];7/ã¹fb\YHUbTNUYJOONJBMLJPQUYNKPUPMNZ`PSZYTUSSPS]UPd^\]b]hsóufk{|à~}âä½ëåéì²íb`]bwyslfb\gw|íû÷ÿ~仨ùœ¦ñ·À¹Þ¼®®yZH}Þ»}C0Rîíâ²ñª°{±±²è{ìãäíhSb`V]d\UvkPMN9Wî㞦¹ÈÜô©Þ¹÷ãq\_x}få¹²Ÿàâàjâçx{óç~âýù§Ã¸~ë~óâtj|ç{uxÝ{hk^SDO÷ªyPv÷óC\øô`g°ÿï²ô»ûéyazèøïž´Ü­œŸyD861\wi\R[UVX_VV]oïh46=_f\OP`kfWOMPSTW]IY\OIEMOQV`[NPc]mZZdowttsxzu~½xãâàéíèŸÜxSXm~wri\V]kad}êêäl嶛ÞÛ¼´´°ŸÜ¹®«§½nXîÈâA$R¶žeqºÃªøÜç릲éyãçàcPWV_VPimTX@:ú殲۹¹¶ñ±©»»ÞëÝçgWgóbUpâí»þì}}íçäêêx~óžÐÀèi{zr~ó~óº´î²¼ý¦žïçrTçªþXK:fèßìããxäî~ž®J¸°Ew§·vD@VpqjXMNOKGß²wpbs¶È²µªœ¥…ÊÂÞ^º¶sè²plóã}{tßÝæ±Y~Ýàlã~uä½ã{khÿwmïîxóâz~xvóàååâkó~ngfoyxrgbR[dslmiãÝîfhz`r®¼ÈœôªÈ©­üèÿÿÛuóèÿÝb+eÜsUqz›®ìwi`j½^tú÷~kçãzoo½ôúånüx}ºÞ÷ôÈ»°îŸ­Û²û¹ŒÃì|keX]STXbh^hëìåûþúë÷ûåãï~~íèú²èÞ¥¶¼ù´ý¾©Ýüœ»åzXTI3A?BZܸ›êïçsacr^KȺhÞ¸±dWSV^\XXVPJRBxîûåha{ksù¬Ï¤Ì¬Êªç¾•‚¤ãñ«§~à›®wþ¿ß|våêlâ|ó~rag]kãäå~xtm|~}{ózà}uuh_hfounakYelvmpnà°ïS}ê\WåéœôúܹžàMLf|\é÷ÞïN5ÛÀë9+8÷«ݲêwŸ{°½vtâìŸêsè²ä_c~èîèäÞ±°º»ºûûûÛêí±øÙÂài{osãm_idd[v¹î_êäë½½ëÛë~즒§©î¬§®µÈµ¾»{î¼Æ¹±ìãO8C>]èÝùþsó}tâyLFZyqîyovo^XW^RPUOIPDZ}©ÝbQo{mŸäæÎÔ™‹Ö°¹ÕÕ¡žë€Ö’ÁfpÞ{ä¹äﯞ|z|}nxwp½ÿyY`}üàwéztzlwàyzz}âjghm|^afsekgowu~ryçûèKâcZ{u~ݼ±ÿ­ÈÈ°èv87C@UŸû\4žÔøãGAtë°Ÿ®Ü°ïpîÞâçÿ}úþíï°ë|zèÛŸÞøߟôô­ßÞ°žüþüŸ±¹Ÿqyig~âshgi_\÷þiìè{àó䵸ÛÛÜ€Ó¸§´üŸ¿ññ»æ«¸üž¬ôú®ýñ¸®xA8RêÿœìZi½ptètTOWmYMVbhpkdcSWTWOENO[­œm=jéçåïÈÁÙŒŒÌ±¤éƶ¨´ú`O±ÞÝû|nÿís}óähfbdóíìróvpsuqroxóà~}ãàó{uftxvvgdfxnhqwy|~~½äï{Rm½l_íyeèôôÝž¶ý»âGUWqóîÿŸ´œzÛ”ø¦‘Å‹ˆªÊŒáÖ¥§²téóéï쟟ëéïŸêüjäþåÿàal{cbjrqoäâ~å}ã|yxzgm÷ëSfvjnqtî½çéé½ypm[lßÜWixSzÛÞߺýß½¹Ÿ^xnXPLžž»·©¶ºÝç`óïëëâyvçwahvri{~m[{°©û°íéô¹í|jzâwt}ypkq}w}yeanwoou~ú¶À¨íµ©®¸Û®À槻üœæýýå츻ûÿý‘Ùñÿ››ß´›obVbârro~ìtOeUbXT^WUNPTZW\c]]GRBFIHCNGCGOCGPc»ÇáÛwânj±¾É®œÛ±¶œ©ä»ûMY_WQZ^UUR\TRbhkhabjuvàâè~}å}zìy®«½nfjü{g`mrtx|çìçwjZR]WŸ¿žãëë`?DDLMUÿ­zåór{²ÛGW{mtìåg÷÷âþ®}EWLR^gãjo~¹µ®›~kvssàüë~ê½óêabeZdb_XUUU`RHUemxuéy¸È¹÷±¶«æýù¬ÕÓÇ檲\k½ttÜÿíîéíîÒèyz±æ¥×ÿ¨Žÿwäãätok{½éblbd±°nZbt\NUTWPZe`NMG?DC;E>CLNVBMMGè¿Á›»¹x}žù¼Ý÷µ§º¶ÃšÛIUPV\^\VUX[[V^[Ubqi^xnvpäââ½åçãwz]pï©Ÿsïhmtyymt~êíãgLSY`MnÈæ°çåwB:9PSIb»ãl]óü}\\Xcod⪟찦ÛSRXKXV]a]ë›ß®¨ªèlmodc~½v}²ªóMYjabfb]`TTQIQVX__jj`ëȶ¦¶ýæ·«¦ªæ§¨Ï„Ö´ª±±Ýeporéïíþ÷úëôƪžßû¬Ù×ÅîvSwåäàpUgsþílfZJViSEZJJTTRPZTaPGQKK@?HDJFIPOF@A?eìûÞ»~[²©¿ÈÅù©¨®rKb[TXT]T\\``U^VLbuxkstuit}ìèçssxi[w®©ôîcktãym{âèí{cNPZVPS²ªûûßí[VlMSJW|û½anéeG\_^rt^²ñ±ïºžoL_ZW[`TWq±ª±~í®±{qneTghlíÛœì]^olhkb\XRGMSTU[_YWcZ骞®È®ª´¶ñªµ«’ÑÃÂñ±›ûê÷ìëÿþû÷Ÿûz­Ú¨æÂâ½±¼™šº{ìåU^vo]kXêë霶®A8Ca[TWFLX]_`LQPKKGBCLHIMMKKG8:P\Sì®üçú¹Ÿì§Ç»›sb]a[SYSUUZc]kW[_[bjnkpxrhbk½½àã}xtvî°Ÿ­»î]m}{im}ãéêäsPRQQd\©Á›²¸È^IlTOSRFoàmzëuQOb[cmN[îèq±ãRcYUa^VtݜȺéizçíäiflolz±êéþi]hkfe_N;ANQXN\g^aQTg²ùž¹ôœñøÈžœÇŽÀ’ÃÕÜßÜøüçãïíÛ»½}еüíuì¯ÏÛqï~{îpvs~e]crüæÛ±ÞÜôN1WZQQZ_kXMNLNGIF?MMPOJNGKIFJENü­îfu꟯ÖÔûRZ`][`WY\\S`U^ibjk`W\erpiihcsvyäç}yí±ràëþàSpåo`w½ïéåíwOLQ]ndŸ¸®°Òè=?TPTMHQakß÷}óaLdvZ=5iÈ©yqld_WdbEVŸÈÞݸ°½n}änrãyåè½ëó_`fcZIOXWZVaWpedlh[Yãôß¹ßÝÝÞ¼¶Èßœ´¬ŽÇÏŒ¤ƒÐ®¿¦ý¹ìãkz›œ½í¿Âž÷›®ôí`Xh]~ÜruhpoW^[Xfgtèüñôh}V\Z;H^d]LNVJILALGOMVPDKMI;@NCDXèï~fvåñýÝøŸàZLTURVUXU^UX\]^`]VW\jh_yqiisqmz{tqß°Yuàë½^zà_eçîúäêë~^Z_\cZkî›îž±T;?SYNZXN[ûçïvK[qå½M[æý~Rgv[@@GBDZÜt_b^^béû°žçc\SX]VZ[PW_WUXR[Zegfpaqeefnllsxy}yópàè½ó÷àmóìudYkthprgcYZWRPjU<àègÜÿ^BSMXTXV_SS`[ZZC@_ûíqs¦údmââí±ïâþœš§È¹ûôïëü½Ü°é~àëüçêxqäjMZeZ]^]eWbbmzvnukgyêžž²ÛÝßÈÀý›»©²ÿüì|yÕ¶JEK鯻écQÞ¥µ¦·Íƒø°ÈÇ·½U[dabRãæÂÁ²d]c^Xdohkú¯jaYe[eí^2HCGJST\ZOLYZRC:A>=FY½ZYX[^k[WkísGOMYi]TRTVdNKPVWbmhlvmkcamqtt{ãóxÛümx½ü~âxå|TGZcjrók`xe[VTQFéü[jreþ{wnYERTZUTTU]X]Qbvl§›kiû›véîî»ãä||þ§œó^hå|ûÞÿüíw½è±ëåóaX[YZ^Z`_^X_\c÷åêôŸéëܶºÞÞ±¹¼À¥À²­ßߺºéäþÿªüaZP°ÀßI@tµ´Ô϶¿†ØÕß½Üyhóg_g_YbnîîZRf`e{wbf]levxfnCSgGKACPJWNaULV\UEBF@=GOwwfçÿlistobofTY]lfQR]VVM[XKQhrm_dgh^mvbozâ}ä½ú¹âw½uwäâhUVOP[kg÷¹sncRUTKYÞøçXKV]RëîTGK^YKMV`VYin›¼þüüks~tkôýœ»àä`sëÀéyu]hàvì¼æ½²ôüìèîã}w\Ycd^nV[\iZ^mvŸë}Û÷zu麦›Þ­»¼œ»ÁÏ®²žÞÜÞÛì÷æ÷êvcyaLbX;E]±¼À¨ÜÝô’Ç»óç}mjxqghsk`Z^ehmmèÞ~bij^YdvmàtRcbAKHBEPV`YOISQB?IA;OPfèSŸ»íngdb^e`Xhfa_RMHGZVV[]b`c\]krrs|{dswu|éï÷|y~ììdVZRO^hokì¼sdZUSXP]h½â__`vezûMXRY\]`_YZ]gÿ›ÿ\dm`ü°sç¾¼ûáÛyïâûaß­jhz{ÿµ¦zëÿœÿpçà½bOUT[g`]hcphoyqq|~~}s}ÿÈôßÛ¦­þûÈøœÝÛž»²Þ­ôú»{Zçë[YYVN_xí¿¬§ïãókf}ê}W^gfrnnszzz|âéxlà|cf|óq[íì~ï±oaaHG=CAOXXPTMVRAGKBCRO[âfQcsaiovtjVZaex\WWWRjfoz{zqkxwsxxâà}w~}óçèìâpwh~ÛqZ_\PZfmi]qïl_\WYQW_HES^]]ëìC±cT_[TW[cg]]täéXS]ëÿàk÷ù’°~Ü­ÿjï}ewsa^ow{ìݺççàíû½úÿychgb`\W]`^b_êwemyä~½Üçx­øžºÜûô¦œìú®µ¼›œ›¦üüÞçocdåâd^_^Njéÿ«§ûàzåxãwqvsrxqv~þ°ÿèàv}}{|l|Û~\|ràÿžé_bWBECBGPSKMSLMJCAFDKJ_rûó[fnc{îàwstrxâïçàRàã\Zãþë{vå½ãzyããî½àã½êém}sqãïjji]^^lqf^s~hg`SY]htaLPWRZyìGçíUZ`_]ck^Y_iàäT_ܶûYGÛÉÏü{¼²çû÷é}uikâàäèxvîêÿî±þêäudt{id\_`^bc|œçû°íåè°°}­ôœ»­Ýû¶¶­û÷©¿ùÜÛ»æëÛºíiqwuhek_dcnéïyüœî½xô°utvrfm}k{wóÝß›ëkgw÷­}vnaxs]snvtvoy{cGIEDDJMRMSOPRMOGCKJ\Zë¹ecurwçîëuåéóukwlç’ËìbWs÷¦þky|zãtçëì~ääååbix{åxvto`a`fo^grànobR_tnYSWWKQ]lvOUêgQ_aUgèws½tqçcwøœx<äÑÏí]½êitàâu½}lyûß¹Üîpeäéûêëíãàxqìíeadhccagó±tv­œyå~oãvóqû¦¹›Û»»ºÝüú®ù›Ý¹¦½ô¶Û²ég`ctm[`Zaqüxçåsëç|zonrvpu{oìä}÷ÿœ²rnnqrk[tg\gnsokhq|êìsSINPADNWXPRRNORECHV[Obôèlhvyuü°ã¬²»èmNëùéjú¹ófçÿkztussàâ|}ãà~zmuz}soh^[\bfc_h{zäcerfXKBRTRSRgW½^JegPLlhkíéí½þvÿçå½ìÝƸxNOn`c|Ýüœïhcþºûxóà|tàìêûììåäày}þÿâûçeaiejdXgâoXlmjuksfü¦ž›°Þ¹±±üà繪È´»§­éìw_[hcNU\g_xsgküÝkoàtmrtyrlüûïÿéíåfnfrhokrrotumijhqyàäëaLJOG=G[VOMPLIRHHLQ_T\›î]_oâwã¾×‚€®Þ©½Dræ»oyîlRqjmwwnndzàusrãxââãw|½q`^YUU\ol`djüp{atbD[pTN^XYiUàÝ[F``u›žê½êåyàpp\zç°¥ƒ´ôrE\nsmú¶µâksîþshgx{û÷îí²úççãytt|ã}èüilnklbaonxçt{ã{óåíß›¹Û¹›²üÛüçs~°åž¸¸¼øÞwy÷ãdhgrvmû~uunjjë÷óè½souytdfzííäwhbhgkmqrsdkoidkhlmtosçã|UNTQCISROLORSMMHJMR]a|ÿêézüùΉѡ˰¦°HAùvcì°wskXãxXcãtjqvvâ~tãììóxàl^UUVWZlpgnyÛzhkqmROktUSYW^ièê¼ûTaawœ®ìmnrþÿ­Mhÿ¶»¦´¯ÐÁ÷xnnžìzXmŸ½bkxmrà²ûí²÷ÿêê}{yqmilitiqmiunuvzüÿâóéêäú›îè|²Þܱíéå|lqdrµ´ºÈ¸®éÿŸêçéêàtóàíztiîÛÿ½àuhnnidlbqwf_grlhSegnbb]ldggfhuxoãçdUKIHPMSNOXSSPROESGbb^²Ûè̅ÉߊҪ|PrŽ¦ó~Üøéþzwéàekzpjk~à~|yóïäçzsj[YW\ebhpu{åÿxlq]TH]aNQRUc½»«Üÿ^W_`gxoYRwþã]`yûî¶üøÉùùú¯ôßç]K`àlYenuvííëÿü°úûââà{u{àspqmkpkouuóîçxz{xyãèž°yéqãí÷±vyå~kp]R忶§ÌÙ¬ïìÛþíåïåtäíâíëÝ›û~sàwspokoibexh`lnife_]ea_]bxkgkjbhlfjrywWJISQHSWRSOPPQLITLWbZå¹±²©«Ž¬ùþ´ÖÂûü­‚Ÿyîúó}¶èïêxiróxifwyqwqàv{åóq^XW]chhpvzóäåoskZMbxTEQZv©·Ï¿üVbqkVHMS|ôâYdèâéwœôw궒¹ó­ßìé½çtVg`S_cjwàízëîç±°ûâ½ózóótjmqpvqfswã÷üó}åëóx}«þã÷þãÿí÷}zîvgp][K›»©”—¤ñíÿóxÝ»þ°œï÷ܹž›Üïsvóxkjcs`hnf\cmihemqc^co`xxafoncddgkgm`UQOKOPXTHQRQGIJQVVdU`±ª°ä¹¿€Žœ¸©¦‚ÌÔ…µóÜxqîäàtfW|ïkdoywhqu|owàïucaaegcpsv~ãàåxna_QdwkQPbhvÝ­­úîcbpvcVfyúßäâݹôÛŸî_hûëclëŸhoûïãìègbebfpë½óêþåþîëê~xxpiogkyåsrrààçÿþëêÿú°ë²¾²çìÜüŸ½~{nån[pdYPQå¨É•öÕúë뜲ãßýœÜéôæ¸ùºàp}hlwVg\muohibjwwkhgXgxq{g]hm_crbYcqk~yTaUMYTUVSPMOGSIORYYTYj÷°ü®×Á­ù¶¾Èü®§Ûë»øêineapdwày{}àógatvä}{úleffdfcps}íåx|zdYZPJLLNOarqr›½îûþsWjìp|»¦ßçwüñÁ¦WvwyûÝŸçãÝêâéâÜîú²aandnéÛèëïþå½è½ïâuuvrhtrnà÷zzê÷þúì±ûîì°·ªüÿè÷±úósâx}r^gaU]CaÊžßχ¬­ôçéþú±âyî¹ñ¯ºìvuhyÿp]Y^fwpilrzxoll\\ausb[ciaiwsjefoàÿ^lcUZZYVYLDNOSOPPVXX_Tpûôº’Íþëèû­åžúûût|²àomwrkks}~~{uó~pväïí{hoj_X\c~çìþó}xod`STQTOTb]elRjoìüÛþt~zblûékàíܦlJþéû»©È€øÕÒ†™’ôžý­½o~ÿßßÿ°åìîÿäèêüüé|âógeqr½êß÷ìãþ±çÝÛìû±ýæºÞ¹îìܱëþôzxvbgbWYJàžóô€È°©øzëûçãîxl_ç°éçrssevãqcW]mtlkhqgehpfa\aoiX_a_cbà¼~_k{~f[bSR\YYXRLLIHOHIT]_Z[Vtúúª§ßél}è²ëÿüââê|cå°½k}|npmdWZkilþ±ä|çüq`tqe^V`yêîä}èxj`b_YZXWmybfdHa|îî±ûïëb\]ayc䮫¶ìÜèV`½½ïÿçû¦¯áÏŽ¾ñœ±úé½¹ñÛå²çäßÞíåüééÜŸ½xnltå­ê¦¹äãêî­©©Û©ô¼¯¾Áô÷Ÿœ»ºîÿìbaX\`[IÞø²î°ÝžëìçüŸîìäxèœÜq}äã{vìäxpsjgrsknsruiqgjn``egjba^]|íuro~rp_c_YVZeQVPFPLSSUVQ``ZR_vè²ý¶ôè¹èçì¹÷uxíåiê²|mlln`TR]ZTZr{upxëìüvcjjiXXk{éêèéàvgZ\eåüãóåtVjoMS}±»ÜíìsQTZg}Üœ÷wQq_g©¯üíüânþ€æùÝ}{½ÿÛ°÷íÞÛxå°²ú­›ú±¹œèw|ãôñý©ÝÿÞâÝÈžæø¾ù ̊¦ñ©®ñ¸Á¬ÆÇ´rg]jb\R}¨Ÿ¶¯þÿÞvàîüàyàßžqXoãäuutt`gwvu½äh]cgpqaedqXadkiV_VbwkèäpiqâlW\[SW[^XLHLGHDRTTU^c_bZZŸ÷àŸº¸xjíüxë½bfS\wdZUU[[YUckdbbkpãíüêkZidTbr}èíév|pk`S[cltiPHOb_ZP\éwzÜŸoLQtdXŸ­üâÞÈçCbiWkí¦þíÞ|l}qäí½ëçàí÷²ûñÓÈúûãܶÜÜûºŸsüvx~±¼´­ÛÀµ§æ¼®ÇÓšÂÍךŽ®ý¨¶Æ|agbnÞÞhüžŸÜ®§úïÜݽäé½âã}hhiit|ÿîóâypzàupsmq⦴TKTNS_[mmij[nqqèÞ÷íâãäl^\VZ[`]RJKONKTOTTV`ihcXiüçïû¦¸ü{êû~{íú{pãn`]ibdiVachh\ijm{kûÿŸbYnmptr|}ãëuugg[ZaZQXZ[XFYmSWb`]ìíüêP\úœ{Pêk½¹qm^÷éxà­©{jwÛë÷÷ÛþûûŸräž¹æ©ïsÝ´Ÿèܸ·ž¬ßtêºýñÀ¦¶ñµ¸¯´¼ý€Ì«ÂÁ¼µøºµÐÂÜ’Ïãki^àøúYkÝ­º»Üëäây{óuzàwvsthueé÷½­ïsxi_`alnbêå`Zxr^T_mngkrvstwyvå~âœè`fYXd^VTOTPSOLTVQUWTfjf]Uk½º¦Û÷ä}ibt~eûnmoe^hgfgaW`pmXbd\âãœzZqxppkkwàëó{{l\\XSTSTQUX_]`RiZUmmñÜR|Âì>hbsp9âߟìªïïé{÷¸¶ÿœ­Ÿëã|릻ýÃÆÀŽæéúœßÞ´§¼È®ªþ¶¯¹­¨ù´ùµ·¬¶ø¬Ñ¢¥Â¨ýŸ¹®ßÞ¦À´¸ý`Ÿmlcwà[㛲¹Þ÷±»Ûoåx}vãuóèxå|fwvèî÷²àfjjgcP_u\Ekoqã}m]Unpdops||yçü¦ÿ÷¹g_caa`ZZVNROVVXKVSOQbupb_\l­È²ëâ}êä~àufNXm_[\][demaivmrebclxäÁëeqztlhr}èäyã|jaTZSUNNV^[TX^YamerV¹²fåÛ²ãNP^]Zú÷ìiiåàXcv~±Ûã²¼¬¨Þ~겞¶€ŽÍ·’Ž¾žÜ¼¯Ð€µ®º§¯¸Üî¦Âùñ¸¸´¼ø·Ó‹ÍŒùœÜÛ¿ùæÊ’¿¬V€ªo^hieîïßœó㺺ìózpäzpsãtouz|yvpêüûv[]qw_[oܲOVmlxweqretjujóäó~Ý›êî|[bkc^ccVXXNSQKN[SQXclnf]dYZà©üŸþäì¹äÿmegeacRRQ_hi`_fjlvcó{p¦ßulhbksyxyâ{êzaZ]^PVWOfb`b_aZg_ot[nºôú­ÿyMâcjݶªèHcâóeEgiã¹ëø’€ñµ®Ý¬¿ÅÁ¥Á’ÏÁ§çžÓÔ´µ¨žžø©©ôÞ¼¿«µ¸æªÏ„ŒË¼Ü欭æ·ÝÅśͯùñaqklà›ßÝœ¹Üïÿéàzä½äyxyvv|åàóhncvqdvzä±ì~äÝñZVZqsjofcfnrrytuw|~û¹¹÷ÝwfiifecbZXRVSRQKNPN[efj_\chhúºŸÞþäîúêèykŸœ`_Z_Z[alnrifwsxo{Ÿuijlyzzyrurywf[bZWbSZddg_agae^xokasÝ÷|jeXda»®ë|°ä]oywêâqarÿœ¾¬«´°®¾ÅÆÒÉÓÉÍÍÀÑÆϾ©¼ŽÇŽÁ涞®·¶÷¦§¦ý¿¾¿ý¼“ˆ†¡¥Áýùß»¿¾§Ç¬ÈÇ»ùûcxiro޼ܒ·~å}vŸîê|ãân}î±éèéZmv¬éuQt¼¶ã¦vkluà59WyjŽáH9â»þyo½©ya``EG4m¬µµøœo]íú¹­ÛüþëgVFie[e}à]Vt90ãlOitl\l}Z+=\Ǹ¾辧µªÝݱso½ONjOdNrtFµ¦ûà°bUie_fh\pâ}êzWUf_TcUMQizbT~ãlhv}zyvówSatàë°²›º»íXXt}r`FIYbzÿ­´®²ëªƒ…™××™ÐÏÑÔÉÐÇ€ÍÆŽ’ÂŽÂÅǧùÇÃÂÁÁ¨¨ÀŽ€ÇÏÑÉÒÓÒ§Áßžæ»®ýßžÁ€«Ý¬¶bý¼Lt¨’ŨRWcT÷z[ >¶Émé€÷S9åýFE)GVeOteKjÞvi±´ãaL:Á»êñ챱ﱟÛܺ¶ºZ6N›jPtwdjYTkmeìycp{vkor\R:p¥Ï¬¸¾«¾¬ùú««SL{«a-Vi5ª´›yrëßxeUT^`egf|ì|_]le[^ZVA[cT_åå}rtã|{àh`Zsìê½íäó÷¸ÜLPZuq\ACT^c\~ÜßÝë~ë… Õ™ÊÓ¥¥¥¥ÑÑϬ€’’ÃÅÍÀ’’€ÂÀÂŽŽ’’ÆÇÅÏÒ¥ÒÒɬøÁ¾º›Ü¦·¼¿]i©Üy껾©ªµ¯gåµÁ€¿ÈýwThk8[Z&Lníôçîâ\1 -Rez²yU3knnݺ¯¿u][ªùæMø¨Üç²ÞÜßÛÛ»÷[7k§N%qþ]fm_g~nâpltórrtq]7$&çÉͬÂÁ¨¾Èý¼V8fn>Cäµ< ,¶¦rçuoºª½]NQdp|ewâlixhXcfhS8RYN]â|}~}}glzóé½x{tXóÜyJ[FRGPI=BMXEAg÷°m_yáÌØÕÊÒÔ™ÑÒ¥ÑÑ€’€€ÃÍ’€Ç€¿€ÃÃÃÅæÂÉÏ€ÀÃÅŬ¼€æ¼÷ì4CM@hpp»«ý¶¨GFs´´’ÅŽ€ùßêyShh±Ë¼JV]è;#r¬®å}`[{©zr«µ²¬±VBÞªéutì¹›žóCDi:ãt'UÜoV|ÿ»ão{lnóåîî{k:#$pÉÍÂÀŽŽÂÀÁ§w(ArU1õDmåêå휱åkbWcynkrlilejmhf\@H[^_xàâèåà|vâä||½èovkCuŸv-:-6>P_VJGNO>?tÛz`cÿ áËËØÊÔÑÓÒÒÑÍÆÇÆÀÅÀŀÃÆÆÆÆÅÇÇ€Ž¿È»¶Èª»ªý¿Á¿ô›årc2X_êRC`ç¼ÈÞªf,c·Â¹ŸÑ3j®jñÞ0 Q%^ØæPChäNZyåì¹ÛävãzPX窷žÂÂøGa­Üvn﮼V<%E°NBc"y´üv{ìîsxàfV]­´À²«Â¾ßý¾ø›½q©ÈNY#}¼Å€ÆŽ¾Æ¨ÿ»ùeÝ´íý¶›È»½ôtfht°êpí}dfgtàtPPLYHRaGGfkóãèèêÿîéåoU:rôßë~oUKMLZìûÿ½{rl~ëôôã{äèèç{Ã…á×ÓÊ×Õ™Ôʙҥ¥ÐÏÏÅÆɥϧµÈȶªžÞœ¼®æ§§·µª©¦¼¶©žw©Çó;r¼Þ{©¿ÁÏæŸÁÉTõRëñ›[ii{™¼CݵD]_Cçï;"4i_hEyÞ»stzK8[qýÒÏfÆôúü¾¿ßŸµ«®caìC·zhKa¯ïLK@\ꫨÒ´©ùüUõBcfgõ - ;â¥Ã¬¿ÅÁdZïtéãé¹›oÞ­e`iã~ãtäçsg]{éhD_LWOHVLixvìåååoxè½èvZI)<çÛôãOTxuperg{pcKlÞþåž°yyuåêìxÜ …ËÕ×ØÕÖÊÊÊ™ÒÑÑÐÉÏÏÉÒ¥ÍÀñùýÈù´æý¯ù¸·ùÁµññø¼›·¬¬ÉÇDݲN/k·’ÐÅñÐÇj)Mät~µ´ÍÇÀ«bl²Ê=Zzëù´åMHPzrågPlIFªÃÒ¼A§cXܶ¾¬Ü²¦ªø½/^!\¨­±[¹’œŸ­µ¨ÀbhÇÅ«ñ®aK`H_g]ÑÍó›¾Û¦ÁÀ¨§®ùÝâûøø©þrôÛ½UMjèï}xurjtz\MTMHJ][[Rl~çíåw\Vó~zjD424$qóîí1MÜ}xjQg{Zddåí?oúÞåä½þîꛃ áØËØØÕ×ÖÕ™Ô™ÑÆ¥ÉÆÉÉÇÐÐÅÁ©»¼æ´´¶ùµ¾´«´æùýÃÁ’ÇÂÈîªÛÁ´È©ÂÅ©¸~Vóàgâ÷þÅÊgýÔ¸ég_[F@èŹwãíTK>DRSWwøÛ®Òœ¼Ñ]F:^üœ±ºñ°ÜùžÝyeâÀ«¯œ½pô»®€’¾w=BngnYBè|ãg꥾ÝÞ¾ÿXëÀ«¾¨ù¯·þÝ®àvÝœüs]PäâyåzbpìwJ`KJ7;däëyp}xy{gV}èïåY6EVN4uêxr&5ëmqS,FSZÿëçû~Tfå·¼±ì²Ÿï²…ƒ…áËËØ×Ø××™™ÓÒÒÒÐÇÃÐÒÐÍÏÍƾ©®¬Àµñææñ®µ¼’ÍÇǧ¯«ýÂÍùÍż›ŽnSWº¿ÁÃä$MvÜíÔÐÂÁù0\ÂÏÁSF7,ThlZ@Mè÷Ý’ÆÆyøÆm*un°ç¹®÷ëºT6¨«ÁŽëDãoSúãZ- <7?nÿT Aã»O  PåýÈgÀž¬ø{²çŸ­üží°ópa~~éà_Z_}àsjàíx\VVPILp÷g]fUMbhO_êåãèsìþi+LoeY7&Kg_/ 1?%VvFNqxikݾœÝô­©êÆ  ÌÌÌÖÐØÕ×Ê™ÔÓ¥ÉÉ¥ÏÃÇÏÃÅ’øæ««ù·ù·ù¸ñø¶¯ø€¹fOOè»`üÆÁ’Ñl:¨ø±Æ¥Íl ?¶»è^G»Ñɵ¿¥A°Ñ¯·ïYh>WT"Odxsû§î¼ô§XJVÿÃÁÞžº›¯¬ûrÂý=u€’ÀÃqµÈRIB à¹?ìß,}/t§ÇX;TEgë)e`{¾ýݱ°º}ßùlM%UH7AU÷vcjrqââvca{zpi_ZQP]gkZIRw]5JXxëäàåóàîçp@/(5lèk@(+YwP&1õ-,gžªÜ÷²®ØÍÕÌÏ×á×ÖšËÖØ××ÓÔÕÕՙɻ|øÊÑÏÐÇÀ«µ²ãavùaMês°®€Å¨€¯ý¨ºŽÐÉv¦üÇÅÇä>I(0ä͵ǙôÞÀɥƀé|ßR2ÿ¥ãIIYl_C'7aÍÖÁ\Ã}Ht^À€®_LÞ´øª`/[ê4€ŽäuhIUj[fº:)åt:ìrStžýíf`TY| Ac;sƾ¦ª®Þ¶§ñ®ßÿ·øè©æ´œûrf`dYp~q\zcWLAWZPjV^>HJ:eçåézd|½qw½ïŸ°V"1dçP05ju_-2"&Z½ípWUyèÇá«Ó…ËÔØ×ÕÖª¾×ØÒtôÕÔƨœoÉÊÓÐЀ«Í’ýþïzUv÷îȺº­¾¬ŽÏÑùY©ÍìHvÃÞÏ™¸­§Ç®]P#[æéRGçÐæ·ùÃÉÀ€riíy+;]cOJ`bQI'H¼ÈŽ×·Lêtilhjž§±æÀ¿¿S-_i­ãüñ[YdCeaãŸÁÑqu×Æë}néîhh©§œµ€ŽVr½e8’xcÂÏûLAo`W¶çNú¼ÇÅ’¿ÇÒN!%/2w€ÂÁºº­ª›Û»«¾¦›§È¹ócnidd[fzkYWYfcIBXP<=@Efà{zewèég;6K>z±ê²ÝäD>}^2)^kkcB8)0ð - - nótnl?^íî­¬€¯¯š®ŸÓá ;] Dvèwg|üÓÖ×ÕÕÑýÐÖÑÂùý®«À¿ÇÑÆ’ÉÑÇ͸͵Ɵ^ìä½m[ýµÅÅñâpŸ¥Å¯Ž¶tÔЧ¦SKCEìÜHSr}ßÃÜxjs²bT^\àóPPlap´ºoRÜÜ_ 0WãpGT}~8@Z$*½€ô²tí²ñífãu* - a¾Ãñæ’Àµñü¦ß¼½²îyyhor]]o^PJTcOI[XD?;âàëykccgWD9& (këzqOGjèÅÓý®s[kTAêÐҧƻ}q7ð;WgwâdVx®§Â™™ÔÔÒÇÐŬèÁ­ÑÉÇ¥¥ÈæVzÔϬÁ«å¼€½09Mç浨ã-€ÆÆæ~k|ìûÀj+HJÿ¨u/9T½îïq[h^u{'_Ûtf²Ÿrñ¯f`uw ''d^]x\qëteÈ´X@EACJWVH7>LTA-1=àxTrâääëzwëïíèë±îóy|ÿ­ÝúÿàéÜîà÷Üþëäo?4+V®­êŸûêùÔÙÙÌ™ÒÇÔËÇ¿ÒÇÑ€ÀŽšÔý«¼±ýûïî}ù÷æ¿ÑÓ¥ÑÔÕ›@ßÒ¥ÔÒÇÑÖÍ÷í©µdVv[Vý¸¨À¾âž­ºÉжl`RhOá wigOg2%N _ê÷ëè꯫óÈþÀ€·¯ÇÈÐÒ·_óØÝú®ÿdÛ¾’÷OVôþpTžÛUEtJ/EA"-G-iR'kÒÁãÖ¼MÝ´déëóã_`a\c~Ÿþ±êghTM_`SIS>+KuF1>Eë~Zx~eaultè{vhtíü½Ÿ°ìéꜦ۟½ïóâ²÷ê÷åe_Q,^Þ|mäúÝКá„ÙËÔÑÃÓ™™™ÒÍÏÁ¶ÐÌ¥¨¶¼´·¿ŸÆÇÑÑÑ™ÔÒÔ׺9ÓÕǾÆϥɟñÔ`\Z/Bçî´ÒÊÉǧjqÀ®NLuArvÓnÝ×O)n5$.-#8DTbô°ôÈù¼ªÐÖÇÑÆøŽùŽ«ü´ÑÉÏ®©Ãê{°í·ÅÐi W{yÒWÒÈTŸÞzlð,9*L% 7z<t©þ¥¥æûzrë°í½lcdfaTWtú°âWUjvl]G7:Tïpsr~©è{íxSf|våîzxr²ôèäÿ­¸´ä¶žÞŸàc|ä½±ìo17qsisìäiyçßš ËÙÙƒË×ÔÐÏÔšÔÉ¥ÓƦÓËÒÇÁ­ß¸€§Ž¾¿ÒÔÕšÊZ8Õ¨è~syù¸´§ÿÑžeN?orÒÝû¶Íèí¹ÅšÀN!ìè'2ir3œçù|1Rñ½¦À¸œ¸_L`vϨqdTÂÿ§ü»Ò¶(ø€¶œ½°[UCTkÔǵ€ÂàÍÍÏG ! õ,# 9>*hWmìGDã5ð!jüÀ:FÜ­ÃïDjÐÁ²ŽûÞæ­îÑÒÍÈ»v+EëÒøÑLRæ»/ õç­SjBìþa\x^VoýÊÇZpaUf[Z[qú±ÿ{aäï;9P©øú{`QGLF7OOFcãüééãîìORqe\~îëëúéßÜïíî¹›ucrìßå›ôzþuraAw±l9wÝxçî}VXbцš×ÕÊ áƒËØÐÓÕÔÌš™Ï¯ÂÕÊš™¼ýÜ÷}måµÑßÛЫy`x¨Á}ýéw?lïã·Õ¥ÁÉÅàdÒÇ¥Àµ¾ñ¿ù_fÂ¥Ãv&fWîŸ÷oxÏ¥}c[pëÝàîôC:;ë¼íxsnZSdlgfp½kãïYeyj`]H>B|½ääÈîÞ°½÷±±®êennwþÞälÔ¸ÅÛü½þóIQ|åóçààât̆Ìá…ƒ…áƒÌÌËÂæ’ÔÔÓ™ÑÓ×ØÊʾ«ÀÅìäzžÉ¸¿¯çŸô»ÏÌŽ×X´´ry¾«©’¨tÂiÏ¥`ÑæǼ=SÔ¨šßÁÏc0`ø€h^X@Suךëõ<Žâ&ç|AfU =j^°ÏÍŽÁÆÂaHÓÔÍÏÒÕÅÀ¨›µÐÒÉfQ’Ò¬ÆÍÏœny,  -I°æ~aOwE -\º¿äЭh°æ¬°tpvgûaïFB,6caYfh\YtH"LZfOuw1,6>0$1&4\P3<Ÿ¯©|{ÿíªÀrK²ttt[ÿÖÌÌÅ°¼¼µ®xVjÿuånÉ„ÐჅ ÌËššË˵ÇÃÀ€ÓËË™¿ù¥Ð~h|piìÃk{¹ÿ™ÔÕÀÀǯîì·ÊÊʬ±Ñ€»ó¶Ï¬¶¯Â¯êL`Ž¬ýlNÓÁçcåéâ\[­îOC/00'WÌå°©S ððo«çé!½P9ŽzþÏÍœã¼VC¥Ò¨ÉÒÒ¥§uãQ:pfyzAÔÐ¥ÑÉs-ð -Dè·¼ûÜú^p''|¬¶äXLÛÛUUcíf^g]°­&.F;7?(:hq4)60&%.- (íéruëÿ÷´ä'ovp²ÞØÙ ÌÒÅžãÿåß×ßlåyàä±où̯™ … áášØÊØ™¥ÉÓ™ÒÐ¥ÓÖËÌÉøÿ Q^EoñdPݶršÖ˧¾¥íbàÃøך´ø×Á’É¥Á±tgnt¦Æt?WßåZôç{ÂÔœuíf0D+%Mêº8Y-R÷UW½åQÞ\I{ÅÔgsÓÒÇûÇ»ÍÉÓÓÑ«d¸ÐÉ…ÊèsQëʬ¨Ñê2$'_äV}ÿž¸ôžV?WHA$ túãïÞêYhÈóìÞiQe?Zûî8849=56C?:Gcg+-/:]a]9㹺ŸY69FIK.$,B4JãÝúìÛf[㻇ך…Š„€¼åœ½ãËš»²ääô¹ÿš‘Öš áˆ‘…ááØ¥ÖÏÒÕÇÊÊÕËËñê;\VKÖ¯¹åbçÅÔái}{nvë`ãåý͵ºüåÏØ™½ÒœxúñÜçßøþ¶æ±ÁÓÏÒÊÔÒ¶øì\5r#÷Þ8B3EŽ°T_|lljMw¿xj»©øÆÕÓÏÒËÈD­¨¼ŽÖ¯èiÉÀ¨Ô¼3Z›Üåž{x¶æV $#6+izviSzçwãîcaürXeWätI%+1&09?9+1K^S`auyLD*5WuÈôèéoesîf=1=:?yžßÝÞ_‚ˆ‚„Ç׆ŠÔ’ùª®í±Ó׎´ù´¿¶†Šƒƒ†šÕƒ„… „Ùš××ÕřӥәÕÌËåz+ìûKo·æ§ßtEq§¾€ÏÔÛîe&(QZsdot|gÍ¥§¼säÛÞàv¶¶êxó°e>ÏÊÈÖÖÔÑ™¿ÔÖÉ¥º¯ÆîxwäñÅÆýÂÑ’·ûk_[o[&[€¥ÑÀÇÇÓÑз_üØɪ®×ùñt+yÆ™šT=rledyîþ%5GuèŸþótdnlPëôm[ZpìwGR>mpu_DID0-*2FUeqääàfTM@7.k²žÛ½óQkèzZQQ9h­ª¬žìù‘Š…Ùáá‘ØÒÖ»éíì÷ªùÏÔÕÔÊኑ„‘Ë×Ì……ÌØÙËÊ€ÁÓ¯¸Â¿ÇÇ°±âwßÑÿy¿Òŵwa`Þ·¿«×}½úGB T=_üDZqbtª°›’ý¯æéàóg?eÓ›¶Ê¯§™Òøµ×ŨÑÁµÑÒõ¸×ÕÍ¥ÒÑй±ªžéo]ÝÑÅÐÉŽ¯¿¥©Wâl½¥væ¥pFnɲîµýnZC õe+jÞê9=K=yçÁ…  €~úªàpyåk`M{oko}xse[bRH>7@JhXIyëólrL089KGTlçÞ°^4{çwtpWuÜ°¾Ì×Á×ÅÊ˃……žƒ†ÃØášÁÏÉÓÒËË ×̇‡†‘ƒÌ…  ØʆƒÇ¦ÀØ¥ÃÆÉÓÿ¹Žôü¨®uvûŽ’¸·÷jJeçÝÛºdYvToULþ÷ç^Olþ}ârRÐôÕÞå~ê*o¸µœÃеw晀̀šºã×íÀпʿµ¨¯ñ¼ÉÊž§¯¨¸Â¥·r÷©¥ÑÀ¬«¨yïý¿uaeu\^nÓdݾngûH õ"9õ²h  -Ÿ¸ãØ’´¶žîqãê_nzþŸëvruttdJ?DVMVT[^FmãuaWQN9.IO-Aþu=AO;PgUh½´œ»ÒÏÆÓØá ‡†ƒÙÙ‡„ØŠ‚ŠÙŠ„ÉÂÑšÙ  ‚ŠŠ‡ƒËš…ƒËÖ„‡áÑÀÉÕ× ÌËš¬wºçu²°RNèŸÛßÈçUXcZVw›h#"yíb™áÙ€èéžÔíaÉŪÁxzæXâ¯ê¹™Ê÷ñáÒá÷S¿×ÕšÑÕšªäÀÑÑÐÿ¬ñœ¦æ¯ÈçÿåýÍÑѾ«ÂÝû¥øÑjKôÊÖôO@¯ØÓƒƒûw*)6NZL - -  [Dàßœûéh\ÿÜkpêíìëyokmjM@HCO[`E5CWMrscK[]- (1! (G:+" ;1BZîÃÀÊÓÇË‚‚‘‡ˆ‚‚‡‡Ø„ن‘‡„ÖŽùáƒÙƒ„‡‡ƒƒËš…á×…† ƒØÖ¯¿ÓؙȷÒóV{êì¼ëiž¬ŽÃ¼zsÿvtŽŸ­~jíÒQ{~P²s±ÁÔÒsq¿Â¬éÁã°«Ãü>v»zþ¨Ê×Ó’Ï¿»™›ø µDãÒá …¥øËšžøÍØÓÅ«§¸ñ浸Ž¿Ð¬ÛCäžâªÇÆ^-ÍÕ€ÉÐ¥Ó½ ½®{ÿ›¾Üžø=&GO  Aú­ëüÛvafûØŸjÞóàâ~ykqpK>EISM^kQ72YctwL(!.-*%%&1&/0*60:;Cû×ÌÕƒ‡‚‡‘‚ˆ‚‡‘áÖ‡ÙÙ„ƒƒ…šæ|íˇ̅†‡‘‡…¥Ìƒ×ÖËË …ÊǬ¨€ÍØÅÖÌr.u®¬ÒÿÕÊšÉ×Â`TûËת¦ÊÊƃxeÑÔvZU®«k1uƽ^±­¸§¿æ™¸YfÆ××ÕÑŨ¾§øŸÆǨ¨¶¸Õºx¼ÕÒÕ¯ÏÑÒÔ¥ÃÉÊ€ÅÓ™’ãék1eا^?Oìɾ«×¦Q7å{7BcQpx6  8aE -õféG,Uzîuä»ñâs¥nm}~kodTbPAU[Xkw]_otvoG6/  )!&(.A1(.,%-052[¸Ó…‚Š‡‚‚ˆˆ‰ˆ‡‘‘ׇ‡ÙƒÙÙƒÌÕÿ^ó„™Ñ‡†‘† Å™†áØšÖË„„¨Âš™Ê™™ ËÿE÷Í›ñ€ššÊÖùªÅ­Uder¬´oTwÑîÊÖýÓÏßÿºàuüû|môçÀ¾·ÀØï[·ÔÇ’×µ·ç­½±ÇÍÒÏín¹«¨Çظ_r´Õ€ùÊ×ÖÕÏÅ¥¬œºÒšÑ;uÛœýdVâm_€ßßÓóºr+zCNüK>G@7,. R,+`Ûº°u_{owsàn}l]fgvrgRNOBPóêekêxoäo=$.&+2CFD1?<"+UZWQd°¹¸  „‡Š‡‡‘ŠŠÙ‡°Éˆ‘††ƒ† Ø™îlíÉËÙ‚‚ŠáË …á˾ˑê«¿ÊÇÆÑؾ¬ÒôþÕËÖ«à«š’ÒšØoMÜšáØÏêxÉÕÿê’Çß~g꬛Uå¶î¬Á¬ÃÌñWçØ¿Þ¦ÂøŸ§×’¶ªÒÕîk±žý€ÇÑÉ›Ýñ¾ñ»Å™ÇÓ€·¾ç\qžÖy}\àf IqsÀ¸ÔbÊìnÒqgr\s½šµ_%;2/$*BA0 ElyBPaìÛøm Uà1ntva5MA<;LfYV_VDKpK=>dþjãûi>2ObftãyS6(%'7YFXW[ï½ã­¥¥‡‰‰ˆˆˆ‰‡ÌÁ’ˆ†Ù„ƒ…Ô˃só®ÞÇ‚ˆ‚ ¥«šáÕÀÇ×gÛæ’…ÓÀ·µ’«våÌÕÔÈ­ñϬí¨Ì×qxך״boär·kuýµØÔsAã§0TØÉÇƯæÖM<»Õ«¾ÍËÀªæœÞÜýù¬Ô™§»¸ùÒ×ÖÊ¿¥¥ìz¦ÀÖËÃz~xznILqoFg)Aw`Ü’ÁÂvê.CµÖÊÖúë¥ÁÃù6ëq,)u8TC  %ftu4 =yàÜßd9WQdde05XUc}~p]f\DYg_63B0UWi}âystdP<2H=)1J53*#4@`îâ~©æË;ÒËËÌš¸²×ŠƒËÌê°¸¶ówú¼ÿ¨Ù‡‚ŠƒÖÁÃÍÌÖÔ…µßÌÌÊáÅý«¨ÃìêÊ…  Øá™ÅŸêîþ½øzRãËÌ¥ê²sµªùš™àÞýMMÛsH¶¾ÂÍŽÀ¶ZV¶Í¿¿¯ÜZc>812Z½u92TàÏ×ÑšCPçÕƒ«ùšµlݾôÿxx?Nàì2 G?)nZ(vÛ `XëO).kwm´ÓÒì[îôžô,>&81/iìN'àukíþ^!6AD4biwbbkvspóâfbjVetëG-.+7P\brymåóoQ7>FOKVY[?4TcgäíyúÛÿ¹™ÍÜúêíójH\]#T Àù¦ªù›ì±®ÅƦ……ƒÙ …ƨÁ·¯áÆû¦ÑÔ×רñÅ’ihÉÖ…ÌÒÏØëqGbfHM%Zû«ÇÏ’Ò¦ßìnWP@=üë oͨ€¨èLd°ÅÖ™ÁuG^taD#Nnb`°çÇ×­ÝÛÞ°Psƒ¾zÛ›§»bnM][7Ÿüq\*8‡ZvêÝ°ú.µ™ÓÞiüº-qµx2#õ 2'PR;½HMK>C<7N9=TTaM?ió{gp|njehgMFk3074Rfuÿâcqºèó|8'//FE9;^k@5q÷Û¦œîä·ÌÜݯšËÝãÜ›Euƒ ÊšÐ’À­ÛëxrÜÖ€ÏÍѨƒ‘Ê× æ}¿¶Èÿ¥ǨÏÀÅd:­‘áËÍÈzûüíªýÍÜhl_"Rfp«ÏÂýžÜlQPB½ŸTaø¿Ç™š…ùp7B÷¿÷c¦ÁÒÂù«ÈQ_g(qå×ʹ¼­»¦j^ì°êoüåxí ,3??$ 9æ’ÇÒk±ÒרÑáÕÅxR¸ñeÿYâ}ß_ -/$ -'4'þQ! .+%,2:M_S^PHràq^kxklg~y`"óO(.'Tï÷Þåtï¬ìèg6,=FF@BVLDA5^qo¯µ»øÓп¿¨È¹ÿÜü©UãÊá…ƒËÓ’±úç⨬ÕÔµ’‘Xì…Ë·ôÀè¿ÓØÌ„Ã4NØÌ š€Žïîl`ŸÌ׺ï¯ëï»Å¼€ÓÌÖºkrŸ­ÕÔfpÇŽÑÖÓïѬíZ6p¼žûââV4LcN)Câ\'sàru=ð , 4G,õ  -.I)B,ð - A} šÁ=Qä¥Å’ÌšçIYoäpd {! .15|X#,*39CxósX\mj\Tpâukcãtk)Lf=3%9ÿßíî½â®~vNkY$+8;8SQ:3Dãàÿ¾ü|鸪É×ÐËÔªÈ|V_UµƒáËØ…‘ ¥œãó¬¥ÆÁŽÈÞ˸ÛÏÙšñ««¸ÆÕÓÊÒ؆ o2gµšØƒÌØþ@]ve€ÇÁОeþºնœÒ’«ŽÒ™ÈóuÒé\hgúwü¯­Anu½ççgWT;F<+OT+HJ  -õ"õ54)d|Oð   ð\܃¾ô¹ýѯÌj0q©eAQ_nlq[ ð$! _O#!*+.@39Uj|qv_k{`VâóbLçvàz(nN6;7[m6R›óÝåyIaûh-(952>Aàüâüþ¬·ß †‘ÓáÙŽÒëzf6눈…Ö„ŠˆÙšÍäüÖ…ÐÒÆzÁ§¶  ÕÍÏÀÅÕ… šÖ…Ò™ñ<^ËÏ¥ƒØ„¸5åzdÏ¥ÃˬoVàšÔþÓ¦…×ô¿ÒÓžtœÛ_oì¼äero^&Br[iè)92-1 ð$2* -#PR-#õ(?P.  õð u»áÃ)e…ÕÊ’R=°ÈªbbN;4ÿ¼Uõõð #-!#*($49769KAx};_½c3qyQ9iyrû:täP90:O8*ó|ÿ®äP=÷ÝsAAE>m½ç߲̄ØÒÍ…†ÑÔƒÊÃÖø½-MÜ؃̑†ÙÌቅÀ·¸Í ƒ«¿ØÊÔÔÖÌѬÀã…ÙÖôÅ˃ËF6¾ÌŽÆƒáƒ®´Ûè¬Ѓ’îàkñíÒµÞÉ맙Y¶}#bioåZeIJ`fF-ZQ]tkYc=187+-#1!##,"*7õ /$("#)'õ+ëpbVâhj;`za=F_=`vzŸpt÷~E65HE7Båž¼¹\<óŸ{tgB16[xz~Ýô‡‘ѾÁÃÒ×ÕÅÒ§f d‡‡†Š ÊÕƒŠŠŠÒ¯Ž«Ö‚ ÓÖ…Õ†ÁPzá·E´…† ?KÆж« Ù‚ÔÇÊŽÒÏË×ø¶k½wáù´Êb{xb3,XA\ìíz^p[_\KFIbwh5$#Fc|CGObb_i\S@F9,AVyhîüW&+)*/LDAbVFN=)8;206{r?  $`ÿj*1:d½µ’k%(ð(.al -%)!.o™Œ÷I>{Fo­üc{å鹨ô±dúzqpeNbkà›í©ú^`eu½nsçzóîÞüé°×†š™ÑኂÖÉÊ¥ÆÔ„…À~oôšáššÌ……Ö’š šáÙáµ­ÿ»«ÖŠ·bP© ×Ôá×|s™ÊÐáÌÐÁ€Óš××ɶñ{2NøÖØÿQJOu÷E><&Zã²)óÏôJK)DVZ>IdkZS@*!3m|Y000'"<.DxuKamT5L,GJ9?++'ð69 -  -.'v¡Ð8 $%ðõ õ.-uo&0# SÂÍŸX=dA'iª{!?bíïžšv»ÌƯºzâîeorawÇæߎtlzju~r|úϹœè¼‚ÔÓÔ¥šŠÉ«ÌÅŽŽ‰ŽN±ËÊÕÉÆჵ҄†Á‚‚Žøªœïþ«ýšË{cmÉ„ÕÍÌÝ|ÙϨÇÕÌÌÖ´ÑÌÌʹ¾iüŠÙÙ.(qïúY*FC`sþêV$ï­P:gbjrC5RINBHR*;JC(Jj#)%"0FBfaa^j½b7'% #3!  YOSr' õÝæ9 $"  ,r{9ð#,(*R:D4]mF@ääS "L±t’‚¥†¯rBiu|çF|ËÛÛ¶ótçvg{w¯¥ÏäÒ€¨šÓ¯ÍƦ¾„ ™Éƒâ,Iª¥ÀÉÏ „ŽËƒÆ·ØÙا¿Á·øçu^ÁË´Þk|ØրϪ©Ë’¸ÂÒËá Ç§ƒÙ×æÀПæˇ±yy±ìg6Xegâçåw]à DíbEfíâ{ä]"/hnV`n$;UkTKc+$@CLk]&+:`p9)VjI*ethc7P6!" >T2)a| ;l^8 ' -±©kX1Mó6ð2>-=jQz¦¸v++"sÙ ÷ûÜsVMH÷vèÖÞ¹¦zëãfcyxw»©¨Ê»ú›ÂæÞžÝÔñ~y×ÆÕºíA |ÆÃÉ™šÙ†Ò™ ƒ „ÙᎩݨ Á|ºÛ¬ÀØñïÁÉ¿€ÇÀ¸þ´Ø ƒ‘᧩ÿmvãâ{ïqÇüþ}FKiUhw^?8 J:opOdsptY7J][))5]akéV1Poú¶lX+0PcQGEõlm*!7Nipí­Ö¾ÿ»b|ó-  K) #, \,õ$õëc!#õOů»D}»^õ/:008BR"!õq×Àþœh4@Kci& ±ÜNk­Ýêeó¹èÙž·›csycYiv~ßìÒ¾ëéû¦æô~}ãÞÜh]èɾ…Öšµc N®šÔÑÑ ƒØÌÙ̆‚‡Ù…ÒÅ ˆŠŠÅPRáˆÃŽ§ÝÞ·ÑÔ¸»kÞ’Ìˈ…`Hglwv°YF0m\èe3FI\C/>B]lP:CîrOj{k5[t~WGð0Eüçm_2XúšÇÞÞkBe;_UJ/R÷{õ2,cºÝgkài±ÿuzg0V|(!  bf !"!õï·à+}ŸÿA7?5.68y|i/ -kåuû°`')'1&OsZã®ãê¯d<âú­á÷ZbääW:sœÍª§»êó身§¦±ç½éŸô¹ÊÒᆇÕnð(ã»ÒÑÏÕ¥ÅÙáËÇÌ…ÖÒ…‡Å‰†½-HÆ¥»¬¨¦Ü¾šÓùdí±èüŽÓÃìÞ¸ñ›Èp_@fn8c[-"C^dGN40eZ;3DJ7;hpä5&*5\}çU*këÝÈÏôóMB9h:uó~zd_f^4;8!?`Wãüíàÿí}ûÛHq"38"!"&ðõõ3i-'"&i½a|ur¼iCD2/?@DpûíU5woaŽ¬Eú{(su{ºúsßúOC䜜†ètq©»nQ󷎽ûéßÜxÿþãß©àzüúü¼ÐœÒ‘‘íÂ5!`ïÃÆÒÖ’ˆ«ùÁÊ™ÕÒ·¹Éª‘†‚†€¨Éɬ·¾Ãʶàdo¨ªúª¹Þý繺Ý|qh:k^Yiü°cZyÿè~_SV$cc3.&)P`F(4I!)R3ð8B.Xddÿaüt]#;>T0êâxÇØÈpiʯàBfmÃs4+09@8FqÛ÷]è¬kà‹ëz+ +&.#Uÿqh÷ÞŸîô÷hÿþÒ´©ëã÷|Rxµ·Ÿ±üìôèvsw{ïž½~žÓÈ캽fé‘t j븎ÊÅ„ÙÖʃŠŠšÒÅÁ¬¬øÔÃÙ¿«¿¾ù¬¿¬’üA\ËÔÂåglxf~¾ü7)Qcç½èïßúÛª®œü½r7GW@E!>óóx`#*VR%°° aID!|ïÿ{,4vzo-AVå|nCxæ{gènÌžVyóf5/s¦ûÀÂëÉš¸Þi! -(,%$"ð:5**'0Yl%"Ü©7+42?;67{²ý„}9­‚´}W?õ!ùôaz±øïæÓvþú¨ƒÜ~sºÈ^k­œ»úÞ±ü|oiëþú½­¸â¶îþžîü¦›ƒY&fìÜÀÍÌŒ‚Öׂ‰ Š‰ÙáÊ´À·¿À¨Ö¯›æÂÉͨÂôÛ…¨ÀÓüYPSstuÿ:?óadß½åéééôô÷î÷»Ÿz-17"4G(4E8IpZH -aƒ¶?éªÞg¬å+$#ü´oa|oÛÀócèùåqnŸœ®þóëþ°üúºïu|}äŸçìñôœÿ›¦àßýžôëÕ¦êåî°®ÉøæÔ‘¿ʃÊÙ‰‡‡‘䪒ÃÖ¥·µ¬¦­ÃÉ·’’¸ßÅ€ÝáënhF*Fjëeåä½éïüŸíqSWâÛŸÛ~^?F!8à»êäãëàûslv[bÞÿ0cŸ½zè{UIfqW\\$3^D/D;(5>/UŸg$.<*5qå±äóß×Õ†‘µSð !(KN¹÷ãgmZçÊjUêN -Vp<(9.yãb{¦þ6Fk/D<-"6;' !!(.)$.,!;ô5,3@qœûN*íýÃ|Ê©ÞjàÁÉÜsvX\VoÜnvØÒÏÊÈ›¹ï{þžélQäü­œ­s`~ói|éû²å~§ûßêû±ßͱó_éËØ‹Š‚‹‹ §æË‘™ÒÏÇ sÜÌË…ƒÉ`óƒÍÀ¨’¿îs:RUcŸ­²íåþèìêïîVYgs|sI$\ìúçêk'B>KZQDSC++8GRdLQ7AþibãKK>kébjz_X¼Ž×áÓø¶a2L¼wxþšÇucuËê66=090(- $#GR-#y¨p%+33($(õð# '(,)%$%*$üç<2 ð >O%ð$B]&Wãå_'H²g19@TZh]â››s05värzlgYF11EHâÂŃ„Ÿ|aU:N܃ýþ€Ö…æc *;$=Aõ(1'A]L=3#")%+ 0$ð$-(#.7_þú²4))õõõ- AHD=H=PF6?_»àüOgÊÌÓšØýihm3Q-Ḩë÷Óq^& (L}Y:ZZ?<1B#8Na6 &(*-( #!)múúþioâ)åvK& õ()+=:4AIF.*A-/AGtŽÖ¿øéú¾§†„¬çÞØÃÁ´È­xóåd}ÛêqlùÝ~ÇØÐÃÁÛS0rÅý¾šÙˆ‚ÖÆáÌšÓÍوᦿŽÒ™ƒ‚Ï¥Ãëîñ¸oxir÷›ýúâxàï{5$,8Täó{LFkë{ìhpóK;hWhN1.96.T^S;BCJCnCBN@tôíxmcJK½íSó…ËóÐÍèÂͬԃ̺Øne¬…Ùš¼Ý÷­„ …¾QonzCmH295A4E' &/6&.7E\jpqbkãqW<8MFLOaÿ§áÊÆżèû›ÝÀ†‡ÊÆÓ§»éÞpsôû²jvv]¹Â~§¿Ô׸°O4m¦Þ»Ê‡Œ‹Š§Ö‡‚‰‚ˆ‡áѥњˆ‡…šÍ ­bÜ«pç}§Å›ïèâ½ëåP>^tãÝåihzwîp›û~=7Maãå[CF2B<}raJ<>I8(=ji?÷¹H_VWyœlkÒã|†Å[éÖµÍԈƇŸKrjû¼ÅÆ‘¥ñ{hÏšÊÏ™áÙXíà:93RXxy}T_qYwãxn^h\M\V]SFjy궨Ȓ¯¸¬Üê{|é²ÏÇÉЧ»Ûu­wN®»âTv®~ç±vÔ¯¾Ý«²<-ìñúøLJŒ‘¨Ô¡ˆ‚‚Š‡ˆ ÁÏá„„‚ÉÙ¤ ó¸ÒÖ±{›Þéìíïo;6Loã±ûddãz­tqó±ÝêYf~x}x;1`(RUQl4N~G;cI4pn\kN/%2_:>8sV{xUÛÙš¼Ðë¨Ãá…Ö  …Õ§´ëã¸ÕÀá×þWe㙑¿ÒÆWN?!+"+15A."=^PnzI:b]*& %-1.'"'pwEB~›dð&?U|±ÝäxUz]BSQaxq\WUDHjjZZ2?Z>xã÷H%'#/*,$&.$6P4+02,2"7CILqyafpT?7.2.#23M>\÷ÂÂÁÀ›°°ôãfix½»¬©Þþìì½GDéAjíõqäìR_œÂЫÐÝVc­ÐÇÔÙšÍÍÉÇÒ‰ˆ¡ƒ‰‹Œ¡Ù˄¨¨†ˆŒ¦‰É›€¸îóãÜ»øt_mÒÎg[svu7XRq÷ëµpìþtjp@>|ôÞtvZ@?a_àümji7Ic2<ý¸^çW¹©œšÔº›©o_^xóÛ}îÅÓ»ú›bdN±Ü/`µ½{áÞOçÈléÇÇætVEzsoâêiCAXk_B9 J@").$$8K)'",'01629`4'6;cxhSL?&F3#!!'6'RIHX⟬„…Ʀô§ÁÅàZZlzŸ´ºýœýPDrN4VUvmUçüå›z¾¶¼Ž]}®Ã’¥ÖÐÅ¿É Š‰‘Ø‹ŒÎØ„‡ÀÑ׋‹Ñ×ÿþ²çèççããh{{ldå{rrof6?E1)äúçmtÛïuXI5=\nmiwpBí›ãsWC_^M^sj]›â qÝÂÖÒÊz6ŸÌ†¯eûL^õpž§ÜÜÞvtC..6½ê̓ñzüÅìM°Æqkª™‡‰ˆnFyîë~zëT#.BKd,!;$01)%ðM~-$0" .'!-1.2sj:-(&3'õ%:ð>;EOH+>[F;Qÿ¿Éƨ¿’ÍÒ®uXxàÞªÝÝÈoW1uM]üžþuyŸ Ôèz°þy¦§e½¬ÁÀË‘ŽýæÀ¥ÍÂ¥‚ˆ‚Τ‚†‡Ïኅ¤…€Å­Ç·üÿèäàOH2,. 50ML:aYâv<@EÛçíïÛwY}nKrP9TyeelkhH1AKMUTîãaMóåÙ‹ƒ’ÃÐÏʃÒá’ÇÓ_g.õ ðN=F[=QܯϚRþƒ€9&Rvâîluâ}ëÉÙ‰ªX°‡ƒ§l]î3!226Þþ;24#('3H!1-#"#$01.650rk~k*/(#3?GEDZjSG@LMIfë¶Í¿æ´ûô’€ˆÁF8;¦ªy™ûþoiUsݱþ½y›Ô¿þü¹úçäû¼¸Ç‘Ѩ«»¯§»ªÍ„¡¡‹¤‹‰ ¥Ò¥ÀÙ Ž€Ýô¥éulluqfU@AQCKFDJ,;~R_C<ièœä°è`ï²gVUCTsy5H9HhUpTHG5Q{n~„ˆ‡ŠŠš€ÇÔР Ñ†×ŠÍyŸ}äüL/`´Åá ¸ŽÂþŽÉÊ¥Ùâ=h²¬¼ì_®ßÀÓ…†h8s¿Ôìi¤ÈQR`KRW1iK" '5-80/ $"+%##d­Í×Õ¯l\èï­´´åìÏÒÃÜœàtüz簾В™ƒ¿Ð¬ý¼œžµ¯øÑ¡„†ƒÊÖÖÆÒÏ’¸›ûž¦ìk[_T[uwwxliaW^UcpD/ð-EP"0oûûvvgr°ilíþQXk{czä`9X\WW!ãܺ̌ґ‰…ÙÙ…‘ ÇÙ ‡ƒ¾Æ×Öš¡ÒTè‚áÐf»zÃÃÅ·À„ÉÖy CkZþüàúÒ†wœ®{akb½rg±}HB_=)UfE,5,* 8+-'0"!ðQl@??)_nfä^  õ&R[@cW@9D2+99D8KclÜÏöܺñ®ûÝý¯´ô­\l­šÆÖÉA-wqåþÇÑÃ’ïrâ¹n¬µ¿¥ÔÔÇý¯ù±èﲟíéšÔÂÑÔÖÓŽÇÁŽÃ­îìú°éíûÝ­¼î°ëú­ïocvl7$g16"?jé±åå±¹êXvugA.4mOF`?6wcl{`Ý…ŠÀ>¦†‚¡‰ƒÅƒƒ™ÃÒ‘ÉØ…ÐÒñjýÙÃœÂïE¾zsÉØÆáËšÁôq䀴¯Ðƒ„‘ÁÒo{íéy[8Oqn½yJ@pW5SJ*+#&2-@K3*&)&[¶X,8›hp"L]: #;7:~`_qQ4)7&-aàéï´Ö¦çåŸÝ±ßã÷þ›ÈÜ»Ýè›þÝÊÖn63k{ê¹ÀÊÖÇžsê¶÷󒯨ÉÆÍɾñêÿûîêퟒÓÒØÓÔ™¯¾¿Æžè÷°ÞôÈ«ºôüüråžäoÝ¿æ­ÿç{með0(I7e²®Ÿ¹»ó@h]H.Þrj_97Frs@giÞÿÓƒ‘Ũ…¡Ôu¿ˆ×ÕÜ„áÙÇ„‚ÕŽ±mƇ\Wæ™ôohþиù¿Ö »«‚©þ¾°µ‚µrñ’|lžlVAE*_æÜsbcRG8#1</6? $6/E`>Bàœ¦yãZ 2+/ 7W.HgX0%%*E4C\híü¶ÖžéëÜ·©ïãøûܶ›¶¹wg{~tœ×ñ±âK`ÿ÷uå¯ù¼xMóÃ}VÛÃÅÐÔÉÉÏ¥«ùŽºŸôÛþúô­´Á‡‰ÌÌ™À¾Ýú±©«€Ã¨ïllàí{ú²t/°ûã}dìùhNO">MZ°Ê´¾ÈóTVW:ôwUIKAqã6Tݬ Ì…ÙÙƒ‘‰Œ…©ƒákâ¾áÙƒƒ¬ØÙƒšþdñ¨Tå­ïÁghª¾Ü®Ûè¬Ø¹ûß`18fwpsÂÜá„mw„·x[KfL(kà[wrP*%9=+*6(+&7G1+-'[{íý²púú`pd_@4? - '8<&.1-$=LA8vôÏÁûžßþ›ú`j½êþºüÿüåbàßp禹êâíôÞ÷ýûw¦é^oÛ¦w|ëï濾¿ÌÌô©¾º²ÜŸÈñ¬ ƒ …ÊÍÊ׭ﮧÉÖ…±OZj}ë{ô²ã~;iljàvy.ngJ!QîjG°«ª‘kWPC]E=-]kcWh®ÙËš†ƒ„‘‘‚áϠ׶ûç¥ô¨ÀùÃņ‘‰§{¨ƒË‘™ŸÙ›So›¶Æ¼üžÊ²ÇjQè^ojúš€Ž±››óºÕë_s}MðZŸÿà÷~7.$Rv.5E8N89+",+N÷aR°uê}­îÿâÛ};[5!Dc)6/$!6>SK\ÞɜߺþŸíèqlûûŸ©ëxîÜä^fý~îÜrhí¨žmíÍüwž°k­éùÁ«Å€€µ¦·ÏšÝ÷´Èûí÷¦ñ¦øÀ™„‡Ùá؃†¬¹ÆÉÖ´¾›]ó½pov»ë½øÛ?$+jœG:joeaxîP7èñšÇ|DJuWS/:Büuemq© …Ì‘ƒ‘ˆ‚Ëùcuªâ¦ªï¬›Ñ¿¨ÒÒҎتûºÅ„‰Óqqkôûž¹ÉøÙËsq߅ᥡ¸o胦àbúÙ¥¹Žøebâc3tiD«B#/]ft10R<,/B>nœÈ½Tvr²î›ÿÝ:2?,(Rå,)/(&.)9WUY°ýݯ¼°÷åè½zžœª¦÷Ý{il~±óvfcy®§óz›¦ÁÈìà´ÝÛ¥‡‘ÌØÌÆ·Ž¸æ›­ýÞíãÿ›¼ñ·ÀË¡ˆÖƒ†Ù…Á’’ÂÀ½åœüݲ°ûqÜéfÝžO24Q½|>I]äWKè±`d­·årIUao½B@wiþçùÙ„‘ „†‡Ù±¶²Ûœú¥Ã ‹ÊƆƒÂèúiàídZlóûjNï¶ø¹ÞßßíãÈÇÌÙÙŠƒtÖ±÷í½Ø¥Å„Ͽŵ||Ÿi=dO>ÿëI%0.œ±''@9,C7LÛê仺çUÜàuqïãwf!*%"2GH, .(1$ -01H漮ïìÿëz±üå©ÔŽ¿¾îcnsÝeuh9p~ÿÇÈàô‡Çâéî÷®Ñ¥À’€€ÅÇ«ý››±¯²ê½ÿÝùŽÂ…‹¡ƒÖ ƒÖÏÓ¦¹Ûªœí§œïຽé~~êàn!`9 Ypq`bnênXuzëpfNftNXx3pÓ¾…‰‚†‚ƦÞ̓‰Ì¸øÑ‘ˆˆˆ«ùƒ†§é¥üâýÜp`ïÇ°·Ù±·É¸ù»Y]쥃í×Çkhçn×¥¥ŽÂŽ…‚…¤¾gôbijnikUÝ8%¹x21C4,C)AmYUúÃ/heckWhfh|f+'($+F/-' --(#:à®ýæœôüôŸ÷|±µóÿÉÞú§·žpï®~þaBsnvØÊqøÁçpsçªÀÊ’°­ÂñœÛ²Ÿñ­üíþ²ºýš‹‹‘šËÙÕÓӥǾýø­µÈüýü¼yþ›xm}rpï°`Jp5,9]~geIlr0^âa]yx<,DP8W½Ò†ˆ†‚Ïzì|ç¨ÀÙ‡™Ê„ ƒ‡Õ ÀŽƒ¥×¥€…Ðá†Ø‘Á®È¯š‚„’‡|s}ðV»r.nWe­Z܃ÛÁ¿æ¦þ{­g7;[tyv¥‡å04,'12,-CS1sÛùœþûîàè鲸œ¹ª½lܹîúãäxW3\{åý…ÆÝÛù÷ûï¹½¼ÀÕÇžôÜÝô±¦°Ý÷ìë÷ž¾Æ‘‰ÙÌááÙÖÍÁ¾ÏɲíæÅÀ·î¹y|éçêsP8]­gÁë<Epj½yizxc[shäK15@=,|œ’„†ÙÂǯk €ØÐÆÕ‰‰‚‡Æš„‘‘Š‡É‡ƒ€„‘ƒÓØÆi²oýËá’Á½Dü¼Nõ*>&%žµíÛï{ªÔÍÂÆ€ºå&W¹ämVB`{pXuž¦ùç!)+/)/ki2Mn3:9(:'7wóe÷©Ÿû©ßxoVEFäºyzí|Q%).(9=Xïœà~èžúñ÷žúï}äûd\[e]_Zçm6eêù®ÀœåÉ¡‚ˆ‘Ñ«Ž¾¨ÃºÝ²¹ôûéì±Ýœ¹œ®§Ø‹¡Ì„„á×ïæÍÆ­¦Å¨Ü°|±~çþåûÿjbklqüy`C-Om²èm}½mPKcL573;.6÷†„ ¥Ùƨ  þÀ¥„‡ˆ‘†á¶Ó‚ב†×ÇÔÙÙ‰†ÖÓÐ¥™ŸLÿÙÂâlãA[猡]*<8]n1:pdwÿþ’Áñ¨ùâ;k}fT>?]÷›t>LH|ªâ10-;'QsD-]t2;58F-3bré­x²Ãç\txovvgóg\nã›óMKE:Ykí¸ýÈú±ùÀ¶¹ÿÞ¯±}îÿA.;$Dó²Éä4&xø¼©žÛéj⠥ÈŒÑЙÌØ…šÝúìlypãž´ž¶»‚¤Œ„‚ …¥Â’ÍÅÍÝúô½ìíîÞä|ßÿéûâ÷÷ztgçó;RºN'=VuëäãwL_zL#<8!)óþ»Ñ ‡Š‘áøÒÇÇ×Ò‘Š ÓÔá‘ÿ¼ÍÒ…‘ ÍÓÓЬ¨×…ËÊjNâœhˆ•åR:UàA*2Nð6¦âjà9CvãLhpfeþ™ú÷Þid±êE84V,]>2&H\6'4;=Rnhrïvcçýúãóvúàru½ünjäÛ²ussêŸÈ¥’Ʀ}èÝÂœåŸÈžß±²óþC*HDꬰLq¦…¼Ÿñ›~t¼«Á¥ Ç€ Ò¿ÐŽÝÛåmvtû»´«¯ñÂŒ‚†‡†ˆŠÔÑÒÒÃÞ·û÷¸²ÿﱜþ|úÿÿû{aa`PD=,4?k½A6êãqj3-9+,Xh ))?ræ†áÍШùÇÖÔŽÓÒÖ†ƒ Ù‡ šÌšÂ€†…ƒÊÕÖÉÍÔÂÀÇÇŽ’ÉÓ¸Þ‡‡žš™Ý½såЭ.>,-(묰kA4Kibj}›ÈçpÛ¬Ÿpîä?=uG%C2*'01.1=Amçcmq`Yxïü°½Ý·ÿz~{~o[}÷ߪñ¦ùÖýüô¦ä[yžººÜñ¦ûû»žÝ^D\lóúfp½î¾Û÷¦ÿQ|¦¸Á’µÁ¾ýÒ€Ážï›àó{}¼®ô¨«ý‘Œ‚‚ˆ‡¡ŠØÍÂÇÁßœýÈîÿ|œœÿì{ïüujwwjê?,4:nßJ59féf$4RH,)-G0ê‚Ô¯¿§ÕÐÐÅÅÔÔ؆Ԫñ¸¿™Ì†„ÌÓÕÒ’´©ÞÆÏŽ¶´Ã¥ÊúôryŸñxEn½°E*0'93#JÁÿT"SO7P@L`0.Hasóïæ²í†ÇéN.T0=+*34,*20(5@mè|epxkyvç²äwacY:èôý¼ôß°¬™ëüêéxXNì§Ë…þ|²ÿ`°ã7\~wªåYnku°ÛìZ觴¯€€¿ÃŽ¹¬¬ÞªûßâëtóÁ´®´Üþ™ˆš‚‘‰„ÒÁ­È´®È’ªª«©îÿôÿ}ï°ëuk}ݽmT]ð.ówT&b±y  0 "(?GªËŽÁÏÓÉÆÒÔÉÔÕÒÆ×ÏÍÙÕÉÆÒ‘×ÓÖÔ™ÀŽŽ€ÔØÑÉÐÆ’ÃÒñGâü»Š·FKvWzx:5$-/FTB~âe[fmT]ü¹°oVer:Pw>$ãË×¹V5/'@C0152& <.H8?iàî\k²ÝèêúozhVZ^²±ß½¹øÞ¸ÌDZâhpholVUyÝǾ¼Û÷÷q)9i|¹±èyåàéÀ©ûražÜ¹ª¥Ï¿Ÿ±ª²ÜºŸèåÀ¬øº¹ÇšÔˆËØ‚¥ÆŽ’©Þ©´ºçÿø©±­üú÷íœþâäofzìvâû~2wÜg=­ž;GnIC(ëǬåMóó?çiFOWÿ¶™…Ë¥ÆÇÅÐÏÒÓˇ×ÑáÌÔƒËÓÌÑ× ûRfü½¼¿bß‘…è%g{ookû¡•Óä²y7ÿD*äºüã»ÿêô§üÈä>3/,)%5-1,()%õ 3!&RUJA\ú1,=%"LWëÝÿîèêÝœÛþü~hçxBu±ŸäyÿøµrHSyüÿ½XHû´ÛŸúl!qZkvÿÛÈ®ý¯¯»»§Â¦ýæÓŽÍÇ™áÖÆÐÐø®¦²›Þ»ß®ž­º~â럨žì°}ú¬Þ±x{ão½ßïàëäuÝéî}oèü~àplîºßyq6&qlcîþâT3#('~^qŸª‚¡‡ ×ØÑÇÏ™üäíq‘áÔÐ{b®}:¹çh6õõõ(jŽƒÞâ‘ÇÉÅŠ“¸x蟈ö΢¢‡¯À[Uä^/vR#>bÝݺŽîbG)$/=C/-*,53.7GF*:C/+5qA =3DWD}­Ýxpè~½ÔÈ{ózÜë[Keiiê­±›rQFßéwê÷pvéïÝžëD:UUYyÿ±»ÈÈ·¸¼º¯ÐŽÀÁ¿¿Í̈Ù˙ԭ»ýíÛôªœ´œ©ÿú÷盾ޞ±ã±žþåç÷íç¹èWäóã¦mg|wrsb~êbh~ìú´b%3LNpȪkTãçh)#%&;D?5<1o챉‡ÐÕÍÂǶvêxr¸æº…Խ͢ýʞîP4yíju枀ƒÍ¬†…ÅúÔ’¨“•¡¤¢©vœN=+>@EV?'5P{믱@W34"1440/79"qT!%7DEL;&2#(0:jD&;<[F9zœÜc4`wjíÉuOãèqp@7LN|þì»elwºètxpVMlïïÿvYagMD[½üúÞ®¼æ¯È®’ťŬ¬™¡‹Ù ‡¥§ºþ´ºïⰺȪµÃ´î÷­ûßµ»ú±éžßßãéí~ßycxãäwYkzlMe}âkJ_{²Œ¹ï_(60"|î)]Ûó,õõDRL!.5Ü‹ ƒ™Ç’®bn|hqípsÍ¥ÍËÈîy±¾‡‹ˆø©¨Æ´¹ÿÞ„™É„ ®¤Œœ‚Ú•“‡y-?75-=G@lT*03Hä§ú,W>8! '3-.8BdÛ^ð/26@=1EA0H 7c)KDGS%mÜæªêkXl»ª]qjKW>6FFI]þ»a8uô÷âbZpnåÜçvKLzc=3MxîŸïº´¬ñ¦ÁÏÊÅ€ʄ¡šÈ©©½Þ¦Ûëì÷ߺ«ÜîŸ÷úœæ›îÛ鹺çmäÿqåÛw\épuhlhk[nulnfeo›„ÙÿU/ #&I€¦ûe6TCð=4@> $íÝ° ƒÓÇr/?coQUâêÈé±ô²±‘̾ŽËÉÏ¥èsãҨÉ‘«Ûí†×¯‹ö¢Àt6-AWZLHHIYO<9/@{ž÷?D9;* (.,5=GnSC%0<-$>4"LI6Q"8W"4GG5!}íí ûF^,Iüâhu{s:<_75ûßYEéèvW~©¼±zmsv[a\M\Zs䟭¶ø«æ»ÃÏÃŽ™šÔ‚¤Œá¨ŽÅŸì»Ÿôž±üìÝ»¦±ß÷œýã»’ÜûÞ²°}yì°èhìüD½óuiyãl[lsmpvtej}±ùp\843+úÀôâzvþâ}t3*:* 0秄¨±Q /'(,;K{|ýŠÚ•Êíо¿¥Åïj~t÷ÃÓÙÙü篂΢•‚Ìq-@JPWHKB.4GE1,APvœm1J7%$%-=CEi<= IC-) 3?$'.N\9 4- Zçè]e®®åq}6VwóüÝïKAoD9âëzKFqwViãûªé23g~ãNbpm]ìÿôȧýø·ùÂÇÁÉ„ƒ…¤¤†Ì™á ñÝÆôïÛ²ÞçÿÜ­ýæ±¹Ÿb߬ž¶Þ¹ôlì»ãzåíísq~tåwÿubw}ä~phEhþßl~waK*ð²À°¹ãäÛñúc<,) Z­ï·›^+5.3/&YgYÙÊ¢ˆz™‘×Æ’ºÞ¿¶©­ƒËÑØÓÞŠ”Úö•ŠÌº_=?@1+X]7+ð.Q:Je¼§Üg½#'-=!_3,=daE!(#í¥šÐɎʈŒŒ«§Œ¬­ëlÊ¡“Ì¡—×ëœXR²ˆ†Ì½|µƒ¶ûÔ |!!M_';R67D$73>i6$IG,62+;H;>CP-1-'+%ì浄ÈûïÞñ«¸ôÛŸ±t=âV>40,EJUaRZpq¹]Ràót}wëä]gwã°ß›ß¨§€¿»Â‘ŠÔÒጊΡÊÏÆý´æ¸Ã϶ºÇÕíthèœß¨®­çwž§¼©å²{ÛâåôâvpŸŸt9Gfã^|Rê­²ìmzŸ°ãkŸôíhܪcHXB.-õ#QcQ1y©bð#A53C0AV4"`¹ÃÇÒÉ…‰Õpd™ÙÂçxtᤂÀ»‘€NÞØÅWž¿úÛ’ý¾ƒëRHp{7OJUA=-&ILI?:Qio|qdqë’ì|npíxw{pt빟°î¦Ê’À´¥„ÑŽÉ؈ˆ‡¤†Ìš¯¿ÀùÀ©¶ñÞéýspž¦¾Ô¾¼ž°ÞýâÐxwú²íí±íéãuääP:vYq~`w°÷½qk{si~¦žŸê«²Dbd(&-7- ( EO~i,!%%ð 9@$5<29*K·¼€¯™ˆƒ€Âá‹ËÖÖ›tèÔáظÙÊߧæ]E^ÝÉ‘„´þ÷çŸ{¬Ò¸Õ€éF5J>7B/=Idï÷v-õ,!8M6xV@4*(L@í¦Þùïû±Ü~|åâì¹ÞþÛÞêN@VOdVTyêék{ªq|Ujyyztyêå~Ÿ°ì²¸ÓÔ×ÑÅ©»‚ÍÅÓá…Ì¡ƒÙ ÆÁ¸€¸ø·¦²®ÃÈ|åꮀžúªœëÜåï€Èz`ïºé|°åhzœ²EMNMûhJjóìûx[rAÝôrhfâPvp)ð(.)/.55.')0'02!3!õõ õ0/-:$5m~iw›²¦Ù†‚¡„ˆÑrq®á”šÏÙœksU,rÒɈÕ»x^S*g‘„é~ø„Ê€ô[X%7jV)"ð'' $õ$"õFPŒ‹ˆúq«øvœ‡‹Óø„à_­Ù‡¢rYlz°½~ô¡ÎùkzÝņ¿¨ÀŸV;J=2k÷í½? 2IIQW.õ %'1*$E5)!(&.80J<(õ&. BHD*)  I݈•ŠÂ‰‹Ò­×Â÷úèæ¬ÿ~fI+C.1CEHEJ>3@M3^dAXhGELJtMs²­þZ;zsiG-6MA ->¶ì "0E2TûlDAM}ä|mXäÞ²mYE2;30DMMqj[Z<,*4NbmhYQLGWíªFméQ4EN/0ã¾ÌŽºÜ°ï{÷áÕªœïûøù±¼€¦Þæ°éݨ«±uU}ôÞ½þ›åüôüîìÈV4dB]ÜVE0#,89)HS1IzïîS)3kµÂ_D3"&#*()#=8(*#'8720HHB<,)$yª´B (%-?< t¼€ƒáˆÎšâÁû~gþ_29-ALITN7/>8 *+R93Q^TKLgóÝôzxaNäàè{;;aOW’¦n('$?H(Cçuhp<'Xè|mêî½y|_43/=20Tbyp??>>BTehaTNKGDçµÛNiYKI^N/`ž©žÇø°àE&Sâ›ÜþíäÛ¶´ññøß©¯¸Ÿ÷þåÞp.FsëܲûúíìÜÆžßê~KH'$:=7'(@L5 (<5'O3HXlàco~!õ #(",)+,/91)&;75+#,=T/,-%('&õa½žD %$%0,"+zºá”¤‡îéšÝU`{îÀ»10GELLBI^G%SqïtB?ABPsû|@~½úèi|íóìI\›W$SZ8’¼tïH+AG=*Kx±úG,@Wnlóär|Ý÷h='*29QNZljWPXNT\cbSJWf_mû¦mriFMsT2Qççv÷©ÞºÞv -h¦÷þÝî춧»´°¶ñçúÛèM>~®|wÈ»´±tóq¾¥ójºž,.5)("*?dW#]kzâ^=@GHMYêfq|å÷óü1 CicXlxmkobhfywdSO}fzã{oàïo>^\9*K~sdX÷칫»~6(㮶¸œîœ›ëßݯœãíÊÿàžüóm>CNmêyÜÛÈ­i.nº«µß½0110. yú1,oâûã|o*.Sy*  $%%53*+8?@443)5*"'";,0/%E=$!*"<5%!#& $!½Úö”ÓÚ¢Øÿ²ïô‘ºnMosRr†Š¡Öþož83PJ+mߪ«éÛŸ½kûq*-pa6ãâ6 êÀ±}ÿs7^ïÿsdbFEYPL4]ïVLNOãTú™ïómc|nB÷ën»Ú¦u_dB8M?;=8)@:&0dèç|rèübKnósOJBADB9içìís8óèã÷À¦yroI9DBDH:58;:H`|wEl½ÿºsyŸó/')Ls~h"jzré÷OZQ;+0çžßÃÏ®Þêù®®Ü|èë²Å·ã½x}`FCX°¨Ã±úŸ¬¡ÎDZ©[*,2A7';W_EcpyçßÌÞ!  - -3G?(1,3<)$0,.051( 1>+&'4& 83õ!-2,#"!+$2JFñ¡Ì†„šÓwC­…‘ˆÒ’­¦«íycMl²ºï¬ã9C®Û:`úÞÝJ1½¦S+4qÞZ0$OY#A°±[9RâíkRwmwþlNWvókg~í½>566:?tçåv`a=A4-6B@D>;xãoìO\ºã~omþë/ð).._ëa$SfuêëljW%)$äȬ™zÍ™×±^üŸ½Ò±ÚÝ}ÿp3qß¹žàÿìŤŒŠž& ð:A(9wþjMîýÙ™»P% - -  'G.,-!&).0/70756E.(()34*'+T@$&#*3$ )% #4^Zu’¢ŠŠáÐÔšÊÍÒÌÁÿW®÷I?\IyÜêâa Vœ±âäìz@2=K4.<;e›è;7;N@'CsãgEjjszà{úþåó½þüyéÜçã=QZ@3:eìüm8D]sa?64-,5-j½|èó-{§ìf_}ÝZ4/,SgN_zãì°çqiPF6îÁ¼ßÿqï¬Ýé®îãþÀ‹ûú½èpk56jþ퟼Ž·ÒÖšÜ  -&&WçP?ããþ™Ãx:@,  96-@C;323.+)6/'15-%/1)-2//4FA8*'))#*)&$ !%<ëîㄒҌʚÙÖù÷à¦í1&}ªãêïQe÷åUjqX0àžêìsSGD:75)*9eúôK1JC;:nå[L^›pEfyÿûéååèúô¦ôçîÿåHE>9C\âèãäëgF[M;@86/Cíÿ~úŸ]îçw\kê~Q1;J12^m|íéx{ú°eTQT0@úúÝžíëÞÿçôû}å÷ÑÔ›þsó÷²lL9dèêø€­þ¬Š©1"db+>\U~·ˆ•÷/8EDCo_# &7::A?:D7ÕÛþìéóþÛêouë»Õüomj{íäZ4.TbªŽ°žÐÃweH<  1_z`[Fâê‘ô#A?2UtdL1:E>6936[^D26.O|RCH130?0%,*.436*%,+"*52-'0+%*$&)$#!-^b~¾Š­¦¯Ÿ²~zã/F:3E¼’͈þ.v»ßîF<61#EèZ;q`;*4F5;TtrP[NYyŸüm<]vwè­­ÿåB((D^lvì÷ŸúíêtjxéåD9197WÛß¹©àãÞ²ìn]bmxçêãtGEs`agÜNuüÛégY^Cð*{Š¸Å²âåàuëÛeûÇÙ±àQ]taMD*$G½Ü{Ü€ÿOsO_íxaVujr½êŸÞšÛx<år0?äUIþÞ}BU*#->43AEGFCHUODnìN7:C1!/+&29..0,&&212(.)$&! ! ,,9iÆ´t|XQólEI^GB:ÌéŸÝo').:A915D:14/:W=Kx>FgS/,Q]66jz|I_JGäéäâ?>î±þÿèè±ìYhóVtÝÜîäy|qZT|çYIMJ=oÝ›ž¸êeé›üäd`hm}~çèfNjW7LüqMOzüüóoiK79+®ØÐæçèrZêÓ»]oí‹ÎàëâéçW:7<8n²øí_UmCJÝƪôÜûçw}›²ä¶Á·Ûzq2èôN&àáýP6CP2=OIGJ94Opnvo~M44.0.(&16618,&*/-0-*3.(&"!! *("+/PúbLq*0âã6,K@BE#rკíñ«l_ä>=9JPDU?*(9YP=Gî²b@:7ERCbäWB9LFlàRT½ãSV{}ââçóÛådc[íÈ­ÿçm[ga=P_RMNKHÿµ®ýž÷é¹Ý÷âXdjwzà°ÛoaY+Dnâ_6Ky}rc[U\R õsË¿û}ï²­èó¹ìbh쨯¶ãt4/10Tþµ~)n~hvê­scï»ÈèjßÜ[}î·¤ïv_ãxK"5®Øë÷fm}|M7?8DI736GrÛŸ[/UJE2=0%/<772*+-/%11*0(#&&! #*"//5bV\ël']G2?H8;•‰ávó¡×žÿ9FEBI8ad5%5:>.?¹îbK94984`vN_dqóóX79^äêL0VyåítóæßR7hï­íçé_<>6.'69<5,<úæùº²þ²íœ¨››äpfkx{úºãP<3A`ä],Yå½XN½zdp½¸žçmfa_J@L=,! $(-1KF47zæú|éŸlzžô»¹ë|w}îô±|2=@KdTF8Gîíg[NQN+1?Û›jmxy®çXßÊ¿sR~­gfÈìgfA \ No newline at end of file diff --git a/lib/glut-3.7.6/progs/demos/smooth/Imakefile b/lib/glut-3.7.6/progs/demos/smooth/Imakefile deleted file mode 100644 index f600ec5cd0fe97a48d12536d08caa0a798bcc119..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/Imakefile +++ /dev/null @@ -1,23 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../../Glut.cf" - -TARGETS = smooth - -SRCS = glm.c gltx.c smooth.c trackball.c gltb.c - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(smooth,glm.o gltx.o smooth.o gltb.o trackball.o) - -LinkFile(trackball.c, ../../examples/trackball.c) -LinkFile(trackball.h, ../../examples/trackball.h) - -trackball.o: trackball.h -gltb.o: trackball.h gltb.h - -/* some old imake configs do setup "make depend" dependencies on linked files */ -depend:: trackball.c trackball.h - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/smooth/data/dolphins.mtl b/lib/glut-3.7.6/progs/demos/smooth/data/dolphins.mtl deleted file mode 100644 index dffbc4c3e11b4b6e4732d7e2fa224174d17f61d0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/data/dolphins.mtl +++ /dev/null @@ -1,25 +0,0 @@ -# -# dolphins.mtl -# - -newmtl dolph01 -Ka 0.4000 0.4000 0.4000 -Kd 0.0000 0.2000 1.0000 -Ks 0.5000 0.5000 0.5000 -illum 2 -Ns 60.0000 - -newmtl dolph02 -Ka 0.4000 0.4000 0.4000 -Kd 0.0000 0.5000 1.0000 -Ks 0.7000 0.7000 0.7000 -illum 2 -Ns 65.8900 - -newmtl dolph03 -Ka 0.4000 0.4000 0.4000 -Kd 0.0000 0.7000 0.8000 -Ks 0.7000 0.7000 0.7000 -illum 2 -Ns 60.0000 - diff --git a/lib/glut-3.7.6/progs/demos/smooth/data/dolphins.obj b/lib/glut-3.7.6/progs/demos/smooth/data/dolphins.obj deleted file mode 100644 index 4486db54a8f6d459b1a75cc641c77f4b058f58cf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/data/dolphins.obj +++ /dev/null @@ -1,2562 +0,0 @@ -# -# dolphins.obj -# - -mtllib dolphins.mtl - -v 45.72071 330.25390 8.39974 -v 40.21416 331.03907 0.00044 -v 80.09274 366.99179 0.00049 -v 87.96514 365.67971 6.30254 -v 114.20649 383.52171 0.00051 -v 117.62613 380.38111 3.67843 -v 146.74990 385.88759 0.00051 -v 148.58885 381.42449 1.31257 -v 165.37711 380.89767 0.00051 -v 147.27679 320.28422 10.23868 -v 146.74990 338.91150 0.00045 -v 157.77332 313.19702 0.00042 -v 106.33408 328.41489 12.06732 -v 121.82061 350.46181 6.30252 -v 132.84405 362.52868 3.67840 -v -131.15011 228.43952 0.00030 -v -136.65667 220.30884 7.87270 -v -141.90492 216.37264 0.00029 -v -113.03945 244.71122 0.00032 -v -116.97564 238.15086 14.43306 -v -91.51947 259.67088 5.50690 -v -86.53981 264.65052 0.00035 -v -51.37228 289.05293 0.00038 -v -52.42606 282.76113 18.89621 -v -90.47601 257.56326 14.43308 -v -7.28888 310.31460 0.00041 -v -8.07406 304.79768 23.09072 -v 42.56968 314.77767 25.45659 -v 102.66650 313.19699 27.55383 -v 160.65574 300.86148 20.99348 -v 229.15186 263.60703 12.06724 -v 230.46392 267.80155 0.00036 -v 272.45006 231.59057 0.00031 -v 264.57769 222.13744 15.21821 -v 291.07729 207.18816 0.00027 -v 280.83906 194.32577 12.33576 -v 303.93970 182.51719 0.00024 -v 294.22832 170.70854 8.13091 -v 310.23142 161.78238 0.00021 -v 304.45626 154.17856 9.96985 -v 306.29522 142.36997 0.00019 -v 302.10075 146.30616 7.61432 -v -93.10016 251.00291 23.09065 -v -76.30155 249.69085 33.85580 -v -45.86573 268.32843 30.96308 -v -7.54716 285.38528 33.06035 -v 42.56968 296.40868 36.99656 -v 94.79409 295.09661 35.16793 -v 157.24643 286.95562 29.39275 -v 225.73222 256.51979 18.89618 -v -88.36845 236.31187 37.79199 -v -98.86499 237.88221 32.80200 -v -106.73739 230.53671 28.33889 -v -123.53598 212.95297 21.52026 -v -138.22700 198.26196 10.49680 -v -86.01293 226.07361 36.99647 -v -97.29464 230.53671 32.01682 -v -140.06595 190.38956 14.43299 -v -132.97872 180.41989 15.48677 -v -160.53216 156.53408 7.61433 -v -165.78043 158.89993 7.61433 -v -170.77039 154.96376 4.19469 -v -172.08247 156.53409 0.00021 -v -147.68009 189.07750 0.00025 -v -144.78734 191.44335 5.24852 -v -107.53290 216.37259 31.48990 -v -99.91876 224.50328 31.74819 -v -106.47911 213.47982 31.74818 -v -120.38496 208.75849 27.29541 -v -116.97564 203.25193 26.76851 -v -129.04254 176.48371 16.79883 -v -153.97182 155.49061 8.65779 -v -110.15703 191.95989 26.76849 -v -100.97256 207.70466 35.68438 -v -77.35534 199.57399 35.95298 -v -107.53290 186.19505 28.33884 -v -95.72428 213.22155 35.95300 -v -93.61672 222.66433 35.68440 -v -79.45258 211.64086 39.88919 -v -127.47219 171.23543 18.89606 -v -150.03562 152.59789 11.28192 -v -103.32808 163.88990 17.58399 -v -89.68052 194.32575 32.80194 -v -66.59019 173.59094 23.09055 -v -121.43874 163.09442 10.49676 -v -126.94529 167.55751 17.84227 -v -37.19782 195.63778 44.61055 -v -35.36918 185.39953 36.21124 -v -74.98949 212.69467 41.72816 -v -34.05711 226.86912 50.91264 -v -69.74123 231.06362 41.45957 -v -68.68743 244.44260 37.79200 -v -37.46643 251.27152 44.08373 -v -4.92302 261.24114 47.76166 -v 7.41247 235.25806 52.74129 -v 47.29105 263.60700 49.60063 -v 52.53932 244.18429 52.74130 -v 96.89134 268.85527 47.76167 -v 98.98858 244.44257 50.64406 -v 154.62229 262.55319 45.39581 -v 154.09541 234.74152 46.18095 -v 215.76257 236.83879 34.11406 -v 205.26603 213.74846 29.39266 -v 252.24218 211.12432 24.14439 -v 237.02426 190.64784 22.56368 -v 270.61114 186.19508 14.43299 -v 259.58771 174.90302 14.69125 -v 282.94662 169.13821 10.23848 -v 271.92318 162.05098 11.02365 -v 297.63764 150.24233 18.89604 -v 2.94937 201.41293 42.51332 -v 54.12000 209.01676 38.83541 -v 93.21341 211.12429 39.36230 -v 143.07198 208.50021 32.01679 -v 194.51120 194.58403 17.84231 -v 229.15186 173.85958 9.96988 -v 250.66149 165.20201 7.34573 -v 272.45006 147.61822 5.77536 -v 282.15113 139.21894 12.33568 -v -8.07406 169.65467 76.10014 -v -8.85923 166.77226 73.73428 -v 14.75798 181.20500 66.65739 -v 39.16037 165.46018 79.77805 -v 24.46935 162.57778 83.44563 -v 3.47627 165.20192 82.66047 -v 50.44208 195.37956 0.00026 -v 5.57351 185.14130 0.00025 -v 140.71645 197.20818 0.00026 -v 197.92052 190.13131 0.00025 -v 246.99390 162.57788 0.00022 -v 272.18148 145.52101 0.00019 -v -61.86882 170.96685 0.00023 -v -25.91609 178.32267 0.00024 -v -95.19739 160.99718 0.00021 -v -118.54599 160.99718 0.00021 -v -144.27079 148.14512 0.00020 -v -147.41148 149.45722 8.13088 -v -163.68318 139.74583 0.00019 -v -161.32765 142.10135 4.72157 -v 309.97315 87.52131 89.47898 -v 294.75522 115.07473 75.57317 -v 308.66107 96.44751 65.34521 -v 307.34903 120.85000 9.96981 -v 301.57384 135.54098 17.05706 -v 305.76831 129.24929 0.00017 -v 312.07040 111.66552 6.03359 -v 308.13420 119.01103 0.00016 -v 295.79866 147.61820 24.92948 -v -168.14628 149.45723 3.93640 -v -168.67317 149.71550 0.00020 -v -166.30732 144.20894 4.99018 -v -168.14628 143.41344 0.00019 -v 24.72763 161.26570 81.87529 -v 3.99283 162.30918 80.82150 -v 156.46125 360.43143 0.00048 -v 168.52814 372.50862 0.00049 -v 95.05237 199.04716 0.00026 -v 226.00085 173.07441 0.00023 -v 282.41971 136.59482 0.00018 -v 292.91627 113.23576 75.57317 -v 287.66799 128.72234 54.05321 -v 290.81902 131.87335 54.05322 -v 310.23142 104.57829 22.30528 -v -89.94912 262.55324 0.00035 -v 87.96514 365.67971 -6.30157 -v 45.72071 330.25390 -8.39886 -v 117.62613 380.38111 -3.67742 -v 148.58885 381.42449 -1.31156 -v 147.27679 320.28422 -10.23783 -v 121.82061 350.46181 -6.30159 -v 106.33408 328.41495 -12.06645 -v 132.84405 362.52868 -3.67744 -v -136.65667 220.30887 -7.87211 -v -116.97564 238.15089 -14.43243 -v -91.51947 259.67088 -5.50621 -v -90.47601 257.56332 -14.43240 -v -52.42606 282.76119 -18.89546 -v -8.07406 304.79774 -23.08992 -v 42.56968 314.77773 -25.45575 -v 102.66650 313.19705 -27.55300 -v 160.65574 300.86154 -20.99268 -v 229.15186 263.60708 -12.06654 -v 264.57769 222.13747 -15.21762 -v 280.83906 194.32580 -12.33524 -v 294.22832 170.70857 -8.13046 -v 304.45626 154.17859 -9.96944 -v 302.10075 146.30619 -7.61393 -v -93.10016 251.00297 -23.08999 -v -76.30155 249.69094 -33.85514 -v -45.86573 268.32849 -30.96237 -v -7.54716 285.38534 -33.05959 -v 42.56968 296.40880 -36.99577 -v 94.79409 295.09673 -35.16715 -v 157.24643 286.95568 -29.39199 -v 225.73222 256.51985 -18.89550 -v -98.86499 237.88230 -32.80137 -v -88.36845 236.31196 -37.79136 -v -106.73739 230.53680 -28.33828 -v -123.53598 212.95303 -21.51969 -v -138.22700 198.26199 -10.49628 -v -97.29464 230.53680 -32.01621 -v -86.01293 226.07370 -36.99587 -v -140.06595 190.38959 -14.43249 -v -165.78043 158.89996 -7.61391 -v -160.53216 156.53411 -7.61392 -v -132.97872 180.41992 -15.48629 -v -144.78734 191.44335 -5.24802 -v -170.77039 154.96376 -4.19428 -v -106.47911 213.47991 -31.74761 -v -99.91876 224.50337 -31.74760 -v -107.53290 216.37268 -31.48933 -v -120.38496 208.75855 -27.29486 -v -116.97564 203.25199 -26.76797 -v -153.97182 155.49064 -8.65737 -v -129.04254 176.48374 -16.79836 -v -110.15703 191.95995 -26.76798 -v -100.97256 207.70475 -35.68383 -v -107.53290 186.19514 -28.33834 -v -77.35534 199.57408 -35.95245 -v -95.72428 213.22164 -35.95243 -v -93.61672 222.66442 -35.68381 -v -79.45258 211.64098 -39.88864 -v -150.03562 152.59792 -11.28151 -v -127.47219 171.23549 -18.89561 -v -89.68052 194.32583 -32.80143 -v -103.32808 163.88996 -17.58355 -v -66.59019 173.59100 -23.09009 -v -126.94529 167.55757 -17.84183 -v -121.43874 163.09445 -10.49632 -v -35.36918 185.39962 -36.21075 -v -37.19782 195.63790 -44.61003 -v -34.05711 226.86927 -50.91204 -v -74.98949 212.69479 -41.72759 -v -69.74123 231.06374 -41.45896 -v -68.68743 244.44269 -37.79135 -v -37.46643 251.27164 -44.08306 -v 7.41247 235.25821 -52.74066 -v -4.92302 261.24126 -47.76097 -v 52.53932 244.18443 -52.74065 -v 47.29105 263.60711 -49.59993 -v 98.98858 244.44272 -50.64341 -v 96.89134 268.85539 -47.76096 -v 154.09541 234.74164 -46.18033 -v 154.62229 262.55330 -45.39511 -v 205.26603 213.74854 -29.39209 -v 215.76257 236.83888 -34.11344 -v 237.02426 190.64790 -22.56317 -v 252.24218 211.12438 -24.14383 -v 259.58771 174.90305 -14.69079 -v 270.61114 186.19511 -14.43249 -v 271.92318 162.05101 -11.02322 -v 282.94662 169.13824 -10.23803 -v 297.63764 150.24239 -18.89564 -v 2.94937 201.41305 -42.51278 -v 54.12000 209.01684 -38.83485 -v 93.21341 211.12441 -39.36174 -v 143.07198 208.50030 -32.01624 -v 194.51120 194.58409 -17.84179 -v 229.15186 173.85961 -9.96941 -v 250.66149 165.20204 -7.34529 -v 272.45006 147.61825 -5.77497 -v 282.15113 139.21897 -12.33531 -v -8.85923 166.77247 -73.73383 -v -8.07406 169.65488 -76.09969 -v 14.75798 181.20518 -66.65691 -v 39.16037 165.46039 -79.77761 -v 3.47627 165.20213 -82.66003 -v 24.46935 162.57799 -83.44520 -v -147.41148 149.45725 -8.13049 -v -161.32765 142.10135 -4.72119 -v 308.66107 96.44769 -65.34496 -v 294.75522 115.07493 -75.57287 -v 309.97315 87.52155 -89.47874 -v 301.57384 135.54104 -17.05669 -v 307.34903 120.85003 -9.96948 -v 312.07040 111.66553 -6.03330 -v 295.79866 147.61826 -24.92908 -v -168.14628 149.45723 -3.93600 -v -166.30732 144.20894 -4.98980 -v 3.99283 162.30939 -80.82107 -v 24.72763 161.26591 -81.87485 -v 290.81902 131.87350 -54.05287 -v 287.66799 128.72249 -54.05287 -v 292.91627 113.23596 -75.57287 -v 310.23142 104.57835 -22.30501 -v -202.71629 4.05145 8.39930 -v -208.22284 4.83661 0.00001 -v -168.34426 40.78934 0.00005 -v -160.47184 39.47725 6.30211 -v -134.23049 57.31926 0.00008 -v -130.81086 54.17865 3.67799 -v -101.68710 59.68516 0.00008 -v -99.84814 55.22205 1.31214 -v -83.05987 54.69522 0.00007 -v -101.16021 -5.91822 10.23825 -v -101.68710 12.70904 0.00002 -v -90.66367 -13.00542 -0.00002 -v -142.10290 2.21245 12.06689 -v -126.61637 24.25935 6.30209 -v -115.59293 36.32624 3.67797 -v -380.28240 -74.08581 -0.00010 -v -386.44332 -81.73260 7.87230 -v -391.99954 -85.22066 -0.00011 -v -360.88654 -59.36971 -0.00008 -v -365.35245 -65.58160 14.43265 -v -338.20167 -46.24349 5.50649 -v -332.82676 -41.69326 -0.00006 -v -295.75926 -20.28685 -0.00003 -v -297.33047 -26.46976 18.89580 -v -337.33633 -48.43026 14.43268 -v -250.06667 -2.74869 -0.00000 -v -251.30594 -8.18160 23.09031 -v -205.86731 -11.42478 25.45616 -v -145.77049 -13.00546 27.55340 -v -87.78126 -25.34096 20.99304 -v -31.09289 -37.63949 12.06684 -v -31.39079 -33.25778 -0.00004 -v 10.99649 -46.55334 -0.00006 -v 10.31595 -58.67256 15.21784 -v 36.43377 -55.44978 -0.00007 -v 37.37618 -71.75347 12.33540 -v 60.69592 -65.00439 -0.00009 -v 62.59307 -80.13814 8.13058 -v 79.92756 -74.19450 -0.00010 -v 82.04545 -83.51736 9.96953 -v 92.79140 -89.36668 -0.00012 -v 86.68838 -90.33798 7.61400 -v -340.49472 -54.75075 23.09025 -v -323.86243 -57.44941 33.85540 -v -291.98778 -41.39616 30.96267 -v -252.38836 -27.57101 33.05993 -v -205.86731 -29.79374 36.99613 -v -153.64291 -31.10582 35.16750 -v -91.19055 -39.24683 29.39232 -v -31.44574 -45.48701 18.89578 -v -336.99578 -69.78319 37.79158 -v -347.32625 -67.34903 32.80159 -v -355.77983 -74.01739 28.33849 -v -373.97680 -90.14968 21.51985 -v -389.83390 -103.57370 10.49640 -v -335.49613 -80.18133 36.99606 -v -346.36956 -74.79933 32.01641 -v -392.31846 -111.26679 14.43259 -v -386.08119 -121.78911 15.48637 -v -415.51796 -143.31122 7.61393 -v -420.55216 -140.51889 7.61394 -v -425.85102 -144.02835 4.19429 -v -427.02854 -142.35474 -0.00019 -v -400.01512 -111.94383 -0.00015 -v -396.93633 -109.82565 5.24812 -v -357.74559 -88.06700 31.48950 -v -349.48429 -80.59475 31.74779 -v -356.93491 -91.03709 31.74778 -v -371.18396 -94.59070 27.29501 -v -368.24235 -100.36067 26.76811 -v -382.48444 -126.03772 16.79843 -v -409.06647 -144.89436 8.65739 -v -362.38220 -112.17857 26.76809 -v -351.92552 -97.24841 35.68397 -v -329.06270 -107.30685 35.95257 -v -360.24451 -118.14089 28.33843 -v -346.23843 -92.18507 35.95259 -v -343.35616 -82.94926 35.68399 -v -330.15350 -95.10776 39.88879 -v -381.35409 -131.39801 18.89566 -v -405.38335 -148.10310 11.28152 -v -357.90116 -140.71764 17.58358 -v -341.78013 -111.51647 32.80153 -v -320.48610 -134.09211 23.09014 -v -376.01548 -140.01067 10.49635 -v -381.13356 -135.10692 17.84187 -v -289.36905 -114.55493 44.61014 -v -288.39448 -124.90944 36.21083 -v -325.61845 -94.42715 41.72775 -v -283.65293 -83.69093 50.91223 -v -318.86712 -76.55590 41.45916 -v -316.70907 -63.31014 37.79159 -v -285.02977 -59.09002 44.08332 -v -251.77258 -51.84949 47.76125 -v -241.63106 -78.76479 52.74087 -v -201.14596 -62.59543 49.60020 -v -195.89767 -82.01815 52.74087 -v -151.54566 -57.34718 47.76124 -v -149.44842 -81.75988 50.64363 -v -93.81470 -63.64924 45.39538 -v -94.34158 -91.46092 46.18052 -v -33.03974 -67.44740 34.11366 -v -34.37822 -92.76628 29.39225 -v 6.69442 -74.46204 24.14401 -v 4.52149 -99.81760 22.56329 -v 34.88636 -84.45007 14.43263 -v 33.12358 -100.13976 14.69089 -v 55.54843 -89.20217 10.23814 -v 51.90705 -101.96728 11.02330 -v 80.40079 -91.35308 18.89572 -v -248.88150 -112.12412 42.51290 -v -194.31700 -117.18569 38.83497 -v -155.22359 -115.07814 39.36186 -v -105.36502 -117.70225 32.01636 -v -37.87756 -114.48038 17.84190 -v 6.23831 -118.28458 9.96949 -v 31.53467 -113.31566 7.34536 -v 62.82552 -112.05474 5.77501 -v 77.33899 -110.58293 12.33535 -v -262.49689 -128.20391 76.09975 -v -263.51810 -130.05745 73.73388 -v -238.78682 -121.85273 66.65698 -v -215.77203 -133.54595 79.77765 -v -230.65132 -134.63925 83.44524 -v -251.35499 -131.76502 82.66008 -v -197.99490 -130.82288 -0.00017 -v -247.61380 -128.55718 -0.00017 -v -107.72054 -128.99427 -0.00017 -v -32.68514 -117.44504 -0.00016 -v 29.86724 -117.64511 -0.00016 -v 64.17918 -113.73506 -0.00015 -v -315.99826 -137.09818 -0.00018 -v -279.55988 -132.74477 -0.00018 -v -350.03796 -144.27370 -0.00019 -v -373.30633 -142.34023 -0.00019 -v -400.00701 -153.01794 -0.00020 -v -403.02831 -151.45029 8.13048 -v -420.04830 -159.78089 -0.00021 -v -417.50577 -157.62852 4.72117 -v 145.17573 -114.86977 89.47871 -v 107.78645 -115.14030 75.57286 -v 135.51375 -112.07570 65.34494 -v 111.95905 -100.84556 9.96951 -v 95.16476 -97.36089 17.05675 -v 103.48855 -97.52264 -0.00013 -v 123.55499 -101.41847 6.03331 -v 114.15189 -101.14615 -0.00013 -v 81.14748 -94.47977 24.92915 -v -423.69190 -149.73328 3.93600 -v -424.19559 -149.43224 -0.00020 -v -422.29384 -155.11581 4.98978 -v -424.19240 -155.75629 -0.00021 -v -230.50253 -135.51663 81.87489 -v -251.07977 -133.69650 80.82110 -v -91.97574 34.22897 0.00005 -v -79.90885 46.30619 0.00006 -v -153.38463 -127.15527 -0.00017 -v 3.59861 -120.57324 -0.00016 -v 79.65890 -112.11184 -0.00015 -v 107.98807 -117.79920 75.57286 -v 90.36504 -112.97680 54.05289 -v 90.20912 -108.43933 54.05290 -v 128.88226 -106.66257 22.30500 -v -336.39801 -43.50104 -0.00006 -v -160.47184 39.47726 -6.30200 -v -202.71629 4.05147 -8.39929 -v -130.81086 54.17866 -3.67785 -v -99.84814 55.22205 -1.31199 -v -101.16021 -5.91820 -10.23826 -v -126.61637 24.25937 -6.30202 -v -142.10290 2.21249 -12.06688 -v -115.59293 36.32625 -3.67787 -v -386.44332 -81.73259 -7.87251 -v -365.35245 -65.58155 -14.43283 -v -338.20167 -46.24347 -5.50661 -v -337.33633 -48.43023 -14.43281 -v -297.33047 -26.46971 -18.89587 -v -251.30594 -8.18154 -23.09033 -v -205.86731 -11.42471 -25.45619 -v -145.77049 -13.00539 -27.55343 -v -87.78126 -25.34090 -20.99311 -v -31.09289 -37.63946 -12.06694 -v 10.31595 -58.67252 -15.21799 -v 37.37618 -71.75344 -12.33559 -v 62.59307 -80.13812 -8.13079 -v 82.04545 -83.51733 -9.96976 -v 86.68838 -90.33796 -7.61424 -v -340.49472 -54.75069 -23.09039 -v -323.86243 -57.44932 -33.85555 -v -291.98778 -41.39608 -30.96278 -v -252.38836 -27.57092 -33.06000 -v -205.86731 -29.79364 -36.99621 -v -153.64291 -31.10573 -35.16758 -v -91.19055 -39.24676 -29.39243 -v -31.44574 -45.48696 -18.89590 -v -347.32625 -67.34894 -32.80177 -v -336.99578 -69.78308 -37.79177 -v -355.77983 -74.01732 -28.33869 -v -373.97680 -90.14962 -21.52009 -v -389.83390 -103.57367 -10.49668 -v -346.36956 -74.79924 -32.01661 -v -335.49613 -80.18123 -36.99628 -v -392.31846 -111.26675 -14.43289 -v -420.55216 -140.51886 -7.61431 -v -415.51796 -143.31119 -7.61431 -v -386.08119 -121.78906 -15.48669 -v -396.93633 -109.82563 -5.24842 -v -425.85102 -144.02835 -4.19467 -v -356.93491 -91.03701 -31.74802 -v -349.48429 -80.59466 -31.74800 -v -357.74559 -88.06691 -31.48973 -v -371.18396 -94.59063 -27.29526 -v -368.24235 -100.36059 -26.76837 -v -409.06647 -144.89433 -8.65777 -v -382.48444 -126.03769 -16.79876 -v -362.38220 -112.17850 -26.76839 -v -351.92552 -97.24832 -35.68423 -v -360.24451 -118.14082 -28.33875 -v -329.06270 -107.30676 -35.95285 -v -346.23843 -92.18498 -35.95284 -v -343.35616 -82.94917 -35.68421 -v -330.15350 -95.10765 -39.88904 -v -405.38335 -148.10307 -11.28191 -v -381.35409 -131.39795 -18.89601 -v -341.78013 -111.51638 -32.80183 -v -357.90116 -140.71758 -17.58396 -v -320.48610 -134.09205 -23.09050 -v -381.13356 -135.10686 -17.84223 -v -376.01548 -140.01064 -10.49672 -v -288.39448 -124.90935 -36.21116 -v -289.36905 -114.55481 -44.61044 -v -283.65293 -83.69079 -50.91245 -v -325.61845 -94.42704 -41.72800 -v -318.86712 -76.55580 -41.45936 -v -316.70907 -63.31003 -37.79176 -v -285.02977 -59.08990 -44.08347 -v -241.63106 -78.76465 -52.74108 -v -251.77258 -51.84936 -47.76138 -v -195.89767 -82.01802 -52.74108 -v -201.14596 -62.59530 -49.60036 -v -149.44842 -81.75974 -50.64384 -v -151.54566 -57.34705 -47.76139 -v -94.34158 -91.46080 -46.18076 -v -93.81470 -63.64912 -45.39555 -v -34.37822 -92.76621 -29.39250 -v -33.03974 -67.44731 -34.11384 -v 4.52149 -99.81754 -22.56356 -v 6.69442 -74.46198 -24.14421 -v 33.12358 -100.13971 -14.69116 -v 34.88636 -84.45003 -14.43285 -v 51.90705 -101.96725 -11.02357 -v 55.54843 -89.20214 -10.23838 -v 80.40079 -91.35304 -18.89596 -v -248.88150 -112.12400 -42.51320 -v -194.31700 -117.18559 -38.83529 -v -155.22359 -115.07803 -39.36217 -v -105.36502 -117.70216 -32.01667 -v -37.87756 -114.48033 -17.84220 -v 6.23831 -118.28455 -9.96980 -v 31.53467 -113.31564 -7.34566 -v 62.82552 -112.05472 -5.77531 -v 77.33899 -110.58290 -12.33565 -v -263.51810 -130.05725 -73.73422 -v -262.49689 -128.20370 -76.10009 -v -238.78682 -121.85255 -66.65731 -v -215.77203 -133.54574 -79.77801 -v -251.35499 -131.76481 -82.66042 -v -230.65132 -134.63904 -83.44559 -v -403.02831 -151.45026 -8.13089 -v -417.50577 -157.62852 -4.72159 -v 135.51375 -112.07552 -65.34524 -v 107.78645 -115.14011 -75.57318 -v 145.17573 -114.86953 -89.47901 -v 95.16476 -97.36085 -17.05700 -v 111.95905 -100.84553 -9.96978 -v 123.55499 -101.41846 -6.03358 -v 81.14748 -94.47971 -24.92940 -v -423.69190 -149.73328 -3.93640 -v -422.29384 -155.11581 -4.99019 -v -251.07977 -133.69629 -80.82146 -v -230.50253 -135.51642 -81.87525 -v 90.20912 -108.43918 -54.05319 -v 90.36504 -112.97665 -54.05319 -v 107.98807 -117.79901 -75.57318 -v 128.88226 -106.66251 -22.30529 -v 93.99940 -251.01325 8.39896 -v 88.49286 -250.22811 -0.00033 -v 128.37143 -214.27538 -0.00028 -v 136.24384 -215.58747 6.30177 -v 162.48520 -197.74546 -0.00026 -v 165.90483 -200.88606 3.67765 -v 195.02860 -195.37956 -0.00026 -v 196.86754 -199.84266 1.31180 -v 213.65581 -200.36949 -0.00027 -v 195.55548 -260.98293 10.23791 -v 195.02860 -242.35567 -0.00032 -v 206.05202 -268.07013 -0.00036 -v 154.61278 -252.85226 12.06655 -v 170.09930 -230.80537 6.30175 -v 181.12274 -218.73847 3.67763 -v -81.06457 -300.66425 -0.00040 -v -88.78847 -306.67168 7.87200 -v -95.01029 -308.72506 -0.00041 -v -59.30696 -290.47790 -0.00039 -v -64.86207 -295.63197 14.43235 -v -35.26598 -281.90029 5.50618 -v -29.40112 -278.35038 -0.00037 -v 8.45369 -262.68244 -0.00035 -v 6.19893 -268.61122 18.89548 -v -34.83292 -284.20424 14.43236 -v 52.39871 -249.89958 -0.00033 -v 50.84696 -255.21874 23.08998 -v 90.84838 -266.48948 25.45582 -v 150.94519 -268.07016 27.55306 -v 208.93443 -280.40567 20.99271 -v 258.30457 -283.44262 12.06651 -v 257.31510 -279.18223 -0.00037 -v 294.19634 -281.39371 -0.00037 -v 298.14175 -292.82492 15.21753 -v 317.46763 -279.18425 -0.00037 -v 326.18260 -292.81196 12.33511 -v 340.31105 -274.64417 -0.00036 -v 350.63425 -285.51456 8.13031 -v 359.25335 -269.80183 -0.00036 -v 366.83893 -275.15960 9.96928 -v 378.09575 -271.42754 -0.00036 -v 374.67644 -276.66983 7.61376 -v -38.96789 -289.85876 23.08994 -v -23.49540 -295.37284 33.85508 -v 9.33527 -284.09457 30.96235 -v 48.31438 -274.45754 33.05960 -v 90.84838 -284.85847 36.99579 -v 143.07278 -286.17054 35.16716 -v 205.52513 -294.31152 29.39198 -v 259.39310 -291.21229 18.89545 -v -38.31227 -305.27192 37.79127 -v -47.87081 -300.96841 32.80129 -v -57.36535 -305.85158 28.33818 -v -78.57035 -317.73791 21.51955 -v -97.36509 -327.05557 10.49611 -v -38.71889 -315.76946 36.99575 -v -48.36608 -308.46316 32.01610 -v -101.73644 -333.89530 14.43230 -v -98.06335 -345.64888 15.48607 -v -133.70489 -358.57388 7.61365 -v -138.05124 -354.43836 7.61365 -v -144.47005 -356.23577 4.19401 -v -145.17748 -354.28199 -0.00047 -v -109.58333 -332.58528 -0.00044 -v -105.97645 -331.33015 5.24783 -v -62.15228 -319.20549 31.48919 -v -52.53142 -313.54681 31.74748 -v -61.96433 -322.27916 31.74747 -v -76.81173 -322.69251 27.29471 -v -75.17189 -328.97359 26.76780 -v -95.44338 -350.65499 16.79813 -v -127.52579 -361.92381 8.65710 -v -71.87407 -341.79482 26.76779 -v -58.25461 -329.38397 35.68367 -v -37.14569 -343.61330 35.95226 -v -70.99153 -348.08293 28.33813 -v -51.58934 -325.54856 35.95228 -v -46.96583 -317.03731 35.68368 -v -36.08085 -331.41154 39.88848 -v -95.58270 -356.13570 18.89536 -v -124.60607 -366.03838 11.28123 -v -73.45205 -370.64976 17.58328 -v -50.85280 -345.38397 32.80123 -v -32.99331 -371.50303 23.08983 -v -92.14051 -365.79731 10.49605 -v -96.25251 -359.79119 17.84157 -v 2.43018 -356.97418 44.60982 -v 2.05272 -367.36822 36.21050 -v -31.41700 -331.53304 41.72743 -v 12.21421 -327.09467 50.91191 -v -21.73452 -315.03382 41.45885 -v -17.52141 -302.29929 37.79127 -v 13.85211 -302.50973 44.08299 -v 46.92536 -298.70307 47.76092 -v 54.81669 -326.33492 52.74054 -v 95.56974 -317.66015 49.59986 -v 100.81802 -337.08286 52.74053 -v 145.17002 -312.41187 47.76090 -v 147.26728 -336.82460 50.64329 -v 202.90099 -318.71393 45.39504 -v 202.37410 -346.52561 46.18018 -v 261.93878 -313.06806 34.11333 -v 265.35967 -338.19771 29.39193 -v 300.93679 -308.74965 24.14370 -v 308.59086 -333.04185 22.56298 -v 330.49938 -304.99727 14.43234 -v 336.97408 -319.41187 14.69060 -v 350.53504 -297.09294 10.23786 -v 355.05557 -309.63799 11.02302 -v 370.95693 -281.99202 18.89546 -v 44.70988 -359.00652 42.51257 -v 102.39870 -372.25041 38.83464 -v 141.49211 -370.14285 39.36153 -v 191.35067 -372.76694 32.01602 -v 265.51765 -360.24252 17.84157 -v 317.93487 -349.25774 9.96918 -v 342.35424 -331.59325 7.34507 -v 370.84159 -310.07600 5.77475 -v 381.84530 -298.11019 12.33510 -v 28.89168 -361.85995 76.09944 -v 27.61571 -363.59668 73.73357 -v 54.47518 -357.65219 66.65667 -v 78.15071 -370.73794 79.77734 -v 62.17428 -370.98047 83.44492 -v 40.34184 -366.48944 82.65977 -v 98.72077 -385.88759 -0.00051 -v 44.60053 -375.48837 -0.00050 -v 188.99515 -384.05898 -0.00051 -v 272.35380 -362.03855 -0.00048 -v 342.95446 -336.27528 -0.00045 -v 373.10812 -310.36770 -0.00041 -v -28.78862 -375.23565 -0.00050 -v 10.33007 -376.28388 -0.00050 -v -65.97063 -375.81852 -0.00050 -v -89.87661 -368.71034 -0.00049 -v -120.35207 -372.25127 -0.00049 -v -123.07309 -369.91337 8.13019 -v -143.09712 -373.04825 -0.00049 -v -139.83206 -371.73662 4.72088 -v 427.02854 -240.19788 89.47854 -v 407.08911 -275.63509 75.57265 -v 420.25936 -248.23506 65.34476 -v 398.57063 -263.36142 9.96930 -v 385.39526 -274.98233 17.05651 -v 390.89349 -268.38532 -0.00036 -v 405.53746 -253.59112 6.03311 -v 400.08771 -261.65968 -0.00035 -v 373.62060 -283.69701 24.92890 -v -143.93197 -362.34054 3.93572 -v -144.36097 -361.90197 -0.00048 -v -144.06516 -367.91119 4.98950 -v -146.21551 -367.95524 -0.00049 -v 62.27292 -371.86587 81.87458 -v 40.45544 -368.43809 80.82079 -v 204.73994 -220.83575 -0.00029 -v 216.80684 -208.75852 -0.00028 -v 143.33108 -382.21997 -0.00051 -v 315.91809 -352.56323 -0.00047 -v 384.73922 -297.38295 -0.00039 -v 409.30533 -277.05216 75.57265 -v 393.46552 -289.30265 54.05266 -v 390.02597 -286.38589 54.05266 -v 412.52294 -251.64774 22.30481 -v -33.08011 -279.51699 -0.00037 -v 136.24384 -215.58744 -6.30234 -v 93.99940 -251.01325 -8.39963 -v 165.90483 -200.88606 -3.67819 -v 196.86754 -199.84266 -1.31233 -v 195.55548 -260.98293 -10.23860 -v 170.09930 -230.80534 -6.30236 -v 154.61278 -252.85220 -12.06722 -v 181.12274 -218.73847 -3.67821 -v -88.78847 -306.67168 -7.87281 -v -64.86207 -295.63192 -14.43313 -v -35.26598 -281.90029 -5.50692 -v -34.83292 -284.20419 -14.43312 -v 6.19893 -268.61116 -18.89619 -v 50.84696 -255.21868 -23.09066 -v 90.84838 -266.48942 -25.45653 -v 150.94519 -268.07010 -27.55377 -v 208.93443 -280.40561 -20.99345 -v 258.30457 -283.44256 -12.06726 -v 298.14175 -292.82486 -15.21830 -v 326.18260 -292.81190 -12.33589 -v 350.63425 -285.51456 -8.13106 -v 366.83893 -275.15960 -9.97001 -v 374.67644 -276.66983 -7.61449 -v -38.96789 -289.85870 -23.09070 -v -23.49540 -295.37272 -33.85586 -v 9.33527 -284.09451 -30.96310 -v 48.31438 -274.45748 -33.06033 -v 90.84838 -284.85835 -36.99654 -v 143.07278 -286.17042 -35.16792 -v 205.52513 -294.31146 -29.39277 -v 259.39310 -291.21223 -18.89622 -v -47.87081 -300.96835 -32.80208 -v -38.31227 -305.27180 -37.79208 -v -57.36535 -305.85152 -28.33899 -v -78.57035 -317.73785 -21.52039 -v -97.36509 -327.05557 -10.49697 -v -48.36608 -308.46310 -32.01692 -v -38.71889 -315.76934 -36.99658 -v -101.73644 -333.89524 -14.43318 -v -138.05124 -354.43836 -7.61459 -v -133.70489 -358.57388 -7.61460 -v -98.06335 -345.64883 -15.48699 -v -105.97645 -331.33015 -5.24871 -v -144.47005 -356.23577 -4.19496 -v -61.96433 -322.27910 -31.74832 -v -52.53142 -313.54675 -31.74831 -v -62.15228 -319.20543 -31.49004 -v -76.81173 -322.69245 -27.29556 -v -75.17189 -328.97353 -26.76868 -v -127.52579 -361.92381 -8.65806 -v -95.44338 -350.65493 -16.79906 -v -71.87407 -341.79476 -26.76869 -v -58.25461 -329.38385 -35.68454 -v -70.99153 -348.08287 -28.33905 -v -37.14569 -343.61318 -35.95317 -v -51.58934 -325.54844 -35.95315 -v -46.96583 -317.03719 -35.68452 -v -36.08085 -331.41142 -39.88935 -v -124.60607 -366.03832 -11.28220 -v -95.58270 -356.13564 -18.89631 -v -50.85280 -345.38391 -32.80214 -v -73.45205 -370.64970 -17.58426 -v -32.99331 -371.50297 -23.09081 -v -96.25251 -359.79113 -17.84253 -v -92.14051 -365.79731 -10.49702 -v 2.05272 -367.36810 -36.21148 -v 2.43018 -356.97407 -44.61076 -v 12.21421 -327.09455 -50.91278 -v -31.41700 -331.53293 -41.72831 -v -21.73452 -315.03370 -41.45968 -v -17.52141 -302.29917 -37.79208 -v 13.85211 -302.50961 -44.08380 -v 54.81669 -326.33480 -52.74141 -v 46.92536 -298.70296 -47.76171 -v 100.81802 -337.08274 -52.74142 -v 95.56974 -317.66003 -49.60070 -v 147.26728 -336.82448 -50.64418 -v 145.17002 -312.41176 -47.76173 -v 202.37410 -346.52549 -46.18110 -v 202.90099 -318.71381 -45.39589 -v 265.35967 -338.19765 -29.39282 -v 261.93878 -313.06794 -34.11417 -v 308.59086 -333.04179 -22.56387 -v 300.93679 -308.74959 -24.14452 -v 336.97408 -319.41181 -14.69145 -v 330.49938 -304.99721 -14.43315 -v 355.05557 -309.63799 -11.02384 -v 350.53504 -297.09294 -10.23865 -v 370.95693 -281.99196 -18.89621 -v 44.70988 -359.00640 -42.51353 -v 102.39870 -372.25029 -38.83563 -v 141.49211 -370.14273 -39.36251 -v 191.35067 -372.76688 -32.01701 -v 265.51765 -360.24246 -17.84253 -v 317.93487 -349.25774 -9.97011 -v 342.35424 -331.59325 -7.34595 -v 370.84159 -310.07600 -5.77557 -v 381.84530 -298.11013 -12.33589 -v 27.61571 -363.59650 -73.73454 -v 28.89168 -361.85977 -76.10039 -v 54.47518 -357.65201 -66.65763 -v 78.15071 -370.73770 -79.77832 -v 40.34184 -366.48920 -82.66073 -v 62.17428 -370.98023 -83.44591 -v -123.07309 -369.91337 -8.13118 -v -139.83206 -371.73662 -4.72187 -v 420.25936 -248.23488 -65.34541 -v 407.08911 -275.63491 -75.57338 -v 427.02854 -240.19764 -89.47918 -v 385.39526 -274.98227 -17.05724 -v 398.57063 -263.36142 -9.96999 -v 405.53746 -253.59112 -6.03378 -v 373.62060 -283.69695 -24.92966 -v -143.93197 -362.34054 -3.93668 -v -144.06516 -367.91119 -4.99048 -v 40.45544 -368.43786 -80.82177 -v 62.27292 -371.86563 -81.87556 -v 390.02597 -286.38577 -54.05342 -v 393.46552 -289.30253 -54.05343 -v 409.30533 -277.05199 -75.57338 -v 412.52294 -251.64768 -22.30548 - -g dolph01 -usemtl dolph01 -f 3 2 1 -f 1 4 3 -f 5 3 4 -f 4 6 5 -f 7 5 6 -f 6 8 7 -f 9 7 8 -f 12 11 10 -f 4 1 13 -f 13 14 4 -f 6 4 14 -f 14 15 6 -f 8 6 15 -f 18 17 16 -f 19 16 17 -f 17 20 19 -f 23 22 21 -f 21 24 23 -f 24 21 25 -f 26 23 24 -f 24 27 26 -f 2 26 27 -f 27 1 2 -f 28 1 27 -f 13 1 28 -f 28 29 13 -f 10 13 29 -f 29 30 10 -f 12 10 30 -f 12 30 31 -f 31 32 12 -f 33 32 31 -f 31 34 33 -f 35 33 34 -f 34 36 35 -f 37 35 36 -f 36 38 37 -f 39 37 38 -f 38 40 39 -f 41 39 40 -f 40 42 41 -f 25 20 43 -f 25 43 44 -f 25 44 45 -f 45 24 25 -f 27 24 45 -f 45 46 27 -f 28 27 46 -f 46 47 28 -f 29 28 47 -f 47 48 29 -f 30 29 48 -f 48 49 30 -f 31 30 49 -f 49 50 31 -f 34 31 50 -f 52 51 44 -f 44 43 52 -f 53 52 43 -f 43 20 53 -f 54 53 20 -f 20 17 54 -f 55 54 17 -f 57 56 51 -f 51 52 57 -f 53 57 52 -f 55 58 54 -f 61 60 59 -f 59 58 61 -f 64 63 62 -f 62 65 64 -f 65 55 17 -f 17 18 65 -f 64 65 18 -f 67 53 66 -f 66 68 67 -f 53 54 69 -f 69 66 53 -f 68 66 69 -f 69 70 68 -f 70 69 58 -f 58 59 70 -f 71 59 60 -f 60 72 71 -f 70 59 71 -f 71 73 70 -f 74 68 70 -f 75 74 73 -f 73 76 75 -f 58 55 65 -f 67 68 77 -f 78 67 77 -f 56 78 77 -f 79 56 77 -f 74 79 77 -f 68 74 77 -f 72 81 80 -f 80 71 72 -f 71 80 76 -f 76 73 71 -f 83 76 82 -f 82 75 83 -f 75 82 84 -f 85 82 76 -f 76 86 85 -f 87 75 84 -f 84 88 87 -f 89 75 87 -f 87 90 89 -f 89 79 75 -f 56 79 89 -f 89 91 56 -f 44 51 56 -f 56 92 44 -f 92 56 91 -f 93 91 89 -f 89 90 93 -f 94 93 90 -f 90 95 94 -f 96 94 95 -f 95 97 96 -f 98 96 97 -f 97 99 98 -f 100 98 99 -f 99 101 100 -f 102 100 101 -f 101 103 102 -f 104 102 103 -f 103 105 104 -f 106 104 105 -f 105 107 106 -f 108 106 107 -f 107 109 108 -f 92 91 93 -f 45 92 93 -f 44 92 45 -f 46 45 93 -f 93 94 46 -f 47 46 94 -f 94 96 47 -f 48 47 96 -f 96 98 48 -f 49 48 98 -f 98 100 49 -f 50 49 100 -f 100 102 50 -f 34 50 102 -f 102 104 34 -f 36 34 104 -f 104 106 36 -f 38 36 106 -f 106 108 38 -f 40 38 108 -f 108 110 40 -f 42 40 110 -f 95 90 87 -f 87 111 95 -f 97 95 111 -f 111 112 97 -f 99 97 112 -f 112 113 99 -f 101 99 113 -f 113 114 101 -f 103 101 114 -f 114 115 103 -f 105 103 115 -f 115 116 105 -f 107 105 116 -f 116 117 107 -f 109 107 117 -f 117 118 109 -f 119 109 118 -f 120 87 88 -f 88 121 120 -f 111 87 120 -f 120 122 111 -f 123 122 120 -f 120 124 123 -f 124 120 125 -f 126 112 111 -f 111 127 126 -f 115 114 128 -f 128 129 115 -f 118 117 130 -f 130 131 118 -f 88 84 132 -f 132 133 88 -f 111 88 133 -f 133 127 111 -f 84 82 134 -f 134 132 84 -f 82 85 135 -f 135 134 82 -f 85 137 136 -f 136 135 85 -f 85 86 137 -f 139 138 136 -f 136 137 139 -f 142 141 140 -f 42 144 143 -f 143 145 42 -f 145 143 146 -f 146 147 145 -f 148 110 108 -f 108 109 148 -f 119 148 109 -f 61 58 65 -f 65 62 61 -f 150 149 62 -f 62 63 150 -f 61 62 149 -f 149 60 61 -f 76 80 86 -f 81 137 86 -f 86 80 81 -f 137 81 139 -f 151 139 81 -f 81 72 151 -f 149 151 72 -f 72 60 149 -f 138 139 151 -f 151 152 138 -f 149 150 152 -f 152 151 149 -f 57 53 67 -f 78 56 57 -f 75 79 74 -f 58 69 54 -f 67 78 57 -f 154 153 124 -f 124 125 154 -f 125 120 121 -f 121 154 125 -f 123 124 153 -f 122 121 88 -f 88 111 122 -f 123 153 154 -f 154 122 123 -f 122 154 121 -f 11 14 13 -f 13 10 11 -f 11 155 15 -f 15 14 11 -f 155 156 9 -f 9 15 155 -f 15 9 8 -f 114 113 157 -f 157 128 114 -f 157 113 112 -f 112 126 157 -f 130 117 116 -f 116 158 130 -f 129 158 116 -f 116 115 129 -f 118 131 159 -f 159 119 118 -f 161 160 141 -f 141 162 161 -f 162 148 119 -f 119 161 162 -f 140 141 160 -f 42 145 41 -f 119 159 147 -f 147 146 163 -f 163 119 147 -f 119 163 161 -f 163 142 160 -f 160 161 163 -f 160 142 140 -f 141 142 163 -f 163 162 141 -f 163 146 143 -f 143 162 163 -f 162 143 144 -f 162 144 148 -f 144 42 110 -f 110 148 144 -f 22 164 21 -f 20 21 164 -f 164 19 20 -f 20 25 21 -f 2 3 165 -f 165 166 2 -f 3 5 167 -f 167 165 3 -f 5 7 168 -f 168 167 5 -f 168 7 9 -f 169 11 12 -f 166 165 170 -f 170 171 166 -f 165 167 172 -f 172 170 165 -f 172 167 168 -f 16 173 18 -f 16 19 174 -f 174 173 16 -f 175 22 23 -f 23 176 175 -f 176 23 177 -f 23 26 178 -f 178 177 23 -f 26 2 166 -f 166 178 26 -f 178 166 179 -f 166 171 180 -f 180 179 166 -f 171 169 181 -f 181 180 171 -f 181 169 12 -f 181 12 32 -f 32 182 181 -f 32 33 183 -f 183 182 32 -f 33 35 184 -f 184 183 33 -f 35 37 185 -f 185 184 35 -f 37 39 186 -f 186 185 37 -f 39 41 187 -f 187 186 39 -f 188 174 176 -f 189 188 176 -f 189 176 177 -f 177 190 189 -f 177 178 191 -f 191 190 177 -f 178 179 192 -f 192 191 178 -f 179 180 193 -f 193 192 179 -f 180 181 194 -f 194 193 180 -f 181 182 195 -f 195 194 181 -f 195 182 183 -f 197 196 188 -f 188 189 197 -f 196 198 174 -f 174 188 196 -f 174 198 199 -f 199 173 174 -f 173 199 200 -f 202 201 196 -f 196 197 202 -f 196 201 198 -f 199 203 200 -f 205 204 203 -f 203 206 205 -f 63 64 207 -f 207 208 63 -f 200 207 18 -f 18 173 200 -f 18 207 64 -f 198 210 209 -f 209 211 198 -f 199 198 211 -f 211 212 199 -f 211 209 213 -f 213 212 211 -f 212 213 206 -f 206 203 212 -f 206 215 214 -f 214 205 206 -f 206 213 216 -f 216 215 206 -f 213 209 217 -f 217 219 218 -f 218 216 217 -f 207 200 203 -f 220 209 210 -f 220 210 221 -f 220 221 202 -f 220 202 222 -f 220 222 217 -f 220 217 209 -f 223 214 215 -f 215 224 223 -f 224 215 216 -f 216 218 224 -f 226 218 225 -f 225 227 226 -f 227 225 219 -f 226 229 228 -f 228 218 226 -f 219 231 230 -f 230 227 219 -f 219 233 232 -f 232 231 219 -f 219 222 233 -f 222 202 234 -f 234 233 222 -f 202 197 189 -f 189 234 202 -f 234 189 235 -f 234 236 232 -f 232 233 234 -f 236 238 237 -f 237 232 236 -f 238 240 239 -f 239 237 238 -f 240 242 241 -f 241 239 240 -f 242 244 243 -f 243 241 242 -f 244 246 245 -f 245 243 244 -f 246 248 247 -f 247 245 246 -f 248 250 249 -f 249 247 248 -f 250 252 251 -f 251 249 250 -f 236 234 235 -f 236 235 190 -f 190 235 189 -f 190 191 238 -f 238 236 190 -f 191 192 240 -f 240 238 191 -f 192 193 242 -f 242 240 192 -f 193 194 244 -f 244 242 193 -f 194 195 246 -f 246 244 194 -f 195 183 248 -f 248 246 195 -f 183 184 250 -f 250 248 183 -f 184 185 252 -f 252 250 184 -f 185 186 253 -f 253 252 185 -f 253 186 187 -f 232 237 254 -f 254 231 232 -f 237 239 255 -f 255 254 237 -f 239 241 256 -f 256 255 239 -f 241 243 257 -f 257 256 241 -f 243 245 258 -f 258 257 243 -f 245 247 259 -f 259 258 245 -f 247 249 260 -f 260 259 247 -f 249 251 261 -f 261 260 249 -f 261 251 262 -f 231 264 263 -f 263 230 231 -f 231 254 265 -f 265 264 231 -f 264 265 266 -f 266 267 264 -f 267 266 268 -f 255 126 127 -f 127 254 255 -f 257 258 129 -f 129 128 257 -f 260 261 131 -f 131 130 260 -f 227 230 133 -f 133 132 227 -f 230 254 127 -f 127 133 230 -f 226 227 132 -f 132 134 226 -f 229 226 134 -f 134 135 229 -f 269 229 135 -f 135 136 269 -f 269 228 229 -f 138 270 269 -f 269 136 138 -f 273 272 271 -f 274 187 145 -f 145 275 274 -f 275 145 147 -f 147 276 275 -f 253 277 251 -f 251 252 253 -f 251 277 262 -f 203 204 208 -f 208 207 203 -f 278 150 63 -f 63 208 278 -f 208 204 205 -f 205 278 208 -f 228 224 218 -f 269 223 224 -f 224 228 269 -f 270 223 269 -f 270 279 214 -f 214 223 270 -f 279 278 205 -f 205 214 279 -f 270 138 152 -f 152 279 270 -f 150 278 279 -f 279 152 150 -f 210 198 201 -f 201 202 221 -f 217 222 219 -f 199 212 203 -f 201 221 210 -f 281 280 267 -f 267 268 281 -f 264 267 280 -f 280 263 264 -f 281 268 266 -f 263 265 254 -f 254 230 263 -f 280 281 266 -f 266 263 280 -f 263 266 265 -f 170 11 169 -f 169 171 170 -f 155 11 170 -f 170 172 155 -f 9 156 155 -f 155 168 9 -f 168 155 172 -f 256 257 128 -f 128 157 256 -f 256 157 126 -f 126 255 256 -f 260 130 158 -f 158 259 260 -f 158 129 258 -f 258 259 158 -f 131 261 262 -f 262 159 131 -f 284 283 282 -f 282 272 284 -f 277 282 283 -f 283 262 277 -f 284 272 273 -f 41 145 187 -f 147 159 262 -f 285 276 147 -f 147 283 285 -f 283 147 262 -f 271 285 283 -f 283 284 271 -f 273 271 284 -f 271 272 282 -f 282 285 271 -f 276 285 282 -f 282 275 276 -f 274 275 282 -f 277 274 282 -f 187 274 277 -f 277 253 187 -f 175 164 22 -f 175 174 19 -f 19 164 175 -f 175 176 174 -f 217 216 213 -f 70 73 74 - -g dolph02 -usemtl dolph02 -f 288 287 286 -f 286 289 288 -f 290 288 289 -f 289 291 290 -f 292 290 291 -f 291 293 292 -f 294 292 293 -f 297 296 295 -f 289 286 298 -f 298 299 289 -f 291 289 299 -f 299 300 291 -f 293 291 300 -f 303 302 301 -f 304 301 302 -f 302 305 304 -f 308 307 306 -f 306 309 308 -f 309 306 310 -f 311 308 309 -f 309 312 311 -f 287 311 312 -f 312 286 287 -f 313 286 312 -f 298 286 313 -f 313 314 298 -f 295 298 314 -f 314 315 295 -f 297 295 315 -f 297 315 316 -f 316 317 297 -f 318 317 316 -f 316 319 318 -f 320 318 319 -f 319 321 320 -f 322 320 321 -f 321 323 322 -f 324 322 323 -f 323 325 324 -f 326 324 325 -f 325 327 326 -f 310 305 328 -f 310 328 329 -f 310 329 330 -f 330 309 310 -f 312 309 330 -f 330 331 312 -f 313 312 331 -f 331 332 313 -f 314 313 332 -f 332 333 314 -f 315 314 333 -f 333 334 315 -f 316 315 334 -f 334 335 316 -f 319 316 335 -f 337 336 329 -f 329 328 337 -f 338 337 328 -f 328 305 338 -f 339 338 305 -f 305 302 339 -f 340 339 302 -f 342 341 336 -f 336 337 342 -f 338 342 337 -f 340 343 339 -f 346 345 344 -f 344 343 346 -f 349 348 347 -f 347 350 349 -f 350 340 302 -f 302 303 350 -f 349 350 303 -f 352 338 351 -f 351 353 352 -f 338 339 354 -f 354 351 338 -f 353 351 354 -f 354 355 353 -f 355 354 343 -f 343 344 355 -f 356 344 345 -f 345 357 356 -f 355 344 356 -f 356 358 355 -f 359 353 355 -f 360 359 358 -f 358 361 360 -f 343 340 350 -f 352 353 362 -f 363 352 362 -f 341 363 362 -f 364 341 362 -f 359 364 362 -f 353 359 362 -f 357 366 365 -f 365 356 357 -f 356 365 361 -f 361 358 356 -f 368 361 367 -f 367 360 368 -f 360 367 369 -f 370 367 361 -f 361 371 370 -f 372 360 369 -f 369 373 372 -f 374 360 372 -f 372 375 374 -f 374 364 360 -f 341 364 374 -f 374 376 341 -f 329 336 341 -f 341 377 329 -f 377 341 376 -f 378 376 374 -f 374 375 378 -f 379 378 375 -f 375 380 379 -f 381 379 380 -f 380 382 381 -f 383 381 382 -f 382 384 383 -f 385 383 384 -f 384 386 385 -f 387 385 386 -f 386 388 387 -f 389 387 388 -f 388 390 389 -f 391 389 390 -f 390 392 391 -f 393 391 392 -f 392 394 393 -f 377 376 378 -f 330 377 378 -f 329 377 330 -f 331 330 378 -f 378 379 331 -f 332 331 379 -f 379 381 332 -f 333 332 381 -f 381 383 333 -f 334 333 383 -f 383 385 334 -f 335 334 385 -f 385 387 335 -f 319 335 387 -f 387 389 319 -f 321 319 389 -f 389 391 321 -f 323 321 391 -f 391 393 323 -f 325 323 393 -f 393 395 325 -f 327 325 395 -f 380 375 372 -f 372 396 380 -f 382 380 396 -f 396 397 382 -f 384 382 397 -f 397 398 384 -f 386 384 398 -f 398 399 386 -f 388 386 399 -f 399 400 388 -f 390 388 400 -f 400 401 390 -f 392 390 401 -f 401 402 392 -f 394 392 402 -f 402 403 394 -f 404 394 403 -f 405 372 373 -f 373 406 405 -f 396 372 405 -f 405 407 396 -f 408 407 405 -f 405 409 408 -f 409 405 410 -f 411 397 396 -f 396 412 411 -f 400 399 413 -f 413 414 400 -f 403 402 415 -f 415 416 403 -f 373 369 417 -f 417 418 373 -f 396 373 418 -f 418 412 396 -f 369 367 419 -f 419 417 369 -f 367 370 420 -f 420 419 367 -f 370 422 421 -f 421 420 370 -f 370 371 422 -f 424 423 421 -f 421 422 424 -f 427 426 425 -f 327 429 428 -f 428 430 327 -f 430 428 431 -f 431 432 430 -f 433 395 393 -f 393 394 433 -f 404 433 394 -f 346 343 350 -f 350 347 346 -f 435 434 347 -f 347 348 435 -f 346 347 434 -f 434 345 346 -f 361 365 371 -f 366 422 371 -f 371 365 366 -f 422 366 424 -f 436 424 366 -f 366 357 436 -f 434 436 357 -f 357 345 434 -f 423 424 436 -f 436 437 423 -f 434 435 437 -f 437 436 434 -f 342 338 352 -f 363 341 342 -f 360 364 359 -f 343 354 339 -f 352 363 342 -f 439 438 409 -f 409 410 439 -f 410 405 406 -f 406 439 410 -f 408 409 438 -f 407 406 373 -f 373 396 407 -f 408 438 439 -f 439 407 408 -f 407 439 406 -f 296 299 298 -f 298 295 296 -f 296 440 300 -f 300 299 296 -f 440 441 294 -f 294 300 440 -f 300 294 293 -f 399 398 442 -f 442 413 399 -f 442 398 397 -f 397 411 442 -f 415 402 401 -f 401 443 415 -f 414 443 401 -f 401 400 414 -f 403 416 444 -f 444 404 403 -f 446 445 426 -f 426 447 446 -f 447 433 404 -f 404 446 447 -f 425 426 445 -f 327 430 326 -f 404 444 432 -f 432 431 448 -f 448 404 432 -f 404 448 446 -f 448 427 445 -f 445 446 448 -f 445 427 425 -f 426 427 448 -f 448 447 426 -f 448 431 428 -f 428 447 448 -f 447 428 429 -f 447 429 433 -f 429 327 395 -f 395 433 429 -f 307 449 306 -f 305 306 449 -f 449 304 305 -f 305 310 306 -f 287 288 450 -f 450 451 287 -f 288 290 452 -f 452 450 288 -f 290 292 453 -f 453 452 290 -f 453 292 294 -f 454 296 297 -f 451 450 455 -f 455 456 451 -f 450 452 457 -f 457 455 450 -f 457 452 453 -f 301 458 303 -f 301 304 459 -f 459 458 301 -f 460 307 308 -f 308 461 460 -f 461 308 462 -f 308 311 463 -f 463 462 308 -f 311 287 451 -f 451 463 311 -f 463 451 464 -f 451 456 465 -f 465 464 451 -f 456 454 466 -f 466 465 456 -f 466 454 297 -f 466 297 317 -f 317 467 466 -f 317 318 468 -f 468 467 317 -f 318 320 469 -f 469 468 318 -f 320 322 470 -f 470 469 320 -f 322 324 471 -f 471 470 322 -f 324 326 472 -f 472 471 324 -f 473 459 461 -f 474 473 461 -f 474 461 462 -f 462 475 474 -f 462 463 476 -f 476 475 462 -f 463 464 477 -f 477 476 463 -f 464 465 478 -f 478 477 464 -f 465 466 479 -f 479 478 465 -f 466 467 480 -f 480 479 466 -f 480 467 468 -f 482 481 473 -f 473 474 482 -f 481 483 459 -f 459 473 481 -f 459 483 484 -f 484 458 459 -f 458 484 485 -f 487 486 481 -f 481 482 487 -f 481 486 483 -f 484 488 485 -f 490 489 488 -f 488 491 490 -f 348 349 492 -f 492 493 348 -f 485 492 303 -f 303 458 485 -f 303 492 349 -f 483 495 494 -f 494 496 483 -f 484 483 496 -f 496 497 484 -f 496 494 498 -f 498 497 496 -f 497 498 491 -f 491 488 497 -f 491 500 499 -f 499 490 491 -f 491 498 501 -f 501 500 491 -f 498 494 502 -f 502 504 503 -f 503 501 502 -f 492 485 488 -f 505 494 495 -f 505 495 506 -f 505 506 487 -f 505 487 507 -f 505 507 502 -f 505 502 494 -f 508 499 500 -f 500 509 508 -f 509 500 501 -f 501 503 509 -f 511 503 510 -f 510 512 511 -f 512 510 504 -f 511 514 513 -f 513 503 511 -f 504 516 515 -f 515 512 504 -f 504 518 517 -f 517 516 504 -f 504 507 518 -f 507 487 519 -f 519 518 507 -f 487 482 474 -f 474 519 487 -f 519 474 520 -f 519 521 517 -f 517 518 519 -f 521 523 522 -f 522 517 521 -f 523 525 524 -f 524 522 523 -f 525 527 526 -f 526 524 525 -f 527 529 528 -f 528 526 527 -f 529 531 530 -f 530 528 529 -f 531 533 532 -f 532 530 531 -f 533 535 534 -f 534 532 533 -f 535 537 536 -f 536 534 535 -f 521 519 520 -f 521 520 475 -f 475 520 474 -f 475 476 523 -f 523 521 475 -f 476 477 525 -f 525 523 476 -f 477 478 527 -f 527 525 477 -f 478 479 529 -f 529 527 478 -f 479 480 531 -f 531 529 479 -f 480 468 533 -f 533 531 480 -f 468 469 535 -f 535 533 468 -f 469 470 537 -f 537 535 469 -f 470 471 538 -f 538 537 470 -f 538 471 472 -f 517 522 539 -f 539 516 517 -f 522 524 540 -f 540 539 522 -f 524 526 541 -f 541 540 524 -f 526 528 542 -f 542 541 526 -f 528 530 543 -f 543 542 528 -f 530 532 544 -f 544 543 530 -f 532 534 545 -f 545 544 532 -f 534 536 546 -f 546 545 534 -f 546 536 547 -f 516 549 548 -f 548 515 516 -f 516 539 550 -f 550 549 516 -f 549 550 551 -f 551 552 549 -f 552 551 553 -f 540 411 412 -f 412 539 540 -f 542 543 414 -f 414 413 542 -f 545 546 416 -f 416 415 545 -f 512 515 418 -f 418 417 512 -f 515 539 412 -f 412 418 515 -f 511 512 417 -f 417 419 511 -f 514 511 419 -f 419 420 514 -f 554 514 420 -f 420 421 554 -f 554 513 514 -f 423 555 554 -f 554 421 423 -f 558 557 556 -f 559 472 430 -f 430 560 559 -f 560 430 432 -f 432 561 560 -f 538 562 536 -f 536 537 538 -f 536 562 547 -f 488 489 493 -f 493 492 488 -f 563 435 348 -f 348 493 563 -f 493 489 490 -f 490 563 493 -f 513 509 503 -f 554 508 509 -f 509 513 554 -f 555 508 554 -f 555 564 499 -f 499 508 555 -f 564 563 490 -f 490 499 564 -f 555 423 437 -f 437 564 555 -f 435 563 564 -f 564 437 435 -f 495 483 486 -f 486 487 506 -f 502 507 504 -f 484 497 488 -f 486 506 495 -f 566 565 552 -f 552 553 566 -f 549 552 565 -f 565 548 549 -f 566 553 551 -f 548 550 539 -f 539 515 548 -f 565 566 551 -f 551 548 565 -f 548 551 550 -f 455 296 454 -f 454 456 455 -f 440 296 455 -f 455 457 440 -f 294 441 440 -f 440 453 294 -f 453 440 457 -f 541 542 413 -f 413 442 541 -f 541 442 411 -f 411 540 541 -f 545 415 443 -f 443 544 545 -f 443 414 543 -f 543 544 443 -f 416 546 547 -f 547 444 416 -f 569 568 567 -f 567 557 569 -f 562 567 568 -f 568 547 562 -f 569 557 558 -f 326 430 472 -f 432 444 547 -f 570 561 432 -f 432 568 570 -f 568 432 547 -f 556 570 568 -f 568 569 556 -f 558 556 569 -f 556 557 567 -f 567 570 556 -f 561 570 567 -f 567 560 561 -f 559 560 567 -f 562 559 567 -f 472 559 562 -f 562 538 472 -f 460 449 307 -f 460 459 304 -f 304 449 460 -f 460 461 459 -f 502 501 498 -f 355 358 359 - -g dolph03 -usemtl dolph03 -f 573 572 571 -f 571 574 573 -f 575 573 574 -f 574 576 575 -f 577 575 576 -f 576 578 577 -f 579 577 578 -f 582 581 580 -f 574 571 583 -f 583 584 574 -f 576 574 584 -f 584 585 576 -f 578 576 585 -f 588 587 586 -f 589 586 587 -f 587 590 589 -f 593 592 591 -f 591 594 593 -f 594 591 595 -f 596 593 594 -f 594 597 596 -f 572 596 597 -f 597 571 572 -f 598 571 597 -f 583 571 598 -f 598 599 583 -f 580 583 599 -f 599 600 580 -f 582 580 600 -f 582 600 601 -f 601 602 582 -f 603 602 601 -f 601 604 603 -f 605 603 604 -f 604 606 605 -f 607 605 606 -f 606 608 607 -f 609 607 608 -f 608 610 609 -f 611 609 610 -f 610 612 611 -f 595 590 613 -f 595 613 614 -f 595 614 615 -f 615 594 595 -f 597 594 615 -f 615 616 597 -f 598 597 616 -f 616 617 598 -f 599 598 617 -f 617 618 599 -f 600 599 618 -f 618 619 600 -f 601 600 619 -f 619 620 601 -f 604 601 620 -f 622 621 614 -f 614 613 622 -f 623 622 613 -f 613 590 623 -f 624 623 590 -f 590 587 624 -f 625 624 587 -f 627 626 621 -f 621 622 627 -f 623 627 622 -f 625 628 624 -f 631 630 629 -f 629 628 631 -f 634 633 632 -f 632 635 634 -f 635 625 587 -f 587 588 635 -f 634 635 588 -f 637 623 636 -f 636 638 637 -f 623 624 639 -f 639 636 623 -f 638 636 639 -f 639 640 638 -f 640 639 628 -f 628 629 640 -f 641 629 630 -f 630 642 641 -f 640 629 641 -f 641 643 640 -f 644 638 640 -f 645 644 643 -f 643 646 645 -f 628 625 635 -f 637 638 647 -f 648 637 647 -f 626 648 647 -f 649 626 647 -f 644 649 647 -f 638 644 647 -f 642 651 650 -f 650 641 642 -f 641 650 646 -f 646 643 641 -f 653 646 652 -f 652 645 653 -f 645 652 654 -f 655 652 646 -f 646 656 655 -f 657 645 654 -f 654 658 657 -f 659 645 657 -f 657 660 659 -f 659 649 645 -f 626 649 659 -f 659 661 626 -f 614 621 626 -f 626 662 614 -f 662 626 661 -f 663 661 659 -f 659 660 663 -f 664 663 660 -f 660 665 664 -f 666 664 665 -f 665 667 666 -f 668 666 667 -f 667 669 668 -f 670 668 669 -f 669 671 670 -f 672 670 671 -f 671 673 672 -f 674 672 673 -f 673 675 674 -f 676 674 675 -f 675 677 676 -f 678 676 677 -f 677 679 678 -f 662 661 663 -f 615 662 663 -f 614 662 615 -f 616 615 663 -f 663 664 616 -f 617 616 664 -f 664 666 617 -f 618 617 666 -f 666 668 618 -f 619 618 668 -f 668 670 619 -f 620 619 670 -f 670 672 620 -f 604 620 672 -f 672 674 604 -f 606 604 674 -f 674 676 606 -f 608 606 676 -f 676 678 608 -f 610 608 678 -f 678 680 610 -f 612 610 680 -f 665 660 657 -f 657 681 665 -f 667 665 681 -f 681 682 667 -f 669 667 682 -f 682 683 669 -f 671 669 683 -f 683 684 671 -f 673 671 684 -f 684 685 673 -f 675 673 685 -f 685 686 675 -f 677 675 686 -f 686 687 677 -f 679 677 687 -f 687 688 679 -f 689 679 688 -f 690 657 658 -f 658 691 690 -f 681 657 690 -f 690 692 681 -f 693 692 690 -f 690 694 693 -f 694 690 695 -f 696 682 681 -f 681 697 696 -f 685 684 698 -f 698 699 685 -f 688 687 700 -f 700 701 688 -f 658 654 702 -f 702 703 658 -f 681 658 703 -f 703 697 681 -f 654 652 704 -f 704 702 654 -f 652 655 705 -f 705 704 652 -f 655 707 706 -f 706 705 655 -f 655 656 707 -f 709 708 706 -f 706 707 709 -f 712 711 710 -f 612 714 713 -f 713 715 612 -f 715 713 716 -f 716 717 715 -f 718 680 678 -f 678 679 718 -f 689 718 679 -f 631 628 635 -f 635 632 631 -f 720 719 632 -f 632 633 720 -f 631 632 719 -f 719 630 631 -f 646 650 656 -f 651 707 656 -f 656 650 651 -f 707 651 709 -f 721 709 651 -f 651 642 721 -f 719 721 642 -f 642 630 719 -f 708 709 721 -f 721 722 708 -f 719 720 722 -f 722 721 719 -f 627 623 637 -f 648 626 627 -f 645 649 644 -f 628 639 624 -f 637 648 627 -f 724 723 694 -f 694 695 724 -f 695 690 691 -f 691 724 695 -f 693 694 723 -f 692 691 658 -f 658 681 692 -f 693 723 724 -f 724 692 693 -f 692 724 691 -f 581 584 583 -f 583 580 581 -f 581 725 585 -f 585 584 581 -f 725 726 579 -f 579 585 725 -f 585 579 578 -f 684 683 727 -f 727 698 684 -f 727 683 682 -f 682 696 727 -f 700 687 686 -f 686 728 700 -f 699 728 686 -f 686 685 699 -f 688 701 729 -f 729 689 688 -f 731 730 711 -f 711 732 731 -f 732 718 689 -f 689 731 732 -f 710 711 730 -f 612 715 611 -f 689 729 717 -f 717 716 733 -f 733 689 717 -f 689 733 731 -f 733 712 730 -f 730 731 733 -f 730 712 710 -f 711 712 733 -f 733 732 711 -f 733 716 713 -f 713 732 733 -f 732 713 714 -f 732 714 718 -f 714 612 680 -f 680 718 714 -f 592 734 591 -f 590 591 734 -f 734 589 590 -f 590 595 591 -f 572 573 735 -f 735 736 572 -f 573 575 737 -f 737 735 573 -f 575 577 738 -f 738 737 575 -f 738 577 579 -f 739 581 582 -f 736 735 740 -f 740 741 736 -f 735 737 742 -f 742 740 735 -f 742 737 738 -f 586 743 588 -f 586 589 744 -f 744 743 586 -f 745 592 593 -f 593 746 745 -f 746 593 747 -f 593 596 748 -f 748 747 593 -f 596 572 736 -f 736 748 596 -f 748 736 749 -f 736 741 750 -f 750 749 736 -f 741 739 751 -f 751 750 741 -f 751 739 582 -f 751 582 602 -f 602 752 751 -f 602 603 753 -f 753 752 602 -f 603 605 754 -f 754 753 603 -f 605 607 755 -f 755 754 605 -f 607 609 756 -f 756 755 607 -f 609 611 757 -f 757 756 609 -f 758 744 746 -f 759 758 746 -f 759 746 747 -f 747 760 759 -f 747 748 761 -f 761 760 747 -f 748 749 762 -f 762 761 748 -f 749 750 763 -f 763 762 749 -f 750 751 764 -f 764 763 750 -f 751 752 765 -f 765 764 751 -f 765 752 753 -f 767 766 758 -f 758 759 767 -f 766 768 744 -f 744 758 766 -f 744 768 769 -f 769 743 744 -f 743 769 770 -f 772 771 766 -f 766 767 772 -f 766 771 768 -f 769 773 770 -f 775 774 773 -f 773 776 775 -f 633 634 777 -f 777 778 633 -f 770 777 588 -f 588 743 770 -f 588 777 634 -f 768 780 779 -f 779 781 768 -f 769 768 781 -f 781 782 769 -f 781 779 783 -f 783 782 781 -f 782 783 776 -f 776 773 782 -f 776 785 784 -f 784 775 776 -f 776 783 786 -f 786 785 776 -f 783 779 787 -f 787 789 788 -f 788 786 787 -f 777 770 773 -f 790 779 780 -f 790 780 791 -f 790 791 772 -f 790 772 792 -f 790 792 787 -f 790 787 779 -f 793 784 785 -f 785 794 793 -f 794 785 786 -f 786 788 794 -f 796 788 795 -f 795 797 796 -f 797 795 789 -f 796 799 798 -f 798 788 796 -f 789 801 800 -f 800 797 789 -f 789 803 802 -f 802 801 789 -f 789 792 803 -f 792 772 804 -f 804 803 792 -f 772 767 759 -f 759 804 772 -f 804 759 805 -f 804 806 802 -f 802 803 804 -f 806 808 807 -f 807 802 806 -f 808 810 809 -f 809 807 808 -f 810 812 811 -f 811 809 810 -f 812 814 813 -f 813 811 812 -f 814 816 815 -f 815 813 814 -f 816 818 817 -f 817 815 816 -f 818 820 819 -f 819 817 818 -f 820 822 821 -f 821 819 820 -f 806 804 805 -f 806 805 760 -f 760 805 759 -f 760 761 808 -f 808 806 760 -f 761 762 810 -f 810 808 761 -f 762 763 812 -f 812 810 762 -f 763 764 814 -f 814 812 763 -f 764 765 816 -f 816 814 764 -f 765 753 818 -f 818 816 765 -f 753 754 820 -f 820 818 753 -f 754 755 822 -f 822 820 754 -f 755 756 823 -f 823 822 755 -f 823 756 757 -f 802 807 824 -f 824 801 802 -f 807 809 825 -f 825 824 807 -f 809 811 826 -f 826 825 809 -f 811 813 827 -f 827 826 811 -f 813 815 828 -f 828 827 813 -f 815 817 829 -f 829 828 815 -f 817 819 830 -f 830 829 817 -f 819 821 831 -f 831 830 819 -f 831 821 832 -f 801 834 833 -f 833 800 801 -f 801 824 835 -f 835 834 801 -f 834 835 836 -f 836 837 834 -f 837 836 838 -f 825 696 697 -f 697 824 825 -f 827 828 699 -f 699 698 827 -f 830 831 701 -f 701 700 830 -f 797 800 703 -f 703 702 797 -f 800 824 697 -f 697 703 800 -f 796 797 702 -f 702 704 796 -f 799 796 704 -f 704 705 799 -f 839 799 705 -f 705 706 839 -f 839 798 799 -f 708 840 839 -f 839 706 708 -f 843 842 841 -f 844 757 715 -f 715 845 844 -f 845 715 717 -f 717 846 845 -f 823 847 821 -f 821 822 823 -f 821 847 832 -f 773 774 778 -f 778 777 773 -f 848 720 633 -f 633 778 848 -f 778 774 775 -f 775 848 778 -f 798 794 788 -f 839 793 794 -f 794 798 839 -f 840 793 839 -f 840 849 784 -f 784 793 840 -f 849 848 775 -f 775 784 849 -f 840 708 722 -f 722 849 840 -f 720 848 849 -f 849 722 720 -f 780 768 771 -f 771 772 791 -f 787 792 789 -f 769 782 773 -f 771 791 780 -f 851 850 837 -f 837 838 851 -f 834 837 850 -f 850 833 834 -f 851 838 836 -f 833 835 824 -f 824 800 833 -f 850 851 836 -f 836 833 850 -f 833 836 835 -f 740 581 739 -f 739 741 740 -f 725 581 740 -f 740 742 725 -f 579 726 725 -f 725 738 579 -f 738 725 742 -f 826 827 698 -f 698 727 826 -f 826 727 696 -f 696 825 826 -f 830 700 728 -f 728 829 830 -f 728 699 828 -f 828 829 728 -f 701 831 832 -f 832 729 701 -f 854 853 852 -f 852 842 854 -f 847 852 853 -f 853 832 847 -f 854 842 843 -f 611 715 757 -f 717 729 832 -f 855 846 717 -f 717 853 855 -f 853 717 832 -f 841 855 853 -f 853 854 841 -f 843 841 854 -f 841 842 852 -f 852 855 841 -f 846 855 852 -f 852 845 846 -f 844 845 852 -f 847 844 852 -f 757 844 847 -f 847 823 757 -f 745 734 592 -f 745 744 589 -f 589 734 745 -f 745 746 744 -f 787 786 783 -f 640 643 644 diff --git a/lib/glut-3.7.6/progs/demos/smooth/dirent32.h b/lib/glut-3.7.6/progs/demos/smooth/dirent32.h deleted file mode 100644 index 02608c4b32ca3933da61f4a29210a20b2997f015..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/dirent32.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - - Win32 lacks unix dirent support. But, we can fake it. Many - thanks to Dave Lubrik (lubrik@jaka.ece.uiuc.edu) who found and - fixed many bugs in the original code. - - */ - - -#ifndef _WIN32 -#include -#else - -#include - - - -struct dirent { - char d_name[MAX_PATH]; -}; - -typedef struct { - WIN32_FIND_DATA wfd; - HANDLE hFind; - struct dirent de; -} DIR; - - -static DIR * -opendir(char *pSpec) -{ - DIR *pDir = malloc(sizeof(DIR)); - char pathnamespec[MAX_PATH]; - int l; /* length of directory specifier */ - char c; /* last char of directory specifier */ - - /* Given a directory pathname in pSpec, add \ (if necessary) and * - to yield a globbable expression describing all the files in that - directory */ - strcpy(pathnamespec, pSpec); - - /* Add a \ to separate the directory name from the filename-wildcard - "*", unless it already ends in a \ (don't create \\ sequences), - or it is a drivespec (since "C:*" differs in meaning from "C:\*") */ - if (((l = strlen(pSpec)) > 0) && ((c = pSpec[l-1]) != '\\') && (c != ':')) - strcat(pathnamespec, "\\"); - - /* Add the filename wildcard "*" */ - strcat(pathnamespec,"*"); - - /* Find files matching that expression (all the files in that - directory) */ - pDir->hFind = FindFirstFile(pathnamespec, &pDir->wfd); - - return pDir; -} - - -/* closedir takes a pointer to a DIR structure created by opendir, and - frees up resources allocated by opendir. Call it when done with a - directory. */ -static void -closedir(DIR * pDir) -{ - FindClose(pDir->hFind); /* Release system resources */ - free(pDir); /* release memory */ -} - -/* readdir is used to iterate through the files in a directory. It - takes a pointer to a DIR structure created by opendir, and each - time it is called it returns the name of another file in the - directory passed to opendir. Returns: a pointer to a dirent - structure, containing the file name. NULL if there are no more - files in the directory. */ -static struct dirent * -readdir(DIR *pDir) -{ - /* The previous call to opendir or readdir has already found the next - file (using FindFirstFile or FindNextFile respectively). Return - that file name to the caller, and silently find the next one. */ - - if (*(pDir->wfd.cFileName)) { /* If we haven't exhausted the files */ - strcpy(pDir->de.d_name, pDir->wfd.cFileName); /* copy name */ - - if (!FindNextFile(pDir->hFind, &pDir->wfd)) /* get next */ - *(pDir->wfd.cFileName) = 0; - /* if no more, zero next filename, so that next time through, - we don't even try. */ - - return &pDir->de; /* return dirent struct w/filename */ - } - - return NULL; /* No more files to find. */ -} - -#endif diff --git a/lib/glut-3.7.6/progs/demos/smooth/glm.c b/lib/glut-3.7.6/progs/demos/smooth/glm.c deleted file mode 100644 index 7cd33c5fe1d17f1ea75087c2f84b578f3ff0c18e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/glm.c +++ /dev/null @@ -1,1837 +0,0 @@ -/* - glm.c - Nate Robins, 1997 - ndr@pobox.com, http://www.pobox.com/~ndr/ - - Wavefront OBJ model file format reader/writer/manipulator. - - Includes routines for generating smooth normals with - preservation of edges, welding redundant vertices & texture - coordinate generation (spheremap and planar projections) + more. - - */ - - -#include -#include -#include -#include -#include -#include "glm.h" - - -#define T(x) (model->triangles[(x)]) - - -/* _GLMnode: general purpose node - */ -typedef struct _GLMnode { - GLuint index; - GLboolean averaged; - struct _GLMnode* next; -} GLMnode; - - -/* glmMax: returns the maximum of two floats */ -static GLfloat -glmMax(GLfloat a, GLfloat b) -{ - if (b > a) - return b; - return a; -} - -/* glmAbs: returns the absolute value of a float */ -static GLfloat -glmAbs(GLfloat f) -{ - if (f < 0) - return -f; - return f; -} - -/* glmDot: compute the dot product of two vectors - * - * u - array of 3 GLfloats (GLfloat u[3]) - * v - array of 3 GLfloats (GLfloat v[3]) - */ -static GLfloat -glmDot(GLfloat* u, GLfloat* v) -{ - assert(u); assert(v); - - return u[0]*v[0] + u[1]*v[1] + u[2]*v[2]; -} - -/* glmCross: compute the cross product of two vectors - * - * u - array of 3 GLfloats (GLfloat u[3]) - * v - array of 3 GLfloats (GLfloat v[3]) - * n - array of 3 GLfloats (GLfloat n[3]) to return the cross product in - */ -static GLvoid -glmCross(GLfloat* u, GLfloat* v, GLfloat* n) -{ - assert(u); assert(v); assert(n); - - n[0] = u[1]*v[2] - u[2]*v[1]; - n[1] = u[2]*v[0] - u[0]*v[2]; - n[2] = u[0]*v[1] - u[1]*v[0]; -} - -/* glmNormalize: normalize a vector - * - * v - array of 3 GLfloats (GLfloat v[3]) to be normalized - */ -static GLvoid -glmNormalize(GLfloat* v) -{ - GLfloat l; - - assert(v); - - l = (GLfloat)sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - v[0] /= l; - v[1] /= l; - v[2] /= l; -} - -/* glmEqual: compares two vectors and returns GL_TRUE if they are - * equal (within a certain threshold) or GL_FALSE if not. An epsilon - * that works fairly well is 0.000001. - * - * u - array of 3 GLfloats (GLfloat u[3]) - * v - array of 3 GLfloats (GLfloat v[3]) - */ -static GLboolean -glmEqual(GLfloat* u, GLfloat* v, GLfloat epsilon) -{ - if (glmAbs(u[0] - v[0]) < epsilon && - glmAbs(u[1] - v[1]) < epsilon && - glmAbs(u[2] - v[2]) < epsilon) - { - return GL_TRUE; - } - return GL_FALSE; -} - -/* glmWeldVectors: eliminate (weld) vectors that are within an - * epsilon of each other. - * - * vectors - array of GLfloat[3]'s to be welded - * numvectors - number of GLfloat[3]'s in vectors - * epsilon - maximum difference between vectors - * - */ -GLfloat* -glmWeldVectors(GLfloat* vectors, GLuint* numvectors, GLfloat epsilon) -{ - GLfloat* copies; - GLuint copied; - GLuint i, j; - - copies = (GLfloat*)malloc(sizeof(GLfloat) * 3 * (*numvectors + 1)); - memcpy(copies, vectors, (sizeof(GLfloat) * 3 * (*numvectors + 1))); - - copied = 1; - for (i = 1; i <= *numvectors; i++) { - for (j = 1; j <= copied; j++) { - if (glmEqual(&vectors[3 * i], &copies[3 * j], epsilon)) { - goto duplicate; - } - } - - /* must not be any duplicates -- add to the copies array */ - copies[3 * copied + 0] = vectors[3 * i + 0]; - copies[3 * copied + 1] = vectors[3 * i + 1]; - copies[3 * copied + 2] = vectors[3 * i + 2]; - j = copied; /* pass this along for below */ - copied++; - - duplicate: - /* set the first component of this vector to point at the correct - index into the new copies array */ - vectors[3 * i + 0] = (GLfloat)j; - } - - *numvectors = copied-1; - return copies; -} - -/* glmFindGroup: Find a group in the model - */ -GLMgroup* -glmFindGroup(GLMmodel* model, char* name) -{ - GLMgroup* group; - - assert(model); - - group = model->groups; - while(group) { - if (!strcmp(name, group->name)) - break; - group = group->next; - } - - return group; -} - -/* glmAddGroup: Add a group to the model - */ -GLMgroup* -glmAddGroup(GLMmodel* model, char* name) -{ - GLMgroup* group; - - group = glmFindGroup(model, name); - if (!group) { - group = (GLMgroup*)malloc(sizeof(GLMgroup)); - group->name = strdup(name); - group->material = 0; - group->numtriangles = 0; - group->triangles = NULL; - group->next = model->groups; - model->groups = group; - model->numgroups++; - } - - return group; -} - -/* glmFindGroup: Find a material in the model - */ -GLuint -glmFindMaterial(GLMmodel* model, char* name) -{ - GLuint i; - - /* XXX doing a linear search on a string key'd list is pretty lame, - but it works and is fast enough for now. */ - for (i = 0; i < model->nummaterials; i++) { - if (!strcmp(model->materials[i].name, name)) - goto found; - } - - /* didn't find the name, so print a warning and return the default - material (0). */ - printf("glmFindMaterial(): can't find material \"%s\".\n", name); - i = 0; - -found: - return i; -} - - -/* glmDirName: return the directory given a path - * - * path - filesystem path - * - * NOTE: the return value should be free'd. - */ -static char* -glmDirName(char* path) -{ - char* dir; - char* s; - - dir = strdup(path); - - s = strrchr(dir, '/'); - if (s) - s[1] = '\0'; - else - dir[0] = '\0'; - - return dir; -} - - -/* glmReadMTL: read a wavefront material library file - * - * model - properly initialized GLMmodel structure - * name - name of the material library - */ -static GLvoid -glmReadMTL(GLMmodel* model, char* name) -{ - FILE* file; - char* dir; - char* filename; - char buf[128]; - GLuint nummaterials, i; - - dir = glmDirName(model->pathname); - filename = (char*)malloc(sizeof(char) * (strlen(dir) + strlen(name) + 1)); - strcpy(filename, dir); - strcat(filename, name); - free(dir); - - file = fopen(filename, "r"); - if (!file) { - fprintf(stderr, "glmReadMTL() failed: can't open material file \"%s\".\n", - filename); - exit(1); - } - free(filename); - - /* count the number of materials in the file */ - nummaterials = 1; - while(fscanf(file, "%s", buf) != EOF) { - switch(buf[0]) { - case '#': /* comment */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - case 'n': /* newmtl */ - fgets(buf, sizeof(buf), file); - nummaterials++; - sscanf(buf, "%s %s", buf, buf); - break; - default: - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - } - } - - rewind(file); - - model->materials = (GLMmaterial*)malloc(sizeof(GLMmaterial) * nummaterials); - model->nummaterials = nummaterials; - - /* set the default material */ - for (i = 0; i < nummaterials; i++) { - model->materials[i].name = NULL; - model->materials[i].shininess = 65.0; - model->materials[i].diffuse[0] = 0.8; - model->materials[i].diffuse[1] = 0.8; - model->materials[i].diffuse[2] = 0.8; - model->materials[i].diffuse[3] = 1.0; - model->materials[i].ambient[0] = 0.2; - model->materials[i].ambient[1] = 0.2; - model->materials[i].ambient[2] = 0.2; - model->materials[i].ambient[3] = 1.0; - model->materials[i].specular[0] = 0.0; - model->materials[i].specular[1] = 0.0; - model->materials[i].specular[2] = 0.0; - model->materials[i].specular[3] = 1.0; - } - model->materials[0].name = strdup("default"); - - /* now, read in the data */ - nummaterials = 0; - while(fscanf(file, "%s", buf) != EOF) { - switch(buf[0]) { - case '#': /* comment */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - case 'n': /* newmtl */ - fgets(buf, sizeof(buf), file); - sscanf(buf, "%s %s", buf, buf); - nummaterials++; - model->materials[nummaterials].name = strdup(buf); - break; - case 'N': - fscanf(file, "%f", &model->materials[nummaterials].shininess); - /* wavefront shininess is from [0, 1000], so scale for OpenGL */ - model->materials[nummaterials].shininess /= 1000.0; - model->materials[nummaterials].shininess *= 128.0; - break; - case 'K': - switch(buf[1]) { - case 'd': - fscanf(file, "%f %f %f", - &model->materials[nummaterials].diffuse[0], - &model->materials[nummaterials].diffuse[1], - &model->materials[nummaterials].diffuse[2]); - break; - case 's': - fscanf(file, "%f %f %f", - &model->materials[nummaterials].specular[0], - &model->materials[nummaterials].specular[1], - &model->materials[nummaterials].specular[2]); - break; - case 'a': - fscanf(file, "%f %f %f", - &model->materials[nummaterials].ambient[0], - &model->materials[nummaterials].ambient[1], - &model->materials[nummaterials].ambient[2]); - break; - default: - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - } - break; - default: - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - } - } -} - -/* glmWriteMTL: write a wavefront material library file - * - * model - properly initialized GLMmodel structure - * modelpath - pathname of the model being written - * mtllibname - name of the material library to be written - */ -static GLvoid -glmWriteMTL(GLMmodel* model, char* modelpath, char* mtllibname) -{ - FILE* file; - char* dir; - char* filename; - GLMmaterial* material; - GLuint i; - - dir = glmDirName(modelpath); - filename = (char*)malloc(sizeof(char) * (strlen(dir)+strlen(mtllibname))); - strcpy(filename, dir); - strcat(filename, mtllibname); - free(dir); - - /* open the file */ - file = fopen(filename, "w"); - if (!file) { - fprintf(stderr, "glmWriteMTL() failed: can't open file \"%s\".\n", - filename); - exit(1); - } - free(filename); - - /* spit out a header */ - fprintf(file, "# \n"); - fprintf(file, "# Wavefront MTL generated by GLM library\n"); - fprintf(file, "# \n"); - fprintf(file, "# GLM library\n"); - fprintf(file, "# Nate Robins\n"); - fprintf(file, "# ndr@pobox.com\n"); - fprintf(file, "# http://www.pobox.com/~ndr\n"); - fprintf(file, "# \n\n"); - - for (i = 0; i < model->nummaterials; i++) { - material = &model->materials[i]; - fprintf(file, "newmtl %s\n", material->name); - fprintf(file, "Ka %f %f %f\n", - material->ambient[0], material->ambient[1], material->ambient[2]); - fprintf(file, "Kd %f %f %f\n", - material->diffuse[0], material->diffuse[1], material->diffuse[2]); - fprintf(file, "Ks %f %f %f\n", - material->specular[0],material->specular[1],material->specular[2]); - fprintf(file, "Ns %f\n", material->shininess / 128.0 * 1000.0); - fprintf(file, "\n"); - } -} - - -/* glmFirstPass: first pass at a Wavefront OBJ file that gets all the - * statistics of the model (such as #vertices, #normals, etc) - * - * model - properly initialized GLMmodel structure - * file - (fopen'd) file descriptor - */ -static GLvoid -glmFirstPass(GLMmodel* model, FILE* file) -{ - GLuint numvertices; /* number of vertices in model */ - GLuint numnormals; /* number of normals in model */ - GLuint numtexcoords; /* number of texcoords in model */ - GLuint numtriangles; /* number of triangles in model */ - GLMgroup* group; /* current group */ - unsigned v, n, t; - char buf[128]; - - /* make a default group */ - group = glmAddGroup(model, "default"); - - numvertices = numnormals = numtexcoords = numtriangles = 0; - while(fscanf(file, "%s", buf) != EOF) { - switch(buf[0]) { - case '#': /* comment */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - case 'v': /* v, vn, vt */ - switch(buf[1]) { - case '\0': /* vertex */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - numvertices++; - break; - case 'n': /* normal */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - numnormals++; - break; - case 't': /* texcoord */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - numtexcoords++; - break; - default: - printf("glmFirstPass(): Unknown token \"%s\".\n", buf); - exit(1); - break; - } - break; - case 'm': - fgets(buf, sizeof(buf), file); - sscanf(buf, "%s %s", buf, buf); - model->mtllibname = strdup(buf); - glmReadMTL(model, buf); - break; - case 'u': - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - case 'g': /* group */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); -#if SINGLE_STRING_GROUP_NAMES - sscanf(buf, "%s", buf); -#else - buf[strlen(buf)-1] = '\0'; /* nuke '\n' */ -#endif - group = glmAddGroup(model, buf); - break; - case 'f': /* face */ - v = n = t = 0; - fscanf(file, "%s", buf); - /* can be one of %d, %d//%d, %d/%d, %d/%d/%d %d//%d */ - if (strstr(buf, "//")) { - /* v//n */ - sscanf(buf, "%d//%d", &v, &n); - fscanf(file, "%d//%d", &v, &n); - fscanf(file, "%d//%d", &v, &n); - numtriangles++; - group->numtriangles++; - while(fscanf(file, "%d//%d", &v, &n) > 0) { - numtriangles++; - group->numtriangles++; - } - } else if (sscanf(buf, "%d/%d/%d", &v, &t, &n) == 3) { - /* v/t/n */ - fscanf(file, "%d/%d/%d", &v, &t, &n); - fscanf(file, "%d/%d/%d", &v, &t, &n); - numtriangles++; - group->numtriangles++; - while(fscanf(file, "%d/%d/%d", &v, &t, &n) > 0) { - numtriangles++; - group->numtriangles++; - } - } else if (sscanf(buf, "%d/%d", &v, &t) == 2) { - /* v/t */ - fscanf(file, "%d/%d", &v, &t); - fscanf(file, "%d/%d", &v, &t); - numtriangles++; - group->numtriangles++; - while(fscanf(file, "%d/%d", &v, &t) > 0) { - numtriangles++; - group->numtriangles++; - } - } else { - /* v */ - fscanf(file, "%d", &v); - fscanf(file, "%d", &v); - numtriangles++; - group->numtriangles++; - while(fscanf(file, "%d", &v) > 0) { - numtriangles++; - group->numtriangles++; - } - } - break; - - default: - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - } - } - - /* set the stats in the model structure */ - model->numvertices = numvertices; - model->numnormals = numnormals; - model->numtexcoords = numtexcoords; - model->numtriangles = numtriangles; - - /* allocate memory for the triangles in each group */ - group = model->groups; - while(group) { - group->triangles = (GLuint*)malloc(sizeof(GLuint) * group->numtriangles); - group->numtriangles = 0; - group = group->next; - } -} - -/* glmSecondPass: second pass at a Wavefront OBJ file that gets all - * the data. - * - * model - properly initialized GLMmodel structure - * file - (fopen'd) file descriptor - */ -static GLvoid -glmSecondPass(GLMmodel* model, FILE* file) -{ - GLuint numvertices; /* number of vertices in model */ - GLuint numnormals; /* number of normals in model */ - GLuint numtexcoords; /* number of texcoords in model */ - GLuint numtriangles; /* number of triangles in model */ - GLfloat* vertices; /* array of vertices */ - GLfloat* normals; /* array of normals */ - GLfloat* texcoords; /* array of texture coordinates */ - GLMgroup* group; /* current group pointer */ - GLuint material; /* current material */ - GLuint v, n, t; - char buf[128]; - - /* set the pointer shortcuts */ - vertices = model->vertices; - normals = model->normals; - texcoords = model->texcoords; - group = model->groups; - - /* on the second pass through the file, read all the data into the - allocated arrays */ - numvertices = numnormals = numtexcoords = 1; - numtriangles = 0; - material = 0; - while(fscanf(file, "%s", buf) != EOF) { - switch(buf[0]) { - case '#': /* comment */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - case 'v': /* v, vn, vt */ - switch(buf[1]) { - case '\0': /* vertex */ - fscanf(file, "%f %f %f", - &vertices[3 * numvertices + 0], - &vertices[3 * numvertices + 1], - &vertices[3 * numvertices + 2]); - numvertices++; - break; - case 'n': /* normal */ - fscanf(file, "%f %f %f", - &normals[3 * numnormals + 0], - &normals[3 * numnormals + 1], - &normals[3 * numnormals + 2]); - numnormals++; - break; - case 't': /* texcoord */ - fscanf(file, "%f %f", - &texcoords[2 * numtexcoords + 0], - &texcoords[2 * numtexcoords + 1]); - numtexcoords++; - break; - } - break; - case 'u': - fgets(buf, sizeof(buf), file); - sscanf(buf, "%s %s", buf, buf); - group->material = material = glmFindMaterial(model, buf); - break; - case 'g': /* group */ - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); -#if SINGLE_STRING_GROUP_NAMES - sscanf(buf, "%s", buf); -#else - buf[strlen(buf)-1] = '\0'; /* nuke '\n' */ -#endif - group = glmFindGroup(model, buf); - group->material = material; - break; - case 'f': /* face */ - v = n = t = 0; - fscanf(file, "%s", buf); - /* can be one of %d, %d//%d, %d/%d, %d/%d/%d %d//%d */ - if (strstr(buf, "//")) { - /* v//n */ - sscanf(buf, "%d//%d", &v, &n); - T(numtriangles).vindices[0] = v; - T(numtriangles).nindices[0] = n; - fscanf(file, "%d//%d", &v, &n); - T(numtriangles).vindices[1] = v; - T(numtriangles).nindices[1] = n; - fscanf(file, "%d//%d", &v, &n); - T(numtriangles).vindices[2] = v; - T(numtriangles).nindices[2] = n; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - while(fscanf(file, "%d//%d", &v, &n) > 0) { - T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; - T(numtriangles).nindices[0] = T(numtriangles-1).nindices[0]; - T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; - T(numtriangles).nindices[1] = T(numtriangles-1).nindices[2]; - T(numtriangles).vindices[2] = v; - T(numtriangles).nindices[2] = n; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - } - } else if (sscanf(buf, "%d/%d/%d", &v, &t, &n) == 3) { - /* v/t/n */ - T(numtriangles).vindices[0] = v; - T(numtriangles).tindices[0] = t; - T(numtriangles).nindices[0] = n; - fscanf(file, "%d/%d/%d", &v, &t, &n); - T(numtriangles).vindices[1] = v; - T(numtriangles).tindices[1] = t; - T(numtriangles).nindices[1] = n; - fscanf(file, "%d/%d/%d", &v, &t, &n); - T(numtriangles).vindices[2] = v; - T(numtriangles).tindices[2] = t; - T(numtriangles).nindices[2] = n; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - while(fscanf(file, "%d/%d/%d", &v, &t, &n) > 0) { - T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; - T(numtriangles).tindices[0] = T(numtriangles-1).tindices[0]; - T(numtriangles).nindices[0] = T(numtriangles-1).nindices[0]; - T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; - T(numtriangles).tindices[1] = T(numtriangles-1).tindices[2]; - T(numtriangles).nindices[1] = T(numtriangles-1).nindices[2]; - T(numtriangles).vindices[2] = v; - T(numtriangles).tindices[2] = t; - T(numtriangles).nindices[2] = n; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - } - } else if (sscanf(buf, "%d/%d", &v, &t) == 2) { - /* v/t */ - T(numtriangles).vindices[0] = v; - T(numtriangles).tindices[0] = t; - fscanf(file, "%d/%d", &v, &t); - T(numtriangles).vindices[1] = v; - T(numtriangles).tindices[1] = t; - fscanf(file, "%d/%d", &v, &t); - T(numtriangles).vindices[2] = v; - T(numtriangles).tindices[2] = t; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - while(fscanf(file, "%d/%d", &v, &t) > 0) { - T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; - T(numtriangles).tindices[0] = T(numtriangles-1).tindices[0]; - T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; - T(numtriangles).tindices[1] = T(numtriangles-1).tindices[2]; - T(numtriangles).vindices[2] = v; - T(numtriangles).tindices[2] = t; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - } - } else { - /* v */ - sscanf(buf, "%d", &v); - T(numtriangles).vindices[0] = v; - fscanf(file, "%d", &v); - T(numtriangles).vindices[1] = v; - fscanf(file, "%d", &v); - T(numtriangles).vindices[2] = v; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - while(fscanf(file, "%d", &v) > 0) { - T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; - T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; - T(numtriangles).vindices[2] = v; - group->triangles[group->numtriangles++] = numtriangles; - numtriangles++; - } - } - break; - - default: - /* eat up rest of line */ - fgets(buf, sizeof(buf), file); - break; - } - } - -#if 0 - /* announce the memory requirements */ - printf(" Memory: %d bytes\n", - numvertices * 3*sizeof(GLfloat) + - numnormals * 3*sizeof(GLfloat) * (numnormals ? 1 : 0) + - numtexcoords * 3*sizeof(GLfloat) * (numtexcoords ? 1 : 0) + - numtriangles * sizeof(GLMtriangle)); -#endif -} - - - - -/* glmUnitize: "unitize" a model by translating it to the origin and - * scaling it to fit in a unit cube around the origin (-1 to 1 in all - * dimensions). - * Returns the scalefactor used. - * - * model - properly initialized GLMmodel structure - */ -GLfloat -glmUnitize(GLMmodel* model) -{ - GLuint i; - GLfloat maxx, minx, maxy, miny, maxz, minz; - GLfloat cx, cy, cz, w, h, d; - GLfloat scale; - - assert(model); - assert(model->vertices); - - /* get the max/mins */ - maxx = minx = model->vertices[3 + 0]; - maxy = miny = model->vertices[3 + 1]; - maxz = minz = model->vertices[3 + 2]; - for (i = 1; i <= model->numvertices; i++) { - if (maxx < model->vertices[3 * i + 0]) - maxx = model->vertices[3 * i + 0]; - if (minx > model->vertices[3 * i + 0]) - minx = model->vertices[3 * i + 0]; - - if (maxy < model->vertices[3 * i + 1]) - maxy = model->vertices[3 * i + 1]; - if (miny > model->vertices[3 * i + 1]) - miny = model->vertices[3 * i + 1]; - - if (maxz < model->vertices[3 * i + 2]) - maxz = model->vertices[3 * i + 2]; - if (minz > model->vertices[3 * i + 2]) - minz = model->vertices[3 * i + 2]; - } - - /* calculate model width, height, and depth */ - w = glmAbs(maxx) + glmAbs(minx); - h = glmAbs(maxy) + glmAbs(miny); - d = glmAbs(maxz) + glmAbs(minz); - - /* calculate center of the model */ - cx = (maxx + minx) / 2.0; - cy = (maxy + miny) / 2.0; - cz = (maxz + minz) / 2.0; - - /* calculate unitizing scale factor */ - scale = 2.0 / glmMax(glmMax(w, h), d); - - /* translate around center then scale */ - for (i = 1; i <= model->numvertices; i++) { - model->vertices[3 * i + 0] -= cx; - model->vertices[3 * i + 1] -= cy; - model->vertices[3 * i + 2] -= cz; - model->vertices[3 * i + 0] *= scale; - model->vertices[3 * i + 1] *= scale; - model->vertices[3 * i + 2] *= scale; - } - - return scale; -} - -/* glmDimensions: Calculates the dimensions (width, height, depth) of - * a model. - * - * model - initialized GLMmodel structure - * dimensions - array of 3 GLfloats (GLfloat dimensions[3]) - */ -GLvoid -glmDimensions(GLMmodel* model, GLfloat* dimensions) -{ - GLuint i; - GLfloat maxx, minx, maxy, miny, maxz, minz; - - assert(model); - assert(model->vertices); - assert(dimensions); - - /* get the max/mins */ - maxx = minx = model->vertices[3 + 0]; - maxy = miny = model->vertices[3 + 1]; - maxz = minz = model->vertices[3 + 2]; - for (i = 1; i <= model->numvertices; i++) { - if (maxx < model->vertices[3 * i + 0]) - maxx = model->vertices[3 * i + 0]; - if (minx > model->vertices[3 * i + 0]) - minx = model->vertices[3 * i + 0]; - - if (maxy < model->vertices[3 * i + 1]) - maxy = model->vertices[3 * i + 1]; - if (miny > model->vertices[3 * i + 1]) - miny = model->vertices[3 * i + 1]; - - if (maxz < model->vertices[3 * i + 2]) - maxz = model->vertices[3 * i + 2]; - if (minz > model->vertices[3 * i + 2]) - minz = model->vertices[3 * i + 2]; - } - - /* calculate model width, height, and depth */ - dimensions[0] = glmAbs(maxx) + glmAbs(minx); - dimensions[1] = glmAbs(maxy) + glmAbs(miny); - dimensions[2] = glmAbs(maxz) + glmAbs(minz); -} - -/* glmScale: Scales a model by a given amount. - * - * model - properly initialized GLMmodel structure - * scale - scalefactor (0.5 = half as large, 2.0 = twice as large) - */ -GLvoid -glmScale(GLMmodel* model, GLfloat scale) -{ - GLuint i; - - for (i = 1; i <= model->numvertices; i++) { - model->vertices[3 * i + 0] *= scale; - model->vertices[3 * i + 1] *= scale; - model->vertices[3 * i + 2] *= scale; - } -} - -/* glmReverseWinding: Reverse the polygon winding for all polygons in - * this model. Default winding is counter-clockwise. Also changes - * the direction of the normals. - * - * model - properly initialized GLMmodel structure - */ -GLvoid -glmReverseWinding(GLMmodel* model) -{ - GLuint i, swap; - - assert(model); - - for (i = 0; i < model->numtriangles; i++) { - swap = T(i).vindices[0]; - T(i).vindices[0] = T(i).vindices[2]; - T(i).vindices[2] = swap; - - if (model->numnormals) { - swap = T(i).nindices[0]; - T(i).nindices[0] = T(i).nindices[2]; - T(i).nindices[2] = swap; - } - - if (model->numtexcoords) { - swap = T(i).tindices[0]; - T(i).tindices[0] = T(i).tindices[2]; - T(i).tindices[2] = swap; - } - } - - /* reverse facet normals */ - for (i = 1; i <= model->numfacetnorms; i++) { - model->facetnorms[3 * i + 0] = -model->facetnorms[3 * i + 0]; - model->facetnorms[3 * i + 1] = -model->facetnorms[3 * i + 1]; - model->facetnorms[3 * i + 2] = -model->facetnorms[3 * i + 2]; - } - - /* reverse vertex normals */ - for (i = 1; i <= model->numnormals; i++) { - model->normals[3 * i + 0] = -model->normals[3 * i + 0]; - model->normals[3 * i + 1] = -model->normals[3 * i + 1]; - model->normals[3 * i + 2] = -model->normals[3 * i + 2]; - } -} - -/* glmFacetNormals: Generates facet normals for a model (by taking the - * cross product of the two vectors derived from the sides of each - * triangle). Assumes a counter-clockwise winding. - * - * model - initialized GLMmodel structure - */ -GLvoid -glmFacetNormals(GLMmodel* model) -{ - GLuint i; - GLfloat u[3]; - GLfloat v[3]; - - assert(model); - assert(model->vertices); - - /* clobber any old facetnormals */ - if (model->facetnorms) - free(model->facetnorms); - - /* allocate memory for the new facet normals */ - model->numfacetnorms = model->numtriangles; - model->facetnorms = (GLfloat*)malloc(sizeof(GLfloat) * - 3 * (model->numfacetnorms + 1)); - - for (i = 0; i < model->numtriangles; i++) { - model->triangles[i].findex = i+1; - - u[0] = model->vertices[3 * T(i).vindices[1] + 0] - - model->vertices[3 * T(i).vindices[0] + 0]; - u[1] = model->vertices[3 * T(i).vindices[1] + 1] - - model->vertices[3 * T(i).vindices[0] + 1]; - u[2] = model->vertices[3 * T(i).vindices[1] + 2] - - model->vertices[3 * T(i).vindices[0] + 2]; - - v[0] = model->vertices[3 * T(i).vindices[2] + 0] - - model->vertices[3 * T(i).vindices[0] + 0]; - v[1] = model->vertices[3 * T(i).vindices[2] + 1] - - model->vertices[3 * T(i).vindices[0] + 1]; - v[2] = model->vertices[3 * T(i).vindices[2] + 2] - - model->vertices[3 * T(i).vindices[0] + 2]; - - glmCross(u, v, &model->facetnorms[3 * (i+1)]); - glmNormalize(&model->facetnorms[3 * (i+1)]); - } -} - -/* glmVertexNormals: Generates smooth vertex normals for a model. - * First builds a list of all the triangles each vertex is in. Then - * loops through each vertex in the the list averaging all the facet - * normals of the triangles each vertex is in. Finally, sets the - * normal index in the triangle for the vertex to the generated smooth - * normal. If the dot product of a facet normal and the facet normal - * associated with the first triangle in the list of triangles the - * current vertex is in is greater than the cosine of the angle - * parameter to the function, that facet normal is not added into the - * average normal calculation and the corresponding vertex is given - * the facet normal. This tends to preserve hard edges. The angle to - * use depends on the model, but 90 degrees is usually a good start. - * - * model - initialized GLMmodel structure - * angle - maximum angle (in degrees) to smooth across - */ -GLvoid -glmVertexNormals(GLMmodel* model, GLfloat angle) -{ - GLMnode* node; - GLMnode* tail; - GLMnode** members; - GLfloat* normals; - GLuint numnormals; - GLfloat average[3]; - GLfloat dot, cos_angle; - GLuint i, avg; - - assert(model); - assert(model->facetnorms); - - /* calculate the cosine of the angle (in degrees) */ - cos_angle = cos(angle * M_PI / 180.0); - - /* nuke any previous normals */ - if (model->normals) - free(model->normals); - - /* allocate space for new normals */ - model->numnormals = model->numtriangles * 3; /* 3 normals per triangle */ - model->normals = (GLfloat*)malloc(sizeof(GLfloat)* 3* (model->numnormals+1)); - - /* allocate a structure that will hold a linked list of triangle - indices for each vertex */ - members = (GLMnode**)malloc(sizeof(GLMnode*) * (model->numvertices + 1)); - for (i = 1; i <= model->numvertices; i++) - members[i] = NULL; - - /* for every triangle, create a node for each vertex in it */ - for (i = 0; i < model->numtriangles; i++) { - node = (GLMnode*)malloc(sizeof(GLMnode)); - node->index = i; - node->next = members[T(i).vindices[0]]; - members[T(i).vindices[0]] = node; - - node = (GLMnode*)malloc(sizeof(GLMnode)); - node->index = i; - node->next = members[T(i).vindices[1]]; - members[T(i).vindices[1]] = node; - - node = (GLMnode*)malloc(sizeof(GLMnode)); - node->index = i; - node->next = members[T(i).vindices[2]]; - members[T(i).vindices[2]] = node; - } - - /* calculate the average normal for each vertex */ - numnormals = 1; - for (i = 1; i <= model->numvertices; i++) { - /* calculate an average normal for this vertex by averaging the - facet normal of every triangle this vertex is in */ - node = members[i]; - if (!node) - fprintf(stderr, "glmVertexNormals(): vertex w/o a triangle\n"); - average[0] = 0.0; average[1] = 0.0; average[2] = 0.0; - avg = 0; - while (node) { - /* only average if the dot product of the angle between the two - facet normals is greater than the cosine of the threshold - angle -- or, said another way, the angle between the two - facet normals is less than (or equal to) the threshold angle */ - dot = glmDot(&model->facetnorms[3 * T(node->index).findex], - &model->facetnorms[3 * T(members[i]->index).findex]); - if (dot > cos_angle) { - node->averaged = GL_TRUE; - average[0] += model->facetnorms[3 * T(node->index).findex + 0]; - average[1] += model->facetnorms[3 * T(node->index).findex + 1]; - average[2] += model->facetnorms[3 * T(node->index).findex + 2]; - avg = 1; /* we averaged at least one normal! */ - } else { - node->averaged = GL_FALSE; - } - node = node->next; - } - - if (avg) { - /* normalize the averaged normal */ - glmNormalize(average); - - /* add the normal to the vertex normals list */ - model->normals[3 * numnormals + 0] = average[0]; - model->normals[3 * numnormals + 1] = average[1]; - model->normals[3 * numnormals + 2] = average[2]; - avg = numnormals; - numnormals++; - } - - /* set the normal of this vertex in each triangle it is in */ - node = members[i]; - while (node) { - if (node->averaged) { - /* if this node was averaged, use the average normal */ - if (T(node->index).vindices[0] == i) - T(node->index).nindices[0] = avg; - else if (T(node->index).vindices[1] == i) - T(node->index).nindices[1] = avg; - else if (T(node->index).vindices[2] == i) - T(node->index).nindices[2] = avg; - } else { - /* if this node wasn't averaged, use the facet normal */ - model->normals[3 * numnormals + 0] = - model->facetnorms[3 * T(node->index).findex + 0]; - model->normals[3 * numnormals + 1] = - model->facetnorms[3 * T(node->index).findex + 1]; - model->normals[3 * numnormals + 2] = - model->facetnorms[3 * T(node->index).findex + 2]; - if (T(node->index).vindices[0] == i) - T(node->index).nindices[0] = numnormals; - else if (T(node->index).vindices[1] == i) - T(node->index).nindices[1] = numnormals; - else if (T(node->index).vindices[2] == i) - T(node->index).nindices[2] = numnormals; - numnormals++; - } - node = node->next; - } - } - - model->numnormals = numnormals - 1; - - /* free the member information */ - for (i = 1; i <= model->numvertices; i++) { - node = members[i]; - while (node) { - tail = node; - node = node->next; - free(tail); - } - } - free(members); - - /* pack the normals array (we previously allocated the maximum - number of normals that could possibly be created (numtriangles * - 3), so get rid of some of them (usually alot unless none of the - facet normals were averaged)) */ - normals = model->normals; - model->normals = (GLfloat*)malloc(sizeof(GLfloat)* 3* (model->numnormals+1)); - for (i = 1; i <= model->numnormals; i++) { - model->normals[3 * i + 0] = normals[3 * i + 0]; - model->normals[3 * i + 1] = normals[3 * i + 1]; - model->normals[3 * i + 2] = normals[3 * i + 2]; - } - free(normals); -} - - -/* glmLinearTexture: Generates texture coordinates according to a - * linear projection of the texture map. It generates these by - * linearly mapping the vertices onto a square. - * - * model - pointer to initialized GLMmodel structure - */ -GLvoid -glmLinearTexture(GLMmodel* model) -{ - GLMgroup *group; - GLfloat dimensions[3]; - GLfloat x, y, scalefactor; - GLuint i; - - assert(model); - - if (model->texcoords) - free(model->texcoords); - model->numtexcoords = model->numvertices; - model->texcoords=(GLfloat*)malloc(sizeof(GLfloat)*2*(model->numtexcoords+1)); - - glmDimensions(model, dimensions); - scalefactor = 2.0 / - glmAbs(glmMax(glmMax(dimensions[0], dimensions[1]), dimensions[2])); - - /* do the calculations */ - for(i = 1; i <= model->numvertices; i++) { - x = model->vertices[3 * i + 0] * scalefactor; - y = model->vertices[3 * i + 2] * scalefactor; - model->texcoords[2 * i + 0] = (x + 1.0) / 2.0; - model->texcoords[2 * i + 1] = (y + 1.0) / 2.0; - } - - /* go through and put texture coordinate indices in all the triangles */ - group = model->groups; - while(group) { - for(i = 0; i < group->numtriangles; i++) { - T(group->triangles[i]).tindices[0] = T(group->triangles[i]).vindices[0]; - T(group->triangles[i]).tindices[1] = T(group->triangles[i]).vindices[1]; - T(group->triangles[i]).tindices[2] = T(group->triangles[i]).vindices[2]; - } - group = group->next; - } - -#if 0 - printf("glmLinearTexture(): generated %d linear texture coordinates\n", - model->numtexcoords); -#endif -} - -/* glmSpheremapTexture: Generates texture coordinates according to a - * spherical projection of the texture map. Sometimes referred to as - * spheremap, or reflection map texture coordinates. It generates - * these by using the normal to calculate where that vertex would map - * onto a sphere. Since it is impossible to map something flat - * perfectly onto something spherical, there is distortion at the - * poles. This particular implementation causes the poles along the X - * axis to be distorted. - * - * model - pointer to initialized GLMmodel structure - */ -GLvoid -glmSpheremapTexture(GLMmodel* model) -{ - GLMgroup* group; - GLfloat theta, phi, rho, x, y, z, r; - GLuint i; - - assert(model); - assert(model->normals); - - if (model->texcoords) - free(model->texcoords); - model->numtexcoords = model->numnormals; - model->texcoords=(GLfloat*)malloc(sizeof(GLfloat)*2*(model->numtexcoords+1)); - - for (i = 1; i <= model->numnormals; i++) { - z = model->normals[3 * i + 0]; /* re-arrange for pole distortion */ - y = model->normals[3 * i + 1]; - x = model->normals[3 * i + 2]; - r = sqrt((x * x) + (y * y)); - rho = sqrt((r * r) + (z * z)); - - if(r == 0.0) { - theta = 0.0; - phi = 0.0; - } else { - if(z == 0.0) - phi = 3.14159265 / 2.0; - else - phi = acos(z / rho); - - if(y == 0.0) - theta = 3.141592365 / 2.0; - else - theta = asin(y / r) + (3.14159265 / 2.0); - } - - model->texcoords[2 * i + 0] = theta / 3.14159265; - model->texcoords[2 * i + 1] = phi / 3.14159265; - } - - /* go through and put texcoord indices in all the triangles */ - group = model->groups; - while(group) { - for (i = 0; i < group->numtriangles; i++) { - T(group->triangles[i]).tindices[0] = T(group->triangles[i]).nindices[0]; - T(group->triangles[i]).tindices[1] = T(group->triangles[i]).nindices[1]; - T(group->triangles[i]).tindices[2] = T(group->triangles[i]).nindices[2]; - } - group = group->next; - } -} - -/* glmDelete: Deletes a GLMmodel structure. - * - * model - initialized GLMmodel structure - */ -GLvoid -glmDelete(GLMmodel* model) -{ - GLMgroup* group; - GLuint i; - - assert(model); - - if (model->pathname) free(model->pathname); - if (model->mtllibname) free(model->mtllibname); - if (model->vertices) free(model->vertices); - if (model->normals) free(model->normals); - if (model->texcoords) free(model->texcoords); - if (model->facetnorms) free(model->facetnorms); - if (model->triangles) free(model->triangles); - if (model->materials) { - for (i = 0; i < model->nummaterials; i++) - free(model->materials[i].name); - } - free(model->materials); - while(model->groups) { - group = model->groups; - model->groups = model->groups->next; - free(group->name); - free(group->triangles); - free(group); - } - - free(model); -} - -/* glmReadOBJ: Reads a model description from a Wavefront .OBJ file. - * Returns a pointer to the created object which should be free'd with - * glmDelete(). - * - * filename - name of the file containing the Wavefront .OBJ format data. - */ -GLMmodel* -glmReadOBJ(char* filename) -{ - GLMmodel* model; - FILE* file; - - /* open the file */ - file = fopen(filename, "r"); - if (!file) { - fprintf(stderr, "glmReadOBJ() failed: can't open data file \"%s\".\n", - filename); - exit(1); - } - - /* allocate a new model */ - model = (GLMmodel*)malloc(sizeof(GLMmodel)); - model->pathname = strdup(filename); - model->mtllibname = NULL; - model->numvertices = 0; - model->vertices = NULL; - model->numnormals = 0; - model->normals = NULL; - model->numtexcoords = 0; - model->texcoords = NULL; - model->numfacetnorms = 0; - model->facetnorms = NULL; - model->numtriangles = 0; - model->triangles = NULL; - model->nummaterials = 0; - model->materials = NULL; - model->numgroups = 0; - model->groups = NULL; - model->position[0] = 0.0; - model->position[1] = 0.0; - model->position[2] = 0.0; - - /* make a first pass through the file to get a count of the number - of vertices, normals, texcoords & triangles */ - glmFirstPass(model, file); - - /* allocate memory */ - model->vertices = (GLfloat*)malloc(sizeof(GLfloat) * - 3 * (model->numvertices + 1)); - model->triangles = (GLMtriangle*)malloc(sizeof(GLMtriangle) * - model->numtriangles); - if (model->numnormals) { - model->normals = (GLfloat*)malloc(sizeof(GLfloat) * - 3 * (model->numnormals + 1)); - } - if (model->numtexcoords) { - model->texcoords = (GLfloat*)malloc(sizeof(GLfloat) * - 2 * (model->numtexcoords + 1)); - } - - /* rewind to beginning of file and read in the data this pass */ - rewind(file); - - glmSecondPass(model, file); - - /* close the file */ - fclose(file); - - return model; -} - -/* glmWriteOBJ: Writes a model description in Wavefront .OBJ format to - * a file. - * - * model - initialized GLMmodel structure - * filename - name of the file to write the Wavefront .OBJ format data to - * mode - a bitwise or of values describing what is written to the file - * GLM_NONE - render with only vertices - * GLM_FLAT - render with facet normals - * GLM_SMOOTH - render with vertex normals - * GLM_TEXTURE - render with texture coords - * GLM_COLOR - render with colors (color material) - * GLM_MATERIAL - render with materials - * GLM_COLOR and GLM_MATERIAL should not both be specified. - * GLM_FLAT and GLM_SMOOTH should not both be specified. - */ -GLvoid -glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode) -{ - GLuint i; - FILE* file; - GLMgroup* group; - - assert(model); - - /* do a bit of warning */ - if (mode & GLM_FLAT && !model->facetnorms) { - printf("glmWriteOBJ() warning: flat normal output requested " - "with no facet normals defined.\n"); - mode &= ~GLM_FLAT; - } - if (mode & GLM_SMOOTH && !model->normals) { - printf("glmWriteOBJ() warning: smooth normal output requested " - "with no normals defined.\n"); - mode &= ~GLM_SMOOTH; - } - if (mode & GLM_TEXTURE && !model->texcoords) { - printf("glmWriteOBJ() warning: texture coordinate output requested " - "with no texture coordinates defined.\n"); - mode &= ~GLM_TEXTURE; - } - if (mode & GLM_FLAT && mode & GLM_SMOOTH) { - printf("glmWriteOBJ() warning: flat normal output requested " - "and smooth normal output requested (using smooth).\n"); - mode &= ~GLM_FLAT; - } - if (mode & GLM_COLOR && !model->materials) { - printf("glmWriteOBJ() warning: color output requested " - "with no colors (materials) defined.\n"); - mode &= ~GLM_COLOR; - } - if (mode & GLM_MATERIAL && !model->materials) { - printf("glmWriteOBJ() warning: material output requested " - "with no materials defined.\n"); - mode &= ~GLM_MATERIAL; - } - if (mode & GLM_COLOR && mode & GLM_MATERIAL) { - printf("glmDraw() warning: color and material output requested " - "outputting only materials.\n"); - mode &= ~GLM_COLOR; - } - - - /* open the file */ - file = fopen(filename, "w"); - if (!file) { - fprintf(stderr, "glmWriteOBJ() failed: can't open file \"%s\" to write.\n", - filename); - exit(1); - } - - /* spit out a header */ - fprintf(file, "# \n"); - fprintf(file, "# Wavefront OBJ generated by GLM library\n"); - fprintf(file, "# \n"); - fprintf(file, "# GLM library\n"); - fprintf(file, "# Nate Robins\n"); - fprintf(file, "# ndr@pobox.com\n"); - fprintf(file, "# http://www.pobox.com/~ndr\n"); - fprintf(file, "# \n"); - - if (mode & GLM_MATERIAL && model->mtllibname) { - fprintf(file, "\nmtllib %s\n\n", model->mtllibname); - glmWriteMTL(model, filename, model->mtllibname); - } - - /* spit out the vertices */ - fprintf(file, "\n"); - fprintf(file, "# %d vertices\n", model->numvertices); - for (i = 1; i <= model->numvertices; i++) { - fprintf(file, "v %f %f %f\n", - model->vertices[3 * i + 0], - model->vertices[3 * i + 1], - model->vertices[3 * i + 2]); - } - - /* spit out the smooth/flat normals */ - if (mode & GLM_SMOOTH) { - fprintf(file, "\n"); - fprintf(file, "# %d normals\n", model->numnormals); - for (i = 1; i <= model->numnormals; i++) { - fprintf(file, "vn %f %f %f\n", - model->normals[3 * i + 0], - model->normals[3 * i + 1], - model->normals[3 * i + 2]); - } - } else if (mode & GLM_FLAT) { - fprintf(file, "\n"); - fprintf(file, "# %d normals\n", model->numfacetnorms); - for (i = 1; i <= model->numnormals; i++) { - fprintf(file, "vn %f %f %f\n", - model->facetnorms[3 * i + 0], - model->facetnorms[3 * i + 1], - model->facetnorms[3 * i + 2]); - } - } - - /* spit out the texture coordinates */ - if (mode & GLM_TEXTURE) { - fprintf(file, "\n"); - fprintf(file, "# %d texcoords\n", model->texcoords); - for (i = 1; i <= model->numtexcoords; i++) { - fprintf(file, "vt %f %f\n", - model->texcoords[2 * i + 0], - model->texcoords[2 * i + 1]); - } - } - - fprintf(file, "\n"); - fprintf(file, "# %d groups\n", model->numgroups); - fprintf(file, "# %d faces (triangles)\n", model->numtriangles); - fprintf(file, "\n"); - - group = model->groups; - while(group) { - fprintf(file, "g %s\n", group->name); - if (mode & GLM_MATERIAL) - fprintf(file, "usemtl %s\n", model->materials[group->material].name); - for (i = 0; i < group->numtriangles; i++) { - if (mode & GLM_SMOOTH && mode & GLM_TEXTURE) { - fprintf(file, "f %d/%d/%d %d/%d/%d %d/%d/%d\n", - T(group->triangles[i]).vindices[0], - T(group->triangles[i]).nindices[0], - T(group->triangles[i]).tindices[0], - T(group->triangles[i]).vindices[1], - T(group->triangles[i]).nindices[1], - T(group->triangles[i]).tindices[1], - T(group->triangles[i]).vindices[2], - T(group->triangles[i]).nindices[2], - T(group->triangles[i]).tindices[2]); - } else if (mode & GLM_FLAT && mode & GLM_TEXTURE) { - fprintf(file, "f %d/%d %d/%d %d/%d\n", - T(group->triangles[i]).vindices[0], - T(group->triangles[i]).findex, - T(group->triangles[i]).vindices[1], - T(group->triangles[i]).findex, - T(group->triangles[i]).vindices[2], - T(group->triangles[i]).findex); - } else if (mode & GLM_TEXTURE) { - fprintf(file, "f %d/%d %d/%d %d/%d\n", - T(group->triangles[i]).vindices[0], - T(group->triangles[i]).tindices[0], - T(group->triangles[i]).vindices[1], - T(group->triangles[i]).tindices[1], - T(group->triangles[i]).vindices[2], - T(group->triangles[i]).tindices[2]); - } else if (mode & GLM_SMOOTH) { - fprintf(file, "f %d//%d %d//%d %d//%d\n", - T(group->triangles[i]).vindices[0], - T(group->triangles[i]).nindices[0], - T(group->triangles[i]).vindices[1], - T(group->triangles[i]).nindices[1], - T(group->triangles[i]).vindices[2], - T(group->triangles[i]).nindices[2]); - } else if (mode & GLM_FLAT) { - fprintf(file, "f %d//%d %d//%d %d//%d\n", - T(group->triangles[i]).vindices[0], - T(group->triangles[i]).findex, - T(group->triangles[i]).vindices[1], - T(group->triangles[i]).findex, - T(group->triangles[i]).vindices[2], - T(group->triangles[i]).findex); - } else { - fprintf(file, "f %d %d %d\n", - T(group->triangles[i]).vindices[0], - T(group->triangles[i]).vindices[1], - T(group->triangles[i]).vindices[2]); - } - } - fprintf(file, "\n"); - group = group->next; - } - - fclose(file); -} - -/* glmDraw: Renders the model to the current OpenGL context using the - * mode specified. - * - * model - initialized GLMmodel structure - * mode - a bitwise OR of values describing what is to be rendered. - * GLM_NONE - render with only vertices - * GLM_FLAT - render with facet normals - * GLM_SMOOTH - render with vertex normals - * GLM_TEXTURE - render with texture coords - * GLM_COLOR - render with colors (color material) - * GLM_MATERIAL - render with materials - * GLM_COLOR and GLM_MATERIAL should not both be specified. - * GLM_FLAT and GLM_SMOOTH should not both be specified. - */ -GLvoid -glmDraw(GLMmodel* model, GLuint mode) -{ - static GLuint i; - static GLMgroup* group; - static GLMtriangle* triangle; - static GLMmaterial* material; - - assert(model); - assert(model->vertices); - - /* do a bit of warning */ - if (mode & GLM_FLAT && !model->facetnorms) { - printf("glmDraw() warning: flat render mode requested " - "with no facet normals defined.\n"); - mode &= ~GLM_FLAT; - } - if (mode & GLM_SMOOTH && !model->normals) { - printf("glmDraw() warning: smooth render mode requested " - "with no normals defined.\n"); - mode &= ~GLM_SMOOTH; - } - if (mode & GLM_TEXTURE && !model->texcoords) { - printf("glmDraw() warning: texture render mode requested " - "with no texture coordinates defined.\n"); - mode &= ~GLM_TEXTURE; - } - if (mode & GLM_FLAT && mode & GLM_SMOOTH) { - printf("glmDraw() warning: flat render mode requested " - "and smooth render mode requested (using smooth).\n"); - mode &= ~GLM_FLAT; - } - if (mode & GLM_COLOR && !model->materials) { - printf("glmDraw() warning: color render mode requested " - "with no materials defined.\n"); - mode &= ~GLM_COLOR; - } - if (mode & GLM_MATERIAL && !model->materials) { - printf("glmDraw() warning: material render mode requested " - "with no materials defined.\n"); - mode &= ~GLM_MATERIAL; - } - if (mode & GLM_COLOR && mode & GLM_MATERIAL) { - printf("glmDraw() warning: color and material render mode requested " - "using only material mode.\n"); - mode &= ~GLM_COLOR; - } - if (mode & GLM_COLOR) - glEnable(GL_COLOR_MATERIAL); - else if (mode & GLM_MATERIAL) - glDisable(GL_COLOR_MATERIAL); - - /* perhaps this loop should be unrolled into material, color, flat, - smooth, etc. loops? since most cpu's have good branch prediction - schemes (and these branches will always go one way), probably - wouldn't gain too much? */ - - group = model->groups; - while (group) { - if (mode & GLM_MATERIAL) { - material = &model->materials[group->material]; - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material->ambient); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material->diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material->specular); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, material->shininess); - } - - if (mode & GLM_COLOR) { - material = &model->materials[group->material]; - glColor3fv(material->diffuse); - } - - glBegin(GL_TRIANGLES); - for (i = 0; i < group->numtriangles; i++) { - triangle = &T(group->triangles[i]); - - if (mode & GLM_FLAT) - glNormal3fv(&model->facetnorms[3 * triangle->findex]); - - if (mode & GLM_SMOOTH) - glNormal3fv(&model->normals[3 * triangle->nindices[0]]); - if (mode & GLM_TEXTURE) - glTexCoord2fv(&model->texcoords[2 * triangle->tindices[0]]); - glVertex3fv(&model->vertices[3 * triangle->vindices[0]]); - - if (mode & GLM_SMOOTH) - glNormal3fv(&model->normals[3 * triangle->nindices[1]]); - if (mode & GLM_TEXTURE) - glTexCoord2fv(&model->texcoords[2 * triangle->tindices[1]]); - glVertex3fv(&model->vertices[3 * triangle->vindices[1]]); - - if (mode & GLM_SMOOTH) - glNormal3fv(&model->normals[3 * triangle->nindices[2]]); - if (mode & GLM_TEXTURE) - glTexCoord2fv(&model->texcoords[2 * triangle->tindices[2]]); - glVertex3fv(&model->vertices[3 * triangle->vindices[2]]); - - } - glEnd(); - - group = group->next; - } -} - -/* glmList: Generates and returns a display list for the model using - * the mode specified. - * - * model - initialized GLMmodel structure - * mode - a bitwise OR of values describing what is to be rendered. - * GLM_NONE - render with only vertices - * GLM_FLAT - render with facet normals - * GLM_SMOOTH - render with vertex normals - * GLM_TEXTURE - render with texture coords - * GLM_COLOR - render with colors (color material) - * GLM_MATERIAL - render with materials - * GLM_COLOR and GLM_MATERIAL should not both be specified. - * GLM_FLAT and GLM_SMOOTH should not both be specified. */ -GLuint -glmList(GLMmodel* model, GLuint mode) -{ - GLuint list; - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - glmDraw(model, mode); - glEndList(); - - return list; -} - -/* glmWeld: eliminate (weld) vectors that are within an epsilon of - * each other. - * - * model - initialized GLMmodel structure - * epsilon - maximum difference between vertices - * ( 0.00001 is a good start for a unitized model) - * - */ -GLuint -glmWeld(GLMmodel* model, GLfloat epsilon) -{ - GLfloat* vectors; - GLfloat* copies; - GLuint numvectors; - GLuint i, welded; - - /* vertices */ - numvectors = model->numvertices; - vectors = model->vertices; - copies = glmWeldVectors(vectors, &numvectors, epsilon); - welded = model->numvertices - numvectors - 1; - - for (i = 0; i < model->numtriangles; i++) { - T(i).vindices[0] = (GLuint)vectors[3 * T(i).vindices[0] + 0]; - T(i).vindices[1] = (GLuint)vectors[3 * T(i).vindices[1] + 0]; - T(i).vindices[2] = (GLuint)vectors[3 * T(i).vindices[2] + 0]; - } - - /* free space for old vertices */ - free(vectors); - - /* allocate space for the new vertices */ - model->numvertices = numvectors; - model->vertices = (GLfloat*)malloc(sizeof(GLfloat) * - 3 * (model->numvertices + 1)); - - /* copy the optimized vertices into the actual vertex list */ - for (i = 1; i <= model->numvertices; i++) { - model->vertices[3 * i + 0] = copies[3 * i + 0]; - model->vertices[3 * i + 1] = copies[3 * i + 1]; - model->vertices[3 * i + 2] = copies[3 * i + 2]; - } - - free(copies); - - return welded; -} - - -#if 0 - /* normals */ - if (model->numnormals) { - numvectors = model->numnormals; - vectors = model->normals; - copies = glmOptimizeVectors(vectors, &numvectors); - - printf("glmOptimize(): %d redundant normals.\n", - model->numnormals - numvectors); - - for (i = 0; i < model->numtriangles; i++) { - T(i).nindices[0] = (GLuint)vectors[3 * T(i).nindices[0] + 0]; - T(i).nindices[1] = (GLuint)vectors[3 * T(i).nindices[1] + 0]; - T(i).nindices[2] = (GLuint)vectors[3 * T(i).nindices[2] + 0]; - } - - /* free space for old normals */ - free(vectors); - - /* allocate space for the new normals */ - model->numnormals = numvectors; - model->normals = (GLfloat*)malloc(sizeof(GLfloat) * - 3 * (model->numnormals + 1)); - - /* copy the optimized vertices into the actual vertex list */ - for (i = 1; i <= model->numnormals; i++) { - model->normals[3 * i + 0] = copies[3 * i + 0]; - model->normals[3 * i + 1] = copies[3 * i + 1]; - model->normals[3 * i + 2] = copies[3 * i + 2]; - } - - free(copies); - } - - /* texcoords */ - if (model->numtexcoords) { - numvectors = model->numtexcoords; - vectors = model->texcoords; - copies = glmOptimizeVectors(vectors, &numvectors); - - printf("glmOptimize(): %d redundant texcoords.\n", - model->numtexcoords - numvectors); - - for (i = 0; i < model->numtriangles; i++) { - for (j = 0; j < 3; j++) { - T(i).tindices[j] = (GLuint)vectors[3 * T(i).tindices[j] + 0]; - } - } - - /* free space for old texcoords */ - free(vectors); - - /* allocate space for the new texcoords */ - model->numtexcoords = numvectors; - model->texcoords = (GLfloat*)malloc(sizeof(GLfloat) * - 2 * (model->numtexcoords + 1)); - - /* copy the optimized vertices into the actual vertex list */ - for (i = 1; i <= model->numtexcoords; i++) { - model->texcoords[2 * i + 0] = copies[2 * i + 0]; - model->texcoords[2 * i + 1] = copies[2 * i + 1]; - } - - free(copies); - } -#endif - -#if 0 - /* look for unused vertices */ - /* look for unused normals */ - /* look for unused texcoords */ - for (i = 1; i <= model->numvertices; i++) { - for (j = 0; j < model->numtriangles; i++) { - if (T(j).vindices[0] == i || - T(j).vindices[1] == i || - T(j).vindices[1] == i) - break; - } - } -#endif diff --git a/lib/glut-3.7.6/progs/demos/smooth/glm.h b/lib/glut-3.7.6/progs/demos/smooth/glm.h deleted file mode 100644 index bd31b98b14f4d023681d74c20362e767683fc2db..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/glm.h +++ /dev/null @@ -1,247 +0,0 @@ -/* - glm.h - Nate Robins, 1997 - ndr@pobox.com, http://www.pobox.com/~ndr/ - - Wavefront OBJ model file format reader/writer/manipulator. - - Includes routines for generating smooth normals with - preservation of edges, welding redundant vertices & texture - coordinate generation (spheremap and planar projections) + more. - - */ - - -#include - - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - -#define GLM_NONE (0) /* render with only vertices */ -#define GLM_FLAT (1 << 0) /* render with facet normals */ -#define GLM_SMOOTH (1 << 1) /* render with vertex normals */ -#define GLM_TEXTURE (1 << 2) /* render with texture coords */ -#define GLM_COLOR (1 << 3) /* render with colors */ -#define GLM_MATERIAL (1 << 4) /* render with materials */ - - -/* GLMmaterial: Structure that defines a material in a model. - */ -typedef struct _GLMmaterial -{ - char* name; /* name of material */ - GLfloat diffuse[4]; /* diffuse component */ - GLfloat ambient[4]; /* ambient component */ - GLfloat specular[4]; /* specular component */ - GLfloat emmissive[4]; /* emmissive component */ - GLfloat shininess; /* specular exponent */ -} GLMmaterial; - -/* GLMtriangle: Structure that defines a triangle in a model. - */ -typedef struct _GLMtriangle { - GLuint vindices[3]; /* array of triangle vertex indices */ - GLuint nindices[3]; /* array of triangle normal indices */ - GLuint tindices[3]; /* array of triangle texcoord indices*/ - GLuint findex; /* index of triangle facet normal */ -} GLMtriangle; - -/* GLMgroup: Structure that defines a group in a model. - */ -typedef struct _GLMgroup { - char* name; /* name of this group */ - GLuint numtriangles; /* number of triangles in this group */ - GLuint* triangles; /* array of triangle indices */ - GLuint material; /* index to material for group */ - struct _GLMgroup* next; /* pointer to next group in model */ -} GLMgroup; - -/* GLMmodel: Structure that defines a model. - */ -typedef struct _GLMmodel { - char* pathname; /* path to this model */ - char* mtllibname; /* name of the material library */ - - GLuint numvertices; /* number of vertices in model */ - GLfloat* vertices; /* array of vertices */ - - GLuint numnormals; /* number of normals in model */ - GLfloat* normals; /* array of normals */ - - GLuint numtexcoords; /* number of texcoords in model */ - GLfloat* texcoords; /* array of texture coordinates */ - - GLuint numfacetnorms; /* number of facetnorms in model */ - GLfloat* facetnorms; /* array of facetnorms */ - - GLuint numtriangles; /* number of triangles in model */ - GLMtriangle* triangles; /* array of triangles */ - - GLuint nummaterials; /* number of materials in model */ - GLMmaterial* materials; /* array of materials */ - - GLuint numgroups; /* number of groups in model */ - GLMgroup* groups; /* linked list of groups */ - - GLfloat position[3]; /* position of the model */ - -} GLMmodel; - - -/* glmUnitize: "unitize" a model by translating it to the origin and - * scaling it to fit in a unit cube around the origin. Returns the - * scalefactor used. - * - * model - properly initialized GLMmodel structure - */ -GLfloat -glmUnitize(GLMmodel* model); - -/* glmDimensions: Calculates the dimensions (width, height, depth) of - * a model. - * - * model - initialized GLMmodel structure - * dimensions - array of 3 GLfloats (GLfloat dimensions[3]) - */ -GLvoid -glmDimensions(GLMmodel* model, GLfloat* dimensions); - -/* glmScale: Scales a model by a given amount. - * - * model - properly initialized GLMmodel structure - * scale - scalefactor (0.5 = half as large, 2.0 = twice as large) - */ -GLvoid -glmScale(GLMmodel* model, GLfloat scale); - -/* glmReverseWinding: Reverse the polygon winding for all polygons in - * this model. Default winding is counter-clockwise. Also changes - * the direction of the normals. - * - * model - properly initialized GLMmodel structure - */ -GLvoid -glmReverseWinding(GLMmodel* model); - -/* glmFacetNormals: Generates facet normals for a model (by taking the - * cross product of the two vectors derived from the sides of each - * triangle). Assumes a counter-clockwise winding. - * - * model - initialized GLMmodel structure - */ -GLvoid -glmFacetNormals(GLMmodel* model); - -/* glmVertexNormals: Generates smooth vertex normals for a model. - * First builds a list of all the triangles each vertex is in. Then - * loops through each vertex in the the list averaging all the facet - * normals of the triangles each vertex is in. Finally, sets the - * normal index in the triangle for the vertex to the generated smooth - * normal. If the dot product of a facet normal and the facet normal - * associated with the first triangle in the list of triangles the - * current vertex is in is greater than the cosine of the angle - * parameter to the function, that facet normal is not added into the - * average normal calculation and the corresponding vertex is given - * the facet normal. This tends to preserve hard edges. The angle to - * use depends on the model, but 90 degrees is usually a good start. - * - * model - initialized GLMmodel structure - * angle - maximum angle (in degrees) to smooth across - */ -GLvoid -glmVertexNormals(GLMmodel* model, GLfloat angle); - -/* glmLinearTexture: Generates texture coordinates according to a - * linear projection of the texture map. It generates these by - * linearly mapping the vertices onto a square. - * - * model - pointer to initialized GLMmodel structure - */ -GLvoid -glmLinearTexture(GLMmodel* model); - -/* glmSpheremapTexture: Generates texture coordinates according to a - * spherical projection of the texture map. Sometimes referred to as - * spheremap, or reflection map texture coordinates. It generates - * these by using the normal to calculate where that vertex would map - * onto a sphere. Since it is impossible to map something flat - * perfectly onto something spherical, there is distortion at the - * poles. This particular implementation causes the poles along the X - * axis to be distorted. - * - * model - pointer to initialized GLMmodel structure - */ -GLvoid -glmSpheremapTexture(GLMmodel* model); - -/* glmDelete: Deletes a GLMmodel structure. - * - * model - initialized GLMmodel structure - */ -GLvoid -glmDelete(GLMmodel* model); - -/* glmReadOBJ: Reads a model description from a Wavefront .OBJ file. - * Returns a pointer to the created object which should be free'd with - * glmDelete(). - * - * filename - name of the file containing the Wavefront .OBJ format data. - */ -GLMmodel* -glmReadOBJ(char* filename); - -/* glmWriteOBJ: Writes a model description in Wavefront .OBJ format to - * a file. - * - * model - initialized GLMmodel structure - * filename - name of the file to write the Wavefront .OBJ format data to - * mode - a bitwise or of values describing what is written to the file - * GLM_NONE - write only vertices - * GLM_FLAT - write facet normals - * GLM_SMOOTH - write vertex normals - * GLM_TEXTURE - write texture coords - * GLM_FLAT and GLM_SMOOTH should not both be specified. - */ -GLvoid -glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode); - -/* glmDraw: Renders the model to the current OpenGL context using the - * mode specified. - * - * model - initialized GLMmodel structure - * mode - a bitwise OR of values describing what is to be rendered. - * GLM_NONE - render with only vertices - * GLM_FLAT - render with facet normals - * GLM_SMOOTH - render with vertex normals - * GLM_TEXTURE - render with texture coords - * GLM_FLAT and GLM_SMOOTH should not both be specified. - */ -GLvoid -glmDraw(GLMmodel* model, GLuint mode); - -/* glmList: Generates and returns a display list for the model using - * the mode specified. - * - * model - initialized GLMmodel structure - * mode - a bitwise OR of values describing what is to be rendered. - * GLM_NONE - render with only vertices - * GLM_FLAT - render with facet normals - * GLM_SMOOTH - render with vertex normals - * GLM_TEXTURE - render with texture coords - * GLM_FLAT and GLM_SMOOTH should not both be specified. - */ -GLuint -glmList(GLMmodel* model, GLuint mode); - -/* glmWeld: eliminate (weld) vectors that are within an epsilon of - * each other. - * - * model - initialized GLMmodel structure - * epsilon - maximum difference between vertices - * ( 0.00001 is a good start for a unitized model) - * - */ -GLuint -glmWeld(GLMmodel* model, GLfloat epsilon); diff --git a/lib/glut-3.7.6/progs/demos/smooth/gltb.c b/lib/glut-3.7.6/progs/demos/smooth/gltb.c deleted file mode 100644 index f666370139e6ac26070f4e540ba22ee126e8228b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/gltb.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - */ - - -#include -#include -#include -#include -#include "gltb.h" - - -#define GLTB_TIME_EPSILON 10 - - -static GLuint gltb_lasttime; -static GLfloat gltb_lastposition[3]; - -static GLfloat gltb_angle = 0.0; -static GLfloat gltb_axis[3]; -static GLfloat gltb_transform[4][4]; - -static GLuint gltb_width; -static GLuint gltb_height; - -static GLint gltb_button = -1; -static GLboolean gltb_tracking = GL_FALSE; -static GLboolean gltb_animate = GL_TRUE; - - -static void -_gltbPointToVector(int x, int y, int width, int height, float v[3]) -{ - float d, a; - - /* project x, y onto a hemi-sphere centered within width, height. */ - v[0] = (2.0 * x - width) / width; - v[1] = (height - 2.0 * y) / height; - d = sqrt(v[0] * v[0] + v[1] * v[1]); - v[2] = cos((3.14159265 / 2.0) * ((d < 1.0) ? d : 1.0)); - a = 1.0 / sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - v[0] *= a; - v[1] *= a; - v[2] *= a; -} - -static void -_gltbAnimate(void) -{ - glutPostRedisplay(); -} - -void -_gltbStartMotion(int x, int y, int button, int time) -{ - assert(gltb_button != -1); - - gltb_tracking = GL_TRUE; - gltb_lasttime = time; - _gltbPointToVector(x, y, gltb_width, gltb_height, gltb_lastposition); -} - -void -_gltbStopMotion(int button, unsigned time) -{ - assert(gltb_button != -1); - - gltb_tracking = GL_FALSE; - - if (time - gltb_lasttime < GLTB_TIME_EPSILON && gltb_animate) { - glutIdleFunc(_gltbAnimate); - } else { - gltb_angle = 0; - if (gltb_animate) - glutIdleFunc(0); - } -} - -void -gltbAnimate(GLboolean animate) -{ - gltb_animate = animate; -} - -void -gltbInit(GLuint button) -{ - gltb_button = button; - gltb_angle = 0.0; - - /* put the identity in the trackball transform */ - glPushMatrix(); - glLoadIdentity(); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat*)gltb_transform); - glPopMatrix(); -} - -void -gltbMatrix(void) -{ - assert(gltb_button != -1); - - glPushMatrix(); - glLoadIdentity(); - glRotatef(gltb_angle, gltb_axis[0], gltb_axis[1], gltb_axis[2]); - glMultMatrixf((GLfloat*)gltb_transform); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat*)gltb_transform); - glPopMatrix(); - - glMultMatrixf((GLfloat*)gltb_transform); -} - -void -gltbReshape(int width, int height) -{ - assert(gltb_button != -1); - - gltb_width = width; - gltb_height = height; -} - -void -gltbMouse(int button, int state, int x, int y) -{ - assert(gltb_button != -1); - - if (state == GLUT_DOWN && button == gltb_button) - _gltbStartMotion(x, y, button, glutGet(GLUT_ELAPSED_TIME)); - else if (state == GLUT_UP && button == gltb_button) - _gltbStopMotion(button, glutGet(GLUT_ELAPSED_TIME)); -} - -void -gltbMotion(int x, int y) -{ - GLfloat current_position[3], dx, dy, dz; - - assert(gltb_button != -1); - - if (gltb_tracking == GL_FALSE) - return; - - _gltbPointToVector(x, y, gltb_width, gltb_height, current_position); - - /* calculate the angle to rotate by (directly proportional to the - length of the mouse movement) */ - dx = current_position[0] - gltb_lastposition[0]; - dy = current_position[1] - gltb_lastposition[1]; - dz = current_position[2] - gltb_lastposition[2]; - gltb_angle = 90.0 * sqrt(dx * dx + dy * dy + dz * dz); - - /* calculate the axis of rotation (cross product) */ - gltb_axis[0] = gltb_lastposition[1] * current_position[2] - - gltb_lastposition[2] * current_position[1]; - gltb_axis[1] = gltb_lastposition[2] * current_position[0] - - gltb_lastposition[0] * current_position[2]; - gltb_axis[2] = gltb_lastposition[0] * current_position[1] - - gltb_lastposition[1] * current_position[0]; - - /* XXX - constrain motion */ - gltb_axis[2] = 0; - - /* reset for next time */ - gltb_lasttime = glutGet(GLUT_ELAPSED_TIME); - gltb_lastposition[0] = current_position[0]; - gltb_lastposition[1] = current_position[1]; - gltb_lastposition[2] = current_position[2]; - - /* remember to draw new position */ - glutPostRedisplay(); -} diff --git a/lib/glut-3.7.6/progs/demos/smooth/gltb.h b/lib/glut-3.7.6/progs/demos/smooth/gltb.h deleted file mode 100644 index 01666eb1e9250ab2ebad24a9f3d805f918069c33..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/gltb.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - * - * - * Usage: - * - * o call gltbInit() in before any other gltb call - * o call gltbReshape() from the reshape callback - * o call gltbMatrix() to get the trackball matrix rotation - * o call gltbStartMotion() to begin trackball movememt - * o call gltbStopMotion() to stop trackball movememt - * o call gltbMotion() from the motion callback - * o call gltbAnimate(GL_TRUE) if you want the trackball to continue - * spinning after the mouse button has been released - * o call gltbAnimate(GL_FALSE) if you want the trackball to stop - * spinning after the mouse button has been released - * - * Typical setup: - * - * - void - init(void) - { - gltbInit(GLUT_MIDDLE_BUTTON); - gltbAnimate(GL_TRUE); - . . . - } - - void - reshape(int width, int height) - { - gltbReshape(width, height); - . . . - } - - void - display(void) - { - glPushMatrix(); - - gltbMatrix(); - . . . draw the scene . . . - - glPopMatrix(); - } - - void - mouse(int button, int state, int x, int y) - { - gltbMouse(button, state, x, y); - . . . - } - - void - motion(int x, int y) - { - gltbMotion(x, y); - . . . - } - - int - main(int argc, char** argv) - { - . . . - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - . . . - } - * - * */ - - -/* functions */ -void -gltbInit(GLuint button); - -void -gltbMatrix(void); - -void -gltbReshape(int width, int height); - -void -gltbMouse(int button, int state, int x, int y); - -void -gltbMotion(int x, int y); - -void -gltbAnimate(GLboolean animate); diff --git a/lib/glut-3.7.6/progs/demos/smooth/gltx.c b/lib/glut-3.7.6/progs/demos/smooth/gltx.c deleted file mode 100644 index 047f0d12d7b004d638e0f4c03b7b586e0ecce779..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/gltx.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Simple SGI .rgb (IRIS RGB) image file reader ripped off from - * texture.c (written by David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - */ - - -/* includes */ -#include -#include -#include -#include -#include "gltx.h" - - -/* private typedefs */ -typedef struct _rawImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short sizeX, sizeY, sizeZ; - unsigned long min, max; - unsigned long wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp, *tmpR, *tmpG, *tmpB; - unsigned long rleEnd; - GLuint *rowStart; - GLint *rowSize; -} rawImageRec; - - -/* private functions */ -static void ConvertShort(unsigned short *array, unsigned int length) -{ - unsigned short b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void ConvertLong(GLuint *array, unsigned int length) -{ - unsigned long b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static rawImageRec *RawImageOpen(char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - rawImageRec *raw; - GLenum swapFlag; - int x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) { - swapFlag = GL_TRUE; - } else { - swapFlag = GL_FALSE; - } - - raw = (rawImageRec *)malloc(sizeof(rawImageRec)); - if (raw == NULL) { - return NULL; - } - if ((raw->file = fopen(fileName, "rb")) == NULL) { - return NULL; - } - - fread(raw, 1, 12, raw->file); - - if (swapFlag) { - ConvertShort(&raw->imagic, 6); - } - - raw->tmp = (unsigned char *)malloc(raw->sizeX*256); - raw->tmpR = (unsigned char *)malloc(raw->sizeX*256); - raw->tmpG = (unsigned char *)malloc(raw->sizeX*256); - raw->tmpB = (unsigned char *)malloc(raw->sizeX*256); - if (raw->tmp == NULL || raw->tmpR == NULL || raw->tmpG == NULL || - raw->tmpB == NULL) { - return NULL; - } - - if ((raw->type & 0xFF00) == 0x0100) { - x = raw->sizeY * raw->sizeZ * sizeof(GLuint); - raw->rowStart = (GLuint *)malloc(x); - raw->rowSize = (GLint *)malloc(x); - if (raw->rowStart == NULL || raw->rowSize == NULL) { - return NULL; - } - raw->rleEnd = 512 + (2 * x); - fseek(raw->file, 512, SEEK_SET); - fread(raw->rowStart, 1, x, raw->file); - fread(raw->rowSize, 1, x, raw->file); - if (swapFlag) { - ConvertLong(raw->rowStart, x/sizeof(GLuint)); - ConvertLong((GLuint *)raw->rowSize, x/sizeof(GLint)); - } - } - return raw; -} - -static void RawImageClose(rawImageRec *raw) -{ - - fclose(raw->file); - free(raw->tmp); - free(raw->tmpR); - free(raw->tmpG); - free(raw->tmpB); - - free(raw); -} - -static void RawImageGetRow(rawImageRec *raw, unsigned char *buf, int y, int z) -{ - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((raw->type & 0xFF00) == 0x0100) { - fseek(raw->file, (long) raw->rowStart[y+z*raw->sizeY], SEEK_SET); - fread(raw->tmp, 1, (unsigned int)raw->rowSize[y+z*raw->sizeY], - raw->file); - - iPtr = raw->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int)(pixel & 0x7F); - if (!count) { - return; - } - if (pixel & 0x80) { - while (count--) { - *oPtr++ = *iPtr++; - } - } else { - pixel = *iPtr++; - while (count--) { - *oPtr++ = pixel; - } - } - } - } else { - fseek(raw->file, 512+(y*raw->sizeX)+(z*raw->sizeX*raw->sizeY), - SEEK_SET); - fread(buf, 1, raw->sizeX, raw->file); - } -} - -static void -RawImageGetData(rawImageRec *raw, GLTXimage *image) -{ - unsigned char *ptr; - int i, j; - - image->data = (unsigned char *)malloc((raw->sizeX+1)*(raw->sizeY+1)*4); - if (image->data == NULL) { - return; - } - - ptr = image->data; - for (i = 0; i < raw->sizeY; i++) { - RawImageGetRow(raw, raw->tmpR, i, 0); - RawImageGetRow(raw, raw->tmpG, i, 1); - RawImageGetRow(raw, raw->tmpB, i, 2); - for (j = 0; j < raw->sizeX; j++) { - *ptr++ = *(raw->tmpR + j); - *ptr++ = *(raw->tmpG + j); - *ptr++ = *(raw->tmpB + j); - } - } -} - - - -/* public functions */ - -/* gltxDelete: Deletes a texture image - * - * image - properly initialized GLTXimage structure - */ -void -gltxDelete(GLTXimage* image) -{ - assert(image); - - free(image->data); - free(image); -} - -/* gltxReadRGB: Reads and returns data from an IRIS RGB image file. - * - * filename - name of the IRIS RGB file to read data from - */ -GLTXimage* -gltxReadRGB(char *filename) -{ - rawImageRec *raw; - GLTXimage* image; - - raw = RawImageOpen(filename); - if(!raw) { - fprintf(stderr, "gltxReadRGB() failed: can't open image file \"%s\".\n", - filename); - return NULL; - } - image = (GLTXimage*)malloc(sizeof(GLTXimage)); - if (image == NULL) { - fprintf(stderr, "gltxReadRGB() failed: insufficient memory.\n"); - return NULL; - } - - image->width = raw->sizeX; - image->height = raw->sizeY; - image->components = raw->sizeZ; - RawImageGetData(raw, image); - RawImageClose(raw); - - return image; -} diff --git a/lib/glut-3.7.6/progs/demos/smooth/gltx.h b/lib/glut-3.7.6/progs/demos/smooth/gltx.h deleted file mode 100644 index 3dc4bb30340b2723a457312f0333ccd3db4844ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/gltx.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Simple SGI .rgb (IRIS RGB) image file reader ripped off from - * texture.c (written by David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - */ - - -/* includes */ -#include - - -/* typedefs */ - -/* GLTXimage: Structure containing a texture image */ -typedef struct { - GLuint width; /* width of image */ - GLuint height; /* height of image */ - GLuint components; /* number of components in image */ - GLubyte* data; /* image data */ -} GLTXimage; - - -/* gltxDelete: Deletes a texture image - * - * image - properly initialized GLTXimage structure - */ -void -gltxDelete(GLTXimage* image); - -/* gltxReadRGB: Reads and returns data from an IRIS RGB image file. - * - * name - name of the IRIS RGB file to read data from - */ -GLTXimage* -gltxReadRGB(char *name); diff --git a/lib/glut-3.7.6/progs/demos/smooth/smooth.c b/lib/glut-3.7.6/progs/demos/smooth/smooth.c deleted file mode 100644 index 7a918cb949efc438ae2f8dd52d087ee85cded63c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/smooth.c +++ /dev/null @@ -1,574 +0,0 @@ -/* - smooth.c - Nate Robins, 1998 - - Model viewer program. Exercises the glm library. - */ - - -#include -#include -#include -#include -#include -#include -#include "gltb.h" -#include "glm.h" -#include "dirent32.h" - -#define DATA_DIR "data/" - -char* model_file = NULL; /* name of the obect file */ -GLuint model_list = 0; /* display list for object */ -GLMmodel* model; /* glm model data structure */ -GLfloat scale; /* original scale factor */ -GLfloat smoothing_angle = 90.0; /* smoothing angle */ -GLfloat weld_distance = 0.00001; /* epsilon for welding vertices */ -GLboolean facet_normal = GL_FALSE; /* draw with facet normal? */ -GLboolean bounding_box = GL_FALSE; /* bounding box on? */ -GLboolean performance = GL_FALSE; /* performance counter on? */ -GLboolean stats = GL_FALSE; /* statistics on? */ -GLuint material_mode = 0; /* 0=none, 1=color, 2=material */ -GLint entries = 0; /* entries in model menu */ -GLdouble pan_x = 0.0; -GLdouble pan_y = 0.0; -GLdouble pan_z = 0.0; - -#if defined(_WIN32) -#include -#else -#include -#include -#include -#include -#endif -#ifndef CLK_TCK -#define CLK_TCK 1000 -#endif -float -elapsed(void) -{ - static long begin = 0; - static long finish, difference; - -#if defined(_WIN32) - static struct timeb tb; - ftime(&tb); - finish = tb.time*1000+tb.millitm; -#else - static struct tms tb; - finish = times(&tb); -#endif - - difference = finish - begin; - begin = finish; - - return (float)difference/(float)CLK_TCK; -} - -void -shadowtext(int x, int y, char* s) -{ - int lines; - char* p; - - glDisable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0, glutGet(GLUT_WINDOW_WIDTH), - 0, glutGet(GLUT_WINDOW_HEIGHT), -1, 1); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glColor3ub(0, 0, 0); - glRasterPos2i(x+1, y-1); - for(p = s, lines = 0; *p; p++) { - if (*p == '\n') { - lines++; - glRasterPos2i(x+1, y-1-(lines*18)); - } - glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *p); - } - glColor3ub(0, 128, 255); - glRasterPos2i(x, y); - for(p = s, lines = 0; *p; p++) { - if (*p == '\n') { - lines++; - glRasterPos2i(x, y-(lines*18)); - } - glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, *p); - } - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glEnable(GL_DEPTH_TEST); -} - -void -lists(void) -{ - GLfloat ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - GLfloat diffuse[] = { 0.8, 0.8, 0.8, 1.0 }; - GLfloat specular[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat shininess = 65.0; - - glMaterialfv(GL_FRONT, GL_AMBIENT, ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, specular); - glMaterialf(GL_FRONT, GL_SHININESS, shininess); - - if (model_list) - glDeleteLists(model_list, 1); - - /* generate a list */ - if (material_mode == 0) { - if (facet_normal) - model_list = glmList(model, GLM_FLAT); - else - model_list = glmList(model, GLM_SMOOTH); - } else if (material_mode == 1) { - if (facet_normal) - model_list = glmList(model, GLM_FLAT | GLM_COLOR); - else - model_list = glmList(model, GLM_SMOOTH | GLM_COLOR); - } else if (material_mode == 2) { - if (facet_normal) - model_list = glmList(model, GLM_FLAT | GLM_MATERIAL); - else - model_list = glmList(model, GLM_SMOOTH | GLM_MATERIAL); - } -} - -void -init(void) -{ - gltbInit(GLUT_LEFT_BUTTON); - - /* read in the model */ - model = glmReadOBJ(model_file); - scale = glmUnitize(model); - glmFacetNormals(model); - glmVertexNormals(model, smoothing_angle); - - if (model->nummaterials > 0) - material_mode = 2; - - /* create new display lists */ - lists(); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - - glEnable(GL_DEPTH_TEST); - - glEnable(GL_CULL_FACE); -} - -void -reshape(int width, int height) -{ - gltbReshape(width, height); - - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (GLfloat)height / (GLfloat)width, 1.0, 128.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -3.0); -} - -#define NUM_FRAMES 5 -void -display(void) -{ - static char s[256], t[32]; - static char* p; - static int frames = 0; - - glClearColor(1.0, 1.0, 1.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(pan_x, pan_y, 0.0); - - gltbMatrix(); - -#if 0 /* glmDraw() performance test */ - if (material_mode == 0) { - if (facet_normal) - glmDraw(model, GLM_FLAT); - else - glmDraw(model, GLM_SMOOTH); - } else if (material_mode == 1) { - if (facet_normal) - glmDraw(model, GLM_FLAT | GLM_COLOR); - else - glmDraw(model, GLM_SMOOTH | GLM_COLOR); - } else if (material_mode == 2) { - if (facet_normal) - glmDraw(model, GLM_FLAT | GLM_MATERIAL); - else - glmDraw(model, GLM_SMOOTH | GLM_MATERIAL); - } -#else - glCallList(model_list); -#endif - - glDisable(GL_LIGHTING); - if (bounding_box) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glEnable(GL_CULL_FACE); - glColor4f(1.0, 0.0, 0.0, 0.25); - glutSolidCube(2.0); - glDisable(GL_BLEND); - } - - glPopMatrix(); - - if (stats) { - /* XXX - this could be done a _whole lot_ faster... */ - int height = glutGet(GLUT_WINDOW_HEIGHT); - glColor3ub(0, 0, 0); - sprintf(s, "%s\n%d vertices\n%d triangles\n%d normals\n" - "%d texcoords\n%d groups\n%d materials", - model->pathname, model->numvertices, model->numtriangles, - model->numnormals, model->numtexcoords, model->numgroups, - model->nummaterials); - shadowtext(5, height-(5+18*1), s); - } - - /* spit out frame rate. */ - frames++; - if (frames > NUM_FRAMES) { - sprintf(t, "%g fps", frames/elapsed()); - frames = 0; - } - if (performance) { - shadowtext(5, 5, t); - } - - glutSwapBuffers(); - glEnable(GL_LIGHTING); -} - -void -keyboard(unsigned char key, int x, int y) -{ - GLint params[2]; - - switch (key) { - case 'h': - printf("help\n\n"); - printf("w - Toggle wireframe/filled\n"); - printf("c - Toggle culling\n"); - printf("n - Toggle facet/smooth normal\n"); - printf("b - Toggle bounding box\n"); - printf("r - Reverse polygon winding\n"); - printf("m - Toggle color/material/none mode\n"); - printf("p - Toggle performance indicator\n"); - printf("s/S - Scale model smaller/larger\n"); - printf("t - Show model stats\n"); - printf("o - Weld vertices in model\n"); - printf("+/- - Increase/decrease smoothing angle\n"); - printf("W - Write model to file (out.obj)\n"); - printf("q/escape - Quit\n\n"); - break; - - case 't': - stats = !stats; - break; - - case 'p': - performance = !performance; - break; - - case 'm': - material_mode++; - if (material_mode > 2) - material_mode = 0; - printf("material_mode = %d\n", material_mode); - lists(); - break; - - case 'd': - glmDelete(model); - init(); - lists(); - break; - - case 'w': - glGetIntegerv(GL_POLYGON_MODE, params); - if (params[0] == GL_FILL) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - - case 'c': - if (glIsEnabled(GL_CULL_FACE)) - glDisable(GL_CULL_FACE); - else - glEnable(GL_CULL_FACE); - break; - - case 'b': - bounding_box = !bounding_box; - break; - - case 'n': - facet_normal = !facet_normal; - lists(); - break; - - case 'r': - glmReverseWinding(model); - lists(); - break; - - case 's': - glmScale(model, 0.8); - lists(); - break; - - case 'S': - glmScale(model, 1.25); - lists(); - break; - - case 'o': - printf("Welded %d\n", glmWeld(model, weld_distance)); - glmVertexNormals(model, smoothing_angle); - lists(); - break; - - case 'O': - weld_distance += 0.01; - printf("Weld distance: %.2f\n", weld_distance); - glmWeld(model, weld_distance); - glmFacetNormals(model); - glmVertexNormals(model, smoothing_angle); - lists(); - break; - - case '-': - smoothing_angle -= 1.0; - printf("Smoothing angle: %.1f\n", smoothing_angle); - glmVertexNormals(model, smoothing_angle); - lists(); - break; - - case '+': - smoothing_angle += 1.0; - printf("Smoothing angle: %.1f\n", smoothing_angle); - glmVertexNormals(model, smoothing_angle); - lists(); - break; - - case 'W': - glmScale(model, 1.0/scale); - glmWriteOBJ(model, "out.obj", GLM_SMOOTH | GLM_MATERIAL); - break; - - case 'R': - { - GLuint i; - GLfloat swap; - for (i = 1; i <= model->numvertices; i++) { - swap = model->vertices[3 * i + 1]; - model->vertices[3 * i + 1] = model->vertices[3 * i + 2]; - model->vertices[3 * i + 2] = -swap; - } - glmFacetNormals(model); - lists(); - break; - } - - case 27: - exit(0); - break; - } - - glutPostRedisplay(); -} - -void -menu(int item) -{ - int i = 0; - DIR* dirp; - char* name; - struct dirent* direntp; - - if (item > 0) { - keyboard((unsigned char)item, 0, 0); - } else { - dirp = opendir(DATA_DIR); - while ((direntp = readdir(dirp)) != NULL) { - if (strstr(direntp->d_name, ".obj")) { - i++; - if (i == -item) - break; - } - } - if (!direntp) - return; - name = (char*)malloc(strlen(direntp->d_name) + strlen(DATA_DIR) + 1); - strcpy(name, DATA_DIR); - strcat(name, direntp->d_name); - model = glmReadOBJ(name); - scale = glmUnitize(model); - glmFacetNormals(model); - glmVertexNormals(model, smoothing_angle); - - if (model->nummaterials > 0) - material_mode = 2; - else - material_mode = 0; - - lists(); - free(name); - - glutPostRedisplay(); - } -} - -static GLint mouse_state; -static GLint mouse_button; - -void -mouse(int button, int state, int x, int y) -{ - GLdouble model[4*4]; - GLdouble proj[4*4]; - GLint view[4]; - - /* fix for two-button mice -- left mouse + shift = middle mouse */ - if (button == GLUT_LEFT_BUTTON && glutGetModifiers() & GLUT_ACTIVE_SHIFT) - button = GLUT_MIDDLE_BUTTON; - - gltbMouse(button, state, x, y); - - mouse_state = state; - mouse_button = button; - - if (state == GLUT_DOWN && button == GLUT_MIDDLE_BUTTON) { - glGetDoublev(GL_MODELVIEW_MATRIX, model); - glGetDoublev(GL_PROJECTION_MATRIX, proj); - glGetIntegerv(GL_VIEWPORT, view); - gluProject((GLdouble)x, (GLdouble)y, 0.0, - model, proj, view, - &pan_x, &pan_y, &pan_z); - gluUnProject((GLdouble)x, (GLdouble)y, pan_z, - model, proj, view, - &pan_x, &pan_y, &pan_z); - pan_y = -pan_y; - } - - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - GLdouble model[4*4]; - GLdouble proj[4*4]; - GLint view[4]; - - gltbMotion(x, y); - - if (mouse_state == GLUT_DOWN && mouse_button == GLUT_MIDDLE_BUTTON) { - glGetDoublev(GL_MODELVIEW_MATRIX, model); - glGetDoublev(GL_PROJECTION_MATRIX, proj); - glGetIntegerv(GL_VIEWPORT, view); - gluProject((GLdouble)x, (GLdouble)y, 0.0, - model, proj, view, - &pan_x, &pan_y, &pan_z); - gluUnProject((GLdouble)x, (GLdouble)y, pan_z, - model, proj, view, - &pan_x, &pan_y, &pan_z); - pan_y = -pan_y; - } - - glutPostRedisplay(); -} - -int -main(int argc, char** argv) -{ - int buffering = GLUT_DOUBLE; - struct dirent* direntp; - DIR* dirp; - int models; - - glutInitWindowSize(512, 512); - glutInit(&argc, argv); - - while (--argc) { - if (strcmp(argv[argc], "-sb") == 0) - buffering = GLUT_SINGLE; - else - model_file = argv[argc]; - } - - if (!model_file) { - model_file = "data/dolphins.obj"; - } - - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | buffering); - glutCreateWindow("Smooth"); - - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - models = glutCreateMenu(menu); - dirp = opendir(DATA_DIR); - if (!dirp) { - fprintf(stderr, "%s: can't open data directory.\n", argv[0]); - } else { - while ((direntp = readdir(dirp)) != NULL) { - if (strstr(direntp->d_name, ".obj")) { - entries++; - glutAddMenuEntry(direntp->d_name, -entries); - } - } - closedir(dirp); - } - - glutCreateMenu(menu); - glutAddMenuEntry("Smooth", 0); - glutAddMenuEntry("", 0); - glutAddSubMenu("Models", models); - glutAddMenuEntry("", 0); - glutAddMenuEntry("[w] Toggle wireframe/filled", 'w'); - glutAddMenuEntry("[c] Toggle culling on/off", 'c'); - glutAddMenuEntry("[n] Toggle face/smooth normals", 'n'); - glutAddMenuEntry("[b] Toggle bounding box on/off", 'b'); - glutAddMenuEntry("[p] Toggle frame rate on/off", 'p'); - glutAddMenuEntry("[t] Toggle model statistics", 't'); - glutAddMenuEntry("[m] Toggle color/material/none mode", 'm'); - glutAddMenuEntry("[r] Reverse polygon winding", 'r'); - glutAddMenuEntry("[s] Scale model smaller", 's'); - glutAddMenuEntry("[S] Scale model larger", 'S'); - glutAddMenuEntry("[o] Weld redundant vertices", 'o'); - glutAddMenuEntry("[+] Increase smoothing angle", '+'); - glutAddMenuEntry("[-] Decrease smoothing angle", '-'); - glutAddMenuEntry("[W] Write model to file (out.obj)", 'W'); - glutAddMenuEntry("", 0); - glutAddMenuEntry("[Esc] Quit", 27); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - init(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/demos/smooth/smooth.dsp b/lib/glut-3.7.6/progs/demos/smooth/smooth.dsp deleted file mode 100644 index 6344049eeecaa072e8ff0dd17b4d8811dac3b097..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/smooth.dsp +++ /dev/null @@ -1,126 +0,0 @@ -# Microsoft Developer Studio Project File - Name="smooth" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=smooth - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "smooth.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "smooth.mak" CFG="smooth - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "smooth - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "smooth - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "smooth - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glut32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "smooth - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glut32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "smooth - Win32 Release" -# Name "smooth - Win32 Debug" -# Begin Source File - -SOURCE=.\dirent32.h -# End Source File -# Begin Source File - -SOURCE=.\glm.c -# End Source File -# Begin Source File - -SOURCE=.\glm.h -# End Source File -# Begin Source File - -SOURCE=.\gltb.c -# End Source File -# Begin Source File - -SOURCE=.\gltb.h -# End Source File -# Begin Source File - -SOURCE=.\gltx.c -# End Source File -# Begin Source File - -SOURCE=.\gltx.h -# End Source File -# Begin Source File - -SOURCE=.\smooth.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/smooth/trackball.c b/lib/glut-3.7.6/progs/demos/smooth/trackball.c deleted file mode 100644 index c2501e8f452cd328e829526a39dba35353ffdcd3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/trackball.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - */ - - -/* includes */ -#include -#include -#include -#include "trackball.h" - - -/* globals */ -static GLuint tb_lasttime; -static GLfloat tb_lastposition[3]; - -static GLfloat tb_angle = 0.0; -static GLfloat tb_axis[3]; -static GLfloat tb_transform[4][4]; - -static GLuint tb_width; -static GLuint tb_height; - -static GLint tb_button = -1; -static GLboolean tb_tracking = GL_FALSE; -static GLboolean tb_animate = GL_TRUE; - - -/* functions */ -static void -_tbPointToVector(int x, int y, int width, int height, float v[3]) -{ - float d, a; - - /* project x, y onto a hemi-sphere centered within width, height. */ - v[0] = (2.0 * x - width) / width; - v[1] = (height - 2.0 * y) / height; - d = sqrt(v[0] * v[0] + v[1] * v[1]); - v[2] = cos((3.14159265 / 2.0) * ((d < 1.0) ? d : 1.0)); - a = 1.0 / sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - v[0] *= a; - v[1] *= a; - v[2] *= a; -} - -static void -_tbAnimate(void) -{ - glutPostRedisplay(); -} - -void -_tbStartMotion(int x, int y, int button, int time) -{ - assert(tb_button != -1); - - tb_tracking = GL_TRUE; - tb_lasttime = time; - _tbPointToVector(x, y, tb_width, tb_height, tb_lastposition); -} - -void -_tbStopMotion(int button, unsigned time) -{ - assert(tb_button != -1); - - tb_tracking = GL_FALSE; - - if (time == tb_lasttime && tb_animate) { - glutIdleFunc(_tbAnimate); - } else { - tb_angle = 0.0; - if (tb_animate) - glutIdleFunc(0); - } -} - -void -tbAnimate(GLboolean animate) -{ - tb_animate = animate; -} - -void -tbInit(GLuint button) -{ - tb_button = button; - tb_angle = 0.0; - - /* put the identity in the trackball transform */ - glPushMatrix(); - glLoadIdentity(); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)tb_transform); - glPopMatrix(); -} - -void -tbMatrix() -{ - assert(tb_button != -1); - - glPushMatrix(); - glLoadIdentity(); - glRotatef(tb_angle, tb_axis[0], tb_axis[1], tb_axis[2]); - glMultMatrixf((GLfloat *)tb_transform); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)tb_transform); - glPopMatrix(); - - glMultMatrixf((GLfloat *)tb_transform); -} - -void -tbReshape(int width, int height) -{ - assert(tb_button != -1); - - tb_width = width; - tb_height = height; -} - -void -tbMouse(int button, int state, int x, int y) -{ - assert(tb_button != -1); - - if (state == GLUT_DOWN && button == tb_button) - _tbStartMotion(x, y, button, glutGet(GLUT_ELAPSED_TIME)); - else if (state == GLUT_UP && button == tb_button) - _tbStopMotion(button, glutGet(GLUT_ELAPSED_TIME)); -} - -void -tbMotion(int x, int y) -{ - GLfloat current_position[3], dx, dy, dz; - - assert(tb_button != -1); - - if (tb_tracking == GL_FALSE) - return; - - _tbPointToVector(x, y, tb_width, tb_height, current_position); - - /* calculate the angle to rotate by (directly proportional to the - length of the mouse movement */ - dx = current_position[0] - tb_lastposition[0]; - dy = current_position[1] - tb_lastposition[1]; - dz = current_position[2] - tb_lastposition[2]; - tb_angle = 90.0 * sqrt(dx * dx + dy * dy + dz * dz); - - /* calculate the axis of rotation (cross product) */ - tb_axis[0] = tb_lastposition[1] * current_position[2] - - tb_lastposition[2] * current_position[1]; - tb_axis[1] = tb_lastposition[2] * current_position[0] - - tb_lastposition[0] * current_position[2]; - tb_axis[2] = tb_lastposition[0] * current_position[1] - - tb_lastposition[1] * current_position[0]; - - /* reset for next time */ - tb_lasttime = glutGet(GLUT_ELAPSED_TIME); - tb_lastposition[0] = current_position[0]; - tb_lastposition[1] = current_position[1]; - tb_lastposition[2] = current_position[2]; - - /* remember to draw new position */ - glutPostRedisplay(); -} diff --git a/lib/glut-3.7.6/progs/demos/smooth/trackball.h b/lib/glut-3.7.6/progs/demos/smooth/trackball.h deleted file mode 100644 index de0f00c6bd07ca9267394ba9b797929a1cc9a129..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/smooth/trackball.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Simple trackball-like motion adapted (ripped off) from projtex.c - * (written by David Yu and David Blythe). See the SIGGRAPH '96 - * Advanced OpenGL course notes. - * - * - * Usage: - * - * o call tbInit() in before any other tb call - * o call tbReshape() from the reshape callback - * o call tbMatrix() to get the trackball matrix rotation - * o call tbStartMotion() to begin trackball movememt - * o call tbStopMotion() to stop trackball movememt - * o call tbMotion() from the motion callback - * o call tbAnimate(GL_TRUE) if you want the trackball to continue - * spinning after the mouse button has been released - * o call tbAnimate(GL_FALSE) if you want the trackball to stop - * spinning after the mouse button has been released - * - * Typical setup: - * - * - void - init(void) - { - tbInit(GLUT_MIDDLE_BUTTON); - tbAnimate(GL_TRUE); - . . . - } - - void - reshape(int width, int height) - { - tbReshape(width, height); - . . . - } - - void - display(void) - { - glPushMatrix(); - - tbMatrix(); - . . . draw the scene . . . - - glPopMatrix(); - } - - void - mouse(int button, int state, int x, int y) - { - tbMouse(button, state, x, y); - . . . - } - - void - motion(int x, int y) - { - tbMotion(x, y); - . . . - } - - int - main(int argc, char** argv) - { - . . . - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - . . . - } - * - * */ - - -/* functions */ -void -tbInit(GLuint button); - -void -tbMatrix(void); - -void -tbReshape(int width, int height); - -void -tbMouse(int button, int state, int x, int y); - -void -tbMotion(int x, int y); - -void -tbAnimate(GLboolean animate); diff --git a/lib/glut-3.7.6/progs/demos/sunlight/Imakefile b/lib/glut-3.7.6/progs/demos/sunlight/Imakefile deleted file mode 100644 index 9b5d15868b1be1155b901e6e7841c9ccffce0477..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/sunlight/Imakefile +++ /dev/null @@ -1,15 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -#include "../../../Glut.cf" - -TARGETS = sunlight - -SRCS = sunlight.c -OBJS = sunlight.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(sunlight,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/sunlight/globe.raw b/lib/glut-3.7.6/progs/demos/sunlight/globe.raw deleted file mode 100644 index 7ac4dc6f4b319f0646b223ff8e2795c7bfe825e7..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/sunlight/globe.raw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/sunlight/sunlight.c b/lib/glut-3.7.6/progs/demos/sunlight/sunlight.c deleted file mode 100644 index 3804c3ecc06cece50879be2523e412ca87ac0bdc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/sunlight/sunlight.c +++ /dev/null @@ -1,531 +0,0 @@ -/* sunlight.c - * - * To compile: - * cc -o sunlight sunlight.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm - * - * Usage: sunlight - * - * Requires: globe.raw - * - * This program demonstrates the sun lighting the earth, displayed - * either as a globe or a flat map. The time of day and day of year - * can be adjusted interactively, and the globe can be viewed from - * any angle. - * - * The lighting is done using OpenGL's lighting. The flat map is - * lighted by using the normals of globe. This is a rather unique - * use of normals, making a flat surface lit as if it were round. - * - * The left mouse adjusts the globe orientation, the time of day, or - * the time of year. The right mouse activates a menu. - * - * Chris Schoeneman - 9/6/98 - * crs23@bigfoot.com - * http://www.bigfoot.com/~crs23/ - * - */ - -#include -#include -#include -#include - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* menu constants */ -#define MENU_SHOW_GLOBE 1 -#define MENU_SHOW_MAP 2 -#define MENU_ADJUST_GLOBE 3 -#define MENU_ADJUST_DAY 4 -#define MENU_ADJUST_TIME 5 -#define MENU_QUIT 6 - -static int mapMode = 0; -static int adjustMode = 0; -static GLdouble aspectRatio = 1.0; -static double timeOfDay = 0.0; -static double timeOfYear = 0.0; - -/* - * sun direction functions - */ - -static const double radPerDeg = M_PI / 180.0; -static const double radPerHour = M_PI / 12.0; -static const double siderealHoursPerHour = 1.002737908; -static const double epoch = 2415020.0; - -static double getGreenwichSideral(double julianDay) -{ - double jdMidnight; - double dayFraction; - double T; /* time (fractions of a century) */ - double greenwichMidnight; - - /* true position requires sidereal time of midnight at prime meridian. - get midnight of given julian day (midnight has decimal of .5). */ - jdMidnight = floor(julianDay); - if (julianDay - jdMidnight >= 0.5) jdMidnight += 0.5; - else jdMidnight -= 0.5; - - T = (jdMidnight - epoch) / 36525.0; - - /* get fraction of a day */ - dayFraction = (julianDay - jdMidnight) * 24.0; - - /* get Greenwich midnight sidereal time (in hours) */ - greenwichMidnight = - fmod((0.00002581 * T + 2400.051262) * T + 6.6460656, 24.0); - - /* return Greenwich sidereal time */ - return radPerHour * (greenwichMidnight + dayFraction * siderealHoursPerHour); -} - -static void getTruePosition(double julianDay, - float latitude, float longitude, - double sx, double sy, double sz, - float pos[3]) -{ - double tx, ty, tz; - double localSidereal; - - /* convert to radians */ - latitude *= radPerDeg; - longitude *= radPerDeg; - - /* get local sidereal time */ - localSidereal = getGreenwichSideral(julianDay) - longitude; - - /* rotate around polar axis (y-axis) by local sidereal time */ - tx = sx * cos(localSidereal) - sz * sin(localSidereal); - ty = sy; - tz = sz * cos(localSidereal) + sx * sin(localSidereal); - - /* rotate by latitude to local position */ - pos[0] = (float)tx; - pos[1] = (float)(ty * cos(latitude) - tz * sin(latitude)); - pos[2] = (float)(tz * cos(latitude) + ty * sin(latitude)); -} - -static void getSunDirection(double julianDay, float latitude, - float longitude, float pos[3]) -{ - double C; - double T; /* time (fractions of a century) */ - double sx, sy, sz; /* sun direction */ - double obliquity; /* earth's tilt */ - double meanAnomaly; - double geometricMeanLongitude; - double trueLongitude; - - T = (julianDay - epoch) / 36525.0; - - obliquity = radPerDeg * - (23.452294 + (-0.0130125 + (-0.00000164 + - 0.000000503 * T) * T) * T); - - meanAnomaly = radPerDeg * (358.47583 + - ((0.0000033 * T + 0.000150) * T + 35999.04975) * T); - - geometricMeanLongitude = radPerDeg * - ((0.0003025 * T + 36000.76892) * T + 279.69668); - - C = radPerDeg * - (sin(meanAnomaly) * (1.919460 - (0.004789 + 0.000014 * T) * T) + - sin(2.0 * meanAnomaly) * (0.020094 - 0.0001 * T) + - sin(3.0 * meanAnomaly) * 0.000293); - - trueLongitude = geometricMeanLongitude + C; - - /* position of sun if earth didn't rotate: */ - sx = sin(trueLongitude) * cos(obliquity); - sy = sin(trueLongitude) * sin(obliquity); - sz = cos(trueLongitude); - - /* get true position */ - getTruePosition(julianDay, latitude, longitude, sx, sy, sz, pos); -} - -/* - * globe/map calculation - */ - -#define LAT_GRID 20 -#define LON_GRID 40 -static GLfloat sphere[LAT_GRID + 1][LON_GRID + 1][3]; -static GLfloat map[LAT_GRID + 1][LON_GRID + 1][2]; -static GLfloat uv[LAT_GRID + 1][LON_GRID + 1][2]; - -static void initSphere(void) -{ - int lat, lon; - - for (lat = 0; lat <= LAT_GRID; lat++) { - const float y = (float)-cos(M_PI * (double)lat / (double)LAT_GRID); - const float r = (float)sin(M_PI * (double)lat / (double)LAT_GRID); - for (lon = 0; lon <= LON_GRID; lon++) { - sphere[lat][lon][0] = r * (float)sin(-M_PI + 2.0 * M_PI * - (double)lon / (double)LON_GRID); - sphere[lat][lon][1] = y; - sphere[lat][lon][2] = r * (float)cos(-M_PI + 2.0 * M_PI * - (double)lon / (double)LON_GRID); - } - } -} - -static void initMap(void) -{ - int lat, lon; - - for (lat = 0; lat <= LAT_GRID; lat++) { - const float y = 1.0f * ((float)lat / (float)LAT_GRID - 0.5f); - for (lon = 0; lon <= LON_GRID; lon++) { - map[lat][lon][0] = 2.0f * ((float)lon / (float)LON_GRID - 0.5f); - map[lat][lon][1] = y; - } - } -} - -static int isPowerOfTwo(int x) -{ - if (x <= 0) return 0; - while ((x & 1) == 0) x >>= 1; - return x == 1; -} - -static void initTexture(const char* filename) -{ - FILE* imageFile; - int lat, lon; - unsigned char buffer[4]; - unsigned char* image; - int dx, dy; - - /* initialize texture coordinates */ - for (lat = 0; lat <= LAT_GRID; lat++) { - const float y = (float)lat / (float)LAT_GRID; - for (lon = 0; lon <= LON_GRID; lon++) { - uv[lat][lon][0] = (float)lon / (float)LON_GRID; - uv[lat][lon][1] = y; - } - } - - /* open image file */ - imageFile = fopen(filename, "rb"); - if (!imageFile) { - fprintf(stderr, "cannot open image file %s for reading\n", filename); - exit(1); - } - - /* read image size */ - fread(buffer, 1, 4, imageFile); - dx = (int)((buffer[0] << 8) | buffer[1]); - dy = (int)((buffer[2] << 8) | buffer[3]); - if (!isPowerOfTwo(dx) || !isPowerOfTwo(dy)) { - fprintf(stderr, "image %s has an illegal size: %dx%d\n", filename, dx, dy); - exit(1); - } - - /* read image */ - image = (unsigned char*)malloc(3 * dx * dy * sizeof(unsigned char)); - fread(image, 3 * dx, dy, imageFile); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, 3, dx, dy, 0, - GL_RGB, GL_UNSIGNED_BYTE, image); - - /* tidy up */ - free(image); - fclose(imageFile); -} - -/* - * misc OpenGL stuff - */ - -static const GLfloat sunColor[] = { 1.0f, 1.0f, 1.0f, 1.0f }; -static GLfloat sunDirection[4] = { 0.0f, 0.0f, 1.0f, 0.0f }; -static const GLfloat surfaceColor[] = { 0.8f, 0.8f, 0.8f, 1.0f }; - -static void initProjection(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - if (mapMode) { - /* orthographic for map */ - if (aspectRatio < 2.0) - glOrtho(-1.0, 1.0, -1.0 / aspectRatio, 1.0 / aspectRatio, 2.0, 4.0); - else - glOrtho(-0.5 * aspectRatio, 0.5 * aspectRatio, -0.5, 0.5, 2.0, 4.0); - } - - else { - /* prespective for globe */ - gluPerspective(40.0, aspectRatio, 1.0, 5.0); - } - - glMatrixMode(GL_MODELVIEW); -} - -static void initSunlight(void) -{ - getSunDirection(epoch + timeOfDay + 365.0 * timeOfYear, - 0.0f, 0.0f, sunDirection); - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_DIFFUSE, sunColor); - glLightfv(GL_LIGHT0, GL_POSITION, sunDirection); - glEnable(GL_LIGHT0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, surfaceColor); -} - -/* - * glut callbacks - */ - -static GLfloat angle = 0; /* in degrees */ -static GLfloat angle2 = 0; /* in degrees */ -static int moving = 0, startx, starty; - -static void reshapeCB(GLsizei w, GLsizei h) -{ - aspectRatio = (GLdouble)w / (GLdouble)h; - glViewport(0, 0, w, h); - initProjection(); - glutPostRedisplay(); -} - -static void redrawCB(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - - /* Perform scene rotations based on user mouse input. */ - if (!mapMode) { - glRotatef(angle2, 1.0f, 0.0f, 0.0f); - glRotatef(angle, 0.0f, 1.0f, 0.0f); - } - - glLightfv(GL_LIGHT0, GL_POSITION, sunDirection); - - if (mapMode) { - /* use the normals for a sphere on a flat surface to get - * the lighting as if we unwrapped a lighted sphere. */ - - int lat, lon; - for (lat = 0; lat < LAT_GRID; lat++) { - glBegin(GL_TRIANGLE_STRIP); - - for (lon = 0; lon <= LON_GRID; lon++) { - glTexCoord2fv(uv[lat + 1][lon]); - glNormal3fv(sphere[lat + 1][lon]); - glVertex2fv(map[lat + 1][lon]); - - glTexCoord2fv(uv[lat][lon]); - glNormal3fv(sphere[lat][lon]); - glVertex2fv(map[lat][lon]); - } - - glEnd(); - } - } - - else { - /* draw a sphere */ - int lat, lon; - for (lat = 0; lat < LAT_GRID; lat++) { - glBegin(GL_TRIANGLE_STRIP); - - for (lon = 0; lon <= LON_GRID; lon++) { - glTexCoord2fv(uv[lat + 1][lon]); - glNormal3fv(sphere[lat + 1][lon]); - glVertex3fv(sphere[lat + 1][lon]); - - glTexCoord2fv(uv[lat][lon]); - glNormal3fv(sphere[lat][lon]); - glVertex3fv(sphere[lat][lon]); - } - - glEnd(); - } - } - - glPopMatrix(); - - glutSwapBuffers(); -} - -static void mouseCB(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - moving = 1; - startx = x; - starty = y; - } - else if (state == GLUT_UP) { - moving = 0; - } - } -} - -static void motionCB(int x, int y) -{ - if (moving) { - switch (adjustMode) { - case 0: - /* move globe */ - if (!mapMode) { - angle = angle + (x - startx); - angle2 = angle2 + (y - starty); - glutPostRedisplay(); - } - break; - - case 1: - /* change day of year */ - timeOfYear = timeOfYear + (y - starty) / 365.0; - while (timeOfYear < 0) timeOfYear += 1.0; - while (timeOfYear >= 1.0) timeOfYear -= 1.0; - getSunDirection(epoch + timeOfDay + 365.0 * timeOfYear, - 0.0f, 0.0f, sunDirection); - glutPostRedisplay(); - break; - - case 2: - /* change time of day (by 4 minute increments (24 hrs / 360)) */ - timeOfDay = timeOfDay + (y - starty) / 360.0; - while (timeOfDay < 0) timeOfDay += 1.0; - while (timeOfDay >= 1.0) timeOfDay -= 1.0; - getSunDirection(epoch + timeOfDay + 365.0 * timeOfYear, - 0.0f, 0.0f, sunDirection); - glutPostRedisplay(); - break; - } - - startx = x; - starty = y; - } -} - -static void keyCB(unsigned char c, int x, int y) -{ - if (c == 27) { - exit(0); - } - glutPostRedisplay(); -} - - -/* - * menu handling - */ - -static void handleMenu(int value) -{ - switch (value) { - default: - break; - - case MENU_SHOW_GLOBE: - mapMode = 0; - initProjection(); - glutPostRedisplay(); - glutChangeToMenuEntry(2, "Show Globe *", MENU_SHOW_GLOBE); - glutChangeToMenuEntry(3, "Show Map", MENU_SHOW_MAP); - break; - - case MENU_SHOW_MAP: - mapMode = 1; - initProjection(); - glutPostRedisplay(); - glutChangeToMenuEntry(2, "Show Globe", MENU_SHOW_GLOBE); - glutChangeToMenuEntry(3, "Show Map *", MENU_SHOW_MAP); - break; - - case MENU_ADJUST_GLOBE: - adjustMode = 0; - glutChangeToMenuEntry(4, "Adjust Globe *", MENU_ADJUST_GLOBE); - glutChangeToMenuEntry(5, "Adjust Day", MENU_ADJUST_DAY); - glutChangeToMenuEntry(6, "Adjust Time", MENU_ADJUST_TIME); - break; - - case MENU_ADJUST_DAY: - adjustMode = 1; - glutChangeToMenuEntry(4, "Adjust Globe", MENU_ADJUST_GLOBE); - glutChangeToMenuEntry(5, "Adjust Day *", MENU_ADJUST_DAY); - glutChangeToMenuEntry(6, "Adjust Time", MENU_ADJUST_TIME); - break; - - case MENU_ADJUST_TIME: - adjustMode = 2; - glutChangeToMenuEntry(4, "Adjust Globe", MENU_ADJUST_GLOBE); - glutChangeToMenuEntry(5, "Adjust Day", MENU_ADJUST_DAY); - glutChangeToMenuEntry(6, "Adjust Time *", MENU_ADJUST_TIME); - break; - - case MENU_QUIT: - exit(0); - } -} - -/* - * main - */ - -int main(int argc, char** argv) -{ - /* - * initialize GLUT and open a window - */ - glutInit(&argc, argv); - glutInitWindowSize(512, 512); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("Sunlight"); - glutDisplayFunc(redrawCB); - glutReshapeFunc(reshapeCB); - glutMouseFunc(mouseCB); - glutMotionFunc(motionCB); - glutKeyboardFunc(keyCB); - - /* - * make the menu - */ - glutCreateMenu(handleMenu); - glutAddMenuEntry("SUNLIGHT", 0); - glutAddMenuEntry("Show Globe *", MENU_SHOW_GLOBE); - glutAddMenuEntry("Show Map", MENU_SHOW_MAP); - glutAddMenuEntry("Adjust Globe *", MENU_ADJUST_GLOBE); - glutAddMenuEntry("Adjust Day", MENU_ADJUST_DAY); - glutAddMenuEntry("Adjust Time", MENU_ADJUST_TIME); - glutAddMenuEntry("Quit", MENU_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* - * initialize GL - */ - initProjection(); - gluLookAt(0.0, 0.0, 3.0, - 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0); - initSunlight(); - glEnable(GL_LIGHTING); - glEnable(GL_CULL_FACE); - glEnable(GL_TEXTURE_2D); - - /* - * initialize data structures - */ - initSphere(); - initMap(); - initTexture("globe.raw"); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/demos/sunlight/sunlight.dsp b/lib/glut-3.7.6/progs/demos/sunlight/sunlight.dsp deleted file mode 100644 index 1c247ebc030802773503be5e162f5cb2843a4436..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/sunlight/sunlight.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sunlight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sunlight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sunlight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sunlight.mak" CFG="sunlight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sunlight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sunlight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sunlight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sunlight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sunlight - Win32 Release" -# Name "sunlight - Win32 Debug" -# Begin Source File - -SOURCE=.\sunlight.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/sysview/README b/lib/glut-3.7.6/progs/demos/sysview/README deleted file mode 100644 index 9e39faa59188533399943b55695947328041deb0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/sysview/README +++ /dev/null @@ -1,27 +0,0 @@ - -This is a nice 3D system monitor written with GLUT. The operating -system dependent code for querying system statistics is only for IRIX, -but maybe someone could adapt the code to work on other operating -systems. - -Be warned that on a multiprocessor SGI systems, some of the -measurements go "off the chart". The program was written on a single -processor machine so the top of the chart is 100% of one processor. - -- Mark - -Javier writes: -> I am sending attached a very simple program that uses OpenGL and GLUT. -> As you will see it resembles a little bit the gr_osview SGI application. -> I hope you find it useful to be included as a contribution to GLUT -> distribution. -> -> Keep on working with GLUT, it is a great starting point for OpenGL -> users. -> -> Greetings from Spain! -> -> -- -> Javier Velasco -> fjvelasco@sfe.indra.es -> fjvelasco@sinix.net diff --git a/lib/glut-3.7.6/progs/demos/sysview/sysview.c b/lib/glut-3.7.6/progs/demos/sysview/sysview.c deleted file mode 100644 index 67df7f357f92740e69af38c25b47511dba9cb397..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/sysview/sysview.c +++ /dev/null @@ -1,442 +0,0 @@ - -/* - * Systems statistics viewing application - * (C) Javier Velasco '97 (almost '98) - * fjvelasco@sinix.net - * - * This application was developed on an INDIGO2 Extreme and makes use of - * a SGI system call (sginap) that sleeps the process for a given number of - * clock ticks. For other UNIX systems, this call should be substituted for - * another proper call. - * The default number of ticks between samples is 20. This can be changed - * through the mouse right button menu. - * - */ -#include -#include -#include -#include -#include -#include -#include -#include - -/* GL includes */ -#include -#include -#include - -#include -#include - - -/* - * Macros - */ -#define GRID 0x22 -#define ZGRID 0x23 -#define XGRID 0x24 -#define YGRID 0x25 - -float lastx=0; /* mouse track */ -float lasty=0; - -void *font1 = GLUT_BITMAP_9_BY_15; /* used fonts */ -void *font2 = GLUT_BITMAP_8_BY_13; - -long nPeriod=20; /* default sampling rate in ticks */ -GLsizei nWidth, nHeight; /* current window size */ -GLboolean bMotion=False; - -struct sysinfo SysInfo, LastSysInfo; /* system information */ - -/* - * Mouse motion track - */ -void MouseMove(int x, int y) -{ - if(bMotion) - { - lastx = x; - lasty = y; - glutPostRedisplay(); - } -} - -/* - * 3D Perspective projection setup - */ -void Make3DLook(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0, 4.0/3.0, 0.0, 500.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* - * 2D Orthographic projections setup - */ -void Make2DLook(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, nWidth, nHeight, 0); - glMatrixMode(GL_MODELVIEW); -} - -/* - * Toggle line antialias - */ -void ToggleAAlias(void) -{ - if(glIsEnabled(GL_LINE_SMOOTH)) - { - glDisable(GL_LINE_SMOOTH); - glDisable(GL_BLEND); - } - else - { - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE); - } -} - - -/* - * Draw a string - */ -void glPuts(GLint x, GLint y, char *string, void *font) -{ - int len, i; - - glRasterPos2i(x, y); - len = (int) strlen(string); - for (i = 0; i < len; i++) { - glutBitmapCharacter(font, string[i]); - } -} - -/* - * Draw the 3d grid - */ -void DrawGrid(void) -{ - glCallList(GRID); -} - -/* - * Display the legend - */ -void Legend(void) -{ - glPuts(5, 40, "User", font2); - glPushMatrix(); - glPushAttrib(GL_CURRENT_BIT); - glTranslatef(10.0, 50.0, 0.0); - glColor3f(0.0, 0.0, 1.0); - glRecti(0, 0, 20, 20); - glPopAttrib(); - glPopMatrix(); - - glPuts(5, 90, "Kernel", font2); - glPushMatrix(); - glPushAttrib(GL_CURRENT_BIT); - glTranslatef(10.0, 100.0, 0.0); - glColor3f(1.0, 0.0, 0.0); - glRecti(0, 0, 20, 20); - glPopAttrib(); - glPopMatrix(); - - glPuts(5, 140, "Intr", font2); - glPushMatrix(); - glPushAttrib(GL_CURRENT_BIT); - glTranslatef(10.0, 150.0, 0.0); - glColor3f(1.0, 1.0, 0.0); - glRecti(0, 0, 20, 20); - glPopAttrib(); - glPopMatrix(); - - glPuts(5, 190, "Idle", font2); - glPushMatrix(); - glPushAttrib(GL_CURRENT_BIT); - glTranslatef(10.0, 200.0, 0.0); - glColor3f(0.0, 1.0, 0.0); - glRecti(0, 0, 20, 20); - glPopAttrib(); - glPopMatrix(); - - glPuts(5, 240, "Wait", font2); - glPushMatrix(); - glPushAttrib(GL_CURRENT_BIT); - glTranslatef(10.0, 250.0, 0.0); - glColor3f(0.0, 1.0, 1.0); - glRecti(0, 0, 20, 20); - glPopAttrib(); - glPopMatrix(); - - glPuts(nWidth-30, nHeight-30, "0", font1); - glPuts(nWidth-45, 45, "100", font1); -} - - - -/* - * Construct the grid display list - */ -void MakeGrid(void) -{ - int i; - - /* let's divide the grid in three pieces */ - glNewList(ZGRID, GL_COMPILE_AND_EXECUTE); - glBegin(GL_LINES); - for(i=0;i<=30;i+=3) - { - glVertex2d(i, 0); - glVertex2d(i, 30); - glVertex2d(0, i); - glVertex2d(30, i); - } - glEnd(); - glEndList(); - - - glNewList(XGRID, GL_COMPILE_AND_EXECUTE); - glPushMatrix(); - glRotatef(90.0, 1.0, 0.0, 0.0); - glBegin(GL_LINES); - for(i=0;i<=6;i+=3) - { - glVertex2d(0, i); - glVertex2d(30, i); - } - for(i=0;i<=30;i+=3) - { - glVertex2d(i, 0); - glVertex2d(i, 6); - } - glEnd(); - glPopMatrix(); - glEndList(); - - glNewList(YGRID, GL_COMPILE_AND_EXECUTE); - glPushMatrix(); - glRotatef(-90.0, 0.0, 1.0, 0.0); - glBegin(GL_LINES); - for(i=0;i<=30;i+=3) - { - glVertex2d(0, i); - glVertex2d(6, i); - } - for(i=0;i<=6;i+=3) - { - glVertex2d(i, 0); - glVertex2d(i, 30); - } - glEnd(); - glPopMatrix(); - glEndList(); - - /* now call them all */ - glNewList(GRID, GL_COMPILE_AND_EXECUTE); - glLineWidth(2.0); - glColor3f(0.7, 0.7, 0.7); - glCallList(ZGRID); - glCallList(XGRID); - glCallList(YGRID); - glLineWidth(1.0); - glEndList(); -} - -/* - * System statistics collection routine - */ -void ComputeStatistics(void) -{ - memcpy(&LastSysInfo, &SysInfo, sizeof(SysInfo)); - sysmp(MP_SAGET, MPSA_SINFO, &SysInfo, sizeof(SysInfo)); - sginap(nPeriod); - glutPostRedisplay(); -} - -/* - * Draw a coloured cube for each one of the monitored parameters - */ -void Draw3DStatistics(void) -{ - GLdouble fSize; - - glPushMatrix(); - glTranslatef(0.0, 0.0, 1.5); - /* Time in user mode */ - glPushMatrix(); - fSize = SysInfo.cpu[CPU_USER] - LastSysInfo.cpu[CPU_USER] ; - fSize = fSize*30/nPeriod; - glTranslatef(3.0, fSize/2, 0.0); - glScalef(6.0, fSize, 3.0); - glColor3f(0.0, 0.0, 1.0); - glutSolidCube(1.0); - glColor3f(0.0, 0.0, 0.0); - glutWireCube(1.0); - glPopMatrix(); - - /* Time in kernel mode */ - glPushMatrix(); - fSize = SysInfo.cpu[CPU_KERNEL] - LastSysInfo.cpu[CPU_KERNEL] ; - fSize = fSize*30/nPeriod; - glTranslatef(9.0, fSize/2, 0.0); - glScalef(6.0, fSize, 3.0); - glColor3f(1.0, 0.0, 0.0); - glutSolidCube(1.0); - glColor3f(0.0, 0.0, 0.0); - glutWireCube(1.0); - glPopMatrix(); - - /* Time in interrupt mode */ - glPushMatrix(); - fSize = SysInfo.cpu[CPU_INTR] - LastSysInfo.cpu[CPU_INTR] ; - fSize = fSize*30/nPeriod; - glTranslatef(15.0, fSize/2, 0.0); - glScalef(6.0, fSize, 3.0); - glColor3f(1.0, 1.0, 0.0); - glutSolidCube(1.0); - glColor3f(0.0, 0.0, 0.0); - glutWireCube(1.0); - glPopMatrix(); - - /* Time in idle */ - glPushMatrix(); - fSize = SysInfo.cpu[CPU_IDLE] - LastSysInfo.cpu[CPU_IDLE] ; - fSize = fSize*30/nPeriod; - glTranslatef(21.0, fSize/2, 0.0); - glScalef(6.0, fSize, 3.0); - glColor3f(0.0, 1.0, 0.0); - glutSolidCube(1.0); - glColor3f(0.0, 0.0, 0.0); - glutWireCube(1.0); - glPopMatrix(); - - /* Time in wait mode */ - glPushMatrix(); - fSize = SysInfo.cpu[CPU_WAIT] - LastSysInfo.cpu[CPU_WAIT] ; - fSize = fSize*30/nPeriod; - glTranslatef(27.0, fSize/2, 0.0); - glScalef(6.0, fSize, 3.0); - glColor3f(0.0, 1.0, 1.0); - glutSolidCube(1.0); - glColor3f(0.0, 0.0, 0.0); - glutWireCube(1.0); - glPopMatrix(); - - glPopMatrix(); -} - - -/* - * Resize routine - */ -void Resize3DWindow(int newWidth, int newHeight) -{ - glViewport(0, 0, (GLint)newWidth, (GLint)newHeight); - nWidth = newWidth; - nHeight = newHeight; - Make3DLook(); - glClear(GL_COLOR_BUFFER_BIT); -} - - -/* - * Display routine - */ -void Doit3D(void) -{ - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - Make2DLook(); - glColor3f(1.0, 1.0, 0.0); - glPuts(15, 15, "CPU Activity", font1); - Legend(); - Make3DLook(); - glPushMatrix(); - glTranslatef(-15.0, -15.0, -50.0); - glRotatef (lastx, 0.0, 1.0, 0.0); - glRotatef (lasty, 1.0, 0.0, 0.0); - DrawGrid(); - Draw3DStatistics(); - glFlush(); - glPopMatrix(); - glutSwapBuffers(); -} - -/* - * Menus routines - */ -void SelectSampleRate(int pick) -{ - nPeriod = pick; -} - -void MainMenu(int pick) -{ - switch(pick) - { - case 0: - bMotion = !bMotion; - break; - case 1: - ToggleAAlias(); - break; - case 2: - exit(0); - break; - } -} - -/* - * Menu creation - */ -void SetUpMenu(void) -{ - int SampleMenu; - - SampleMenu = glutCreateMenu(SelectSampleRate); - glutAddMenuEntry("1", 1); - glutAddMenuEntry("5", 5); - glutAddMenuEntry("10", 10); - glutAddMenuEntry("20", 20); - glutCreateMenu(MainMenu); - glutAddMenuEntry("Mouse Motion", 0); - glutAddMenuEntry("Line antialias", 1); - glutAddSubMenu("Sample rate", SampleMenu); - glutAddMenuEntry("Quit", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - -} - -/* - * MAIN STUFF - */ -int main(int argc, char **argv) -{ - GLenum type; - - type = GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH; - glutInit(&argc, argv); - glutInitDisplayMode(type); - glutCreateWindow(argv[0]); - SetUpMenu(); - - MakeGrid(); - - glutReshapeFunc(Resize3DWindow); - glutDisplayFunc(Doit3D); - glutMotionFunc(MouseMove); - glutIdleFunc(ComputeStatistics); - glutMainLoop(); - return(0); -} - diff --git a/lib/glut-3.7.6/progs/demos/sysview/sysview.dsp b/lib/glut-3.7.6/progs/demos/sysview/sysview.dsp deleted file mode 100644 index 82c4febec284c5488a9db850477d62dc43fcee13..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/sysview/sysview.dsp +++ /dev/null @@ -1,89 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sysview" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sysview - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sysview.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sysview.mak" CFG="sysview - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sysview - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sysview - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sysview - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sysview - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sysview - Win32 Release" -# Name "sysview - Win32 Debug" -# Begin Source File - -SOURCE=.\sysview.c -# PROP Exclude_From_Build 1 -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/underwater/Imakefile b/lib/glut-3.7.6/progs/demos/underwater/Imakefile deleted file mode 100644 index 08002c3ca2f9b8688e9bc0e7b22b3e62f5bb160c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/underwater/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = underwater - -SRCS = underwater.c texload.c dino.c - -OBJS = underwater.o texload.o dino.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(underwater,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust00.bw b/lib/glut-3.7.6/progs/demos/underwater/caust00.bw deleted file mode 100644 index ebd44bc2c475e3e9c0fc812cc9672eebfa9381b9..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust00.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust01.bw b/lib/glut-3.7.6/progs/demos/underwater/caust01.bw deleted file mode 100644 index df532cf374eeda24fb761eff9f6bbf938db9849d..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust01.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust02.bw b/lib/glut-3.7.6/progs/demos/underwater/caust02.bw deleted file mode 100644 index ca82771dbf3fd933a1185ee75a31788a3ae23e64..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust02.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust03.bw b/lib/glut-3.7.6/progs/demos/underwater/caust03.bw deleted file mode 100644 index 18dad2910e69a1b0723ed8cfb60223dcf7fa0495..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust03.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust04.bw b/lib/glut-3.7.6/progs/demos/underwater/caust04.bw deleted file mode 100644 index 76eb706dacaf6819ead9c79e38f5544f74f1b9a1..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust04.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust05.bw b/lib/glut-3.7.6/progs/demos/underwater/caust05.bw deleted file mode 100644 index 2e0214a18a15a6f95f86f1305077c50b2b6e85ae..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust05.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust06.bw b/lib/glut-3.7.6/progs/demos/underwater/caust06.bw deleted file mode 100644 index e589b057419d602f8808dd2ab8e15a434005be2c..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust06.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust07.bw b/lib/glut-3.7.6/progs/demos/underwater/caust07.bw deleted file mode 100644 index 058080b31334af6195686915b8f858064d4a30ca..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust07.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust08.bw b/lib/glut-3.7.6/progs/demos/underwater/caust08.bw deleted file mode 100644 index 40efbb238e743e4a1d173b9f11b8438ef704fee1..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust08.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust09.bw b/lib/glut-3.7.6/progs/demos/underwater/caust09.bw deleted file mode 100644 index ab62dec5c855132c4f9551227e34da825352625c..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust09.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust10.bw b/lib/glut-3.7.6/progs/demos/underwater/caust10.bw deleted file mode 100644 index ee54fb2c07a920bfa8c222e500aae87babc12333..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust10.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust11.bw b/lib/glut-3.7.6/progs/demos/underwater/caust11.bw deleted file mode 100644 index 7c40b6488e9ab3e91d79a398757990d8832843a0..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust11.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust12.bw b/lib/glut-3.7.6/progs/demos/underwater/caust12.bw deleted file mode 100644 index bc4feef599ccd9c7a384c4b62e18199c1aea3170..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust12.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust13.bw b/lib/glut-3.7.6/progs/demos/underwater/caust13.bw deleted file mode 100644 index 05d677b25bd2bbcf88cd91fba6e563d1c88d49bf..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust13.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust14.bw b/lib/glut-3.7.6/progs/demos/underwater/caust14.bw deleted file mode 100644 index 286f277522643f8cad62c2b682b439bdc73f406d..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust14.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust15.bw b/lib/glut-3.7.6/progs/demos/underwater/caust15.bw deleted file mode 100644 index 73b40bcf5a432eca32f9027b13ebb05b53ba3b15..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust15.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust16.bw b/lib/glut-3.7.6/progs/demos/underwater/caust16.bw deleted file mode 100644 index b7f16ee3ba4ec041b62fcaec53ae4e0d888c8888..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust16.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust17.bw b/lib/glut-3.7.6/progs/demos/underwater/caust17.bw deleted file mode 100644 index c871fa525dc9d3c75184aee9ea5e2208ba1a7c9b..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust17.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust18.bw b/lib/glut-3.7.6/progs/demos/underwater/caust18.bw deleted file mode 100644 index 115f175b88900f4d5bca83cab1085ae548c81986..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust18.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust19.bw b/lib/glut-3.7.6/progs/demos/underwater/caust19.bw deleted file mode 100644 index bc262509662f78976941c879540e6ef44c498478..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust19.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust20.bw b/lib/glut-3.7.6/progs/demos/underwater/caust20.bw deleted file mode 100644 index 69b9bae7998bf195ca51c9e58db1f051d34fa073..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust20.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust21.bw b/lib/glut-3.7.6/progs/demos/underwater/caust21.bw deleted file mode 100644 index d86214db49fc281576e50f9e4420c687b7cbf36a..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust21.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust22.bw b/lib/glut-3.7.6/progs/demos/underwater/caust22.bw deleted file mode 100644 index 9bcab78abb5c5afb6a90fb97fd4859acf3bd66df..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust22.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust23.bw b/lib/glut-3.7.6/progs/demos/underwater/caust23.bw deleted file mode 100644 index 57f23f16e63a07d63e03dc5fd0260e1fc31df678..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust23.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust24.bw b/lib/glut-3.7.6/progs/demos/underwater/caust24.bw deleted file mode 100644 index bd766c1cc609bef4b6ff22e5f22a0b6b19c6d4b7..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust24.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust25.bw b/lib/glut-3.7.6/progs/demos/underwater/caust25.bw deleted file mode 100644 index 785c686f788a9a7488f95e81a4dccc01502241b3..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust25.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust26.bw b/lib/glut-3.7.6/progs/demos/underwater/caust26.bw deleted file mode 100644 index 0208a960d52e849682d6b06c7d97beb409962cb2..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust26.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust27.bw b/lib/glut-3.7.6/progs/demos/underwater/caust27.bw deleted file mode 100644 index f9d7cf20007f09f13a0c53029707ea9f595e3ed3..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust27.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust28.bw b/lib/glut-3.7.6/progs/demos/underwater/caust28.bw deleted file mode 100644 index 1c3441d935664d821b88ab63338050fbe4d12580..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust28.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust29.bw b/lib/glut-3.7.6/progs/demos/underwater/caust29.bw deleted file mode 100644 index bd9149d9d6ca6b9d03641a5c9f2e87ab0109e510..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust29.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust30.bw b/lib/glut-3.7.6/progs/demos/underwater/caust30.bw deleted file mode 100644 index 7edbc6801c22b60de90cda0d19310fc4c5882554..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust30.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/caust31.bw b/lib/glut-3.7.6/progs/demos/underwater/caust31.bw deleted file mode 100644 index 85670091255eb3367aef1f4e258550fb14d61338..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/caust31.bw and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/dino.c b/lib/glut-3.7.6/progs/demos/underwater/dino.c deleted file mode 100644 index 0064b2a4960a8f00d3dd38188d431b8b9764dd18..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/underwater/dino.c +++ /dev/null @@ -1,129 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include /* for sqrt() */ -#include - -#include "dino.h" - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE, DINOSAUR -} displayLists; - -/* *INDENT-OFF* */ -static GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -static GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -static GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -static GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -static GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -static void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = (int) (dataSize / (2 * sizeof(GLfloat))); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -int -makeDinosaur(void) -{ - GLfloat bodyWidth = 3.0; - - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); - glNewList(DINOSAUR, GL_COMPILE); - glPushMatrix(); - glTranslatef(-8, -8, -bodyWidth / 2); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glPopMatrix(); - glEndList(); - return DINOSAUR; -} - diff --git a/lib/glut-3.7.6/progs/demos/underwater/dino.h b/lib/glut-3.7.6/progs/demos/underwater/dino.h deleted file mode 100644 index 6585ff8c8d47db9114b6576c56ce11ba9ce68e89..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/underwater/dino.h +++ /dev/null @@ -1,9 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -extern int makeDinosaur(void); - diff --git a/lib/glut-3.7.6/progs/demos/underwater/floor.rgb b/lib/glut-3.7.6/progs/demos/underwater/floor.rgb deleted file mode 100644 index af34bf6170ae6120c738aea7928308e3aabad773..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/demos/underwater/floor.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/demos/underwater/texload.c b/lib/glut-3.7.6/progs/demos/underwater/texload.c deleted file mode 100644 index 3fb8441b6fbb431f5066a2054d7c1376ca63916f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/underwater/texload.c +++ /dev/null @@ -1,253 +0,0 @@ - -/* texture.c - by David Blythe, SGI */ - -/* texload is a simplistic routine for reading an SGI .rgb image file. */ - -#include -#include -#include - -#include "texload.h" - -typedef struct _ImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short xsize, ysize, zsize; - unsigned int min, max; - unsigned int wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp; - unsigned long rleEnd; - unsigned int *rowStart; - int *rowSize; -} ImageRec; - -void -rgbtorgb(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *l,int n) { - while(n--) { - l[0] = r[0]; - l[1] = g[0]; - l[2] = b[0]; - l += 3; r++; g++; b++; - } -} - -static void -ConvertShort(unsigned short *array, unsigned int length) { - unsigned short b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void -ConvertUint(unsigned *array, unsigned int length) { - unsigned int b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static ImageRec *ImageOpen(char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - ImageRec *image; - int swapFlag; - int x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) { - swapFlag = 1; - } else { - swapFlag = 0; - } - - image = (ImageRec *)malloc(sizeof(ImageRec)); - if (image == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - if ((image->file = fopen(fileName, "rb")) == NULL) { - return NULL; - } - - fread(image, 1, 12, image->file); - - if (swapFlag) { - ConvertShort(&image->imagic, 6); - } - - image->tmp = (unsigned char *)malloc(image->xsize*256); - if (image->tmp == NULL) { - fprintf(stderr, "\nOut of memory!\n"); - exit(1); - } - - if ((image->type & 0xFF00) == 0x0100) { - x = image->ysize * image->zsize * (int) sizeof(unsigned); - image->rowStart = (unsigned *)malloc(x); - image->rowSize = (int *)malloc(x); - if (image->rowStart == NULL || image->rowSize == NULL) { - fprintf(stderr, "\nOut of memory!\n"); - exit(1); - } - image->rleEnd = 512 + (2 * x); - fseek(image->file, 512, SEEK_SET); - fread(image->rowStart, 1, x, image->file); - fread(image->rowSize, 1, x, image->file); - if (swapFlag) { - ConvertUint(image->rowStart, x/(int) sizeof(unsigned)); - ConvertUint((unsigned *)image->rowSize, x/(int) sizeof(int)); - } - } - return image; -} - -static void -ImageClose(ImageRec *image) { - fclose(image->file); - free(image->tmp); - free(image); -} - -static void -ImageGetRow(ImageRec *image, unsigned char *buf, int y, int z) { - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((image->type & 0xFF00) == 0x0100) { - fseek(image->file, (long) image->rowStart[y+z*image->ysize], SEEK_SET); - fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize], - image->file); - - iPtr = image->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int)(pixel & 0x7F); - if (!count) { - return; - } - if (pixel & 0x80) { - while (count--) { - *oPtr++ = *iPtr++; - } - } else { - pixel = *iPtr++; - while (count--) { - *oPtr++ = pixel; - } - } - } - } else { - fseek(image->file, 512+(y*image->xsize)+(z*image->xsize*image->ysize), - SEEK_SET); - fread(buf, 1, image->xsize, image->file); - } -} - -GLubyte * -read_alpha_texture(char *name, int *width, int *height) -{ - unsigned char *base, *lptr; - ImageRec *image; - int y; - - image = ImageOpen(name); - if(!image) { - return NULL; - } - - (*width)=image->xsize; - (*height)=image->ysize; - if (image->zsize != 1) { - ImageClose(image); - return NULL; - } - - base = (unsigned char *)malloc(image->xsize*image->ysize*sizeof(unsigned char)); - lptr = base; - for(y=0; yysize; y++) { - ImageGetRow(image,lptr,y,0); - lptr += image->xsize; - } - ImageClose(image); - - return (unsigned char *) base; -} - -GLubyte * -read_rgb_texture(char *name, int *width, int *height) -{ - unsigned char *base, *ptr; - unsigned char *rbuf, *gbuf, *bbuf, *abuf; - ImageRec *image; - int y; - - image = ImageOpen(name); - - if(!image) - return NULL; - (*width)=image->xsize; - (*height)=image->ysize; - if (image->zsize != 3 && image->zsize != 4) { - ImageClose(image); - return NULL; - } - - base = (unsigned char*)malloc(image->xsize*image->ysize*sizeof(unsigned int)*3); - rbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - gbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - bbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - abuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char)); - if(!base || !rbuf || !gbuf || !bbuf || !abuf) { - if (base) free(base); - if (rbuf) free(rbuf); - if (gbuf) free(gbuf); - if (bbuf) free(bbuf); - if (abuf) free(abuf); - return NULL; - } - ptr = base; - for(y=0; yysize; y++) { - if(image->zsize == 4) { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - ImageGetRow(image,abuf,y,3); /* Discard. */ - rgbtorgb(rbuf,gbuf,bbuf,ptr,image->xsize); - ptr += (image->xsize * 3); - } else { - ImageGetRow(image,rbuf,y,0); - ImageGetRow(image,gbuf,y,1); - ImageGetRow(image,bbuf,y,2); - rgbtorgb(rbuf,gbuf,bbuf,ptr,image->xsize); - ptr += (image->xsize * 3); - } - } - ImageClose(image); - free(rbuf); - free(gbuf); - free(bbuf); - free(abuf); - - return (GLubyte *) base; -} diff --git a/lib/glut-3.7.6/progs/demos/underwater/texload.h b/lib/glut-3.7.6/progs/demos/underwater/texload.h deleted file mode 100644 index 1d1d7c56fabfd5bff932c77df8baa3e451258574..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/underwater/texload.h +++ /dev/null @@ -1,12 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -extern GLubyte *read_alpha_texture(char *name, int *width, int *height); -extern GLubyte * read_rgb_texture(char *name, int *width, int *height); - diff --git a/lib/glut-3.7.6/progs/demos/underwater/underwater.c b/lib/glut-3.7.6/progs/demos/underwater/underwater.c deleted file mode 100644 index b10db5800e989b82f2e4c23f6403630ad3c423ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/underwater/underwater.c +++ /dev/null @@ -1,633 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o underwater underwater.c texload.c dino.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -/* This code compiles and works with any of 1) OpenGL 1.0 with no - texture extensions, 2) OpenGL 1.0 with texture extensions, or 3) - OpenGL 1.1. */ - -#include -#include -#include -#include -#include - -#include "texload.h" -#include "dino.h" - -#if 0 /* For debugging different OpenGL versions. */ -#undef GL_VERSION_1_1 -#undef GL_EXT_texture_object -#endif - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* Texture object compatibility. */ -#if defined(GL_VERSION_1_1) -#define TEXTURE_OBJECT 1 -#elif defined(GL_EXT_texture_object) -#define TEXTURE_OBJECT 1 -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B) -#ifndef GL_REPLACE -#define GL_REPLACE GL_REPLACE_EXT -#endif -#else -/* Define to nothing; but HaveTexObj will not be true in this case. */ -#define glBindTexture(A,B) -#define glGenTextures(A,B) -#define glDeleteTextures(A,B) -#endif - -#define NUM_PATTERNS 32 -#define FLOOR_FILE "floor.rgb" - -enum { - PASS_NORMAL, PASS_CAUSTIC -}; - -enum { - M_POSITIONAL, M_DIRECTIONAL, M_GREENISH_LIGHT, M_WHITE_LIGHT, - M_NO_CAUSTICS, M_WITH_CAUSTICS, M_SWITCH_MODEL, - M_INCREASE_RIPPLE_SIZE, M_DECREASE_RIPPLE_SIZE -}; - -enum { - MODEL_SPHERE, MODEL_CUBE, MODEL_DINO -}; - -static GLboolean HaveTexObj = GL_FALSE; -static int object = MODEL_SPHERE; -static int reportSpeed = 0; -static int dinoDisplayList; -static GLfloat causticScale = 1.0; -static int fullscreen = 0; - -static GLfloat lightPosition[4]; -/* XXX Diffuse light color component > 1.0 to brighten caustics. */ -static GLfloat lightDiffuseColor[] = {1.0, 1.5, 1.0, 1.0}; /* XXX Green = 1.5 */ -static GLfloat defaultDiffuseMaterial[] = {0.8, 0.8, 0.8, 1.0}; - -static int directionalLight = 1; -static int showCaustics = 1, causticMotion = 1; -static int useMipmaps = 1; -static int currentCaustic = 0; -static int causticIncrement = 1; - -static float lightAngle = 0.0, lightHeight = 20; -static GLfloat angle = -150; /* in degrees */ -static GLfloat angle2 = 30; /* in degrees */ - -static int moving = 0, startx, starty; -static int lightMoving = 0, lightStartX, lightStartY; - -static GLfloat floorVertices[4][3] = { - { -20.0, 0.0, 20.0 }, - { 20.0, 0.0, 20.0 }, - { 20.0, 0.0, -20.0 }, - { -20.0, 0.0, -20.0 }, -}; - -void -drawLightLocation(void) -{ - glPushMatrix(); - glDisable(GL_LIGHTING); - glDisable(GL_TEXTURE_2D); - glColor3f(1.0, 1.0, 0.0); - if (directionalLight) { - /* Draw an arrowhead. */ - glDisable(GL_CULL_FACE); - glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]); - glRotatef(lightAngle * -180.0 / M_PI, 0, 1, 0); - glRotatef(atan(lightHeight/12) * 180.0 / M_PI, 0, 0, 1); - glBegin(GL_TRIANGLE_FAN); - glVertex3f(0, 0, 0); - glVertex3f(2, 1, 1); - glVertex3f(2, -1, 1); - glVertex3f(2, -1, -1); - glVertex3f(2, 1, -1); - glVertex3f(2, 1, 1); - glEnd(); - /* Draw a white line from light direction. */ - glColor3f(1.0, 1.0, 1.0); - glBegin(GL_LINES); - glVertex3f(0, 0, 0); - glVertex3f(5, 0, 0); - glEnd(); - glEnable(GL_CULL_FACE); - } else { - /* Draw a yellow ball at the light source. */ - glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]); - glutSolidSphere(1.0, 5, 5); - } - glEnable(GL_TEXTURE_2D); - glEnable(GL_LIGHTING); - glPopMatrix(); -} - -/* Draw a floor (possibly textured). */ -static void -drawFloor(int pass) -{ - if (pass == PASS_NORMAL) { - if (HaveTexObj) - glBindTexture(GL_TEXTURE_2D, 100); - else - glCallList(100); - } - - /* The glTexCoord2f calls get ignored when in texture generation - mode (ie, when modulating in caustics). */ - - glBegin(GL_QUADS); - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2f(0.0, 0.0); - glVertex3fv(floorVertices[0]); - glTexCoord2f(0.0, 2.0); - glVertex3fv(floorVertices[1]); - glTexCoord2f(2.0, 2.0); - glVertex3fv(floorVertices[2]); - glTexCoord2f(2.0, 0.0); - glVertex3fv(floorVertices[3]); - glEnd(); -} - -void -drawObject(int pass) -{ - if (pass == PASS_NORMAL) { - /* The objects are not textured (they could be if someone - wanted them to be) so disable texture in the normal pass. In - the caustic pass, we want to avoid disabling texture though. */ - glDisable(GL_TEXTURE_2D); - } - - glPushMatrix(); - - /* If object is dino, put feet on the floor. */ - glTranslatef(0.0, object == MODEL_DINO ? 8.0 : 12.0, 0.0); - - switch (object) { - case MODEL_SPHERE: - glutSolidSphere(6.0, 12, 12); - break; - case MODEL_CUBE: - glutSolidCube(7.0); - break; - case MODEL_DINO: - glCallList(dinoDisplayList); - glMaterialfv(GL_FRONT, GL_DIFFUSE, defaultDiffuseMaterial); - break; - } - glPopMatrix(); - - if (pass == PASS_NORMAL) { - glEnable(GL_TEXTURE_2D); - } -} - -void -drawScene(int pass) -{ - /* The 0.03 in the Y column is just to shift the texture coordinates - a little based on Y (depth in the water) so that vertical faces - (like on the cube) do not get totally vertical caustics. */ - GLfloat sPlane[4] = { 0.05, 0.03, 0.0, 0.0 }; - GLfloat tPlane[4] = { 0.0, 0.03, 0.05, 0.0 }; - - /* The causticScale determines how large the caustic "ripples" will - be. See the "Increate/Decrease ripple size" menu options. */ - - sPlane[0] = 0.05 * causticScale; - sPlane[1] = 0.03 * causticScale; - - tPlane[1] = 0.03 * causticScale; - tPlane[2] = 0.05 * causticScale; - - if (pass == PASS_CAUSTIC) { - /* Set current color to "white" and disable lighting - to emulate OpenGL 1.1's GL_REPLACE texture environment. */ - glColor3f(1.0, 1.0, 1.0); - glDisable(GL_LIGHTING); - - /* Generate the S & T coordinates for the caustic textures - from the object coordinates. */ - - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGenfv(GL_S, GL_OBJECT_PLANE, sPlane); - glTexGenfv(GL_T, GL_OBJECT_PLANE, tPlane); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - - if (HaveTexObj) { - glBindTexture(GL_TEXTURE_2D, currentCaustic+1); - } else { - glCallList(currentCaustic+101); - } - } - - drawFloor(pass); - drawObject(pass); - - if (pass == PASS_CAUSTIC) { - glEnable(GL_LIGHTING); - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - } -} - -void -display(void) -{ - int startTime, endTime; - - /* Simplistic benchmarking. Be careful about results. */ - if (reportSpeed) { - startTime = glutGet(GLUT_ELAPSED_TIME); - } - - /* Clear depth and color buffer. */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* Reposition the light source. */ - lightPosition[0] = 12*cos(lightAngle); - lightPosition[1] = lightHeight; - lightPosition[2] = 12*sin(lightAngle); - if (directionalLight) { - lightPosition[3] = 0.0; - } else { - lightPosition[3] = 1.0; - } - - glPushMatrix(); - /* Perform scene rotations based on user mouse input. */ - glRotatef(angle2, 1.0, 0.0, 0.0); - glRotatef(angle, 0.0, 1.0, 0.0); - - /* Position the light again, after viewing rotation. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - - /* Draw the light location. */ - drawLightLocation(); - - /* Normal pass rendering the scene (caustics get added - after this pass). */ - drawScene(PASS_NORMAL); - - if (showCaustics) { - /* Disable depth buffer update and exactly match depth - buffer values for slightly faster rendering. */ - glDepthMask(GL_FALSE); - glDepthFunc(GL_EQUAL); - - /* Multiply the source color (from the caustic luminance - texture) with the previous color from the normal pass. The - caustics are modulated into the scene. */ - glBlendFunc(GL_ZERO, GL_SRC_COLOR); - glEnable(GL_BLEND); - - drawScene(PASS_CAUSTIC); - - /* Restore fragment operations to normal. */ - glDepthMask(GL_TRUE); - glDepthFunc(GL_LESS); - glDisable(GL_BLEND); - } - glPopMatrix(); - - glutSwapBuffers(); - - if (reportSpeed) { - glFinish(); - endTime = glutGet(GLUT_ELAPSED_TIME); - printf("Speed %.3g frames/sec (%d ms)\n", 1000.0/(endTime-startTime), endTime-startTime); - fflush(stdout); - } -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, /* field of view in degree */ - (GLfloat) w/(GLfloat) h, /* aspect ratio */ - 20.0, /* Z near */ - 100.0); /* Z far */ - glMatrixMode(GL_MODELVIEW); -} - -void -idle(void) -{ - /* Advance the caustic pattern. */ - currentCaustic = (currentCaustic + causticIncrement) % NUM_PATTERNS; - glutPostRedisplay(); -} - -void -updateIdleFunc(void) -{ - /* Must be both displaying the caustic patterns and have the - caustics in rippling motion to need an idle callback. */ - if (showCaustics && causticMotion) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } -} - -void -visible(int vis) -{ - /* Stop the animation when the window is not visible. */ - if (vis == GLUT_VISIBLE) - updateIdleFunc(); - else - glutIdleFunc(NULL); -} - -/* ARGSUSED2 */ -static void -mouse(int button, int state, int x, int y) -{ - /* Rotate the scene with the left mouse button. */ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - moving = 1; - startx = x; - starty = y; - } - if (state == GLUT_UP) { - moving = 0; - } - } - /* Rotate the light position with the middle mouse button. */ - if (button == GLUT_MIDDLE_BUTTON) { - if (state == GLUT_DOWN) { - lightMoving = 1; - lightStartX = x; - lightStartY = y; - } - if (state == GLUT_UP) { - lightMoving = 0; - } - } -} - -/* ARGSUSED1 */ -static void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - startx); - angle2 = angle2 + (y - starty); - startx = x; - starty = y; - glutPostRedisplay(); - } - if (lightMoving) { - lightAngle += (x - lightStartX)/40.0; - lightHeight += (lightStartY - y)/20.0; - lightStartX = x; - lightStartY = y; - glutPostRedisplay(); - } -} - -/* ARGSUSED1 */ -static void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: /* Escape quits. */ - exit(0); - break; - case 'R': /* Simplistic benchmarking. */ - case 'r': - reportSpeed = !reportSpeed; - break; - case ' ': /* Spacebar toggles caustic rippling motion. */ - causticMotion = !causticMotion; - updateIdleFunc(); - break; - } -} - -void -menuSelect(int value) -{ - switch (value) { - case M_POSITIONAL: - directionalLight = 0; - break; - case M_DIRECTIONAL: - directionalLight = 1; - break; - case M_GREENISH_LIGHT: - lightDiffuseColor[0] = 1.0; - lightDiffuseColor[1] = 1.5; /* XXX Green = 1.5 */ - lightDiffuseColor[2] = 1.0; - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuseColor); - break; - case M_WHITE_LIGHT: - lightDiffuseColor[0] = 1.5; /* XXX Red = 1.5 */ - lightDiffuseColor[1] = 1.5; /* XXX Green = 1.5 */ - lightDiffuseColor[2] = 1.5; /* XXX Blue = 1.5 */ - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuseColor); - break; - case M_WITH_CAUSTICS: - showCaustics = 1; - updateIdleFunc(); - break; - case M_NO_CAUSTICS: - showCaustics = 0; - updateIdleFunc(); - break; - case M_SWITCH_MODEL: - object = (object + 1) % 3; - break; - case M_INCREASE_RIPPLE_SIZE: - causticScale /= 1.5; - break; - case M_DECREASE_RIPPLE_SIZE: - causticScale *= 1.5; - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - int width, height; - int i; - GLubyte *imageData; - - glutInit(&argc, argv); - for (i=1; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=underwater - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "underwater.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "underwater.mak" CFG="underwater - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "underwater - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "underwater - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "underwater - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "underwater - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "underwater - Win32 Release" -# Name "underwater - Win32 Debug" -# Begin Source File - -SOURCE=.\dino.c -# End Source File -# Begin Source File - -SOURCE=.\dino.h -# End Source File -# Begin Source File - -SOURCE=.\texload.c -# End Source File -# Begin Source File - -SOURCE=.\texload.h -# End Source File -# Begin Source File - -SOURCE=.\underwater.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/walker/Imakefile b/lib/glut-3.7.6/progs/demos/walker/Imakefile deleted file mode 100644 index 22594c9b06b99e51402dd3bc18b0bcb922046e11..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/Imakefile +++ /dev/null @@ -1,15 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../../Glut.cf" - -TARGETS = walker - -SRCS = models.c walker.c walkviewer.c -OBJS = models.o walker.o walkviewer.o - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(walker,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/walker/Impossible.cset b/lib/glut-3.7.6/progs/demos/walker/Impossible.cset deleted file mode 100644 index 2bbe14becb76f23b4d8e6e66083361076eda1ad7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/Impossible.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -7 -0.000000 0.087891 0.314453 0.416016 0.582031 0.798828 1.000000 -90.000000 32.378052 -477.987793 -252.987793 -31.646343 -416.707306 -652.682922 -10 -0.000000 0.126953 0.273438 0.330078 0.361328 0.687500 0.769531 0.845703 0.876953 1.000000 --39.146336 -35.487804 -305.304871 12.073175 270.000000 265.426819 115.426834 270.000000 -29.085360 -40.975601 -13 -0.000000 0.085938 0.248047 0.308594 0.365234 0.457812 0.507812 0.587891 0.730469 0.802734 0.865234 0.917969 1.000000 -0.000000 -30.182919 -30.182919 0.914639 0.914639 0.000000 0.000000 32.012203 34.756104 0.000000 -21.036575 -22.865843 0.000000 -7 -0.000000 0.199219 0.025391 0.496094 0.980469 0.755859 1.000000 -0.000000 -8.414616 587.012207 590.670776 596.158569 13.536610 0.000000 -7 -0.000000 0.291016 0.250000 0.457031 0.599609 1.000000 1.000000 -10.609768 810.000000 5.121963 -79.939011 -89.999992 460.609741 11.524401 diff --git a/lib/glut-3.7.6/progs/demos/walker/MrFlex.cset b/lib/glut-3.7.6/progs/demos/walker/MrFlex.cset deleted file mode 100644 index d31d10014db62586d5da49489c62754387fc64bf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/MrFlex.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -7 -0.000000 0.073308 0.289062 0.501953 0.657895 0.854369 1.000000 -0.000000 45.182926 57.987804 0.365853 -55.426830 -53.597565 0.000000 -10 -0.000000 0.136719 0.207031 0.283203 0.462891 0.695489 0.817669 0.875940 0.916016 1.000000 --39.146336 -40.975601 -25.426826 -0.731707 78.841469 87.987808 2.926832 -40.060970 -49.207314 -40.975601 -4 -0.000000 0.212891 0.755859 1.000000 --89.634132 1.829277 -0.914623 -85.975601 -7 -0.000000 0.205374 0.362764 0.510557 0.650672 0.886756 1.000000 -0.000000 -44.999977 -62.378021 0.731733 60.182949 56.524414 0.000000 -10 -0.000000 0.080614 0.307102 0.325188 0.447368 0.584586 0.639098 0.680451 0.781955 1.000000 -47.195133 64.573181 49.024403 10.609768 -59.817059 -36.036572 -0.365843 29.817087 87.439034 46.280499 diff --git a/lib/glut-3.7.6/progs/demos/walker/Ouch.cset b/lib/glut-3.7.6/progs/demos/walker/Ouch.cset deleted file mode 100644 index e199a9145b985123ac2288eefb2072dd3e0c3659..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/Ouch.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -10 -0.000000 0.054688 0.123047 0.253906 0.332031 0.482422 0.501953 0.742188 0.828125 1.000000 -0.000000 90.000000 90.000000 74.451218 90.000000 90.000000 0.365853 -373.719513 -45.365852 0.000000 -10 -0.000000 0.136719 0.250000 0.318359 0.421875 0.646484 0.761719 0.816406 0.916016 1.000000 --39.146336 -40.975601 -29.999992 -1.646340 79.756104 59.634148 -4.390240 -20.853649 -49.207314 -40.975601 -7 -0.000000 0.072266 0.205078 0.246094 0.460938 0.652344 1.000000 -0.000000 450.000000 424.390259 110.111908 -450.000000 -438.109802 0.000000 -7 -0.000000 0.107422 0.330078 0.449219 0.544922 0.839844 1.000000 -0.000000 -234.329239 -264.512146 461.707336 591.585388 -232.499969 0.000000 -4 -0.000000 0.187500 0.023438 1.000000 -10.609768 -89.999992 261.219513 11.524401 diff --git a/lib/glut-3.7.6/progs/demos/walker/README b/lib/glut-3.7.6/progs/demos/walker/README deleted file mode 100644 index 0f115e017d83a5eab3ef219cec9c350bdeb37d4d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/README +++ /dev/null @@ -1,119 +0,0 @@ - -last updated 11/2/95 - -BACKGROUND ----------- - -Walker is a program I wrote with Kanishka Agarwal for our final project -in our graphics class while we were at Harvey Mudd College. I did most -of the viewing, UI, and internals, while Kanishka concentrated on the model. -We both came up with different .cset (curve set) files which make the guy -do various things. We spent dozens of minutes marching around the graphics -lab trying to figure out just how people walk. It was not a rigorous effort. - -The program is for modeling human(oid) motion with forward kinetics. -Forward kinetics basically means it does nothing cool for you with respect -to how people really move, how articulated linkages move, or how gravity -works. You must specify the angular displacement of each joint at each -point in time. Also, our model only has 5 joints. AND each joint only -has one degree of freedom. - -Okay, so enough about why it sucks; it is cool because you can put together -some neat little animation sequences and it is fun to play with the curves -and see immediate feedback. Plus you can spin the guy around really fast -while he's running: if that's not the sign of a quality graphics program -I don't know what is. And it illustrates how to do an app in GLUT with -simultaneous 2D and 3D displays/interfaces. - -INSTRUCTIONS ------------- - -Basically you've got two windows. One shows the guy; one shows the rotation -curves. You know SGI demos: just click around with all three mouse buttons -on anything that looks interesting and you'll figure it out. - -MORE INSTRUCTIONS ------------------ - -All I can think of to add are keyboard commands. I have not used the program -myself it several months and can't really remember how to use it. But it -was easy I remember that. Here are keyboard commands you might have missed: - -In 3D window, viewer keys: - 0-9 and +/- to change speed when in FLYING MODE - (Careful use of flying mode and you can pretend the guy actually - is moving as he's flailing his legs. Or, edit the program so it'll - take another curve which isn't a rotation but a displacement. - For BONUS POINTS: Have the program compute this based on the - rotation curves of the three leg joints.) -In 3D window, walker keys: - f, F: step forward 1, 5 time step(s) - b, B: step backward 1, 5 time step(s) - spacebar: step forward one time step -In 2D (curves) window: - same as 3D window walker keys plus: - 1-5: edit curve #1-5 - d: stop edit curves - -Remember, each of the three buttons in each window does something. I think. -There are pop-up menus, I know that much. - -POINTERS --------- - -We researched a number of sources before writing this, but I think our main -reference was this book: - Advanced Animation and Rendering Techniques - Theory and Practice - Alan Watt, Mark Watt - Addison-Wesley (ACM Press) 1992 -Whatever else we read we probably got from a citation in that book. - -But hey if it's on paper it's probably out of date, right? No, but -try these anyway: - http://www.cc.gatech.edu/gvu/animation/ - http://robotics.stanford.edu/users/kuffner/human.html - http://market.net/literary/mkp/pages/1554/index.html - -DIRECTORY LISTING ------------------ - 483 May 15 04:05 Makefile - - 324 May 15 04:03 walker.h -28346 May 15 03:59 walker.c - most everything, callbacks for both windows - (except AGV for the model window) - -17601 May 15 04:00 models.c - models, wireframe, solid rectangles, and - cylinders/spheres. Colors could use a little - work! And you could plug in a totally -different - model and make that work too. - - 3435 May 12 16:19 walkviewer.h -13095 May 12 16:19 walkviewer.c - basically AGV (a GLUT viewer) - - 928 May 12 16:19 walking.cset - curves we did... - 809 May 12 16:19 running.cset - 762 May 12 16:19 bound.cset - 978 May 12 16:19 moonwalk.cset - 1177 May 12 16:19 dunk.cset - 1236 May 12 16:19 reverse_dunk.cset - 924 May 12 16:19 kick.cset - 882 May 12 16:19 Impossible.cset - 754 May 12 16:19 MrFlex.cset - 767 May 12 16:19 Ouch.cset - -AUTHORS -------- -Kanishka Agarwal - whereabouts unknown - (to me anyway, but I could track him down if need be) -Philip Winston - pwinston@hmc.edu - http://www.cs.hmc.edu/~pwinston/ - Email me your .cset files! (unless they're worse than ours) - Also email me if you modify the program substantially or - play with it as a means of procrastination. I'm just - curious. -Ran Libeskind-Hadas - hadas@cs.hmc.edu - http://www.cs.hmc.edu/~hadas/ - (He didn't write any code, but he taught the class. - Plus he's a cool guy.) - diff --git a/lib/glut-3.7.6/progs/demos/walker/bound.cset b/lib/glut-3.7.6/progs/demos/walker/bound.cset deleted file mode 100644 index 61ef2af2fb7a22bef46f9d868cc2bea973a872d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/bound.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -7 -0.000000 0.087891 0.416016 0.501953 0.574219 0.958254 1.000000 -0.000000 32.378052 26.890245 0.365853 -31.646343 -52.682919 0.000000 -7 -0.000000 0.377609 0.333966 0.603416 0.776091 0.884250 1.000000 --45.548779 42.256100 -94.024384 -41.890236 13.902442 -35.487804 -46.463413 -10 -0.000000 0.085938 0.225806 0.297913 0.398482 0.455408 0.525617 0.910816 0.888046 1.000000 --8.231699 -30.182919 -47.560974 -13.719510 39.329273 36.585373 22.865858 -116.158531 8.231715 -12.804866 -7 -0.000000 0.253906 0.300781 0.466797 0.867188 0.792969 1.000000 -22.682949 -97.134117 45.548805 23.597588 -66.036568 38.231731 24.512220 -7 -0.000000 0.322581 0.250474 0.493359 0.802657 0.643264 1.000000 -51.768307 131.341476 -44.268284 43.536598 118.536598 -57.987793 46.280499 diff --git a/lib/glut-3.7.6/progs/demos/walker/dunk.cset b/lib/glut-3.7.6/progs/demos/walker/dunk.cset deleted file mode 100644 index ac8e2754d1d16ed336c89350ab7606ce5738fb22..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/dunk.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -1 -13 -0.000000 0.003731 0.250000 0.313433 0.421642 0.475746 0.621269 0.700190 0.802239 0.833955 0.854478 0.988615 1.000000 -25.975613 -31.646343 -46.280487 -20.670734 90.000000 88.170731 3.109758 -41.707321 7.682930 18.658541 30.548784 53.414635 28.719511 -13 -0.000000 0.050373 0.203358 0.345149 0.481973 0.432836 0.548387 0.609108 0.701493 0.750000 0.863806 0.874763 1.000000 --51.036579 109.024391 -135.182922 -72.073166 -44.634148 -6.219506 -5.304873 -8.963406 -23.597561 -28.170727 -24.512194 -143.414627 -55.609745 -10 -0.000000 0.018018 0.138672 0.376471 0.472656 0.386194 0.569030 0.597015 0.946869 1.000000 -24.695131 -79.573158 -57.621941 -65.853653 -60.365849 99.695129 -55.792671 -97.865845 82.317078 26.524397 -10 -0.000000 0.037109 0.044922 0.271484 0.378906 0.335821 0.470149 0.929791 0.673624 1.000000 -39.146362 63.841484 215.670746 195.548798 187.317093 94.939049 99.512215 250.426849 15.365876 32.743923 -13 -0.000000 0.259766 0.152344 0.348881 0.382463 0.386719 0.464844 0.542910 0.588060 0.743833 0.833017 0.921875 1.000000 -27.073183 11.524401 156.951233 103.902451 -21.402430 16.097572 4.207329 15.182940 22.071266 37.134159 212.743912 32.560989 27.987816 diff --git a/lib/glut-3.7.6/progs/demos/walker/kick.cset b/lib/glut-3.7.6/progs/demos/walker/kick.cset deleted file mode 100644 index d0dfc8474ee983ba88b76e92e29477afa45fa05c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/kick.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -10 -0.000000 0.064453 0.201172 0.297656 0.365234 0.357422 0.458984 0.466797 0.855446 1.000000 --13.353657 -230.121948 84.512192 76.280487 68.048782 65.304878 0.000000 -12.439023 1.280487 -6.951213 -13 -0.000000 0.023438 0.109375 0.173828 0.218750 0.210938 0.320312 0.372277 0.433663 0.533203 0.556641 0.660156 1.000000 -0.000000 -72.073166 -95.853653 -30.656534 -25.426826 -2.560973 2.012198 -20.853649 -18.109749 -7.134140 -0.731707 -3.475606 0.000000 -4 -0.000000 0.200000 0.800000 1.000000 -0.000000 0.000000 0.000000 0.000000 -13 -0.000000 0.031683 0.178218 0.283168 0.378218 0.423828 0.552475 0.659406 0.639604 0.776238 0.855446 0.835938 1.000000 -3.475633 67.500023 96.768318 -46.829247 -77.926811 132.439041 -44.999977 -83.414612 53.780510 53.780510 50.121975 -2.012172 0.731733 -7 -0.000000 0.105469 0.251953 0.501953 0.625000 0.800781 1.000000 -0.000000 121.280495 101.158546 -1.280476 50.853668 92.012207 0.000000 diff --git a/lib/glut-3.7.6/progs/demos/walker/models.c b/lib/glut-3.7.6/progs/demos/walker/models.c deleted file mode 100644 index 3c2c84c9cb20223221b5a1860d3fa834f4fed79a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/models.c +++ /dev/null @@ -1,691 +0,0 @@ -#include -#include -#include -#include - -#include "walker.h" - - - /* for cube models */ -#define UPPER_LEG_SIZE_C 0.45 -#define LOWER_LEG_SIZE_C 0.45 -#define UPPER_ARM_SIZE_C 0.4 -#define LOWER_ARM_SIZE_C 0.4 -#define FOOT_SIZE_C 0.2 -#define HEAD_SIZE_C 0.25 -#define TORSO_HEIGHT_C 0.8 -#define TORSO_WIDTH_C 0.5 -#define LEG_GIRTH_C 0.1 -#define ARM_GIRTH_C 0.05 - - /* for cylinder models */ -#define UPPER_LEG_SIZE 0.5 -#define LOWER_LEG_SIZE 0.5 -#define LEG_GIRTH 0.08 -#define UPPER_LEG_GIRTH 0.1 -#define UPPER_LEG_TAPER 0.8 -#define LOWER_LEG_TAPER 0.8 -#define LOWER_LEG_GIRTH 0.07 - -#define UPPER_ARM_SIZE 0.45 -#define LOWER_ARM_SIZE 0.45 -#define ARM_GIRTH 0.05 -#define UPPER_ARM_GIRTH 0.05 -#define LOWER_ARM_GIRTH 0.04 -#define UPPER_ARM_TAPER 0.8 -#define LOWER_ARM_TAPER 0.8 - -#define HIP_JOINT_SIZE 0.1 -#define KNEE_JOINT_SIZE 0.09 -#define SHOULDER_JOINT_SIZE 0.05 -#define ELBOW_JOINT_SIZE 0.045 - -#define HEAD_SIZE 0.2 -#define FOOT_SIZE 0.15 - -#define TORSO_HEIGHT 0.8 -#define TORSO_WIDTH 0.35 -#define TORSO_TAPER 0.7 - -#define STACKS 10 -#define SLICES 10 - -#define NUM_BODY_PARTS 7 - - -#define LEFT 0 -#define RIGHT 1 -#define SOLID 1 -#define WIRE 0 - - - -void DrawTheGuy_WC(void); -void DrawTheGuy_SC(void); -void draw_head_C(int solid); -void draw_torso_C(int solid); -void draw_leg_C(int which, int solid); -void draw_arm_C(int which, int solid); - -void StoreTheGuy_SL(void); -void DrawTheGuy_SL(void); -void draw_head_SL(void); -void draw_torso_SL(void); -void draw_leg_SL(int which); -void draw_arm_SL(int which); -void store_head_SL(void); -void store_torso_SL(void); -void store_uleg_SL(void); -void store_lleg_SL(void); -void store_foot_SL(void); -void store_uarm_SL(void); -void store_larm_SL(void); - -void StoreTheGuy_SL2(void); -void DrawTheGuy_SL2(void); -void draw_head_SL2(void); -void draw_torso_SL2(void); -void draw_leg_SL2(int which); -void draw_arm_SL2(int which); -void store_head_SL2(void); -void store_torso_SL2(void); -void store_uleg_SL2(void); -void store_lleg_SL2(void); -void store_foot_SL2(void); -void store_uarm_SL2(void); -void store_larm_SL2(void); - -/**************************************************************/ -void DrawTheGuy_WC(void) -{ - draw_head_C(WIRE); - draw_torso_C(WIRE); - draw_leg_C(LEFT, WIRE); - draw_leg_C(RIGHT, WIRE); - draw_arm_C(LEFT, WIRE); - draw_arm_C(RIGHT, WIRE); -} - -/**************************************************************/ -void DrawTheGuy_SC(void) -{ - GLfloat head_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; - GLfloat torso_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; - GLfloat leg_diffuse[] = { 0.7, 0.0, 0.7, 1.0 }; - GLfloat arm_diffuse[] = { 0.7, 0.4, 0.4, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, head_diffuse); - draw_head_C(SOLID); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, torso_diffuse); - draw_torso_C(SOLID); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, leg_diffuse); - draw_leg_C(LEFT, SOLID); - draw_leg_C(RIGHT, SOLID); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, arm_diffuse); - draw_arm_C(LEFT, SOLID); - draw_arm_C(RIGHT, SOLID); -} - - - -/**********************************************************/ -void draw_head_C(int solid) -{ - glPushMatrix(); - glColor3f(1.0, 1.0, 0.0); - glTranslatef(0.0, TORSO_HEIGHT_C+(HEAD_SIZE_C/1.5), 0.0); - glScalef(HEAD_SIZE_C, HEAD_SIZE_C, LEG_GIRTH_C); - if (solid) - glutSolidCube(1.0); - else - glutWireCube(1.0); - glPopMatrix(); -} - -/**********************************************************/ -void draw_torso_C(int solid) -{ - glPushMatrix(); - glColor3f(0.0, 1.0, 1.0); - glTranslatef(0.0, TORSO_HEIGHT_C/2.0, 0.0); - glScalef(TORSO_WIDTH_C, TORSO_HEIGHT_C, LEG_GIRTH_C); - if (solid) - glutSolidCube(1.0); - else - glutWireCube(1.0); - glPopMatrix(); -} - -/**********************************************************/ -void draw_leg_C(int which, int solid) -{ - glPushMatrix(); - if (which == 0) - glTranslatef(TORSO_WIDTH_C/4.0, 0.0, 0.0); - else glTranslatef(-TORSO_WIDTH_C/4.0, 0.0, 0.0); - /* Upper leg: rotates about the x axis only */ - glColor3f(1.0, 0.0, 0.0); - glRotatef(Walk_cycle[which][0][Step],1.0, 0.0, 0.0); - glPushMatrix(); - glTranslatef(0.0, -UPPER_LEG_SIZE_C/2.0, 0.0); - glScalef(LEG_GIRTH_C, UPPER_LEG_SIZE_C, LEG_GIRTH_C); - if (solid) - glutSolidCube(1.0); - else - glutWireCube(1.0); - glPopMatrix(); - - /* Lower leg: rotates about the x axis only */ - glColor3f(0.0, 1.0, 0.0); - glTranslatef(0.0, -(UPPER_LEG_SIZE_C+LOWER_LEG_SIZE_C)/2.0, 0.0); - glRotatef(Walk_cycle[which][1][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glTranslatef(0.0, -LOWER_LEG_SIZE_C/2.0, 0.0); - glScalef(LEG_GIRTH_C, LOWER_LEG_SIZE_C, LEG_GIRTH_C); - if (solid) - glutSolidCube(1.0); - else - glutWireCube(1.0); - glPopMatrix(); - - /* Foot: rotates about the x axis only */ - glColor3f(0.0, 0.0, 1.0); - - glTranslatef(0.0, -(UPPER_LEG_SIZE_C+LOWER_LEG_SIZE_C+LEG_GIRTH_C)/2.0, 0.0); - glRotatef(Walk_cycle[which][2][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glTranslatef(0.0, -LEG_GIRTH_C/2.0, -FOOT_SIZE_C/4.0); - glScalef(LEG_GIRTH_C, LEG_GIRTH_C, FOOT_SIZE_C); - if (solid) - glutSolidCube(1.0); - else - glutWireCube(1.0); - glPopMatrix(); - - glPopMatrix(); -} - -/*********************************************************************/ -void draw_arm_C(int which, int solid) -{ - int arm_which; - - if (which == 1) - arm_which = 1; - else arm_which = 0; - - glPushMatrix(); - glTranslatef(0.0, TORSO_HEIGHT_C, 0.0); - if (which == 0) - glTranslatef(TORSO_WIDTH_C/1.5, 0.0, 0.0); - else glTranslatef(-TORSO_WIDTH_C/1.5, 0.0, 0.0); - /* Upper leg: rotates about the x axis only */ - glColor3f(1.0, 0.0, 0.0); - glRotatef(Walk_cycle[arm_which][3][Step],1.0, 0.0, 0.0); - glPushMatrix(); - glTranslatef(0.0, -UPPER_ARM_SIZE_C/2.0, 0.0); - glScalef(ARM_GIRTH_C, UPPER_ARM_SIZE_C, ARM_GIRTH_C); - if (solid) - glutSolidCube(1.0); - else - glutWireCube(1.0); - glPopMatrix(); - - /* Lower leg: rotates about the x axis only */ - glColor3f(0.0, 1.0, 0.0); - glTranslatef(0.0, -(UPPER_ARM_SIZE_C+LOWER_ARM_SIZE_C)/2.0, 0.0); - glRotatef(Walk_cycle[arm_which][4][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glTranslatef(0.0, -LOWER_ARM_SIZE_C/2.0, 0.0); - glScalef(ARM_GIRTH_C, LOWER_ARM_SIZE_C, ARM_GIRTH_C); - if (solid) - glutSolidCube(1.0); - else - glutWireCube(1.0); - glPopMatrix(); - - glPopMatrix(); -} - - - - -GLUquadricObj *quadObj; -GLuint body_lists; - -/**************************************************************/ -void StoreTheGuy_SL(void) -{ - quadObj = gluNewQuadric(); - - body_lists = glGenLists(NUM_BODY_PARTS); - - glNewList(body_lists, GL_COMPILE); - store_head_SL(); - glEndList(); - - glNewList(body_lists+1, GL_COMPILE); - store_torso_SL(); - glEndList(); - - glNewList(body_lists+2, GL_COMPILE); - store_uleg_SL(); - glEndList(); - - glNewList(body_lists+3, GL_COMPILE); - store_lleg_SL(); - glEndList(); - - glNewList(body_lists+4, GL_COMPILE); - store_foot_SL(); - glEndList(); - - glNewList(body_lists+5, GL_COMPILE); - store_uarm_SL(); - glEndList(); - - glNewList(body_lists+6, GL_COMPILE); - store_larm_SL(); - glEndList(); - -} - -/**********************************************************/ -void store_head_SL(void) -{ - glPushMatrix(); - glTranslatef(0.0, TORSO_HEIGHT+HEAD_SIZE, 0.0); - glScalef(HEAD_SIZE, HEAD_SIZE, LEG_GIRTH); - glutSolidSphere(1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**********************************************************/ -void store_torso_SL(void) -{ - glPushMatrix(); - glScalef(TORSO_WIDTH, TORSO_HEIGHT, LEG_GIRTH); - glRotatef(-90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj, TORSO_TAPER, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_uleg_SL(void) -{ - glPushMatrix(); - glScalef(LEG_GIRTH, UPPER_LEG_SIZE, LEG_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj, 1.0, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_lleg_SL(void) -{ - glPushMatrix(); - glScalef(LEG_GIRTH, LOWER_LEG_SIZE, LEG_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj, 1.0, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_foot_SL(void) -{ - glPushMatrix(); - glTranslatef(0.0, 0.0, -FOOT_SIZE/2.0); - glScalef(LEG_GIRTH, LEG_GIRTH, FOOT_SIZE); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj, 1.0, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_uarm_SL(void) -{ - glPushMatrix(); - glScalef(ARM_GIRTH, UPPER_ARM_SIZE, ARM_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj, 1.0, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_larm_SL(void) -{ - glPushMatrix(); - glScalef(ARM_GIRTH, LOWER_ARM_SIZE, ARM_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj, 1.0, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void DrawTheGuy_SL(void) -{ - GLfloat head_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; - GLfloat torso_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; - GLfloat leg_diffuse[] = { 0.7, 0.0, 0.7, 1.0 }; - GLfloat arm_diffuse[] = { 0.7, 0.4, 0.4, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, head_diffuse); - draw_head_SL(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, torso_diffuse); - draw_torso_SL(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, leg_diffuse); - draw_leg_SL(0); - draw_leg_SL(1); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, arm_diffuse); - draw_arm_SL(0); - draw_arm_SL(1); - -} - -/**********************************************************/ -void draw_head_SL(void) -{ - glPushMatrix(); - glCallList(body_lists); - glPopMatrix(); -} - -/**********************************************************/ -void draw_torso_SL(void) -{ - glPushMatrix(); - glCallList(body_lists+1); - glPopMatrix(); -} - -/**********************************************************/ -void draw_leg_SL(int which) -{ - glPushMatrix(); - if (which == 0) - glTranslatef(TORSO_TAPER*TORSO_WIDTH/2.0, 0.0, 0.0); - else glTranslatef(-TORSO_TAPER*TORSO_WIDTH/2.0, 0.0, 0.0); - /* Upper leg: rotates about the x axis only */ - glRotatef(Walk_cycle[which][0][Step],1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists+2); - glPopMatrix(); - - /* Lower leg: rotates about the x axis only */ - glTranslatef(0.0, -(UPPER_LEG_SIZE+LOWER_LEG_SIZE)/2.0, 0.0); - glRotatef(Walk_cycle[which][1][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists+3); - glPopMatrix(); - - /* Foot: rotates about the x axis only */ - glTranslatef(0.0, -(UPPER_LEG_SIZE+LOWER_LEG_SIZE+LEG_GIRTH)/2.0, 0.0); - glRotatef(Walk_cycle[which][2][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists+4); - glPopMatrix(); - - glPopMatrix(); -} - -/*********************************************************************/ -void draw_arm_SL(int which) -{ - int arm_which; - - if (which == 1) - arm_which = 1; - else arm_which = 0; - - glPushMatrix(); - glTranslatef(0.0, TORSO_HEIGHT, 0.0); - if (which == 0) - glTranslatef(TORSO_WIDTH, 0.0, 0.0); - else glTranslatef(-TORSO_WIDTH, 0.0, 0.0); - /* Upper leg: rotates about the x axis only */ - glRotatef(Walk_cycle[arm_which][3][Step],1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists+5); - glPopMatrix(); - - /* Lower leg: rotates about the x axis only */ - glTranslatef(0.0, -(UPPER_ARM_SIZE+LOWER_ARM_SIZE)/2.0, 0.0); - glRotatef(Walk_cycle[arm_which][4][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists+6); - glPopMatrix(); - - glPopMatrix(); -} - - - -GLUquadricObj *quadObj2; -GLuint body_lists2; - -/**************************************************************/ -void StoreTheGuy_SL2(void) -{ - quadObj2 = gluNewQuadric(); - - body_lists2 = glGenLists(NUM_BODY_PARTS); - - glNewList(body_lists2, GL_COMPILE); - store_head_SL2(); - glEndList(); - - glNewList(body_lists2+1, GL_COMPILE); - store_torso_SL2(); - glEndList(); - - glNewList(body_lists2+2, GL_COMPILE); - store_uleg_SL2(); - glEndList(); - - glNewList(body_lists2+3, GL_COMPILE); - store_lleg_SL2(); - glEndList(); - - glNewList(body_lists2+4, GL_COMPILE); - store_foot_SL2(); - glEndList(); - - glNewList(body_lists2+5, GL_COMPILE); - store_uarm_SL2(); - glEndList(); - - glNewList(body_lists2+6, GL_COMPILE); - store_larm_SL2(); - glEndList(); - -} - -/**********************************************************/ -void store_head_SL2(void) -{ - glPushMatrix(); - glTranslatef(0.0, TORSO_HEIGHT+HEAD_SIZE, 0.0); - glScalef(HEAD_SIZE, HEAD_SIZE, UPPER_LEG_GIRTH); - glutSolidSphere(1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**********************************************************/ -void store_torso_SL2(void) -{ - glPushMatrix(); - glScalef(TORSO_WIDTH, TORSO_HEIGHT, UPPER_LEG_GIRTH); - glRotatef(-90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj2, TORSO_TAPER, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_uleg_SL2(void) -{ - glPushMatrix(); - glTranslatef(0.0, -(HIP_JOINT_SIZE+UPPER_LEG_SIZE), 0.0); - glutSolidSphere(KNEE_JOINT_SIZE, SLICES, STACKS); - glPopMatrix(); - glTranslatef(0.0, -HIP_JOINT_SIZE, 0.0); - glutSolidSphere(HIP_JOINT_SIZE, SLICES, STACKS); - glPushMatrix(); - glScalef(UPPER_LEG_GIRTH, UPPER_LEG_SIZE, UPPER_LEG_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj2, 1.0, UPPER_LEG_TAPER, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_lleg_SL2(void) -{ - glPushMatrix(); - glScalef(LOWER_LEG_GIRTH, LOWER_LEG_SIZE, LOWER_LEG_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj2, 1.0, LOWER_LEG_TAPER, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_foot_SL2(void) -{ - glPushMatrix(); - glTranslatef(0.0, 0.0, -FOOT_SIZE/2.0); - glScalef(LOWER_LEG_GIRTH, LOWER_LEG_GIRTH, FOOT_SIZE); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj2, 1.0, 1.0, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_uarm_SL2(void) -{ - glPushMatrix(); - glTranslatef(0.0, -(SHOULDER_JOINT_SIZE+UPPER_ARM_SIZE), 0.0); - glutSolidSphere(ELBOW_JOINT_SIZE, SLICES, STACKS); - glPopMatrix(); - glTranslatef(0.0, -SHOULDER_JOINT_SIZE, 0.0); - glutSolidSphere(SHOULDER_JOINT_SIZE, SLICES, STACKS); - glPushMatrix(); - glScalef(UPPER_ARM_GIRTH, UPPER_ARM_SIZE, UPPER_ARM_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj2, 1.0, UPPER_ARM_TAPER, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void store_larm_SL2(void) -{ - glPushMatrix(); - glScalef(LOWER_ARM_GIRTH, LOWER_ARM_SIZE, LOWER_ARM_GIRTH); - glRotatef(90.0, 1.0, 0.0, 0.0); - gluCylinder(quadObj2, 1.0, LOWER_ARM_TAPER, 1.0, SLICES, STACKS); - glPopMatrix(); -} - -/**************************************************************/ -void DrawTheGuy_SL2(void) -{ - GLfloat head_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; - GLfloat torso_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; - GLfloat leg_diffuse[] = { 0.7, 0.0, 0.7, 1.0 }; - GLfloat arm_diffuse[] = { 0.7, 0.4, 0.4, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, head_diffuse); - draw_head_SL2(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, torso_diffuse); - draw_torso_SL2(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, leg_diffuse); - draw_leg_SL2(0); - draw_leg_SL2(1); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, arm_diffuse); - draw_arm_SL2(0); - draw_arm_SL2(1); - -} - -/**********************************************************/ -void draw_head_SL2(void) -{ - glPushMatrix(); - glCallList(body_lists2); - glPopMatrix(); -} - -/**********************************************************/ -void draw_torso_SL2(void) -{ - glPushMatrix(); - glCallList(body_lists2+1); - glPopMatrix(); -} - -/**********************************************************/ -void draw_leg_SL2(int which) -{ - glPushMatrix(); - if (which == 0) - glTranslatef(TORSO_TAPER*TORSO_WIDTH/2.0, 0.0, 0.0); - else glTranslatef(-TORSO_TAPER*TORSO_WIDTH/2.0, 0.0, 0.0); - /* UPPER leg: rotates about the x axis only */ - glRotatef(Walk_cycle[which][0][Step],1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists2+2); - glPopMatrix(); - - /* LOWER leg: rotates about the x axis only */ - glTranslatef(0.0, -(UPPER_LEG_SIZE+KNEE_JOINT_SIZE), 0.0); - glRotatef(Walk_cycle[which][1][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists2+3); - glPopMatrix(); - - /* Foot: rotates about the x axis only */ - glTranslatef(0.0, -(UPPER_LEG_SIZE+LOWER_LEG_SIZE+LOWER_LEG_GIRTH)/2.0, 0.0); - glRotatef(Walk_cycle[which][2][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists2+4); - glPopMatrix(); - - glPopMatrix(); -} - -/*********************************************************************/ -void draw_arm_SL2(int which) -{ - int arm_which; - - if (which == 1) - arm_which = 1; - else arm_which = 0; - - glPushMatrix(); - glTranslatef(0.0, TORSO_HEIGHT, 0.0); - if (which == 0) - glTranslatef(TORSO_WIDTH, 0.0, 0.0); - else glTranslatef(-TORSO_WIDTH, 0.0, 0.0); - /* UPPER leg: rotates about the x axis only */ - glRotatef(Walk_cycle[arm_which][3][Step],1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists2+5); - glPopMatrix(); - - /* LOWER leg: rotates about the x axis only */ - glTranslatef(0.0, -(UPPER_ARM_SIZE+ELBOW_JOINT_SIZE), 0.0); - glRotatef(Walk_cycle[arm_which][4][Step], 1.0, 0.0, 0.0); - glPushMatrix(); - glCallList(body_lists2+6); - glPopMatrix(); - - glPopMatrix(); -} - diff --git a/lib/glut-3.7.6/progs/demos/walker/moonwalk.cset b/lib/glut-3.7.6/progs/demos/walker/moonwalk.cset deleted file mode 100644 index ee621aa3dc43f3367f7cae1a0e4a00542a69079b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/moonwalk.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -13 -0.000000 0.074148 0.179704 0.384778 0.431641 0.488372 0.570312 0.591797 0.744141 0.800781 0.830078 0.923848 1.000000 -36.951221 43.353661 -45.095142 -26.067659 -17.012190 -31.775906 -5.121946 5.853658 -5.121946 5.853658 21.402439 38.780487 37.865856 -10 -0.000000 0.048096 0.250000 0.298828 0.341797 0.726562 0.763672 0.821643 0.887776 1.000000 --69.329269 -71.158531 -29.999992 -8.963406 3.841465 0.182932 -8.963406 -28.170727 -72.073166 -72.073166 -10 -0.000000 0.212891 0.242485 0.324649 0.374649 0.402806 0.488978 0.625251 0.755859 1.000000 --21.951210 1.829277 23.780493 22.865858 10.557125 6.402444 7.317082 2.743911 -0.914623 -20.121943 -7 -0.000000 0.206413 0.360721 0.510557 0.635271 0.861723 1.000000 -0.000000 -39.512169 -34.939003 0.731733 14.451243 10.792705 0.000000 -10 -0.000000 0.046092 0.264529 0.318637 0.460922 0.545090 0.639098 0.699399 0.801603 1.000000 -40.792694 47.195133 29.817087 0.548791 5.121963 2.378063 -0.365843 19.756111 51.768307 46.280499 diff --git a/lib/glut-3.7.6/progs/demos/walker/reverse_dunk.cset b/lib/glut-3.7.6/progs/demos/walker/reverse_dunk.cset deleted file mode 100644 index 2862cc07d17c61f65ae6ddc68fc587bd85c62d2d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/reverse_dunk.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -1 -16 -0.000000 0.016453 0.087751 0.137112 0.224863 0.303474 0.340037 0.393053 0.396709 0.446069 0.528336 0.586837 0.712980 0.775137 0.972973 1.000000 -25.975613 -6.951213 -1.463413 11.967102 21.402439 11.341463 51.585369 74.451218 80.853661 81.768295 66.219513 -39.878044 -8.780490 32.378052 52.500000 28.719511 -13 -0.000000 0.036563 0.113346 0.173675 0.382084 0.261860 0.416216 0.449715 0.715625 0.765625 0.890090 0.953153 1.000000 --51.036579 67.865860 -70.243896 -23.597561 -14.451217 -163.536606 -77.560966 46.829273 -42.016987 -52.290615 -91.280487 -110.487808 -55.609745 -10 -0.000000 0.018018 0.138672 0.376471 0.472656 0.402344 0.578125 0.626953 0.849609 1.000000 -24.695131 -79.573158 -57.621941 -65.853653 -60.365849 74.085373 -2.878372 -23.780476 89.634155 26.524397 -10 -0.000000 0.037109 0.090090 0.147748 0.279297 0.284685 0.425781 0.559415 0.586837 1.000000 -39.146362 63.841484 199.207336 156.219528 67.500023 194.634171 190.061005 191.890259 -59.634121 32.743923 -13 -0.000000 0.054054 0.099099 0.122523 0.192793 0.243243 0.304505 0.394595 0.414414 0.482883 0.612500 0.921875 1.000000 -27.073183 12.439039 22.500011 20.670744 175.243912 19.756111 14.268306 145.060989 105.731720 112.134155 97.228935 32.560989 27.987816 diff --git a/lib/glut-3.7.6/progs/demos/walker/running.cset b/lib/glut-3.7.6/progs/demos/walker/running.cset deleted file mode 100644 index d4e519d3d6b8598680fa20d97a56a247f2be915e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/running.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -7 -0.000000 0.100990 0.352475 0.496094 0.621094 0.896484 1.000000 -0.000000 72.621948 80.853661 -0.548780 -55.426830 -54.512196 0.000000 -7 -0.000000 0.154455 0.198020 0.374257 0.546875 0.641584 1.000000 --88.536575 -90.365852 -10.792684 -11.707316 -12.621950 -88.536575 -97.682922 -13 -0.000000 0.085938 0.089844 0.273438 0.367188 0.314453 0.457031 0.527344 0.558594 0.617188 0.697266 0.917969 1.000000 -0.000000 -30.182919 -27.439020 9.146349 9.146349 13.719521 14.634153 6.402444 55.792690 10.975616 -25.609753 -22.865843 0.000000 -7 -0.000000 0.077228 0.304951 0.466797 0.689109 0.831683 1.000000 -0.000000 -39.512169 -58.719490 0.000000 58.353680 45.548805 0.000000 -7 -0.000000 0.164356 0.217822 0.499010 0.924752 0.853465 1.000000 -27.073183 28.902449 81.036598 87.439034 98.414642 28.902449 28.902449 diff --git a/lib/glut-3.7.6/progs/demos/walker/walk_backwards.cset b/lib/glut-3.7.6/progs/demos/walker/walk_backwards.cset deleted file mode 100644 index 4c178ded35b42b70c610d215060360cdb4183b2c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/walk_backwards.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -7 -0.000000 0.036053 0.225806 0.496994 0.537074 0.728653 1.000000 -0.365853 -3.292680 -50.853653 0.365853 5.853658 30.548784 -0.548780 -10 -0.000000 0.087287 0.220114 0.275142 0.294118 0.665331 0.770398 0.895636 0.941176 1.000000 --43.665245 -62.733047 -29.085360 -9.878039 0.182932 0.182932 -5.529653 -11.250000 -24.597456 -40.805080 -10 -0.000000 0.208729 0.246679 0.314991 0.339658 0.402806 0.488978 0.625251 0.755859 1.000000 --21.951210 -30.182919 -10.060966 14.300852 28.601704 6.402444 7.317082 2.743911 -0.914623 -20.121943 -7 -0.000000 0.206413 0.360721 0.510557 0.635271 0.861723 1.000000 -0.000000 -39.512169 -34.939003 0.731733 14.451243 10.792705 0.000000 -10 -0.000000 0.046092 0.264529 0.318637 0.460922 0.545090 0.639098 0.699399 0.801603 1.000000 -40.792694 47.195133 29.817087 0.548791 5.121963 2.378063 -0.365843 19.756111 51.768307 46.280499 diff --git a/lib/glut-3.7.6/progs/demos/walker/walker.c b/lib/glut-3.7.6/progs/demos/walker/walker.c deleted file mode 100644 index 4f33ed178d3f6c982dcb9c4eb2ee50f24701c1b3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/walker.c +++ /dev/null @@ -1,1112 +0,0 @@ -#include -#include -#include -#include -#include -#ifdef _WIN32 -#include "win32_dirent.h" -/* Have to #undef LoadMenu or else Microsoft VC++ won't allow us to - redefine it. */ -#undef LoadMenu -#else -#include -#endif -#include - -#include "walker.h" - - - -#define MAX(x,y) ((x) > (y) ? (x) : (y)) -#define MIN(x,y) ((x) < (y) ? (x) : (y)) - -#define CYCLE_SIZE 100 -#define CYCLE_STEP 1.0/CYCLE_SIZE -#define OVERSAMPLE 10 - -#define MAX_CPOINTS 34 /* 2 end point ones and 10 in the middle */ - -#define MAX_CSETNAMELEN 25 - -#define NUM_JOINTS 5 - -#define CSET_EXT ".cset" -#define CSET_EXTLEN 5 - -#include "walkviewer.h" - - -typedef enum { CMENU_QUIT, CMENU_CURVE, CMENU_HORIZ, CMENU_RESET, - CMENU_WALK, CMENU_DONEEDIT, CMENU_SAVE, CMENU_LOAD, - CMENU_MIRROR - } CurveMenuChoices; - -typedef enum { WIRECUBE, SOLIDCUBE, CYLINDER1, CYLINDER2 } ModelTypes; - -int GuyModel = SOLIDCUBE; - -/***************************************************************/ -/*************************** GLOBALS ***************************/ -/***************************************************************/ - -GLuint HorizontalList, AxesList, /* Display lists */ - CurveLists, ControlPtsLists; /* Firsts of groups of display lists */ - -int CurveAsPoints = 0, /* Display curve as points? */ - DrawHorizontals = 0, /* Draw horizontal lines? */ - EditingCurve = -1; /* Editing what curve, -1 means none */ - -int CurveWindow, /* Glut window id's to two top level windows */ - GuyWindow; - -int MirrorLegs = 0; - -int CurveMenu = -1, - CurveEditMenu = -1, - StepSizeMenu = -1, - LoadMenu = -1, - SaveMenu = -1; - -char *CSetNames[MAX_CSETNAMELEN]; - -int CurrentCurve = -1; /* Curve loaded, index to CSetNames */ - -GLfloat Walk_cycle[2][NUM_JOINTS][CYCLE_SIZE]; /* array of computed angles */ - -int Step = CYCLE_SIZE/2; /* Position in cycle, start in middle */ - -float fStep = CYCLE_SIZE/2; /* floating point for non-integer steping */ -float IncStep = 1.0; - -typedef struct ControlPts { - int numpoints; - float xcoords[MAX_CPOINTS]; - float angles[MAX_CPOINTS]; -} tControlPts; - -tControlPts RotCurve[NUM_JOINTS]; /* series of cntrl points for ea joint */ - -int Walking = 0, /* Guy is walking? */ - ViewPerspective = 1, /* Perspective or orthographic views */ - DrawAxes = 0; /* Draw axes for alignment */ - -int CurveWWidth, /* Dimensions of curve window */ - CurveWHeight; - -int CurveDownBtn = -1, /* mouse stuff, for editing curves */ - WasWalking, - CurvePickedPoint = -1, - CurveLastX, - CurveLastY; - -int CurveWindowVisible = 1; - - - /* prototypes */ -void RedisplayBoth(void); -void IncrementStep(void); -void CurveCPointDrag(void); -void CurveHandleMenu(int value); -void StopWalking(void); -void CurveHandleEditMenu(int curve); -void ComputeCSetAndMakeLists(void); -int MakeLoadAndSaveMenus(void); -void CurveMenuInit(void); -void SetWindowTitles(char *csetname); - -/***************************************************************/ -/**************************** BEZIER ***************************/ -/***************************************************************/ - - /* Matrix times a vector dest = m*v */ -void MultMV(float m[3][4], float v[4], float dest[3]) -{ - int i, j; - - for (i = 0; i < 3; i++) { - dest[i] = 0; - for (j = 0; j < 4; j++) - dest[i] += m[i][j] * v[j]; - } -} - - /* Matrix multiplication, dest = m1*m2 */ -void MultM(float m1[3][4], float m2[4][4], float dest[3][4]) -{ - int i, j, k; - - for (i = 0; i < 3; i++) - for (j = 0; j < 4; j++) { - dest[i][j] = 0; - for (k = 0; k < 4; k++) - dest[i][j] += (m1[i][k] * m2[k][j]); - } -} - -void ComputeCurve(int joint) -{ - float prod[3][4], tm[4], pos[3]; - float t = 0, tinc = (float)CYCLE_STEP/OVERSAMPLE; - int ctlpoint, i; - float BBasis[4][4] = {{-1, 3, -3, 1}, {3, -6, 3, 0}, - {-3, 3, 0, 0}, {1, 0, 0, 0}}; - int lastindex, newindex; - - float pointset[3][4]; - for (i = 0; i < 4; i++) /* z's are always zero, only 2-d */ - pointset[2][i] = 0; - - lastindex = -1; - for(ctlpoint = 0; ctlpoint < RotCurve[joint].numpoints; ctlpoint += 3) { - t = 0; - for (i = 0; i < 4; i++) - pointset[0][i] = RotCurve[joint].xcoords[ctlpoint + i]; - for (i = 0; i < 4; i++) - pointset[1][i] = RotCurve[joint].angles[ctlpoint + i]; - - MultM(pointset, BBasis, prod); - - while (t <= 1) { - tm[0] = t*t*t; - tm[1] = t*t; - tm[2] = t; - tm[3] = 1; - MultMV(prod, tm, pos); - newindex = (int)(pos[0]*(CYCLE_SIZE-1)); - if ((int)(newindex > lastindex)) { /* go at least one */ - Walk_cycle[0][joint][newindex] = pos[1]; - lastindex++; - } - t += tinc; - } - } - - for (i = 0; i < CYCLE_SIZE; i++) { /* copy to other leg, out-o-phase */ - if (MirrorLegs) - Walk_cycle[1][joint][i] = - Walk_cycle[0][joint][i]; - else - Walk_cycle[1][joint][i] = - Walk_cycle[0][joint][(i+(CYCLE_SIZE/2))%CYCLE_SIZE]; - } -} - -/***************************************************************/ -/************************* CURVE I/O ***************************/ -/***************************************************************/ - -void FlatCSet(void) -{ - int joint; - - for (joint = 0; joint < NUM_JOINTS; joint++) { - RotCurve[joint].numpoints = 4; - RotCurve[joint].xcoords[0] = 0.0; - RotCurve[joint].angles[0] = 0.0; - RotCurve[joint].xcoords[1] = 0.2; - RotCurve[joint].angles[1] = 0.0; - RotCurve[joint].xcoords[2] = 0.8; - RotCurve[joint].angles[2] = 0.0; - RotCurve[joint].xcoords[3] = 1.0; - RotCurve[joint].angles[3] = 0.0; - } -} - -int ReadCSetFromFile(char *filename) -{ - FILE *infile = fopen(filename, "r"); - int numjoints, numpoints, joint, point, mirrorlegs; - float value; - - if (infile == NULL) - goto abort; - - if (!fscanf(infile, " %d", &numjoints) || numjoints != NUM_JOINTS) - goto abort; - - if (!fscanf(infile, " %d", &mirrorlegs) || (mirrorlegs != 0 && - mirrorlegs != 1)) - goto abort; - - MirrorLegs = mirrorlegs; - - for (joint = 0; joint < NUM_JOINTS; joint++) { - if (!fscanf(infile, " %d", &numpoints) || numpoints < 4 || - numpoints > MAX_CPOINTS) - goto abort; - RotCurve[joint].numpoints = numpoints; - for (point = 0; point < numpoints; point++) { - if (!fscanf(infile, " %f", &value)) - goto abort; - RotCurve[joint].xcoords[point] = value; - } - for (point = 0; point < numpoints; point++) { - if (!fscanf(infile, " %f", &value)) - goto abort; - RotCurve[joint].angles[point] = value; - } - } - - fclose(infile); - return 0; - - abort: - fclose(infile); - fprintf(stderr, "Something went wrong while reading file %s\n", filename); - FlatCSet(); - return -1; -} - -void WriteCSetToFile(char *filename) -{ - FILE *outfile = fopen(filename, "w+"); - int joint, point; - - if (outfile == NULL) { - fprintf(stderr, "Error: could not create file %s\n", filename); - return; - } - - fprintf(outfile, "%d\n", NUM_JOINTS); - - fprintf(outfile, "%d\n", MirrorLegs); - - for (joint = 0; joint < NUM_JOINTS; joint++) { - - fprintf(outfile, "%d\n", RotCurve[joint].numpoints); - - for (point = 0; point < RotCurve[joint].numpoints; point++) { - fprintf(outfile, "%f ", RotCurve[joint].xcoords[point]); - } - fprintf(outfile, "\n"); - - for (point = 0; point < RotCurve[joint].numpoints; point++) { - fprintf(outfile, "%f ", RotCurve[joint].angles[point]); - } - fprintf(outfile, "\n"); - } - - fclose(outfile); -} - -void HandleLoadMenu(int cset) -{ - char filename[MAX_CSETNAMELEN + CSET_EXTLEN + 1]; - - if (cset == -1) { - MakeLoadAndSaveMenus(); - CurveMenuInit(); - } else { - (void)strcpy(filename, CSetNames[cset]); - (void)strcat(filename, CSET_EXT); - if (ReadCSetFromFile(filename) == 0) { - glutSetMenu(SaveMenu); - glutChangeToMenuEntry(1, CSetNames[cset], cset); - ComputeCSetAndMakeLists(); - SetWindowTitles(CSetNames[cset]); - RedisplayBoth(); - } - } -} - -void HandleSaveMenu(int cset) -{ - char filename[MAX_CSETNAMELEN + CSET_EXTLEN + 1]; - - (void)strcpy(filename, CSetNames[cset]); - (void)strcat(filename, CSET_EXT); - WriteCSetToFile(filename); - ComputeCSetAndMakeLists(); - RedisplayBoth(); -} - -int MakeLoadAndSaveMenus(void) -{ - DIR *dirp = opendir("."); - struct dirent *direntp; - int csetnum = 0; - char *newcsetname; - - if (LoadMenu != -1) - glutDestroyMenu(LoadMenu); - if (SaveMenu != -1) - glutDestroyMenu(SaveMenu); - - SaveMenu = glutCreateMenu(HandleSaveMenu); - LoadMenu = glutCreateMenu(HandleLoadMenu); - - if (dirp == NULL) { - fprintf(stderr, "Error opening current dir in MakeLoadAndSaveMenus\n"); - return(0); - } - - while ((direntp = readdir(dirp)) != NULL) { - char *ext = direntp->d_name + (strlen(direntp->d_name) - CSET_EXTLEN); - if (!strcmp(ext, CSET_EXT)) { - newcsetname = malloc(strlen(direntp->d_name) - CSET_EXTLEN + 1); - strncpy(newcsetname, direntp->d_name, - strlen(direntp->d_name) - CSET_EXTLEN); - newcsetname[strlen(direntp->d_name) - CSET_EXTLEN] = 0; - CSetNames[csetnum] = newcsetname; - glutAddMenuEntry(newcsetname, csetnum++); - } - } - closedir(dirp); - glutSetMenu(LoadMenu); - glutAddMenuEntry("-> Rescan Directory <-", -1); - glutSetMenu(SaveMenu); - CSetNames[csetnum] = "NewCurve0"; - glutAddMenuEntry("NewCurve0", csetnum++); - CSetNames[csetnum] = "NewCurve1"; - glutAddMenuEntry("NewCurve1", csetnum++); - CSetNames[csetnum] = "NewCurve2"; - glutAddMenuEntry("NewCurve2", csetnum++); - - return (csetnum - 2); /* just indicate curves in Load menu */ -} - - -/***************************************************************/ -/********************* DISPLAY LISTS ***************************/ -/***************************************************************/ - - -void MakeCurveList(int joint) -{ - int i; - - glNewList(CurveLists+joint, GL_COMPILE); - glColor3f(1, 1, 1); - for (i = 0; i < CYCLE_SIZE; i++) { - glVertex3f((GLfloat)i/CYCLE_SIZE, Walk_cycle[0][joint][i]/180, 0); - } - glEndList(); -} - -void MakeCPointList(int joint) -{ - int point; - - glNewList(ControlPtsLists+joint, GL_COMPILE); - - glColor3f(0, 0.4, 0); - glBegin(GL_LINE_STRIP); - for (point = 0; point < RotCurve[joint].numpoints; point++) { - if (!((point-2) % 3)) { - glEnd(); - glBegin(GL_LINE_STRIP); - } - glVertex3f(RotCurve[joint].xcoords[point], - (RotCurve[joint].angles[point])/180.0, 0.0); - } - glEnd(); - - glBegin(GL_POINTS); - for (point = 0; point < RotCurve[joint].numpoints; point++) { - if (point % 3) - glColor3f(0, 0.7, 0); - else - glColor3f(0.7, 0.0, 0); - glVertex3f(RotCurve[joint].xcoords[point], - (RotCurve[joint].angles[point])/180, 0); - } - glEnd(); - - glEndList(); -} - -void MakeJointLists(int joint) -{ - MakeCurveList(joint); - MakeCPointList(joint); -} - - -void ComputeCSetAndMakeLists(void) -{ - int joint; - - for(joint = 0; joint < NUM_JOINTS; joint++) { - ComputeCurve(joint); - MakeJointLists(joint); - } -} - -void MakeLists(void) -{ - HorizontalList = glGenLists(1); - glNewList(HorizontalList, GL_COMPILE); - { - float line1 = 25.0/180, - line2 = 35.0/180, - line3 = 45.0/180; - glColor3f(0, 0, 0.7); - glPushAttrib(GL_ENABLE_BIT); - glEnable(GL_LINE_STIPPLE); - glBegin(GL_LINES); - glVertex3f(0, 0, 0.5); - glVertex3f(1, 0, 0.5); - glVertex3f(0, line1, 0.5); glVertex3f(1, line1, 0.5); - glVertex3f(0, -line1, 0.5); glVertex3f(1, -line1, 0.5); - glVertex3f(0, line2, 0.5); glVertex3f(1, line2, 0.5); - glVertex3f(0, -line2, 0.5); glVertex3f(1, -line2, 0.5); - glVertex3f(0, line3, 0.5); glVertex3f(1, line3, 0.5); - glVertex3f(0, -line3, 0.5); glVertex3f(1, -line3, 0.5); - glEnd(); - glPopAttrib(); - } - glEndList(); - - - CurveLists = glGenLists(NUM_JOINTS); - assert(CurveLists != 0); - - ControlPtsLists = glGenLists(NUM_JOINTS); - assert(ControlPtsLists != 0); - - ComputeCSetAndMakeLists(); -} - -/***************************************************************/ -/********************* curve WINDOW ****************************/ -/***************************************************************/ - -void CurveReshape(int w, int h) -{ - glViewport(0,0,w,h); - CurveWWidth = w; - CurveWHeight = h; - glFlush(); -} - -void CurveDisplay(void) -{ - int joint, otherlegstep; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(0, 0.5, 0); - - for (joint = NUM_JOINTS-1; joint >= 0; joint--) { - - if (DrawHorizontals) - glCallList(HorizontalList); - - (CurveAsPoints) ? - glBegin(GL_POINTS) : - glBegin(GL_LINE_STRIP); - glCallList(CurveLists+joint); - glEnd(); - - if (joint == EditingCurve) { - glPointSize(5.0); - glCallList(ControlPtsLists+EditingCurve); - glPointSize(1.0); - } - glTranslatef(0, 1, 0); - } - - glPopMatrix(); - - otherlegstep = (Step+50) % CYCLE_SIZE; - /* draw vertical line */ - glColor3f(1, 1, 1); - glBegin(GL_LINES); - glVertex3f((GLfloat)Step/CYCLE_SIZE, 0, 0); - glVertex3f((GLfloat)Step/CYCLE_SIZE, NUM_JOINTS, 0); - if (!MirrorLegs) { - glVertex3f((GLfloat)otherlegstep/CYCLE_SIZE, 0, 0); - glVertex3f((GLfloat)otherlegstep/CYCLE_SIZE, NUM_JOINTS, 0); - } - glEnd(); - - glFlush(); - glutSwapBuffers(); -} - - -void CurveGLInit(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0,1,0,NUM_JOINTS,1,-1); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glLineStipple(1, 0x00FF); - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - - - glFlush(); - -} - - -/* ARGSUSED2 */ -void CurveHandleButton(int button, int state, int x, int y) -{ - if (button == GLUT_RIGHT_BUTTON ) - return; - - if (state == GLUT_DOWN && CurveDownBtn == -1) { - if (button == GLUT_MIDDLE_BUTTON) - CurveHandleMenu(CMENU_WALK); - else - fStep = Step = (int)((float)x/glutGet(GLUT_WINDOW_WIDTH) * CYCLE_SIZE); - - CurveDownBtn = button; - - WasWalking = Walking; - StopWalking(); - RedisplayBoth(); - } else if (button == CurveDownBtn) { - CurveDownBtn = -1; - if (WasWalking) { - Walking = 1; - agvSetAllowIdle(0); - glutIdleFunc(IncrementStep); - } - } -} - -float CurveEditConstrain(float fx) -{ - if (CurvePickedPoint == 0) - fx = 0; - else if (CurvePickedPoint == RotCurve[EditingCurve].numpoints-1) - fx = 1; - else if (!(CurvePickedPoint % 3)) { /* is a pivot */ - fx = MAX(fx, RotCurve[EditingCurve].xcoords[CurvePickedPoint-1]); - fx = MIN(fx, RotCurve[EditingCurve].xcoords[CurvePickedPoint+1]); - fx = MAX(fx, RotCurve[EditingCurve].xcoords[CurvePickedPoint-3]); - fx = MIN(fx, RotCurve[EditingCurve].xcoords[CurvePickedPoint+3]); - } else if (!((CurvePickedPoint - 1) % 3)) { /* is right slope */ - fx = MAX(fx, RotCurve[EditingCurve].xcoords[CurvePickedPoint-1]); - } else { - fx = MIN(fx, RotCurve[EditingCurve].xcoords[CurvePickedPoint+1]); - } - return fx; -} - -void RemovePoint(int pt) -{ - int i; - - for (i = pt - 1; i < RotCurve[EditingCurve].numpoints; i++) { - RotCurve[EditingCurve].xcoords[i] = RotCurve[EditingCurve].xcoords[i+3]; - RotCurve[EditingCurve].angles[i] = RotCurve[EditingCurve].angles[i+3]; - } - RotCurve[EditingCurve].numpoints -= 3; -} - -void AddPoint(float fx) -{ - int i, j; - - if (fx < 0.05 || fx > 0.95 || RotCurve[EditingCurve].numpoints + 3 >= - MAX_CPOINTS) - return; - - for (i = 3; i < RotCurve[EditingCurve].numpoints; i += 3) { - if (fx < RotCurve[EditingCurve].xcoords[i]) { - for (j = RotCurve[EditingCurve].numpoints + 2; j > i + 1; j--) { - RotCurve[EditingCurve].xcoords[j] = - RotCurve[EditingCurve].xcoords[j-3]; - RotCurve[EditingCurve].angles[j] = - RotCurve[EditingCurve].angles[j-3]; - } - RotCurve[EditingCurve].xcoords[i] = fx; - RotCurve[EditingCurve].angles[i] = - Walk_cycle[0][EditingCurve][(int)(fx*CYCLE_SIZE)]; - RotCurve[EditingCurve].xcoords[i-1] = fx - 0.05; - RotCurve[EditingCurve].angles[i-1] = - Walk_cycle[0][EditingCurve][(int)((fx-0.05)*CYCLE_SIZE)]; - RotCurve[EditingCurve].xcoords[i+1] = fx + 0.05; - RotCurve[EditingCurve].angles[i+1] = - Walk_cycle[0][EditingCurve][(int)((fx+0.05)*CYCLE_SIZE)]; - RotCurve[EditingCurve].numpoints += 3; - break; - } - } -} - - -void CurveEditHandleButton(int button, int state, int x, int y) -{ - float fx, fy; - int point; - - fy = -(((float)y - ((float)CurveWHeight/NUM_JOINTS * EditingCurve)) / - ((float)CurveWHeight/NUM_JOINTS) - 0.5) * 180.0, - fx = (float)x/CurveWWidth; - - if (state == GLUT_DOWN && button == GLUT_LEFT_BUTTON && - CurveDownBtn == -1) { - CurvePickedPoint = -1; - - for (point = 0; point < RotCurve[EditingCurve].numpoints; point++) { - if (fabs(RotCurve[EditingCurve].xcoords[point] - fx) < 0.01 && - fabs(RotCurve[EditingCurve].angles[point] - fy) < 4) { - CurvePickedPoint = point; - CurveLastX = x; - CurveLastY = y; - glutIdleFunc(CurveCPointDrag); - break; - } - } - if (CurvePickedPoint == -1) - CurveHandleButton(button, state, x, y); - CurveDownBtn = button; - - - } else if (state == GLUT_DOWN && button == GLUT_MIDDLE_BUTTON && - CurveDownBtn == -1) { - - for (point = 3; point < RotCurve[EditingCurve].numpoints - 1; point += 3) { - if (fabs(RotCurve[EditingCurve].xcoords[point] - fx) < 0.01 && - fabs(RotCurve[EditingCurve].angles[point] - fy) < 4) { - break; - } - } - if (point >= 3 && point < RotCurve[EditingCurve].numpoints - 1) - RemovePoint(point); - else if (fabs(Walk_cycle[0][EditingCurve][(int)(fx*CYCLE_SIZE)] - fy) < 4) - AddPoint(fx); - ComputeCurve(EditingCurve); - MakeJointLists(EditingCurve); - RedisplayBoth(); - - } else if (button == GLUT_LEFT_BUTTON && button == CurveDownBtn) { - - y = MAX(y, 0); y = MIN(y, CurveWHeight); - x = MAX(x, 0); x = MIN(x, CurveWWidth); - fy = -(((float)y - ((float)CurveWHeight/NUM_JOINTS * EditingCurve)) / - ((float)CurveWHeight/NUM_JOINTS) - 0.5) * 180.0, - fx = (float)x/CurveWWidth; - CurveDownBtn = -1; - if (CurvePickedPoint != -1) { - fx = CurveEditConstrain(fx); - RotCurve[EditingCurve].xcoords[CurvePickedPoint] = fx; - RotCurve[EditingCurve].angles[CurvePickedPoint] = fy; - ComputeCurve(EditingCurve); - MakeJointLists(EditingCurve); - glutIdleFunc(NULL); - RedisplayBoth(); - } - } -} - - -void CurveHandleMotion(int x, int y) -{ - if (CurvePickedPoint == -1) { - - if (CurveDownBtn == GLUT_LEFT_BUTTON || CurveDownBtn == - GLUT_MIDDLE_BUTTON) { - Step = (int)((float)x/glutGet(GLUT_WINDOW_WIDTH) * CYCLE_SIZE) - % CYCLE_SIZE; - if (Step < 0) - Step = CYCLE_SIZE + Step; - fStep = Step; - - RedisplayBoth(); - } - } else { - y = MAX(y, 0); y = MIN(y, CurveWHeight); - x = MAX(x, 0); x = MIN(x, CurveWWidth); - CurveLastX = x; - CurveLastY = y; - } -} - -void CurveCPointDrag(void) -{ - float fx, fy; - - if (CurveDownBtn == GLUT_LEFT_BUTTON && CurvePickedPoint != -1) { - fy = -(((float)CurveLastY - - ((float)CurveWHeight/NUM_JOINTS * EditingCurve)) / - ((float)CurveWHeight/NUM_JOINTS) - 0.5) * 180.0, - fx = (float)CurveLastX/CurveWWidth; - - fx = CurveEditConstrain(fx); - RotCurve[EditingCurve].xcoords[CurvePickedPoint] = fx; - RotCurve[EditingCurve].angles[CurvePickedPoint] = fy; - ComputeCurve(EditingCurve); - MakeJointLists(EditingCurve); - RedisplayBoth(); - } -} - -/* ARGSUSED1 */ -void CurveHandleKeys(unsigned char key, int x, int y) -{ - if (key > '0' && key < '9') - CurveHandleEditMenu((key-'0')-1); - else if (key == 'd') - CurveHandleMenu(CMENU_DONEEDIT); - else { - switch(key) { - case 'f': - case ' ': Step++; - StopWalking(); break; - case 'F': Step += 5; - StopWalking(); break; - case 'b': Step--; - StopWalking(); break; - case 'B': Step -= 5; - StopWalking(); break; - } - Step %= CYCLE_SIZE; - if (Step < 0) - Step = CYCLE_SIZE + Step; - fStep = Step; - RedisplayBoth(); - } -} - -void CurveHandleEditMenu(int curve) -{ - if (curve >= NUM_JOINTS) - return; - if (EditingCurve == -1) { - WasWalking = Walking; - Walking = 0; - agvSetAllowIdle(0); /* don't allow spinning, just slows us down */ - glutIdleFunc(NULL); - glutMouseFunc(CurveEditHandleButton); - } - EditingCurve = curve; - glutPostRedisplay(); -} - -void CurveHandleSZMenu(int size) -{ - IncStep = (float)size/100; -} - -void CurveHandleMenu(int value) -{ - switch (value) { - case CMENU_QUIT: - exit(0); - break; - case CMENU_CURVE: - CurveAsPoints = !CurveAsPoints; - glutPostRedisplay(); - break; - case CMENU_HORIZ: - DrawHorizontals = !DrawHorizontals; - glutPostRedisplay(); - break; - case CMENU_WALK: - if (EditingCurve != -1) - break; - Walking = !Walking; - if (Walking) { - agvSetAllowIdle(0); - glutIdleFunc(IncrementStep); - } else { - agvSetAllowIdle(1); - } - break; - case CMENU_DONEEDIT: - glutMouseFunc(CurveHandleButton); - EditingCurve = -1; - CurvePickedPoint = -1; - Walking = WasWalking; - if (Walking) - glutIdleFunc(IncrementStep); - else - agvSetAllowIdle(1); - glutPostRedisplay(); - break; - case CMENU_RESET: - FlatCSet(); - ComputeCSetAndMakeLists(); - glutPostRedisplay(); - break; - case CMENU_MIRROR: - MirrorLegs = !MirrorLegs; - ComputeCSetAndMakeLists(); - glutPostRedisplay(); - } -} - -void CurveMenuInit(void) -{ - int i; - char label[3]; - - if (CurveEditMenu != -1) { - glutDestroyMenu(CurveEditMenu); - glutDestroyMenu(CurveMenu); - glutDestroyMenu(StepSizeMenu); - } - - CurveEditMenu = glutCreateMenu(CurveHandleEditMenu); - for (i = 0; i < NUM_JOINTS; i++) { - sprintf(label, " %d ", i+1); - glutAddMenuEntry(label, i); - } - StepSizeMenu = glutCreateMenu(CurveHandleSZMenu); - glutAddMenuEntry("0.25", 25); - glutAddMenuEntry("0.5", 50); - glutAddMenuEntry("1.0", 100); - glutAddMenuEntry("2.0", 200); - glutAddMenuEntry("3.0", 300); - glutAddMenuEntry("5.0", 500); - CurveMenu = glutCreateMenu(CurveHandleMenu); - glutAddSubMenu("Load Curve Set", LoadMenu); - glutAddSubMenu("Save As Curve Set", SaveMenu); - glutAddSubMenu("Edit Curve", CurveEditMenu); - glutAddMenuEntry("Done Editing", CMENU_DONEEDIT); - glutAddMenuEntry("Flatten Curve Set", CMENU_RESET); - glutAddMenuEntry("Toggle mirrored", CMENU_MIRROR); - glutAddSubMenu("Step size", StepSizeMenu); - glutAddMenuEntry("Toggle dotted", CMENU_CURVE); - glutAddMenuEntry("Toggle horizontals", CMENU_HORIZ); - glutAddMenuEntry("Toggle walking", CMENU_WALK); - glutAddMenuEntry("Quit", CMENU_QUIT); - glutSetWindow(CurveWindow); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -void CurveVisible(int v) -{ - if (v == GLUT_VISIBLE) - CurveWindowVisible = 1; - else - CurveWindowVisible = 0; -} - -/***************************************************************/ -/*********************** GUY WINDOW ****************************/ -/***************************************************************/ - -void GuyDisplay(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glFlush(); - - glLoadIdentity(); - - agvViewTransform(); - - if (DrawAxes) - glCallList(AxesList); - - switch(GuyModel) { - case WIRECUBE: DrawTheGuy_WC(); break; - case SOLIDCUBE: DrawTheGuy_SC(); break; - case CYLINDER1: DrawTheGuy_SL(); break; - case CYLINDER2: DrawTheGuy_SL2(); break; - } - - glutSwapBuffers(); - glFlush(); -} - -void GuyReshape(int w, int h) -{ - glViewport(0,0,w,h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (ViewPerspective) - gluPerspective(60.0, (GLdouble)w/h, 0.01, 100); - else - glOrtho(-1.2, 1.2, -1.2, 1.2, 0.1, 100); - glMatrixMode(GL_MODELVIEW); - glFlush(); -} - - -void GuyGLInit(void) -{ - GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_position[] = { 0.3, 0.5, 0.8, 0.0 }; - GLfloat lm_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lm_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glShadeModel(GL_SMOOTH); - /* Cylinder stuff */ - StoreTheGuy_SL(); - StoreTheGuy_SL2(); -} - -void GuyHandleKeys(unsigned char key, int x, int y) -{ - switch(key) { - case 'f': - case ' ': Step++; - StopWalking(); break; - case 'F': Step += 5; - StopWalking(); break; - case 'b': Step--; - StopWalking(); break; - case 'B': Step -= 5; - StopWalking(); break; - } - Step %= CYCLE_SIZE; - if (Step < 0) - Step = CYCLE_SIZE + Step; - agvHandleKeys(key, x, y); - RedisplayBoth(); -} - -typedef enum { GMENU_QUIT, GMENU_CURVE, GMENU_HORIZ, - GMENU_AXES, GMENU_PERSP } GuyMenuChoices; - - -void GuyModelHandleMenu(int model) -{ - GuyModel = model; - if (model == WIRECUBE) - glDisable(GL_LIGHTING); - else - glEnable(GL_LIGHTING); - glutPostRedisplay(); -} - -void GuyHandleMenu(int value) -{ - switch (value) { - case GMENU_QUIT: - exit(0); - break; - case GMENU_AXES: - DrawAxes = !DrawAxes; - glutPostRedisplay(); - break; - case GMENU_PERSP: - ViewPerspective = !ViewPerspective; - GuyReshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT)); - glutPostRedisplay(); - break; - } -} - -void GuyMenuInit(void) -{ - int sub2, sub1 = glutCreateMenu(agvSwitchMoveMode); - glutAddMenuEntry("Flying move", FLYING); - glutAddMenuEntry("Polar move", POLAR); - sub2 = glutCreateMenu(GuyModelHandleMenu); - glutAddMenuEntry("Wire cubes", WIRECUBE); - glutAddMenuEntry("Solid cubes", SOLIDCUBE); - glutAddMenuEntry("Cylinder 1", CYLINDER1); - glutAddMenuEntry("Cylinder 2", CYLINDER2); - glutCreateMenu(GuyHandleMenu); - glutAddSubMenu("Viewing", sub1); - glutAddSubMenu("Model", sub2); - glutAddMenuEntry("Toggle Axes", GMENU_AXES); - glutAddMenuEntry("Toggle Perspective View", GMENU_PERSP); - glutAddMenuEntry("Quit", GMENU_QUIT); - glutSetWindow(GuyWindow); - glutAttachMenu(GLUT_RIGHT_BUTTON); -} - -/***************************************************************/ -/********************* BOTH WINDOWS ****************************/ -/***************************************************************/ - -void RedisplayBoth(void) -{ - glutPostWindowRedisplay(GuyWindow); - if (CurveWindowVisible) { - glutPostWindowRedisplay(CurveWindow); - } -} - -void IncrementStep(void) -{ - fStep = fmod(fStep + IncStep, CYCLE_SIZE); - Step = (int)fStep; - if (agvMoving) - agvMove(); - RedisplayBoth(); -} - -void StopWalking(void) -{ - if (Walking) { - Walking = 0; - agvSetAllowIdle(1); - } -} - -void SetWindowTitles(char *csetname) -{ - char windowtitle[MAX_CSETNAMELEN + 20]; - - strcpy(windowtitle, "Rotation Curves: "); - strcat(windowtitle, csetname); - glutSetWindow(CurveWindow); - glutSetWindowTitle(windowtitle); - - strcpy(windowtitle, "The Guy: "); - strcat(windowtitle, csetname); - glutSetWindow(GuyWindow); - glutSetWindowTitle(windowtitle); -} - -/***************************************************************/ -/***************************** MAIN ****************************/ -/***************************************************************/ - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - - glutInitWindowSize(512, 512); - glutInitWindowPosition(700, 250); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - GuyWindow = glutCreateWindow("The Guy:"); - agvInit(!Walking); - AxesList = glGenLists(1); - agvMakeAxesList(AxesList); - GuyGLInit(); - GuyMenuInit(); - glutDisplayFunc(GuyDisplay); - glutReshapeFunc(GuyReshape); - glutKeyboardFunc(GuyHandleKeys); - - glutInitWindowSize(512, 1024); - glutInitWindowPosition(100, 0); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - CurveWindow = glutCreateWindow("Rotation Curves:"); - CurveGLInit(); - glutDisplayFunc(CurveDisplay); - glutReshapeFunc(CurveReshape); - glutMouseFunc(CurveHandleButton); - glutMotionFunc(CurveHandleMotion); - glutKeyboardFunc(CurveHandleKeys); - glutVisibilityFunc(CurveVisible); - - FlatCSet(); - MakeLists(); - - if (MakeLoadAndSaveMenus() > 0) /* read first curve if there was one */ - HandleLoadMenu(0); - - CurveMenuInit(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - - - - diff --git a/lib/glut-3.7.6/progs/demos/walker/walker.dsp b/lib/glut-3.7.6/progs/demos/walker/walker.dsp deleted file mode 100644 index 747fae37d0892df91b15338d1bfbeb244f4dee43..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/walker.dsp +++ /dev/null @@ -1,108 +0,0 @@ -# Microsoft Developer Studio Project File - Name="walker" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=walker - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "walker.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "walker.mak" CFG="walker - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "walker - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "walker - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "walker - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "walker - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "walker - Win32 Release" -# Name "walker - Win32 Debug" -# Begin Source File - -SOURCE=.\models.c -# End Source File -# Begin Source File - -SOURCE=.\walker.c -# End Source File -# Begin Source File - -SOURCE=.\walker.h -# End Source File -# Begin Source File - -SOURCE=.\walkviewer.c -# End Source File -# Begin Source File - -SOURCE=.\walkviewer.h -# End Source File -# Begin Source File - -SOURCE=.\win32_dirent.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/demos/walker/walker.h b/lib/glut-3.7.6/progs/demos/walker/walker.h deleted file mode 100644 index 049c6fed0025209dd88ebb4ed285b9cd89b016c6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/walker.h +++ /dev/null @@ -1,13 +0,0 @@ -#define CYCLE_SIZE 100 -#define CYCLE_STEP 1.0/CYCLE_SIZE - -extern GLfloat Walk_cycle[2][5][CYCLE_SIZE]; - -extern int Step; - -extern void DrawTheGuy_WC(void); -extern void DrawTheGuy_SC(void); -extern void DrawTheGuy_SL(void); -extern void DrawTheGuy_SL2(void); -extern void StoreTheGuy_SL(void); -extern void StoreTheGuy_SL2(void); diff --git a/lib/glut-3.7.6/progs/demos/walker/walking.cset b/lib/glut-3.7.6/progs/demos/walker/walking.cset deleted file mode 100644 index 403b7ea989e0147d6b1ae2dcd315a3c55f2d5451..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/walking.cset +++ /dev/null @@ -1,17 +0,0 @@ -5 -0 -7 -0.000000 0.078125 0.300781 0.496094 0.644531 0.917969 1.000000 -0.000000 37.865856 29.634146 -0.548780 -29.817066 -45.365852 0.000000 -13 -0.000000 0.087891 0.152344 0.244141 0.343750 0.355469 0.466797 0.541016 0.599609 0.697266 0.816406 0.916016 1.000000 --39.146336 -46.463413 -14.451217 -5.304873 -3.475606 -33.658535 -18.109749 -8.963406 -8.963406 -8.048773 -20.853649 -49.207314 -40.975601 -13 -0.000000 0.085938 0.089844 0.273438 0.339844 0.314453 0.496094 0.619141 0.716797 0.769531 0.816406 0.917969 1.000000 -0.000000 -30.182919 -27.439020 9.146349 -28.353653 13.719521 11.890248 35.670742 49.390251 0.914639 -28.353653 -22.865843 0.000000 -7 -0.000000 0.072266 0.292969 0.466797 0.644531 0.828125 1.000000 -0.000000 -19.390215 -22.134125 0.000000 24.512220 19.024414 0.000000 -7 -0.000000 0.189453 0.322266 0.480469 0.699219 0.761719 1.000000 -10.609768 -24.146330 17.926840 16.097572 16.097572 54.512207 11.524401 diff --git a/lib/glut-3.7.6/progs/demos/walker/walkviewer.c b/lib/glut-3.7.6/progs/demos/walker/walkviewer.c deleted file mode 100644 index 09778cfde1cc740f9b55899cab94ecc23aa52b1d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/walkviewer.c +++ /dev/null @@ -1,493 +0,0 @@ -/* - * walkviewer.c [from agviewer.c (version 1.0)] - * - * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut - * - * See agv_example.c and agviewer.h comments within for more info. - * - * I welcome any feedback or improved versions! - * - * Philip Winston - 4/11/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - */ - -#include -#include -#include -#include - -#include "walkviewer.h" - -/***************************************************************/ -/************************** SETTINGS ***************************/ -/***************************************************************/ - - /* Initial polar movement settings */ -#define INIT_POLAR_AZ 0.0 -#define INIT_POLAR_EL 30.0 -#define INIT_DIST 3.0 -#define INIT_AZ_SPIN 0.5 -#define INIT_EL_SPIN 0.0 - - /* Initial flying movement settings */ -#define INIT_EX 0.0 -#define INIT_EY -2.0 -#define INIT_EZ -2.0 -#define INIT_MOVE 0.01 -#define MINMOVE 0.001 - - /* Start in this mode */ -#define INIT_MODE POLAR - - /* Controls: */ - - /* map 0-9 to an EyeMove value when number key is hit in FLYING mode */ -#define SPEEDFUNCTION(x) ((x)*(x)*0.001) - - /* Multiply EyeMove by (1+-MOVEFRACTION) when +/- hit in FLYING mode */ -#define MOVEFRACTION 0.25 - - /* What to multiply number of pixels mouse moved by to get rotation amount */ -#define EL_SENS 0.5 -#define AZ_SENS 0.5 - - /* What to multiply number of pixels mouse moved by for movement amounts */ -#define DIST_SENS 0.01 -#define E_SENS 0.01 - - /* Minimum spin to allow in polar (lower forced to zero) */ -#define MIN_AZSPIN 0.1 -#define MIN_ELSPIN 0.1 - - /* Factors used in computing dAz and dEl (which determine AzSpin, ElSpin) */ -#define SLOW_DAZ 0.90 -#define SLOW_DEL 0.90 -#define PREV_DAZ 0.80 -#define PREV_DEL 0.80 -#define CUR_DAZ 0.20 -#define CUR_DEL 0.20 - -/***************************************************************/ -/************************** GLOBALS ****************************/ -/***************************************************************/ - -int MoveMode = INIT_MODE; /* FLYING or POLAR mode? */ - -GLfloat Ex = INIT_EX, /* flying parameters */ - Ey = INIT_EY, - Ez = INIT_EZ, - EyeMove = INIT_MOVE, - - EyeDist = INIT_DIST, /* polar params */ - AzSpin = INIT_AZ_SPIN, - ElSpin = INIT_EL_SPIN, - - EyeAz = INIT_POLAR_AZ, /* used by both */ - EyeEl = INIT_POLAR_EL; - -int agvMoving; /* Currently moving? */ - -int downx, downy, /* for tracking mouse position */ - lastx, lasty, - downb = -1; /* and button status */ - -GLfloat downDist, downEl, downAz, /* for saving state of things */ - downEx, downEy, downEz, /* when button is pressed */ - downEyeMove; - -GLfloat dAz, dEl, lastAz, lastEl; /* to calculate spinning w/ polar motion */ -int AdjustingAzEl = 0; - -int AllowIdle, RedisplayWindow; - /* If AllowIdle is 1 it means AGV will install its own idle which - * will update the viewpoint as needed and send glutPostRedisplay() to the - * window RedisplayWindow which was set in agvInit(). AllowIdle of 0 - * means AGV won't install an idle funciton, and something like - * "if (agvMoving) agvMove()" should exist at the end of the running - * idle function. - */ - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#define MAX(x,y) (((x) > (y)) ? (x) : (y)) -#define TORAD(x) ((M_PI/180.0)*(x)) -#define TODEG(x) ((180.0/M_PI)*(x)) - -/***************************************************************/ -/************************ PROTOTYPES ***************************/ -/***************************************************************/ - - /* - * these are functions meant for internal use only - * the other prototypes are in agviewer.h - */ - -void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth); -void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z, GLfloat az, GLfloat el); -int ConstrainEl(void); -void MoveOn(int v); -void SetMove(float newmove); -void normalize(GLfloat v[3]); -void ncrossprod(float v1[3], float v2[3], float cp[3]); - - -/***************************************************************/ -/************************ agvInit ******************************/ -/***************************************************************/ - -void agvInit(int window) -{ - glutMouseFunc(agvHandleButton); - glutMotionFunc(agvHandleMotion); - glutKeyboardFunc(agvHandleKeys); - RedisplayWindow = glutGetWindow(); - agvSetAllowIdle(window); -} - -/***************************************************************/ -/************************ VIEWPOINT STUFF **********************/ -/***************************************************************/ - - /* - * viewing transformation modified from page 90 of red book - */ -void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth) -{ - glTranslatef(0, 0, -dist); - glRotatef(elevation, 1, 0, 0); - glRotatef(azimuth, 0, 1, 0); - -} - - /* - * I took the idea of tracking eye position in absolute - * coords and direction looking in Polar form from denis - */ -void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z, GLfloat az, GLfloat el) -{ - float lookat[3], perp[3], up[3]; - - lookat[0] = sin(TORAD(az))*cos(TORAD(el)); - lookat[1] = sin(TORAD(el)); - lookat[2] = -cos(TORAD(az))*cos(TORAD(el)); - normalize(lookat); - perp[0] = lookat[2]; - perp[1] = 0; - perp[2] = -lookat[0]; - normalize(perp); - ncrossprod(lookat, perp, up); - gluLookAt(x, y, z, - x+lookat[0], y+lookat[1], z+lookat[2], - up[0], up[1], up[2]); -} - - /* - * Call viewing transformation based on movement mode - */ -void agvViewTransform(void) -{ - switch (MoveMode) { - case FLYING: - FlyLookFrom(Ex, Ey, Ez, EyeAz, EyeEl); - break; - case POLAR: - PolarLookFrom(EyeDist, EyeEl, EyeAz); - break; - } -} - - /* - * keep them vertical; I think this makes a lot of things easier, - * but maybe it wouldn't be too hard to adapt things to let you go - * upside down - */ -int ConstrainEl(void) -{ - if (EyeEl <= -90) { - EyeEl = -89.99; - return 1; - } else if (EyeEl >= 90) { - EyeEl = 89.99; - return 1; - } - return 0; -} - - /* - * Idle Function - moves eyeposition - */ -void agvMove(void) -{ - - switch (MoveMode) { - case FLYING: - Ex += EyeMove*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey += EyeMove*sin(TORAD(EyeEl)); - Ez -= EyeMove*cos(TORAD(EyeAz))*cos(TORAD(EyeEl)); - break; - - case POLAR: - EyeEl += ElSpin; - EyeAz += AzSpin; - if (ConstrainEl()) { /* weird spin thing to make things look */ - ElSpin = -ElSpin; /* look better when you are kept from going */ - /* upside down while spinning - Isn't great */ - if (fabs(ElSpin) > fabs(AzSpin)) - AzSpin = fabs(ElSpin) * ((AzSpin > 0) ? 1 : -1); - } - break; - } - - if (AdjustingAzEl) { - dAz *= SLOW_DAZ; - dEl *= SLOW_DEL; - } - - if (AllowIdle) { - glutPostWindowRedisplay(RedisplayWindow); - } -} - - - /* - * Don't install agvMove as idle unless we will be updating the view - * and we've been given a RedisplayWindow - */ -void MoveOn(int v) -{ - if (v && ((MoveMode == FLYING && EyeMove != 0) || - (MoveMode == POLAR && - (AzSpin != 0 || ElSpin != 0 || AdjustingAzEl)))) { - agvMoving = 1; - if (AllowIdle) - glutIdleFunc(agvMove); - } else { - agvMoving = 0; - if (AllowIdle) - glutIdleFunc(NULL); - } -} - - /* - * set new redisplay window. If <= 0 it means we are not to install - * an idle function and will rely on whoever does install one to - * put statement like "if (agvMoving) agvMove();" at end of it - */ -void agvSetAllowIdle(int allowidle) -{ - if ((AllowIdle = allowidle)) - MoveOn(1); -} - - - /* - * when moving to flying we stay in the same spot, moving to polar we - * reset since we have to be looking at the origin (though a pivot from - * current position to look at origin might be cooler) - */ -void agvSwitchMoveMode(int move) -{ - switch (move) { - case FLYING: - Ex = -EyeDist*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey = EyeDist*sin(TORAD(EyeEl)); - Ez = EyeDist*(cos(TORAD(EyeAz))*cos(TORAD(EyeEl))); - EyeAz = EyeAz; - EyeEl = -EyeEl; - EyeMove = INIT_MOVE; - break; - case POLAR: - EyeDist = INIT_DIST; - EyeAz = INIT_POLAR_AZ; - EyeEl = INIT_POLAR_EL; - AzSpin = INIT_AZ_SPIN; - ElSpin = INIT_EL_SPIN; - break; - } - MoveMode = move; - MoveOn(1); - glutPostRedisplay(); -} - -/***************************************************************/ -/******************* MOUSE HANDLING ***********************/ -/***************************************************************/ - -void agvHandleButton(int button, int state, int x, int y) -{ - if (state == GLUT_DOWN && downb == -1) { - lastx = downx = x; - lasty = downy = y; - downb = button; - - switch (button) { - case GLUT_LEFT_BUTTON: - lastEl = downEl = EyeEl; - lastAz = downAz = EyeAz; - AzSpin = ElSpin = dAz = dEl = 0; - AdjustingAzEl = 1; - MoveOn(1); - break; - - case GLUT_MIDDLE_BUTTON: - downDist = EyeDist; - downEx = Ex; - downEy = Ey; - downEz = Ez; - downEyeMove = EyeMove; - EyeMove = 0; - } - - } else if (state == GLUT_UP && button == downb) { - - downb = -1; - - switch (button) { - case GLUT_LEFT_BUTTON: - if (MoveMode != FLYING) { - AzSpin = -dAz; - if (AzSpin < MIN_AZSPIN && AzSpin > -MIN_AZSPIN) - AzSpin = 0; - ElSpin = -dEl; - if (ElSpin < MIN_ELSPIN && ElSpin > -MIN_ELSPIN) - ElSpin = 0; - } - AdjustingAzEl = 0; - MoveOn(1); - break; - - case GLUT_MIDDLE_BUTTON: - EyeMove = downEyeMove; - } - } -} - - /* - * change EyeEl and EyeAz and position when mouse is moved w/ button down - */ -void agvHandleMotion(int x, int y) -{ - int deltax = x - downx, deltay = y - downy; - - switch (downb) { - case GLUT_LEFT_BUTTON: - EyeEl = downEl + EL_SENS * ((MoveMode == FLYING) ? -deltay : deltay); - ConstrainEl(); - EyeAz = downAz + AZ_SENS * deltax; - dAz = PREV_DAZ*dAz + CUR_DAZ*(lastAz - EyeAz); - dEl = PREV_DEL*dEl + CUR_DEL*(lastEl - EyeEl); - lastAz = EyeAz; - lastEl = EyeEl; - break; - case GLUT_MIDDLE_BUTTON: - EyeDist = downDist + DIST_SENS*deltay; - Ex = downEx - E_SENS*deltay*sin(TORAD(EyeAz))*cos(TORAD(EyeEl)); - Ey = downEy - E_SENS*deltay*sin(TORAD(EyeEl)); - Ez = downEz + E_SENS*deltay*cos(TORAD(EyeAz))*cos(TORAD(EyeEl)); - break; - } - glutPostRedisplay(); -} - -/***************************************************************/ -/********************* KEYBOARD HANDLING ***********************/ -/***************************************************************/ - - /* - * set EyeMove (current speed) for FLYING mode - */ -void SetMove(float newmove) -{ - if (newmove > MINMOVE) { - EyeMove = newmove; - MoveOn(1); - } else { - EyeMove = 0; - MoveOn(0); - } -} - - /* - * 0->9 set speed, +/- adjust current speed -- in FLYING mode - */ -/* ARGSUSED1 */ -void agvHandleKeys(unsigned char key, int x, int y) -{ - if (MoveMode != FLYING) - return; - - if (key >= '0' && key <= '9') - SetMove(SPEEDFUNCTION((key-'0'))); - else - switch(key) { - case '+': - if (EyeMove == 0) - SetMove(MINMOVE); - else - SetMove(EyeMove *= (1 + MOVEFRACTION)); - break; - case '-': - SetMove(EyeMove *= (1 - MOVEFRACTION)); - break; - } -} - -/***************************************************************/ -/*********************** VECTOR STUFF **************************/ -/***************************************************************/ - - /* normalizes v */ -void normalize(GLfloat v[3]) -{ - GLfloat d = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); - - if (d == 0) - fprintf(stderr, "Zero length vector in normalize\n"); - else - v[0] /= d; v[1] /= d; v[2] /= d; -} - - /* calculates a normalized crossproduct to v1, v2 */ -void ncrossprod(float v1[3], float v2[3], float cp[3]) -{ - cp[0] = v1[1]*v2[2] - v1[2]*v2[1]; - cp[1] = v1[2]*v2[0] - v1[0]*v2[2]; - cp[2] = v1[0]*v2[1] - v1[1]*v2[0]; - normalize(cp); -} - -/***************************************************************/ -/**************************** AXES *****************************/ -/***************************************************************/ - - - /* draw axes -- was helpful to debug/design things */ -void agvMakeAxesList(int displaylistnum) -{ - int i,j; - GLfloat axes_ambuse[] = { 0.5, 0.0, 0.0, 1.0 }; - glNewList(displaylistnum, GL_COMPILE); - glPushAttrib(GL_LIGHTING_BIT); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, axes_ambuse); - glBegin(GL_LINES); - glVertex3f(15, 0, 0); glVertex3f(-15, 0, 0); - glVertex3f(0, 15, 0); glVertex3f(0, -15, 0); - glVertex3f(0, 0, 15); glVertex3f(0, 0, -15); - glEnd(); - for (i = 0; i < 3; i++) { - glPushMatrix(); - glTranslatef(-10*(i==0), -10*(i==1), -10*(i==2)); - for (j = 0; j < 21; j++) { - glutSolidCube(0.1); - glTranslatef(i==0, i==1, i==2); - } - glPopMatrix(); - } - glPopAttrib(); - glEndList(); -} - - diff --git a/lib/glut-3.7.6/progs/demos/walker/walkviewer.h b/lib/glut-3.7.6/progs/demos/walker/walkviewer.h deleted file mode 100644 index 92842a97d2a9cb0e503c8e3cc0b18f6adef89f1f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/walkviewer.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * walkviewer.c [from agviewer.c (version 1.0)] - * - * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut - * - * The two view movement modes are POLAR and FLYING. Both move the eye, NOT - * THE OBJECT. You can never be upside down or twisted (roll) in either mode. - * - * A nice addition would be an examiner type trackball mode where you are - * moving the object and so could see it from any angle. Also less restricted - * flying and polar modes (fly upside down, do rolls, etc.). - * - * Controls for Polar are just left and middle buttons -- for flying it's - * those plus 0-9 number keys and +/- for speed adjustment. - * - * See agv_example.c and agviewer.c for more info. Probably want to make - * a copy of these and then edit for each program. This isn't meant to be - * a library, just something to graft onto your own programs. - * - * I welcome any feedback or improved versions. - * - * Philip Winston - 4/11/95 - * pwinston@hmc.edu - * http://www.cs.hmc.edu/people/pwinston - */ - - - /* - * Call agvInit() with glut's current window set to the window in - * which you want to run the viewer. Right after creating it is fine. It - * will remember that window for possible later use (see below) and - * registers mouse, motion, and keyboard handlers for that window (see below). - * - * allowidle is 1 or 0 depnding on whether you will let AGV install - * and uninstall an idle function. 0 means you will not let it (because - * you will be having your own idle function). In this case it is your - * responsibility to put a statement like: - * - * if (agvMoving) - * agvMove(); - * - * at the end of your idle function, to let AGV update the viewpoint if it - * is moving. - * - * If allowidle is 1 it means AGV will install its own idle which - * will update the viewpoint as needed and send glutPostRedisplay() to the - * window which was current when agvInit() was called. - * - * agvSetIdleAllow changes this value so you can let AGV install its idle - * when your idle isn't installed. - * - */ -void agvInit(int allowidle); -void agvSetAllowIdle(int allowidle); - - - /* - * Set which movement mode you are in. - */ -typedef enum { FLYING, POLAR } MovementType; -void agvSwitchMoveMode(int move); - - /* - * agvViewTransform basically does the appropriate gluLookAt() for the - * current position. So call it in your display on the projection matrix - */ -void agvViewTransform(void); - - /* - * agvMoving will be set by AGV according to whether it needs you to call - * agvMove() at the end of your idle function. You only need these if - * you aren't allowing AGV to do its own idle. - * (Don't change the value of agvMoving) - */ -extern int agvMoving; -void agvMove(void); - - /* - * These are the routines AGV registers to deal with mouse and keyboard input. - * Keyboard input only matters in flying mode, and then only to set speed. - * Mouse input only uses left two buttons in both modes. - * These are all registered with agvInit(), but you could register - * something else which called these, or reregister these as needed - */ -void agvHandleButton(int button, int state, int x, int y); -void agvHandleMotion(int x, int y); -void agvHandleKeys(unsigned char key, int x, int y); - - /* - * Just an extra routine which makes an x-y-z axes (about 10x10x10) - * which is nice for aligning things and debugging. Pass it an available - * displaylist number. - */ -void agvMakeAxesList(int displaylist); - - - - - - - - - - diff --git a/lib/glut-3.7.6/progs/demos/walker/win32_dirent.h b/lib/glut-3.7.6/progs/demos/walker/win32_dirent.h deleted file mode 100644 index 222e9740046f5bfa21a7c7bc884b7707d426693a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/walker/win32_dirent.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef __win32_dirent__ -#define __win32_dirent__ - -/* For Win32 that lacks Unix direct support. */ - -#include -#include - -struct dirent { - char d_name[MAX_PATH]; -}; - -typedef struct { - WIN32_FIND_DATA wfd; - HANDLE hFind; - struct dirent de; -} DIR; - -static DIR * -opendir(char *pSpec) -{ - DIR *pDir = malloc(sizeof(DIR)); - /* XXX Windows 95 has problems opening up "." though Windows NT does this - fine? Open "*" instead of "." to be safe. -mjk */ - pDir->hFind = FindFirstFile(strcmp(pSpec, ".") ? pSpec : "*", - &pDir->wfd); - return pDir; -} - -static void -closedir(DIR * pDir) -{ - FindClose(pDir); - free(pDir); -} - -static struct dirent * -readdir(DIR *pDir) -{ - if (pDir->hFind) { - strcpy(pDir->de.d_name, pDir->wfd.cFileName); - if (!FindNextFile(pDir->hFind, &pDir->wfd)) - pDir->hFind = NULL; - return &pDir->de; - } - return NULL; -} - -#define fclose(f) { if (f!=NULL) fclose(f); } - -#endif /* __win32_dirent__ */ diff --git a/lib/glut-3.7.6/progs/demos/yacme/Editor.c b/lib/glut-3.7.6/progs/demos/yacme/Editor.c deleted file mode 100644 index 2f3bfcdad7515cb527725c3e3c72be30f313ed07..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/yacme/Editor.c +++ /dev/null @@ -1,1372 +0,0 @@ -/*===========================================================================* - * - * YACME - * Yet Another ColorMap Editor - * - * Patrick BOUCHAUD - 1993 - * SGI Switzerland - * - * Converted to OpenGL using GLUT - * - *===========================================================================*/ - -#include -#include -#include -#include -#include - -#include "mallocbis.h" - -/* For portability... */ -#undef fsqrt -#define fsqrt(_a) sqrt(_a) - -#define SUP(a,b) ( ((a)>(b)) ? (a) : (b) ) -#define INF(a,b) ( ((a)<(b)) ? (a) : (b) ) -#define ABS(a) ( ((a)<0) ? -(a) : (a) ) -#define POINT 1 -#define CURVE 2 -#define LEFT_TAN 3 -#define RIGHT_TAN 4 -#define MANUAL 1 -#define CONTINUOUS 2 - -#define CONSTANT 1 -#define LINEAR 2 -#define POLYNOMIAL 3 - -#define TabCmpnt(c,n) TabCmpnt[(n)*4+(c)] - -#define MAXNDX (dimlut-1) - -#define WINHEIGHT 381 -#define WINWIDTH 318 - -#define LUTRATIO ((float)MAXNDX/255.) - -#define LEFT LUTRATIO*(-5.) -#define RIGHT LUTRATIO*(260.) -#define BOTTOM LUTRATIO*(-5.) -#define TOP LUTRATIO*(315.) -#define TANLEN LUTRATIO*(25.) - -typedef float Matrix[4][4]; - -typedef struct { - float x0, y0, - x1, y1; -} Tangente; - -typedef struct UserPointStruct { - - float x, y; - Tangente tg; - int mode; - float polynome[4]; - struct UserPointStruct *next, *last; - -} UserPoint; - -void ResetCMap(void); -void ApplyCMap(void); -void YACME_makeMenu(void); -extern void invertmat(float from[4][4], float to[4][4]); - -static UserPoint *FreePointList = NULL; -#define newPoint( point ) newItem( point, FreePointList, UserPoint ) -#define freePoint( point ) freeItem( point, FreePointList ) - -typedef struct { - int type, - cmpnt, - ndx; - - UserPoint *upoint; -} PickObject; - -struct { - int leftdown, middledown, rightdown; -} mouse; - -void YACME_pick( int mx, int my, PickObject *obj ); -void YACME_update( int cmpnt, UserPoint *upoint ); -int YACME_get( unsigned long *table ); - -void DeletePoint( int cmpnt, UserPoint *upoint ); -int MovePoint( int, int ); -int MoveTangente( int, int, int ); -int InsertPoint( PickObject *obj ); - -void GetPolynome( int mode, - float a0, float b0, float t0, - float a1, float b1, float t1, - float coeff[4] ); -void OrthoTransform( int mx, int my, float *x, float *y ); -float Polynome4( float x, float *polynome ); - -static int DrawCurve[4] = { 1, 1, 1, 1, }, - modifiedCurve[4] = { 1, 1, 1, 1 }, - YACME_refresh = MANUAL, - curCmpnt = 0, curType = 0, - Mousex, Mousey; - -static float *TabCmpnt; -static int YACME_switch_menu = 0, - YACME_mode_menu, YACME_edit_menu; -static int YACME_win = 0, W, H , update = 0; -static UserPoint *userPoint[4], *userPointSvg[4], *curPoint = NULL; - -static void Redraw( void ); -static void Reshape( int, int ); -static void Mouse( int, int, int, int ); -static void Motion( int, int ); -static void Key( unsigned char, int, int ); -static void Special( int, int, int ); -static void YACME_menuFunc( int ); - -typedef void (*CallBack)(void); -static CallBack newmapCB, applyCB; -static int dimlut; - -/*---------------------------------------------------------------------------* - * YACME_init - *---------------------------------------------------------------------------*/ -void -YACME_init( - int x, int y, int w, int h, - int dim, float **list, - CallBack newmapFunc, CallBack applyFunc) -{ - int i, j; - UserPoint *userpoint; - - if (YACME_win) return; - - dimlut = dim; - newmapCB = newmapFunc; - applyCB = applyFunc; - - if (*list==NULL) - { - *list = TabCmpnt = (float *) malloc( 4*dimlut*sizeof(float) ); - for (i=0; i<4; i++) - { - newPoint( userPoint[i] ); - userpoint = userPoint[i]; - userpoint->mode = POLYNOMIAL; - userpoint->x = 0.; - userpoint->y = 0.; - userpoint->last = NULL; - userpoint->tg.x0 = 0.; - userpoint->tg.y0 = 0.; - userpoint->tg.x1 = TANLEN; - userpoint->tg.y1 = 0.; - - newPoint( userpoint->next ); - userpoint = userpoint->next; - userpoint->mode = POLYNOMIAL; - userpoint->x = (float)MAXNDX; - userpoint->y = (float)MAXNDX; - userpoint->last = userPoint[i]; - userpoint->next = NULL; - userpoint->tg.x0 = (float)(MAXNDX-TANLEN); - userpoint->tg.y0 = (float)MAXNDX; - userpoint->tg.x1 = (float)MAXNDX; - userpoint->tg.y1 = (float)MAXNDX; - } - } - else - { - UserPoint *upoint[4], *lastupoint[4]={0,0,0,0}; - - TabCmpnt = *list; - for (i=0; inext ); - upoint[j] = upoint[j]->next; - } - upoint[j]->next = NULL; - upoint[j]->last = lastupoint[j]; - upoint[j]->mode = LINEAR; - upoint[j]->x = (float)i; - upoint[j]->y = (float)MAXNDX*TabCmpnt(j,i); - if (i==0) - { - upoint[j]->tg.x0 = 0.; - upoint[j]->tg.y0 = 0.; - upoint[j]->tg.x1 = TANLEN; - upoint[j]->tg.y1 = 0.; - } - else - { - float slope = upoint[j]->y - upoint[j]->last->y, - dx = TANLEN/fsqrt(slope*slope + 1), - dy = slope*dx; - upoint[j]->tg.x0 = upoint[j]->x - dx; - upoint[j]->tg.y0 = upoint[j]->y - dy; - upoint[j]->tg.x1 = upoint[j]->x + dx; - upoint[j]->tg.y1 = upoint[j]->y + dy; - } - - lastupoint[j] = upoint[j]; - } - } - } - -/* - TabComponents update - -------------------- -*/ - for (i=0; i<4; i++) - { - for (userpoint=userPoint[i]; userpoint!=NULL; userpoint=userpoint->next) - YACME_update( i, userpoint ); - } - ApplyCMap(); - - if (!YACME_win) - { - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutInitWindowPosition( x, y ); - glutInitWindowSize( w, h ); - YACME_win = glutCreateWindow( "LUT editor" ); - glutDisplayFunc( Redraw ); - glutReshapeFunc( Reshape ); - glutMouseFunc( Mouse ); - glutMotionFunc( Motion ); - glutPassiveMotionFunc( Motion ); - glutSpecialFunc( Special ); - glutKeyboardFunc( Key ); - - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho( LEFT, RIGHT, BOTTOM, TOP, -1., 1. ); - - glClearColor( 0.66, 0.66, 0.66, 1. ); - glClear( GL_COLOR_BUFFER_BIT ); - glShadeModel( GL_FLAT ); - glutSwapBuffers(); - - YACME_makeMenu(); - } -} - -/*---------------------------------------------------------------------------* - * Key - *---------------------------------------------------------------------------*/ -/* ARGSUSED1 */ -static void -Key( unsigned char key, int x, int y ) -{ - UserPoint *previousPoint; - switch (key) - { - case 27: /* Escape */ - exit(0); - break; - - case 127: /* BackSpace */ - case 8: /* Delete */ - if (!curPoint) return; - previousPoint = (curPoint->last ? curPoint->last : userPoint[curCmpnt]); - DeletePoint( curCmpnt, curPoint ); - modifiedCurve[curCmpnt] = 1; - update = 1; - curPoint = previousPoint; - break; - } - glutPostRedisplay(); -} - -/*---------------------------------------------------------------------------* - * Special - *---------------------------------------------------------------------------*/ -/* ARGSUSED1 */ -static void -Special( int key, int xx, int yy ) -{ - int x, y, minx, maxx; - float dx, dy; - if (curPoint == NULL ) return; - if (curPoint->next == NULL) return; - if (curPoint->last == NULL) return; - - x = (int)curPoint->x; - y = (int)curPoint->y; - - minx = (int)curPoint->last->x; minx++; - maxx = (int)curPoint->next->x; maxx--; - - switch (key) - { - case GLUT_KEY_LEFT: - if (x > minx) x--; - break; - - case GLUT_KEY_RIGHT: - if (x < maxx) x++; - break; - - case GLUT_KEY_UP: - if (y < MAXNDX) y++; - break; - - case GLUT_KEY_DOWN: - if (y > 0) y--; - break; - } - - dx = (float)x - curPoint->x; - curPoint->x += dx; - curPoint->tg.x0 += dx; - curPoint->tg.x1 += dx; - - dy = (float)y - curPoint->y; - curPoint->y = y; - curPoint->tg.y0 += dy; - curPoint->tg.y1 += dy; - - update = 1; - glutPostRedisplay(); -} - -/*---------------------------------------------------------------------------* - * Reshape - *---------------------------------------------------------------------------*/ -static void -Reshape( int w, int h ) -{ - glViewport( 0, 0, w, h ); - W = w; - H = h; - glutPostRedisplay(); -} - -/*---------------------------------------------------------------------------* - * Mouse - *---------------------------------------------------------------------------*/ -static void -Mouse( int button, int state, int x, int y ) -{ - PickObject object; - - y = H-y; - switch (button) - { - case GLUT_RIGHT_BUTTON: - mouse.rightdown = (state==GLUT_DOWN); - break; - - case GLUT_MIDDLE_BUTTON: - mouse.middledown = (state==GLUT_DOWN); - break; - - case GLUT_LEFT_BUTTON: - mouse.leftdown = (state==GLUT_DOWN); - if (mouse.leftdown) - { - YACME_pick( x, y, &object ); - curType = object.type; - switch ( object.type ) - { - case CURVE: - if ((curType = InsertPoint( &object ) != 0)) - { - curPoint = object.upoint; - curCmpnt = object.cmpnt; - } - else curPoint = NULL; - break; - - case POINT: - case LEFT_TAN: - case RIGHT_TAN: - curPoint = object.upoint; - curCmpnt = object.cmpnt; - break; - - default: - curPoint = NULL; - } - break; - } - } - glutPostRedisplay(); -} - -/*---------------------------------------------------------------------------* - * Motion - *---------------------------------------------------------------------------*/ -static void -Motion( int x, int y ) -{ - Mousex = x; - Mousey = H-y; - if (mouse.leftdown) - { - switch (curType) - { - case POINT: - update = MovePoint( Mousex, Mousey ); - break; - - case LEFT_TAN: - update = MoveTangente( -1, Mousex, Mousey ); - break; - - case RIGHT_TAN: - update = MoveTangente( 1, Mousex, Mousey ); - break; - } - } - glutPostRedisplay(); -} - -/*---------------------------------------------------------------------------* - * YACME_makeMenu - *---------------------------------------------------------------------------*/ - -#define CONTINUOUS_ITEM 5 -#define MANUAL_ITEM 4 -#define APPLY_ITEM 3 -#define RESET_ITEM 2 -#define CLOSE_ITEM 1 - -#define RED_ITEM 10 -#define GREEN_ITEM 11 -#define BLUE_ITEM 12 -#define ALPHA_ITEM 13 - -#define CONSTANT_ITEM 22 -#define LINEAR_ITEM 21 -#define POLYNOM_ITEM 20 - -#define EDIT_RED_ITEM 30 -#define EDIT_GREEN_ITEM 31 -#define EDIT_BLUE_ITEM 32 -#define EDIT_ALPHA_ITEM 33 - -void -YACME_makeMenu(void) -{ - YACME_edit_menu = glutCreateMenu( YACME_menuFunc ); - glutAddMenuEntry( "red", EDIT_RED_ITEM ); - glutAddMenuEntry( "green", EDIT_GREEN_ITEM ); - glutAddMenuEntry( "blue", EDIT_BLUE_ITEM ); - glutAddMenuEntry( "alpha", EDIT_ALPHA_ITEM ); - - YACME_mode_menu = glutCreateMenu( YACME_menuFunc ); - glutAddMenuEntry( "Constant ", CONSTANT_ITEM ); - glutAddMenuEntry( "Linear ", LINEAR_ITEM ); - glutAddMenuEntry( "Polynomial", POLYNOM_ITEM ); - - YACME_switch_menu = glutCreateMenu( YACME_menuFunc ); - glutAddMenuEntry( "Red on", RED_ITEM ); - glutAddMenuEntry( "Green on", GREEN_ITEM ); - glutAddMenuEntry( "Blue on", BLUE_ITEM ); - glutAddMenuEntry( "Alpha on", ALPHA_ITEM ); - - glutCreateMenu( YACME_menuFunc ); - glutAddMenuEntry( "Manual ", MANUAL_ITEM ); - glutAddMenuEntry( "Apply", APPLY_ITEM ); - glutAddMenuEntry( "Reset", RESET_ITEM ); - glutAddMenuEntry( "Close", CLOSE_ITEM ); - glutAddSubMenu( "Mode... ", YACME_mode_menu ); - glutAddSubMenu( "Switch... ", YACME_switch_menu ); - glutAddSubMenu( "Edit... ", YACME_edit_menu ); - - glutAttachMenu( GLUT_RIGHT_BUTTON ); -} - -/*---------------------------------------------------------------------------* - * YACME_menuFunc - *---------------------------------------------------------------------------*/ -static void -YACME_menuFunc( int item ) -{ - switch( item ) - { - case CLOSE_ITEM: - break; - - case RESET_ITEM: - if (applyCB) (*applyCB)(); - else if (newmapCB) (*newmapCB)(); - ResetCMap(); - curPoint = NULL; - break; - - case APPLY_ITEM: - if (applyCB) (*applyCB)(); - else if (newmapCB) (*newmapCB)(); - ApplyCMap(); - break; - - case MANUAL_ITEM: /* switch to continuous */ - glutChangeToMenuEntry( 1, "Continuous", CONTINUOUS_ITEM ); - YACME_refresh = CONTINUOUS; - break; - - case CONTINUOUS_ITEM: /* switch to manual */ - glutChangeToMenuEntry( 1, "Manual ", MANUAL_ITEM ); - if (newmapCB) (*newmapCB)(); - ApplyCMap(); - YACME_refresh = MANUAL; - break; - - case RED_ITEM: - DrawCurve[0] = !DrawCurve[0]; - if (DrawCurve[0]) - glutChangeToMenuEntry( 1, "Red on", RED_ITEM ); - else - glutChangeToMenuEntry( 1, "Red off", RED_ITEM ); - curPoint = NULL; - break; - - case GREEN_ITEM: - DrawCurve[1] = !DrawCurve[1]; - if (DrawCurve[1]) - glutChangeToMenuEntry( 2, "Green on", GREEN_ITEM ); - else - glutChangeToMenuEntry( 2, "Green off", GREEN_ITEM ); - curPoint = NULL; - break; - - case BLUE_ITEM: - DrawCurve[2] = !DrawCurve[2]; - if (DrawCurve[2]) - glutChangeToMenuEntry( 3, "Blue on", BLUE_ITEM ); - else - glutChangeToMenuEntry( 3, "Blue off", BLUE_ITEM ); - curPoint = NULL; - break; - - case ALPHA_ITEM: - DrawCurve[3] = !DrawCurve[3]; - if (DrawCurve[3]) - glutChangeToMenuEntry( 4, "Alpha on", ALPHA_ITEM ); - else - glutChangeToMenuEntry( 4, "Alpha off", ALPHA_ITEM ); - curPoint = NULL; - break; - - case CONSTANT_ITEM: - if (curPoint != NULL) - { - update = 1; - curPoint->mode = CONSTANT; - } - break; - - case LINEAR_ITEM: - if (curPoint != NULL) - { - update = 1; - curPoint->mode = LINEAR; - } - break; - - case POLYNOM_ITEM: - if (curPoint != NULL) - { - update = 1; - curPoint->mode = POLYNOMIAL; - } - break; - - case EDIT_RED_ITEM: - case EDIT_GREEN_ITEM: - case EDIT_BLUE_ITEM: - case EDIT_ALPHA_ITEM: - curCmpnt = item-30; - curPoint = userPoint[curCmpnt]; - break; - } - glutPostRedisplay(); -} - -/*---------------------------------------------------------------------------* - * output - *---------------------------------------------------------------------------*/ -static void -output( float x, float y, char *string ) -{ - int len, i; - - glRasterPos2f(x, y); - len = (int) strlen(string); - for (i = 0; i < len; i++) - { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, string[i]); - } -} - -/*---------------------------------------------------------------------------* - * Redraw - *---------------------------------------------------------------------------*/ -static void -Redraw( void ) -{ - int i, j, ndx, cmpnt, priority[4]; - Tangente *tg; - UserPoint *upoint; - char string[256]; - - if (update) - { - modifiedCurve[curCmpnt] = 1; - YACME_update( curCmpnt, curPoint ); - if ( newmapCB && (YACME_refresh == CONTINUOUS)) - (*newmapCB)(); - update = 0; - } - - glClear( GL_COLOR_BUFFER_BIT ); - -/* - Barettes representant la table des couleurs - ------------------------------------------- -*/ - glBegin( GL_TRIANGLE_STRIP ); - glColor3f(TabCmpnt(0,0), TabCmpnt(1,0), TabCmpnt(2,0)); - glVertex2f( 0., 270.*LUTRATIO ); - glVertex2f( 0., 310.*LUTRATIO ); - glVertex2f( .5, 270.*LUTRATIO ); - glVertex2f( .5, 310.*LUTRATIO ); - glEnd(); - for ( i=1; ix-DIMPOINT, upoint->y-DIMPOINT ); - glVertex2f( upoint->x-DIMPOINT, upoint->y+DIMPOINT ); - glVertex2f( upoint->x+DIMPOINT, upoint->y-DIMPOINT ); - glVertex2f( upoint->x+DIMPOINT, upoint->y+DIMPOINT ); - glEnd(); -/* - Tangente - -------- -*/ - tg = &upoint->tg; - if (upoint->last ? upoint->last->mode == POLYNOMIAL : 0) - { - glBegin( GL_LINES ); - glVertex2f( tg->x0, tg->y0 ); - glVertex2f( upoint->x, upoint->y ); - glEnd(); - glBegin( GL_LINE_LOOP ); - glVertex2f( tg->x0-DIMPOINT, tg->y0-DIMPOINT ); - glVertex2f( tg->x0-DIMPOINT, tg->y0+DIMPOINT ); - glVertex2f( tg->x0+DIMPOINT, tg->y0+DIMPOINT ); - glVertex2f( tg->x0+DIMPOINT, tg->y0-DIMPOINT ); - glEnd(); - } - if (upoint->mode == POLYNOMIAL) - { - glBegin( GL_LINES ); - glVertex2f( upoint->x, upoint->y ); - glVertex2f( tg->x1, tg->y1 ); - glEnd(); - glBegin( GL_LINE_LOOP ); - glVertex2f( tg->x1-DIMPOINT, tg->y1-DIMPOINT ); - glVertex2f( tg->x1-DIMPOINT, tg->y1+DIMPOINT ); - glVertex2f( tg->x1+DIMPOINT, tg->y1+DIMPOINT ); - glVertex2f( tg->x1+DIMPOINT, tg->y1-DIMPOINT ); - glEnd(); - } - - } while ( (upoint=upoint->next) != NULL ); - -/* - Highlight current point - ----------------------- -*/ - ndx = curPoint->x; - h = curPoint->y; - switch (curCmpnt) - { - case 3: glColor3f(1.,1.,1.); break; - case 2: glColor3f(0.,0.,1.); break; - case 1: glColor3f(0.,1.,0.); break; - case 0: glColor3f(1.,0.,0.); break; - } - glBegin( GL_LINE_LOOP ); - glVertex2f( (float)ndx-2.*DIMPOINT, h-2.*DIMPOINT ); - glVertex2f( (float)ndx-2.*DIMPOINT, h+2.*DIMPOINT ); - glVertex2f( (float)ndx+2.*DIMPOINT, h+2.*DIMPOINT ); - glVertex2f( (float)ndx+2.*DIMPOINT, h-2.*DIMPOINT ); - glEnd(); - } - else - { - float x, y; - OrthoTransform( Mousex, Mousey, &x, &y ); - ndx = (int) SUP( INF(x,(float)MAXNDX), 0 ); - } - -/* - Coordinates text string - ----------------------- -*/ - glColor3f( 0., 0., 0. ); - sprintf( string, - "%.5d: rgba %.3f %.3f %.3f %.3f", - ndx, - TabCmpnt(0,ndx), - TabCmpnt(1,ndx), - TabCmpnt(2,ndx), - TabCmpnt(3,ndx) - ); - output( LUTRATIO, 257.*LUTRATIO, string ); - - glutSwapBuffers(); -} - -/*---------------------------------------------------------------------------* - * YACME_pick - *---------------------------------------------------------------------------*/ -void -YACME_pick( int mousex, int mousey, PickObject *obj ) -{ - int cmpnt, i, priority[4]; - float x, y, val; - Tangente *tg; - UserPoint *upoint; - float pickrad; - - obj->type = -1; - OrthoTransform( mousex, mousey, &x, &y ); - -/* - On travaille en priorite sur les objets definis par l'utilisateur - ----------------------------------------------------------------- -*/ - for ( i=0; i=0; i--, cmpnt=priority[i] ) if ( DrawCurve[cmpnt] ) { - - upoint = userPoint[cmpnt]; - while ( upoint != NULL ) { -/* - On cherche le POINT -*/ - if ( ABS(y-upoint->y) < pickrad && ABS(x-upoint->x) < pickrad ) { - obj->upoint = upoint; - obj->cmpnt = cmpnt; - obj->type = POINT; - return; - } -/* - On cherche la demi-tangente GAUCHE -*/ - tg = &upoint->tg; - if ( ABS(x-tg->x0) < pickrad && ABS(y-tg->y0) < pickrad ) { - obj->upoint = upoint; - obj->cmpnt = cmpnt; - obj->type = LEFT_TAN; - return; - } -/* - On cherche la demi-tangente DROITE -*/ - if ( ABS(x-tg->x1) < pickrad && ABS(y-tg->y1) < pickrad ) { - obj->upoint = upoint; - obj->cmpnt = cmpnt; - obj->type = RIGHT_TAN; - return; - } - upoint = upoint->next; - } -/* - Puis on cherche les coordonnees sur la CURVE - (On considere la precision suffisante pour le picking suivant l'axe X) - Remarque : on ne sort pas en ce cas, car la priorite est sur les objets - utilisateurs. -*/ - upoint = userPoint[cmpnt]; - while ( upoint->next->x < x ) { - upoint = upoint->next; - if ( upoint->next == NULL ) return; - } - - val = INF( SUP( Polynome4(x,upoint->polynome), 0.), (float)MAXNDX ); - if ( ABS(y-val) < pickrad ) { - obj->cmpnt = cmpnt; - obj->ndx = ((x-(int)x)<.5) ? (int)x : (int)x+1; - obj->type = CURVE; - return; - } - - } -} - -/*---------------------------------------------------------------------------* - * YACME_update - *---------------------------------------------------------------------------*/ -void -YACME_update( int cmpnt, UserPoint *upoint ) -{ - int i; - float val, t0, t1; - Tangente *tg; - - tg = &upoint->tg; - if ( tg->x1 != tg->x0 ) { - t0 = (tg->y1-tg->y0) / (tg->x1-tg->x0); - } else { - t0 = (tg->y1-tg->y0)*10000.; - } - - TabCmpnt(cmpnt,(int) upoint->x) = upoint->y/(float)MAXNDX; - if ( upoint->last != NULL ) { - - tg = &upoint->last->tg; - if ( tg->x1 != tg->x0 ) { - t1 = (tg->y1-tg->y0) / (tg->x1-tg->x0); - } else { - t1 = (tg->y1-tg->y0)*10000.; - } - - GetPolynome( - upoint->last->mode, - upoint->last->x, - upoint->last->y, - t1, - upoint->x, - upoint->y, - t0, - upoint->last->polynome - ); - - for ( i=1+(int) upoint->last->x; i<(int) upoint->x; i++ ) { - val = Polynome4((float) i, upoint->last->polynome)/(float)MAXNDX; - TabCmpnt(cmpnt,i) = INF( SUP(val,0.), 1. ); - } - } - - if ( upoint->next != NULL ) { - - tg = &upoint->next->tg; - if ( tg->x1 != tg->x0 ) { - t1 = (tg->y1-tg->y0) / (tg->x1-tg->x0); - } else { - t1 = (tg->y1-tg->y0)*10000.; - } - - GetPolynome( - upoint->mode, - upoint->x, - upoint->y, - t0, - upoint->next->x, - upoint->next->y, - t1, - upoint->polynome - ); - - for ( i=1+(int) upoint->x; i<(int) upoint->next->x; i++ ) { - val = Polynome4( (float) i, upoint->polynome )/(float)MAXNDX; - TabCmpnt(cmpnt,i) = INF( SUP(val,0.), 1. ); - } - TabCmpnt(cmpnt,(int) upoint->next->x) = upoint->next->y/(float)MAXNDX; - } -} - -/*---------------------------------------------------------------------------* - * freePointList - *---------------------------------------------------------------------------*/ -static void -freePointList( UserPoint *upoint ) -{ - while (upoint != NULL) - { - UserPoint *unext = upoint->next; - freePoint( upoint ); - upoint = unext; - } -} - -/*---------------------------------------------------------------------------* - * clonePointList - *---------------------------------------------------------------------------*/ -static UserPoint * -clonePointList( UserPoint *base ) -{ - UserPoint *clone, *upoint; - - if (base == NULL) return NULL; - - newPoint( clone ); - upoint = clone; - - memcpy( upoint, base, sizeof(UserPoint) ); - upoint->last = NULL; - upoint->next = NULL; - - while (base->next != NULL) - { - base = base->next; - newPoint( upoint->next ); - memcpy( upoint->next, base, sizeof(UserPoint) ); - upoint->next->last = upoint; - upoint->next->next = NULL; - upoint = upoint->next; - } - - return clone; -} - -/*---------------------------------------------------------------------------* - * ApplyCMap - *---------------------------------------------------------------------------*/ -void -ApplyCMap(void) -{ - int i; - - for (i=0; i<4; i++) if ( modifiedCurve[i] ) - { - freePointList( userPointSvg[i] ); - userPointSvg[i] = clonePointList( userPoint[i] ); - modifiedCurve[i] = 0; - } -} - -/*---------------------------------------------------------------------------* - * ResetCMap - *---------------------------------------------------------------------------*/ -void -ResetCMap(void) -{ - int i; - UserPoint *upoint; - - for (i=0; i<4; i++) if ( modifiedCurve[i] ) - { - freePointList( userPoint[i] ); - userPoint[i] = clonePointList( userPointSvg[i] ); - modifiedCurve[i] = 0; - - for (upoint=userPoint[i]; upoint!=NULL; upoint=upoint->next ) - YACME_update( i, upoint ); - } -} - -/*---------------------------------------------------------------------------* - * InsertPoint - *---------------------------------------------------------------------------*/ -int -InsertPoint( PickObject *obj ) -{ - float dx, dy, slope, coeff[4]; - int i; - Tangente *tg; - UserPoint *upoint, *userpoint; - - upoint = userPoint[obj->cmpnt]; - while ( (int) upoint->next->x <= obj->ndx ) { - upoint = upoint->next; - if ( upoint->next == NULL ) return 0; - } - if ( (int) upoint->x == obj->ndx ) { - obj->upoint = upoint; - return POINT; - } - - newPoint( userpoint ); - - userpoint->x = (float) obj->ndx; - userpoint->y = Polynome4( obj->ndx, upoint->polynome ); - userpoint->y = SUP( INF(userpoint->y, (float)MAXNDX), 0. ); - userpoint->mode = upoint->mode; - for ( i=0; i<4; i++ ) { - userpoint->polynome[i] = upoint->polynome[i]; - } - userpoint->next = upoint->next; - userpoint->last = upoint; - upoint->next = userpoint; - userpoint->next->last = userpoint; - -/* - calcul de slope = P'(index) - --------------------------- -*/ - - if ( userpoint->y == (float)MAXNDX || userpoint->y == 0. ) { - dx = 25.; - dy = 0.; - } else { - coeff[0] = userpoint->polynome[0]*3.; - coeff[1] = userpoint->polynome[1]*2.; - coeff[2] = userpoint->polynome[2]; - slope = coeff[0]; - for (i=1; i<3; i++) { - slope *= (float) obj->ndx; - slope += coeff[i]; - } -/* - Rappel : - cos( arctg(x) ) = 1/sqr( 1 + x^2 ); - sin( arctg(x) ) = |x|/sqr( 1 + x^2 ); -*/ - dx = 25. / fsqrt( slope*slope + 1. ); - dy = dx*slope; - } - dx *= LUTRATIO; - dy *= LUTRATIO; - - tg = &userpoint->tg; - tg->x0 = userpoint->x - dx; - tg->x1 = userpoint->x + dx; - tg->y0 = userpoint->y - dy; - tg->y1 = userpoint->y + dy; - - obj->upoint = userpoint; - return POINT; -} - -/*---------------------------------------------------------------------------* - * DeletePoint - *---------------------------------------------------------------------------*/ -void -DeletePoint( int cmpnt, UserPoint *upoint ) -{ - if ( upoint == NULL || upoint->last == NULL || upoint->next == NULL ) - return; - upoint->last->next = upoint->next; - upoint->next->last = upoint->last; - YACME_update( cmpnt, upoint->last ); - freePoint( upoint ); -} - -/*---------------------------------------------------------------------------* - * MovePoint - *---------------------------------------------------------------------------*/ -int -MovePoint( int mousex, int mousey ) -{ - float x, y, dx, dy, minx, maxx; - - OrthoTransform( mousex, mousey, &x, &y ); - - y = SUP( INF(y,(float)MAXNDX), 0. ); - x = ((x-(int)x)<.5) ? (float)(int)x : (float)(int)(x+1); - y = ((y-(int)y)<.5) ? (float)(int)y : (float)(int)(y+1); - if ( curPoint->next != NULL && curPoint->last!= NULL ) - { - minx = curPoint->last->x + 1.; - maxx = curPoint->next->x - 1.; - x = SUP( INF(x, maxx), minx ); - - dx = (float)x - curPoint->x; - curPoint->x = (float) x; - curPoint->tg.x0 += (float) dx; - curPoint->tg.x1 += (float) dx; - } - dy = (float)y - curPoint->y; - curPoint->y = (float)y; - curPoint->tg.y0 += (float) dy; - curPoint->tg.y1 += (float) dy; - - return 1; -} - -/*---------------------------------------------------------------------------* - * MoveTangente - *---------------------------------------------------------------------------*/ -int -MoveTangente( int sens, int mousex, int mousey ) -{ - float x, y, dx, dy, slope; - Tangente *tg; - - OrthoTransform( mousex, mousey, &x, &y ); - - if ( sens == -1 ) - { - x = INF(x, curPoint->x); - } - else - { - x = SUP(x, curPoint->x); - } - if ( x != curPoint->x ) - { - slope = (curPoint->y - y); - slope /= (curPoint->x - x); - dx = 25. / fsqrt( slope*slope + 1. ); - dy = dx*slope; - } - else - { - dx = 0.; - dy = (curPoint->y < y) ? sens*25. : -sens*25.; - } - - dx *= LUTRATIO; - dy *= LUTRATIO; - - tg = &curPoint->tg; - tg->x0 = curPoint->x; - tg->y0 = curPoint->y; - if ( curPoint->last != NULL ) { - tg->x0 -= dx; - tg->y0 -= dy; - } - tg->x1 = curPoint->x; - tg->y1 = curPoint->y; - if ( curPoint->next != NULL ) - { - tg->x1 += dx; - tg->y1 += dy; - } - - return 1; -} - -/*---------------------------------------------------------------------------* - * GetPolynome - *---------------------------------------------------------------------------*/ -/* - we want a polynom P(x) = Ax^3 + Bx^2 + Cx + D - so that : P(a0) = b0, P'(a0) = t0, P(a1) = b1, P'(a1) = t1 - i.e. - - | a0^3 a0^2 a0 1 | |A| |b0| - | a1^3 a1^2 a1 1 | |B| = |b1| - | 3a0^2 2a0 1 0 | |C| |t0| - | 3a1^2 2a1 1 0 | |D| |t1| -*/ -void -GetPolynome( - int mode, - float a0, float b0, float t0, - float a1, float b1, float t1, - float coeff[4] ) -{ - Matrix mat, INV_mat; - int i; - float val; - - switch (mode) - { - case CONSTANT: -/* we want P(x) = b0 */ - coeff[0] = 0.; - coeff[1] = 0.; - coeff[2] = 0.; - coeff[3] = b0; - break; - - case LINEAR: -/* - we want P(x) = b0 + (x-a0)/(a1-a0)*(b1-b0) - i.e. P(x) = x*[(b1-b0)/(a1-a0)] + b0 - a0*[(b1-b0)/(a1-a0)] -*/ - val = (b1-b0)/(a1-a0); - coeff[0] = 0.; - coeff[1] = 0.; - coeff[2] = val; - coeff[3] = b0 - a0*val; - break; - - case POLYNOMIAL: -/* - we want a polynom P(x) = Ax^3 + Bx^2 + Cx + D - so that : P(a0) = b0, P'(a0) = t0, P(a1) = b1, P'(a1) = t1 - i.e. - - | a0^3 a0^2 a0 1 | |A| |b0| - | a1^3 a1^2 a1 1 | |B| = |b1| - | 3a0^2 2a0 1 0 | |C| |t0| - | 3a1^2 2a1 1 0 | |D| |t1| -*/ - val = 1.; - for (i=3; i>=0; i--) - { - mat[0][i] = val; - val *= a0; - } - - val = 1.; - for (i=3; i>=0; i--) - { - mat[1][i] = val; - val *= a1; - } - - mat[2][3] = 0.; - mat[2][2] = 1.; - mat[2][1] = 2.*a0; - mat[2][0] = 3.*a0*a0; - - mat[3][3] = 0.; - mat[3][2] = 1.; - mat[3][1] = 2.*a1; - mat[3][0] = 3.*a1*a1; - - invertmat( mat, INV_mat ); - - for (i=0; i<4; i++) - coeff[i] = INV_mat[i][0]*b0 + - INV_mat[i][1]*b1 + - INV_mat[i][2]*t0 + - INV_mat[i][3]*t1; - break; - } -} - -/*---------------------------------------------------------------------------* - * OrthoTransform - *---------------------------------------------------------------------------*/ -void -OrthoTransform( int mx, int my, float *x, float *y ) -{ - float xf, yf; - - xf = (float) mx; - xf /= (float) W; - xf *= (float) (RIGHT - LEFT); - xf += (float) LEFT; - - yf = (float) my; - yf /= (float) H; - yf *= (float) (TOP - BOTTOM); - yf += (float) BOTTOM; - - *x = xf; - *y = yf; -} - -/*---------------------------------------------------------------------------* - * Polynome4 - *---------------------------------------------------------------------------*/ -float -Polynome4( float x, float *coeff ) -{ - int j; - float val = coeff[0]; - - for (j=1; j<4; j++) { - val *= x; - val += coeff[j]; - } - - return val; -} - -/*---------------------------------------------------------------------------* - * MAIN - *---------------------------------------------------------------------------*/ -#ifdef YACME_DBG -#include "RGBA.h" -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - - YACME_init( - 0, 0, WINWIDTH, WINHEIGHT, - 256, (float**)RGBA, - NULL, NULL - ); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} -#endif - diff --git a/lib/glut-3.7.6/progs/demos/yacme/Imakefile b/lib/glut-3.7.6/progs/demos/yacme/Imakefile deleted file mode 100644 index e89f13d14839a7952e047b4f5d48ad99bddec333..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/yacme/Imakefile +++ /dev/null @@ -1,17 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../../Glut.cf" - -TARGETS = yacme - -SRCS = Editor.c invertmat.c -OBJS = Editor.o invertmat.o - -DEFINES = -DYACME_DBG - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(yacme,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/demos/yacme/RGBA.h b/lib/glut-3.7.6/progs/demos/yacme/RGBA.h deleted file mode 100644 index b80ab0115a60f420865f18e01a7f861930c813c9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/yacme/RGBA.h +++ /dev/null @@ -1,268 +0,0 @@ - -/* - Initially default system lookup table - ------------------------------------- -*/ -static struct -{ - float r, g, b, a; -} -RGBA[256] = -{ - { 0.000000, 0.000000, 0.000000, 0.000000 }, - { 1.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 1.000000, 0.000000, 1.000000 }, - { 1.000000, 1.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 1.000000, 1.000000 }, - { 1.000000, 0.000000, 1.000000, 1.000000 }, - { 0.000000, 1.000000, 1.000000, 1.000000 }, - { 1.000000, 1.000000, 1.000000, 1.000000 }, - { 0.333333, 0.333333, 0.333333, 1.000000 }, - { 0.776471, 0.443137, 0.443137, 1.000000 }, - { 0.443137, 0.776471, 0.443137, 1.000000 }, - { 0.556863, 0.556863, 0.219608, 1.000000 }, - { 0.443137, 0.443137, 0.776471, 1.000000 }, - { 0.556863, 0.219608, 0.556863, 1.000000 }, - { 0.219608, 0.556863, 0.556863, 1.000000 }, - { 0.666667, 0.666667, 0.666667, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.039216, 0.039216, 0.039216, 1.000000 }, - { 0.078431, 0.078431, 0.078431, 1.000000 }, - { 0.117647, 0.117647, 0.117647, 1.000000 }, - { 0.156863, 0.156863, 0.156863, 1.000000 }, - { 0.200000, 0.200000, 0.200000, 1.000000 }, - { 0.239216, 0.239216, 0.239216, 1.000000 }, - { 0.278431, 0.278431, 0.278431, 1.000000 }, - { 0.317647, 0.317647, 0.317647, 1.000000 }, - { 0.356863, 0.356863, 0.356863, 1.000000 }, - { 0.400000, 0.400000, 0.400000, 1.000000 }, - { 0.439216, 0.439216, 0.439216, 1.000000 }, - { 0.478431, 0.478431, 0.478431, 1.000000 }, - { 0.517647, 0.517647, 0.517647, 1.000000 }, - { 0.556863, 0.556863, 0.556863, 1.000000 }, - { 0.600000, 0.600000, 0.600000, 1.000000 }, - { 0.639216, 0.639216, 0.639216, 1.000000 }, - { 0.678431, 0.678431, 0.678431, 1.000000 }, - { 0.717647, 0.717647, 0.717647, 1.000000 }, - { 0.756863, 0.756863, 0.756863, 1.000000 }, - { 0.800000, 0.800000, 0.800000, 1.000000 }, - { 0.839216, 0.839216, 0.839216, 1.000000 }, - { 0.878431, 0.878431, 0.878431, 1.000000 }, - { 0.917647, 0.917647, 0.917647, 1.000000 }, - { 0.956863, 0.956863, 0.956863, 1.000000 }, - { 0.000000, 0.000000, 0.000000, 1.000000 }, - { 0.000000, 0.141176, 0.000000, 1.000000 }, - { 0.000000, 0.282353, 0.000000, 1.000000 }, - { 0.000000, 0.427451, 0.000000, 1.000000 }, - { 0.000000, 0.568627, 0.000000, 1.000000 }, - { 0.000000, 0.713726, 0.000000, 1.000000 }, - { 0.000000, 0.854902, 0.000000, 1.000000 }, - { 0.000000, 1.000000, 0.000000, 1.000000 }, - { 0.247059, 0.000000, 0.000000, 1.000000 }, - { 0.247059, 0.141176, 0.000000, 1.000000 }, - { 0.247059, 0.282353, 0.000000, 1.000000 }, - { 0.247059, 0.427451, 0.000000, 1.000000 }, - { 0.247059, 0.568627, 0.000000, 1.000000 }, - { 0.247059, 0.713726, 0.000000, 1.000000 }, - { 0.247059, 0.854902, 0.000000, 1.000000 }, - { 0.247059, 1.000000, 0.000000, 1.000000 }, - { 0.498039, 0.000000, 0.000000, 1.000000 }, - { 0.498039, 0.141176, 0.000000, 1.000000 }, - { 0.498039, 0.282353, 0.000000, 1.000000 }, - { 0.498039, 0.427451, 0.000000, 1.000000 }, - { 0.498039, 0.568627, 0.000000, 1.000000 }, - { 0.498039, 0.713726, 0.000000, 1.000000 }, - { 0.498039, 0.854902, 0.000000, 1.000000 }, - { 0.498039, 1.000000, 0.000000, 1.000000 }, - { 0.749020, 0.000000, 0.000000, 1.000000 }, - { 0.749020, 0.141176, 0.000000, 1.000000 }, - { 0.749020, 0.282353, 0.000000, 1.000000 }, - { 0.749020, 0.427451, 0.000000, 1.000000 }, - { 0.749020, 0.568627, 0.000000, 1.000000 }, - { 0.749020, 0.713726, 0.000000, 1.000000 }, - { 0.749020, 0.854902, 0.000000, 1.000000 }, - { 0.749020, 1.000000, 0.000000, 1.000000 }, - { 1.000000, 0.000000, 0.000000, 1.000000 }, - { 1.000000, 0.141176, 0.000000, 1.000000 }, - { 1.000000, 0.282353, 0.000000, 1.000000 }, - { 1.000000, 0.427451, 0.000000, 1.000000 }, - { 1.000000, 0.568627, 0.000000, 1.000000 }, - { 1.000000, 0.713726, 0.000000, 1.000000 }, - { 1.000000, 0.854902, 0.000000, 1.000000 }, - { 1.000000, 1.000000, 0.000000, 1.000000 }, - { 0.000000, 0.000000, 0.247059, 1.000000 }, - { 0.000000, 0.141176, 0.247059, 1.000000 }, - { 0.000000, 0.282353, 0.247059, 1.000000 }, - { 0.000000, 0.427451, 0.247059, 1.000000 }, - { 0.000000, 0.568627, 0.247059, 1.000000 }, - { 0.000000, 0.713726, 0.247059, 1.000000 }, - { 0.000000, 0.854902, 0.247059, 1.000000 }, - { 0.000000, 1.000000, 0.247059, 1.000000 }, - { 0.247059, 0.000000, 0.247059, 1.000000 }, - { 0.247059, 0.141176, 0.247059, 1.000000 }, - { 0.247059, 0.282353, 0.247059, 1.000000 }, - { 0.247059, 0.427451, 0.247059, 1.000000 }, - { 0.247059, 0.568627, 0.247059, 1.000000 }, - { 0.247059, 0.713726, 0.247059, 1.000000 }, - { 0.247059, 0.854902, 0.247059, 1.000000 }, - { 0.247059, 1.000000, 0.247059, 1.000000 }, - { 0.498039, 0.000000, 0.247059, 1.000000 }, - { 0.498039, 0.141176, 0.247059, 1.000000 }, - { 0.498039, 0.282353, 0.247059, 1.000000 }, - { 0.498039, 0.427451, 0.247059, 1.000000 }, - { 0.498039, 0.568627, 0.247059, 1.000000 }, - { 0.498039, 0.713726, 0.247059, 1.000000 }, - { 0.498039, 0.854902, 0.247059, 1.000000 }, - { 0.498039, 1.000000, 0.247059, 1.000000 }, - { 0.749020, 0.000000, 0.247059, 1.000000 }, - { 0.749020, 0.141176, 0.247059, 1.000000 }, - { 0.749020, 0.282353, 0.247059, 1.000000 }, - { 0.749020, 0.427451, 0.247059, 1.000000 }, - { 0.749020, 0.568627, 0.247059, 1.000000 }, - { 0.749020, 0.713726, 0.247059, 1.000000 }, - { 0.749020, 0.854902, 0.247059, 1.000000 }, - { 0.749020, 1.000000, 0.247059, 1.000000 }, - { 1.000000, 0.000000, 0.247059, 1.000000 }, - { 1.000000, 0.141176, 0.247059, 1.000000 }, - { 1.000000, 0.282353, 0.247059, 1.000000 }, - { 1.000000, 0.427451, 0.247059, 1.000000 }, - { 1.000000, 0.568627, 0.247059, 1.000000 }, - { 1.000000, 0.713726, 0.247059, 1.000000 }, - { 1.000000, 0.854902, 0.247059, 1.000000 }, - { 1.000000, 1.000000, 0.247059, 1.000000 }, - { 0.000000, 0.000000, 0.498039, 1.000000 }, - { 0.000000, 0.141176, 0.498039, 1.000000 }, - { 0.000000, 0.282353, 0.498039, 1.000000 }, - { 0.000000, 0.427451, 0.498039, 1.000000 }, - { 0.000000, 0.568627, 0.498039, 1.000000 }, - { 0.000000, 0.713726, 0.498039, 1.000000 }, - { 0.000000, 0.854902, 0.498039, 1.000000 }, - { 0.000000, 1.000000, 0.498039, 1.000000 }, - { 0.247059, 0.000000, 0.498039, 1.000000 }, - { 0.247059, 0.141176, 0.498039, 1.000000 }, - { 0.247059, 0.282353, 0.498039, 1.000000 }, - { 0.247059, 0.427451, 0.498039, 1.000000 }, - { 0.247059, 0.568627, 0.498039, 1.000000 }, - { 0.247059, 0.713726, 0.498039, 1.000000 }, - { 0.247059, 0.854902, 0.498039, 1.000000 }, - { 0.247059, 1.000000, 0.498039, 1.000000 }, - { 0.498039, 0.000000, 0.498039, 1.000000 }, - { 0.498039, 0.141176, 0.498039, 1.000000 }, - { 0.498039, 0.282353, 0.498039, 1.000000 }, - { 0.498039, 0.427451, 0.498039, 1.000000 }, - { 0.498039, 0.568627, 0.498039, 1.000000 }, - { 0.498039, 0.713726, 0.498039, 1.000000 }, - { 0.498039, 0.854902, 0.498039, 1.000000 }, - { 0.498039, 1.000000, 0.498039, 1.000000 }, - { 0.749020, 0.000000, 0.498039, 1.000000 }, - { 0.749020, 0.141176, 0.498039, 1.000000 }, - { 0.749020, 0.282353, 0.498039, 1.000000 }, - { 0.749020, 0.427451, 0.498039, 1.000000 }, - { 0.749020, 0.568627, 0.498039, 1.000000 }, - { 0.749020, 0.713726, 0.498039, 1.000000 }, - { 0.749020, 0.854902, 0.498039, 1.000000 }, - { 0.749020, 1.000000, 0.498039, 1.000000 }, - { 1.000000, 0.000000, 0.498039, 1.000000 }, - { 1.000000, 0.141176, 0.498039, 1.000000 }, - { 1.000000, 0.282353, 0.498039, 1.000000 }, - { 1.000000, 0.427451, 0.498039, 1.000000 }, - { 1.000000, 0.568627, 0.498039, 1.000000 }, - { 1.000000, 0.713726, 0.498039, 1.000000 }, - { 1.000000, 0.854902, 0.498039, 1.000000 }, - { 1.000000, 1.000000, 0.498039, 1.000000 }, - { 0.000000, 0.000000, 0.749020, 1.000000 }, - { 0.000000, 0.141176, 0.749020, 1.000000 }, - { 0.000000, 0.282353, 0.749020, 1.000000 }, - { 0.000000, 0.427451, 0.749020, 1.000000 }, - { 0.000000, 0.568627, 0.749020, 1.000000 }, - { 0.000000, 0.713726, 0.749020, 1.000000 }, - { 0.000000, 0.854902, 0.749020, 1.000000 }, - { 0.000000, 1.000000, 0.749020, 1.000000 }, - { 0.247059, 0.000000, 0.749020, 1.000000 }, - { 0.247059, 0.141176, 0.749020, 1.000000 }, - { 0.247059, 0.282353, 0.749020, 1.000000 }, - { 0.247059, 0.427451, 0.749020, 1.000000 }, - { 0.247059, 0.568627, 0.749020, 1.000000 }, - { 0.247059, 0.713726, 0.749020, 1.000000 }, - { 0.247059, 0.854902, 0.749020, 1.000000 }, - { 0.247059, 1.000000, 0.749020, 1.000000 }, - { 0.498039, 0.000000, 0.749020, 1.000000 }, - { 0.498039, 0.141176, 0.749020, 1.000000 }, - { 0.498039, 0.282353, 0.749020, 1.000000 }, - { 0.498039, 0.427451, 0.749020, 1.000000 }, - { 0.498039, 0.568627, 0.749020, 1.000000 }, - { 0.498039, 0.713726, 0.749020, 1.000000 }, - { 0.498039, 0.854902, 0.749020, 1.000000 }, - { 0.498039, 1.000000, 0.749020, 1.000000 }, - { 0.749020, 0.000000, 0.749020, 1.000000 }, - { 0.749020, 0.141176, 0.749020, 1.000000 }, - { 0.749020, 0.282353, 0.749020, 1.000000 }, - { 0.749020, 0.427451, 0.749020, 1.000000 }, - { 0.749020, 0.568627, 0.749020, 1.000000 }, - { 0.749020, 0.713726, 0.749020, 1.000000 }, - { 0.749020, 0.854902, 0.749020, 1.000000 }, - { 0.749020, 1.000000, 0.749020, 1.000000 }, - { 1.000000, 0.000000, 0.749020, 1.000000 }, - { 1.000000, 0.141176, 0.749020, 1.000000 }, - { 1.000000, 0.282353, 0.749020, 1.000000 }, - { 1.000000, 0.427451, 0.749020, 1.000000 }, - { 1.000000, 0.568627, 0.749020, 1.000000 }, - { 1.000000, 0.713726, 0.749020, 1.000000 }, - { 1.000000, 0.854902, 0.749020, 1.000000 }, - { 1.000000, 1.000000, 0.749020, 1.000000 }, - { 0.000000, 0.000000, 1.000000, 1.000000 }, - { 0.000000, 0.141176, 1.000000, 1.000000 }, - { 0.000000, 0.282353, 1.000000, 1.000000 }, - { 0.000000, 0.427451, 1.000000, 1.000000 }, - { 0.000000, 0.568627, 1.000000, 1.000000 }, - { 0.000000, 0.713726, 1.000000, 1.000000 }, - { 0.000000, 0.854902, 1.000000, 1.000000 }, - { 0.000000, 1.000000, 1.000000, 1.000000 }, - { 0.247059, 0.000000, 1.000000, 1.000000 }, - { 0.247059, 0.141176, 1.000000, 1.000000 }, - { 0.247059, 0.282353, 1.000000, 1.000000 }, - { 0.247059, 0.427451, 1.000000, 1.000000 }, - { 0.247059, 0.568627, 1.000000, 1.000000 }, - { 0.247059, 0.713726, 1.000000, 1.000000 }, - { 0.247059, 0.854902, 1.000000, 1.000000 }, - { 0.247059, 1.000000, 1.000000, 1.000000 }, - { 0.498039, 0.000000, 1.000000, 1.000000 }, - { 0.498039, 0.141176, 1.000000, 1.000000 }, - { 0.498039, 0.282353, 1.000000, 1.000000 }, - { 0.498039, 0.427451, 1.000000, 1.000000 }, - { 0.498039, 0.568627, 1.000000, 1.000000 }, - { 0.498039, 0.713726, 1.000000, 1.000000 }, - { 0.498039, 0.854902, 1.000000, 1.000000 }, - { 0.498039, 1.000000, 1.000000, 1.000000 }, - { 0.749020, 0.000000, 1.000000, 1.000000 }, - { 0.749020, 0.141176, 1.000000, 1.000000 }, - { 0.749020, 0.282353, 1.000000, 1.000000 }, - { 0.749020, 0.427451, 1.000000, 1.000000 }, - { 0.749020, 0.568627, 1.000000, 1.000000 }, - { 0.749020, 0.713726, 1.000000, 1.000000 }, - { 0.749020, 0.854902, 1.000000, 1.000000 }, - { 0.749020, 1.000000, 1.000000, 1.000000 }, - { 1.000000, 0.000000, 1.000000, 1.000000 }, - { 1.000000, 0.141176, 1.000000, 1.000000 }, - { 1.000000, 0.282353, 1.000000, 1.000000 }, - { 1.000000, 0.427451, 1.000000, 1.000000 }, - { 1.000000, 0.568627, 1.000000, 1.000000 }, - { 1.000000, 0.713726, 1.000000, 1.000000 }, - { 1.000000, 0.854902, 1.000000, 1.000000 }, - { 1.000000, 1.000000, 1.000000, 1.000000 } -}; diff --git a/lib/glut-3.7.6/progs/demos/yacme/invertmat.c b/lib/glut-3.7.6/progs/demos/yacme/invertmat.c deleted file mode 100644 index 8f984c60c40b656b214bf361e5711e159e0f4864..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/yacme/invertmat.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * matrix - - * Some utilities for working with matricies. - * - * Paul Haeberli - 1985 - */ -#include - -void -invertmat(float from[4][4], float to[4][4]) -{ - float wtemp[4][8]; - float m0,m1,m2,m3,s; - float *r0,*r1,*r2,*r3, *rtemp; - - r0 = wtemp[0]; - r1 = wtemp[1]; - r2 = wtemp[2]; - r3 = wtemp[3]; - r0[0] = from[0][0]; /* build up [A][I] */ - r0[1] = from[0][1]; - r0[2] = from[0][2]; - r0[3] = from[0][3]; - r0[4] = 1.0; - r0[5] = 0.0; - r0[6] = 0.0; - r0[7] = 0.0; - r1[0] = from[1][0]; - r1[1] = from[1][1]; - r1[2] = from[1][2]; - r1[3] = from[1][3]; - r1[4] = 0.0; - r1[5] = 1.0; - r1[6] = 0.0; - r1[7] = 0.0; - r2[0] = from[2][0]; - r2[1] = from[2][1]; - r2[2] = from[2][2]; - r2[3] = from[2][3]; - r2[4] = 0.0; - r2[5] = 0.0; - r2[6] = 1.0; - r2[7] = 0.0; - r3[0] = from[3][0]; - r3[1] = from[3][1]; - r3[2] = from[3][2]; - r3[3] = from[3][3]; - r3[4] = 0.0; - r3[5] = 0.0; - r3[6] = 0.0; - r3[7] = 1.0; - - if (r0[0] == 0.0) { /* swap rows if needed */ - if (r1[0] == 0.0) { - if (r2[0] == 0.0) { - if (r3[0] == 0.0) goto singular; - rtemp = r0; r0 = r3; r3 = rtemp; - } - else {rtemp = r0; r0 = r2; r2 = rtemp;} - } - else {rtemp = r0; r0 = r1; r1 = rtemp;} - } - m1 = r1[0]/r0[0]; /* eliminate first variable */ - m2 = r2[0]/r0[0]; - m3 = r3[0]/r0[0]; - s = r0[1]; - r1[1] = r1[1] - m1 * s; - r2[1] = r2[1] - m2 * s; - r3[1] = r3[1] - m3 * s; - s = r0[2]; - r1[2] = r1[2] - m1 * s; - r2[2] = r2[2] - m2 * s; - r3[2] = r3[2] - m3 * s; - s = r0[3]; - r1[3] = r1[3] - m1 * s; - r2[3] = r2[3] - m2 * s; - r3[3] = r3[3] - m3 * s; - s = r0[4]; - if (s != 0.0) { - r1[4] = r1[4] - m1 * s; - r2[4] = r2[4] - m2 * s; - r3[4] = r3[4] - m3 * s; - } - s = r0[5]; - if (s != 0.0) { - r1[5] = r1[5] - m1 * s; - r2[5] = r2[5] - m2 * s; - r3[5] = r3[5] - m3 * s; - } - s = r0[6]; - if (s != 0.0) { - r1[6] = r1[6] - m1 * s; - r2[6] = r2[6] - m2 * s; - r3[6] = r3[6] - m3 * s; - } - s = r0[7]; - if (s != 0.0) { - r1[7] = r1[7] - m1 * s; - r2[7] = r2[7] - m2 * s; - r3[7] = r3[7] - m3 * s; - } - - if (r1[1] == 0.0) { /* swap rows if needed */ - if (r2[1] == 0.0) { - if (r3[1] == 0.0) goto singular; - rtemp = r1; r1 = r3; r3 = rtemp; - } - else {rtemp = r1; r1 = r2; r2 = rtemp;} - } - m2 = r2[1]/r1[1]; /* eliminate second variable */ - m3 = r3[1]/r1[1]; - r2[2] = r2[2] - m2 * r1[2]; - r3[2] = r3[2] - m3 * r1[2]; - r3[3] = r3[3] - m3 * r1[3]; - r2[3] = r2[3] - m2 * r1[3]; - s = r1[4]; - if (s != 0.0) { - r2[4] = r2[4] - m2 * s; - r3[4] = r3[4] - m3 * s; - } - s = r1[5]; - if (s != 0.0) { - r2[5] = r2[5] - m2 * s; - r3[5] = r3[5] - m3 * s; - } - s = r1[6]; - if (s != 0.0) { - r2[6] = r2[6] - m2 * s; - r3[6] = r3[6] - m3 * s; - } - s = r1[7]; - if (s != 0.0) { - r2[7] = r2[7] - m2 * s; - r3[7] = r3[7] - m3 * s; - } - - if (r2[2] == 0.0) { /* swap last 2 rows if needed */ - if (r3[2] == 0.0) goto singular; - rtemp = r2; r2 = r3; r3 = rtemp; - } - m3 = r3[2]/r2[2]; /* eliminate third variable */ - r3[3] = r3[3] - m3 * r2[3]; - r3[4] = r3[4] - m3 * r2[4]; - r3[5] = r3[5] - m3 * r2[5]; - r3[6] = r3[6] - m3 * r2[6]; - r3[7] = r3[7] - m3 * r2[7]; - - if (r3[3] == 0.0) goto singular; - s = 1.0f/r3[3]; /* now back substitute row 3 */ - r3[4] = r3[4] * s; - r3[5] = r3[5] * s; - r3[6] = r3[6] * s; - r3[7] = r3[7] * s; - - m2 = r2[3]; /* now back substitute row 2 */ - s = 1.0f/r2[2]; - r2[4] = s * (r2[4] - r3[4] * m2); - r2[5] = s * (r2[5] - r3[5] * m2); - r2[6] = s * (r2[6] - r3[6] * m2); - r2[7] = s * (r2[7] - r3[7] * m2); - m1 = r1[3]; - r1[4] = (r1[4] - r3[4] * m1); - r1[5] = (r1[5] - r3[5] * m1); - r1[6] = (r1[6] - r3[6] * m1); - r1[7] = (r1[7] - r3[7] * m1); - m0 = r0[3]; - r0[4] = (r0[4] - r3[4] * m0); - r0[5] = (r0[5] - r3[5] * m0); - r0[6] = (r0[6] - r3[6] * m0); - r0[7] = (r0[7] - r3[7] * m0); - - m1 = r1[2]; /* now back substitute row 1 */ - s = 1.0f/r1[1]; - r1[4] = s * (r1[4] - r2[4] * m1); - r1[5] = s * (r1[5] - r2[5] * m1); - r1[6] = s * (r1[6] - r2[6] * m1); - r1[7] = s * (r1[7] - r2[7] * m1); - m0 = r0[2]; - r0[4] = (r0[4] - r2[4] * m0); - r0[5] = (r0[5] - r2[5] * m0); - r0[6] = (r0[6] - r2[6] * m0); - r0[7] = (r0[7] - r2[7] * m0); - - m0 = r0[1]; /* now back substitute row 0 */ - s = 1.0f/r0[0]; - r0[4] = s * (r0[4] - r1[4] * m0); - r0[5] = s * (r0[5] - r1[5] * m0); - r0[6] = s * (r0[6] - r1[6] * m0); - r0[7] = s * (r0[7] - r1[7] * m0); - - to[0][0] = r0[4]; /* copy results back */ - to[0][1] = r0[5]; - to[0][2] = r0[6]; - to[0][3] = r0[7]; - to[1][0] = r1[4]; - to[1][1] = r1[5]; - to[1][2] = r1[6]; - to[1][3] = r1[7]; - to[2][0] = r2[4]; - to[2][1] = r2[5]; - to[2][2] = r2[6]; - to[2][3] = r2[7]; - to[3][0] = r3[4]; - to[3][1] = r3[5]; - to[3][2] = r3[6]; - to[3][3] = r3[7]; - return; - -singular: - fprintf(stderr,"invertmat: singular matrix\n"); - return; -} diff --git a/lib/glut-3.7.6/progs/demos/yacme/mallocbis.h b/lib/glut-3.7.6/progs/demos/yacme/mallocbis.h deleted file mode 100644 index 6106e71dd164ac49fc560a7c836788e05920f94b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/yacme/mallocbis.h +++ /dev/null @@ -1,13 +0,0 @@ - -#define newItem(item,list,type)\ - if (list == NULL)\ - item = (type *) malloc(sizeof(type));\ - else\ - {\ - item = list;\ - list = list->next;\ - } - -#define freeItem(item,list)\ - item->next = list;\ - list = item; diff --git a/lib/glut-3.7.6/progs/demos/yacme/yacme.dsp b/lib/glut-3.7.6/progs/demos/yacme/yacme.dsp deleted file mode 100644 index 1b7dcf1f8176c9110169e19f9dfa68683fe65213..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/demos/yacme/yacme.dsp +++ /dev/null @@ -1,100 +0,0 @@ -# Microsoft Developer Studio Project File - Name="yacme" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=yacme - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "yacme.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "yacme.mak" CFG="yacme - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "yacme - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "yacme - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "yacme - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YACME_DBG" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "yacme - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "YACME_DBG" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "yacme - Win32 Release" -# Name "yacme - Win32 Debug" -# Begin Source File - -SOURCE=.\Editor.c -# End Source File -# Begin Source File - -SOURCE=.\invertmat.c -# End Source File -# Begin Source File - -SOURCE=.\mallocbis.h -# End Source File -# Begin Source File - -SOURCE=.\RGBA.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples.dsw b/lib/glut-3.7.6/progs/examples.dsw deleted file mode 100644 index b8b4638ef1a7b14647def79447b5fc3318ae9d14..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples.dsw +++ /dev/null @@ -1,839 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\examples\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name abgr - End Project Dependency - Begin Project Dependency - Project_Dep_Name bitfont - End Project Dependency - Begin Project Dependency - Project_Dep_Name blender - End Project Dependency - Begin Project Dependency - Project_Dep_Name circlefit - End Project Dependency - Begin Project Dependency - Project_Dep_Name cube - End Project Dependency - Begin Project Dependency - Project_Dep_Name dials - End Project Dependency - Begin Project Dependency - Project_Dep_Name dials2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name dinoball - End Project Dependency - Begin Project Dependency - Project_Dep_Name dinodraw - End Project Dependency - Begin Project Dependency - Project_Dep_Name dinoshade - End Project Dependency - Begin Project Dependency - Project_Dep_Name dinospin - End Project Dependency - Begin Project Dependency - Project_Dep_Name editgrid - End Project Dependency - Begin Project Dependency - Project_Dep_Name evaltest - End Project Dependency - Begin Project Dependency - Project_Dep_Name fogtst - End Project Dependency - Begin Project Dependency - Project_Dep_Name fontdemo - End Project Dependency - Begin Project Dependency - Project_Dep_Name glpuzzle - End Project Dependency - Begin Project Dependency - Project_Dep_Name glutdino - End Project Dependency - Begin Project Dependency - Project_Dep_Name glutplane - End Project Dependency - Begin Project Dependency - Project_Dep_Name halomagic - End Project Dependency - Begin Project Dependency - Project_Dep_Name highlight - End Project Dependency - Begin Project Dependency - Project_Dep_Name lightlab - End Project Dependency - Begin Project Dependency - Project_Dep_Name luminance16 - End Project Dependency - Begin Project Dependency - Project_Dep_Name mjksift - End Project Dependency - Begin Project Dependency - Project_Dep_Name mjkwarp - End Project Dependency - Begin Project Dependency - Project_Dep_Name molehill - End Project Dependency - Begin Project Dependency - Project_Dep_Name movelight - End Project Dependency - Begin Project Dependency - Project_Dep_Name oclip - End Project Dependency - Begin Project Dependency - Project_Dep_Name ohidden - End Project Dependency - Begin Project Dependency - Project_Dep_Name olight - End Project Dependency - Begin Project Dependency - Project_Dep_Name olympic - End Project Dependency - Begin Project Dependency - Project_Dep_Name origami - End Project Dependency - Begin Project Dependency - Project_Dep_Name oversphere - End Project Dependency - Begin Project Dependency - Project_Dep_Name reflectdino - End Project Dependency - Begin Project Dependency - Project_Dep_Name rendereps - End Project Dependency - Begin Project Dependency - Project_Dep_Name resolution - End Project Dependency - Begin Project Dependency - Project_Dep_Name sb2db - End Project Dependency - Begin Project Dependency - Project_Dep_Name scene - End Project Dependency - Begin Project Dependency - Project_Dep_Name screendoor - End Project Dependency - Begin Project Dependency - Project_Dep_Name scube - End Project Dependency - Begin Project Dependency - Project_Dep_Name simple - End Project Dependency - Begin Project Dependency - Project_Dep_Name sphere - End Project Dependency - Begin Project Dependency - Project_Dep_Name sphere2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name splatlogo - End Project Dependency - Begin Project Dependency - Project_Dep_Name spots - End Project Dependency - Begin Project Dependency - Project_Dep_Name stars - End Project Dependency - Begin Project Dependency - Project_Dep_Name stenciltst - End Project Dependency - Begin Project Dependency - Project_Dep_Name stereo - End Project Dependency - Begin Project Dependency - Project_Dep_Name stroke - End Project Dependency - Begin Project Dependency - Project_Dep_Name subwin - End Project Dependency - Begin Project Dependency - Project_Dep_Name surfgrid - End Project Dependency - Begin Project Dependency - Project_Dep_Name texenv - End Project Dependency - Begin Project Dependency - Project_Dep_Name trippy - End Project Dependency - Begin Project Dependency - Project_Dep_Name triselect - End Project Dependency - Begin Project Dependency - Project_Dep_Name zoomdino - End Project Dependency -}}} - -############################################################################### - -Project: "abgr"=".\examples\abgr.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "bitfont"=".\examples\bitfont.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "blender"=".\examples\blender.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "circlefit"=".\examples\circlefit.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "cube"=".\examples\cube.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dials"=".\examples\dials.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dials2"=".\examples\dials2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dinoball"=".\examples\dinoball.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dinodraw"=".\examples\dinodraw.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dinoshade"=".\examples\dinoshade.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dinospin"=".\examples\dinospin.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "editgrid"=".\examples\editgrid.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "evaltest"=".\examples\evaltest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "fogtst"=".\examples\fogtst.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "fontdemo"=".\examples\fontdemo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glpuzzle"=".\examples\glpuzzle.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glutdino"=".\examples\glutdino.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glutplane"=".\examples\glutplane.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "halomagic"=".\examples\halomagic.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "highlight"=".\examples\highlight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "lightlab"=".\examples\lightlab.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "luminance16"=".\examples\luminance16.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mjksift"=".\examples\mjksift.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mjkwarp"=".\examples\mjkwarp.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "molehill"=".\examples\molehill.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "movelight"=".\examples\movelight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "oclip"=".\examples\oclip.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "ohidden"=".\examples\ohidden.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "olight"=".\examples\olight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "olympic"=".\examples\olympic.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "origami"=".\examples\origami.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "oversphere"=".\examples\oversphere.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "reflectdino"=".\examples\reflectdino.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "rendereps"=".\examples\rendereps.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "resolution"=".\examples\resolution.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sb2db"=".\examples\sb2db.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "scene"=".\examples\scene.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "screendoor"=".\examples\screendoor.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "scube"=".\examples\scube.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "simple"=".\examples\simple.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sphere"=".\examples\sphere.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sphere2"=".\examples\sphere2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "splatlogo"=".\examples\splatlogo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "spots"=".\examples\spots.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "stars"=".\examples\stars.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "stenciltst"=".\examples\stenciltst.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "stereo"=".\examples\stereo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "stroke"=".\examples\stroke.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "subwin"=".\examples\subwin.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "surfgrid"=".\examples\surfgrid.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texenv"=".\examples\texenv.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "trippy"=".\examples\trippy.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "triselect"=".\examples\triselect.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "zoomdino"=".\examples\zoomdino.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/examples/Imakefile b/lib/glut-3.7.6/progs/examples/Imakefile deleted file mode 100644 index d8b2cde74456ab0417c544485635761b9482ff80..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/Imakefile +++ /dev/null @@ -1,105 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../Glut.cf" - -TARGETS = sphere scene movelight glutplane \ - stroke olympic glutdino dinospin \ - mjkwarp highlight subwin origami sphere2 lightlab \ - bitfont dinoball glpuzzle blender dials stereo \ - oclip ohidden olight scube spots \ - abgr stars stenciltst surfgrid texenv triselect fogtst dials2 \ - molehill zoomdino splatlogo oversphere fontdemo evaltest sb2db \ - screendoor simple cube reflectdino rendereps dinoshade halomagic \ - trippy mjksift circlefit editgrid dinodraw resolution - -SRCS = bitfont.c blender.c dials.c dinoball.c dinospin.c glpuzzle.c \ - glutdino.c glutplane.c highlight.c lightlab.c mjkwarp.c movelight.c \ - oclip.c ohidden.c olight.c olympic.c origami.c scene.c scube.c sphere.c \ - sphere2.c spots.c stereo.c stroke.c subwin.c trackball.c \ - abgr.c stars.c stenciltst.c surfgrid.c texenv.c triselect.c fogtst.c dials2.c \ - molehill.c splatlogo.c oversphere.c fontdemo.c evaltest.c sb2db.c \ - screendoor.c simple.c cube.c reflectdino.c rendereps.c dinoshade.c \ - halomagic.c trippy.c mjksift.c circlefit.c editgrid.c dinodraw.c \ - resolution.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(abgr) -SimpleGlutProgramTarget(bitfont) -SimpleGlutProgramTarget(blender) -SimpleGlutProgramTarget(circlefit) -SimpleGlutProgramTarget(cube) -SimpleGlutProgramTarget(dials) -SimpleGlutProgramTarget(dials2) -SimpleGlutProgramTarget(dinoball) -SimpleGlutProgramTarget(dinoshade) -SimpleGlutProgramTarget(editgrid) -SimpleGlutProgramTarget(evaltest) -SimpleGlutProgramTarget(fontdemo) -SimpleGlutProgramTarget(fogtst) -SimpleGlutProgramTarget(glutdino) -SimpleGlutProgramTarget(glutplane) -SimpleGlutProgramTarget(halomagic) -SimpleGlutProgramTarget(highlight) -SimpleGlutProgramTarget(lightlab) -SimpleGlutProgramTarget(molehill) -SimpleGlutProgramTarget(movelight) -SimpleGlutProgramTarget(oclip) -SimpleGlutProgramTarget(ohidden) -SimpleGlutProgramTarget(olight) -SimpleGlutProgramTarget(olympic) -SimpleGlutProgramTarget(origami) -SimpleGlutProgramTarget(oversphere) -SimpleGlutProgramTarget(reflectdino) -SimpleGlutProgramTarget(rendereps) -SimpleGlutProgramTarget(resolution) -SimpleGlutProgramTarget(sb2db) -SimpleGlutProgramTarget(scene) -SimpleGlutProgramTarget(screendoor) -SimpleGlutProgramTarget(scube) -SimpleGlutProgramTarget(simple) -SimpleGlutProgramTarget(sphere) -SimpleGlutProgramTarget(sphere2) -SimpleGlutProgramTarget(spots) -SimpleGlutProgramTarget(stars) -SimpleGlutProgramTarget(stenciltst) -SimpleGlutProgramTarget(stereo) -SimpleGlutProgramTarget(stroke) -SimpleGlutProgramTarget(subwin) -SimpleGlutProgramTarget(surfgrid) -SimpleGlutProgramTarget(teapots) -SimpleGlutProgramTarget(texenv) -SimpleGlutProgramTarget(trippy) -SimpleGlutProgramTarget(triselect) -SimpleGlutProgramTarget(zoomdino) - -NormalGlutProgramTarget(dinodraw,dinodraw.o trackball.o) -NormalGlutProgramTarget(dinospin,dinospin.o trackball.o) -NormalGlutProgramTarget(glpuzzle,glpuzzle.o trackball.o) -NormalGlutProgramTarget(splatlogo,splatlogo.o logo.o) -NormalGlutProgramTarget(mjkwarp,mjkwarp.o mjkimage.o) -NormalGlutProgramTarget(mjksift,mjksift.o mjkimage.o) - -logo.o : logo.c.Z - $(RM) $@ - zcat logo.c.Z > logo.c - $(CC) -c $(CFLAGS) logo.c - $(RM) logo.c - -logo.c.Z : - test -e $@ || gzip -c logo.c > $@ - -mjkimage.o : mjkimage.c.Z - $(RM) $@ - zcat mjkimage.c.Z > mjkimage.c - $(CC) -c $(CFLAGS) mjkimage.c - $(RM) mjkimage.c - -mjkimage.c.Z : - test -e $@ || gzip -c mjkimage.c > $@ - -clean:: - $(RM) render.eps - -DependTarget() diff --git a/lib/glut-3.7.6/progs/examples/_all.dsp b/lib/glut-3.7.6/progs/examples/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/abgr.c b/lib/glut-3.7.6/progs/examples/abgr.c deleted file mode 100644 index 476bf01e893bcd219b42623a26e3007748a19dd6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/abgr.c +++ /dev/null @@ -1,217 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -/* abgr.c - Demonstrates the use of the extension EXT_abgr. - - The same image data is used for both ABGR and RGBA formats - in glDrawPixels and glTexImage2D. The left side uses ABGR, - the right side RGBA. The top polygon demonstrates use of texture, - and the bottom image is drawn with glDrawPixels. - - Note that the textures are defined as 3 component, so the alpha - value is not used in applying the DECAL environment. */ - -#include -#include -#include -#include - -GLenum doubleBuffer; -GLubyte ubImage[65536]; - -static void -Init(void) -{ - int j; - GLubyte *img; - GLsizei imgWidth = 128; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0, 0.1, 1000.0); - glMatrixMode(GL_MODELVIEW); - glDisable(GL_DITHER); - - /* Create image */ - img = ubImage; - for (j = 0; j < 32 * imgWidth; j++) { - *img++ = 0xff; - *img++ = 0x00; - *img++ = 0x00; - *img++ = 0xff; - } - for (j = 0; j < 32 * imgWidth; j++) { - *img++ = 0xff; - *img++ = 0x00; - *img++ = 0xff; - *img++ = 0x00; - } - for (j = 0; j < 32 * imgWidth; j++) { - *img++ = 0xff; - *img++ = 0xff; - *img++ = 0x00; - *img++ = 0x00; - } - for (j = 0; j < 32 * imgWidth; j++) { - *img++ = 0x00; - *img++ = 0xff; - *img++ = 0x00; - *img++ = 0xff; - } -} - -/* ARGSUSED1 */ -static void -Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - } -} - -void -TexFunc(void) -{ - glEnable(GL_TEXTURE_2D); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - -#if GL_EXT_abgr - glTexImage2D(GL_TEXTURE_2D, 0, 3, 128, 128, 0, GL_ABGR_EXT, - GL_UNSIGNED_BYTE, ubImage); - - glBegin(GL_POLYGON); - glTexCoord2f(1.0, 1.0); - glVertex3f(-0.2, 0.8, -100.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(-0.8, 0.8, -2.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(-0.8, 0.2, -2.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(-0.2, 0.2, -100.0); - glEnd(); -#endif - - glTexImage2D(GL_TEXTURE_2D, 0, 3, 128, 128, 0, GL_RGBA, - GL_UNSIGNED_BYTE, ubImage); - - glBegin(GL_POLYGON); - glTexCoord2f(1.0, 1.0); - glVertex3f(0.8, 0.8, -2.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(0.2, 0.8, -100.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(0.2, 0.2, -100.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(0.8, 0.2, -2.0); - glEnd(); - - glDisable(GL_TEXTURE_2D); -} - -static void -Draw(void) -{ - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - -#if GL_EXT_abgr - glRasterPos3f(-0.8, -0.8, -1.5); - glDrawPixels(128, 128, GL_ABGR_EXT, GL_UNSIGNED_BYTE, ubImage); -#endif - - glRasterPos3f(0.2, -0.8, -1.5); - glDrawPixels(128, 128, GL_RGBA, GL_UNSIGNED_BYTE, ubImage); - - TexFunc(); - - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -static void -Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_TRUE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } - } -} - -int -main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - Args(argc, argv); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - glutCreateWindow("ABGR extension"); - if (!glutExtensionSupported("GL_EXT_abgr")) { - printf("Couldn't find abgr extension.\n"); - exit(0); - } -#if !GL_EXT_abgr - printf("WARNING: client-side OpenGL has no ABGR extension support!\n"); - printf(" Drawing only RGBA (and not ABGR) images and textures.\n"); -#endif - Init(); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/abgr.dsp b/lib/glut-3.7.6/progs/examples/abgr.dsp deleted file mode 100644 index f2abc4ff9efa560b07e4bcc5216c05b0715cf4ca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/abgr.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="abgr" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=abgr - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "abgr.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "abgr.mak" CFG="abgr - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "abgr - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "abgr - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "abgr - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "abgr - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "abgr - Win32 Release" -# Name "abgr - Win32 Debug" -# Begin Source File - -SOURCE=.\abgr.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/bitfont.c b/lib/glut-3.7.6/progs/examples/bitfont.c deleted file mode 100644 index c198ca4a1e5405cb5d5f6cc1dfb1090283610a25..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/bitfont.c +++ /dev/null @@ -1,130 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -void *font = GLUT_BITMAP_TIMES_ROMAN_24; -void *fonts[] = -{ - GLUT_BITMAP_9_BY_15, - GLUT_BITMAP_TIMES_ROMAN_10, - GLUT_BITMAP_TIMES_ROMAN_24 -}; -char defaultMessage[] = "GLUT means OpenGL."; -char *message = defaultMessage; - -void -selectFont(int newfont) -{ - font = fonts[newfont]; - glutPostRedisplay(); -} - -void -selectMessage(int msg) -{ - switch (msg) { - case 1: - message = "abcdefghijklmnop"; - break; - case 2: - message = "ABCDEFGHIJKLMNOP"; - break; - } -} - -void -selectColor(int color) -{ - switch (color) { - case 1: - glColor3f(0.0, 1.0, 0.0); - break; - case 2: - glColor3f(1.0, 0.0, 0.0); - break; - case 3: - glColor3f(1.0, 1.0, 1.0); - break; - } - glutPostRedisplay(); -} - -void -tick(void) -{ - glutPostRedisplay(); -} - -void -output(int x, int y, char *string) -{ - int len, i; - - glRasterPos2f(x, y); - len = (int) strlen(string); - for (i = 0; i < len; i++) { - glutBitmapCharacter(font, string[i]); - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - output(0, 24, "This is written in a GLUT bitmap font."); - output(100, 100, message); - output(50, 145, "(positioned in pixels with upper-left origin)"); - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, h, 0); - glMatrixMode(GL_MODELVIEW); -} - -int -main(int argc, char **argv) -{ - int i, msg_submenu, color_submenu; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-mono")) { - font = GLUT_BITMAP_9_BY_15; - } - } - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize(500, 150); - glutCreateWindow("GLUT bitmap font example"); - glClearColor(0.0, 0.0, 0.0, 1.0); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutIdleFunc(tick); - msg_submenu = glutCreateMenu(selectMessage); - glutAddMenuEntry("abc", 1); - glutAddMenuEntry("ABC", 2); - color_submenu = glutCreateMenu(selectColor); - glutAddMenuEntry("Green", 1); - glutAddMenuEntry("Red", 2); - glutAddMenuEntry("White", 3); - glutCreateMenu(selectFont); - glutAddMenuEntry("9 by 15", 0); - glutAddMenuEntry("Times Roman 10", 1); - glutAddMenuEntry("Times Roman 24", 2); - glutAddSubMenu("Messages", msg_submenu); - glutAddSubMenu("Color", color_submenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/bitfont.dsp b/lib/glut-3.7.6/progs/examples/bitfont.dsp deleted file mode 100644 index f9188235801f3d8ec44c00c59563338889d9e38a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/bitfont.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bitfont" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bitfont - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bitfont.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bitfont.mak" CFG="bitfont - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bitfont - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bitfont - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bitfont - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bitfont - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bitfont - Win32 Release" -# Name "bitfont - Win32 Debug" -# Begin Source File - -SOURCE=.\bitfont.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/blender.c b/lib/glut-3.7.6/progs/examples/blender.c deleted file mode 100644 index e9bbca1428c922825dd8f3559c8768f99696f167..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/blender.c +++ /dev/null @@ -1,161 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* blender renders two spinning icosahedrons (red and green). - The blending factors for the two icosahedrons vary sinusoidally - and slightly out of phase. blender also renders two lines of - text in a stroke font: one line antialiased, the other not. */ - -#include -#include -#include - -GLfloat light0_ambient[] = -{0.2, 0.2, 0.2, 1.0}; -GLfloat light0_diffuse[] = -{0.0, 0.0, 0.0, 1.0}; -GLfloat light1_diffuse[] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat light1_position[] = -{1.0, 1.0, 1.0, 0.0}; -GLfloat light2_diffuse[] = -{0.0, 1.0, 0.0, 1.0}; -GLfloat light2_position[] = -{-1.0, -1.0, 1.0, 0.0}; -float s = 0.0; -GLfloat angle1 = 0.0, angle2 = 0.0; - -void -output(GLfloat x, GLfloat y, char *text) -{ - char *p; - - glPushMatrix(); - glTranslatef(x, y, 0); - for (p = text; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - glPopMatrix(); -} - -void -display(void) -{ - static GLfloat amb[] = - {0.4, 0.4, 0.4, 0.0}; - static GLfloat dif[] = - {1.0, 1.0, 1.0, 0.0}; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_LIGHT1); - glDisable(GL_LIGHT2); - amb[3] = dif[3] = cos(s) / 2.0 + 0.5; - glMaterialfv(GL_FRONT, GL_AMBIENT, amb); - glMaterialfv(GL_FRONT, GL_DIFFUSE, dif); - - glPushMatrix(); - glTranslatef(-0.3, -0.3, 0.0); - glRotatef(angle1, 1.0, 5.0, 0.0); - glCallList(1); /* render ico display list */ - glPopMatrix(); - - glClear(GL_DEPTH_BUFFER_BIT); - glEnable(GL_LIGHT2); - glDisable(GL_LIGHT1); - amb[3] = dif[3] = 0.5 - cos(s * .95) / 2.0; - glMaterialfv(GL_FRONT, GL_AMBIENT, amb); - glMaterialfv(GL_FRONT, GL_DIFFUSE, dif); - - glPushMatrix(); - glTranslatef(0.3, 0.3, 0.0); - glRotatef(angle2, 1.0, 0.0, 5.0); - glCallList(1); /* render ico display list */ - glPopMatrix(); - - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, 1500, 0, 1500); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - /* Rotate text slightly to help show jaggies. */ - glRotatef(4, 0.0, 0.0, 1.0); - output(200, 225, "This is antialiased."); - glDisable(GL_LINE_SMOOTH); - glDisable(GL_BLEND); - output(160, 100, "This text is not."); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glPopAttrib(); - glMatrixMode(GL_MODELVIEW); - - glutSwapBuffers(); -} - -void -idle(void) -{ - angle1 = (GLfloat) fmod(angle1 + 0.8, 360.0); - angle2 = (GLfloat) fmod(angle2 + 1.1, 360.0); - s += 0.05; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("blender"); - glutDisplayFunc(display); - glutVisibilityFunc(visible); - - glNewList(1, GL_COMPILE); /* create ico display list */ - glutSolidIcosahedron(); - glEndList(); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); - glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse); - glLightfv(GL_LIGHT1, GL_POSITION, light1_position); - glLightfv(GL_LIGHT2, GL_DIFFUSE, light2_diffuse); - glLightfv(GL_LIGHT2, GL_POSITION, light2_position); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_LINE_SMOOTH); - glLineWidth(2.0); - - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glTranslatef(0.0, 0.6, -1.0); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/blender.dsp b/lib/glut-3.7.6/progs/examples/blender.dsp deleted file mode 100644 index 4d3bfcf68d5859bb00245204ee286e88d1175407..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/blender.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="blender" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=blender - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "blender.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "blender.mak" CFG="blender - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "blender - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "blender - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "blender - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "blender - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "blender - Win32 Release" -# Name "blender - Win32 Debug" -# Begin Source File - -SOURCE=.\blender.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/circlefit.c b/lib/glut-3.7.6/progs/examples/circlefit.c deleted file mode 100644 index e6fa8050ec439769bc72a15c9f1c32e28933c1c2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/circlefit.c +++ /dev/null @@ -1,277 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This is a small interactive demo of Dave Eberly's algorithm - that fits a circle boundary to a set of 2D points. */ - -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -typedef struct { - double x, y; -} Point2; - -/**************************************************************************** - Least squares fit of circle to set of points. - by Dave Eberly (eberly@cs.unc.edu or eberly@ndl.com) - ftp://ftp.cs.unc.edu/pub/users/eberly/magic/circfit.c - --------------------------------------------------------------------------- - Input: (x_i,y_i), 1 <= i <= N, where N >= 3 and not all points - are collinear - Output: circle center (a,b) and radius r - - Energy function to be minimized is - - E(a,b,r) = sum_{i=1}^N (L_i-r)^2 - - where L_i = |(x_i-a,y_i-b)|, the length of the specified vector. - Taking partial derivatives and setting equal to zero yield the - three nonlinear equations - - E_r = 0: r = Average(L_i) - E_a = 0: a = Average(x_i) + r * Average(dL_i/da) - E_b = 0: b = Average(y_i) + r * Average(dL_i/db) - - Replacing r in the last two equations yields - - a = Average(x_i) + Average(L_i) * Average(dL_i/da) = F(a,b) - b = Average(y_i) + Average(L_i) * Average(dL_i/db) = G(a,b) - - which can possibly be solved by fixed point iteration as - - a_{n+1} = F(a_n,b_n), b_{n+a} = G(a_n,b_n) - - with initial guess a_0 = Average(x_i) and b_0 = Average(y_i). - Derivative calculations show that - - dL_i/da = (a-x_i)/L_i, dL_i/db = (b-y_i)/L_i. - - --------------------------------------------------------------------------- - WARNING. I have not analyzed the convergence properties of the fixed - point iteration scheme. In a few experiments it seems to converge - just fine, but I do not guarantee convergence in all cases. - ****************************************************************************/ - -int -CircleFit(int N, Point2 * P, double *pa, double *pb, double *pr) -{ - /* user-selected parameters */ - const int maxIterations = 256; - const double tolerance = 1e-06; - - double a, b, r; - - /* compute the average of the data points */ - int i, j; - double xAvr = 0.0; - double yAvr = 0.0; - - for (i = 0; i < N; i++) { - xAvr += P[i].x; - yAvr += P[i].y; - } - xAvr /= N; - yAvr /= N; - - /* initial guess */ - a = xAvr; - b = yAvr; - - for (j = 0; j < maxIterations; j++) { - /* update the iterates */ - double a0 = a; - double b0 = b; - - /* compute average L, dL/da, dL/db */ - double LAvr = 0.0; - double LaAvr = 0.0; - double LbAvr = 0.0; - - for (i = 0; i < N; i++) { - double dx = P[i].x - a; - double dy = P[i].y - b; - double L = sqrt(dx * dx + dy * dy); - if (fabs(L) > tolerance) { - LAvr += L; - LaAvr -= dx / L; - LbAvr -= dy / L; - } - } - LAvr /= N; - LaAvr /= N; - LbAvr /= N; - - a = xAvr + LAvr * LaAvr; - b = yAvr + LAvr * LbAvr; - r = LAvr; - - if (fabs(a - a0) <= tolerance && fabs(b - b0) <= tolerance) - break; - } - - *pa = a; - *pb = b; - *pr = r; - - return (j < maxIterations ? j : -1); -} - -enum { - M_SHOW_CIRCLE, M_CIRCLE_INFO, M_RESET_POINTS, M_QUIT -}; - -#define MAX_POINTS 100 - -int num = 0; -Point2 list[MAX_POINTS]; -int circleFitNeedsRecalc = 0; -int showCircle = 1; -int circleInfo = 0; -int windowHeight; -double a, b, r = 0.0; /* X, Y, and radius of best fit circle. - */ - -void -drawCircle(float x, float y, float r) -{ - double angle; - - glPushMatrix(); - glTranslatef(x, y, 0); - glBegin(GL_TRIANGLE_FAN); - glVertex2f(0, 0); - for (angle = 0.0; angle <= 2 * M_PI; angle += M_PI / 24) { - glVertex2f(r * cos(angle), r * sin(angle)); - } - glEnd(); - glPopMatrix(); -} - -void -display(void) -{ - int i; - - if (circleFitNeedsRecalc) { - int rc; - - rc = CircleFit(num, list, &a, &b, &r); - if (rc == -1) { - fprintf(stderr, "circlefit: Problem fitting points to a circle encountered.\n"); - } else { - if (circleInfo) { - printf("%g @ (%g,%g)\n", r, a, b); - } - } - circleFitNeedsRecalc = 0; - } - glClear(GL_COLOR_BUFFER_BIT); - - if (showCircle && r > 0.0) { - glColor3ub(0xbb, 0xbb, 0xdd); - drawCircle(a, b, r); - } - glColor3ub(0, 100, 0); - glBegin(GL_POINTS); - for (i = 0; i < num; i++) { - glVertex2d(list[i].x, list[i].y); - } - glEnd(); - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glMatrixMode(GL_MODELVIEW); - windowHeight = h; -} - -void -addPoint(double x, double y) -{ - if (num + 1 >= MAX_POINTS) { - fprintf(stderr, "circlefit: limited to only %d points\n", MAX_POINTS); - return; - } - list[num].x = x; - list[num].y = y; - num++; - circleFitNeedsRecalc = 1; - glutPostRedisplay(); -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - addPoint(x, windowHeight - y); - } -} - -void -menu(int value) -{ - switch (value) { - case M_SHOW_CIRCLE: - showCircle = !showCircle; - break; - case M_CIRCLE_INFO: - circleInfo = !circleInfo; - break; - case M_RESET_POINTS: - num = 0; - r = 0.0; - break; - case M_QUIT: - exit(0); - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(400, 400); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("Least squares fit of circle to set of points"); - - printf("\n"); - printf("Least squares fit of circle to set of points\n"); - printf("--------------------------------------------\n"); - printf("Click left mouse button to position points. The\n"); - printf("program then shows the circle whose boundary best\n"); - printf("fits the set of points specified. Try clicking\n"); - printf("points in a near circle.\n"); - printf("\n"); - - glClearColor(125.0 / 256.0, 158.0 / 256.0, 192.0 / 256.0, 1.0); - glPointSize(3.0); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutDisplayFunc(display); - glutCreateMenu(menu); - glutAddMenuEntry("Show/hide circle", M_SHOW_CIRCLE); - glutAddMenuEntry("Toggle info printing", M_CIRCLE_INFO); - glutAddMenuEntry("Reset points", M_RESET_POINTS); - glutAddMenuEntry("Quit", M_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/circlefit.dsp b/lib/glut-3.7.6/progs/examples/circlefit.dsp deleted file mode 100644 index d087f8d4874f7c33b238fcfd3b91e750dc7cd7b3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/circlefit.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="circlefit" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=circlefit - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "circlefit.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "circlefit.mak" CFG="circlefit - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "circlefit - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "circlefit - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "circlefit - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "circlefit - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "circlefit - Win32 Release" -# Name "circlefit - Win32 Debug" -# Begin Source File - -SOURCE=.\circlefit.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/cube.c b/lib/glut-3.7.6/progs/examples/cube.c deleted file mode 100644 index 80ec44f1d8f8fee8a5d4549e2e77d8759acfdbdb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/cube.c +++ /dev/null @@ -1,93 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This program was requested by Patrick Earl; hopefully someone else - will write the equivalent Direct3D immediate mode program. */ - -#include - -GLfloat light_diffuse[] = {1.0, 0.0, 0.0, 1.0}; /* Red diffuse light. */ -GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0}; /* Infinite light location. */ -GLfloat n[6][3] = { /* Normals for the 6 faces of a cube. */ - {-1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {1.0, 0.0, 0.0}, - {0.0, -1.0, 0.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0} }; -GLint faces[6][4] = { /* Vertex indices for the 6 faces of a cube. */ - {0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4}, - {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3} }; -GLfloat v[8][3]; /* Will be filled in with X,Y,Z vertexes. */ - -void -drawBox(void) -{ - int i; - - for (i = 0; i < 6; i++) { - glBegin(GL_QUADS); - glNormal3fv(&n[i][0]); - glVertex3fv(&v[faces[i][0]][0]); - glVertex3fv(&v[faces[i][1]][0]); - glVertex3fv(&v[faces[i][2]][0]); - glVertex3fv(&v[faces[i][3]][0]); - glEnd(); - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - drawBox(); - glutSwapBuffers(); -} - -void -init(void) -{ - /* Setup cube vertex data. */ - v[0][0] = v[1][0] = v[2][0] = v[3][0] = -1; - v[4][0] = v[5][0] = v[6][0] = v[7][0] = 1; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = -1; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = 1; - v[0][2] = v[3][2] = v[4][2] = v[7][2] = 1; - v[1][2] = v[2][2] = v[5][2] = v[6][2] = -1; - - /* Enable a single OpenGL light. */ - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); - - /* Use depth buffering for hidden surface elimination. */ - glEnable(GL_DEPTH_TEST); - - /* Setup the view of the cube. */ - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - - /* Adjust cube position to be asthetic angle. */ - glTranslatef(0.0, 0.0, -1.0); - glRotatef(60, 1.0, 0.0, 0.0); - glRotatef(-20, 0.0, 0.0, 1.0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("red 3D lighted cube"); - glutDisplayFunc(display); - init(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/cube.dsp b/lib/glut-3.7.6/progs/examples/cube.dsp deleted file mode 100644 index 9cfb01bd143171cf1ca023f7064cebe8c1e11ac2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/cube.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cube" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cube - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cube.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cube.mak" CFG="cube - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cube - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cube - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cube - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cube - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cube - Win32 Release" -# Name "cube - Win32 Debug" -# Begin Source File - -SOURCE=.\cube.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/dials.c b/lib/glut-3.7.6/progs/examples/dials.c deleted file mode 100644 index 57f7783b0a94d4970e472efde54cfcb3d894cd41..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dials.c +++ /dev/null @@ -1,145 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include -#include - -int *dials, *buttons; -int numdials, numbuttons; -int dw, bw; - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -void -drawCircle(int x, int y, int r, int dir) -{ - float angle; - - glPushMatrix(); - glTranslatef(x,y,0); - glBegin(GL_TRIANGLE_FAN); - glVertex2f(0,0); - for(angle = 2*M_PI; angle >= 0; angle -= M_PI/12) { - glVertex2f(r*cos(angle),r*sin(angle)); - } - glEnd(); - glColor3f(0,0,1); - glBegin(GL_LINES); - glVertex2f(0,0); - glVertex2f(r*cos(dir*M_PI/180),r*sin(dir*M_PI/180)); - glEnd(); - glPopMatrix(); -} - -void -displayDials(void) -{ - int i; - - glClear(GL_COLOR_BUFFER_BIT); - for(i=0;i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dials - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dials.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dials.mak" CFG="dials - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dials - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dials - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dials - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dials - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dials - Win32 Release" -# Name "dials - Win32 Debug" -# Begin Source File - -SOURCE=.\dials.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/dials2.c b/lib/glut-3.7.6/progs/examples/dials2.c deleted file mode 100644 index 0c3e0c3d78f2449d29f3a50b69fd9c3c9cd5e03c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dials2.c +++ /dev/null @@ -1,140 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include -#include - -#define NUM_DIALS 8 -#define NUM_BUTTONS 32 - -int *dials, *buttons; - -#undef PI /* Some systems may have this defined. */ -#define PI 3.14159265358979323846 - -void -drawCircle(int x, int y, int r, int dir) -{ - float angle; - - glPushMatrix(); - glTranslatef(x,y,0); - glBegin(GL_TRIANGLE_FAN); - glVertex2f(0,0); - for(angle = 2*PI; angle >= 0; angle -= PI/12) { - glVertex2f(r*cos(angle),r*sin(angle)); - } - glEnd(); - glColor3f(0,0,1); - glBegin(GL_LINES); - glVertex2f(0,0); - glVertex2f(r*cos(dir*PI/180),r*sin(dir*PI/180)); - glEnd(); - glPopMatrix(); -} - -void -displayDials(void) -{ - int i; - - for(i=0;i 0 && dial <= NUM_DIALS) { - dials[dial - 1] = value % 360; - glutPostRedisplay(); - } -} - -void -dobutton(int button, int state) -{ - if(button > 0 && button <= NUM_BUTTONS) { - buttons[button-1] = (state == GLUT_DOWN); - glutPostRedisplay(); - } -} - -int -main(int argc, char **argv) -{ - int width, height; - glutInit(&argc, argv); - dials = (int*) calloc(NUM_DIALS, sizeof(int)); - buttons = (int*) calloc(NUM_BUTTONS, sizeof(int)); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - width = 240 + 240; - height = 100*((NUM_DIALS+1)/2) + 20; - if(height < 240) height = 240; - glutInitWindowSize(width, height); - glutCreateWindow("GLUT dials & buttons"); - glClearColor(0.5, 0.5, 0.5, 1.0); - glLineWidth(3.0); - glutDialsFunc(dodial); - glutButtonBoxFunc(dobutton); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutInitWindowSize(240, 240); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/dials2.dsp b/lib/glut-3.7.6/progs/examples/dials2.dsp deleted file mode 100644 index 06eb1bf9a0dbb852d320c63ff5565deb53443384..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dials2.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dials2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dials2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dials2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dials2.mak" CFG="dials2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dials2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dials2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dials2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dials2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dials2 - Win32 Release" -# Name "dials2 - Win32 Debug" -# Begin Source File - -SOURCE=.\dials2.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/dinoball.c b/lib/glut-3.7.6/progs/examples/dinoball.c deleted file mode 100644 index 697def0475c8d395ee136606257e049f6b47f671..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinoball.c +++ /dev/null @@ -1,332 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE, DINOSAUR -} displayLists; - -GLfloat angle = -150; /* in degrees */ -GLfloat xloc = 0, yloc = 0, zloc = 0; -int moving, begin; -int W = 300, H = 300; -GLdouble bodyWidth = 3.0; -int newModel = 1; -/* *INDENT-OFF* */ -GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -GLfloat lightZeroPosition[] = {10.0, 4.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, -2.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = dataSize / (int) (2 * sizeof(GLfloat)); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void -makeDinosaur(void) -{ - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); - glNewList(DINOSAUR, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glEndList(); -} - -void -recalcModelView(void) -{ - glPopMatrix(); - glPushMatrix(); - glTranslatef(xloc, yloc, zloc); - glRotatef(angle, 0.0, 1.0, 0.0); - glTranslatef(-8, -8, -bodyWidth / 2); - newModel = 0; -} - -void -redraw(void) -{ - if (newModel) - recalcModelView(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(DINOSAUR); - glutSwapBuffers(); -} - -/* ARGSUSED3 */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - moving = 1; - begin = x; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - begin); - begin = x; - newModel = 1; - glutPostRedisplay(); - } -} - -void -tablet(int x, int y) -{ - xloc = ((GLfloat) x) / 500 - 4; - yloc = ((GLfloat) y) / 1000 - 2; - newModel = 1; - glutPostRedisplay(); -} - -int xt = 1, yt = 1, zt = 1, xr = 1; - -void -translate(int x, int y, int z) -{ - GLfloat newz; - - if (xt) - xloc += ((GLfloat) x) / 100; - if (yt) - yloc += ((GLfloat) y) / 100; - if (zt) { - newz = zloc - ((GLfloat) z) / 100; - if (newz > -60.0 && newz < 13.0) - zloc = newz; - } - newModel = 1; - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -rotate(int x, int y, int z) -{ - if (xr) { - angle += x / 2.0; - newModel = 1; - glutPostRedisplay(); - } -} - -void -button(int button, int state) -{ - if (state == GLUT_DOWN) { - switch (button) { - case 1: - xt = yt = zt = xr = 1; - break; - case 5: - xt = 1; - yt = zt = xr = 0; - break; - case 6: - yt = 1; - xt = zt = xr = 0; - break; - case 7: - zt = 1; - xt = yt = xr = 0; - break; - case 8: - xr = 1; - xt = yt = zt = 0; - break; - case 9: - xloc = yloc = zloc = 0; - newModel = 1; - glutPostRedisplay(); - break; - } - } -} - -void -dials(int dial, int value) -{ - if (dial == 0) { - angle = value / 10.0; - newModel = 1; - glutPostRedisplay(); - } -} - -GLboolean lightZeroSwitch = GL_TRUE, lightOneSwitch = GL_TRUE; - -void -controlLights(int value) -{ - switch (value) { - case 1: - lightZeroSwitch = !lightZeroSwitch; - if (lightZeroSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case 2: - lightOneSwitch = !lightOneSwitch; - if (lightOneSwitch) { - glEnable(GL_LIGHT1); - } else { - glDisable(GL_LIGHT1); - } - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutCreateWindow("dinoball (Spaceball demo)"); - glutDisplayFunc(redraw); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutTabletMotionFunc(tablet); - glutSpaceballMotionFunc(translate); - glutSpaceballRotateFunc(rotate); - glutSpaceballButtonFunc(button); - glutDialsFunc(dials); - glutCreateMenu(controlLights); - glutAddMenuEntry("Toggle right light", 1); - glutAddMenuEntry("Toggle left light", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - makeDinosaur(); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 100.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 30.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glPushMatrix(); /* dummy push so we can pop on model - recalc */ - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/dinoball.dsp b/lib/glut-3.7.6/progs/examples/dinoball.dsp deleted file mode 100644 index 3391849df5f7c2ac58433d0e8e897a5830490c26..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinoball.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dinoball" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dinoball - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dinoball.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dinoball.mak" CFG="dinoball - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dinoball - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dinoball - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dinoball - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dinoball - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dinoball - Win32 Release" -# Name "dinoball - Win32 Debug" -# Begin Source File - -SOURCE=.\dinoball.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/dinodraw.c b/lib/glut-3.7.6/progs/examples/dinodraw.c deleted file mode 100644 index a7ba3e4b98e0503b92a75cb02fde18a13c52d98f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinodraw.c +++ /dev/null @@ -1,420 +0,0 @@ -/* - * Dinodraw.c - * - * Copyright (c) James Bowman 1998, - * parts (c) Mark J. Kilgard, 1994. - */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Modified version of Mark J. Kilgard's dinospin that demontrates use of - * stencil buffer to interactively view overdraw. - */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include -#include "trackball.h" - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE, DINOSAUR -} displayLists; - -GLfloat angle = -150; /* in degrees */ -GLboolean doubleBuffer = GL_TRUE, iconic = GL_FALSE, keepAspect = GL_FALSE; -int spinning = 0, moving = 0; -int beginx, beginy; -int W = 300, H = 300; -float curquat[4]; -float lastquat[4]; -GLdouble bodyWidth = 2.0; -int newModel = 1; -int scaling; -float scalefactor = 1.0; -/* *INDENT-OFF* */ -GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -GLfloat lightZeroPosition[] = {10.0, 4.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, -2.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = dataSize / (2 * sizeof(GLfloat)); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon * * tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky - - */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being * * "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side - - */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void -makeDinosaur(void) -{ - GLfloat bodyWidth = 3.0; - - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); - glNewList(DINOSAUR, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glEndList(); -} - -void -recalcModelView(void) -{ - GLfloat m[4][4]; - - glPopMatrix(); - glPushMatrix(); - build_rotmatrix(m, curquat); - glMultMatrixf(&m[0][0]); - glScalef(scalefactor, scalefactor, scalefactor); - glTranslatef(-8, -8, -bodyWidth / 2); - newModel = 0; -} - -void -showMessage(GLfloat x, GLfloat y, GLfloat z, char *message) -{ - glPushMatrix(); - glDisable(GL_LIGHTING); - glTranslatef(x, y, z); - glScalef(.02, .02, .02); - while (*message) { - glutStrokeCharacter(GLUT_STROKE_ROMAN, *message); - message++; - } - glEnable(GL_LIGHTING); - glPopMatrix(); -} - -void -redraw(void) -{ - if (newModel) - recalcModelView(); - - glClear(GL_COLOR_BUFFER_BIT | - GL_DEPTH_BUFFER_BIT | - GL_STENCIL_BUFFER_BIT); - - /* Draw the real scene in the left viewport... */ - glViewport(0, 0, W / 2, H); - - glDisable(GL_STENCIL_TEST); - glCallList(DINOSAUR); - showMessage(2, 7.1, 4.1, "Spin me."); - - /* ...and the overdraw indicator in the right viewport */ - glViewport(W / 2, 0, W / 2, H); - - /* First draw the scene again, this time without color updates, - * just counting pixels drawn in the stencil buffer. - */ - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, 0); - glStencilOp(GL_KEEP, GL_INCR, GL_INCR); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - glCallList(DINOSAUR); - showMessage(2, 7.1, 4.1, "Spin me."); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - - glColor3f(1.0f, 1.0f, 1.0f); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - /* Copy bit 0 into the blue plane */ - glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_FALSE); - glStencilFunc(GL_NOTEQUAL, 0, 0xf8 | 0x01); - glRectf(-1.0f, -1.0f, 1.0f, 1.0f); - - /* Copy bit 1 into the red plane */ - glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE); - glStencilFunc(GL_NOTEQUAL, 0, 0xf8 | 0x02); - glRectf(-1.0f, -1.0f, 1.0f, 1.0f); - - /* Copy bit 2 into the green plane */ - glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_FALSE); - glStencilFunc(GL_NOTEQUAL, 0, 0xf8 | 0x04); - glRectf(-1.0f, -1.0f, 1.0f, 1.0f); - - /* Note that anything greater than 7 will have one of bits 3-7 set, - * hence will be drawn on all three planes by the mask with 0xf8 above. - * So anything overdrawn 7 or more times will be drawn in white. - */ - - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glutSwapBuffers(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w / 2, h); - W = w; - H = h; -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - spinning = 0; - glutIdleFunc(NULL); - moving = 1; - beginx = x; - beginy = y; - if (glutGetModifiers() & GLUT_ACTIVE_SHIFT) { - scaling = 1; - } else { - scaling = 0; - } - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -void -animate(void) -{ - add_quats(lastquat, curquat, curquat); - newModel = 1; - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - if (scaling) { - scalefactor = scalefactor * (1.0 + (((float) (beginy - y)) / H)); - beginx = x; - beginy = y; - newModel = 1; - glutPostRedisplay(); - return; - } - if (moving) { - trackball(lastquat, - (2.0 * beginx - W) / W, - (H - 2.0 * beginy) / H, - (2.0 * x - W) / W, - (H - 2.0 * y) / H - ); - beginx = x; - beginy = y; - spinning = 1; - glutIdleFunc(animate); - } -} - -GLboolean lightZeroSwitch = GL_TRUE, lightOneSwitch = GL_TRUE; - -void -controlLights(int value) -{ - switch (value) { - case 1: - lightZeroSwitch = !lightZeroSwitch; - if (lightZeroSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case 2: - lightOneSwitch = !lightOneSwitch; - if (lightOneSwitch) { - glEnable(GL_LIGHT1); - } else { - glDisable(GL_LIGHT1); - } - break; -#ifdef GL_MULTISAMPLE_SGIS - case 3: - if (glIsEnabled(GL_MULTISAMPLE_SGIS)) { - glDisable(GL_MULTISAMPLE_SGIS); - } else { - glEnable(GL_MULTISAMPLE_SGIS); - } - break; -#endif - case 4: - glutFullScreen(); - break; - case 5: - exit(0); - break; - } - glutPostRedisplay(); -} - -void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (spinning) - glutIdleFunc(animate); - } else { - if (spinning) - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL); - trackball(curquat, 0.0, 0.0, 0.0, 0.0); - glutInitWindowSize(600, 300); - glutCreateWindow("dinodraw"); - glutDisplayFunc(redraw); - glutReshapeFunc(myReshape); - glutVisibilityFunc(vis); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(controlLights); - glutAddMenuEntry("Toggle right light", 1); - glutAddMenuEntry("Toggle left light", 2); - if (glutGet(GLUT_WINDOW_NUM_SAMPLES) > 0) { - glutAddMenuEntry("Toggle multisampling", 3); - glutSetWindowTitle("dinospin (multisample capable)"); - } - glutAddMenuEntry("Full screen", 4); - glutAddMenuEntry("Quit", 5); - glutAttachMenu(GLUT_RIGHT_BUTTON); - makeDinosaur(); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 40.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 30.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glPushMatrix(); /* dummy push so we can pop on model - recalc */ - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glLineWidth(2.0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/examples/dinodraw.dsp b/lib/glut-3.7.6/progs/examples/dinodraw.dsp deleted file mode 100644 index f20e018bad19c90c449816435ed7b1cb0c6d2524..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinodraw.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dinodraw" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dinodraw - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dinodraw.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dinodraw.mak" CFG="dinodraw - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dinodraw - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dinodraw - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dinodraw - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dinodraw - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dinodraw - Win32 Release" -# Name "dinodraw - Win32 Debug" -# Begin Source File - -SOURCE=.\dinodraw.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/dinoshade.c b/lib/glut-3.7.6/progs/examples/dinoshade.c deleted file mode 100644 index b8b0183d42661eadc415b1bc215ed8d336aacb91..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinoshade.c +++ /dev/null @@ -1,891 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Example for PC game developers to show how to *combine* texturing, - reflections, and projected shadows all in real-time with OpenGL. - Robust reflections use stenciling. Robust projected shadows - use both stenciling and polygon offset. PC game programmers - should realize that neither stenciling nor polygon offset are - supported by Direct3D, so these real-time rendering algorithms - are only really viable with OpenGL. - - The program has modes for disabling the stenciling and polygon - offset uses. It is worth running this example with these features - toggled off so you can see the sort of artifacts that result. - - Notice that the floor texturing, reflections, and shadowing - all co-exist properly. */ - -/* When you run this program: Left mouse button controls the - view. Middle mouse button controls light position (left & - right rotates light around dino; up & down moves light - position up and down). Right mouse button pops up menu. */ - -/* Check out the comments in the "redraw" routine to see how the - reflection blending and surface stenciling is done. You can - also see in "redraw" how the projected shadows are rendered, - including the use of stenciling and polygon offset. */ - -/* This program is derived from glutdino.c */ - -/* Compile: cc -o dinoshade dinoshade.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include /* OpenGL Utility Toolkit header */ - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* Variable controlling various rendering modes. */ -static int stencilReflection = 1, stencilShadow = 1, offsetShadow = 1; -static int renderShadow = 1, renderDinosaur = 1, renderReflection = 1; -static int linearFiltering = 0, useMipmaps = 0, useTexture = 1; -static int reportSpeed = 0; -static int animation = 1; -static GLboolean lightSwitch = GL_TRUE; -static int directionalLight = 1; -static int forceExtension = 0; - -/* Time varying or user-controled variables. */ -static float jump = 0.0; -static float lightAngle = 0.0, lightHeight = 20; -GLfloat angle = -150; /* in degrees */ -GLfloat angle2 = 30; /* in degrees */ - -int moving, startx, starty; -int lightMoving = 0, lightStartX, lightStartY; - -enum { - MISSING, EXTENSION, ONE_DOT_ONE -}; -int polygonOffsetVersion; - -static GLdouble bodyWidth = 3.0; -/* *INDENT-OFF* */ -static GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -static GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -static GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -static GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -static GLfloat lightPosition[4]; -static GLfloat lightColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -static GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -/* Nice floor texture tiling pattern. */ -static char *circles[] = { - "....xxxx........", - "..xxxxxxxx......", - ".xxxxxxxxxx.....", - ".xxx....xxx.....", - "xxx......xxx....", - "xxx......xxx....", - "xxx......xxx....", - "xxx......xxx....", - ".xxx....xxx.....", - ".xxxxxxxxxx.....", - "..xxxxxxxx......", - "....xxxx........", - "................", - "................", - "................", - "................", -}; - -static void -makeFloorTexture(void) -{ - GLubyte floorTexture[16][16][3]; - GLubyte *loc; - int s, t; - - /* Setup RGB image for the texture. */ - loc = (GLubyte*) floorTexture; - for (t = 0; t < 16; t++) { - for (s = 0; s < 16; s++) { - if (circles[t][s] == 'x') { - /* Nice green. */ - loc[0] = 0x1f; - loc[1] = 0x8f; - loc[2] = 0x1f; - } else { - /* Light gray. */ - loc[0] = 0xaa; - loc[1] = 0xaa; - loc[2] = 0xaa; - } - loc += 3; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - if (useMipmaps) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16, - GL_RGB, GL_UNSIGNED_BYTE, floorTexture); - } else { - if (linearFiltering) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - } else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - } - glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0, - GL_RGB, GL_UNSIGNED_BYTE, floorTexture); - } -} - -enum { - X, Y, Z, W -}; -enum { - A, B, C, D -}; - -/* Create a matrix that will project the desired shadow. */ -void -shadowMatrix(GLfloat shadowMat[4][4], - GLfloat groundplane[4], - GLfloat lightpos[4]) -{ - GLfloat dot; - - /* Find dot product between light position vector and ground plane normal. */ - dot = groundplane[X] * lightpos[X] + - groundplane[Y] * lightpos[Y] + - groundplane[Z] * lightpos[Z] + - groundplane[W] * lightpos[W]; - - shadowMat[0][0] = dot - lightpos[X] * groundplane[X]; - shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y]; - shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z]; - shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W]; - - shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X]; - shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y]; - shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z]; - shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W]; - - shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X]; - shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y]; - shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z]; - shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W]; - - shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X]; - shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y]; - shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z]; - shadowMat[3][3] = dot - lightpos[W] * groundplane[W]; - -} - -/* Find the plane equation given 3 points. */ -void -findPlane(GLfloat plane[4], - GLfloat v0[3], GLfloat v1[3], GLfloat v2[3]) -{ - GLfloat vec0[3], vec1[3]; - - /* Need 2 vectors to find cross product. */ - vec0[X] = v1[X] - v0[X]; - vec0[Y] = v1[Y] - v0[Y]; - vec0[Z] = v1[Z] - v0[Z]; - - vec1[X] = v2[X] - v0[X]; - vec1[Y] = v2[Y] - v0[Y]; - vec1[Z] = v2[Z] - v0[Z]; - - /* find cross product to get A, B, and C of plane equation */ - plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y]; - plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]); - plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X]; - - plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]); -} - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = (int) (dataSize / (2 * sizeof(GLfloat))); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -/* Enumerants for refering to display lists. */ -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE -} displayLists; - -static void -makeDinosaur(void) -{ - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); -} - -static void -drawDinosaur(void) - -{ - glPushMatrix(); - /* Translate the dinosaur to be at (0,8,0). */ - glTranslatef(-8, 0, -bodyWidth / 2); - glTranslatef(0.0, jump, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); -} - -static GLfloat floorVertices[4][3] = { - { -20.0, 0.0, 20.0 }, - { 20.0, 0.0, 20.0 }, - { 20.0, 0.0, -20.0 }, - { -20.0, 0.0, -20.0 }, -}; - -/* Draw a floor (possibly textured). */ -static void -drawFloor(void) -{ - glDisable(GL_LIGHTING); - - if (useTexture) { - glEnable(GL_TEXTURE_2D); - } - - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); - glVertex3fv(floorVertices[0]); - glTexCoord2f(0.0, 16.0); - glVertex3fv(floorVertices[1]); - glTexCoord2f(16.0, 16.0); - glVertex3fv(floorVertices[2]); - glTexCoord2f(16.0, 0.0); - glVertex3fv(floorVertices[3]); - glEnd(); - - if (useTexture) { - glDisable(GL_TEXTURE_2D); - } - - glEnable(GL_LIGHTING); -} - -static GLfloat floorPlane[4]; -static GLfloat floorShadow[4][4]; - -static void -redraw(void) -{ - int start, end; - - if (reportSpeed) { - start = glutGet(GLUT_ELAPSED_TIME); - } - - /* Clear; default stencil clears to zero. */ - if ((stencilReflection && renderReflection) || (stencilShadow && renderShadow)) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - } else { - /* Avoid clearing stencil when not using it. */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - } - - /* Reposition the light source. */ - lightPosition[0] = 12*cos(lightAngle); - lightPosition[1] = lightHeight; - lightPosition[2] = 12*sin(lightAngle); - if (directionalLight) { - lightPosition[3] = 0.0; - } else { - lightPosition[3] = 1.0; - } - - shadowMatrix(floorShadow, floorPlane, lightPosition); - - glPushMatrix(); - /* Perform scene rotations based on user mouse input. */ - glRotatef(angle2, 1.0, 0.0, 0.0); - glRotatef(angle, 0.0, 1.0, 0.0); - - /* Tell GL new light source position. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - - if (renderReflection) { - if (stencilReflection) { - /* We can eliminate the visual "artifact" of seeing the "flipped" - dinosaur underneath the floor by using stencil. The idea is - draw the floor without color or depth update but so that - a stencil value of one is where the floor will be. Later when - rendering the dinosaur reflection, we will only update pixels - with a stencil value of 1 to make sure the reflection only - lives on the floor, not below the floor. */ - - /* Don't update color or depth. */ - glDisable(GL_DEPTH_TEST); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - - /* Draw 1 into the stencil buffer. */ - glEnable(GL_STENCIL_TEST); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glStencilFunc(GL_ALWAYS, 1, 0xffffffff); - - /* Now render floor; floor pixels just get their stencil set to 1. */ - drawFloor(); - - /* Re-enable update of color and depth. */ - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glEnable(GL_DEPTH_TEST); - - /* Now, only render where stencil is set to 1. */ - glStencilFunc(GL_EQUAL, 1, 0xffffffff); /* draw if ==1 */ - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - } - - glPushMatrix(); - - /* The critical reflection step: Reflect dinosaur through the floor - (the Y=0 plane) to make a relection. */ - glScalef(1.0, -1.0, 1.0); - - /* Reflect the light position. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - - /* To avoid our normals getting reversed and hence botched lighting - on the reflection, turn on normalize. */ - glEnable(GL_NORMALIZE); - glCullFace(GL_FRONT); - - /* Draw the reflected dinosaur. */ - drawDinosaur(); - - /* Disable noramlize again and re-enable back face culling. */ - glDisable(GL_NORMALIZE); - glCullFace(GL_BACK); - - glPopMatrix(); - - /* Switch back to the unreflected light position. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - - if (stencilReflection) { - glDisable(GL_STENCIL_TEST); - } - } - - /* Back face culling will get used to only draw either the top or the - bottom floor. This let's us get a floor with two distinct - appearances. The top floor surface is reflective and kind of red. - The bottom floor surface is not reflective and blue. */ - - /* Draw "bottom" of floor in blue. */ - glFrontFace(GL_CW); /* Switch face orientation. */ - glColor4f(0.1, 0.1, 0.7, 1.0); - drawFloor(); - glFrontFace(GL_CCW); - - if (renderShadow) { - if (stencilShadow) { - /* Draw the floor with stencil value 3. This helps us only - draw the shadow once per floor pixel (and only on the - floor pixels). */ - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 3, 0xffffffff); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - } - } - - /* Draw "top" of floor. Use blending to blend in reflection. */ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glColor4f(0.7, 0.0, 0.0, 0.3); - glColor4f(1.0, 1.0, 1.0, 0.3); - drawFloor(); - glDisable(GL_BLEND); - - if (renderDinosaur) { - /* Draw "actual" dinosaur, not its reflection. */ - drawDinosaur(); - } - - if (renderShadow) { - - /* Render the projected shadow. */ - - if (stencilShadow) { - - /* Now, only render where stencil is set above 2 (ie, 3 where - the top floor is). Update stencil with 2 where the shadow - gets drawn so we don't redraw (and accidently reblend) the - shadow). */ - glStencilFunc(GL_LESS, 2, 0xffffffff); /* draw if ==1 */ - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - } - - /* To eliminate depth buffer artifacts, we use polygon offset - to raise the depth of the projected shadow slightly so - that it does not depth buffer alias with the floor. */ - if (offsetShadow) { - switch (polygonOffsetVersion) { - case EXTENSION: -#ifdef GL_EXT_polygon_offset - glEnable(GL_POLYGON_OFFSET_EXT); - break; -#endif -#ifdef GL_VERSION_1_1 - case ONE_DOT_ONE: - glEnable(GL_POLYGON_OFFSET_FILL); - break; -#endif - case MISSING: - /* Oh well. */ - break; - } - } - - /* Render 50% black shadow color on top of whatever the - floor appareance is. */ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDisable(GL_LIGHTING); /* Force the 50% black. */ - glColor4f(0.0, 0.0, 0.0, 0.5); - - glPushMatrix(); - /* Project the shadow. */ - glMultMatrixf((GLfloat *) floorShadow); - drawDinosaur(); - glPopMatrix(); - - glDisable(GL_BLEND); - glEnable(GL_LIGHTING); - - if (offsetShadow) { - switch (polygonOffsetVersion) { -#ifdef GL_EXT_polygon_offset - case EXTENSION: - glDisable(GL_POLYGON_OFFSET_EXT); - break; -#endif -#ifdef GL_VERSION_1_1 - case ONE_DOT_ONE: - glDisable(GL_POLYGON_OFFSET_FILL); - break; -#endif - case MISSING: - /* Oh well. */ - break; - } - } - if (stencilShadow) { - glDisable(GL_STENCIL_TEST); - } - } - - glPushMatrix(); - glDisable(GL_LIGHTING); - glColor3f(1.0, 1.0, 0.0); - if (directionalLight) { - /* Draw an arrowhead. */ - glDisable(GL_CULL_FACE); - glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]); - glRotatef(lightAngle * -180.0 / M_PI, 0, 1, 0); - glRotatef(atan(lightHeight/12) * 180.0 / M_PI, 0, 0, 1); - glBegin(GL_TRIANGLE_FAN); - glVertex3f(0, 0, 0); - glVertex3f(2, 1, 1); - glVertex3f(2, -1, 1); - glVertex3f(2, -1, -1); - glVertex3f(2, 1, -1); - glVertex3f(2, 1, 1); - glEnd(); - /* Draw a white line from light direction. */ - glColor3f(1.0, 1.0, 1.0); - glBegin(GL_LINES); - glVertex3f(0, 0, 0); - glVertex3f(5, 0, 0); - glEnd(); - glEnable(GL_CULL_FACE); - } else { - /* Draw a yellow ball at the light source. */ - glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]); - glutSolidSphere(1.0, 5, 5); - } - glEnable(GL_LIGHTING); - glPopMatrix(); - - glPopMatrix(); - - if (reportSpeed) { - glFinish(); - end = glutGet(GLUT_ELAPSED_TIME); - printf("Speed %.3g frames/sec (%d ms)\n", 1000.0/(end-start), end-start); - } - - glutSwapBuffers(); -} - -/* ARGSUSED2 */ -static void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - moving = 1; - startx = x; - starty = y; - } - if (state == GLUT_UP) { - moving = 0; - } - } - if (button == GLUT_MIDDLE_BUTTON) { - if (state == GLUT_DOWN) { - lightMoving = 1; - lightStartX = x; - lightStartY = y; - } - if (state == GLUT_UP) { - lightMoving = 0; - } - } -} - -/* ARGSUSED1 */ -static void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - startx); - angle2 = angle2 + (y - starty); - startx = x; - starty = y; - glutPostRedisplay(); - } - if (lightMoving) { - lightAngle += (x - lightStartX)/40.0; - lightHeight += (lightStartY - y)/20.0; - lightStartX = x; - lightStartY = y; - glutPostRedisplay(); - } -} - -/* Advance time varying state when idle callback registered. */ -static void -idle(void) -{ - static float time = 0.0; - - time = glutGet(GLUT_ELAPSED_TIME) / 500.0; - - jump = 4.0 * fabs(sin(time)*0.5); - if (!lightMoving) { - lightAngle += 0.03; - } - glutPostRedisplay(); -} - -enum { - M_NONE, M_MOTION, M_LIGHT, M_TEXTURE, M_SHADOWS, M_REFLECTION, M_DINOSAUR, - M_STENCIL_REFLECTION, M_STENCIL_SHADOW, M_OFFSET_SHADOW, - M_POSITIONAL, M_DIRECTIONAL, M_PERFORMANCE -}; - -static void -controlLights(int value) -{ - switch (value) { - case M_NONE: - return; - case M_MOTION: - animation = 1 - animation; - if (animation) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } - break; - case M_LIGHT: - lightSwitch = !lightSwitch; - if (lightSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case M_TEXTURE: - useTexture = !useTexture; - break; - case M_SHADOWS: - renderShadow = 1 - renderShadow; - break; - case M_REFLECTION: - renderReflection = 1 - renderReflection; - break; - case M_DINOSAUR: - renderDinosaur = 1 - renderDinosaur; - break; - case M_STENCIL_REFLECTION: - stencilReflection = 1 - stencilReflection; - break; - case M_STENCIL_SHADOW: - stencilShadow = 1 - stencilShadow; - break; - case M_OFFSET_SHADOW: - offsetShadow = 1 - offsetShadow; - break; - case M_POSITIONAL: - directionalLight = 0; - break; - case M_DIRECTIONAL: - directionalLight = 1; - break; - case M_PERFORMANCE: - reportSpeed = 1 - reportSpeed; - break; - } - glutPostRedisplay(); -} - -/* When not visible, stop animating. Restart when visible again. */ -static void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - if (animation) - glutIdleFunc(idle); - } else { - if (!animation) - glutIdleFunc(NULL); - } -} - -/* Press any key to redraw; good when motion stopped and - performance reporting on. */ -/* ARGSUSED */ -static void -key(unsigned char c, int x, int y) -{ - if (c == 27) { - exit(0); /* IRIS GLism, Escape quits. */ - } - glutPostRedisplay(); -} - -/* Press any key to redraw; good when motion stopped and - performance reporting on. */ -/* ARGSUSED */ -static void -special(int k, int x, int y) -{ - glutPostRedisplay(); -} - -static int -supportsOneDotOne(void) -{ - const char *version; - int major, minor; - - version = (char *) glGetString(GL_VERSION); - if (sscanf(version, "%d.%d", &major, &minor) == 2) - return major >= 1 && minor >= 1; - return 0; /* OpenGL version string malformed! */ -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - - for (i=1; i=2 rgb double depth"); -#endif - - glutCreateWindow("Shadowy Leapin' Lizards"); - - if (glutGet(GLUT_WINDOW_STENCIL_SIZE) <= 1) { - printf("dinoshade: Sorry, I need at least 2 bits of stencil.\n"); - exit(1); - } - - /* Register GLUT callbacks. */ - glutDisplayFunc(redraw); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutVisibilityFunc(visible); - glutKeyboardFunc(key); - glutSpecialFunc(special); - - glutCreateMenu(controlLights); - - glutAddMenuEntry("Toggle motion", M_MOTION); - glutAddMenuEntry("-----------------------", M_NONE); - glutAddMenuEntry("Toggle light", M_LIGHT); - glutAddMenuEntry("Toggle texture", M_TEXTURE); - glutAddMenuEntry("Toggle shadows", M_SHADOWS); - glutAddMenuEntry("Toggle reflection", M_REFLECTION); - glutAddMenuEntry("Toggle dinosaur", M_DINOSAUR); - glutAddMenuEntry("-----------------------", M_NONE); - glutAddMenuEntry("Toggle reflection stenciling", M_STENCIL_REFLECTION); - glutAddMenuEntry("Toggle shadow stenciling", M_STENCIL_SHADOW); - glutAddMenuEntry("Toggle shadow offset", M_OFFSET_SHADOW); - glutAddMenuEntry("----------------------", M_NONE); - glutAddMenuEntry("Positional light", M_POSITIONAL); - glutAddMenuEntry("Directional light", M_DIRECTIONAL); - glutAddMenuEntry("-----------------------", M_NONE); - glutAddMenuEntry("Toggle performance", M_PERFORMANCE); - glutAttachMenu(GLUT_RIGHT_BUTTON); - makeDinosaur(); - -#ifdef GL_VERSION_1_1 - if (supportsOneDotOne() && !forceExtension) { - polygonOffsetVersion = ONE_DOT_ONE; - glPolygonOffset(-2.0, -9.0); - } else -#endif - { -#ifdef GL_EXT_polygon_offset - /* check for the polygon offset extension */ - if (glutExtensionSupported("GL_EXT_polygon_offset")) { - polygonOffsetVersion = EXTENSION; - glPolygonOffsetEXT(-2.0, -0.002); - } else -#endif - { - polygonOffsetVersion = MISSING; - printf("\ndinoshine: Missing polygon offset.\n"); - printf(" Expect shadow depth aliasing artifacts.\n\n"); - } - } - - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_TEXTURE_2D); - glLineWidth(3.0); - - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 20.0, /* Z far */ 100.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 8.0, 60.0, /* eye is at (0,8,60) */ - 0.0, 8.0, 0.0, /* center is at (0,8,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); - - makeFloorTexture(); - - /* Setup floor plane for projected shadow calculations. */ - findPlane(floorPlane, floorVertices[1], floorVertices[2], floorVertices[3]); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/dinoshade.dsp b/lib/glut-3.7.6/progs/examples/dinoshade.dsp deleted file mode 100644 index 0082bac12cf27c1d480dcda579025913d7064c0f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinoshade.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dinoshade" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dinoshade - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dinoshade.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dinoshade.mak" CFG="dinoshade - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dinoshade - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dinoshade - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dinoshade - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dinoshade - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dinoshade - Win32 Release" -# Name "dinoshade - Win32 Debug" -# Begin Source File - -SOURCE=.\dinoshade.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/dinospin.c b/lib/glut-3.7.6/progs/examples/dinospin.c deleted file mode 100644 index 2be3b6c6ee3801a72b4744d6615abba81aaec7cb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinospin.c +++ /dev/null @@ -1,352 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* New GLUT 3.0 glutGetModifiers() functionality used to make Shift-Left - mouse scale the dinosaur's size. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include -#include "trackball.h" - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE, DINOSAUR -} displayLists; - -int spinning = 0, moving = 0; -int beginx, beginy; -int W = 300, H = 300; -float curquat[4]; -float lastquat[4]; -GLdouble bodyWidth = 3.0; -int newModel = 1; -int scaling; -float scalefactor = 1.0; -/* *INDENT-OFF* */ -GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -GLfloat lightZeroPosition[] = {10.0, 4.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, -2.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = (int) (dataSize / (2 * sizeof(GLfloat))); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky - - */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being * * "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side - - */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void -makeDinosaur(void) -{ - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); - glNewList(DINOSAUR, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glEndList(); -} - -void -recalcModelView(void) -{ - GLfloat m[4][4]; - - glPopMatrix(); - glPushMatrix(); - build_rotmatrix(m, curquat); - glMultMatrixf(&m[0][0]); - if (scalefactor == 1.0) { - glDisable(GL_NORMALIZE); - } else { - glEnable(GL_NORMALIZE); - } - glScalef(scalefactor, scalefactor, scalefactor); - glTranslatef(-8, -8, -bodyWidth / 2); - newModel = 0; -} - -void -showMessage(GLfloat x, GLfloat y, GLfloat z, char *message) -{ - glPushMatrix(); - glDisable(GL_LIGHTING); - glTranslatef(x, y, z); - glScalef(.02, .02, .02); - while (*message) { - glutStrokeCharacter(GLUT_STROKE_ROMAN, *message); - message++; - } - glEnable(GL_LIGHTING); - glPopMatrix(); -} - -void -redraw(void) -{ - if (newModel) - recalcModelView(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(DINOSAUR); - showMessage(2, 7.1, 4.1, "Spin me."); - glutSwapBuffers(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - W = w; - H = h; -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - spinning = 0; - glutIdleFunc(NULL); - moving = 1; - beginx = x; - beginy = y; - if (glutGetModifiers() & GLUT_ACTIVE_SHIFT) { - scaling = 1; - } else { - scaling = 0; - } - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -void -animate(void) -{ - add_quats(lastquat, curquat, curquat); - newModel = 1; - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - if (scaling) { - scalefactor = scalefactor * (1.0 + (((float) (beginy - y)) / H)); - beginx = x; - beginy = y; - newModel = 1; - glutPostRedisplay(); - return; - } - if (moving) { - trackball(lastquat, - (2.0 * beginx - W) / W, - (H - 2.0 * beginy) / H, - (2.0 * x - W) / W, - (H - 2.0 * y) / H - ); - beginx = x; - beginy = y; - spinning = 1; - glutIdleFunc(animate); - } -} - -GLboolean lightZeroSwitch = GL_TRUE, lightOneSwitch = GL_TRUE; - -void -controlLights(int value) -{ - switch (value) { - case 1: - lightZeroSwitch = !lightZeroSwitch; - if (lightZeroSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case 2: - lightOneSwitch = !lightOneSwitch; - if (lightOneSwitch) { - glEnable(GL_LIGHT1); - } else { - glDisable(GL_LIGHT1); - } - break; -#ifdef GL_MULTISAMPLE_SGIS - case 3: - if (glIsEnabled(GL_MULTISAMPLE_SGIS)) { - glDisable(GL_MULTISAMPLE_SGIS); - } else { - glEnable(GL_MULTISAMPLE_SGIS); - } - break; -#endif - case 4: - glutFullScreen(); - break; - case 5: - exit(0); - break; - } - glutPostRedisplay(); -} - -void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (spinning) - glutIdleFunc(animate); - } else { - if (spinning) - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - trackball(curquat, 0.0, 0.0, 0.0, 0.0); - glutCreateWindow("dinospin"); - glutDisplayFunc(redraw); - glutReshapeFunc(myReshape); - glutVisibilityFunc(vis); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(controlLights); - glutAddMenuEntry("Toggle right light", 1); - glutAddMenuEntry("Toggle left light", 2); - if (glutGet(GLUT_WINDOW_NUM_SAMPLES) > 0) { - glutAddMenuEntry("Toggle multisampling", 3); - glutSetWindowTitle("dinospin (multisample capable)"); - } - glutAddMenuEntry("Full screen", 4); - glutAddMenuEntry("Quit", 5); - glutAttachMenu(GLUT_RIGHT_BUTTON); - makeDinosaur(); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 40.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 30.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glPushMatrix(); /* dummy push so we can pop on model - recalc */ - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glLineWidth(2.0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/dinospin.dsp b/lib/glut-3.7.6/progs/examples/dinospin.dsp deleted file mode 100644 index 96b458bdc5c5f306d644496595267e6039420a16..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/dinospin.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dinospin" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dinospin - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dinospin.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dinospin.mak" CFG="dinospin - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dinospin - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dinospin - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dinospin - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dinospin - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dinospin - Win32 Release" -# Name "dinospin - Win32 Debug" -# Begin Source File - -SOURCE=.\dinospin.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/editgrid.c b/lib/glut-3.7.6/progs/examples/editgrid.c deleted file mode 100644 index c0b90705c4aa0f167bc883823c9d3a4c3f22c7d7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/editgrid.c +++ /dev/null @@ -1,314 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* editgrid demonstrates how a simple 2nd order grid mesh or a more - complex 4th order grid mesh can rendered with OpenGL evaluators. - The control points for either grid can be interactively moved in 2D - by selecting and moving with the left mouse button. Antialising can - also be enabled from the pop-up menu. */ - -/* Compile: cc -o editgrid editgrid.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include - -int antialiasing = 0; -int gridSize = 20; -GLuint selectedPoint = (GLuint) ~0; -int winWidth, winHeight; -GLuint selectBuffer[64]; -GLdouble modelMatrix[16], projMatrix[16]; -GLint viewport[4]; - -/* Simple 2nd order initial grid. 4 points (2 by 2). */ -GLfloat grid2x2[2][2][3] = -{ - { - {-2.0, -2.0, 0.0}, - {2.0, -2.0, 0.0}}, - { - {-2.0, 2.0, 0.0}, - {2.0, 2.0, 0.0}} -}; - -/* More complex 4nd order initial grid. 16 points (4 by 4). */ -GLfloat grid4x4[4][4][3] = -{ - { - {-2.0, -2.0, 0.0}, - {-0.5, -2.0, 0.0}, - {0.5, -2.0, 0.0}, - {2.0, -2.0, 0.0}}, - { - {-2.0, -0.5, 0.0}, - {-0.5, -0.5, 0.0}, - {0.5, -0.5, 0.0}, - {2.0, -0.5, 0.0}}, - { - {-2.0, 0.5, 0.0}, - {-0.5, 0.5, 0.0}, - {0.5, 0.5, 0.0}, - {2.0, 0.5, 0.0}}, - { - {-2.0, 2.0, 0.0}, - {-0.5, 2.0, 0.0}, - {0.5, 2.0, 0.0}, - {2.0, 2.0, 0.0}} -}; -GLfloat *grid = &grid4x4[0][0][0]; -int uSize = 4; -int vSize = 4; - -void -setupMesh(void) -{ - glEnable(GL_MAP2_VERTEX_3); - glMapGrid2f(gridSize, 0.0, 1.0, gridSize, 0.0, 1.0); -} - -void -evaluateGrid(void) -{ - glColor3f(1.0, 1.0, 1.0); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, uSize, 0, 1, uSize * 3, vSize, grid); - glEvalMesh2(GL_LINE, 0, gridSize, 0, gridSize); -} - -void -drawControlPoints(void) -{ - int i; - - glColor3f(1.0, 1.0, 0.0); - glPointSize(5.0); - glBegin(GL_POINTS); - for (i = 0; i < uSize * vSize; i++) { - glVertex3fv(&grid[i * 3]); - } - glEnd(); -} - -void -selectControlPoints(void) -{ - int i; - - for (i = 0; i < uSize * vSize; i++) { - glLoadName(i); - glBegin(GL_POINTS); - glVertex3fv(&grid[i * 3]); - glEnd(); - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - evaluateGrid(); - drawControlPoints(); - glutSwapBuffers(); -} - -void -ortho(void) -{ - if (winWidth <= winHeight) - glOrtho(-4.0, 4.0, -4.0 * (GLfloat) winHeight / (GLfloat) winWidth, - 4.0 * (GLfloat) winHeight / (GLfloat) winWidth, -4.0, 4.0); - else - glOrtho(-4.0 * (GLfloat) winWidth / (GLfloat) winHeight, - 4.0 * (GLfloat) winWidth / (GLfloat) winHeight, -4.0, 4.0, -4.0, 4.0); -} - -GLuint -pick(int x, int y) -{ - int hits; - - (void) glRenderMode(GL_SELECT); - glInitNames(); - glPushName(~0); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluPickMatrix(x, winHeight - y, 8.0, 8.0, viewport); - ortho(); - glMatrixMode(GL_MODELVIEW); - selectControlPoints(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - hits = glRenderMode(GL_RENDER); - if (hits) { -#ifdef DEBUG - { - unsigned int i; - GLint names; - GLuint *ptr; - - printf("hits = %d\n", hits); - ptr = (GLuint *) selectBuffer; - for (i = 0; i < hits; i++) { /* for each hit */ - int j; - - names = *ptr; - printf("number of names for hit = %d\n", *ptr); - ptr++; - printf(" z1 is %g;", (float) *ptr / 0xffffffff); - ptr++; - printf(" z2 is %g\n", (float) *ptr / 0xffffffff); - ptr++; - printf(" the name is "); - for (j = 0; j < names; j++) { /* For each name. */ - printf("%d ", *ptr); - ptr++; - } - printf("\n"); - } - } -#endif - return selectBuffer[3]; - } else { - return ~0; - } -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - winWidth = w; - winHeight = h; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - ortho(); - glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); - viewport[0] = 0; - viewport[1] = 0; - viewport[2] = winWidth; - viewport[3] = winHeight; -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - selectedPoint = pick(x, y); - } else { - selectedPoint = -1; - } - } -} - -void -motion(int x, int y) -{ - GLdouble objx, objy, objz; - - if (selectedPoint != ~0) { - gluUnProject(x, winHeight - y, 0.95, - modelMatrix, projMatrix, viewport, - &objx, &objy, &objz); - grid[selectedPoint * 3 + 0] = objx; - grid[selectedPoint * 3 + 1] = objy; - glutPostRedisplay(); - } -} - -/* ARGSUSED1 */ -static void -keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - } -} - -enum { - M_2ND_ORDER_GRID, M_4TH_ORDER_GRID, M_INCREASE_GRID, M_DECREASE_GRID, M_TOGGLE_ANTIALIASING, M_QUIT -}; - -void -menu(int value) -{ - switch (value) { - case M_2ND_ORDER_GRID: - grid = &grid2x2[0][0][0]; - uSize = 2; - vSize = 2; - setupMesh(); - break; - case M_4TH_ORDER_GRID: - grid = &grid4x4[0][0][0]; - uSize = 4; - vSize = 4; - setupMesh(); - break; - case M_INCREASE_GRID: - gridSize += 2; - setupMesh(); - break; - case M_DECREASE_GRID: - gridSize -= 2; - if (gridSize < 2) { - gridSize = 2; - } - setupMesh(); - break; - case M_TOGGLE_ANTIALIASING: - if (antialiasing) { - antialiasing = 0; - glDisable(GL_BLEND); - glDisable(GL_LINE_SMOOTH); - glDisable(GL_POINT_SMOOTH); - } else { - antialiasing = 1; - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_POINT_SMOOTH); - } - break; - case M_QUIT: - exit(0); - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("editgrid"); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); - glutMotionFunc(motion); - glutCreateMenu(menu); - glutAddMenuEntry("2nd order grid", M_2ND_ORDER_GRID); - glutAddMenuEntry("4nd order grid", M_4TH_ORDER_GRID); - glutAddMenuEntry("Increase grid sizing by 2", M_INCREASE_GRID); - glutAddMenuEntry("Decrease grid sizing by 2", M_DECREASE_GRID); - glutAddMenuEntry("Toggle antialiasing", M_TOGGLE_ANTIALIASING); - glutAddMenuEntry("Quit", M_QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glSelectBuffer(sizeof(selectBuffer), selectBuffer); - setupMesh(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/editgrid.dsp b/lib/glut-3.7.6/progs/examples/editgrid.dsp deleted file mode 100644 index a0f7184690d2648f175f869d2fb6393593c50172..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/editgrid.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="editgrid" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=editgrid - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "editgrid.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "editgrid.mak" CFG="editgrid - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "editgrid - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "editgrid - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "editgrid - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "editgrid - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "editgrid - Win32 Release" -# Name "editgrid - Win32 Debug" -# Begin Source File - -SOURCE=.\editgrid.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/evaltest.c b/lib/glut-3.7.6/progs/examples/evaltest.c deleted file mode 100644 index a079f3c67a79497096f0ff18178257c57e61dfb7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/evaltest.c +++ /dev/null @@ -1,507 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This program was originally written by someone else (Simon Hui?); - I just added a bit more GLUT stuff to it. */ - -#include -#include -#include -#include -#include - -#define VORDER 10 -#define CORDER 10 -#define TORDER 3 - -#define VMAJOR_ORDER 2 -#define VMINOR_ORDER 3 - -#define CMAJOR_ORDER 2 -#define CMINOR_ORDER 2 - -#define TMAJOR_ORDER 2 -#define TMINOR_ORDER 2 - -#define VDIM 4 -#define CDIM 4 -#define TDIM 2 - -#define ONE_D 1 -#define TWO_D 2 - -#define EVAL 3 -#define MESH 4 - -GLenum doubleBuffer; - -float rotX = 0.0, rotY = 0.0, translateZ = -1.0; - -GLenum arrayType = ONE_D; -GLenum colorType = GL_FALSE; -GLenum textureType = GL_FALSE; -GLenum polygonFilled = GL_FALSE; -GLenum lighting = GL_FALSE; -GLenum mapPoint = GL_FALSE; -GLenum mapType = EVAL; - -double point1[10 * 4] = -{ - -0.5, 0.0, 0.0, 1.0, - -0.4, 0.5, 0.0, 1.0, - -0.3, -0.5, 0.0, 1.0, - -0.2, 0.5, 0.0, 1.0, - -0.1, -0.5, 0.0, 1.0, - 0.0, 0.5, 0.0, 1.0, - 0.1, -0.5, 0.0, 1.0, - 0.2, 0.5, 0.0, 1.0, - 0.3, -0.5, 0.0, 1.0, - 0.4, 0.0, 0.0, 1.0, -}; -double cpoint1[10 * 4] = -{ - 0.0, 0.0, 1.0, 1.0, - 0.3, 0.0, 0.7, 1.0, - 0.6, 0.0, 0.3, 1.0, - 1.0, 0.0, 0.0, 1.0, - 1.0, 0.3, 0.0, 1.0, - 1.0, 0.6, 0.0, 1.0, - 1.0, 1.0, 0.0, 1.0, - 1.0, 1.0, 0.5, 1.0, - 1.0, 1.0, 1.0, 1.0, -}; -double tpoint1[11 * 4] = -{ - 0.0, 0.0, 0.0, 1.0, - 0.0, 0.1, 0.0, 1.0, - 0.0, 0.2, 0.0, 1.0, - 0.0, 0.3, 0.0, 1.0, - 0.0, 0.4, 0.0, 1.0, - 0.0, 0.5, 0.0, 1.0, - 0.0, 0.6, 0.0, 1.0, - 0.0, 0.7, 0.0, 1.0, - 0.0, 0.8, 0.0, 1.0, - 0.0, 0.9, 0.0, 1.0, -}; -double point2[2 * 3 * 4] = -{ - -0.5, -0.5, 0.5, 1.0, - 0.0, 1.0, 0.5, 1.0, - 0.5, -0.5, 0.5, 1.0, - -0.5, 0.5, -0.5, 1.0, - 0.0, -1.0, -0.5, 1.0, - 0.5, 0.5, -0.5, 1.0, -}; -double cpoint2[2 * 2 * 4] = -{ - 0.0, 0.0, 0.0, 1.0, - 0.0, 0.0, 1.0, 1.0, - 0.0, 1.0, 0.0, 1.0, - 1.0, 1.0, 1.0, 1.0, -}; -double tpoint2[2 * 2 * 2] = -{ - 0.0, 0.0, 0.0, 1.0, - 1.0, 0.0, 1.0, 1.0, -}; -float textureImage[4 * 2 * 4] = -{ - 1.0, 1.0, 1.0, 1.0, - 1.0, 0.0, 0.0, 1.0, - 1.0, 0.0, 0.0, 1.0, - 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 1.0, - 1.0, 0.0, 0.0, 1.0, - 1.0, 0.0, 0.0, 1.0, - 1.0, 1.0, 1.0, 1.0, -}; - -static void -Init(void) -{ - static float ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - static float position[] = - {0.0, 0.0, -150.0, 0.0}; - static float front_mat_diffuse[] = - {1.0, 0.2, 1.0, 1.0}; - static float back_mat_diffuse[] = - {1.0, 1.0, 0.2, 1.0}; - static float lmodel_ambient[] = - {1.0, 1.0, 1.0, 1.0}; - static float lmodel_twoside[] = - {GL_TRUE}; - static float decal[] = - {GL_DECAL}; - static float repeat[] = - {GL_REPEAT}; - static float nr[] = - {GL_NEAREST}; - - glFrontFace(GL_CCW); - - glEnable(GL_DEPTH_TEST); - - glMap1d(GL_MAP1_VERTEX_4, 0.0, 1.0, VDIM, VORDER, point1); - glMap1d(GL_MAP1_COLOR_4, 0.0, 1.0, CDIM, CORDER, cpoint1); - - glMap2d(GL_MAP2_VERTEX_4, 0.0, 1.0, VMINOR_ORDER * VDIM, VMAJOR_ORDER, 0.0, - 1.0, VDIM, VMINOR_ORDER, point2); - glMap2d(GL_MAP2_COLOR_4, 0.0, 1.0, CMINOR_ORDER * CDIM, CMAJOR_ORDER, 0.0, - 1.0, CDIM, CMINOR_ORDER, cpoint2); - glMap2d(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, TMINOR_ORDER * TDIM, - TMAJOR_ORDER, 0.0, 1.0, TDIM, TMINOR_ORDER, tpoint2); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glMaterialfv(GL_FRONT, GL_DIFFUSE, front_mat_diffuse); - glMaterialfv(GL_BACK, GL_DIFFUSE, back_mat_diffuse); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, decal); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, repeat); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, repeat); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nr); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nr); - glTexImage2D(GL_TEXTURE_2D, 0, 4, 2, 4, 0, GL_RGBA, GL_FLOAT, - (GLvoid *) textureImage); -} - -static void -DrawPoints1(void) -{ - GLint i; - - glColor3f(0.0, 1.0, 0.0); - glPointSize(2); - glBegin(GL_POINTS); - for (i = 0; i < VORDER; i++) { - glVertex4dv(&point1[i * 4]); - } - glEnd(); -} - -static void -DrawPoints2(void) -{ - GLint i, j; - - glColor3f(1.0, 0.0, 1.0); - glPointSize(2); - glBegin(GL_POINTS); - for (i = 0; i < VMAJOR_ORDER; i++) { - for (j = 0; j < VMINOR_ORDER; j++) { - glVertex4dv(&point2[i * 4 * VMINOR_ORDER + j * 4]); - } - } - glEnd(); -} - -static void -DrawMapEval1(float du) -{ - float u; - - glColor3f(1.0, 0.0, 0.0); - glBegin(GL_LINE_STRIP); - for (u = 0.0; u < 1.0; u += du) { - glEvalCoord1d(u); - } - glEvalCoord1d(1.0); - glEnd(); -} - -static void -DrawMapEval2(float du, float dv) -{ - float u, v, tmp; - - glColor3f(1.0, 0.0, 0.0); - for (v = 0.0; v < 1.0; v += dv) { - glBegin(GL_QUAD_STRIP); - for (u = 0.0; u <= 1.0; u += du) { - glEvalCoord2d(u, v); - tmp = (v + dv < 1.0) ? (v + dv) : 1.0; - glEvalCoord2d(u, tmp); - } - glEvalCoord2d(1.0, v); - glEvalCoord2d(1.0, v + dv); - glEnd(); - } -} - -static void -RenderEval(void) -{ - - if (colorType) { - glEnable(GL_MAP1_COLOR_4); - glEnable(GL_MAP2_COLOR_4); - } else { - glDisable(GL_MAP1_COLOR_4); - glDisable(GL_MAP2_COLOR_4); - } - - if (textureType) { - glEnable(GL_TEXTURE_2D); - glEnable(GL_MAP2_TEXTURE_COORD_2); - } else { - glDisable(GL_TEXTURE_2D); - glDisable(GL_MAP2_TEXTURE_COORD_2); - } - - if (polygonFilled) { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - } - - glShadeModel(GL_SMOOTH); - - switch (mapType) { - case EVAL: - switch (arrayType) { - case ONE_D: - glDisable(GL_MAP2_VERTEX_4); - glEnable(GL_MAP1_VERTEX_4); - DrawPoints1(); - DrawMapEval1(0.1 / VORDER); - break; - case TWO_D: - glDisable(GL_MAP1_VERTEX_4); - glEnable(GL_MAP2_VERTEX_4); - DrawPoints2(); - DrawMapEval2(0.1 / VMAJOR_ORDER, 0.1 / VMINOR_ORDER); - break; - } - break; - case MESH: - switch (arrayType) { - case ONE_D: - DrawPoints1(); - glDisable(GL_MAP2_VERTEX_4); - glEnable(GL_MAP1_VERTEX_4); - glColor3f(0.0, 0.0, 1.0); - glMapGrid1d(40, 0.0, 1.0); - if (mapPoint) { - glPointSize(2); - glEvalMesh1(GL_POINT, 0, 40); - } else { - glEvalMesh1(GL_LINE, 0, 40); - } - break; - case TWO_D: - DrawPoints2(); - glDisable(GL_MAP1_VERTEX_4); - glEnable(GL_MAP2_VERTEX_4); - glColor3f(0.0, 0.0, 1.0); - glMapGrid2d(20, 0.0, 1.0, 20, 0.0, 1.0); - if (mapPoint) { - glPointSize(2); - glEvalMesh2(GL_POINT, 0, 20, 0, 20); - } else if (polygonFilled) { - glEvalMesh2(GL_FILL, 0, 20, 0, 20); - } else { - glEvalMesh2(GL_LINE, 0, 20, 0, 20); - } - break; - default:; - /* Mesa makes GLenum be a C "enum" and gcc will warn if - all the cases of an enum are not tested in a switch - statement. Add default case to supress the error. */ - } - break; - } -} - -static void -Reshape(int width, int height) -{ - - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -static void -Key(unsigned char key, int x, int y) -{ - switch (key) { - case '1': - arrayType = ONE_D; - glDisable(GL_AUTO_NORMAL); - glutPostRedisplay(); - break; - case '2': - arrayType = TWO_D; - glEnable(GL_AUTO_NORMAL); - glutPostRedisplay(); - break; - case '3': - mapType = EVAL; - glutPostRedisplay(); - break; - case '4': - mapType = MESH; - glutPostRedisplay(); - break; - case '5': - polygonFilled = !polygonFilled; - glutPostRedisplay(); - break; - case '6': - mapPoint = !mapPoint; - glutPostRedisplay(); - break; - case '7': - colorType = !colorType; - glutPostRedisplay(); - break; - case '8': - textureType = !textureType; - glutPostRedisplay(); - break; - case '9': - lighting = !lighting; - if (lighting) { - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - if (arrayType == TWO_D) { - glEnable(GL_AUTO_NORMAL); - } else { - glDisable(GL_AUTO_NORMAL); - } - } else { - glDisable(GL_LIGHTING); - glDisable(GL_LIGHT0); - glDisable(GL_AUTO_NORMAL); - } - glutPostRedisplay(); - break; - case 27: /* Escape key. */ - exit(0); - } -} - -static void -Menu(int value) -{ - /* Menu items have key values assigned to them. Just pass - this value to the key routine. */ - Key((unsigned char) value, 0, 0); -} - -/* ARGSUSED1 */ -static void -SpecialKey(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - rotY -= 30; - glutPostRedisplay(); - break; - case GLUT_KEY_RIGHT: - rotY += 30; - glutPostRedisplay(); - break; - case GLUT_KEY_UP: - rotX -= 30; - glutPostRedisplay(); - break; - case GLUT_KEY_DOWN: - rotX += 30; - glutPostRedisplay(); - break; - } -} - -static void -Draw(void) -{ - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(0.0, 0.0, translateZ); - glRotatef(rotX, 1, 0, 0); - glRotatef(rotY, 0, 1, 0); - RenderEval(); - - glPopMatrix(); - - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -static void -Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } - } -} - -int -main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - Args(argc, argv); - - type = GLUT_RGB | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - glutInitWindowSize(300, 300); - glutCreateWindow("Evaluator Test"); - - glutCreateMenu(Menu); - glutAddMenuEntry("One dimensional", '1'); - glutAddMenuEntry("Two dimensional", '2'); - glutAddMenuEntry("Eval map type", '3'); - glutAddMenuEntry("Mesh map type", '4'); - glutAddMenuEntry("Toggle filled", '5'); - glutAddMenuEntry("Toggle map point", '6'); - glutAddMenuEntry("Toggle color", '7'); - glutAddMenuEntry("Toggle texture", '8'); - glutAddMenuEntry("Toggle lighting", '9'); - glutAddMenuEntry("Quit", 27); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutAttachMenu(GLUT_LEFT_BUTTON); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/examples/evaltest.dsp b/lib/glut-3.7.6/progs/examples/evaltest.dsp deleted file mode 100644 index 7b12ae166ae78bdc360768ebe0d7dfb6e3fe6214..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/evaltest.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="evaltest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=evaltest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "evaltest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "evaltest.mak" CFG="evaltest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "evaltest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "evaltest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "evaltest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "evaltest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "evaltest - Win32 Release" -# Name "evaltest - Win32 Debug" -# Begin Source File - -SOURCE=.\evaltest.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/fogtst.c b/lib/glut-3.7.6/progs/examples/fogtst.c deleted file mode 100644 index 76768db7c1f9c5f50b11c45600b0d60b4e45c63a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/fogtst.c +++ /dev/null @@ -1,261 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include - -GLenum doubleBuffer; -double plane[4] = { - 1.0, 0.0, -1.0, 0.0 -}; -float rotX = 5.0, rotY = -5.0, zTranslate = -65.0; -float fogDensity = 0.02; -GLint cubeList = 1; - -float scp[18][3] = { - {1.000000, 0.000000, 0.000000}, - {1.000000, 0.000000, 5.000000}, - {0.707107, 0.707107, 0.000000}, - {0.707107, 0.707107, 5.000000}, - {0.000000, 1.000000, 0.000000}, - {0.000000, 1.000000, 5.000000}, - {-0.707107, 0.707107, 0.000000}, - {-0.707107, 0.707107, 5.000000}, - {-1.000000, 0.000000, 0.000000}, - {-1.000000, 0.000000, 5.000000}, - {-0.707107, -0.707107, 0.000000}, - {-0.707107, -0.707107, 5.000000}, - {0.000000, -1.000000, 0.000000}, - {0.000000, -1.000000, 5.000000}, - {0.707107, -0.707107, 0.000000}, - {0.707107, -0.707107, 5.000000}, - {1.000000, 0.000000, 0.000000}, - {1.000000, 0.000000, 5.000000}, -}; - -static float ambient[] = {0.1, 0.1, 0.1, 1.0}; -static float diffuse[] = {1.0, 1.0, 1.0, 1.0}; -static float position[] = {90.0, 90.0, 0.0, 0.0}; -static float front_mat_shininess[] = {30.0}; -static float front_mat_specular[] = {0.0, 0.0, 0.0, 1.0}; -static float front_mat_diffuse[] = {0.0, 1.0, 0.0, 1.0}; -static float back_mat_shininess[] = {50.0}; -static float back_mat_specular[] = {0.0, 0.0, 1.0, 1.0}; -static float back_mat_diffuse[] = {1.0, 0.0, 0.0, 1.0}; -static float lmodel_ambient[] = {0.0, 0.0, 0.0, 1.0}; -static float fog_color[] = {0.8, 0.8, 0.8, 1.0}; - -/* ARGSUSED1 */ -static void - Key(unsigned char key, int x, int y) -{ - switch (key) { - case 'd': - fogDensity *= 1.10; - glFogf(GL_FOG_DENSITY, fogDensity); - glutPostRedisplay(); - break; - case 'D': - fogDensity /= 1.10; - glFogf(GL_FOG_DENSITY, fogDensity); - glutPostRedisplay(); - break; - case 27: - exit(0); - } -} - -/* ARGSUSED1 */ -static void - SpecialKey(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_UP: - rotX -= 5; - glutPostRedisplay(); - break; - case GLUT_KEY_DOWN: - rotX += 5; - glutPostRedisplay(); - break; - case GLUT_KEY_LEFT: - rotY -= 5; - glutPostRedisplay(); - break; - case GLUT_KEY_RIGHT: - rotY += 5; - glutPostRedisplay(); - break; - } -} - -static void - Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(0, 0, zTranslate); - /* XXX hooky dual axis rotation! */ - glRotatef(rotY, 0, 1, 0); - glRotatef(rotX, 1, 0, 0); - glScalef(1.0, 1.0, 10.0); - - glCallList(cubeList); - - glPopMatrix(); - - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -static void - Args(int argc, char **argv) -{ - GLint i; - doubleBuffer = GL_TRUE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } - } -} - -int - main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - Args(argc, argv); - - type = GLUT_RGB | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - glutInitWindowSize(300, 300); - glutCreateWindow("Fog Test"); - - glFrontFace(GL_CW); - - glEnable(GL_DEPTH_TEST); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glMaterialfv(GL_FRONT, GL_SHININESS, front_mat_shininess); - glMaterialfv(GL_FRONT, GL_SPECULAR, front_mat_specular); - glMaterialfv(GL_FRONT, GL_DIFFUSE, front_mat_diffuse); - glMaterialfv(GL_BACK, GL_SHININESS, back_mat_shininess); - glMaterialfv(GL_BACK, GL_SPECULAR, back_mat_specular); - glMaterialfv(GL_BACK, GL_DIFFUSE, back_mat_diffuse); - - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_EXP); - glFogf(GL_FOG_DENSITY, fogDensity); - glFogfv(GL_FOG_COLOR, fog_color); - glClearColor(0.8, 0.8, 0.8, 1.0); - /* *INDENT-OFF* */ - glNewList(cubeList, GL_COMPILE); - glBegin(GL_TRIANGLE_STRIP); - glNormal3fv(scp[0]); - glVertex3fv(scp[0]); - glNormal3fv(scp[0]); - glVertex3fv(scp[1]); - glNormal3fv(scp[2]); - glVertex3fv(scp[2]); - glNormal3fv(scp[2]); - glVertex3fv(scp[3]); - glNormal3fv(scp[4]); - glVertex3fv(scp[4]); - glNormal3fv(scp[4]); - glVertex3fv(scp[5]); - glNormal3fv(scp[6]); - glVertex3fv(scp[6]); - glNormal3fv(scp[6]); - glVertex3fv(scp[7]); - glNormal3fv(scp[8]); - glVertex3fv(scp[8]); - glNormal3fv(scp[8]); - glVertex3fv(scp[9]); - glNormal3fv(scp[10]); - glVertex3fv(scp[10]); - glNormal3fv(scp[10]); - glVertex3fv(scp[11]); - glNormal3fv(scp[12]); - glVertex3fv(scp[12]); - glNormal3fv(scp[12]); - glVertex3fv(scp[13]); - glNormal3fv(scp[14]); - glVertex3fv(scp[14]); - glNormal3fv(scp[14]); - glVertex3fv(scp[15]); - glNormal3fv(scp[16]); - glVertex3fv(scp[16]); - glNormal3fv(scp[16]); - glVertex3fv(scp[17]); - glEnd(); - glEndList(); - /* *INDENT-ON* */ - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0, 1.0, 1.0, 200.0); - glMatrixMode(GL_MODELVIEW); - - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/fogtst.dsp b/lib/glut-3.7.6/progs/examples/fogtst.dsp deleted file mode 100644 index 974d26fb9857de0d735275cbf6bc6c168be8870b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/fogtst.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fogtst" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fogtst - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fogtst.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fogtst.mak" CFG="fogtst - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fogtst - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fogtst - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fogtst - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fogtst - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fogtst - Win32 Release" -# Name "fogtst - Win32 Debug" -# Begin Source File - -SOURCE=.\fogtst.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/fontdemo.c b/lib/glut-3.7.6/progs/examples/fontdemo.c deleted file mode 100644 index 88480a5768027332e43086e862c30f263d6fdaa9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/fontdemo.c +++ /dev/null @@ -1,102 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -void -bitmap_output(int x, int y, char *string, void *font) -{ - int len, i; - - glRasterPos2f(x, y); - len = (int) strlen(string); - for (i = 0; i < len; i++) { - glutBitmapCharacter(font, string[i]); - } -} - -void -stroke_output(GLfloat x, GLfloat y, char *format,...) -{ - va_list args; - char buffer[200], *p; - - va_start(args, format); - vsprintf(buffer, format, args); - va_end(args); - glPushMatrix(); - glTranslatef(x, y, 0); - glScalef(0.005, 0.005, 0.005); - for (p = buffer; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - glPopMatrix(); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - bitmap_output(40, 35, "This is written in a GLUT bitmap font.", - GLUT_BITMAP_TIMES_ROMAN_24); - bitmap_output(30, 210, "More bitmap text is a fixed 9 by 15 font.", - GLUT_BITMAP_9_BY_15); - bitmap_output(70, 240, " Helvetica is yet another bitmap font.", - GLUT_BITMAP_HELVETICA_18); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluPerspective(40.0, 1.0, 0.1, 20.0); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - gluLookAt(0.0, 0.0, 4.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glPushMatrix(); - glTranslatef(0, 0, -4); - glRotatef(50, 0, 1, 0); - stroke_output(-2.5, 1.1, " This is written in a"); - stroke_output(-2.5, 0, " GLUT stroke font."); - stroke_output(-2.5, -1.1, "using 3D perspective."); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glFlush(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glScalef(1, -1, 1); - glTranslatef(0, -h, 0); - glMatrixMode(GL_MODELVIEW); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(465, 250); - glutCreateWindow("GLUT bitmap & stroke font example"); - glClearColor(1.0, 1.0, 1.0, 1.0); - glColor3f(0, 0, 0); - glLineWidth(3.0); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/fontdemo.dsp b/lib/glut-3.7.6/progs/examples/fontdemo.dsp deleted file mode 100644 index 4233c5f117693d9eb2ed95d19f4bc43441e50052..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/fontdemo.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fontdemo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fontdemo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fontdemo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fontdemo.mak" CFG="fontdemo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fontdemo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fontdemo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fontdemo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fontdemo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fontdemo - Win32 Release" -# Name "fontdemo - Win32 Debug" -# Begin Source File - -SOURCE=.\fontdemo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/glpuzzle.c b/lib/glut-3.7.6/progs/examples/glpuzzle.c deleted file mode 100644 index b0c3f3629655152733b9567159eb5259cc59df7f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/glpuzzle.c +++ /dev/null @@ -1,1439 +0,0 @@ - -/* glpuzzle - written by Kevin Smith (kpsmith@engr.sgi.com) */ - -#include -#include -#include -#include -#include -#include -#include -#include "trackball.h" - -#define WIDTH 4 -#define HEIGHT 5 -#define PIECES 10 -#define OFFSETX -2 -#define OFFSETY -2.5 -#define OFFSETZ -0.5 - -typedef unsigned char Config[HEIGHT][WIDTH]; - -struct puzzle { - struct puzzle *backptr; - struct puzzle *solnptr; - Config pieces; - struct puzzle *next; - unsigned hashvalue; -}; - -#define HASHSIZE 10691 - -struct puzzlelist { - struct puzzle *puzzle; - struct puzzlelist *next; -}; - -static char convert[PIECES + 1] = -{0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4}; - -static unsigned char colors[PIECES + 1][3] = -{ - {0, 0, 0}, - {255, 255, 127}, - {255, 255, 127}, - {255, 255, 127}, - {255, 255, 127}, - {255, 127, 255}, - {255, 127, 255}, - {255, 127, 255}, - {255, 127, 255}, - {255, 127, 127}, - {255, 255, 255}, -}; - -void changeState(void); - -static struct puzzle *hashtable[HASHSIZE]; -static struct puzzle *startPuzzle; -static struct puzzlelist *puzzles; -static struct puzzlelist *lastentry; - -int curX, curY, visible; - -#define MOVE_SPEED 0.2 -static unsigned char movingPiece; -static float move_x, move_y; -static float curquat[4]; -static int doubleBuffer = 1; -static int depth = 1; - -static char xsize[PIECES + 1] = -{0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2}; -static char ysize[PIECES + 1] = -{0, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2}; -static float zsize[PIECES + 1] = -{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.6}; - -static Config startConfig = -{ - {8, 10, 10, 7}, - {8, 10, 10, 7}, - {6, 9, 9, 5}, - {6, 4, 3, 5}, - {2, 0, 0, 1} -}; - -static Config thePuzzle = -{ - {8, 10, 10, 7}, - {8, 10, 10, 7}, - {6, 9, 9, 5}, - {6, 4, 3, 5}, - {2, 0, 0, 1} -}; - -static int xadds[4] = -{-1, 0, 1, 0}; -static int yadds[4] = -{0, -1, 0, 1}; - -static int W = 400, H = 300; -static GLint viewport[4]; - -#define srandom srand -#define random() (rand() >> 2) - -unsigned -hash(Config config) -{ - int i, j, value; - - value = 0; - for (i = 0; i < HEIGHT; i++) { - for (j = 0; j < WIDTH; j++) { - value = value + convert[config[i][j]]; - value *= 6; - } - } - return (value); -} - -int -solution(Config config) -{ - if (config[4][1] == 10 && config[4][2] == 10) - return (1); - return (0); -} - -float boxcoords[][3] = -{ - {0.2, 0.2, 0.9}, - {0.8, 0.2, 0.9}, - {0.8, 0.8, 0.9}, - {0.2, 0.8, 0.9}, - {0.2, 0.1, 0.8}, - {0.8, 0.1, 0.8}, - {0.9, 0.2, 0.8}, - {0.9, 0.8, 0.8}, - {0.8, 0.9, 0.8}, - {0.2, 0.9, 0.8}, - {0.1, 0.8, 0.8}, - {0.1, 0.2, 0.8}, - {0.2, 0.1, 0.2}, - {0.8, 0.1, 0.2}, - {0.9, 0.2, 0.2}, - {0.9, 0.8, 0.2}, - {0.8, 0.9, 0.2}, - {0.2, 0.9, 0.2}, - {0.1, 0.8, 0.2}, - {0.1, 0.2, 0.2}, - {0.2, 0.2, 0.1}, - {0.8, 0.2, 0.1}, - {0.8, 0.8, 0.1}, - {0.2, 0.8, 0.1}, -}; - -float boxnormals[][3] = -{ - {0, 0, 1}, /* 0 */ - {0, 1, 0}, - {1, 0, 0}, - {0, 0, -1}, - {0, -1, 0}, - {-1, 0, 0}, - {0.7071, 0.7071, 0.0000}, /* 6 */ - {0.7071, -0.7071, 0.0000}, - {-0.7071, 0.7071, 0.0000}, - {-0.7071, -0.7071, 0.0000}, - {0.7071, 0.0000, 0.7071}, /* 10 */ - {0.7071, 0.0000, -0.7071}, - {-0.7071, 0.0000, 0.7071}, - {-0.7071, 0.0000, -0.7071}, - {0.0000, 0.7071, 0.7071}, /* 14 */ - {0.0000, 0.7071, -0.7071}, - {0.0000, -0.7071, 0.7071}, - {0.0000, -0.7071, -0.7071}, - {0.5774, 0.5774, 0.5774}, /* 18 */ - {0.5774, 0.5774, -0.5774}, - {0.5774, -0.5774, 0.5774}, - {0.5774, -0.5774, -0.5774}, - {-0.5774, 0.5774, 0.5774}, - {-0.5774, 0.5774, -0.5774}, - {-0.5774, -0.5774, 0.5774}, - {-0.5774, -0.5774, -0.5774}, -}; - -int boxfaces[][4] = -{ - {0, 1, 2, 3}, /* 0 */ - {9, 8, 16, 17}, - {6, 14, 15, 7}, - {20, 23, 22, 21}, - {12, 13, 5, 4}, - {19, 11, 10, 18}, - {7, 15, 16, 8}, /* 6 */ - {13, 14, 6, 5}, - {18, 10, 9, 17}, - {19, 12, 4, 11}, - {1, 6, 7, 2}, /* 10 */ - {14, 21, 22, 15}, - {11, 0, 3, 10}, - {20, 19, 18, 23}, - {3, 2, 8, 9}, /* 14 */ - {17, 16, 22, 23}, - {4, 5, 1, 0}, - {20, 21, 13, 12}, - {2, 7, 8, -1}, /* 18 */ - {16, 15, 22, -1}, - {5, 6, 1, -1}, - {13, 21, 14, -1}, - {10, 3, 9, -1}, - {18, 17, 23, -1}, - {11, 4, 0, -1}, - {20, 12, 19, -1}, -}; - -#define NBOXFACES (sizeof(boxfaces)/sizeof(boxfaces[0])) - -/* Draw a box. Bevel as desired. */ -void -drawBox(int piece, float xoff, float yoff) -{ - int xlen, ylen; - int i, k; - float x, y, z; - float zlen; - float *v; - - xlen = xsize[piece]; - ylen = ysize[piece]; - zlen = zsize[piece]; - - glColor3ubv(colors[piece]); - glBegin(GL_QUADS); - for (i = 0; i < 18; i++) { - glNormal3fv(boxnormals[i]); - for (k = 0; k < 4; k++) { - if (boxfaces[i][k] == -1) - continue; - v = boxcoords[boxfaces[i][k]]; - x = v[0] + OFFSETX; - if (v[0] > 0.5) - x += xlen - 1; - y = v[1] + OFFSETY; - if (v[1] > 0.5) - y += ylen - 1; - z = v[2] + OFFSETZ; - if (v[2] > 0.5) - z += zlen - 1; - glVertex3f(xoff + x, yoff + y, z); - } - } - glEnd(); - glBegin(GL_TRIANGLES); - for (i = 18; i < NBOXFACES; i++) { - glNormal3fv(boxnormals[i]); - for (k = 0; k < 3; k++) { - if (boxfaces[i][k] == -1) - continue; - v = boxcoords[boxfaces[i][k]]; - x = v[0] + OFFSETX; - if (v[0] > 0.5) - x += xlen - 1; - y = v[1] + OFFSETY; - if (v[1] > 0.5) - y += ylen - 1; - z = v[2] + OFFSETZ; - if (v[2] > 0.5) - z += zlen - 1; - glVertex3f(xoff + x, yoff + y, z); - } - } - glEnd(); -} - -float containercoords[][3] = -{ - {-0.1, -0.1, 1.0}, - {-0.1, -0.1, -0.1}, - {4.1, -0.1, -0.1}, - {4.1, -0.1, 1.0}, - {1.0, -0.1, 0.6}, /* 4 */ - {3.0, -0.1, 0.6}, - {1.0, -0.1, 0.0}, - {3.0, -0.1, 0.0}, - {1.0, 0.0, 0.0}, /* 8 */ - {3.0, 0.0, 0.0}, - {3.0, 0.0, 0.6}, - {1.0, 0.0, 0.6}, - {0.0, 0.0, 1.0}, /* 12 */ - {4.0, 0.0, 1.0}, - {4.0, 0.0, 0.0}, - {0.0, 0.0, 0.0}, - {0.0, 5.0, 0.0}, /* 16 */ - {0.0, 5.0, 1.0}, - {4.0, 5.0, 1.0}, - {4.0, 5.0, 0.0}, - {-0.1, 5.1, -0.1}, /* 20 */ - {4.1, 5.1, -0.1}, - {4.1, 5.1, 1.0}, - {-0.1, 5.1, 1.0}, -}; - -float containernormals[][3] = -{ - {0, -1, 0}, - {0, -1, 0}, - {0, -1, 0}, - {0, -1, 0}, - {0, -1, 0}, - {0, 1, 0}, - {0, 1, 0}, - {0, 1, 0}, - {1, 0, 0}, - {1, 0, 0}, - {1, 0, 0}, - {-1, 0, 0}, - {-1, 0, 0}, - {-1, 0, 0}, - {0, 1, 0}, - {0, 0, -1}, - {0, 0, -1}, - {0, 0, 1}, - {0, 0, 1}, - {0, 0, 1}, - {0, 0, 1}, - {0, 0, 1}, - {0, 0, 1}, - {0, 0, 1}, -}; - -int containerfaces[][4] = -{ - {1, 6, 4, 0}, - {0, 4, 5, 3}, - {1, 2, 7, 6}, - {7, 2, 3, 5}, - {16, 19, 18, 17}, - - {23, 22, 21, 20}, - {12, 11, 8, 15}, - {10, 13, 14, 9}, - - {15, 16, 17, 12}, - {2, 21, 22, 3}, - {6, 8, 11, 4}, - - {1, 0, 23, 20}, - {14, 13, 18, 19}, - {9, 7, 5, 10}, - - {12, 13, 10, 11}, - - {1, 20, 21, 2}, - {4, 11, 10, 5}, - - {15, 8, 19, 16}, - {19, 8, 9, 14}, - {8, 6, 7, 9}, - {0, 3, 13, 12}, - {13, 3, 22, 18}, - {18, 22, 23, 17}, - {17, 23, 0, 12}, -}; - -#define NCONTFACES (sizeof(containerfaces)/sizeof(containerfaces[0])) - -/* Draw the container */ -void -drawContainer(void) -{ - int i, k; - float *v; - - /* Y is reversed here because the model has it reversed */ - - /* Arbitrary bright wood-like color */ - glColor3ub(209, 103, 23); - glBegin(GL_QUADS); - for (i = 0; i < NCONTFACES; i++) { - v = containernormals[i]; - glNormal3f(v[0], -v[1], v[2]); - for (k = 3; k >= 0; k--) { - v = containercoords[containerfaces[i][k]]; - glVertex3f(v[0] + OFFSETX, -(v[1] + OFFSETY), v[2] + OFFSETZ); - } - } - glEnd(); -} - -void -drawAll(void) -{ - int i, j; - int piece; - char done[PIECES + 1]; - float m[4][4]; - - build_rotmatrix(m, curquat); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -10); - glMultMatrixf(&(m[0][0])); - glRotatef(180, 0, 0, 1); - - if (depth) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - } else { - glClear(GL_COLOR_BUFFER_BIT); - } - for (i = 1; i <= PIECES; i++) { - done[i] = 0; - } - glLoadName(0); - drawContainer(); - for (i = 0; i < HEIGHT; i++) { - for (j = 0; j < WIDTH; j++) { - piece = thePuzzle[i][j]; - if (piece == 0) - continue; - if (done[piece]) - continue; - done[piece] = 1; - glLoadName(piece); - if (piece == movingPiece) { - drawBox(piece, move_x, move_y); - } else { - drawBox(piece, j, i); - } - } - } -} - -void -redraw(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45, 1.0, 0.1, 100.0); - - drawAll(); - - if (doubleBuffer) - glutSwapBuffers(); - else - glFinish(); -} - -void -solidifyChain(struct puzzle *puzzle) -{ - int i; - char buf[256]; - - i = 0; - while (puzzle->backptr) { - i++; - puzzle->backptr->solnptr = puzzle; - puzzle = puzzle->backptr; - } - sprintf(buf, "%d moves to complete!", i); - glutSetWindowTitle(buf); -} - -int -addConfig(Config config, struct puzzle *back) -{ - unsigned hashvalue; - struct puzzle *newpiece; - struct puzzlelist *newlistentry; - - hashvalue = hash(config); - - newpiece = hashtable[hashvalue % HASHSIZE]; - while (newpiece != NULL) { - if (newpiece->hashvalue == hashvalue) { - int i, j; - - for (i = 0; i < WIDTH; i++) { - for (j = 0; j < HEIGHT; j++) { - if (convert[config[j][i]] != - convert[newpiece->pieces[j][i]]) - goto nomatch; - } - } - return 0; - } - nomatch: - newpiece = newpiece->next; - } - - newpiece = (struct puzzle *) malloc(sizeof(struct puzzle)); - newpiece->next = hashtable[hashvalue % HASHSIZE]; - newpiece->hashvalue = hashvalue; - memcpy(newpiece->pieces, config, HEIGHT * WIDTH); - newpiece->backptr = back; - newpiece->solnptr = NULL; - hashtable[hashvalue % HASHSIZE] = newpiece; - - newlistentry = (struct puzzlelist *) malloc(sizeof(struct puzzlelist)); - newlistentry->puzzle = newpiece; - newlistentry->next = NULL; - - if (lastentry) { - lastentry->next = newlistentry; - } else { - puzzles = newlistentry; - } - lastentry = newlistentry; - - if (back == NULL) { - startPuzzle = newpiece; - } - if (solution(config)) { - solidifyChain(newpiece); - return 1; - } - return 0; -} - -/* Checks if a space can move */ -int -canmove0(Config pieces, int x, int y, int dir, Config newpieces) -{ - char piece; - int xadd, yadd; - int l, m; - - xadd = xadds[dir]; - yadd = yadds[dir]; - - if (x + xadd < 0 || x + xadd >= WIDTH || - y + yadd < 0 || y + yadd >= HEIGHT) - return 0; - piece = pieces[y + yadd][x + xadd]; - if (piece == 0) - return 0; - memcpy(newpieces, pieces, HEIGHT * WIDTH); - for (l = 0; l < WIDTH; l++) { - for (m = 0; m < HEIGHT; m++) { - if (newpieces[m][l] == piece) - newpieces[m][l] = 0; - } - } - xadd = -xadd; - yadd = -yadd; - for (l = 0; l < WIDTH; l++) { - for (m = 0; m < HEIGHT; m++) { - if (pieces[m][l] == piece) { - int newx, newy; - - newx = l + xadd; - newy = m + yadd; - if (newx < 0 || newx >= WIDTH || - newy < 0 || newy >= HEIGHT) - return 0; - if (newpieces[newy][newx] != 0) - return 0; - newpieces[newy][newx] = piece; - } - } - } - return 1; -} - -/* Checks if a piece can move */ -int -canmove(Config pieces, int x, int y, int dir, Config newpieces) -{ - int xadd, yadd; - - xadd = xadds[dir]; - yadd = yadds[dir]; - - if (x + xadd < 0 || x + xadd >= WIDTH || - y + yadd < 0 || y + yadd >= HEIGHT) - return 0; - if (pieces[y + yadd][x + xadd] == pieces[y][x]) { - return canmove(pieces, x + xadd, y + yadd, dir, newpieces); - } - if (pieces[y + yadd][x + xadd] != 0) - return 0; - return canmove0(pieces, x + xadd, y + yadd, (dir + 2) % 4, newpieces); -} - -int -generateNewConfigs(struct puzzle *puzzle) -{ - int i, j, k; - Config pieces; - Config newpieces; - - memcpy(pieces, puzzle->pieces, HEIGHT * WIDTH); - for (i = 0; i < WIDTH; i++) { - for (j = 0; j < HEIGHT; j++) { - if (pieces[j][i] == 0) { - for (k = 0; k < 4; k++) { - if (canmove0(pieces, i, j, k, newpieces)) { - if (addConfig(newpieces, puzzle)) - return 1; - } - } - } - } - } - return 0; -} - -void -freeSolutions(void) -{ - struct puzzlelist *nextpuz; - struct puzzle *puzzle, *next; - int i; - - while (puzzles) { - nextpuz = puzzles->next; - free((char *) puzzles); - puzzles = nextpuz; - } - lastentry = NULL; - for (i = 0; i < HASHSIZE; i++) { - puzzle = hashtable[i]; - hashtable[i] = NULL; - while (puzzle) { - next = puzzle->next; - free((char *) puzzle); - puzzle = next; - } - } - startPuzzle = NULL; -} - -int -continueSolving(void) -{ - struct puzzle *nextpuz; - int i, j; - int movedPiece; - int movedir; - int fromx, fromy; - int tox, toy; - - if (startPuzzle == NULL) - return 0; - if (startPuzzle->solnptr == NULL) { - freeSolutions(); - return 0; - } - nextpuz = startPuzzle->solnptr; - movedPiece = 0; - movedir = 0; - for (i = 0; i < HEIGHT; i++) { - for (j = 0; j < WIDTH; j++) { - if (startPuzzle->pieces[i][j] != nextpuz->pieces[i][j]) { - if (startPuzzle->pieces[i][j]) { - movedPiece = startPuzzle->pieces[i][j]; - fromx = j; - fromy = i; - if (i < HEIGHT - 1 && nextpuz->pieces[i + 1][j] == movedPiece) { - movedir = 3; - } else { - movedir = 2; - } - goto found_piece; - } else { - movedPiece = nextpuz->pieces[i][j]; - if (i < HEIGHT - 1 && - startPuzzle->pieces[i + 1][j] == movedPiece) { - fromx = j; - fromy = i + 1; - movedir = 1; - } else { - fromx = j + 1; - fromy = i; - movedir = 0; - } - goto found_piece; - } - } - } - } - glutSetWindowTitle("What! No change?"); - freeSolutions(); - return 0; - -found_piece: - if (!movingPiece) { - movingPiece = movedPiece; - move_x = fromx; - move_y = fromy; - } - move_x += xadds[movedir] * MOVE_SPEED; - move_y += yadds[movedir] * MOVE_SPEED; - - tox = fromx + xadds[movedir]; - toy = fromy + yadds[movedir]; - - if (move_x > tox - MOVE_SPEED / 2 && move_x < tox + MOVE_SPEED / 2 && - move_y > toy - MOVE_SPEED / 2 && move_y < toy + MOVE_SPEED / 2) { - startPuzzle = nextpuz; - movingPiece = 0; - } - memcpy(thePuzzle, startPuzzle->pieces, HEIGHT * WIDTH); - changeState(); - return 1; -} - -int -solvePuzzle(void) -{ - struct puzzlelist *nextpuz; - char buf[256]; - int i; - - if (solution(thePuzzle)) { - glutSetWindowTitle("Puzzle already solved!"); - return 0; - } - addConfig(thePuzzle, NULL); - i = 0; - - while (puzzles) { - i++; - if (generateNewConfigs(puzzles->puzzle)) - break; - nextpuz = puzzles->next; - free((char *) puzzles); - puzzles = nextpuz; - } - if (puzzles == NULL) { - freeSolutions(); - sprintf(buf, "I can't solve it! (%d positions examined)", i); - glutSetWindowTitle(buf); - return 1; - } - return 1; -} - -int -selectPiece(int mousex, int mousey) -{ - long hits; - GLuint selectBuf[1024]; - GLuint closest; - GLuint dist; - - glSelectBuffer(1024, selectBuf); - (void) glRenderMode(GL_SELECT); - glInitNames(); - - /* Because LoadName() won't work with no names on the stack */ - glPushName(-1); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPickMatrix(mousex, H - mousey, 4, 4, viewport); - gluPerspective(45, 1.0, 0.1, 100.0); - - drawAll(); - - hits = glRenderMode(GL_RENDER); - if (hits <= 0) { - return 0; - } - closest = 0; - dist = 4294967295U; - while (hits) { - if (selectBuf[(hits - 1) * 4 + 1] < dist) { - dist = selectBuf[(hits - 1) * 4 + 1]; - closest = selectBuf[(hits - 1) * 4 + 3]; - } - hits--; - } - return closest; -} - -void -nukePiece(int piece) -{ - int i, j; - - for (i = 0; i < HEIGHT; i++) { - for (j = 0; j < WIDTH; j++) { - if (thePuzzle[i][j] == piece) { - thePuzzle[i][j] = 0; - } - } - } -} - -void -multMatrices(const GLfloat a[16], const GLfloat b[16], GLfloat r[16]) -{ - int i, j; - - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - r[i * 4 + j] = - a[i * 4 + 0] * b[0 * 4 + j] + - a[i * 4 + 1] * b[1 * 4 + j] + - a[i * 4 + 2] * b[2 * 4 + j] + - a[i * 4 + 3] * b[3 * 4 + j]; - } - } -} - -void -makeIdentity(GLfloat m[16]) -{ - m[0 + 4 * 0] = 1; - m[0 + 4 * 1] = 0; - m[0 + 4 * 2] = 0; - m[0 + 4 * 3] = 0; - m[1 + 4 * 0] = 0; - m[1 + 4 * 1] = 1; - m[1 + 4 * 2] = 0; - m[1 + 4 * 3] = 0; - m[2 + 4 * 0] = 0; - m[2 + 4 * 1] = 0; - m[2 + 4 * 2] = 1; - m[2 + 4 * 3] = 0; - m[3 + 4 * 0] = 0; - m[3 + 4 * 1] = 0; - m[3 + 4 * 2] = 0; - m[3 + 4 * 3] = 1; -} - -/* - ** inverse = invert(src) - */ -int -invertMatrix(const GLfloat src[16], GLfloat inverse[16]) -{ - int i, j, k, swap; - double t; - GLfloat temp[4][4]; - - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - temp[i][j] = src[i * 4 + j]; - } - } - makeIdentity(inverse); - - for (i = 0; i < 4; i++) { - /* - ** Look for largest element in column */ - swap = i; - for (j = i + 1; j < 4; j++) { - if (fabs(temp[j][i]) > fabs(temp[i][i])) { - swap = j; - } - } - - if (swap != i) { - /* - ** Swap rows. */ - for (k = 0; k < 4; k++) { - t = temp[i][k]; - temp[i][k] = temp[swap][k]; - temp[swap][k] = t; - - t = inverse[i * 4 + k]; - inverse[i * 4 + k] = inverse[swap * 4 + k]; - inverse[swap * 4 + k] = t; - } - } - if (temp[i][i] == 0) { - /* - ** No non-zero pivot. The matrix is singular, which - shouldn't ** happen. This means the user gave us a - bad matrix. */ - return 0; - } - t = temp[i][i]; - for (k = 0; k < 4; k++) { - temp[i][k] /= t; - inverse[i * 4 + k] /= t; - } - for (j = 0; j < 4; j++) { - if (j != i) { - t = temp[j][i]; - for (k = 0; k < 4; k++) { - temp[j][k] -= temp[i][k] * t; - inverse[j * 4 + k] -= inverse[i * 4 + k] * t; - } - } - } - } - return 1; -} - -/* - ** This is a screwball function. What it does is the following: - ** Given screen x and y coordinates, compute the corresponding object space - ** x and y coordinates given that the object space z is 0.9 + OFFSETZ. - ** Since the tops of (most) pieces are at z = 0.9 + OFFSETZ, we use that - ** number. - */ -int -computeCoords(int piece, int mousex, int mousey, - GLfloat * selx, GLfloat * sely) -{ - GLfloat modelMatrix[16]; - GLfloat projMatrix[16]; - GLfloat finalMatrix[16]; - GLfloat in[4]; - GLfloat a, b, c, d; - GLfloat top, bot; - GLfloat z; - GLfloat w; - GLfloat height; - - if (piece == 0) - return 0; - height = zsize[piece] - 0.1 + OFFSETZ; - - glGetFloatv(GL_PROJECTION_MATRIX, projMatrix); - glGetFloatv(GL_MODELVIEW_MATRIX, modelMatrix); - multMatrices(modelMatrix, projMatrix, finalMatrix); - if (!invertMatrix(finalMatrix, finalMatrix)) - return 0; - - in[0] = (2.0 * (mousex - viewport[0]) / viewport[2]) - 1; - in[1] = (2.0 * ((H - mousey) - viewport[1]) / viewport[3]) - 1; - - a = in[0] * finalMatrix[0 * 4 + 2] + - in[1] * finalMatrix[1 * 4 + 2] + - finalMatrix[3 * 4 + 2]; - b = finalMatrix[2 * 4 + 2]; - c = in[0] * finalMatrix[0 * 4 + 3] + - in[1] * finalMatrix[1 * 4 + 3] + - finalMatrix[3 * 4 + 3]; - d = finalMatrix[2 * 4 + 3]; - - /* - ** Ok, now we need to solve for z: ** (a + b z) / (c + d - - z) = height. ** ("height" is the height in object space we - - want to solve z for) ** ** ==> a + b z = height c + - height d z ** bz - height d z = height c - a ** z = - (height c - a) / (b - height d) */ - top = height * c - a; - bot = b - height * d; - if (bot == 0.0) - return 0; - - z = top / bot; - - /* - ** Ok, no problem. ** Now we solve for x and y. We know - that w = c + d z, so we compute it. */ - w = c + d * z; - - /* - ** Now for x and y: */ - *selx = (in[0] * finalMatrix[0 * 4 + 0] + - in[1] * finalMatrix[1 * 4 + 0] + - z * finalMatrix[2 * 4 + 0] + - finalMatrix[3 * 4 + 0]) / w - OFFSETX; - *sely = (in[0] * finalMatrix[0 * 4 + 1] + - in[1] * finalMatrix[1 * 4 + 1] + - z * finalMatrix[2 * 4 + 1] + - finalMatrix[3 * 4 + 1]) / w - OFFSETY; - return 1; -} - -static int selected; -static int selectx, selecty; -static float selstartx, selstarty; - -void -grabPiece(int piece, float selx, float sely) -{ - int hit; - - selectx = selx; - selecty = sely; - if (selectx < 0 || selecty < 0 || selectx >= WIDTH || selecty >= HEIGHT) { - return; - } - hit = thePuzzle[selecty][selectx]; - if (hit != piece) - return; - if (hit) { - movingPiece = hit; - while (selectx > 0 && thePuzzle[selecty][selectx - 1] == movingPiece) { - selectx--; - } - while (selecty > 0 && thePuzzle[selecty - 1][selectx] == movingPiece) { - selecty--; - } - move_x = selectx; - move_y = selecty; - selected = 1; - selstartx = selx; - selstarty = sely; - } else { - selected = 0; - } - changeState(); -} - -void -moveSelection(float selx, float sely) -{ - float deltax, deltay; - int dir; - Config newpieces; - - if (!selected) - return; - deltax = selx - selstartx; - deltay = sely - selstarty; - - if (fabs(deltax) > fabs(deltay)) { - deltay = 0; - if (deltax > 0) { - if (deltax > 1) - deltax = 1; - dir = 2; - } else { - if (deltax < -1) - deltax = -1; - dir = 0; - } - } else { - deltax = 0; - if (deltay > 0) { - if (deltay > 1) - deltay = 1; - dir = 3; - } else { - if (deltay < -1) - deltay = -1; - dir = 1; - } - } - if (canmove(thePuzzle, selectx, selecty, dir, newpieces)) { - move_x = deltax + selectx; - move_y = deltay + selecty; - if (deltax > 0.5) { - memcpy(thePuzzle, newpieces, HEIGHT * WIDTH); - selectx++; - selstartx++; - } else if (deltax < -0.5) { - memcpy(thePuzzle, newpieces, HEIGHT * WIDTH); - selectx--; - selstartx--; - } else if (deltay > 0.5) { - memcpy(thePuzzle, newpieces, HEIGHT * WIDTH); - selecty++; - selstarty++; - } else if (deltay < -0.5) { - memcpy(thePuzzle, newpieces, HEIGHT * WIDTH); - selecty--; - selstarty--; - } - } else { - if (deltay > 0 && thePuzzle[selecty][selectx] == 10 && - selectx == 1 && selecty == 3) { - /* Allow visual movement of solution piece outside of the - - box */ - move_x = selectx; - move_y = sely - selstarty + selecty; - } else { - move_x = selectx; - move_y = selecty; - } - } -} - -void -dropSelection(void) -{ - if (!selected) - return; - movingPiece = 0; - selected = 0; - changeState(); -} - -static int left_mouse, middle_mouse; -static int mousex, mousey; -static int solving; -static int spinning; -static float lastquat[4]; -static int sel_piece; - -static void -Reshape(int width, int height) -{ - - W = width; - H = height; - glViewport(0, 0, W, H); - glGetIntegerv(GL_VIEWPORT, viewport); -} - -void -toggleSolve(void) -{ - if (solving) { - freeSolutions(); - solving = 0; - glutChangeToMenuEntry(1, "Solving", 1); - glutSetWindowTitle("glpuzzle"); - movingPiece = 0; - } else { - glutChangeToMenuEntry(1, "Stop solving", 1); - glutSetWindowTitle("Solving..."); - if (solvePuzzle()) { - solving = 1; - } - } - changeState(); - glutPostRedisplay(); -} - -void reset(void) -{ - if (solving) { - freeSolutions(); - solving = 0; - glutChangeToMenuEntry(1, "Solving", 1); - movingPiece = 0; - changeState(); - } - glutSetWindowTitle("glpuzzle"); - memcpy(thePuzzle, startConfig, HEIGHT * WIDTH); - glutPostRedisplay(); -} - -void -keyboard(unsigned char c, int x, int y) -{ - int piece; - - switch (c) { - case 27: - exit(0); - break; - case 'D': - case 'd': - if (solving) { - freeSolutions(); - solving = 0; - glutChangeToMenuEntry(1, "Solving", 1); - glutSetWindowTitle("glpuzzle"); - movingPiece = 0; - changeState(); - } - piece = selectPiece(x, y); - if (piece) { - nukePiece(piece); - } - glutPostRedisplay(); - break; - case 'R': - case 'r': - reset(); - break; - case 'S': - case 's': - toggleSolve(); - break; - case 'b': - case 'B': - depth = 1 - depth; - if (depth) { - glEnable(GL_DEPTH_TEST); - } else { - glDisable(GL_DEPTH_TEST); - } - glutPostRedisplay(); - break; - default: - break; - } -} - -void -motion(int x, int y) -{ - float selx, sely; - - if (middle_mouse && !left_mouse) { - if (mousex != x || mousey != y) { - trackball(lastquat, - (2.0*mousex - W) / W, - (H - 2.0*mousey) / H, - (2.0*x - W) / W, - (H - 2.0*y) / H); - spinning = 1; - } else { - spinning = 0; - } - changeState(); - } else { - computeCoords(sel_piece, x, y, &selx, &sely); - moveSelection(selx, sely); - } - mousex = x; - mousey = y; - glutPostRedisplay(); -} - -void -mouse(int b, int s, int x, int y) -{ - float selx, sely; - - mousex = x; - mousey = y; - curX = x; - curY = y; - if (s == GLUT_DOWN) { - switch (b) { - case GLUT_LEFT_BUTTON: - if (solving) { - freeSolutions(); - solving = 0; - glutChangeToMenuEntry(1, "Solving", 1); - glutSetWindowTitle("glpuzzle"); - movingPiece = 0; - } - left_mouse = GL_TRUE; - sel_piece = selectPiece(mousex, mousey); - if (computeCoords(sel_piece, mousex, mousey, &selx, &sely)) { - grabPiece(sel_piece, selx, sely); - } - glutPostRedisplay(); - break; - case GLUT_MIDDLE_BUTTON: - middle_mouse = GL_TRUE; - glutPostRedisplay(); - break; - } - } else { - switch (b) { - case GLUT_LEFT_BUTTON: - left_mouse = GL_FALSE; - dropSelection(); - glutPostRedisplay(); - break; - case GLUT_MIDDLE_BUTTON: - middle_mouse = GL_FALSE; - glutPostRedisplay(); - break; - } - } - motion(x, y); -} - -void -animate(void) -{ - if (spinning) { - add_quats(lastquat, curquat, curquat); - } - glutPostRedisplay(); - if (solving) { - if (!continueSolving()) { - solving = 0; - glutChangeToMenuEntry(1, "Solving", 1); - glutSetWindowTitle("glpuzzle"); - } - } - if (!solving && !spinning && !visible) { - glutIdleFunc(NULL); - } -} - -void -changeState(void) -{ - if (visible) { - if (!solving && !spinning) { - glutIdleFunc(NULL); - } else { - glutIdleFunc(animate); - } - } else { - glutIdleFunc(NULL); - } -} - -void -init(void) -{ - static float lmodel_ambient[] = - {0.0, 0.0, 0.0, 0.0}; - static float lmodel_twoside[] = - {GL_FALSE}; - static float lmodel_local[] = - {GL_FALSE}; - static float light0_ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float light0_diffuse[] = - {1.0, 1.0, 1.0, 0.0}; - static float light0_position[] = - {0.8660254, 0.5, 1, 0}; - static float light0_specular[] = - {0.0, 0.0, 0.0, 0.0}; - static float bevel_mat_ambient[] = - {0.0, 0.0, 0.0, 1.0}; - static float bevel_mat_shininess[] = - {40.0}; - static float bevel_mat_specular[] = - {0.0, 0.0, 0.0, 0.0}; - static float bevel_mat_diffuse[] = - {1.0, 0.0, 0.0, 0.0}; - - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - glEnable(GL_DEPTH_TEST); - glClearDepth(1.0); - - glClearColor(0.5, 0.5, 0.5, 0.0); - glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light0_position); - glEnable(GL_LIGHT0); - - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_local); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glEnable(GL_LIGHTING); - - glMaterialfv(GL_FRONT, GL_AMBIENT, bevel_mat_ambient); - glMaterialfv(GL_FRONT, GL_SHININESS, bevel_mat_shininess); - glMaterialfv(GL_FRONT, GL_SPECULAR, bevel_mat_specular); - glMaterialfv(GL_FRONT, GL_DIFFUSE, bevel_mat_diffuse); - - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glShadeModel(GL_FLAT); - - trackball(curquat, 0.0, 0.0, 0.0, 0.0); - srandom(time(NULL)); -} - -static void -Usage(void) -{ - printf("Usage: puzzle [-s]\n"); - printf(" -s: Run in single buffered mode\n"); - exit(-1); -} - -void -visibility(int v) -{ - if (v == GLUT_VISIBLE) { - visible = 1; - } else { - visible = 0; - } - changeState(); -} - -void -menu(int choice) -{ - switch(choice) { - case 1: - toggleSolve(); - break; - case 2: - reset(); - break; - case 3: - exit(0); - break; - } -} - -int -main(int argc, char **argv) -{ - long i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (argv[i][0] == '-') { - switch (argv[i][1]) { - case 's': - doubleBuffer = 0; - break; - default: - Usage(); - } - } else { - Usage(); - } - } - - glutInitWindowSize(W, H); - if (doubleBuffer) { - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE | GLUT_MULTISAMPLE); - } else { - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE | GLUT_MULTISAMPLE); - } - - glutCreateWindow("glpuzzle"); - - init(); - - glGetIntegerv(GL_VIEWPORT, viewport); - - printf("\n"); - printf("r Reset puzzle\n"); - printf("s Solve puzzle (may take a few seconds to compute)\n"); - printf("d Destroy a piece - makes the puzzle easier\n"); - printf("b Toggles the depth buffer on and off\n"); - printf("\n"); - printf("Left mouse moves pieces\n"); - printf("Middle mouse spins the puzzle\n"); - printf("Right mouse has menu\n"); - - glutReshapeFunc(Reshape); - glutDisplayFunc(redraw); - glutKeyboardFunc(keyboard); - glutMotionFunc(motion); - glutMouseFunc(mouse); - glutVisibilityFunc(visibility); - glutCreateMenu(menu); - glutAddMenuEntry("Solve", 1); - glutAddMenuEntry("Reset", 2); - glutAddMenuEntry("Quit", 3); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/glpuzzle.dsp b/lib/glut-3.7.6/progs/examples/glpuzzle.dsp deleted file mode 100644 index a9c2a3c173c160c38c2ec82f7e01196801b77e38..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/glpuzzle.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glpuzzle" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glpuzzle - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glpuzzle.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glpuzzle.mak" CFG="glpuzzle - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glpuzzle - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glpuzzle - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glpuzzle - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "glpuzzle - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "glpuzzle - Win32 Release" -# Name "glpuzzle - Win32 Debug" -# Begin Source File - -SOURCE=.\glpuzzle.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/glutdino.c b/lib/glut-3.7.6/progs/examples/glutdino.c deleted file mode 100644 index f324750cd16d973c7a4c68fb211b429e9bb417ae..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/glutdino.c +++ /dev/null @@ -1,244 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE, DINOSAUR -} displayLists; - -GLfloat angle = -150; /* in degrees */ -int moving, begin; -int W = 300, H = 300; -GLdouble bodyWidth = 2.0; -int newModel = 1; -/* *INDENT-OFF* */ -GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -GLfloat lightZeroPosition[] = {10.0, 4.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, -2.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = dataSize / (int) (2 * sizeof(GLfloat)); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void -makeDinosaur(void) -{ - GLfloat bodyWidth = 3.0; - - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); - glNewList(DINOSAUR, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glEndList(); -} - -void -recalcModelView(void) -{ - glPopMatrix(); - glPushMatrix(); - glRotatef(angle, 0.0, 1.0, 0.0); - glTranslatef(-8, -8, -bodyWidth / 2); - newModel = 0; -} - -void -redraw(void) -{ - if (newModel) - recalcModelView(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(DINOSAUR); - glutSwapBuffers(); -} - -/* ARGSUSED2 */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - moving = 1; - begin = x; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - begin); - begin = x; - newModel = 1; - glutPostRedisplay(); - } -} - -GLboolean lightZeroSwitch = GL_TRUE, lightOneSwitch = GL_TRUE; - -void -controlLights(int value) -{ - switch (value) { - case 1: - lightZeroSwitch = !lightZeroSwitch; - if (lightZeroSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case 2: - lightOneSwitch = !lightOneSwitch; - if (lightOneSwitch) { - glEnable(GL_LIGHT1); - } else { - glDisable(GL_LIGHT1); - } - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("glutdino"); - glutDisplayFunc(redraw); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(controlLights); - glutAddMenuEntry("Toggle right light", 1); - glutAddMenuEntry("Toggle left light", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - makeDinosaur(); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 40.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 30.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glPushMatrix(); /* dummy push so we can pop on model - recalc */ - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/glutdino.dsp b/lib/glut-3.7.6/progs/examples/glutdino.dsp deleted file mode 100644 index 69b1981dd6b47817c04db20a48dd7263f9e400a5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/glutdino.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glutdino" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glutdino - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glutdino.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glutdino.mak" CFG="glutdino - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glutdino - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glutdino - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glutdino - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "glutdino - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "glutdino - Win32 Release" -# Name "glutdino - Win32 Debug" -# Begin Source File - -SOURCE=.\glutdino.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/glutplane.c b/lib/glut-3.7.6/progs/examples/glutplane.c deleted file mode 100644 index 4b299507e7ec9ad7e0a8fa2af83e0525976fb0d8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/glutplane.c +++ /dev/null @@ -1,270 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#ifndef _WIN32 -#include -#else -#include /* for getpid */ -#define random rand -#define srandom srand -#endif -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#ifndef M_PI_2 -#define M_PI_2 1.57079632679489661923 -#endif - -GLboolean moving = GL_FALSE; - -#define MAX_PLANES 15 - -struct { - float speed; /* zero speed means not flying */ - GLfloat red, green, blue; - float theta; - float x, y, z, angle; -} planes[MAX_PLANES]; - -#define v3f glVertex3f /* v3f was the short IRIS GL name for - glVertex3f */ - -void -draw(void) -{ - GLfloat red, green, blue; - int i; - - glClear(GL_DEPTH_BUFFER_BIT); - /* paint black to blue smooth shaded polygon for background */ - glDisable(GL_DEPTH_TEST); - glShadeModel(GL_SMOOTH); - glBegin(GL_POLYGON); - glColor3f(0.0, 0.0, 0.0); - v3f(-20, 20, -19); - v3f(20, 20, -19); - glColor3f(0.0, 0.0, 1.0); - v3f(20, -20, -19); - v3f(-20, -20, -19); - glEnd(); - /* paint planes */ - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_FLAT); - for (i = 0; i < MAX_PLANES; i++) - if (planes[i].speed != 0.0) { - glPushMatrix(); - glTranslatef(planes[i].x, planes[i].y, planes[i].z); - glRotatef(290.0, 1.0, 0.0, 0.0); - glRotatef(planes[i].angle, 0.0, 0.0, 1.0); - glScalef(1.0 / 3.0, 1.0 / 4.0, 1.0 / 4.0); - glTranslatef(0.0, -4.0, -1.5); - glBegin(GL_TRIANGLE_STRIP); - /* left wing */ - v3f(-7.0, 0.0, 2.0); - v3f(-1.0, 0.0, 3.0); - glColor3f(red = planes[i].red, green = planes[i].green, - blue = planes[i].blue); - v3f(-1.0, 7.0, 3.0); - /* left side */ - glColor3f(0.6 * red, 0.6 * green, 0.6 * blue); - v3f(0.0, 0.0, 0.0); - v3f(0.0, 8.0, 0.0); - /* right side */ - v3f(1.0, 0.0, 3.0); - v3f(1.0, 7.0, 3.0); - /* final tip of right wing */ - glColor3f(red, green, blue); - v3f(7.0, 0.0, 2.0); - glEnd(); - glPopMatrix(); - } - glutSwapBuffers(); -} - -void -tick_per_plane(int i) -{ - float theta = planes[i].theta += planes[i].speed; - planes[i].z = -9 + 4 * cos(theta); - planes[i].x = 4 * sin(2 * theta); - planes[i].y = sin(theta / 3.4) * 3; - planes[i].angle = ((atan(2.0) + M_PI_2) * sin(theta) - M_PI_2) * 180 / M_PI; - if (planes[i].speed < 0.0) - planes[i].angle += 180; -} - -void -add_plane(void) -{ - int i; - - for (i = 0; i < MAX_PLANES; i++) - if (planes[i].speed == 0) { - -#define SET_COLOR(r,g,b) \ - planes[i].red=r; planes[i].green=g; planes[i].blue=b; - - switch (random() % 6) { - case 0: - SET_COLOR(1.0, 0.0, 0.0); /* red */ - break; - case 1: - SET_COLOR(1.0, 1.0, 1.0); /* white */ - break; - case 2: - SET_COLOR(0.0, 1.0, 0.0); /* green */ - break; - case 3: - SET_COLOR(1.0, 0.0, 1.0); /* magenta */ - break; - case 4: - SET_COLOR(1.0, 1.0, 0.0); /* yellow */ - break; - case 5: - SET_COLOR(0.0, 1.0, 1.0); /* cyan */ - break; - } - planes[i].speed = ((float) (random() % 20)) * 0.001 + 0.02; - if (random() & 0x1) - planes[i].speed *= -1; - planes[i].theta = ((float) (random() % 257)) * 0.1111; - tick_per_plane(i); - if (!moving) - glutPostRedisplay(); - return; - } -} - -void -remove_plane(void) -{ - int i; - - for (i = MAX_PLANES - 1; i >= 0; i--) - if (planes[i].speed != 0) { - planes[i].speed = 0; - if (!moving) - glutPostRedisplay(); - return; - } -} - -void -tick(void) -{ - int i; - - for (i = 0; i < MAX_PLANES; i++) - if (planes[i].speed != 0.0) - tick_per_plane(i); -} - -void -animate(void) -{ - tick(); - glutPostRedisplay(); -} - -void -visible(int state) -{ - if (state == GLUT_VISIBLE) { - if (moving) - glutIdleFunc(animate); - } else { - if (moving) - glutIdleFunc(NULL); - } -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char ch, int x, int y) -{ - switch (ch) { - case ' ': - if (!moving) { - tick(); - glutPostRedisplay(); - } - break; - case 27: /* ESC */ - exit(0); - break; - } -} - -#define ADD_PLANE 1 -#define REMOVE_PLANE 2 -#define MOTION_ON 3 -#define MOTION_OFF 4 -#define QUIT 5 - -void -menu(int item) -{ - switch (item) { - case ADD_PLANE: - add_plane(); - break; - case REMOVE_PLANE: - remove_plane(); - break; - case MOTION_ON: - moving = GL_TRUE; - glutChangeToMenuEntry(3, "Motion off", MOTION_OFF); - glutIdleFunc(animate); - break; - case MOTION_OFF: - moving = GL_FALSE; - glutChangeToMenuEntry(3, "Motion", MOTION_ON); - glutIdleFunc(NULL); - break; - case QUIT: - exit(0); - break; - } -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - /* use multisampling if available */ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_MULTISAMPLE); - glutCreateWindow("glutplane"); - glutDisplayFunc(draw); - glutKeyboardFunc(keyboard); - glutVisibilityFunc(visible); - glutCreateMenu(menu); - glutAddMenuEntry("Add plane", ADD_PLANE); - glutAddMenuEntry("Remove plane", REMOVE_PLANE); - glutAddMenuEntry("Motion", MOTION_ON); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - /* setup OpenGL state */ - glClearDepth(1.0); - glClearColor(0.0, 0.0, 0.0, 0.0); - glMatrixMode(GL_PROJECTION); - glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 20); - glMatrixMode(GL_MODELVIEW); - /* add three initial random planes */ - srandom(getpid()); - add_plane(); - add_plane(); - add_plane(); - /* start event processing */ - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/glutplane.dsp b/lib/glut-3.7.6/progs/examples/glutplane.dsp deleted file mode 100644 index f6d2e13180aa5ae86950b6180dd4e2122a68da29..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/glutplane.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glutplane" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glutplane - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glutplane.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glutplane.mak" CFG="glutplane - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glutplane - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glutplane - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glutplane - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "glutplane - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "glutplane - Win32 Release" -# Name "glutplane - Win32 Debug" -# Begin Source File - -SOURCE=.\glutplane.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/gouraudtriangle.ps b/lib/glut-3.7.6/progs/examples/gouraudtriangle.ps deleted file mode 100644 index 332162df596f5f8b4a6abb3cdfdfe937580c92d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/gouraudtriangle.ps +++ /dev/null @@ -1,109 +0,0 @@ -%!PS -% this code is free -% Frederic Delhoume (delhoume@ilog.fr) - -/bd{bind def}bind def - -% use small threshold to have a smooth shading -/threshold .1 def - -/triangle % [x1 x2 x3 y1 y2 y3] [i1 i2 i3] -{ - aload pop setrgbcolor - aload pop - 5 3 roll % x1 y1 y2 y3 x2 x3 - 4 2 roll % x1 y1 x2 x3 y2 y3 - 3 2 roll % x1 y1 x2 y2 y3 x3 - exch moveto lineto lineto closepath fill -} bd - -/computediff1 % i31 i21 i11 -> true/false -{ - 2 copy sub abs threshold ge % |i21-i11| > threshold - {pop pop pop true} - { - exch 2 index sub abs threshold ge % |i21-i31| > threshold - { pop pop true} - { - sub abs threshold ge % |i11-i31| > threshold - } ifelse - } ifelse -} bd - -/computediff3 % [i11 i12 i13] [i21 i22 i23] [i31 i32 i33] -> true/false -{ - 3 copy 0 get 3 1 roll 0 get 3 1 roll 0 get computediff1 - {true} - { - 3 copy 1 get 3 1 roll 1 get 3 1 roll 1 get computediff1 - {true} - { - 3 copy 2 get 3 1 roll 2 get 3 1 roll 2 get computediff1 - } ifelse - } ifelse -} bd - -/middlecolor % [ar ag ab] [br bg bb] -> cr cg cb -{ - aload pop 4 -1 roll aload pop - 4 -1 roll add 2 div 5 1 roll 3 -1 roll add 2 div 3 1 roll - add 2 div 3 1 roll exch 3 array astore -} bd - -/gouraudtriangle % [x1 x2 x3 y1 y2 y3] [i11 i12 i13] [i21 i22 i23] [i31 i32 i33] -{ - computediff3 - { - % [x1 x2 x3 y1 y2 y3] [i11 i12 i13] [i21 i22 i23] [i31 i32 i33] - 4 -1 roll % [i11 i12 i13] [i21 i22 i23] [i31 i32 i33] [x1 x2 x3 y1 y2 y3] - % first is x2x3y2y3 - aload 7 1 roll - 6 -1 roll pop 3 -1 roll pop - add 2 div 3 1 roll add 2 div exch % [x1 x2 x3 y1 y2 y3] mx23 my23 - % second is x1x3y1y3 - 3 -1 roll aload 7 1 roll exch pop 4 -1 roll pop - add 2 div 3 1 roll add 2 div exch - % third is x1x2y1y2 - 3 -1 roll aload 7 1 roll pop 3 -1 roll pop - add 2 div 3 1 roll add 2 div exch - 7 3 roll % [x1 x2 x3 y1 y2 y3] ax ay bx by cx cy - 10 -3 roll dup 3 index middlecolor % 1-3 - 4 1 roll 2 copy middlecolor % 2-3 - 4 1 roll 3 copy pop middlecolor 4 1 roll % 1-2 - 13 -1 roll aload pop - % ax ay bx by cx cy cc cb ca cx1 cx2 cx3 x1 x2 x3 y1 y2 y3 - % now it's time to build the triangles - % first is ax1c - 17 index 6 index 15 index 19 index 6 index 17 index 6 array astore - 10 index 10 index 14 index gouraudtriangle - % second is ax2b - 17 index 5 index 17 index 19 index 5 index 19 index 6 array astore - 10 index 9 index 13 index gouraudtriangle - % third is cbx3 - 13 index 16 index 5 index 15 index 18 index 5 index 6 array astore - 12 index 12 index 9 index gouraudtriangle - % fourth is abc - 17 index 16 index 15 index 19 index 18 index 17 index 6 array astore - 10 index 12 index 14 index gouraudtriangle - 18 {pop} repeat - } - { - aload pop 5 3 roll aload pop 7 3 roll aload pop 9 3 roll - 4 index 6 index 4 index add add 3 div - 10 1 roll 7 index 5 index 3 index add add 3 div - 10 1 roll 6 index 4 index 2 index add add 3 div - 10 1 roll 9 {pop} repeat - 3 array astore triangle - } ifelse -} bd - -%% here is an nice example -[200 200 300 500 350 300] [1 1 0] [0 1 0] [0 1 1] gouraudtriangle -[200 300 300 500 300 425] [1 1 0] [0 1 1] [1 1 1] gouraudtriangle - -[300 400 400 300 350 500] [0 1 1] [0 0 1] [1 0 1] gouraudtriangle -[300 400 300 300 500 425] [0 1 1] [1 0 1] [1 1 1] gouraudtriangle - -[300 300 400 550 425 500] [1 0 0] [1 1 1] [1 0 1] gouraudtriangle -[200 300 300 500 425 550] [1 1 0] [1 1 1] [1 0 0] gouraudtriangle -showpage diff --git a/lib/glut-3.7.6/progs/examples/halomagic.c b/lib/glut-3.7.6/progs/examples/halomagic.c deleted file mode 100644 index e1597e1ce192ba839a03977cec98914d063795b7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/halomagic.c +++ /dev/null @@ -1,1094 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* dinoshade.c with an added "magic halo" effect when you hit the - space bar. You can use an overlaid or blended halo (blending is - slower). */ - -/* Example for PC game developers to show how to *combine* texturing, - reflections, and projected shadows all in real-time with OpenGL. - Robust reflections use stenciling. Robust projected shadows - use both stenciling and polygon offset. PC game programmers - should realize that neither stenciling nor polygon offset are - supported by Direct3D, so these real-time rendering algorithms - are only really viable with OpenGL. - - The program has modes for disabling the stenciling and polygon - offset uses. It is worth running this example with these features - toggled off so you can see the sort of artifacts that result. - - Notice that the floor texturing, reflections, and shadowing - all co-exist properly. */ - -/* When you run this program: Left mouse button controls the - view. Middle mouse button controls light position (left & - right rotates light around dino; up & down moves light - position up and down). Right mouse button pops up menu. */ - -/* Check out the comments in the "redraw" routine to see how the - reflection blending and surface stenciling is done. You can - also see in "redraw" how the projected shadows are rendered, - including the use of stenciling and polygon offset. */ - -/* This program is derived from glutdino.c */ - -/* Compile: cc -o halomagic halomagic.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include /* OpenGL Utility Toolkit header */ - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* Variable controlling various rendering modes. */ -static int stencilReflection = 1, stencilShadow = 1, offsetShadow = 1; -static int renderShadow = 0, renderDinosaur = 1, renderReflection = 0; -static int linearFiltering = 0, useMipmaps = 0, useTexture = 0; -static int reportSpeed = 0; -static int animation = 0; -static GLboolean lightSwitch = GL_TRUE; -static int directionalLight = 1; -static int forceExtension = 0; -static int haloMagic = 0, blendedHalo = 0; -static GLfloat haloScale = 1.0, haloTime = 0.0; - -/* Time varying or user-controled variables. */ -static float jump = 0.0; -static float lightAngle = 0.0, lightHeight = 20; -GLfloat angle = -150; /* in degrees */ -GLfloat angle2 = 30; /* in degrees */ - -int moving, startx, starty; -int lightMoving = 0, lightStartX, lightStartY; - -enum { - MISSING, EXTENSION, ONE_DOT_ONE -}; -int polygonOffsetVersion; - -static GLdouble bodyWidth = 3.0; -/* *INDENT-OFF* */ -static GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -static GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -static GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -static GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -static GLfloat lightPosition[4]; -static GLfloat lightColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -static GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -/* Nice floor texture tiling pattern. */ -static char *circles[] = { - "....xxxx........", - "..xxxxxxxx......", - ".xxxxxxxxxx.....", - ".xxx....xxx.....", - "xxx......xxx....", - "xxx......xxx....", - "xxx......xxx....", - "xxx......xxx....", - ".xxx....xxx.....", - ".xxxxxxxxxx.....", - "..xxxxxxxx......", - "....xxxx........", - "................", - "................", - "................", - "................", -}; - -static void -makeFloorTexture(void) -{ - GLubyte floorTexture[16][16][3]; - GLubyte *loc; - int s, t; - - /* Setup RGB image for the texture. */ - loc = (GLubyte*) floorTexture; - for (t = 0; t < 16; t++) { - for (s = 0; s < 16; s++) { - if (circles[t][s] == 'x') { - /* Nice blue. */ - loc[0] = 0x1f; - loc[1] = 0x1f; - loc[2] = 0x8f; - } else { - /* Light gray. */ - loc[0] = 0xca; - loc[1] = 0xca; - loc[2] = 0xca; - } - loc += 3; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - if (useMipmaps) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16, - GL_RGB, GL_UNSIGNED_BYTE, floorTexture); - } else { - if (linearFiltering) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - } else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - } - glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0, - GL_RGB, GL_UNSIGNED_BYTE, floorTexture); - } -} - -enum { - X, Y, Z, W -}; -enum { - A, B, C, D -}; - -/* Create a matrix that will project the desired shadow. */ -void -shadowMatrix(GLfloat shadowMat[4][4], - GLfloat groundplane[4], - GLfloat lightpos[4]) -{ - GLfloat dot; - - /* Find dot product between light position vector and ground plane normal. */ - dot = groundplane[X] * lightpos[X] + - groundplane[Y] * lightpos[Y] + - groundplane[Z] * lightpos[Z] + - groundplane[W] * lightpos[W]; - - shadowMat[0][0] = dot - lightpos[X] * groundplane[X]; - shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y]; - shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z]; - shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W]; - - shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X]; - shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y]; - shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z]; - shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W]; - - shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X]; - shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y]; - shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z]; - shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W]; - - shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X]; - shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y]; - shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z]; - shadowMat[3][3] = dot - lightpos[W] * groundplane[W]; - -} - -/* Find the plane equation given 3 points. */ -void -findPlane(GLfloat plane[4], - GLfloat v0[3], GLfloat v1[3], GLfloat v2[3]) -{ - GLfloat vec0[3], vec1[3]; - - /* Need 2 vectors to find cross product. */ - vec0[X] = v1[X] - v0[X]; - vec0[Y] = v1[Y] - v0[Y]; - vec0[Z] = v1[Z] - v0[Z]; - - vec1[X] = v2[X] - v0[X]; - vec1[Y] = v2[Y] - v0[Y]; - vec1[Z] = v2[Z] - v0[Z]; - - /* find cross product to get A, B, and C of plane equation */ - plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y]; - plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]); - plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X]; - - plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]); -} - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = dataSize / (int) (2 * sizeof(GLfloat)); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -/* Enumerants for refering to display lists. */ -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE -} displayLists; - -static void -makeDinosaur(void) -{ - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); -} - -static void -drawDinosaur(void) - -{ - glPushMatrix(); - /* Translate the dinosaur to be at (0,8,0). */ - glTranslatef(-8, -8, -bodyWidth / 2); - glTranslatef(0.0, jump, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); -} - -enum { - MOD_DINO, MOD_SPHERE, MOD_CUBE, MOD_ICO -}; - -static int currentModel = MOD_DINO; - -static GLfloat blueMaterial[] = {0.0, 0.2, 1.0, 1.0}, - redMaterial[] = {0.6, 0.1, 0.0, 1.0}, - purpleMaterial[] = {0.3, 0.0, 0.3, 1.0}, - greenMaterial[] = {1.0, 0.2, 0.0, 1.0}; - -static void -drawModel(void) -{ - switch(currentModel) { - case MOD_DINO: - drawDinosaur(); - break; - case MOD_SPHERE: - glMaterialfv(GL_FRONT, GL_DIFFUSE, blueMaterial); - glutSolidSphere(6.0, 15, 15); - break; - case MOD_CUBE: - glMaterialfv(GL_FRONT, GL_DIFFUSE, redMaterial); - glutSolidCube(6.0); - break; - case MOD_ICO: - glMaterialfv(GL_FRONT, GL_DIFFUSE, purpleMaterial); - glPushMatrix(); - glEnable(GL_NORMALIZE); - glScalef(7.0, 7.0, 7.0); - glutSolidIcosahedron(); - glDisable(GL_NORMALIZE); - glPopMatrix(); - break; - } -} - -static void -drawBox(GLfloat xsize, GLfloat ysize, GLfloat zsize) -{ - static GLfloat n[6][3] = - { - {-1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {1.0, 0.0, 0.0}, - {0.0, -1.0, 0.0}, - {0.0, 0.0, 1.0}, - {0.0, 0.0, -1.0} - }; - static GLint faces[6][4] = - { - {0, 1, 2, 3}, - {3, 2, 6, 7}, - {7, 6, 5, 4}, - {4, 5, 1, 0}, - {5, 6, 2, 1}, - {7, 4, 0, 3} - }; - GLfloat v[8][3]; - GLint i; - - v[0][0] = v[1][0] = v[2][0] = v[3][0] = -xsize / 2; - v[4][0] = v[5][0] = v[6][0] = v[7][0] = xsize / 2; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = -ysize / 2; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = ysize / 2; - v[0][2] = v[3][2] = v[4][2] = v[7][2] = -zsize / 2; - v[1][2] = v[2][2] = v[5][2] = v[6][2] = zsize / 2; - - for (i = 0; i < 6; i++) { - glBegin(GL_QUADS); - glNormal3fv(&n[i][0]); - glVertex3fv(&v[faces[i][0]][0]); - glVertex3fv(&v[faces[i][1]][0]); - glVertex3fv(&v[faces[i][2]][0]); - glVertex3fv(&v[faces[i][3]][0]); - glEnd(); - } -} - -static void -drawPillar(void) -{ - glEnable(GL_NORMALIZE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, greenMaterial); - glPushMatrix(); - glTranslatef(8.0, 4.01, 8.0); - drawBox(2.0, 8.0, 2.0); - glutSolidCube(2.0); - glPopMatrix(); - glDisable(GL_NORMALIZE); -} - -static GLfloat floorVertices[4][3] = { - { -20.0, 0.0, 20.0 }, - { 20.0, 0.0, 20.0 }, - { 20.0, 0.0, -20.0 }, - { -20.0, 0.0, -20.0 }, -}; - -/* Draw a floor (possibly textured). */ -static void -drawFloor(void) -{ - glDisable(GL_LIGHTING); - - if (useTexture) { - glEnable(GL_TEXTURE_2D); - } - - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); - glVertex3fv(floorVertices[0]); - glTexCoord2f(0.0, 16.0); - glVertex3fv(floorVertices[1]); - glTexCoord2f(16.0, 16.0); - glVertex3fv(floorVertices[2]); - glTexCoord2f(16.0, 0.0); - glVertex3fv(floorVertices[3]); - glEnd(); - - if (useTexture) { - glDisable(GL_TEXTURE_2D); - } - - glEnable(GL_LIGHTING); -} - -static GLfloat floorPlane[4]; -static GLfloat floorShadow[4][4]; - -static void -redraw(void) -{ - int start, end; - - if (reportSpeed) { - start = glutGet(GLUT_ELAPSED_TIME); - } - - /* Clear; default stencil clears to zero. */ - if ((stencilReflection && renderReflection) || (stencilShadow && renderShadow) || (haloScale > 1.0)) { - glStencilMask(0xffffffff); - glClearStencil(0x4); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - } else { - /* Avoid clearing stencil when not using it. */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - } - - /* Reposition the light source. */ - lightPosition[0] = 15*cos(lightAngle); - lightPosition[1] = lightHeight; - lightPosition[2] = 15*sin(lightAngle); - if (directionalLight) { - lightPosition[3] = 0.0; - } else { - lightPosition[3] = 1.0; - } - - shadowMatrix(floorShadow, floorPlane, lightPosition); - - glPushMatrix(); - /* Perform scene rotations based on user mouse input. */ - glRotatef(angle2, 1.0, 0.0, 0.0); - glRotatef(angle, 0.0, 1.0, 0.0); - - /* Tell GL new light source position. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - - if (renderReflection) { - if (stencilReflection) { - /* We can eliminate the visual "artifact" of seeing the "flipped" - model underneath the floor by using stencil. The idea is - draw the floor without color or depth update but so that - a stencil value of one is where the floor will be. Later when - rendering the model reflection, we will only update pixels - with a stencil value of 1 to make sure the reflection only - lives on the floor, not below the floor. */ - - /* Don't update color or depth. */ - glDisable(GL_DEPTH_TEST); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - - /* Draw 1 into the stencil buffer. */ - glEnable(GL_STENCIL_TEST); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - glStencilFunc(GL_ALWAYS, 1, 0x1); - glStencilMask(0x1); - - /* Now render floor; floor pixels just get their stencil set to 1. */ - drawFloor(); - - /* Re-enable update of color and depth. */ - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glEnable(GL_DEPTH_TEST); - - /* Now, only render where stencil is set to 1. */ - glStencilFunc(GL_EQUAL, 1, 0x1); /* draw if ==1 */ - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - } - - glPushMatrix(); - - /* The critical reflection step: Reflect 3D model through the floor - (the Y=0 plane) to make a relection. */ - glScalef(1.0, -1.0, 1.0); - - /* Reflect the light position. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - - /* To avoid our normals getting reversed and hence botched lighting - on the reflection, turn on normalize. */ - glEnable(GL_NORMALIZE); - glCullFace(GL_FRONT); - - /* Draw the reflected model. */ - glPushMatrix(); - glTranslatef(0, 8.01, 0); - drawModel(); - glPopMatrix(); - drawPillar(); - - /* Disable noramlize again and re-enable back face culling. */ - glDisable(GL_NORMALIZE); - glCullFace(GL_BACK); - - glPopMatrix(); - - /* Switch back to the unreflected light position. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); - - if (stencilReflection) { - glDisable(GL_STENCIL_TEST); - } - } - - /* Back face culling will get used to only draw either the top or the - bottom floor. This let's us get a floor with two distinct - appearances. The top floor surface is reflective and kind of red. - The bottom floor surface is not reflective and blue. */ - - /* Draw "bottom" of floor in blue. */ - glFrontFace(GL_CW); /* Switch face orientation. */ - glColor4f(0.1, 0.1, 0.7, 1.0); - drawFloor(); - glFrontFace(GL_CCW); - - if (renderShadow && stencilShadow) { - /* Draw the floor with stencil value 2. This helps us only - draw the shadow once per floor pixel (and only on the - floor pixels). */ - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0x2, 0x2); - glStencilMask(0x2); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - } - - /* Draw "top" of floor. Use blending to blend in reflection. */ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glColor4f(1.0, 1.0, 1.0, 0.3); - drawFloor(); - glDisable(GL_BLEND); - - if (renderShadow && stencilShadow) { - glDisable(GL_STENCIL_TEST); - } - - if (renderDinosaur) { - drawPillar(); - - if (haloScale > 1.0) { - /* If halo effect is enabled, draw the model with its stencil set to 6 - (arbitary value); later, we'll make sure not to update pixels tagged - as 6. */ - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0x0, 0x4); - glStencilMask(0x4); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - } - - /* Draw "actual" dinosaur (or other model), not its reflection. */ - glPushMatrix(); - glTranslatef(0, 8.01, 0); - drawModel(); - glPopMatrix(); - } - - /* Begin shadow render. */ - if (renderShadow) { - - /* Render the projected shadow. */ - - if (stencilShadow) { - - /* Now, only render where stencil is set above 5 (ie, 6 where - the top floor is). Update stencil with 2 where the shadow - gets drawn so we don't redraw (and accidently reblend) the - shadow). */ - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_NOTEQUAL, 0x0, 0x2); - glStencilMask(0x2); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - } - - /* To eliminate depth buffer artifacts, we use polygon offset - to raise the depth of the projected shadow slightly so - that it does not depth buffer alias with the floor. */ - if (offsetShadow) { - switch (polygonOffsetVersion) { - case EXTENSION: -#ifdef GL_EXT_polygon_offset - glEnable(GL_POLYGON_OFFSET_EXT); - break; -#endif -#ifdef GL_VERSION_1_1 - case ONE_DOT_ONE: - glEnable(GL_POLYGON_OFFSET_FILL); - break; -#endif - case MISSING: - /* Oh well. */ - break; - } - } - - /* Render 50% black shadow color on top of whatever the - floor appareance is. */ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDisable(GL_LIGHTING); /* Force the 50% black. */ - glColor4f(0.0, 0.0, 0.0, 0.5); - - glPushMatrix(); - /* Project the shadow. */ - glMultMatrixf((GLfloat *) floorShadow); - glPushMatrix(); - glTranslatef(0, 8.01, 0); - drawModel(); - glPopMatrix(); - drawPillar(); - glPopMatrix(); - - glDisable(GL_BLEND); - glEnable(GL_LIGHTING); - - if (offsetShadow) { - switch (polygonOffsetVersion) { -#ifdef GL_EXT_polygon_offset - case EXTENSION: - glDisable(GL_POLYGON_OFFSET_EXT); - break; -#endif -#ifdef GL_VERSION_1_1 - case ONE_DOT_ONE: - glDisable(GL_POLYGON_OFFSET_FILL); - break; -#endif - case MISSING: - /* Oh well. */ - break; - } - } - if (stencilShadow) { - glDisable(GL_STENCIL_TEST); - } - } /* End shadow render. */ - - /* Begin light source location render. */ - glPushMatrix(); - glDisable(GL_LIGHTING); - glColor3f(1.0, 1.0, 0.0); - if (directionalLight) { - /* Draw an arrowhead. */ - glDisable(GL_CULL_FACE); - glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]); - glRotatef(lightAngle * -180.0 / M_PI, 0, 1, 0); - glRotatef(atan(lightHeight/12) * 180.0 / M_PI, 0, 0, 1); - glBegin(GL_TRIANGLE_FAN); - glVertex3f(0, 0, 0); - glVertex3f(2, 1, 1); - glVertex3f(2, -1, 1); - glVertex3f(2, -1, -1); - glVertex3f(2, 1, -1); - glVertex3f(2, 1, 1); - glEnd(); - /* Draw a white line from light direction. */ - glColor3f(1.0, 1.0, 1.0); - glBegin(GL_LINES); - glVertex3f(0.1, 0, 0); - glVertex3f(5, 0, 0); - glEnd(); - glEnable(GL_CULL_FACE); - } else { - /* Draw a yellow ball at the light source. */ - glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]); - glutSolidSphere(1.0, 5, 5); - } - glEnable(GL_LIGHTING); - glPopMatrix(); - /* End light source location render. */ - - /* Add a halo effect around the 3D model. */ - if (haloScale > 1.0) { - - glDisable(GL_LIGHTING); - - if (blendedHalo) { - /* If we are doing a nice blended halo, enable blending and - make sure we only blend a halo pixel once and that we do - not draw to pixels tagged as 6 (where the model is). */ - glEnable(GL_BLEND); - glEnable(GL_STENCIL_TEST); - glColor4f(0.8, 0.8, 0.0, 0.3); /* 30% sorta yellow. */ - glStencilFunc(GL_EQUAL, 0x4, 0x4); - glStencilMask(0x4); - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - } else { - /* Be cheap; no blending. Just draw yellow halo but not updating - pixels where the model is. We don't update stencil at all. */ - glDisable(GL_BLEND); - glEnable(GL_STENCIL_TEST); - glColor3f(0.5, 0.5, 0.0); /* Half yellow. */ - glStencilFunc(GL_EQUAL, 0x4, 0x4); - glStencilMask(0x4); - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - } - - glPushMatrix(); - glTranslatef(0, 8.01, 0); - glScalef(haloScale, haloScale, haloScale); - drawModel(); - glPopMatrix(); - - if (blendedHalo) { - glDisable(GL_BLEND); - } - glDisable(GL_STENCIL_TEST); - glEnable(GL_LIGHTING); - } - /* End halo effect render. */ - - glPopMatrix(); - - if (reportSpeed) { - glFinish(); - end = glutGet(GLUT_ELAPSED_TIME); - printf("Speed %.3g frames/sec (%d ms)\n", 1000.0/(end-start), end-start); - } - - glutSwapBuffers(); -} - -/* ARGSUSED2 */ -static void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - moving = 1; - startx = x; - starty = y; - } - if (state == GLUT_UP) { - moving = 0; - } - } - if (button == GLUT_MIDDLE_BUTTON) { - if (state == GLUT_DOWN) { - lightMoving = 1; - lightStartX = x; - lightStartY = y; - } - if (state == GLUT_UP) { - lightMoving = 0; - } - } -} - -/* ARGSUSED1 */ -static void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - startx); - angle2 = angle2 + (y - starty); - startx = x; - starty = y; - glutPostRedisplay(); - } - if (lightMoving) { - lightAngle += (x - lightStartX)/40.0; - lightHeight += (lightStartY - y)/20.0; - lightStartX = x; - lightStartY = y; - glutPostRedisplay(); - } -} - -static const float maxHalo[] = { 0.2, 0.35, 0.3, 0.5 }; - -/* Advance time varying state when idle callback registered. */ -static void -idle(void) -{ - static float time = 0.0; - - if (animation) { - time = glutGet(GLUT_ELAPSED_TIME) / 500.0; - - jump = 4.0 * fabs(sin(time)*0.8); - if (!lightMoving) { - lightAngle += 0.03; - } - } - if (haloMagic) { - haloTime += 0.1; - haloScale = 1.0 + maxHalo[currentModel] * sin(haloTime); - if (haloScale <= 1.0) { - haloMagic = 0; - if (!animation) { - glutIdleFunc(NULL); - } - } - } - glutPostRedisplay(); -} - -enum { - M_NONE, M_BLENDED_HALO, M_SHOW_HALO, M_SWITCH_MODEL, M_MOTION, M_LIGHT, - M_TEXTURE, M_SHADOWS, M_REFLECTION, M_DINOSAUR, - M_STENCIL_REFLECTION, M_STENCIL_SHADOW, M_OFFSET_SHADOW, - M_POSITIONAL, M_DIRECTIONAL, M_PERFORMANCE -}; - -static void -controlLights(int value) -{ - switch (value) { - case M_NONE: - return; - case M_SWITCH_MODEL: - currentModel = (currentModel + 1) % 4; - break; - case M_SHOW_HALO: - haloScale = 1.0 + maxHalo[currentModel]; - break; - case M_BLENDED_HALO: - blendedHalo = 1 - blendedHalo; - break; - case M_MOTION: - animation = 1 - animation; - if (animation || haloMagic) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } - break; - case M_LIGHT: - lightSwitch = !lightSwitch; - if (lightSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case M_TEXTURE: - useTexture = !useTexture; - break; - case M_SHADOWS: - renderShadow = 1 - renderShadow; - break; - case M_REFLECTION: - renderReflection = 1 - renderReflection; - break; - case M_DINOSAUR: - renderDinosaur = 1 - renderDinosaur; - break; - case M_STENCIL_REFLECTION: - stencilReflection = 1 - stencilReflection; - break; - case M_STENCIL_SHADOW: - stencilShadow = 1 - stencilShadow; - break; - case M_OFFSET_SHADOW: - offsetShadow = 1 - offsetShadow; - break; - case M_POSITIONAL: - directionalLight = 0; - break; - case M_DIRECTIONAL: - directionalLight = 1; - break; - case M_PERFORMANCE: - reportSpeed = 1 - reportSpeed; - break; - } - glutPostRedisplay(); -} - -/* When not visible, stop animating. Restart when visible again. */ -static void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - if (animation || haloMagic) - glutIdleFunc(idle); - } else { - if (!animation && !haloMagic) - glutIdleFunc(NULL); - } -} - -/* Press any key to redraw; good when motion stopped and - performance reporting on. */ -/* ARGSUSED */ -static void -key(unsigned char c, int x, int y) -{ - if (c == 27) { - exit(0); /* IRIS GLism, Escape quits. */ - } - if (c == ' ') { - haloMagic = 1; - haloTime = 0.0; - glutIdleFunc(idle); - } - glutPostRedisplay(); -} - -/* Press any key to redraw; good when motion stopped and - performance reporting on. */ -/* ARGSUSED */ -static void -special(int k, int x, int y) -{ - glutPostRedisplay(); -} - -static int -supportsOneDotOne(void) -{ - const char *version; - int major, minor; - - version = (char *) glGetString(GL_VERSION); - if (sscanf(version, "%d.%d", &major, &minor) == 2) - return major >= 1 && minor >= 1; - return 0; /* OpenGL version string malformed! */ -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - - for (i=1; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=halomagic - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "halomagic.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "halomagic.mak" CFG="halomagic - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "halomagic - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "halomagic - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "halomagic - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "halomagic - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "halomagic - Win32 Release" -# Name "halomagic - Win32 Debug" -# Begin Source File - -SOURCE=.\halomagic.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/highlight.c b/lib/glut-3.7.6/progs/examples/highlight.c deleted file mode 100644 index a2dd3bf55f98321939ba22a42172973c7a820e2c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/highlight.c +++ /dev/null @@ -1,405 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * scene.c - * This program demonstrates the use of the GL lighting model. - * Objects are drawn using a grey material characteristic. - * A single light source illuminates the objects. - */ -#include -#include -#include -#include - -#define BUFSIZE 512 - -#define TORUS 1 -#define TETRAHEDRON 2 -#define ICOSAHEDRON 3 - -GLuint selectBuf[BUFSIZE]; - -int W = 500, H = 500; -GLfloat x, y; -int locating = 0; -GLuint theObject = 0; -int menu_inuse = 0; -int mouse_state = 0; - -char *objectNames[] = -{"Nothing", "Torus", "Tetrahedron", "Icosahedron"}; - -void -output(GLfloat x, GLfloat y, char *format,...) -{ - va_list args; - char buffer[200], *p; - - va_start(args, format); - vsprintf(buffer, format, args); - va_end(args); - glPushMatrix(); - glTranslatef(x, y, 0); - for (p = buffer; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - glPopMatrix(); -} - -/* Initialize material property and light source. */ -void -myinit(void) -{ - GLfloat light_ambient[] = - {0.2, 0.2, 0.2, 1.0}; - GLfloat light_diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat light_specular[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat light_position[] = - {1.0, 1.0, 1.0, 0.0}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - - glSelectBuffer(BUFSIZE, selectBuf); - - glNewList(TORUS, GL_COMPILE); - glutSolidTorus(0.275, 0.85, 10, 15); - glEndList(); - glNewList(TETRAHEDRON, GL_COMPILE); - glutSolidTetrahedron(); - glEndList(); - glNewList(ICOSAHEDRON, GL_COMPILE); - glutSolidIcosahedron(); - glEndList(); -} - -void -highlightBegin(void) -{ - static GLfloat red[4] = - {1.0, 0.0, 0.0, 1.0}; - - glPushAttrib(GL_LIGHTING_BIT | GL_CURRENT_BIT); - glMaterialfv(GL_FRONT, GL_DIFFUSE, red); - glColor3f(1.0, 0.0, 0.0); -} - -void -highlightEnd(void) -{ - glPopAttrib(); -} - -void -draw(void) -{ - glPushMatrix(); - glScalef(1.3, 1.3, 1.3); - glRotatef(20.0, 1.0, 0.0, 0.0); - - glLoadName(2); - glPushMatrix(); - if (theObject == 2) - highlightBegin(); - glTranslatef(-0.75, -0.5, 0.0); - glRotatef(270.0, 1.0, 0.0, 0.0); - glCallList(TETRAHEDRON); - if (theObject == 2) - highlightEnd(); - glPopMatrix(); - - glLoadName(1); - glPushMatrix(); - if (theObject == 1) - highlightBegin(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(90.0, 1.0, 0.0, 0.0); - glCallList(TORUS); - if (theObject == 1) - highlightEnd(); - glPopMatrix(); - - glLoadName(3); - glPushMatrix(); - if (theObject == 3) - highlightBegin(); - glTranslatef(0.75, 0.0, -1.0); - glCallList(ICOSAHEDRON); - if (theObject == 3) - highlightEnd(); - glPopMatrix(); - - glPopMatrix(); -} - -void -myortho(void) -{ - if (W <= H) - glOrtho(-2.5, 2.5, -2.5 * (GLfloat) H / (GLfloat) W, - 2.5 * (GLfloat) H / (GLfloat) W, -10.0, 10.0); - else - glOrtho(-2.5 * (GLfloat) W / (GLfloat) H, - 2.5 * (GLfloat) W / (GLfloat) H, -2.5, 2.5, -10.0, 10.0); -} - -/* processHits() prints out the contents of the - * selection array. - */ -void -processHits(GLint hits, GLuint buffer[]) -{ - GLuint depth = (GLuint) ~0; - unsigned int getThisName; - GLint i; - GLuint names, *ptr; - GLuint newObject; - - ptr = (GLuint *) buffer; - newObject = 0; - for (i = 0; i < hits; i++) { /* for each hit */ - getThisName = 0; - names = *ptr; - ptr++; /* skip # name */ - if (*ptr <= depth) { - depth = *ptr; - getThisName = 1; - } - ptr++; /* skip z1 */ - if (*ptr <= depth) { - depth = *ptr; - getThisName = 1; - } - ptr++; /* skip z2 */ - - if (getThisName) - newObject = *ptr; - ptr += names; /* skip the names list */ - } - if (theObject != newObject) { - theObject = newObject; - glutPostRedisplay(); - } -} - -/* ARGSUSED */ -void -locate(int value) -{ - GLint viewport[4]; - GLint hits; - - if (locating) { - if (mouse_state == GLUT_ENTERED) { - (void) glRenderMode(GL_SELECT); - glInitNames(); - glPushName(-1); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - viewport[0] = 0; - viewport[1] = 0; - viewport[2] = W; - viewport[3] = H; - gluPickMatrix(x, H - y, 5.0, 5.0, viewport); - myortho(); - glMatrixMode(GL_MODELVIEW); - draw(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - hits = glRenderMode(GL_RENDER); - } else { - hits = 0; - } - processHits(hits, selectBuf); - } - locating = 0; -} - -void -passive(int newx, int newy) -{ - x = newx; - y = newy; - if (!locating) { - locating = 1; - glutTimerFunc(1, locate, 0); - } -} - -void -entry(int state) -{ - mouse_state = state; - if (!menu_inuse) { - if (state == GLUT_LEFT) { - if (theObject != 0) { - theObject = 0; - glutPostRedisplay(); - } - } - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - draw(); - - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glDisable(GL_LINE_SMOOTH); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, 3000, 0, 3000); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - output(80, 2800, "Automatically names object under mouse."); - output(80, 100, "Located: %s.", objectNames[theObject]); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopAttrib(); - - glutSwapBuffers(); -} - -void -myReshape(int w, int h) -{ - W = w; - H = h; - glViewport(0, 0, W, H); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - myortho(); - glMatrixMode(GL_MODELVIEW); -} - -void -polygon_mode(int value) -{ - switch (value) { - case 1: - glEnable(GL_LIGHTING); - glDisable(GL_BLEND); - glEnable(GL_DEPTH_TEST); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case 2: - glDisable(GL_LIGHTING); - glColor3f(1.0, 1.0, 1.0); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - break; - } - glutPostRedisplay(); -} - -void -mstatus(int status, int newx, int newy) -{ - if (status == GLUT_MENU_NOT_IN_USE) { - menu_inuse = 0; - passive(newx, newy); - } else { - menu_inuse = 1; - } -} - -void -main_menu(int value) -{ - if (value == 666) - exit(0); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int -main(int argc, char **argv) -{ - int submenu; - - glutInit(&argc, argv); - glutInitWindowSize(W, H); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - submenu = glutCreateMenu(polygon_mode); - glutAddMenuEntry("Filled", 1); - glutAddMenuEntry("Outline", 2); - glutCreateMenu(main_menu); - glutAddMenuEntry("Quit", 666); - glutAddSubMenu("Polygon mode", submenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutPassiveMotionFunc(passive); - glutEntryFunc(entry); - glutMenuStatusFunc(mstatus); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/highlight.dsp b/lib/glut-3.7.6/progs/examples/highlight.dsp deleted file mode 100644 index c9a90691fe5ed5ca00c934e71e79513e1f12bde2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/highlight.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="highlight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=highlight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "highlight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "highlight.mak" CFG="highlight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "highlight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "highlight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "highlight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "highlight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "highlight - Win32 Release" -# Name "highlight - Win32 Debug" -# Begin Source File - -SOURCE=.\highlight.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/lightlab.c b/lib/glut-3.7.6/progs/examples/lightlab.c deleted file mode 100644 index 95f330f825c6704ca773f4d840b65aa641f1fc8f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/lightlab.c +++ /dev/null @@ -1,284 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -enum { - BRASS, RED_PLASTIC, EMERALD, SLATE -} MaterialType; -enum { - TORUS_MATERIAL = 1, TEAPOT_MATERIAL = 2, ICO_MATERIAL = 3 -} MaterialDisplayList; -enum { - LIGHT_OFF, LIGHT_RED, LIGHT_WHITE, LIGHT_GREEN -} LightValues; - -GLfloat red_light[] = -{1.0, 0.0, 0.0, 1.0}, green_light[] = -{0.0, 1.0, 0.0, 1.0}, white_light[] = -{1.0, 1.0, 1.0, 1.0}; -GLfloat left_light_position[] = -{-1.0, 0.0, 1.0, 0.0}, right_light_position[] = -{1.0, 0.0, 1.0, 0.0}; -GLfloat brass_ambient[] = -{0.33, 0.22, 0.03, 1.0}, brass_diffuse[] = -{0.78, 0.57, 0.11, 1.0}, brass_specular[] = -{0.99, 0.91, 0.81, 1.0}, brass_shininess = 27.8; -GLfloat red_plastic_ambient[] = -{0.0, 0.0, 0.0}, red_plastic_diffuse[] = -{0.5, 0.0, 0.0}, red_plastic_specular[] = -{0.7, 0.6, 0.6}, red_plastic_shininess = 32.0; -GLfloat emerald_ambient[] = -{0.0215, 0.1745, 0.0215}, emerald_diffuse[] = -{0.07568, 0.61424, 0.07568}, emerald_specular[] = -{0.633, 0.727811, 0.633}, emerald_shininess = 76.8; -GLfloat slate_ambient[] = -{0.02, 0.02, 0.02}, slate_diffuse[] = -{0.02, 0.01, 0.01}, slate_specular[] = -{0.4, 0.4, 0.4}, slate_shininess = .78125; -int shade_model = GL_SMOOTH; -char *left_light, *right_light; -char *ico_material, *teapot_material, *torus_material; - -void -output(GLfloat x, GLfloat y, char *format,...) -{ - va_list args; - char buffer[200], *p; - - va_start(args, format); - vsprintf(buffer, format, args); - va_end(args); - glPushMatrix(); - glTranslatef(x, y, 0); - for (p = buffer; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - glPopMatrix(); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glScalef(1.3, 1.3, 1.3); - glRotatef(20.0, 1.0, 0.0, 0.0); - glPushMatrix(); - glTranslatef(-0.65, 0.7, 0.0); - glRotatef(90.0, 1.0, 0.0, 0.0); - glCallList(TORUS_MATERIAL); - glutSolidTorus(0.275, 0.85, 10, 15); - glPopMatrix(); - glPushMatrix(); - glTranslatef(-0.75, -0.8, 0.0); - glCallList(TEAPOT_MATERIAL); - glutSolidTeapot(0.7); - glPopMatrix(); - glPushMatrix(); - glTranslatef(1.0, 0.0, -1.0); - glCallList(ICO_MATERIAL); - glutSolidIcosahedron(); - glPopMatrix(); - glPopMatrix(); - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, 3000, 0, 3000); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - output(80, 2800, "Torus: %s", torus_material); - output(80, 2650, "Icosahedron: %s", ico_material); - output(80, 2500, "Teapot: %s", teapot_material); - output(80, 250, "Left light: %s", left_light); - output(1700, 250, "Right light: %s", right_light); - output(850, 100, "Shade model: %s", - shade_model == GL_SMOOTH ? "smooth" : "flat"); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glPopAttrib(); - glutSwapBuffers(); -} - -void -light_select(GLenum which, int value, char **label) -{ - glEnable(which); - switch (value) { - case LIGHT_OFF: - *label = "off"; - glDisable(which); - break; - case LIGHT_RED: - *label = "red"; - glLightfv(which, GL_DIFFUSE, red_light); - break; - case LIGHT_WHITE: - *label = "white"; - glLightfv(which, GL_DIFFUSE, white_light); - break; - case LIGHT_GREEN: - *label = "green"; - glLightfv(which, GL_DIFFUSE, green_light); - break; - } - glutPostRedisplay(); -} - -void -left_light_select(int value) -{ - light_select(GL_LIGHT0, value, &left_light); -} - -void -right_light_select(int value) -{ - light_select(GL_LIGHT1, value, &right_light); -} - -void -material(int dlist, GLfloat * ambient, GLfloat * diffuse, - GLfloat * specular, GLfloat shininess) -{ - glNewList(dlist, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT, ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, specular); - glMaterialf(GL_FRONT, GL_SHININESS, shininess); - glEndList(); -} - -char * -material_select(int object, int value) -{ - glutPostRedisplay(); - switch (value) { - case BRASS: - material(object, brass_ambient, - brass_diffuse, brass_specular, brass_shininess); - return "brass"; - case RED_PLASTIC: - material(object, red_plastic_ambient, red_plastic_diffuse, - red_plastic_specular, red_plastic_shininess); - return "red plastic"; - case EMERALD: - material(object, emerald_ambient, emerald_diffuse, - emerald_specular, emerald_shininess); - return "emerald"; - case SLATE: - material(object, slate_ambient, slate_diffuse, - slate_specular, slate_shininess); - return "slate"; - } - return NULL; /* avoid bogus warning! */ -} - -void -torus_select(int value) -{ - torus_material = material_select(TORUS_MATERIAL, value); -} - -void -teapot_select(int value) -{ - teapot_material = material_select(TEAPOT_MATERIAL, value); -} - -void -ico_select(int value) -{ - ico_material = material_select(ICO_MATERIAL, value); -} - -void -main_menu_select(int value) -{ - if (value == 666) - exit(0); - glShadeModel(shade_model = value); - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - int left_light_m, right_light_m, torus_m, teapot_m, ico_m; - - glutInitWindowSize(400, 400); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("Lighting Laboratory"); - glutDisplayFunc(display); - -#define LIGHT_MENU_ENTRIES() \ - glutAddMenuEntry("Disable", LIGHT_OFF); \ - glutAddMenuEntry("Red", LIGHT_RED); \ - glutAddMenuEntry("White", LIGHT_WHITE); \ - glutAddMenuEntry("Green", LIGHT_GREEN); -#define MATERIAL_MENU_ENTRIES() \ - glutAddMenuEntry("Brass", BRASS); \ - glutAddMenuEntry("Red plastic", RED_PLASTIC); \ - glutAddMenuEntry("Emerald", EMERALD); \ - glutAddMenuEntry("Slate", SLATE); - - left_light_m = glutCreateMenu(left_light_select); - LIGHT_MENU_ENTRIES(); - right_light_m = glutCreateMenu(right_light_select); - LIGHT_MENU_ENTRIES(); - torus_m = glutCreateMenu(torus_select); - MATERIAL_MENU_ENTRIES(); - teapot_m = glutCreateMenu(teapot_select); - MATERIAL_MENU_ENTRIES(); - ico_m = glutCreateMenu(ico_select); - MATERIAL_MENU_ENTRIES(); - - glutCreateMenu(main_menu_select); - glutAddMenuEntry("Smooth shading", GL_SMOOTH); - glutAddMenuEntry("Flat shading", GL_FLAT); - glutAddSubMenu("Left light", left_light_m); - glutAddSubMenu("Right light", right_light_m); - glutAddSubMenu("Torus", torus_m); - glutAddSubMenu("Teapot", teapot_m); - glutAddSubMenu("Icosahedron", ico_m); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glLightfv(GL_LIGHT0, GL_POSITION, left_light_position); - glLightfv(GL_LIGHT0, GL_SPECULAR, white_light); - glLightfv(GL_LIGHT1, GL_POSITION, right_light_position); - glLightfv(GL_LIGHT1, GL_SPECULAR, white_light); - left_light_select(LIGHT_RED); - right_light_select(LIGHT_GREEN); - torus_select(RED_PLASTIC); - teapot_select(BRASS); - ico_select(EMERALD); - glEnable(GL_LIGHTING); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glLineWidth(1.0); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* degrees field of view */ 50.0, - /* aspect ratio */ 1.0, /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glTranslatef(0.0, 0.0, -1.0); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/lightlab.dsp b/lib/glut-3.7.6/progs/examples/lightlab.dsp deleted file mode 100644 index 97c2d190a0bffc94bcbdce851ed470cacc6c8cdf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/lightlab.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lightlab" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=lightlab - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lightlab.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lightlab.mak" CFG="lightlab - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lightlab - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "lightlab - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lightlab - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "lightlab - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "lightlab - Win32 Release" -# Name "lightlab - Win32 Debug" -# Begin Source File - -SOURCE=.\lightlab.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/logo.c b/lib/glut-3.7.6/progs/examples/logo.c deleted file mode 100644 index 5061101d179caeeff6dfe2299f2e5cae4ba722b1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/logo.c +++ /dev/null @@ -1,89 +0,0 @@ -int logo_width = 317; -int logo_height = 85; -unsigned char logo_image[107780] = { -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 241,241,241,255, 226,226,226,255, 222,222,222,255, 187,187,187,255, 189,189,189,255, 193,193,193,255, 197,197,197,255, 220,220,220,255, 225,225,225,255, 225,225,225,255, 230,230,230,255, 244,244,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,253,255, 233,233,233,255, 196,196,196,255, 148,148,148,255, 130,130,130,255, 90,90,90,255, 46,46,46,255, 41,41,41,255, 28,28,28,255, 30,30,30,255, 31,31,31,255, 33,33,33,255, 40,40,40,255, 42,42,42,255, 41,41,41,255, 57,57,57,255, 99,99,99,255, 136,136,136,255, 165,165,165,255, 215,215,215,255, 232,232,232,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,253,255, 237,237,237,255, 226,226,226,255, 198,198,198,255, 167,167,167,255, 162,162,162,255, 165,165,165,255, 189,189,189,255, 224,224,224,255, 225,225,225,255, 226,226,226,255, 231,231,231,255, 239,239,239,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 248,248,248,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,249,249,255, 208,208,208,255, 135,135,135,255, 69,68,68,255, 36,33,33,255, 19,15,15,255, 20,13,13,255, 20,11,11,255, 28,15,15,255, 33,15,15,255, 35,17,17,255, 30,15,15,255, 28,14,14,255, 22,11,11,255, 23,13,13,255, 17,10,10,255, 14,12,12,255, 10,10,10,255, 11,11,11,255, 11,11,11,255, 22,22,22,255, 38,38,38,255, 63,63,63,255, 127,127,127,255, 184,184,184,255, 235,235,235,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 244,244,244,255, 219,219,219,255, 167,167,167,255, 135,135,135,255, 126,126,126,255, 77,77,77,255, 45,45,45,255, 32,32,32,255, 24,24,23,255, 20,20,20,255, 22,22,22,255, 29,29,29,255, 42,42,42,255, 41,41,41,255, 43,43,43,255, 61,61,61,255, 84,84,84,255, 136,136,136,255, 173,173,173,255, 224,224,224,255, 238,238,238,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,250,250,255, 240,240,240,255, 235,235,235,255, 234,234,234,255, 226,226,226,255, 225,225,225,255, 225,225,225,255, 225,225,225,255, 220,220,220,255, 193,193,193,255, 165,165,165,255, 165,165,165,255, 148,148,148,255, 134,134,134,255, 133,133,133,255, 133,133,133,255, 133,133,133,255, 130,130,130,255, 127,127,127,255, 237,237,237,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,252,252,255, 209,209,209,255, 142,142,142,255, 117,115,115,255, 56,47,47,255, 43,17,17,255, 68,20,20,255, 88,23,23,255, 91,26,26,255, 107,30,30,255, 124,34,34,255, 134,36,36,255, 146,41,41,255, 152,42,42,255, 146,41,41,255, 135,35,35,255, 126,34,34,255, 117,33,33,255, 103,29,29,255, 90,27,27,255, 70,26,26,255, 46,20,20,255, 34,18,18,255, 23,13,13,255, 15,12,12,255, 10,10,10,255, 12,12,12,255, 30,30,30,255, 72,72,72,255, 124,124,124,255, 151,151,151,255, 221,221,221,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,252,252,255, 231,231,231,255, 191,191,191,255, 136,136,136,255, 100,100,100,255, 46,46,44,255, 25,25,22,255, 20,20,13,255, 24,24,10,255, 30,30,12,255, 37,36,10,255, 42,41,14,255, 54,53,14,255, 60,56,17,255, 48,47,13,255, 46,46,15,255, 31,31,13,255, 23,23,12,255, 19,19,10,255, 19,18,13,255, 14,13,10,255, 14,14,14,255, 24,24,24,255, 48,48,48,255, 83,83,83,255, 128,128,128,255, 141,141,141,255, 201,201,201,255, 247,247,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 246,246,246,255, 239,239,239,255, 235,235,235,255, 233,233,233,255, 226,226,226,255, 225,225,225,255, 225,225,225,255, 225,225,225,255, 221,221,221,255, 196,196,196,255, 179,179,179,255, 162,162,162,255, 147,147,147,255, 133,133,133,255, 134,134,134,255, 133,133,133,255, 134,134,134,255, 133,133,133,255, 134,134,134,255, 133,133,133,255, 133,133,133,255, 133,133,133,255, 117,117,117,255, 87,87,87,255, 73,73,73,255, 67,67,67,255, 44,44,44,255, 44,43,44,255, 43,41,43,255, 46,43,46,255, 42,40,42,255, 35,32,35,255, 25,22,25,255, 28,24,28,255, 22,17,22,255, 20,13,20,255, 21,12,21,255, 27,15,27,255, 27,15,27,255, 28,15,28,255, 41,35,41,255, 191,191,191,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 239,238,238,255, 165,160,160,255, 60,50,50,255, 44,17,17,255, 68,19,19,255, 102,28,28,255, 139,33,33,255, 181,45,45,255, 207,54,54,255, 215,57,57,255, 218,59,59,255, 233,66,66,255, 239,71,71,255, 243,72,72,255, 244,73,73,255, 241,72,72,255, 236,69,69,255, 235,69,69,255, 231,68,68,255, 227,68,68,255, 219,64,64,255, 195,56,56,255, 167,48,48,255, 143,44,44,255, 116,37,37,255, 78,25,25,255, 41,18,18,255, 22,13,13,255, 14,13,13,255, 10,10,10,255, 11,11,11,255, 16,16,16,255, 61,61,61,255, 177,177,177,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 228,228,228,255, 149,149,148,255, 63,63,63,255, 35,35,32,255, 21,21,11,255, 40,38,14,255, 57,55,14,255, 74,71,17,255, 96,93,18,255, 106,101,18,255, 121,116,21,255, 142,134,22,255, 146,141,24,255, 170,162,27,255, 185,176,30,255, 170,159,30,255, 159,151,27,255, 132,126,24,255, 113,109,21,255, 107,104,21,255, 101,97,21,255, 80,73,18,255, 46,44,15,255, 34,34,16,255, 16,16,10,255, 15,15,13,255, 11,11,10,255, 14,14,14,255, 39,39,39,255, 109,109,109,255, 166,166,166,255, 231,231,231,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,255,255, 227,214,227,255, 176,175,176,255, 165,165,165,255, 157,157,157,255, 136,136,136,255, 133,133,133,255, 134,134,134,255, 133,133,133,255, 130,130,130,255, 106,106,106,255, 84,84,84,255, 72,72,72,255, 67,67,67,255, 46,46,46,255, 41,41,41,255, 43,43,43,255, 41,41,41,255, 42,42,42,255, 34,32,34,255, 29,27,29,255, 22,20,22,255, 19,17,19,255, 14,11,14,255, 17,13,17,255, 17,12,17,255, 20,14,20,255, 18,12,18,255, 25,15,25,255, 28,15,28,255, 29,17,29,255, 34,17,34,255, 35,19,39,255, 40,20,41,255, 43,23,47,255, 50,22,52,255, 52,23,55,255, 58,25,60,255, 65,27,67,255, 70,28,71,255, 70,28,74,255, 82,32,84,255, 89,36,94,255, 97,36,101,255, 102,39,106,255, 113,40,115,255, 113,42,116,255, 121,43,123,255, 123,44,126,255, 123,45,126,255, 64,31,65,255, 110,106,110,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,248,248,255, 192,184,184,255, 106,91,91,255, 58,28,28,255, 98,22,22,255, 148,31,31,255, 179,44,44,255, 205,52,52,255, 230,63,63,255, 248,74,74,255, 250,81,81,255, 253,87,87,255, 252,88,88,255, 253,89,89,255, 252,92,92,255, 254,97,97,255, 253,96,96,255, 254,98,98,255, 253,96,96,255, 254,98,98,255, 253,96,96,255, 254,98,98,255, 252,93,93,255, 250,87,87,255, 245,80,80,255, 238,74,74,255, 222,67,67,255, 197,56,56,255, 150,41,41,255, 101,34,34,255, 65,24,24,255, 32,17,17,255, 14,11,11,255, 13,12,12,255, 11,11,11,255, 32,32,32,255, 94,94,94,255, 183,183,183,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,244,243,255, 197,196,190,255, 80,80,74,255, 33,31,18,255, 49,44,14,255, 72,66,17,255, 103,97,17,255, 132,128,23,255, 160,151,26,255, 181,172,28,255, 208,200,33,255, 215,205,34,255, 220,213,35,255, 233,227,39,255, 238,233,41,255, 243,241,41,255, 246,245,44,255, 245,242,45,255, 240,235,41,255, 229,224,39,255, 226,221,38,255, 223,219,38,255, 215,212,35,255, 195,190,32,255, 165,160,27,255, 138,135,26,255, 93,91,20,255, 70,69,18,255, 47,47,16,255, 26,26,11,255, 15,15,13,255, 10,10,10,255, 23,23,23,255, 71,71,71,255, 157,157,157,255, 228,228,228,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,233,254,255, 212,88,212,255, 78,30,78,255, 27,24,27,255, 22,19,22,255, 16,13,16,255, 15,11,15,255, 19,13,19,255, 18,12,18,255, 21,13,21,255, 25,12,25,255, 28,15,28,255, 27,15,28,255, 32,17,33,255, 38,18,38,255, 42,19,43,255, 48,20,48,255, 52,23,55,255, 56,24,58,255, 64,25,67,255, 70,26,70,255, 70,26,74,255, 80,30,82,255, 89,35,91,255, 95,36,97,255, 102,39,104,255, 110,42,114,255, 110,42,115,255, 116,43,120,255, 127,47,131,255, 134,49,138,255, 147,53,151,255, 154,58,158,255, 165,58,166,255, 167,64,175,255, 176,63,183,255, 177,64,182,255, 180,65,185,255, 188,69,189,255, 197,75,199,255, 200,78,205,255, 209,78,212,255, 216,81,221,255, 222,84,226,255, 223,84,227,255, 226,85,229,255, 225,86,229,255, 227,88,230,255, 232,94,235,255, 217,83,220,255, 102,39,107,255, 58,48,58,255, 224,224,224,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 235,231,231,255, 145,125,125,255, 80,38,38,255, 89,20,20,255, 143,31,31,255, 196,45,45,255, 235,61,61,255, 246,69,69,255, 251,80,80,255, 254,86,86,255, 255,93,93,255, 254,100,100,255, 255,101,101,255, 254,102,102,255, 255,101,101,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,101,101,255, 254,100,100,255, 255,96,96,255, 254,94,94,255, 250,87,87,255, 241,73,73,255, 217,65,65,255, 181,53,53,255, 133,39,39,255, 80,26,26,255, 42,21,21,255, 16,14,14,255, 10,10,10,255, 12,12,12,255, 29,29,29,255, 109,109,109,255, 223,223,223,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,253,255, 217,217,210,255, 126,121,104,255, 60,57,34,255, 53,51,13,255, 100,94,17,255, 148,136,23,255, 173,165,27,255, 205,196,30,255, 228,222,34,255, 238,230,40,255, 248,244,43,255, 253,251,47,255, 254,253,50,255, 253,253,50,255, 254,254,51,255, 254,254,52,255, 255,255,53,255, 254,254,55,255, 255,255,54,255, 254,254,55,255, 255,255,53,255, 254,254,51,255, 255,255,51,255, 253,253,50,255, 251,251,47,255, 247,246,44,255, 235,235,41,255, 215,211,38,255, 184,179,33,255, 155,148,29,255, 121,115,24,255, 66,65,18,255, 33,33,17,255, 18,17,13,255, 12,12,11,255, 20,20,20,255, 63,63,63,255, 150,150,150,255, 231,231,231,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,230,255,255, 252,77,252,255, 201,50,203,255, 105,45,109,255, 89,35,94,255, 93,34,97,255, 100,37,103,255, 112,39,114,255, 113,42,116,255, 115,41,118,255, 126,46,132,255, 139,49,139,255, 142,53,148,255, 152,58,156,255, 164,62,166,255, 166,63,172,255, 174,64,177,255, 177,66,182,255, 179,68,186,255, 188,73,192,255, 197,73,199,255, 200,77,208,255, 211,80,215,255, 217,84,221,255, 225,85,226,255, 224,86,227,255, 227,86,229,255, 225,89,229,255, 229,94,233,255, 236,97,238,255, 240,100,242,255, 240,101,244,255, 247,106,247,255, 249,106,249,255, 250,108,251,255, 250,107,251,255, 250,108,251,255, 250,108,251,255, 252,113,252,255, 253,115,253,255, 253,114,253,255, 253,118,253,255, 254,120,254,255, 254,120,254,255, 255,120,255,255, 254,120,254,255, 255,120,255,255, 254,122,254,255, 255,124,255,255, 245,103,246,255, 150,55,157,255, 55,33,56,255, 183,181,183,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 236,231,231,255, 137,100,100,255, 97,23,23,255, 148,31,31,255, 194,45,45,255, 228,60,60,255, 246,75,75,255, 254,88,88,255, 253,92,92,255, 254,99,99,255, 253,100,100,255, 254,101,101,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,102,102,255, 253,98,98,255, 254,90,90,255, 248,83,83,255, 232,70,70,255, 193,56,56,255, 134,41,41,255, 66,24,24,255, 25,14,14,255, 11,10,10,255, 11,11,11,255, 16,16,16,255, 73,73,73,255, 200,200,200,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,249,247,255, 179,175,159,255, 92,90,57,255, 66,61,14,255, 95,90,12,255, 146,139,19,255, 196,186,28,255, 228,219,34,255, 241,237,40,255, 250,248,44,255, 253,252,50,255, 253,253,51,255, 254,254,52,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,55,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,54,255, 254,254,52,255, 252,252,53,255, 248,247,47,255, 244,242,44,255, 224,220,40,255, 182,176,34,255, 130,124,29,255, 85,78,20,255, 40,37,13,255, 19,19,13,255, 11,11,10,255, 22,22,22,255, 77,77,77,255, 197,197,197,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,240,254,255, 253,98,253,255, 252,68,253,255, 231,105,232,255, 217,96,222,255, 223,86,226,255, 223,86,227,255, 226,89,229,255, 228,94,232,255, 230,97,235,255, 235,100,240,255, 240,101,241,255, 240,104,243,255, 244,106,245,255, 248,108,248,255, 247,108,248,255, 249,109,250,255, 247,112,248,255, 249,112,250,255, 250,116,251,255, 252,116,252,255, 251,119,251,255, 253,120,253,255, 253,121,253,255, 254,121,254,255, 253,121,253,255, 254,122,254,255, 253,124,253,255, 254,126,254,255, 253,125,253,255, 254,125,254,255, 253,126,253,255, 254,127,254,255, 253,126,253,255, 254,126,254,255, 253,126,253,255, 254,127,254,255, 253,127,253,255, 254,126,254,255, 253,128,253,255, 254,127,254,255, 253,127,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 251,115,251,255, 193,72,196,255, 68,29,69,255, 124,118,124,255, 249,249,249,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,252,252,255, 204,185,185,255, 142,91,91,255, 136,28,28,255, 196,43,43,255, 233,62,62,255, 250,75,75,255, 254,84,84,255, 254,96,96,255, 255,100,100,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,103,103,255, 254,104,104,255, 255,106,106,255, 254,103,103,255, 255,104,104,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,101,101,255, 254,96,96,255, 249,88,88,255, 229,71,71,255, 186,55,55,255, 118,34,34,255, 60,23,23,255, 22,12,12,255, 13,12,12,255, 11,11,11,255, 60,60,60,255, 147,147,147,255, 230,230,230,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 247,247,247,255, 238,238,238,255, 235,235,235,255, 227,227,227,255, 226,226,226,255, 225,225,225,255, 224,224,224,255, 200,200,200,255, 193,193,193,255, 227,227,227,255, 239,239,239,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 243,243,238,255, 174,171,144,255, 87,82,25,255, 107,104,14,255, 161,150,21,255, 199,187,26,255, 228,221,32,255, 246,242,43,255, 253,252,47,255, 254,254,51,255, 254,254,56,255, 254,254,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,54,255, 254,254,54,255, 254,254,51,255, 247,246,47,255, 227,224,44,255, 200,196,35,255, 151,150,27,255, 97,94,22,255, 58,51,18,255, 22,20,13,255, 15,14,14,255, 44,44,44,255, 124,124,124,255, 208,208,208,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,242,255,255, 254,98,254,255, 255,68,255,255, 254,124,254,255, 255,140,255,255, 254,127,254,255, 255,124,255,255, 254,125,254,255, 255,126,255,255, 254,125,254,255, 255,126,255,255, 254,126,254,255, 255,127,255,255, 254,126,254,255, 255,126,255,255, 254,127,254,255, 255,127,255,255, 254,127,254,255, 255,127,255,255, 254,127,254,255, 255,127,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,123,254,255, 226,89,227,255, 113,43,116,255, 78,64,78,255, 228,228,228,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,252,252,255, 201,175,175,255, 121,45,45,255, 156,30,30,255, 221,49,49,255, 248,71,71,255, 254,86,86,255, 253,93,93,255, 254,100,100,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,104,104,255, 253,105,105,255, 254,106,106,255, 253,109,109,255, 254,112,112,255, 253,110,110,255, 254,112,112,255, 253,110,110,255, 254,113,113,255, 253,113,113,255, 254,112,112,255, 253,110,110,255, 254,104,104,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,101,101,255, 254,96,96,255, 250,88,88,255, 229,70,70,255, 174,51,51,255, 105,34,34,255, 37,17,17,255, 14,12,12,255, 10,10,10,255, 20,20,20,255, 106,106,106,255, 230,230,230,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 244,246,244,255, 235,236,235,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 239,239,239,255, 180,180,180,255, 110,110,110,255, 81,81,81,255, 71,71,71,255, 49,49,49,255, 43,43,43,255, 41,41,41,255, 42,42,42,255, 33,33,33,255, 31,31,31,255, 51,51,51,255, 83,83,83,255, 127,127,127,255, 155,155,155,255, 196,196,196,255, 238,238,238,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 234,233,223,255, 146,144,98,255, 100,93,22,255, 134,127,14,255, 204,196,23,255, 242,236,34,255, 250,246,42,255, 252,252,47,255, 254,254,53,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 252,252,53,255, 245,245,45,255, 216,212,40,255, 169,159,30,255, 103,95,22,255, 36,35,13,255, 16,16,12,255, 12,12,12,255, 61,61,61,255, 161,161,161,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,242,254,255, 253,99,253,255, 254,62,254,255, 253,124,253,255, 254,142,254,255, 253,133,253,255, 254,132,254,255, 253,130,253,255, 254,130,254,255, 253,129,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,129,254,255, 253,129,253,255, 254,129,254,255, 253,128,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,129,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,129,253,255, 254,129,254,255, 253,129,253,255, 254,128,254,255, 253,129,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,126,253,255, 246,103,247,255, 168,60,171,255, 71,46,71,255, 198,196,198,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,253,255, 208,178,178,255, 135,45,45,255, 177,30,30,255, 228,54,54,255, 249,75,75,255, 254,89,89,255, 255,97,97,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,101,101,255, 254,98,98,255, 255,96,96,255, 254,96,96,255, 255,94,94,255, 254,99,99,255, 255,104,104,255, 254,109,109,255, 255,113,113,255, 254,114,114,255, 255,118,118,255, 254,119,119,255, 255,112,112,255, 254,108,108,255, 255,104,104,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,101,101,255, 254,91,91,255, 246,78,78,255, 204,61,61,255, 119,38,38,255, 47,18,18,255, 15,13,13,255, 10,10,10,255, 20,20,20,255, 107,107,107,255, 234,234,234,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 168,185,168,255, 73,80,73,255, 139,139,139,255, 216,216,216,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 239,239,241,255, 179,178,185,255, 90,90,95,255, 30,30,34,255, 14,12,19,255, 18,15,25,255, 15,14,22,255, 18,18,25,255, 15,15,23,255, 18,18,25,255, 15,15,23,255, 18,18,22,255, 13,12,18,255, 13,13,16,255, 10,10,10,255, 12,12,12,255, 18,18,18,255, 34,34,34,255, 94,94,94,255, 196,196,196,255, 240,240,240,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 242,241,234,255, 160,154,103,255, 106,99,16,255, 145,135,14,255, 209,199,24,255, 243,239,36,255, 254,253,46,255, 254,254,50,255, 254,254,56,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,54,255, 253,253,51,255, 243,240,46,255, 210,205,36,255, 137,131,25,255, 64,58,16,255, 20,20,13,255, 10,10,10,255, 28,28,28,255, 125,125,125,255, 237,237,237,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,243,255,255, 254,100,254,255, 255,58,255,255, 254,120,254,255, 255,136,255,255, 254,141,254,255, 255,142,255,255, 254,143,254,255, 255,142,255,255, 254,140,254,255, 255,133,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,129,254,255, 255,132,255,255, 254,135,254,255, 255,135,255,255, 254,135,254,255, 255,135,255,255, 254,135,254,255, 255,135,255,255, 254,136,254,255, 255,135,255,255, 254,139,254,255, 255,137,255,255, 254,139,254,255, 255,137,255,255, 254,139,254,255, 255,139,255,255, 254,140,254,255, 255,137,255,255, 254,134,254,255, 255,132,255,255, 254,129,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 253,115,253,255, 211,80,213,255, 91,43,92,255, 155,150,155,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 236,223,223,255, 157,67,67,255, 183,30,30,255, 239,54,54,255, 251,76,76,255, 254,91,91,255, 253,97,97,255, 254,102,102,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,101,101,255, 254,97,97,255, 253,90,90,255, 254,84,84,255, 253,71,71,255, 253,64,64,255, 249,60,60,255, 252,56,56,255, 253,59,59,255, 254,66,66,255, 253,73,73,255, 254,82,82,255, 253,86,86,255, 254,99,99,255, 253,115,115,255, 254,117,117,255, 253,118,118,255, 254,117,117,255, 253,111,111,255, 254,104,104,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,102,102,255, 253,97,97,255, 249,87,87,255, 207,61,61,255, 121,39,39,255, 47,21,21,255, 15,13,13,255, 10,10,10,255, 25,25,25,255, 158,158,158,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 238,247,237,255, 93,160,93,255, 15,32,15,255, 17,18,17,255, 49,49,49,255, 96,96,96,255, 163,163,163,255, 216,216,216,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 239,239,242,255, 179,179,189,255, 90,89,107,255, 31,28,47,255, 16,16,39,255, 27,25,61,255, 38,36,86,255, 39,35,90,255, 39,33,84,255, 41,39,91,255, 43,41,96,255, 42,41,95,255, 42,41,97,255, 44,41,93,255, 40,36,79,255, 30,30,59,255, 23,23,37,255, 14,14,23,255, 14,14,15,255, 11,11,11,255, 15,15,15,255, 40,40,40,255, 90,90,90,255, 179,179,179,255, 248,248,248,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,250,246,255, 182,176,128,255, 125,117,23,255, 162,152,14,255, 216,209,23,255, 246,242,34,255, 253,252,47,255, 253,253,51,255, 254,254,53,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,58,255, 253,253,59,255, 254,254,59,255, 253,253,60,255, 254,254,60,255, 253,253,60,255, 254,254,60,255, 253,253,60,255, 254,254,60,255, 253,253,58,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 251,250,50,255, 227,226,41,255, 167,159,28,255, 85,82,18,255, 37,35,16,255, 14,14,10,255, 18,18,18,255, 102,102,102,255, 207,207,207,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,255,255, 255,120,255,255, 254,51,254,255, 253,89,253,255, 254,104,254,255, 253,114,253,255, 254,126,254,255, 253,134,253,255, 254,145,254,255, 253,150,253,255, 254,147,254,255, 253,133,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,127,254,255, 253,122,253,255, 254,118,254,255, 253,122,253,255, 254,129,254,255, 253,127,253,255, 254,129,254,255, 253,130,253,255, 254,130,254,255, 253,127,253,255, 254,130,254,255, 253,132,253,255, 254,131,254,255, 253,134,253,255, 254,133,254,255, 253,133,253,255, 254,134,254,255, 253,136,253,255, 254,139,254,255, 253,142,253,255, 254,143,254,255, 253,147,253,255, 254,146,254,255, 253,140,253,255, 254,133,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,123,254,255, 238,96,239,255, 130,47,130,255, 101,88,101,255, 240,240,240,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,238,238,255, 183,115,115,255, 189,34,34,255, 242,57,57,255, 254,79,79,255, 254,93,93,255, 255,100,100,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,98,98,255, 254,87,87,255, 255,78,78,255, 254,67,67,255, 243,55,55,255, 229,37,37,255, 216,33,33,255, 221,54,54,255, 247,114,114,255, 254,138,138,255, 255,127,127,255, 254,113,113,255, 255,116,116,255, 254,85,85,255, 255,74,74,255, 254,81,81,255, 255,102,102,255, 254,118,118,255, 255,124,124,255, 254,122,122,255, 255,111,111,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,98,98,255, 250,87,87,255, 210,61,61,255, 130,40,40,255, 52,21,21,255, 15,13,13,255, 11,11,11,255, 49,49,49,255, 184,184,184,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 182,221,177,255, 74,197,65,255, 56,113,51,255, 24,35,23,255, 16,20,16,255, 11,13,11,255, 22,22,22,255, 49,49,49,255, 96,96,96,255, 183,183,183,255, 234,234,234,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 201,199,209,255, 92,90,116,255, 32,32,58,255, 19,17,57,255, 28,27,75,255, 39,36,108,255, 58,54,142,255, 75,72,175,255, 77,76,181,255, 77,71,176,255, 77,75,180,255, 82,79,190,255, 86,81,191,255, 86,83,193,255, 88,83,195,255, 81,77,181,255, 69,65,151,255, 60,56,129,255, 48,45,97,255, 36,34,66,255, 24,23,35,255, 12,12,14,255, 12,12,12,255, 10,10,10,255, 40,40,40,255, 164,164,164,255, 248,248,248,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,253,255, 206,204,167,255, 134,126,27,255, 173,163,15,255, 231,222,25,255, 249,244,39,255, 254,254,46,255, 254,254,53,255, 254,254,58,255, 254,254,55,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,59,255, 254,254,58,255, 255,255,56,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,62,255, 254,254,60,255, 255,255,63,255, 254,254,63,255, 255,255,64,255, 254,254,63,255, 255,255,60,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,56,255, 254,254,51,255, 237,236,44,255, 199,193,34,255, 138,129,27,255, 60,56,16,255, 17,17,11,255, 14,14,14,255, 68,68,68,255, 202,202,202,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,187,255,255, 255,126,255,255, 254,88,254,255, 255,73,255,255, 254,62,254,255, 255,72,255,255, 254,89,254,255, 255,116,255,255, 254,144,254,255, 255,154,255,255, 254,139,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,126,255,255, 253,113,253,255, 238,87,239,255, 232,85,233,255, 247,97,248,255, 254,96,254,255, 255,96,255,255, 254,95,254,255, 255,94,255,255, 254,94,254,255, 255,93,255,255, 254,90,254,255, 255,88,255,255, 254,90,254,255, 255,87,255,255, 254,88,254,255, 255,91,255,255, 254,97,254,255, 255,108,255,255, 254,116,254,255, 255,127,255,255, 254,135,254,255, 255,147,255,255, 254,152,254,255, 255,147,255,255, 254,134,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,126,255,255, 250,111,250,255, 166,60,170,255, 71,50,72,255, 224,223,224,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,245,245,255, 194,130,130,255, 181,38,38,255, 241,54,54,255, 253,80,80,255, 254,96,96,255, 253,103,103,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,100,100,255, 253,94,94,255, 254,84,84,255, 250,69,69,255, 235,49,49,255, 199,35,35,255, 175,38,38,255, 196,99,99,255, 221,155,155,255, 245,218,218,255, 254,247,247,255, 0,0,0,0, 255,250,250,255, 255,244,244,255, 255,244,244,255, 255,229,229,255, 255,197,197,255, 255,155,155,255, 255,116,116,255, 253,86,86,255, 254,105,105,255, 253,120,120,255, 254,122,122,255, 253,112,112,255, 254,108,108,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,102,102,255, 253,100,100,255, 251,88,88,255, 219,64,64,255, 139,40,40,255, 47,20,20,255, 14,13,13,255, 11,11,11,255, 62,62,62,255, 202,202,202,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 238,247,237,255, 104,197,101,255, 97,235,90,255, 124,226,116,255, 84,164,82,255, 57,115,53,255, 39,78,38,255, 27,46,24,255, 18,27,18,255, 11,14,11,255, 30,31,30,255, 71,71,71,255, 121,121,121,255, 149,149,149,255, 212,212,212,255, 240,240,240,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 248,248,250,255, 171,169,187,255, 59,58,97,255, 27,24,88,255, 37,36,111,255, 52,46,141,255, 68,62,164,255, 83,78,197,255, 98,92,217,255, 114,109,238,255, 120,114,246,255, 120,112,246,255, 119,116,243,255, 122,114,245,255, 123,116,245,255, 124,120,249,255, 126,118,246,255, 123,114,243,255, 118,108,237,255, 110,99,224,255, 95,88,202,255, 82,80,179,255, 66,60,135,255, 42,37,81,255, 21,21,39,255, 14,14,17,255, 10,10,10,255, 39,39,39,255, 129,129,129,255, 221,221,221,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,251,255, 212,208,169,255, 153,147,58,255, 167,157,15,255, 232,223,26,255, 251,250,42,255, 253,253,50,255, 253,253,53,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,55,255, 254,254,55,255, 253,253,53,255, 254,254,51,255, 253,253,48,255, 254,254,43,255, 253,252,44,255, 254,254,39,255, 253,253,39,255, 254,254,43,255, 253,253,45,255, 254,254,49,255, 253,253,54,255, 254,254,58,255, 253,253,59,255, 254,254,62,255, 253,253,65,255, 254,254,62,255, 253,253,61,255, 254,254,60,255, 253,253,57,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,54,255, 251,250,47,255, 233,229,43,255, 168,160,29,255, 80,76,18,255, 19,19,11,255, 14,14,14,255, 62,62,62,255, 188,188,188,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,250,255,255, 255,234,255,255, 255,221,255,255, 255,170,255,255, 254,125,254,255, 253,51,253,255, 254,72,254,255, 253,124,253,255, 254,148,254,255, 253,139,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,125,254,255, 249,105,249,255, 205,69,207,255, 124,39,130,255, 131,38,137,255, 223,78,229,255, 251,101,252,255, 253,122,253,255, 254,127,254,255, 253,122,253,255, 255,125,255,255, 255,146,255,255, 255,148,255,255, 255,149,255,255, 255,148,255,255, 255,149,255,255, 254,135,254,255, 253,121,253,255, 254,94,254,255, 253,82,253,255, 254,72,254,255, 253,83,253,255, 254,114,254,255, 253,134,253,255, 254,147,254,255, 253,150,253,255, 254,144,254,255, 253,134,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 252,123,252,255, 206,80,212,255, 85,40,87,255, 170,169,170,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 221,181,181,255, 184,46,46,255, 231,50,50,255, 254,79,79,255, 254,96,96,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,99,99,255, 255,90,90,255, 254,79,79,255, 246,58,58,255, 209,38,38,255, 148,21,21,255, 119,38,38,255, 197,161,161,255, 248,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 255,225,225,255, 254,148,148,255, 255,77,77,255, 254,96,96,255, 255,120,120,255, 254,123,123,255, 255,114,114,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,101,101,255, 252,88,88,255, 215,64,64,255, 118,37,37,255, 34,17,17,255, 14,13,13,255, 12,12,12,255, 88,88,88,255, 233,233,233,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 187,223,184,255, 72,204,66,255, 124,253,115,255, 149,254,141,255, 137,249,131,255, 121,237,115,255, 103,209,96,255, 84,168,76,255, 61,125,58,255, 38,76,37,255, 26,43,23,255, 17,24,17,255, 12,13,11,255, 17,17,17,255, 39,39,39,255, 87,87,87,255, 148,148,148,255, 215,215,215,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,254,255, 189,189,205,255, 46,44,93,255, 32,27,110,255, 59,52,170,255, 78,76,199,255, 97,86,224,255, 108,103,239,255, 119,113,250,255, 127,123,253,255, 135,127,254,255, 136,130,254,255, 137,128,254,255, 138,131,254,255, 138,129,254,255, 137,130,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 137,130,254,255, 135,127,254,255, 133,123,253,255, 124,120,250,255, 113,102,231,255, 89,82,189,255, 62,59,134,255, 42,40,78,255, 19,17,24,255, 10,10,10,255, 17,17,17,255, 89,89,89,255, 220,220,220,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 233,231,207,255, 155,147,46,255, 161,148,14,255, 228,217,25,255, 253,252,41,255, 254,254,50,255, 254,254,54,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,55,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,55,255, 255,255,52,255, 254,254,48,255, 255,255,43,255, 253,251,37,255, 247,244,29,255, 244,237,31,255, 246,239,46,255, 252,243,62,255, 255,252,101,255, 254,254,105,255, 255,255,105,255, 254,254,83,255, 255,255,54,255, 254,254,45,255, 255,255,39,255, 254,254,45,255, 255,255,52,255, 254,254,61,255, 255,255,64,255, 254,254,67,255, 255,255,66,255, 254,254,60,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,54,255, 254,254,52,255, 244,243,44,255, 182,175,29,255, 87,83,19,255, 28,28,13,255, 12,12,12,255, 45,45,45,255, 155,155,155,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,224,255,255, 254,66,254,255, 255,52,255,255, 254,108,254,255, 255,144,255,255, 254,143,254,255, 255,132,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,126,255,255, 251,108,251,255, 202,73,209,255, 92,31,97,255, 54,37,56,255, 202,184,204,255, 254,236,254,255, 254,243,254,255, 255,245,255,255, 254,244,254,255, 255,247,255,255, 255,254,255,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,250,255,255, 254,244,254,255, 255,232,255,255, 254,223,254,255, 255,169,255,255, 254,85,254,255, 255,59,255,255, 254,84,254,255, 255,116,255,255, 254,146,254,255, 255,155,255,255, 254,147,254,255, 255,134,255,255, 254,128,254,255, 255,128,255,255, 254,126,254,255, 236,102,240,255, 113,44,117,255, 121,115,122,255, 248,248,248,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,230,230,255, 195,83,83,255, 232,44,44,255, 251,70,70,255, 254,91,91,255, 253,103,103,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,100,100,255, 253,92,92,255, 254,76,76,255, 245,59,59,255, 196,35,35,255, 115,19,19,255, 98,43,43,255, 186,164,164,255, 252,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,246,246,255, 255,186,186,255, 253,100,100,255, 254,97,97,255, 253,121,121,255, 254,119,119,255, 253,111,111,255, 254,104,104,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,98,98,255, 248,84,84,255, 192,58,58,255, 85,30,30,255, 24,14,14,255, 13,12,12,255, 22,22,22,255, 157,157,157,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,252,249,255, 137,208,136,255, 88,225,80,255, 142,254,132,255, 155,253,145,255, 147,254,139,255, 143,253,135,255, 142,252,132,255, 135,246,122,255, 116,229,111,255, 98,205,95,255, 77,156,72,255, 54,111,53,255, 39,74,37,255, 24,34,23,255, 16,19,16,255, 11,11,11,255, 17,17,17,255, 48,48,48,255, 95,95,95,255, 161,161,161,255, 217,217,217,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 218,217,229,255, 66,64,120,255, 30,28,114,255, 59,53,170,255, 91,86,225,255, 111,109,247,255, 126,117,252,255, 130,125,253,255, 135,127,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 137,131,254,255, 135,125,252,255, 125,116,248,255, 103,98,221,255, 77,73,169,255, 45,40,87,255, 17,17,24,255, 10,10,10,255, 17,17,17,255, 89,89,89,255, 219,219,219,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 248,246,238,255, 186,177,101,255, 157,148,18,255, 209,202,24,255, 250,248,36,255, 254,253,48,255, 253,253,54,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,55,255, 254,254,53,255, 253,253,48,255, 254,253,38,255, 247,245,33,255, 230,226,27,255, 218,213,41,255, 227,223,102,255, 242,236,159,255, 251,247,212,255, 254,252,229,255, 255,254,243,255, 255,255,244,255, 255,255,244,255, 255,255,237,255, 255,255,220,255, 255,255,185,255, 254,254,120,255, 253,253,70,255, 254,254,36,255, 253,253,39,255, 254,254,50,255, 253,253,63,255, 254,254,67,255, 253,253,67,255, 254,254,62,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,53,255, 242,240,44,255, 186,179,29,255, 103,102,21,255, 30,30,13,255, 12,12,12,255, 26,26,26,255, 151,151,151,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,230,254,255, 253,77,253,255, 254,43,254,255, 253,96,253,255, 254,136,254,255, 253,146,253,255, 254,136,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,127,254,255, 250,111,251,255, 207,77,213,255, 92,31,99,255, 55,37,57,255, 201,200,201,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,253,255,255, 255,215,255,255, 254,129,254,255, 253,63,253,255, 254,72,254,255, 253,115,253,255, 254,147,254,255, 253,155,253,255, 254,147,254,255, 253,134,253,255, 254,128,254,255, 253,128,253,255, 250,115,251,255, 158,60,162,255, 76,61,78,255, 212,212,212,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 222,163,163,255, 215,43,43,255, 253,66,66,255, 254,87,87,255, 255,97,97,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,96,96,255, 254,79,79,255, 242,53,53,255, 193,35,35,255, 109,17,17,255, 94,53,53,255, 204,191,191,255, 251,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,253,253,255, 254,182,182,255, 255,84,84,255, 254,113,113,255, 255,123,123,255, 254,116,116,255, 255,104,104,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 254,96,96,255, 240,75,75,255, 158,46,46,255, 58,22,22,255, 19,11,11,255, 13,12,12,255, 74,74,74,255, 233,233,233,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 234,250,233,255, 106,220,100,255, 118,249,107,255, 164,255,154,255, 172,254,161,255, 163,255,155,255, 152,254,144,255, 147,255,137,255, 145,254,135,255, 143,255,135,255, 138,253,132,255, 130,243,121,255, 115,225,108,255, 98,199,93,255, 75,150,70,255, 51,97,50,255, 32,58,32,255, 23,33,23,255, 16,19,16,255, 11,12,11,255, 21,21,21,255, 52,52,52,255, 123,123,123,255, 181,181,181,255, 229,229,229,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 243,243,248,255, 124,121,168,255, 35,29,119,255, 58,56,178,255, 90,82,219,255, 118,110,249,255, 133,124,254,255, 136,128,254,255, 137,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 137,127,254,255, 128,123,252,255, 112,103,230,255, 80,73,171,255, 47,43,87,255, 19,17,27,255, 10,10,12,255, 16,16,16,255, 88,88,88,255, 219,219,219,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,252,255, 216,213,161,255, 166,152,28,255, 209,196,23,255, 246,241,33,255, 254,254,44,255, 254,254,52,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,55,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 255,255,53,255, 254,254,49,255, 255,254,43,255, 251,249,34,255, 228,221,23,255, 199,192,45,255, 205,202,118,255, 237,234,201,255, 252,251,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,248,255, 254,254,226,255, 255,255,154,255, 254,254,69,255, 255,255,33,255, 254,254,45,255, 255,255,62,255, 254,254,66,255, 255,255,68,255, 254,254,63,255, 255,255,60,255, 254,254,59,255, 255,255,55,255, 254,254,58,255, 255,255,54,255, 254,254,52,255, 248,247,44,255, 206,203,32,255, 106,105,22,255, 30,30,13,255, 13,13,12,255, 46,46,46,255, 198,198,198,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,235,255,255, 254,88,254,255, 255,37,255,255, 254,89,254,255, 255,132,255,255, 254,143,254,255, 255,136,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,126,255,255, 254,112,254,255, 222,78,223,255, 107,37,108,255, 48,31,51,255, 179,178,180,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,244,255,255, 254,175,254,255, 255,63,255,255, 254,74,254,255, 255,119,255,255, 254,147,254,255, 255,155,255,255, 254,144,254,255, 255,129,255,255, 254,128,254,255, 254,121,254,255, 203,82,209,255, 70,35,75,255, 153,149,153,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,245,245,255, 220,110,110,255, 243,53,53,255, 254,85,85,255, 253,99,99,255, 254,102,102,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,98,98,255, 254,82,82,255, 237,60,60,255, 180,35,35,255, 109,19,19,255, 77,32,32,255, 181,166,166,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,239,239,255, 255,116,116,255, 253,94,94,255, 254,120,120,255, 253,121,121,255, 254,108,108,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,101,101,255, 252,90,90,255, 219,63,63,255, 109,34,34,255, 35,14,14,255, 14,10,10,255, 27,27,27,255, 176,176,176,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,255,250,255, 204,253,201,255, 134,253,121,255, 139,254,128,255, 168,253,156,255, 179,254,166,255, 174,253,159,255, 160,254,147,255, 147,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,135,255, 143,253,134,255, 138,251,132,255, 126,239,119,255, 112,217,102,255, 90,186,85,255, 75,149,70,255, 49,94,48,255, 28,52,27,255, 20,28,20,255, 16,19,16,255, 11,11,11,255, 28,28,28,255, 56,56,56,255, 131,131,131,255, 188,188,188,255, 239,239,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 246,246,250,255, 164,161,199,255, 42,37,128,255, 60,48,178,255, 91,82,226,255, 113,104,244,255, 132,122,253,255, 138,128,253,255, 138,131,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 136,123,252,255, 116,103,230,255, 81,73,171,255, 46,40,93,255, 18,18,34,255, 10,10,13,255, 17,17,17,255, 97,97,97,255, 231,231,231,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 241,238,218,255, 177,168,56,255, 197,183,18,255, 247,242,31,255, 253,253,40,255, 253,253,50,255, 254,254,58,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,54,255, 254,254,48,255, 250,250,38,255, 232,225,29,255, 193,184,26,255, 178,170,76,255, 224,223,191,255, 251,251,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,221,255, 254,254,122,255, 253,253,43,255, 254,254,41,255, 253,253,55,255, 254,254,65,255, 253,253,68,255, 254,254,66,255, 253,253,61,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,53,255, 249,249,45,255, 206,200,34,255, 101,99,21,255, 28,28,13,255, 15,15,14,255, 73,73,73,255, 220,220,220,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,242,254,255, 253,101,253,255, 254,37,254,255, 253,89,253,255, 254,132,254,255, 253,143,253,255, 254,136,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,127,254,255, 253,115,253,255, 221,78,227,255, 107,38,113,255, 46,29,46,255, 172,170,172,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,248,255,255, 254,155,254,255, 253,59,253,255, 254,83,254,255, 253,129,253,255, 254,150,254,255, 253,152,253,255, 254,134,254,255, 253,128,253,255, 254,126,254,255, 234,100,236,255, 108,41,111,255, 101,91,101,255, 240,240,240,255, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,253,255, 235,186,186,255, 222,53,53,255, 253,70,70,255, 255,96,96,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,99,99,255, 254,89,89,255, 245,68,68,255, 189,41,41,255, 100,17,17,255, 62,19,19,255, 146,126,126,255, 247,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 255,177,177,255, 254,80,80,255, 255,106,106,255, 254,119,119,255, 255,113,113,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,98,98,255, 245,76,76,255, 172,48,48,255, 79,24,24,255, 22,14,14,255, 12,11,11,255, 94,94,94,255, 239,239,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 225,254,223,255, 146,254,138,255, 131,252,115,255, 156,254,142,255, 177,254,164,255, 170,255,158,255, 153,254,143,255, 146,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 144,254,135,255, 142,254,133,255, 137,251,128,255, 126,240,119,255, 108,215,103,255, 86,179,82,255, 72,142,67,255, 50,96,49,255, 30,57,30,255, 17,29,17,255, 16,20,16,255, 15,17,15,255, 32,33,31,255, 88,90,88,255, 185,185,185,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,252,254,255, 170,169,209,255, 48,44,140,255, 50,40,169,255, 92,78,225,255, 116,109,246,255, 129,125,254,255, 138,127,254,255, 138,130,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 139,129,254,255, 139,132,254,255, 139,129,254,255, 139,132,254,255, 140,129,254,255, 139,132,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,128,254,255, 136,123,253,255, 116,105,230,255, 81,74,175,255, 49,45,107,255, 23,23,43,255, 12,12,13,255, 21,21,21,255, 125,125,125,255, 247,247,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,249,255, 215,208,140,255, 183,171,21,255, 238,230,25,255, 254,254,39,255, 254,254,48,255, 254,254,56,255, 254,254,57,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,55,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,55,255, 254,254,52,255, 254,254,48,255, 249,247,37,255, 218,213,31,255, 168,162,51,255, 184,181,137,255, 240,239,230,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,244,255, 254,254,176,255, 255,255,75,255, 254,254,42,255, 255,255,53,255, 254,254,63,255, 255,255,67,255, 254,254,66,255, 255,255,60,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,56,255, 248,247,45,255, 187,180,29,255, 99,94,21,255, 30,28,13,255, 18,18,16,255, 123,123,123,255, 237,237,237,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,248,255,255, 254,114,254,255, 255,37,255,255, 254,88,254,255, 255,131,255,255, 254,144,254,255, 255,138,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,127,255,255, 254,116,254,255, 222,78,226,255, 113,39,118,255, 46,21,46,255, 153,148,153,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,241,255,255, 254,122,254,255, 255,57,255,255, 254,97,254,255, 255,138,255,255, 254,153,254,255, 255,147,255,255, 254,134,254,255, 255,129,255,255, 250,116,250,255, 164,66,168,255, 87,67,88,255, 223,223,223,255, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 249,233,233,255, 208,74,74,255, 240,51,51,255, 253,85,85,255, 254,104,104,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,99,99,255, 254,91,91,255, 250,73,73,255, 212,49,49,255, 123,27,27,255, 56,13,13,255, 94,68,68,255, 228,225,225,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,229,229,255, 253,88,88,255, 254,93,93,255, 253,119,119,255, 254,116,116,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,103,103,255, 253,94,94,255, 222,65,65,255, 140,40,40,255, 47,17,17,255, 15,12,12,255, 24,24,24,255, 148,148,148,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 231,251,230,255, 101,215,91,255, 99,241,83,255, 147,253,134,255, 163,254,154,255, 152,253,147,255, 145,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,135,255, 141,251,134,255, 137,250,131,255, 133,243,121,255, 114,225,110,255, 96,202,93,255, 75,153,70,255, 56,113,53,255, 41,80,35,255, 25,47,17,255, 52,63,51,255, 194,195,194,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 229,228,241,255, 79,71,167,255, 49,43,178,255, 88,79,230,255, 122,112,249,255, 136,127,253,255, 139,132,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 139,129,253,255, 139,131,254,255, 142,129,253,255, 143,133,254,255, 144,135,253,255, 146,136,254,255, 148,141,253,255, 152,141,254,255, 147,140,253,255, 144,137,254,255, 143,132,253,255, 139,132,254,255, 138,129,253,255, 138,130,254,255, 138,128,253,255, 136,124,252,255, 119,108,238,255, 89,82,197,255, 54,49,113,255, 19,19,30,255, 10,10,10,255, 35,35,35,255, 182,182,182,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,253,255, 229,227,173,255, 187,179,38,255, 218,207,20,255, 251,250,39,255, 253,253,48,255, 254,254,56,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,51,255, 253,253,41,255, 241,236,35,255, 192,181,22,255, 144,141,58,255, 214,213,192,255, 251,251,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,227,255, 255,255,132,255, 254,254,41,255, 253,253,41,255, 254,254,57,255, 253,253,65,255, 254,254,66,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,53,255, 245,242,44,255, 203,194,32,255, 106,98,21,255, 31,30,13,255, 28,28,27,255, 112,112,112,255, 239,239,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,127,255,255, 254,36,254,255, 253,81,253,255, 254,130,254,255, 253,143,253,255, 254,136,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,119,253,255, 221,78,227,255, 115,40,122,255, 47,21,47,255, 151,144,151,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,225,255,255, 254,95,254,255, 253,53,253,255, 254,98,254,255, 253,140,253,255, 254,150,254,255, 253,135,253,255, 254,130,254,255, 252,125,252,255, 229,104,230,255, 138,64,138,255, 185,172,185,255, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 240,193,193,255, 223,50,50,255, 251,70,70,255, 254,97,97,255, 255,108,108,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,97,97,255, 253,80,80,255, 233,62,62,255, 158,35,35,255, 71,16,16,255, 62,30,30,255, 173,159,159,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,245,245,255, 254,121,121,255, 255,76,76,255, 254,108,108,255, 255,115,115,255, 254,107,107,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,98,98,255, 246,78,78,255, 190,53,53,255, 81,25,25,255, 25,12,12,255, 14,11,11,255, 83,83,83,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 213,236,212,255, 66,181,64,255, 86,233,78,255, 137,254,128,255, 158,255,145,255, 150,254,141,255, 145,255,137,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 146,255,137,255, 145,254,137,255, 146,255,137,255, 146,254,136,255, 143,255,135,255, 138,253,132,255, 130,243,120,255, 109,224,99,255, 73,161,62,255, 34,71,23,255, 107,118,104,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 189,189,223,255, 50,42,167,255, 74,65,223,255, 114,107,253,255, 136,128,254,255, 142,133,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 140,131,254,255, 142,131,254,255, 139,130,254,255, 137,129,254,255, 137,130,254,255, 143,133,254,255, 148,138,254,255, 154,146,254,255, 159,149,254,255, 160,151,254,255, 158,148,254,255, 151,143,254,255, 143,134,254,255, 139,129,254,255, 138,130,254,255, 138,129,254,255, 134,124,254,255, 118,108,238,255, 76,73,170,255, 32,32,68,255, 13,13,17,255, 11,11,11,255, 91,91,91,255, 238,238,238,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,252,244,255, 208,203,89,255, 199,187,15,255, 243,237,30,255, 254,254,48,255, 254,254,56,255, 254,254,57,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,55,255, 254,254,58,255, 254,254,56,255, 254,254,56,255, 254,254,54,255, 254,253,48,255, 240,236,34,255, 191,180,20,255, 129,124,50,255, 208,208,193,255, 254,254,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,233,255, 241,235,82,255, 239,233,21,255, 252,251,44,255, 254,254,61,255, 255,255,64,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,54,255, 254,254,51,255, 249,248,44,255, 188,182,29,255, 82,78,19,255, 17,17,10,255, 29,29,28,255, 175,175,175,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,127,255,255, 255,36,255,255, 254,80,254,255, 255,127,255,255, 254,144,254,255, 255,139,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,119,254,255, 222,79,227,255, 116,42,123,255, 46,21,47,255, 150,144,150,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,208,255,255, 254,81,254,255, 255,62,255,255, 254,106,254,255, 255,108,255,255, 254,98,254,255, 255,100,255,255, 254,100,254,255, 255,105,255,255, 241,130,241,255, 235,200,235,255, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 253,246,246,255, 228,115,115,255, 243,51,51,255, 254,84,84,255, 253,104,104,255, 254,107,107,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,100,100,255, 253,90,90,255, 243,67,67,255, 197,46,46,255, 99,22,22,255, 53,16,16,255, 139,120,120,255, 248,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 253,157,157,255, 254,62,62,255, 253,103,103,255, 254,116,116,255, 253,110,110,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,102,102,255, 252,87,87,255, 225,63,63,255, 124,36,36,255, 39,16,16,255, 16,10,10,255, 48,48,48,255, 219,219,219,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,252,249,255, 138,204,134,255, 58,197,51,255, 103,248,98,255, 141,253,134,255, 152,254,147,255, 147,253,138,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 150,254,138,255, 153,253,143,255, 157,254,147,255, 156,253,149,255, 151,254,142,255, 148,253,141,255, 135,253,128,255, 105,231,96,255, 54,133,49,255, 34,57,30,255, 178,185,177,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,251,253,255, 144,144,204,255, 48,46,184,255, 93,83,241,255, 127,118,254,255, 142,132,253,255, 140,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,127,253,255, 135,125,254,255, 128,120,253,255, 124,113,253,255, 116,108,252,255, 106,96,251,255, 100,93,249,255, 105,95,250,255, 110,99,250,255, 125,114,253,255, 145,132,253,255, 153,144,254,255, 164,153,253,255, 167,154,254,255, 160,146,253,255, 148,138,254,255, 139,131,253,255, 138,131,254,255, 136,129,253,255, 130,123,251,255, 101,93,214,255, 56,51,120,255, 21,20,38,255, 12,12,15,255, 30,30,30,255, 179,179,179,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 241,237,194,255, 202,190,32,255, 226,214,21,255, 251,251,39,255, 254,254,52,255, 253,253,56,255, 254,254,58,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,55,255, 254,254,50,255, 246,244,36,255, 192,186,21,255, 113,108,21,255, 175,173,150,255, 252,252,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,254,255, 242,239,189,255, 213,198,38,255, 224,213,17,255, 251,248,34,255, 253,253,50,255, 254,254,59,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,54,255, 254,254,51,255, 237,234,41,255, 156,150,28,255, 52,49,16,255, 17,17,10,255, 96,96,92,255, 243,243,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,127,255,255, 254,34,254,255, 253,74,253,255, 254,124,254,255, 253,144,253,255, 254,139,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,119,253,255, 226,84,232,255, 129,46,135,255, 50,21,51,255, 151,144,151,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,255,255, 255,205,255,255, 254,93,254,255, 253,116,253,255, 255,151,255,255, 255,153,255,255, 255,188,255,255, 255,225,255,255, 255,232,255,255, 255,245,255,255, 255,254,255,255, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 250,231,231,255, 234,73,73,255, 252,66,66,255, 255,95,95,255, 254,105,105,255, 255,103,103,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,97,97,255, 252,81,81,255, 223,53,53,255, 149,32,32,255, 62,16,16,255, 66,39,39,255, 206,198,198,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,158,158,255, 255,54,54,255, 254,101,101,255, 255,114,114,255, 254,108,108,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,95,95,255, 243,76,76,255, 163,46,46,255, 56,20,20,255, 16,12,12,255, 25,25,25,255, 192,192,192,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 234,246,234,255, 81,183,77,255, 75,226,70,255, 120,254,112,255, 150,254,138,255, 151,255,143,255, 145,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 143,255,134,255, 139,254,128,255, 137,251,126,255, 144,252,131,255, 161,255,150,255, 166,254,155,255, 167,255,157,255, 164,254,153,255, 139,248,131,255, 91,199,79,255, 37,90,34,255, 67,81,66,255, 227,229,227,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,245,250,255, 98,94,187,255, 63,61,211,255, 104,100,251,255, 135,127,254,255, 144,133,254,255, 140,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 136,127,254,255, 132,120,254,255, 116,109,251,255, 101,93,246,255, 91,75,233,255, 74,63,220,255, 58,52,208,255, 69,62,210,255, 77,68,223,255, 97,86,236,255, 94,82,247,255, 96,88,253,255, 106,96,254,255, 134,119,254,255, 164,148,254,255, 171,155,254,255, 164,155,254,255, 151,144,254,255, 142,131,254,255, 138,131,254,255, 135,128,254,255, 120,111,241,255, 78,74,175,255, 39,37,80,255, 15,15,26,255, 14,14,16,255, 105,105,105,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,251,255, 226,216,118,255, 221,205,19,255, 249,243,26,255, 254,254,43,255, 254,254,53,255, 254,254,58,255, 254,254,57,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,55,255, 254,254,58,255, 254,254,55,255, 254,254,50,255, 254,251,39,255, 214,207,28,255, 117,114,22,255, 135,134,101,255, 240,240,236,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,250,236,255, 216,206,87,255, 213,199,17,255, 239,233,24,255, 254,253,43,255, 254,254,55,255, 255,255,59,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 253,253,49,255, 218,215,36,255, 112,107,21,255, 36,34,15,255, 75,74,70,255, 238,238,238,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,127,255,255, 255,33,255,255, 254,71,254,255, 255,124,255,255, 254,145,254,255, 255,139,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,119,254,255, 228,88,233,255, 136,47,141,255, 53,21,54,255, 146,140,146,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,255,255, 255,234,255,255, 254,240,254,255, 255,254,255,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 250,219,219,255, 239,66,66,255, 253,79,79,255, 254,104,104,255, 253,108,108,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,96,96,255, 244,70,70,255, 189,44,44,255, 103,25,25,255, 48,13,13,255, 119,105,105,255, 247,247,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,169,169,255, 254,55,55,255, 253,96,96,255, 254,112,112,255, 253,110,110,255, 254,104,104,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,98,98,255, 249,81,81,255, 185,52,52,255, 70,25,25,255, 18,11,11,255, 21,20,20,255, 156,156,156,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 179,218,178,255, 63,188,59,255, 100,245,91,255, 134,254,123,255, 153,253,141,255, 150,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,134,255, 134,254,128,255, 117,249,112,255, 97,223,91,255, 92,216,84,255, 119,244,109,255, 134,252,120,255, 143,253,131,255, 153,253,141,255, 147,248,139,255, 89,178,79,255, 29,63,27,255, 135,146,135,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 218,218,239,255, 71,63,186,255, 82,73,230,255, 118,113,253,255, 139,132,254,255, 143,133,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,131,254,255, 133,127,253,255, 126,118,252,255, 110,102,246,255, 88,81,220,255, 58,55,185,255, 46,39,150,255, 68,62,157,255, 136,135,198,255, 212,210,238,255, 227,226,248,255, 234,233,252,255, 222,220,253,255, 188,185,254,255, 150,142,255,255, 110,99,253,255, 126,111,254,255, 156,145,253,255, 170,159,254,255, 168,157,253,255, 151,141,254,255, 139,131,253,255, 138,131,254,255, 128,124,252,255, 98,95,219,255, 58,57,129,255, 26,25,52,255, 12,12,18,255, 74,74,74,255, 239,239,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,252,239,255, 225,214,79,255, 238,228,18,255, 253,252,37,255, 253,253,50,255, 254,254,58,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,52,255, 252,250,40,255, 228,218,33,255, 140,135,19,255, 108,108,65,255, 226,226,221,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,251,255, 228,221,154,255, 200,190,26,255, 233,224,22,255, 252,251,34,255, 254,254,49,255, 253,253,59,255, 254,254,59,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,53,255, 248,247,42,255, 171,162,25,255, 69,63,16,255, 69,69,55,255, 236,236,235,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,140,255,255, 254,36,254,255, 253,70,253,255, 254,123,254,255, 253,146,253,255, 254,139,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,120,253,255, 228,90,233,255, 133,47,141,255, 52,21,56,255, 122,115,122,255, 247,247,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 246,174,174,255, 248,63,63,255, 254,90,90,255, 255,106,106,255, 254,105,105,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,98,98,255, 254,82,82,255, 230,59,59,255, 143,33,33,255, 65,16,16,255, 48,19,19,255, 170,160,160,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,179,179,255, 255,54,54,255, 254,90,90,255, 255,110,110,255, 254,110,110,255, 255,104,104,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,101,101,255, 253,87,87,255, 207,60,60,255, 95,30,30,255, 30,14,14,255, 15,11,11,255, 112,112,112,255, 253,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 243,250,243,255, 101,188,97,255, 73,213,64,255, 123,252,109,255, 145,255,135,255, 152,254,144,255, 147,255,138,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 144,255,136,255, 139,254,131,255, 120,247,112,255, 91,215,87,255, 61,161,56,255, 32,97,31,255, 68,156,67,255, 137,247,130,255, 135,249,126,255, 111,251,99,255, 112,251,104,255, 96,208,85,255, 66,100,64,255, 210,214,210,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,255,255, 171,170,222,255, 54,45,198,255, 105,92,244,255, 135,123,254,255, 144,135,254,255, 140,132,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 138,129,254,255, 138,131,254,255, 134,127,254,255, 122,117,252,255, 103,95,240,255, 77,71,201,255, 46,43,136,255, 37,35,93,255, 135,135,164,255, 221,221,232,255, 250,250,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,251,255,255, 223,221,254,255, 140,131,254,255, 108,96,254,255, 146,130,254,255, 167,154,254,255, 165,155,254,255, 146,140,254,255, 139,131,254,255, 137,130,254,255, 120,114,244,255, 76,76,170,255, 38,38,77,255, 16,16,18,255, 52,52,52,255, 220,220,220,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,247,207,255, 229,217,41,255, 248,243,25,255, 254,254,45,255, 254,254,56,255, 254,254,59,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,55,255, 254,254,52,255, 253,252,46,255, 233,225,34,255, 159,151,20,255, 96,92,40,255, 203,203,193,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 240,237,207,255, 196,182,49,255, 215,206,20,255, 249,247,32,255, 254,254,46,255, 255,255,55,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,53,255, 250,245,42,255, 181,173,29,255, 80,79,18,255, 111,111,89,255, 244,244,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,155,255,255, 255,39,255,255, 254,69,254,255, 255,120,255,255, 254,144,254,255, 255,139,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,120,254,255, 231,91,235,255, 139,47,148,255, 56,21,61,255, 118,111,121,255, 247,246,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,254,254,255, 246,144,144,255, 252,63,63,255, 253,96,96,255, 254,106,106,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,96,96,255, 250,73,73,255, 199,48,48,255, 98,24,24,255, 47,14,14,255, 85,66,66,255, 230,227,227,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,161,161,255, 253,45,45,255, 253,92,92,255, 254,113,113,255, 253,109,109,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,102,102,255, 253,94,94,255, 228,66,66,255, 126,33,33,255, 39,16,16,255, 18,12,12,255, 91,86,86,255, 242,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 212,234,212,255, 70,183,66,255, 93,238,83,255, 133,253,123,255, 150,254,137,255, 151,253,140,255, 145,254,137,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,136,255, 132,252,122,255, 103,225,94,255, 69,170,62,255, 39,102,34,255, 26,53,26,255, 138,154,138,255, 244,252,244,255, 243,254,242,255, 231,254,229,255, 229,254,228,255, 220,250,219,255, 213,235,213,255, 250,251,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 248,247,252,255, 117,114,207,255, 65,59,219,255, 119,107,253,255, 143,133,253,255, 147,136,254,255, 140,131,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,128,253,255, 132,120,253,255, 108,98,243,255, 81,72,207,255, 49,48,146,255, 26,25,77,255, 123,122,140,255, 245,245,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 231,230,255,255, 123,117,253,255, 106,92,254,255, 151,140,253,255, 169,160,254,255, 161,151,253,255, 148,136,254,255, 138,128,254,255, 131,121,249,255, 92,87,203,255, 48,46,103,255, 17,17,24,255, 32,32,32,255, 200,200,200,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 246,240,159,255, 235,222,26,255, 251,250,33,255, 254,254,50,255, 253,253,60,255, 254,254,60,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,51,255, 249,242,37,255, 188,176,23,255, 99,97,19,255, 130,129,105,255, 248,248,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 244,244,227,255, 197,190,89,255, 189,177,17,255, 235,231,25,255, 253,253,39,255, 253,253,49,255, 254,254,59,255, 253,253,57,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 252,250,50,255, 229,218,36,255, 127,119,21,255, 71,70,39,255, 197,197,191,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,155,255,255, 254,38,254,255, 253,64,253,255, 254,119,254,255, 253,145,253,255, 254,139,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,120,253,255, 238,91,239,255, 153,53,159,255, 60,24,64,255, 119,111,119,255, 246,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 253,242,242,255, 246,108,108,255, 254,71,71,255, 254,104,104,255, 255,109,109,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,100,100,255, 254,92,92,255, 238,65,65,255, 160,37,37,255, 68,16,16,255, 37,12,12,255, 126,114,114,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,157,157,255, 251,46,46,255, 254,93,93,255, 255,110,110,255, 254,105,105,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,97,97,255, 238,71,71,255, 148,38,38,255, 52,16,16,255, 23,10,10,255, 88,83,83,255, 240,238,238,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,252,249,255, 135,199,134,255, 59,190,52,255, 113,250,102,255, 142,254,133,255, 150,255,141,255, 148,254,138,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 143,255,133,255, 121,249,117,255, 86,198,80,255, 50,119,45,255, 23,63,23,255, 88,103,88,255, 231,234,231,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 241,241,250,255, 89,85,206,255, 80,77,237,255, 129,120,254,255, 150,138,254,255, 145,136,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 138,129,254,255, 135,130,254,255, 119,113,250,255, 90,83,216,255, 57,50,155,255, 32,25,86,255, 61,59,83,255, 220,219,224,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,255,255, 207,205,254,255, 103,95,254,255, 114,104,254,255, 162,148,254,255, 169,157,254,255, 157,144,254,255, 139,133,254,255, 133,125,253,255, 103,93,220,255, 56,54,131,255, 19,19,39,255, 18,18,21,255, 189,189,189,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,250,255, 247,233,97,255, 249,236,21,255, 254,253,39,255, 254,254,50,255, 254,254,60,255, 254,254,57,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,54,255, 252,250,48,255, 223,213,34,255, 128,120,19,255, 80,78,35,255, 202,200,192,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,250,255, 206,202,127,255, 174,163,22,255, 215,204,21,255, 252,249,39,255, 255,255,48,255, 254,254,55,255, 255,255,57,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,52,255, 246,241,39,255, 177,169,25,255, 86,83,33,255, 158,156,146,255, 248,248,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,158,255,255, 255,38,255,255, 254,60,254,255, 255,113,255,255, 254,140,254,255, 255,140,255,255, 254,130,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,120,254,255, 239,91,239,255, 155,52,159,255, 62,23,64,255, 105,97,105,255, 243,242,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 253,231,231,255, 246,81,81,255, 254,82,82,255, 253,108,108,255, 254,112,112,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,99,99,255, 253,84,84,255, 226,57,57,255, 124,30,30,255, 50,14,14,255, 44,22,22,255, 179,170,170,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,251,251,255, 249,141,141,255, 252,50,50,255, 253,93,93,255, 254,112,112,255, 253,108,108,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,98,98,255, 241,72,72,255, 157,44,44,255, 56,17,17,255, 26,12,12,255, 88,83,83,255, 240,239,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 234,245,233,255, 80,180,78,255, 80,220,70,255, 128,253,116,255, 150,253,141,255, 150,254,141,255, 145,253,137,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,136,255, 137,253,130,255, 106,232,102,255, 64,153,57,255, 28,67,25,255, 74,90,74,255, 216,219,216,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 224,224,245,255, 82,76,216,255, 98,87,248,255, 138,129,254,255, 150,142,253,255, 143,135,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,130,254,255, 132,121,253,255, 107,100,238,255, 70,66,182,255, 37,34,103,255, 23,20,51,255, 131,130,144,255, 252,252,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,250,255,255, 193,190,255,255, 100,95,253,255, 131,120,254,255, 167,153,253,255, 165,154,254,255, 147,139,254,255, 138,133,253,255, 120,114,238,255, 74,71,162,255, 26,25,54,255, 19,19,24,255, 171,171,171,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,241,255, 250,237,82,255, 251,245,29,255, 253,253,48,255, 254,254,56,255, 253,253,62,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 253,253,52,255, 241,237,38,255, 177,167,25,255, 77,71,16,255, 123,122,100,255, 245,244,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 236,232,206,255, 175,163,48,255, 183,172,15,255, 239,233,29,255, 253,253,47,255, 254,254,52,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,55,255, 253,253,53,255, 253,252,46,255, 216,208,34,255, 116,109,20,255, 118,117,91,255, 240,240,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,182,255,255, 254,43,254,255, 253,58,253,255, 254,110,254,255, 253,141,253,255, 254,141,254,255, 253,130,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,122,253,255, 245,98,245,255, 168,61,172,255, 69,27,72,255, 90,78,91,255, 239,238,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 254,227,227,255, 251,76,76,255, 255,91,91,255, 254,109,109,255, 255,110,110,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,97,97,255, 251,76,76,255, 201,48,48,255, 96,26,26,255, 36,14,14,255, 62,44,44,255, 222,218,218,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,243,243,255, 242,106,106,255, 252,56,56,255, 254,96,96,255, 255,110,110,255, 254,105,105,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,97,97,255, 241,72,72,255, 159,41,41,255, 60,16,16,255, 28,10,10,255, 88,83,83,255, 240,238,238,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,252,249,255, 153,204,147,255, 62,184,54,255, 100,246,97,255, 137,255,132,255, 151,254,144,255, 149,255,140,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 144,254,133,255, 128,247,115,255, 85,195,76,255, 43,100,37,255, 58,77,58,255, 190,194,190,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 211,210,242,255, 76,68,220,255, 105,95,252,255, 143,135,254,255, 150,142,254,255, 144,134,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 134,127,254,255, 121,115,251,255, 90,84,213,255, 53,47,138,255, 22,19,65,255, 50,50,68,255, 212,212,216,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,250,255,255, 185,181,254,255, 110,99,254,255, 144,136,254,255, 165,154,254,255, 152,146,254,255, 141,130,254,255, 130,119,252,255, 104,93,220,255, 47,39,112,255, 31,29,44,255, 164,164,164,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,224,255, 250,243,61,255, 252,251,31,255, 254,254,50,255, 254,254,60,255, 254,254,60,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,54,255, 253,253,48,255, 218,211,33,255, 121,108,19,255, 80,77,45,255, 201,201,194,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,243,231,255, 187,174,89,255, 168,154,17,255, 216,204,22,255, 252,250,36,255, 254,254,52,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,54,255, 254,252,48,255, 243,236,37,255, 170,162,24,255, 91,85,39,255, 189,189,183,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,190,255,255, 255,43,255,255, 254,55,254,255, 255,109,255,255, 254,140,254,255, 255,143,255,255, 254,131,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,122,254,255, 249,101,249,255, 174,61,178,255, 73,28,76,255, 85,76,85,255, 238,238,238,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,228,228,255, 253,79,79,255, 254,92,92,255, 253,111,111,255, 254,110,110,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,102,102,255, 254,90,90,255, 245,70,70,255, 167,42,42,255, 66,18,18,255, 32,12,12,255, 105,92,92,255, 243,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,228,228,255, 239,67,67,255, 254,64,64,255, 253,102,102,255, 254,112,112,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,98,98,255, 240,72,72,255, 156,40,40,255, 62,17,17,255, 31,12,12,255, 89,83,83,255, 240,239,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 224,238,223,255, 71,168,65,255, 70,207,60,255, 121,250,112,255, 147,254,137,255, 150,253,141,255, 145,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,136,255, 136,253,130,255, 105,225,101,255, 52,127,49,255, 24,45,23,255, 91,95,91,255, 155,155,155,255, 213,213,213,255, 229,229,229,255, 236,236,236,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 201,200,240,255, 69,64,222,255, 112,102,251,255, 149,137,254,255, 150,143,253,255, 140,135,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,128,253,255, 132,123,253,255, 107,99,238,255, 69,62,170,255, 31,29,82,255, 18,17,43,255, 132,132,142,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 248,247,255,255, 165,160,255,255, 103,93,253,255, 137,128,253,255, 117,111,250,255, 99,86,242,255, 89,80,230,255, 94,85,219,255, 137,129,211,255, 178,177,206,255, 240,240,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,214,255, 251,244,50,255, 251,251,31,255, 253,253,50,255, 254,254,60,255, 253,253,60,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,51,255, 244,241,37,255, 168,159,21,255, 77,68,20,255, 174,173,161,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 240,240,238,255, 239,239,238,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,250,255, 199,191,139,255, 156,142,24,255, 203,194,19,255, 246,241,32,255, 254,254,47,255, 253,253,55,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,52,255, 245,243,38,255, 195,190,29,255, 104,99,24,255, 155,150,135,255, 247,247,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,213,255,255, 254,49,254,255, 253,54,253,255, 254,110,254,255, 253,141,253,255, 254,142,254,255, 253,130,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,123,253,255, 249,102,249,255, 173,62,178,255, 75,28,78,255, 63,53,63,255, 232,232,232,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,228,228,255, 254,82,82,255, 255,99,99,255, 254,114,114,255, 255,110,110,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,97,97,255, 255,81,81,255, 230,60,60,255, 135,33,33,255, 53,15,15,255, 33,11,11,255, 135,126,126,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,184,184,255, 240,51,51,255, 255,71,71,255, 254,103,103,255, 255,111,111,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,98,98,255, 243,75,75,255, 158,42,42,255, 59,17,17,255, 30,10,10,255, 89,83,83,255, 240,238,238,255, 0,0,0,0, 0,0,0,0, 254,254,254,255, 175,216,172,255, 57,177,46,255, 93,237,81,255, 134,254,123,255, 149,255,141,255, 148,254,138,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 143,254,133,255, 120,247,114,255, 78,178,71,255, 27,58,27,255, 11,14,11,255, 12,12,12,255, 19,19,19,255, 38,38,38,255, 53,53,53,255, 76,76,76,255, 137,137,137,255, 224,224,224,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 201,199,242,255, 70,65,223,255, 118,105,252,255, 153,139,254,255, 152,142,254,255, 143,134,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 137,130,254,255, 121,118,253,255, 90,82,208,255, 43,39,104,255, 16,15,33,255, 15,12,24,255, 76,76,78,255, 133,133,133,255, 143,143,143,255, 164,164,164,255, 182,182,182,255, 224,224,224,255, 228,228,228,255, 235,235,235,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 236,235,255,255, 137,132,253,255, 95,86,235,255, 108,101,221,255, 147,144,223,255, 198,197,237,255, 229,227,244,255, 250,249,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,214,255, 254,246,51,255, 254,251,34,255, 254,254,52,255, 254,254,63,255, 254,254,60,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,54,255, 252,252,48,255, 221,217,35,255, 124,113,19,255, 76,74,47,255, 218,218,214,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 246,245,235,255, 148,143,98,255, 89,88,82,255, 130,130,130,255, 150,150,150,255, 188,188,188,255, 223,223,223,255, 203,202,181,255, 137,126,44,255, 167,152,16,255, 238,234,29,255, 254,254,40,255, 255,255,51,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,54,255, 254,252,47,255, 221,214,32,255, 136,130,20,255, 93,90,53,255, 222,221,218,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,217,255,255, 255,50,255,255, 254,52,254,255, 255,108,255,255, 254,139,254,255, 255,143,255,255, 254,132,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,124,254,255, 249,102,249,255, 174,61,179,255, 78,28,82,255, 59,47,61,255, 231,230,231,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,228,228,255, 253,85,85,255, 254,101,101,255, 253,114,114,255, 254,110,110,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,97,97,255, 252,75,75,255, 218,55,55,255, 103,30,30,255, 39,15,15,255, 40,23,23,255, 174,166,166,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 241,158,158,255, 243,48,48,255, 254,81,81,255, 253,104,104,255, 254,110,110,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,99,99,255, 246,75,75,255, 156,41,41,255, 58,16,16,255, 32,12,12,255, 94,86,86,255, 242,241,241,255, 0,0,0,0, 0,0,0,0, 242,249,242,255, 101,185,97,255, 67,208,58,255, 110,250,102,255, 141,253,135,255, 148,254,141,255, 145,253,138,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,136,255, 136,251,129,255, 100,220,95,255, 50,117,46,255, 26,52,26,255, 22,35,22,255, 13,22,13,255, 14,19,14,255, 10,13,10,255, 12,13,12,255, 10,10,10,255, 18,18,18,255, 77,77,77,255, 162,162,162,255, 223,223,223,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 201,201,245,255, 74,70,230,255, 123,112,252,255, 153,141,254,255, 152,144,253,255, 140,134,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 133,128,253,255, 112,109,242,255, 67,66,161,255, 26,25,56,255, 16,15,24,255, 15,15,19,255, 12,12,15,255, 14,14,16,255, 14,14,15,255, 22,22,22,255, 26,26,26,255, 43,43,43,255, 51,51,51,255, 71,71,71,255, 92,92,92,255, 131,131,131,255, 143,143,143,255, 161,161,161,255, 185,185,185,255, 224,224,224,255, 229,229,229,255, 235,235,235,255, 241,241,241,255, 254,254,255,255, 235,235,253,255, 209,208,242,255, 235,235,246,255, 252,252,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,212,255, 253,248,48,255, 254,251,36,255, 253,253,51,255, 254,254,63,255, 253,253,60,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,52,255, 250,246,40,255, 200,192,33,255, 92,85,17,255, 92,92,71,255, 241,241,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,254,255, 215,211,156,255, 153,146,25,255, 51,51,13,255, 12,12,12,255, 16,16,16,255, 30,30,30,255, 41,41,41,255, 58,55,32,255, 114,99,13,255, 200,186,24,255, 248,246,39,255, 253,253,48,255, 254,254,53,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,252,51,255, 241,233,38,255, 162,158,23,255, 80,78,22,255, 157,157,139,255, 251,251,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,217,255,255, 254,50,254,255, 253,51,253,255, 254,104,254,255, 253,136,253,255, 254,142,254,255, 253,132,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,126,253,255, 249,103,249,255, 181,62,183,255, 85,28,86,255, 59,49,60,255, 231,231,231,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,228,228,255, 254,83,83,255, 255,101,101,255, 254,116,116,255, 255,111,111,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,96,96,255, 250,72,72,255, 205,51,51,255, 95,27,27,255, 33,13,13,255, 46,32,32,255, 197,192,192,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,247,247,255, 234,121,121,255, 248,52,52,255, 255,86,86,255, 254,104,104,255, 255,108,108,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,97,97,255, 245,71,71,255, 157,39,39,255, 58,16,16,255, 33,11,11,255, 118,111,111,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 211,232,211,255, 69,180,65,255, 86,238,78,255, 124,255,113,255, 149,254,137,255, 150,255,142,255, 145,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 144,254,135,255, 122,241,112,255, 69,157,60,255, 46,103,42,255, 62,137,58,255, 54,117,54,255, 43,92,42,255, 36,74,36,255, 26,49,26,255, 20,33,20,255, 16,21,16,255, 10,11,10,255, 12,12,12,255, 22,22,22,255, 56,56,56,255, 156,156,156,255, 243,243,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 201,201,246,255, 81,74,238,255, 125,116,254,255, 156,144,254,255, 152,146,254,255, 143,131,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 133,127,251,255, 103,100,230,255, 82,78,186,255, 66,65,149,255, 62,55,131,255, 54,50,115,255, 49,47,103,255, 42,39,86,255, 35,34,68,255, 29,29,57,255, 26,26,47,255, 21,21,36,255, 17,17,28,255, 14,12,20,255, 15,15,18,255, 11,11,13,255, 16,16,17,255, 20,20,20,255, 29,29,29,255, 41,41,41,255, 53,53,53,255, 72,72,72,255, 90,90,90,255, 132,132,132,255, 142,142,142,255, 164,164,164,255, 181,181,181,255, 224,224,224,255, 228,228,228,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,201,255, 254,254,35,255, 254,254,36,255, 254,254,56,255, 254,254,63,255, 254,254,60,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,253,51,255, 240,230,36,255, 157,152,22,255, 64,61,15,255, 152,152,143,255, 252,252,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 241,239,219,255, 181,171,66,255, 209,198,24,255, 132,131,26,255, 37,32,14,255, 26,25,13,255, 14,14,10,255, 13,13,12,255, 21,21,10,255, 125,117,16,255, 229,220,32,255, 253,252,47,255, 254,254,53,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,54,255, 252,251,46,255, 209,200,34,255, 112,108,23,255, 120,118,95,255, 235,235,232,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,217,255,255, 255,50,255,255, 254,46,254,255, 255,101,255,255, 254,135,254,255, 255,143,255,255, 254,133,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,125,254,255, 250,102,250,255, 191,61,191,255, 96,31,96,255, 63,50,63,255, 231,230,231,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,228,228,255, 253,86,86,255, 254,103,103,255, 253,116,116,255, 254,112,112,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,97,97,255, 246,72,72,255, 184,47,47,255, 79,26,26,255, 31,14,14,255, 74,67,67,255, 230,228,228,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,228,228,255, 227,67,67,255, 249,61,61,255, 254,91,91,255, 253,108,108,255, 254,104,104,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,100,100,255, 254,90,90,255, 238,62,62,255, 143,37,37,255, 51,16,16,255, 38,20,20,255, 162,153,153,255, 254,254,254,255, 0,0,0,0, 252,253,252,255, 151,204,150,255, 58,187,49,255, 108,248,99,255, 137,254,126,255, 149,253,141,255, 148,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 141,252,131,255, 103,221,99,255, 74,163,67,255, 90,196,83,255, 106,226,101,255, 101,212,94,255, 93,197,86,255, 82,177,74,255, 67,141,62,255, 56,118,55,255, 40,75,40,255, 23,32,21,255, 12,13,12,255, 12,12,12,255, 10,10,10,255, 27,27,27,255, 125,125,125,255, 232,232,232,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 213,213,248,255, 85,79,238,255, 121,112,253,255, 154,147,254,255, 155,149,253,255, 143,135,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 135,128,252,255, 129,122,250,255, 128,120,248,255, 124,118,245,255, 118,112,237,255, 115,106,233,255, 109,102,225,255, 103,96,215,255, 94,87,197,255, 87,83,190,255, 81,76,176,255, 74,67,159,255, 62,57,135,255, 58,51,125,255, 53,47,108,255, 42,41,88,255, 36,36,69,255, 32,32,62,255, 24,24,48,255, 21,20,39,255, 19,15,30,255, 16,15,22,255, 12,12,16,255, 14,14,16,255, 14,14,15,255, 22,22,22,255, 26,26,26,255, 42,42,42,255, 51,51,53,255, 127,126,132,255, 251,250,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,214,255, 253,253,52,255, 254,254,34,255, 253,253,55,255, 254,254,64,255, 253,253,60,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,55,255, 253,250,49,255, 212,202,34,255, 119,113,19,255, 53,51,25,255, 188,188,183,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 247,245,235,255, 192,186,98,255, 183,173,20,255, 242,238,32,255, 219,217,39,255, 152,144,28,255, 124,117,24,255, 84,81,18,255, 49,48,13,255, 52,51,15,255, 146,143,24,255, 242,239,35,255, 254,254,49,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,55,255, 253,253,55,255, 254,254,51,255, 240,235,37,255, 164,155,22,255, 101,97,56,255, 219,218,214,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,218,255,255, 254,52,254,255, 253,45,253,255, 254,97,254,255, 253,133,253,255, 254,144,254,255, 253,138,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,126,253,255, 251,103,251,255, 194,63,196,255, 99,32,100,255, 61,50,63,255, 228,228,228,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,229,229,255, 254,89,89,255, 255,102,102,255, 254,116,116,255, 255,111,111,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,95,95,255, 243,67,67,255, 163,43,43,255, 64,18,18,255, 29,12,12,255, 98,93,93,255, 243,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,253,255, 234,167,167,255, 231,48,48,255, 254,75,75,255, 255,99,99,255, 254,110,110,255, 255,104,104,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,99,99,255, 255,86,86,255, 229,59,59,255, 123,31,31,255, 45,15,15,255, 41,25,25,255, 196,192,192,255, 0,0,0,0, 0,0,0,0, 236,246,235,255, 94,185,93,255, 78,222,72,255, 126,254,113,255, 146,255,136,255, 149,254,141,255, 145,255,137,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 144,255,136,255, 136,252,127,255, 118,235,112,255, 129,244,117,255, 137,253,126,255, 137,254,130,255, 137,252,128,255, 133,248,125,255, 129,243,115,255, 120,234,110,255, 106,215,96,255, 84,179,80,255, 65,130,59,255, 41,77,39,255, 21,36,19,255, 14,16,14,255, 10,10,10,255, 21,21,21,255, 95,95,95,255, 187,187,187,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 241,240,253,255, 104,96,242,255, 116,102,253,255, 156,144,254,255, 158,150,254,255, 146,135,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 137,131,254,255, 137,128,254,255, 137,129,254,255, 134,127,254,255, 134,124,252,255, 132,124,252,255, 129,120,250,255, 128,117,246,255, 122,115,240,255, 117,110,236,255, 116,107,230,255, 106,104,220,255, 100,95,206,255, 97,92,199,255, 90,86,189,255, 79,75,169,255, 73,68,159,255, 67,64,147,255, 60,58,127,255, 54,48,110,255, 47,43,99,255, 41,37,81,255, 35,34,72,255, 25,25,56,255, 18,18,36,255, 119,117,133,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,232,255, 254,254,73,255, 254,254,34,255, 254,254,54,255, 254,254,63,255, 254,254,60,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,55,255, 252,248,49,255, 196,183,31,255, 94,89,18,255, 60,60,40,255, 209,209,207,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,252,255, 213,209,153,255, 170,158,25,255, 224,216,24,255, 253,253,40,255, 253,253,50,255, 245,244,46,255, 234,232,44,255, 215,211,40,255, 186,183,30,255, 176,171,30,255, 212,205,35,255, 250,247,45,255, 255,255,52,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,54,255, 254,253,50,255, 247,244,41,255, 204,197,33,255, 114,109,35,255, 175,175,161,255, 251,251,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,227,255,255, 255,72,255,255, 254,42,254,255, 255,94,255,255, 254,132,254,255, 255,143,255,255, 254,136,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,125,254,255, 250,104,251,255, 191,64,196,255, 102,33,104,255, 54,41,55,255, 208,207,208,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,236,236,255, 253,108,108,255, 254,102,102,255, 253,118,118,255, 254,114,114,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 252,90,90,255, 230,63,63,255, 152,39,39,255, 57,15,15,255, 23,10,10,255, 101,99,99,255, 244,244,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,238,238,255, 216,82,82,255, 246,51,51,255, 253,84,84,255, 254,104,104,255, 253,107,107,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,97,97,255, 251,82,82,255, 213,53,53,255, 105,25,25,255, 37,14,14,255, 71,58,58,255, 227,225,225,255, 0,0,0,0, 254,254,254,255, 180,217,174,255, 62,185,54,255, 99,245,95,255, 139,253,127,255, 152,254,138,255, 150,253,138,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 143,253,134,255, 143,254,135,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,135,255, 143,253,135,255, 139,252,132,255, 129,247,123,255, 114,227,106,255, 90,185,83,255, 61,124,56,255, 36,62,34,255, 17,20,15,255, 10,10,10,255, 15,15,15,255, 43,43,43,255, 173,173,173,255, 254,254,254,255, 0,0,0,0, 247,247,254,255, 128,119,249,255, 104,96,252,255, 153,143,254,255, 162,150,253,255, 150,135,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 139,129,253,255, 143,135,254,255, 144,134,253,255, 140,134,254,255, 140,130,253,255, 139,132,254,255, 139,130,253,255, 138,132,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 137,130,254,255, 137,128,253,255, 137,129,253,255, 134,127,252,255, 132,124,251,255, 129,124,249,255, 126,120,248,255, 123,116,241,255, 122,111,237,255, 115,107,232,255, 110,100,223,255, 86,83,200,255, 47,47,124,255, 46,46,69,255, 191,191,198,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,248,255, 255,255,91,255, 254,254,32,255, 253,253,52,255, 254,254,63,255, 253,253,64,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,54,255, 249,247,48,255, 183,176,34,255, 82,81,18,255, 63,63,51,255, 220,220,220,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 238,235,214,255, 178,168,56,255, 203,190,17,255, 249,246,34,255, 253,253,51,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,54,255, 252,252,47,255, 250,249,50,255, 252,251,50,255, 253,252,52,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,53,255, 250,249,43,255, 224,214,34,255, 138,131,21,255, 125,123,90,255, 241,241,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,229,255,255, 254,76,254,255, 253,42,253,255, 254,92,254,255, 253,132,253,255, 254,144,254,255, 253,139,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,126,253,255, 251,106,251,255, 201,69,201,255, 108,36,108,255, 55,40,55,255, 204,204,204,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 255,249,249,255, 254,136,136,255, 255,93,93,255, 254,118,118,255, 255,114,114,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 253,91,91,255, 225,61,61,255, 135,36,36,255, 50,16,16,255, 19,11,11,255, 97,93,93,255, 243,243,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,253,255, 237,194,194,255, 215,51,51,255, 251,64,64,255, 254,94,94,255, 255,105,105,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,95,95,255, 248,75,75,255, 191,45,45,255, 85,18,18,255, 35,12,12,255, 111,96,96,255, 248,248,248,255, 0,0,0,0, 237,246,236,255, 95,179,92,255, 67,205,56,255, 114,251,111,255, 145,254,135,255, 151,255,141,255, 148,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,137,255, 146,255,137,255, 146,254,137,255, 146,255,137,255, 148,254,137,255, 147,255,140,255, 147,254,137,255, 146,255,137,255, 145,254,136,255, 144,255,136,255, 143,254,135,255, 139,254,133,255, 127,246,120,255, 99,203,92,255, 75,150,69,255, 40,72,38,255, 17,24,15,255, 10,12,10,255, 12,12,12,255, 72,72,72,255, 233,233,233,255, 0,0,0,0, 251,251,255,255, 155,151,253,255, 94,90,252,255, 150,138,254,255, 165,152,254,255, 152,143,254,255, 139,132,254,255, 138,129,254,255, 138,131,254,255, 138,128,254,255, 133,123,251,255, 122,112,223,255, 141,132,238,255, 149,140,254,255, 150,141,254,255, 149,141,254,255, 148,140,254,255, 148,139,254,255, 147,140,254,255, 146,134,254,255, 144,137,254,255, 143,134,254,255, 140,134,254,255, 140,129,254,255, 139,132,254,255, 139,129,254,255, 139,132,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 137,130,254,255, 138,129,254,255, 137,129,254,255, 129,120,252,255, 89,83,210,255, 37,35,103,255, 77,76,94,255, 239,238,240,255, 242,237,237,255, 233,233,233,255, 245,245,245,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,251,255, 255,255,112,255, 254,254,32,255, 254,254,50,255, 254,254,64,255, 254,254,65,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,52,255, 244,239,39,255, 166,160,28,255, 69,65,17,255, 60,59,49,255, 220,220,220,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,254,255, 235,230,195,255, 215,207,71,255, 244,240,34,255, 254,254,45,255, 254,254,62,255, 255,255,65,255, 254,254,60,255, 255,255,57,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,55,255, 255,254,50,255, 238,235,36,255, 172,161,23,255, 95,91,33,255, 192,192,182,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,229,255,255, 255,76,255,255, 254,38,254,255, 255,90,255,255, 254,131,254,255, 255,144,255,255, 254,139,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,126,254,255, 252,108,252,255, 205,71,205,255, 108,38,109,255, 55,40,58,255, 204,203,205,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 253,167,167,255, 254,88,88,255, 253,115,115,255, 254,117,117,255, 253,109,109,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 251,93,93,255, 229,65,65,255, 146,40,40,255, 51,15,15,255, 17,10,10,255, 64,63,63,255, 215,215,215,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,239,239,255, 203,85,85,255, 229,40,40,255, 254,76,76,255, 253,102,102,255, 254,106,106,255, 253,106,106,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,101,101,255, 253,90,90,255, 248,69,69,255, 181,41,41,255, 76,16,16,255, 37,11,11,255, 130,118,118,255, 254,254,254,255, 254,254,254,255, 177,215,174,255, 54,167,46,255, 90,234,81,255, 131,254,123,255, 149,253,141,255, 149,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,138,255, 151,254,140,255, 152,253,143,255, 153,254,144,255, 159,253,147,255, 159,254,149,255, 159,253,149,255, 158,254,147,255, 151,253,142,255, 147,254,137,255, 145,253,136,255, 144,254,136,255, 142,253,135,255, 130,247,123,255, 109,222,102,255, 75,162,72,255, 40,78,38,255, 16,21,15,255, 10,10,10,255, 23,23,23,255, 166,166,166,255, 254,254,254,255, 254,254,255,255, 191,191,254,255, 88,84,253,255, 143,131,254,255, 165,154,253,255, 156,151,254,255, 143,133,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 129,123,250,255, 94,90,208,255, 77,72,158,255, 85,80,183,255, 105,91,221,255, 112,100,227,255, 130,120,243,255, 139,127,252,255, 140,131,253,255, 142,133,254,255, 148,140,253,255, 150,139,254,255, 154,140,253,255, 151,138,254,255, 150,139,253,255, 147,137,254,255, 144,133,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 134,127,253,255, 119,113,247,255, 76,68,187,255, 29,24,80,255, 95,94,109,255, 248,243,243,255, 180,113,113,255, 73,66,66,255, 104,104,104,255, 133,133,133,255, 157,157,157,255, 180,180,180,255, 224,224,224,255, 228,228,228,255, 240,240,240,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,252,255, 255,255,145,255, 254,254,29,255, 253,253,49,255, 254,254,63,255, 253,253,64,255, 254,254,59,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,52,255, 237,232,36,255, 153,141,22,255, 57,52,16,255, 57,56,49,255, 217,217,216,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,226,255, 255,255,156,255, 254,254,80,255, 253,253,58,255, 254,254,60,255, 253,253,63,255, 254,254,65,255, 253,253,61,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,52,255, 250,248,39,255, 203,194,27,255, 106,100,19,255, 133,132,106,255, 244,244,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,235,255,255, 254,88,254,255, 253,35,253,255, 254,82,254,255, 253,128,253,255, 254,144,254,255, 253,139,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,126,253,255, 254,112,254,255, 214,79,217,255, 116,42,122,255, 51,34,53,255, 189,189,189,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 254,213,213,255, 255,94,94,255, 254,111,111,255, 255,118,118,255, 254,108,108,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,96,96,255, 234,69,69,255, 157,42,42,255, 58,16,16,255, 16,11,11,255, 32,29,29,255, 184,184,184,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 230,189,189,255, 195,40,40,255, 245,51,51,255, 255,90,90,255, 254,105,105,255, 255,105,105,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,98,98,255, 254,83,83,255, 235,62,62,255, 147,34,34,255, 61,16,16,255, 73,56,56,255, 204,201,201,255, 0,0,0,0, 242,248,242,255, 98,175,94,255, 55,183,47,255, 108,248,102,255, 141,255,133,255, 151,254,140,255, 149,255,138,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 143,255,132,255, 139,254,130,255, 142,255,131,255, 143,254,131,255, 147,255,138,255, 154,254,143,255, 162,255,149,255, 166,254,154,255, 171,255,159,255, 170,254,158,255, 159,255,151,255, 147,254,142,255, 145,255,136,255, 144,254,136,255, 143,254,135,255, 137,252,127,255, 113,226,103,255, 71,147,67,255, 30,51,29,255, 14,17,14,255, 11,12,11,255, 75,75,75,255, 233,233,233,255, 0,0,0,0, 232,231,255,255, 108,98,254,255, 126,116,254,255, 161,152,254,255, 165,156,254,255, 147,139,254,255, 138,131,254,255, 138,131,254,255, 138,129,254,255, 134,127,253,255, 107,97,229,255, 67,59,147,255, 32,29,63,255, 23,21,45,255, 25,21,52,255, 106,103,148,255, 180,177,245,255, 172,166,254,255, 168,165,253,255, 158,155,253,255, 129,120,246,255, 104,91,239,255, 116,102,248,255, 131,119,254,255, 140,132,254,255, 140,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 138,128,254,255, 132,120,254,255, 108,100,241,255, 64,58,164,255, 29,25,69,255, 149,149,163,255, 252,242,242,255, 220,82,82,255, 68,18,18,255, 17,13,13,255, 11,10,10,255, 20,20,20,255, 26,26,26,255, 42,42,42,255, 51,51,51,255, 88,88,88,255, 132,132,132,255, 142,142,142,255, 166,166,166,255, 207,207,207,255, 229,229,229,255, 236,236,236,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,254,255, 255,255,181,255, 254,254,33,255, 254,254,46,255, 254,254,61,255, 254,254,63,255, 254,254,60,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,52,255, 241,239,39,255, 161,152,27,255, 62,61,18,255, 34,34,25,255, 186,186,186,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,226,255, 254,254,141,255, 255,255,62,255, 254,254,49,255, 255,255,62,255, 254,254,67,255, 255,255,62,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,54,255, 254,252,48,255, 226,216,35,255, 137,129,20,255, 103,100,60,255, 209,209,202,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,242,255,255, 255,100,255,255, 254,33,254,255, 255,83,255,255, 254,128,254,255, 255,144,255,255, 254,139,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,126,254,255, 255,113,255,255, 220,80,224,255, 123,44,128,255, 47,27,50,255, 175,173,175,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 255,234,234,255, 255,104,104,255, 253,105,105,255, 254,118,118,255, 253,112,112,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,96,96,255, 237,70,70,255, 169,45,45,255, 62,16,16,255, 16,10,10,255, 17,17,17,255, 140,140,140,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 246,235,235,255, 200,90,90,255, 224,34,34,255, 251,69,69,255, 254,97,97,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,97,97,255, 248,72,72,255, 202,48,48,255, 106,26,26,255, 51,19,19,255, 155,141,141,255, 253,253,253,255, 0,0,0,0, 201,228,201,255, 63,170,59,255, 82,222,69,255, 124,251,113,255, 149,254,137,255, 150,253,140,255, 145,254,137,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,134,255, 138,253,130,255, 125,248,111,255, 102,231,98,255, 92,221,85,255, 92,231,80,255, 93,239,84,255, 99,242,88,255, 115,251,102,255, 128,253,112,255, 146,254,136,255, 170,253,158,255, 176,254,166,255, 162,253,158,255, 148,254,141,255, 145,253,136,255, 145,254,136,255, 145,253,135,255, 136,250,125,255, 99,204,92,255, 55,107,53,255, 25,41,25,255, 14,15,14,255, 21,21,21,255, 160,160,160,255, 252,252,252,255, 252,252,255,255, 170,166,253,255, 104,94,254,255, 146,137,253,255, 167,154,254,255, 158,146,253,255, 139,135,254,255, 138,129,253,255, 138,130,254,255, 135,128,253,255, 121,111,242,255, 87,80,192,255, 43,42,94,255, 17,17,25,255, 12,12,12,255, 38,38,38,255, 119,119,119,255, 147,147,147,255, 130,130,133,255, 123,123,141,255, 87,85,158,255, 54,48,176,255, 85,78,227,255, 122,111,251,255, 138,130,254,255, 140,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 137,130,254,255, 124,115,252,255, 95,88,223,255, 50,46,131,255, 29,29,60,255, 188,188,196,255, 252,215,215,255, 238,63,63,255, 190,56,56,255, 117,38,38,255, 90,28,28,255, 74,24,24,255, 60,24,24,255, 41,17,17,255, 35,18,18,255, 22,14,14,255, 18,14,14,255, 17,14,14,255, 24,23,23,255, 36,36,36,255, 52,52,52,255, 74,74,74,255, 116,116,116,255, 134,134,134,255, 133,133,133,255, 142,142,142,255, 163,163,163,255, 207,207,207,255, 228,228,228,255, 235,235,235,255, 249,249,249,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,231,255, 254,254,76,255, 253,253,34,255, 254,254,51,255, 253,253,64,255, 254,254,62,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,53,255, 246,244,43,255, 172,164,30,255, 74,72,18,255, 22,22,15,255, 148,148,148,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,246,255, 255,255,199,255, 255,255,139,255, 254,254,82,255, 253,253,56,255, 254,254,60,255, 253,253,63,255, 254,254,62,255, 253,253,60,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,53,255, 235,229,39,255, 153,142,23,255, 59,55,16,255, 91,91,82,255, 206,206,206,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,249,255,255, 254,126,254,255, 253,37,253,255, 254,80,254,255, 253,128,253,255, 254,144,254,255, 253,139,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,126,253,255, 254,114,254,255, 218,80,223,255, 124,44,129,255, 45,23,49,255, 162,159,163,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 255,249,249,255, 255,147,147,255, 254,93,93,255, 255,117,117,255, 254,119,119,255, 255,108,108,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,96,96,255, 244,75,75,255, 182,48,48,255, 79,22,22,255, 22,13,13,255, 11,10,10,255, 81,81,81,255, 237,237,237,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,252,252,255, 213,159,159,255, 201,37,37,255, 250,59,59,255, 254,86,86,255, 255,104,104,255, 254,104,104,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,99,99,255, 254,83,83,255, 236,58,58,255, 162,35,35,255, 72,17,17,255, 64,35,35,255, 216,210,210,255, 0,0,0,0, 248,252,248,255, 130,197,129,255, 62,197,54,255, 104,247,93,255, 137,254,127,255, 149,255,141,255, 148,254,138,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 144,255,133,255, 131,253,120,255, 100,227,92,255, 62,165,58,255, 31,108,30,255, 43,111,38,255, 130,204,123,255, 161,237,157,255, 172,250,167,255, 152,254,145,255, 127,255,117,255, 142,254,128,255, 171,255,161,255, 178,254,169,255, 161,255,156,255, 147,254,138,255, 145,255,136,255, 145,254,136,255, 142,254,134,255, 121,239,115,255, 80,169,74,255, 44,89,41,255, 17,29,17,255, 12,15,12,255, 62,62,62,255, 204,204,204,255, 254,254,254,255, 229,229,254,255, 109,102,254,255, 123,111,254,255, 165,151,254,255, 167,154,254,255, 148,141,254,255, 139,133,254,255, 138,129,254,255, 138,130,254,255, 130,124,253,255, 105,102,229,255, 62,60,144,255, 25,24,48,255, 12,12,13,255, 12,12,12,255, 11,11,11,255, 16,16,18,255, 10,10,12,255, 15,15,32,255, 36,32,120,255, 77,71,213,255, 112,108,251,255, 135,124,254,255, 140,128,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,130,254,255, 134,126,254,255, 113,108,247,255, 80,75,203,255, 38,35,107,255, 57,57,78,255, 220,220,223,255, 249,189,189,255, 245,48,48,255, 252,89,89,255, 241,92,93,255, 232,78,78,255, 218,68,68,255, 202,60,60,255, 181,54,54,255, 160,49,49,255, 141,43,43,255, 116,37,37,255, 91,29,29,255, 72,23,23,255, 53,23,23,255, 37,16,16,255, 28,16,16,255, 18,11,11,255, 17,14,14,255, 12,10,10,255, 14,14,14,255, 20,20,20,255, 36,36,36,255, 50,50,50,255, 73,73,73,255, 117,117,117,255, 134,134,134,255, 158,158,158,255, 206,206,206,255, 226,226,226,255, 232,232,232,255, 245,245,245,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,252,255, 254,254,146,255, 254,254,31,255, 254,254,47,255, 254,254,64,255, 254,254,66,255, 254,254,60,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,56,255, 249,248,48,255, 193,183,34,255, 90,85,19,255, 22,22,11,255, 82,82,82,255, 239,239,239,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,227,255, 254,254,157,255, 255,255,80,255, 254,254,50,255, 255,255,60,255, 254,254,65,255, 255,255,63,255, 254,254,62,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,52,255, 224,221,37,255, 114,107,21,255, 31,31,11,255, 16,16,14,255, 74,74,74,255, 221,221,221,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,155,255,255, 254,39,254,255, 255,78,255,255, 254,127,254,255, 255,144,255,255, 254,139,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,119,255,255, 221,81,226,255, 129,44,134,255, 42,16,42,255, 148,143,148,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 255,214,214,255, 253,93,93,255, 254,103,103,255, 253,121,121,255, 254,116,116,255, 253,108,108,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,98,98,255, 251,83,83,255, 209,56,56,255, 99,29,29,255, 25,14,14,255, 12,11,11,255, 34,34,34,255, 200,200,200,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 224,200,200,255, 169,55,55,255, 228,44,44,255, 254,76,76,255, 253,95,95,255, 254,104,104,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,97,97,255, 253,74,74,255, 215,49,49,255, 132,30,30,255, 57,17,17,255, 116,101,101,255, 245,244,244,255, 0,0,0,0, 233,244,232,255, 79,172,71,255, 82,220,71,255, 121,254,112,255, 142,253,137,255, 148,254,141,255, 145,253,137,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,136,255, 137,253,130,255, 118,246,109,255, 85,206,78,255, 46,125,43,255, 24,58,22,255, 125,138,124,255, 243,243,243,255, 0,0,0,0, 0,0,0,0, 251,255,251,255, 216,255,212,255, 124,253,110,255, 145,254,132,255, 172,253,161,255, 173,254,164,255, 154,253,145,255, 145,254,136,255, 145,253,136,255, 144,254,136,255, 136,251,128,255, 104,215,96,255, 67,141,60,255, 29,60,28,255, 12,18,12,255, 17,17,17,255, 105,105,105,255, 242,242,242,255, 251,251,255,255, 162,156,255,255, 98,83,253,255, 143,133,254,255, 169,157,253,255, 161,153,254,255, 146,139,253,255, 139,131,254,255, 138,129,253,255, 137,131,253,255, 123,118,247,255, 91,83,198,255, 54,50,117,255, 30,29,56,255, 21,18,30,255, 17,17,22,255, 16,15,27,255, 22,19,43,255, 29,28,74,255, 61,53,155,255, 99,93,233,255, 127,118,254,255, 137,128,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,130,254,255, 138,128,253,255, 133,120,253,255, 102,97,236,255, 69,63,185,255, 32,27,88,255, 85,85,102,255, 246,243,244,255, 245,154,154,255, 247,56,56,255, 254,97,97,255, 254,109,112,255, 254,103,104,255, 253,99,100,255, 252,97,98,255, 251,93,93,255, 249,89,89,255, 245,83,83,255, 237,77,77,255, 222,70,70,255, 210,64,64,255, 193,59,59,255, 166,49,49,255, 147,43,43,255, 127,38,38,255, 99,33,35,255, 80,29,29,255, 55,22,22,255, 43,19,19,255, 31,14,14,255, 22,15,15,255, 15,11,11,255, 16,13,13,255, 10,10,10,255, 20,20,20,255, 35,35,35,255, 44,44,44,255, 64,64,64,255, 101,101,101,255, 133,133,133,255, 152,152,152,255, 182,182,182,255, 223,223,223,255, 228,228,228,255, 238,238,238,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,205,255, 253,253,46,255, 254,254,38,255, 253,253,63,255, 254,254,66,255, 253,253,63,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,55,255, 252,252,50,255, 217,208,37,255, 123,116,23,255, 28,27,13,255, 27,27,27,255, 184,184,184,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,227,255, 255,255,157,255, 254,254,82,255, 253,253,58,255, 254,254,60,255, 253,253,64,255, 254,254,62,255, 253,253,60,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,54,255, 247,246,44,255, 197,188,32,255, 89,87,19,255, 21,21,10,255, 16,16,16,255, 124,124,124,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,155,254,255, 253,41,253,255, 254,76,254,255, 253,124,253,255, 254,144,254,255, 253,139,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,119,254,255, 221,81,224,255, 136,47,143,255, 43,20,45,255, 149,144,149,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 255,248,248,255, 254,153,153,255, 255,93,93,255, 254,120,120,255, 255,119,119,255, 254,109,109,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,101,101,255, 254,90,90,255, 229,63,63,255, 125,35,35,255, 32,15,15,255, 11,10,10,255, 16,16,16,255, 122,122,122,255, 246,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,253,253,255, 235,223,223,255, 164,88,88,255, 186,31,31,255, 249,61,61,255, 255,89,89,255, 254,101,101,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,100,100,255, 254,89,89,255, 248,66,66,255, 180,37,37,255, 94,18,18,255, 62,31,31,255, 196,187,187,255, 0,0,0,0, 254,254,254,255, 177,216,173,255, 61,180,51,255, 98,240,91,255, 132,255,123,255, 150,254,138,255, 150,255,138,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 143,254,135,255, 131,253,119,255, 102,230,95,255, 69,171,62,255, 32,89,31,255, 37,60,36,255, 205,212,205,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,255,252,255, 179,254,176,255, 115,255,106,255, 158,254,143,255, 177,255,163,255, 162,254,151,255, 147,255,138,255, 145,254,136,255, 145,255,136,255, 143,254,135,255, 124,243,118,255, 89,192,85,255, 51,100,46,255, 20,30,20,255, 11,12,11,255, 38,38,38,255, 189,189,189,255, 254,254,254,255, 235,233,255,255, 143,135,254,255, 113,99,254,255, 157,146,254,255, 169,159,254,255, 160,151,254,255, 146,134,254,255, 139,132,254,255, 138,129,254,255, 136,127,254,255, 120,109,240,255, 90,89,200,255, 65,62,144,255, 58,51,115,255, 44,40,93,255, 45,42,99,255, 51,49,119,255, 61,59,148,255, 87,83,204,255, 117,111,243,255, 133,127,254,255, 137,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 135,130,254,255, 119,114,250,255, 92,84,223,255, 61,53,161,255, 26,24,72,255, 110,109,125,255, 248,230,230,255, 242,90,90,255, 250,60,60,255, 254,103,103,255, 254,113,113,255, 254,111,113,255, 254,105,109,255, 254,103,104,255, 254,102,103,255, 254,101,103,255, 254,101,103,255, 254,100,100,255, 254,99,99,255, 254,96,96,255, 253,95,95,255, 250,90,90,255, 247,86,86,255, 240,83,83,255, 228,74,75,255, 217,66,66,255, 202,60,61,255, 179,53,54,255, 156,45,45,255, 130,40,40,255, 120,43,43,255, 94,31,31,255, 69,25,25,255, 46,20,20,255, 37,19,19,255, 26,14,14,255, 20,14,14,255, 14,11,11,255, 13,12,12,255, 16,16,16,255, 28,28,28,255, 41,41,41,255, 51,51,51,255, 81,81,81,255, 124,124,124,255, 142,142,142,255, 162,162,162,255, 206,206,206,255, 227,227,227,255, 235,235,235,255, 244,244,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,240,255, 254,254,87,255, 254,254,33,255, 254,254,55,255, 254,254,65,255, 254,254,62,255, 254,254,59,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,54,255, 239,236,44,255, 160,157,29,255, 50,46,16,255, 16,16,13,255, 86,86,86,255, 215,215,215,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,227,255, 254,254,137,255, 255,255,57,255, 254,254,52,255, 255,255,61,255, 254,254,67,255, 255,255,62,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,56,255, 248,246,45,255, 187,183,28,255, 78,73,16,255, 18,18,11,255, 32,32,32,255, 185,185,185,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,171,255,255, 254,41,254,255, 255,73,255,255, 254,121,254,255, 255,143,255,255, 254,139,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,119,255,255, 223,81,228,255, 139,48,146,255, 43,17,44,255, 146,143,146,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,229,229,255, 255,107,107,255, 253,110,110,255, 254,122,122,255, 253,115,115,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,98,98,255, 243,76,76,255, 167,45,45,255, 56,19,19,255, 15,11,11,255, 10,10,10,255, 36,36,36,255, 182,182,182,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 225,212,212,255, 141,76,76,255, 152,27,27,255, 230,47,47,255, 252,77,77,255, 254,96,96,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,102,102,255, 254,97,97,255, 252,81,81,255, 231,57,57,255, 139,31,31,255, 66,15,15,255, 105,83,83,255, 240,238,238,255, 0,0,0,0, 242,248,242,255, 98,177,94,255, 66,201,56,255, 114,249,108,255, 141,254,134,255, 150,253,141,255, 148,254,137,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,136,255, 139,253,132,255, 120,242,110,255, 86,201,79,255, 49,136,46,255, 21,61,20,255, 95,109,95,255, 242,243,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 224,253,219,255, 106,249,99,255, 133,253,123,255, 169,254,154,255, 168,253,154,255, 152,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 137,253,129,255, 112,232,105,255, 69,150,66,255, 33,62,33,255, 15,20,15,255, 14,16,14,255, 132,132,132,255, 253,253,253,255, 254,254,255,255, 229,228,255,255, 126,118,255,255, 126,111,253,255, 167,151,254,255, 170,159,253,255, 160,152,254,255, 146,140,253,255, 139,133,254,255, 138,129,253,255, 136,129,253,255, 124,120,245,255, 113,103,230,255, 100,95,216,255, 89,85,198,255, 91,86,202,255, 98,93,215,255, 102,96,223,255, 116,111,243,255, 131,125,252,255, 136,130,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 137,130,254,255, 130,118,253,255, 103,97,234,255, 72,64,183,255, 40,39,119,255, 41,41,73,255, 183,183,193,255, 251,211,211,255, 246,62,62,255, 253,64,64,255, 254,102,102,255, 254,117,117,255, 254,123,123,255, 254,122,123,255, 254,111,111,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,103,103,255, 254,102,103,255, 254,102,103,255, 254,99,100,255, 253,98,99,255, 252,95,98,255, 250,94,95,255, 246,82,82,255, 213,63,63,255, 230,91,91,255, 226,80,80,255, 211,66,66,255, 183,55,55,255, 162,50,50,255, 148,43,43,255, 121,37,37,255, 93,29,29,255, 75,24,24,255, 56,22,22,255, 39,16,16,255, 28,16,16,255, 19,12,12,255, 18,14,14,255, 13,11,11,255, 15,14,14,255, 20,20,20,255, 36,36,36,255, 49,49,49,255, 72,72,72,255, 101,101,101,255, 134,134,134,255, 216,216,216,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,179,255, 254,254,53,255, 253,253,46,255, 254,254,62,255, 253,253,66,255, 254,254,62,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 252,251,51,255, 204,200,36,255, 89,85,19,255, 19,18,10,255, 15,15,15,255, 104,104,104,255, 241,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 241,241,240,255, 202,201,193,255, 176,175,170,255, 235,235,225,255, 254,254,206,255, 255,255,132,255, 254,254,55,255, 253,253,54,255, 254,254,62,255, 253,253,63,255, 254,254,62,255, 253,253,58,255, 254,254,55,255, 253,253,56,255, 254,254,54,255, 243,242,44,255, 183,180,29,255, 117,112,22,255, 89,87,60,255, 220,220,219,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,186,254,255, 253,45,253,255, 254,70,254,255, 253,123,253,255, 254,144,254,255, 253,139,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,119,254,255, 230,87,232,255, 152,53,158,255, 50,22,50,255, 148,144,148,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,249,249,255, 255,167,167,255, 254,100,100,255, 255,120,120,255, 254,121,121,255, 255,108,108,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,100,100,255, 253,89,89,255, 220,65,65,255, 118,35,35,255, 32,13,13,255, 13,12,12,255, 11,11,11,255, 55,55,55,255, 182,182,182,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,252,252,255, 200,186,186,255, 127,76,76,255, 139,23,23,255, 211,43,43,255, 252,73,73,255, 254,94,94,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,97,97,255, 255,85,85,255, 244,63,63,255, 178,36,36,255, 84,18,18,255, 66,30,30,255, 179,166,166,255, 254,254,254,255, 0,0,0,0, 210,231,210,255, 69,172,64,255, 85,232,81,255, 129,254,121,255, 145,255,139,255, 148,254,138,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 143,255,134,255, 132,253,124,255, 105,228,96,255, 70,168,66,255, 36,98,35,255, 33,56,31,255, 183,187,181,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 239,252,238,255, 105,237,94,255, 115,252,106,255, 158,255,149,255, 166,254,152,255, 152,255,141,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 144,255,135,255, 129,250,124,255, 88,197,88,255, 47,93,45,255, 18,28,16,255, 14,17,14,255, 112,112,112,255, 253,253,253,255, 0,0,0,0, 254,254,255,255, 213,210,255,255, 129,121,254,255, 129,116,254,255, 151,141,254,255, 166,156,254,255, 163,156,254,255, 154,145,254,255, 145,137,254,255, 139,131,254,255, 137,131,254,255, 135,127,254,255, 131,123,253,255, 128,121,251,255, 129,121,252,255, 130,124,253,255, 133,125,254,255, 135,127,254,255, 137,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 138,131,254,255, 138,129,254,255, 136,130,254,255, 129,119,253,255, 109,100,243,255, 75,69,202,255, 41,39,124,255, 53,52,94,255, 155,155,170,255, 247,247,248,255, 254,247,247,255, 254,190,190,255, 254,141,141,255, 254,88,88,255, 254,87,87,255, 254,106,106,255, 254,120,120,255, 254,122,122,255, 254,110,110,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,103,104,255, 254,107,108,255, 254,104,109,255, 254,107,109,255, 253,86,87,255, 223,66,66,255, 248,103,103,255, 254,107,107,255, 254,100,100,255, 252,95,95,255, 250,92,92,255, 245,85,87,255, 238,81,83,255, 225,75,75,255, 217,70,70,255, 201,65,65,255, 181,57,58,255, 163,50,50,255, 147,44,44,255, 126,40,40,255, 112,36,36,255, 81,29,29,255, 73,27,27,255, 54,22,22,255, 41,19,19,255, 27,14,14,255, 22,15,15,255, 29,18,18,255, 184,180,180,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,251,255, 254,254,148,255, 254,254,42,255, 254,254,50,255, 254,254,63,255, 254,254,66,255, 254,254,61,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,54,255, 254,254,52,255, 238,234,43,255, 153,151,27,255, 54,52,16,255, 14,14,10,255, 27,27,27,255, 118,118,118,255, 212,212,212,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 230,230,229,255, 165,164,159,255, 102,102,88,255, 63,61,32,255, 58,53,25,255, 88,87,85,255, 160,160,160,255, 230,230,220,255, 253,253,194,255, 254,254,138,255, 255,255,86,255, 254,254,54,255, 255,255,60,255, 254,254,64,255, 255,255,63,255, 254,254,62,255, 255,255,56,255, 254,253,50,255, 231,220,35,255, 170,162,51,255, 209,207,187,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,190,255,255, 254,44,254,255, 255,69,255,255, 254,120,254,255, 255,143,255,255, 254,139,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,120,255,255, 233,89,234,255, 157,56,163,255, 52,23,53,255, 132,127,132,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,235,235,255, 253,122,122,255, 254,102,102,255, 253,120,120,255, 254,119,119,255, 253,111,111,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,98,98,255, 248,82,82,255, 186,55,55,255, 80,28,28,255, 21,14,14,255, 12,11,11,255, 11,11,11,255, 34,34,34,255, 98,98,98,255, 187,187,187,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,252,252,255, 229,226,226,255, 175,163,163,255, 92,45,45,255, 135,24,24,255, 214,44,44,255, 247,66,66,255, 254,88,88,255, 253,101,101,255, 254,102,102,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,102,102,255, 253,88,88,255, 250,70,70,255, 215,47,47,255, 117,23,23,255, 66,26,26,255, 158,141,141,255, 250,249,249,255, 0,0,0,0, 246,250,245,255, 132,192,130,255, 64,195,57,255, 111,251,103,255, 141,253,132,255, 148,254,140,255, 145,253,138,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 141,254,132,255, 121,248,114,255, 86,197,80,255, 51,124,44,255, 24,63,20,255, 69,84,68,255, 230,232,230,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 242,252,241,255, 101,229,91,255, 104,250,96,255, 151,254,141,255, 164,253,150,255, 152,254,139,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 136,252,132,255, 98,214,97,255, 55,112,49,255, 19,37,18,255, 10,15,10,255, 97,98,97,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 254,254,255,255, 227,226,255,255, 149,141,255,255, 118,104,253,255, 143,127,254,255, 168,152,253,255, 170,159,254,255, 160,151,253,255, 147,139,254,255, 140,131,253,255, 139,131,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,130,254,255, 138,129,253,255, 138,131,254,255, 138,129,253,255, 137,130,254,255, 129,120,253,255, 112,105,248,255, 80,73,219,255, 45,41,144,255, 66,66,114,255, 180,177,192,255, 250,250,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,250,250,255, 255,189,189,255, 254,71,71,255, 254,58,58,255, 254,99,99,255, 254,118,118,255, 254,113,113,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,102,255, 254,101,101,255, 254,109,111,255, 254,109,112,255, 254,112,113,255, 252,97,98,255, 230,75,75,255, 252,111,111,255, 254,114,114,255, 254,111,111,255, 254,105,105,255, 254,104,104,255, 254,103,104,255, 254,102,103,255, 254,102,103,255, 254,100,100,255, 254,99,100,255, 253,96,99,255, 250,94,95,255, 249,90,90,255, 244,86,86,255, 238,80,80,255, 225,73,73,255, 216,66,66,255, 196,60,60,255, 171,52,52,255, 153,42,42,255, 107,31,31,255, 71,47,47,255, 210,209,209,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,239,255, 255,255,91,255, 254,254,37,255, 253,253,59,255, 254,254,65,255, 253,253,66,255, 254,254,59,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 252,252,52,255, 221,218,36,255, 126,119,25,255, 34,34,16,255, 11,11,10,255, 14,14,14,255, 74,74,74,255, 172,172,172,255, 244,244,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 229,229,229,255, 160,160,157,255, 80,80,73,255, 42,37,20,255, 57,55,10,255, 101,97,14,255, 115,110,19,255, 24,24,13,255, 20,20,20,255, 76,76,76,255, 199,199,199,255, 250,250,247,255, 255,255,228,255, 255,255,159,255, 254,254,81,255, 253,253,55,255, 254,254,61,255, 253,253,64,255, 254,254,59,255, 245,238,38,255, 171,159,26,255, 178,176,138,255, 251,251,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,213,254,255, 253,51,253,255, 254,65,254,255, 253,116,253,255, 254,140,254,255, 253,139,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,119,254,255, 232,89,233,255, 159,56,166,255, 56,23,57,255, 115,110,115,255, 246,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 254,216,216,255, 255,111,111,255, 254,104,104,255, 255,124,124,255, 254,119,119,255, 255,108,108,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,101,101,255, 254,91,91,255, 238,73,73,255, 161,46,46,255, 79,26,26,255, 21,13,13,255, 12,12,12,255, 10,10,10,255, 12,12,12,255, 31,31,31,255, 111,111,111,255, 203,203,203,255, 225,225,225,255, 230,230,230,255, 235,235,235,255, 235,235,235,255, 231,231,231,255, 217,217,217,255, 142,138,138,255, 66,54,54,255, 63,29,29,255, 125,25,25,255, 212,44,44,255, 247,63,63,255, 254,80,80,255, 255,97,97,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,97,97,255, 254,79,79,255, 239,56,56,255, 166,32,32,255, 78,21,21,255, 137,116,116,255, 241,238,238,255, 0,0,0,0, 0,0,0,0, 203,227,202,255, 62,160,57,255, 81,219,67,255, 127,254,113,255, 147,254,137,255, 150,255,140,255, 145,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 144,254,136,255, 136,254,131,255, 108,236,104,255, 71,167,63,255, 36,84,31,255, 22,46,21,255, 138,148,138,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 227,246,226,255, 90,221,83,255, 106,252,95,255, 151,255,139,255, 162,254,148,255, 150,255,141,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 140,253,132,255, 107,222,97,255, 63,127,54,255, 21,44,19,255, 13,18,13,255, 83,87,83,255, 243,243,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,255,255, 244,243,255,255, 188,182,254,255, 108,96,254,255, 129,113,254,255, 160,146,254,255, 166,154,254,255, 160,156,254,255, 153,146,254,255, 148,139,254,255, 144,137,254,255, 140,132,254,255, 139,132,254,255, 138,129,254,255, 138,130,254,255, 138,129,254,255, 138,131,254,255, 139,129,254,255, 139,132,254,255, 139,129,254,255, 139,132,254,255, 141,129,254,255, 137,130,254,255, 132,120,254,255, 115,103,251,255, 87,79,232,255, 54,43,173,255, 58,55,123,255, 187,187,203,255, 253,253,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,246,246,255, 252,85,85,255, 253,48,48,255, 254,96,96,255, 254,114,116,255, 254,111,115,255, 254,104,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,103,255, 254,96,98,255, 251,81,82,255, 251,86,87,255, 254,92,92,255, 254,90,91,255, 254,86,87,255, 245,88,88,255, 254,116,116,255, 254,124,125,255, 254,121,123,255, 254,114,114,255, 254,109,109,255, 254,103,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,103,104,255, 254,102,104,255, 254,101,103,255, 254,100,102,255, 254,100,100,255, 254,99,99,255, 253,94,95,255, 251,89,90,255, 232,66,66,255, 137,34,34,255, 91,66,66,255, 235,234,234,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,254,255, 255,255,185,255, 254,254,49,255, 254,254,48,255, 254,254,63,255, 254,254,67,255, 254,254,62,255, 254,254,60,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,54,255, 250,250,45,255, 204,197,36,255, 112,105,26,255, 49,46,16,255, 15,15,10,255, 14,14,14,255, 32,32,32,255, 141,141,141,255, 232,232,232,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,253,253,255, 226,226,226,255, 158,158,158,255, 76,75,74,255, 27,27,19,255, 37,35,13,255, 89,84,12,255, 148,140,18,255, 194,188,25,255, 208,205,31,255, 84,83,19,255, 26,24,16,255, 14,14,13,255, 45,45,45,255, 151,151,151,255, 243,243,243,255, 255,255,253,255, 255,255,222,255, 254,254,128,255, 255,255,61,255, 254,254,50,255, 254,253,57,255, 205,196,34,255, 162,159,106,255, 231,231,225,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,217,255,255, 254,48,254,255, 255,58,255,255, 254,111,254,255, 255,136,255,255, 254,138,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,120,255,255, 236,89,237,255, 160,57,164,255, 57,25,57,255, 115,110,115,255, 246,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,253,253,255, 255,183,183,255, 253,103,103,255, 254,115,115,255, 253,126,126,255, 254,117,117,255, 253,110,110,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,101,101,255, 252,92,92,255, 233,70,70,255, 178,52,52,255, 91,32,32,255, 41,19,19,255, 17,12,12,255, 10,10,10,255, 11,11,11,255, 16,16,16,255, 35,35,35,255, 41,41,41,255, 57,57,57,255, 73,73,73,255, 72,72,72,255, 59,59,59,255, 42,40,40,255, 28,15,15,255, 57,16,16,255, 122,26,26,255, 204,45,45,255, 245,65,65,255, 254,82,82,255, 253,95,95,255, 254,102,102,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,97,97,255, 254,83,83,255, 246,62,62,255, 207,41,41,255, 109,19,19,255, 98,65,65,255, 225,219,219,255, 0,0,0,0, 0,0,0,0, 248,251,248,255, 132,188,130,255, 48,170,42,255, 99,239,88,255, 137,254,126,255, 149,253,139,255, 148,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 143,253,133,255, 126,251,119,255, 94,212,85,255, 56,132,50,255, 23,54,21,255, 36,54,35,255, 206,211,206,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 197,234,197,255, 70,212,65,255, 107,251,97,255, 150,254,138,255, 158,253,148,255, 149,254,139,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 139,252,132,255, 111,223,103,255, 64,140,59,255, 25,50,23,255, 14,20,13,255, 75,76,75,255, 236,236,236,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,249,255,255, 195,193,255,255, 122,114,253,255, 116,103,254,255, 143,131,253,255, 162,152,254,255, 163,155,253,255, 162,153,254,255, 159,149,253,255, 153,144,254,255, 147,141,253,255, 144,136,254,255, 143,133,253,255, 143,136,254,255, 143,132,253,255, 142,134,254,255, 144,134,253,255, 143,133,254,255, 138,132,253,255, 133,125,253,255, 121,113,252,255, 108,94,248,255, 86,75,233,255, 56,52,189,255, 51,43,134,255, 167,165,190,255, 250,250,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,225,225,255, 245,64,64,255, 253,52,52,255, 254,92,94,255, 254,113,113,255, 254,111,111,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,103,255, 254,94,96,255, 250,79,83,255, 221,56,57,255, 202,43,43,255, 241,56,57,255, 252,69,69,255, 252,95,95,255, 254,89,89,255, 254,83,83,255, 254,102,103,255, 254,118,119,255, 254,125,125,255, 254,118,118,255, 254,105,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 253,104,104,255, 254,104,104,255, 253,104,104,255, 254,104,105,255, 253,104,105,255, 254,105,105,255, 253,104,105,255, 253,97,98,255, 226,66,67,255, 114,30,31,255, 94,74,74,255, 245,245,245,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,247,255, 254,254,131,255, 253,253,37,255, 254,254,50,255, 253,253,64,255, 254,254,66,255, 253,253,64,255, 254,254,59,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,53,255, 248,247,45,255, 211,202,37,255, 142,135,28,255, 64,59,19,255, 16,16,12,255, 12,12,12,255, 21,21,21,255, 72,72,72,255, 138,138,138,255, 201,201,201,255, 232,232,232,255, 246,246,246,255, 244,244,244,255, 236,236,236,255, 233,233,233,255, 225,225,225,255, 192,192,192,255, 130,130,130,255, 64,64,64,255, 23,23,20,255, 30,27,10,255, 66,64,14,255, 120,115,18,255, 180,174,26,255, 225,221,34,255, 247,246,43,255, 248,247,45,255, 196,189,35,255, 127,116,27,255, 61,59,16,255, 18,18,11,255, 35,35,33,255, 188,188,188,255, 0,0,0,0, 0,0,0,0, 255,255,245,255, 255,255,202,255, 255,255,124,255, 252,251,57,255, 184,180,73,255, 228,228,221,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,217,254,255, 247,50,250,255, 251,58,252,255, 253,109,253,255, 254,136,254,255, 253,139,253,255, 254,130,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,120,254,255, 239,93,241,255, 166,58,173,255, 60,23,60,255, 101,96,101,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,249,249,255, 254,178,178,255, 255,100,100,255, 254,120,120,255, 255,125,125,255, 254,119,119,255, 255,108,108,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,101,101,255, 254,90,90,255, 244,75,75,255, 202,60,60,255, 138,40,40,255, 81,25,25,255, 45,20,20,255, 19,11,11,255, 13,12,12,255, 10,10,10,255, 13,12,12,255, 11,10,10,255, 14,12,12,255, 13,10,10,255, 22,13,13,255, 44,14,14,255, 94,23,23,255, 155,34,34,255, 206,49,49,255, 247,66,66,255, 254,87,87,255, 255,96,96,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,99,99,255, 254,83,83,255, 251,66,66,255, 218,46,46,255, 144,27,27,255, 83,33,33,255, 188,173,173,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 232,243,231,255, 77,165,71,255, 64,198,58,255, 114,250,106,255, 142,255,135,255, 148,254,140,255, 145,255,137,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 144,255,136,255, 137,254,130,255, 115,242,107,255, 77,180,70,255, 40,97,36,255, 17,41,17,255, 96,108,96,255, 242,243,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 170,222,167,255, 64,211,60,255, 111,253,102,255, 148,255,136,255, 154,254,148,255, 146,255,138,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 141,254,132,255, 112,234,107,255, 67,156,67,255, 29,60,29,255, 14,24,14,255, 60,65,60,255, 227,227,227,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,255,255, 227,226,254,255, 142,139,254,255, 108,100,254,255, 121,107,254,255, 137,123,254,255, 147,139,254,255, 153,143,254,255, 158,147,254,255, 160,147,254,255, 159,143,254,255, 152,143,254,255, 151,142,254,255, 149,138,254,255, 146,138,254,255, 146,134,254,255, 137,128,254,255, 124,113,254,255, 108,98,251,255, 87,77,236,255, 64,56,203,255, 62,58,172,255, 94,92,164,255, 167,165,195,255, 247,247,249,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,196,196,255, 244,39,39,255, 254,54,57,255, 254,96,99,255, 254,111,111,255, 254,108,111,255, 254,104,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,100,100,255, 254,87,88,255, 242,68,69,255, 163,38,38,255, 89,22,22,255, 180,122,125,255, 252,222,222,255, 254,234,234,255, 254,222,222,255, 254,138,140,255, 254,68,71,255, 254,89,89,255, 254,117,117,255, 254,120,120,255, 254,109,111,255, 254,103,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,103,104,255, 254,102,104,255, 254,102,104,255, 254,101,105,255, 254,104,109,255, 254,109,109,255, 254,109,109,255, 254,102,102,255, 208,60,62,255, 93,22,23,255, 108,93,93,255, 247,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,227,255, 254,254,89,255, 254,254,39,255, 254,254,53,255, 254,254,64,255, 254,254,67,255, 254,254,62,255, 254,254,60,255, 254,254,56,255, 254,254,58,255, 254,254,55,255, 254,254,58,255, 254,254,54,255, 252,251,45,255, 228,227,40,255, 162,158,29,255, 76,73,21,255, 22,21,13,255, 14,14,13,255, 10,10,10,255, 14,14,14,255, 33,33,33,255, 61,61,61,255, 107,107,107,255, 100,100,100,255, 75,75,75,255, 66,66,66,255, 43,43,43,255, 31,31,31,255, 14,13,11,255, 28,28,13,255, 58,58,12,255, 108,103,17,255, 156,150,22,255, 204,195,27,255, 238,235,39,255, 253,253,44,255, 254,254,51,255, 255,255,52,255, 252,250,50,255, 236,231,44,255, 187,186,30,255, 116,114,22,255, 103,100,61,255, 224,224,221,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,244,255, 254,254,198,255, 243,243,200,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,217,251,255, 227,47,238,255, 246,54,250,255, 254,107,254,255, 255,134,255,255, 254,138,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,123,255,255, 247,100,247,255, 174,60,176,255, 60,23,60,255, 49,45,49,255, 142,142,142,255, 197,197,197,255, 230,230,230,255, 246,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,242,242,255, 255,155,155,255, 253,103,103,255, 254,117,117,255, 253,125,125,255, 254,119,119,255, 253,111,111,255, 254,104,104,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,102,102,255, 253,96,96,255, 251,88,88,255, 232,72,72,255, 193,57,57,255, 149,41,41,255, 90,28,28,255, 53,22,22,255, 52,21,21,255, 57,23,23,255, 61,23,23,255, 61,22,22,255, 68,20,20,255, 94,26,26,255, 143,33,33,255, 193,47,47,255, 234,63,63,255, 246,78,78,255, 254,88,88,255, 253,95,95,255, 254,101,101,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,97,97,255, 254,88,88,255, 249,69,69,255, 226,47,47,255, 152,29,29,255, 97,31,31,255, 157,135,135,255, 247,244,244,255, 0,0,0,0, 0,0,0,0, 254,254,254,255, 173,215,173,255, 57,176,51,255, 90,233,82,255, 130,252,119,255, 148,254,137,255, 148,253,138,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 143,254,133,255, 132,252,118,255, 102,222,98,255, 60,143,57,255, 25,69,24,255, 29,48,29,255, 182,186,182,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 244,251,244,255, 107,197,102,255, 74,227,68,255, 122,253,111,255, 153,254,137,255, 152,253,146,255, 145,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,133,255, 121,243,113,255, 78,172,74,255, 34,70,34,255, 14,31,14,255, 47,52,47,255, 216,216,216,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 243,243,255,255, 197,195,255,255, 152,145,255,255, 113,99,253,255, 110,103,252,255, 117,108,252,255, 123,111,253,255, 138,123,253,255, 139,127,254,255, 131,122,253,255, 127,118,253,255, 126,113,252,255, 121,110,251,255, 114,106,249,255, 104,94,246,255, 88,75,238,255, 80,71,221,255, 79,72,195,255, 136,136,198,255, 210,210,229,255, 239,239,244,255, 254,254,255,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,182,182,255, 242,34,35,255, 253,63,66,255, 254,99,100,255, 254,113,114,255, 254,106,107,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,101,101,255, 253,85,85,255, 227,60,60,255, 128,31,31,255, 53,22,22,255, 191,183,183,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,208,209,255, 253,56,62,255, 253,68,72,255, 254,107,108,255, 254,117,117,255, 254,106,110,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 253,104,104,255, 254,104,104,255, 253,101,101,255, 253,91,91,255, 250,90,91,255, 253,97,97,255, 253,94,94,255, 253,92,92,255, 221,71,71,255, 105,27,27,255, 157,141,141,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,254,255, 255,255,227,255, 254,254,123,255, 253,253,45,255, 254,254,52,255, 253,253,64,255, 254,254,66,255, 253,253,64,255, 254,254,60,255, 253,253,57,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,53,255, 252,252,51,255, 236,233,43,255, 180,173,32,255, 113,104,24,255, 63,61,17,255, 33,31,14,255, 18,17,11,255, 16,16,12,255, 14,14,10,255, 13,13,13,255, 12,12,10,255, 15,15,12,255, 15,15,10,255, 22,21,13,255, 30,28,10,255, 51,47,15,255, 98,94,18,255, 149,141,20,255, 199,189,28,255, 231,224,34,255, 249,246,40,255, 253,252,49,255, 254,254,53,255, 253,253,56,255, 254,254,56,255, 253,253,55,255, 254,254,51,255, 243,241,41,255, 186,179,38,255, 204,200,168,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 246,246,246,255, 227,227,227,255, 173,173,173,255, 135,115,136,255, 165,30,175,255, 232,54,237,255, 252,106,252,255, 254,133,254,255, 253,137,253,255, 254,129,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,124,254,255, 249,99,249,255, 188,65,188,255, 68,26,68,255, 15,10,15,255, 17,17,17,255, 32,32,32,255, 57,57,57,255, 107,107,107,255, 148,148,148,255, 176,176,176,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,241,241,255, 254,165,165,255, 255,94,94,255, 254,104,104,255, 255,120,120,255, 254,121,121,255, 255,113,113,255, 254,108,108,255, 255,104,104,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,101,101,255, 254,99,99,255, 250,91,91,255, 242,79,79,255, 217,68,68,255, 197,59,59,255, 198,57,57,255, 193,55,55,255, 186,54,54,255, 187,52,52,255, 194,52,52,255, 209,61,61,255, 238,72,72,255, 250,80,80,255, 254,90,90,255, 254,96,96,255, 255,100,100,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,102,102,255, 255,97,97,255, 254,82,82,255, 250,65,65,255, 218,45,45,255, 142,22,22,255, 115,62,62,255, 186,164,164,255, 238,238,236,255, 228,229,228,255, 233,233,233,255, 240,240,240,255, 240,246,240,255, 96,173,94,255, 67,201,60,255, 113,248,101,255, 143,254,129,255, 149,255,140,255, 145,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 144,254,136,255, 135,254,128,255, 116,243,107,255, 81,182,75,255, 42,96,40,255, 18,42,18,255, 76,86,76,255, 230,231,230,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 215,235,215,255, 74,186,67,255, 94,239,81,255, 132,254,119,255, 153,255,141,255, 151,254,138,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,135,255, 128,248,121,255, 81,180,79,255, 35,79,33,255, 15,33,15,255, 26,37,26,255, 202,205,202,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,251,255,255, 233,231,254,255, 228,227,254,255, 196,190,254,255, 146,142,250,255, 104,97,248,255, 97,86,246,255, 89,82,241,255, 86,78,237,255, 93,85,233,255, 109,101,233,255, 112,106,229,255, 128,123,228,255, 150,145,223,255, 199,197,236,255, 229,228,242,255, 249,249,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,251,251,255, 244,140,140,255, 245,40,43,255, 254,75,75,255, 254,102,102,255, 254,111,114,255, 254,105,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,99,99,255, 253,78,78,255, 212,53,53,255, 104,23,23,255, 74,48,48,255, 219,216,216,255, 0,0,0,0, 0,0,0,0, 255,254,254,255, 252,179,179,255, 248,41,46,255, 253,65,68,255, 254,105,105,255, 254,116,117,255, 254,109,112,255, 254,103,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,103,104,255, 254,102,104,255, 254,94,94,255, 245,72,72,255, 194,49,49,255, 189,45,45,255, 241,65,65,255, 250,85,85,255, 252,139,139,255, 229,140,140,255, 235,212,212,255, 255,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,236,255, 254,254,127,255, 254,254,41,255, 254,254,50,255, 254,254,63,255, 254,254,67,255, 254,254,65,255, 254,254,60,255, 254,254,55,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,56,255, 247,245,47,255, 228,225,42,255, 199,192,34,255, 153,143,27,255, 107,103,21,255, 89,85,21,255, 76,69,18,255, 57,53,17,255, 62,61,17,255, 71,69,18,255, 83,79,17,255, 109,101,21,255, 138,130,22,255, 165,159,26,255, 207,200,31,255, 234,228,38,255, 250,248,44,255, 253,252,50,255, 254,254,52,255, 254,254,57,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,52,255, 254,251,43,255, 209,199,33,255, 184,180,127,255, 245,245,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 232,230,232,255, 162,162,162,255, 105,105,105,255, 48,48,48,255, 24,24,24,255, 19,13,19,255, 63,15,68,255, 183,48,187,255, 249,101,249,255, 255,129,255,255, 254,134,254,255, 255,129,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,126,255,255, 254,112,254,255, 220,82,220,255, 108,41,109,255, 36,18,37,255, 33,16,33,255, 25,16,27,255, 15,11,15,255, 16,13,16,255, 17,15,17,255, 46,46,46,255, 205,205,205,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,248,248,255, 255,190,190,255, 253,115,115,255, 254,101,101,255, 253,121,121,255, 254,125,125,255, 253,122,122,255, 254,115,115,255, 253,110,110,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,102,102,255, 253,101,101,255, 253,96,96,255, 251,89,89,255, 252,87,87,255, 250,85,85,255, 250,87,87,255, 249,87,87,255, 251,85,85,255, 251,88,88,255, 254,93,93,255, 253,99,99,255, 254,101,101,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,101,101,255, 253,96,96,255, 254,82,82,255, 251,64,64,255, 225,42,42,255, 152,27,27,255, 140,82,82,255, 216,204,204,255, 252,252,251,255, 173,195,172,255, 53,62,52,255, 67,67,67,255, 88,88,88,255, 121,133,120,255, 60,158,52,255, 87,227,78,255, 125,254,113,255, 145,253,136,255, 148,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 143,253,134,255, 128,250,120,255, 100,220,92,255, 62,150,61,255, 28,66,28,255, 32,49,32,255, 181,185,181,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,252,249,255, 138,196,137,255, 56,188,48,255, 105,249,98,255, 138,253,132,255, 149,254,144,255, 148,253,138,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,134,255, 126,247,120,255, 81,184,80,255, 39,87,36,255, 16,33,16,255, 49,57,49,255, 218,219,218,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,251,254,255, 232,231,253,255, 228,226,252,255, 227,226,251,255, 227,226,250,255, 230,229,249,255, 236,235,250,255, 238,238,250,255, 245,245,252,255, 252,252,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,248,248,255, 243,103,103,255, 246,47,47,255, 254,82,82,255, 254,105,105,255, 254,113,113,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,99,99,255, 251,71,71,255, 194,46,48,255, 83,18,20,255, 96,77,77,255, 245,244,244,255, 0,0,0,0, 0,0,0,0, 255,251,251,255, 248,125,125,255, 245,30,32,255, 252,67,68,255, 254,102,102,255, 254,114,114,255, 254,106,107,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 253,104,104,255, 254,101,101,255, 253,86,86,255, 218,58,58,255, 119,30,30,255, 63,20,20,255, 193,159,159,255, 253,230,230,255, 255,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,237,255, 254,254,124,255, 253,253,40,255, 254,254,50,255, 253,253,64,255, 254,254,67,255, 253,253,67,255, 254,254,61,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,53,255, 251,251,50,255, 241,239,44,255, 220,219,39,255, 204,199,35,255, 187,174,29,255, 176,165,28,255, 182,174,31,255, 190,182,33,255, 197,188,31,255, 212,204,34,255, 226,222,39,255, 243,238,42,255, 251,247,44,255, 253,252,50,255, 254,254,53,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 252,251,50,255, 232,220,35,255, 169,162,69,255, 230,230,222,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,239,254,255, 168,101,168,255, 38,21,38,255, 15,12,15,255, 21,10,21,255, 44,15,45,255, 71,24,74,255, 112,35,114,255, 190,56,193,255, 248,95,249,255, 254,123,254,255, 253,131,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,127,254,255, 253,123,253,255, 248,104,248,255, 196,74,200,255, 142,52,151,255, 131,49,136,255, 107,41,116,255, 93,35,95,255, 83,34,84,255, 60,27,60,255, 57,41,57,255, 199,198,199,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 254,219,219,255, 255,122,122,255, 254,100,100,255, 255,115,115,255, 254,122,122,255, 255,125,125,255, 254,119,119,255, 255,108,108,255, 254,104,104,255, 255,103,103,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,101,101,255, 254,102,102,255, 255,101,101,255, 254,102,102,255, 255,101,101,255, 254,101,101,255, 255,100,100,255, 254,102,102,255, 255,101,101,255, 254,102,102,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,103,103,255, 255,102,102,255, 254,99,99,255, 255,94,94,255, 254,78,78,255, 249,63,63,255, 220,41,41,255, 159,24,24,255, 149,84,84,255, 232,221,221,255, 0,0,0,0, 236,246,235,255, 94,167,90,255, 16,35,15,255, 12,12,12,255, 10,10,10,255, 14,23,13,255, 48,150,47,255, 102,245,99,255, 133,255,126,255, 148,254,137,255, 145,255,138,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 140,254,132,255, 116,244,112,255, 84,188,75,255, 47,111,44,255, 17,44,17,255, 85,96,85,255, 242,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,254,255, 207,225,207,255, 66,156,64,255, 73,209,64,255, 119,254,112,255, 143,254,137,255, 149,255,143,255, 145,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 141,254,132,255, 117,240,111,255, 77,174,74,255, 34,80,34,255, 14,33,14,255, 84,93,84,255, 244,244,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,244,244,255, 242,82,82,255, 249,50,50,255, 254,85,85,255, 254,107,107,255, 254,110,111,255, 254,104,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,103,255, 254,96,96,255, 245,68,70,255, 169,41,43,255, 67,19,19,255, 118,100,100,255, 250,249,249,255, 0,0,0,0, 0,0,0,0, 255,248,248,255, 245,93,93,255, 247,33,34,255, 254,74,75,255, 254,106,106,255, 254,114,114,255, 254,105,109,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,103,104,255, 254,100,102,255, 253,82,82,255, 194,51,51,255, 84,22,22,255, 52,29,29,255, 197,193,193,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,236,255, 254,254,134,255, 254,254,57,255, 254,254,47,255, 254,254,58,255, 254,254,66,255, 254,254,67,255, 254,254,61,255, 254,254,60,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 254,254,56,255, 254,254,58,255, 255,255,54,255, 254,254,54,255, 254,254,51,255, 252,252,50,255, 251,249,47,255, 247,244,45,255, 250,247,47,255, 252,250,47,255, 252,251,50,255, 253,252,50,255, 254,253,51,255, 254,254,52,255, 255,255,53,255, 254,254,56,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,53,255, 242,238,38,255, 172,161,48,255, 207,204,180,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,240,255,255, 240,94,240,255, 171,34,171,255, 91,36,91,255, 92,29,98,255, 136,42,141,255, 162,54,167,255, 200,71,204,255, 231,83,233,255, 253,107,253,255, 255,126,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,127,255,255, 254,127,254,255, 255,122,255,255, 251,108,252,255, 242,98,243,255, 229,86,233,255, 218,82,222,255, 214,80,218,255, 203,77,206,255, 167,59,167,255, 87,42,87,255, 178,176,178,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 255,233,233,255, 253,157,157,255, 254,100,100,255, 253,97,97,255, 254,112,112,255, 253,121,121,255, 254,119,119,255, 253,117,117,255, 254,113,113,255, 253,110,110,255, 254,104,104,255, 253,105,105,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,103,103,255, 253,104,104,255, 254,104,104,255, 253,105,105,255, 254,104,104,255, 253,104,104,255, 254,98,98,255, 253,85,85,255, 254,73,73,255, 245,53,53,255, 204,35,35,255, 153,36,36,255, 162,102,102,255, 234,221,221,255, 0,0,0,0, 253,254,253,255, 177,216,171,255, 67,183,57,255, 42,90,37,255, 20,27,20,255, 19,25,19,255, 14,21,14,255, 53,129,50,255, 113,239,108,255, 139,254,133,255, 148,253,138,255, 145,254,137,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,136,255, 134,252,127,255, 104,224,94,255, 68,154,62,255, 37,79,33,255, 22,37,22,255, 143,147,143,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 236,242,235,255, 97,155,92,255, 46,149,37,255, 88,228,80,255, 133,253,120,255, 146,253,139,255, 148,254,138,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 141,253,132,255, 113,235,103,255, 66,153,64,255, 27,64,27,255, 15,32,15,255, 106,111,106,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,218,218,255, 243,60,60,255, 251,57,58,255, 254,88,89,255, 254,108,109,255, 254,105,110,255, 254,104,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,100,100,255, 253,87,87,255, 234,61,61,255, 151,35,35,255, 62,22,22,255, 163,149,149,255, 253,252,252,255, 0,0,0,0, 0,0,0,0, 253,236,236,255, 243,76,76,255, 252,39,40,255, 254,81,83,255, 254,105,107,255, 254,113,113,255, 254,105,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 253,104,104,255, 254,99,99,255, 248,76,76,255, 178,47,47,255, 69,19,19,255, 73,54,54,255, 225,223,223,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,246,255, 254,254,187,255, 253,253,74,255, 254,254,43,255, 253,253,54,255, 254,254,63,255, 253,253,65,255, 254,254,65,255, 253,253,61,255, 254,254,60,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,53,255, 254,254,53,255, 253,253,56,255, 254,254,56,255, 253,253,55,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 253,251,49,255, 199,194,34,255, 188,184,143,255, 249,249,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,248,255,255, 255,113,255,255, 252,48,252,255, 224,90,224,255, 204,82,209,255, 225,83,229,255, 239,94,242,255, 249,104,249,255, 253,111,254,255, 253,122,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,128,254,255, 253,128,253,255, 254,127,254,255, 253,126,253,255, 254,124,254,255, 253,120,253,255, 254,120,254,255, 253,120,253,255, 252,111,252,255, 198,70,199,255, 94,41,94,255, 174,172,174,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,248,248,255, 255,213,213,255, 254,145,145,255, 255,102,102,255, 254,102,102,255, 255,116,116,255, 254,121,121,255, 255,123,123,255, 254,118,118,255, 255,112,112,255, 254,109,109,255, 255,107,107,255, 254,104,104,255, 255,104,104,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,103,103,255, 254,103,103,255, 255,104,104,255, 254,101,101,255, 255,99,99,255, 254,90,90,255, 254,77,77,255, 250,62,62,255, 235,44,44,255, 195,43,43,255, 177,88,88,255, 217,183,183,255, 246,241,241,255, 0,0,0,0, 0,0,0,0, 213,233,213,255, 86,183,85,255, 88,227,82,255, 98,189,89,255, 63,123,60,255, 54,109,52,255, 43,86,43,255, 67,141,63,255, 121,242,113,255, 142,255,134,255, 148,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 143,255,133,255, 122,249,115,255, 82,192,79,255, 49,109,45,255, 21,49,21,255, 38,50,38,255, 207,211,207,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 244,246,244,255, 139,175,136,255, 37,120,28,255, 64,181,50,255, 107,246,98,255, 137,254,129,255, 148,254,140,255, 145,255,138,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 135,253,128,255, 109,226,97,255, 62,141,60,255, 21,55,21,255, 21,37,21,255, 160,166,160,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,195,195,255, 241,40,40,255, 254,64,66,255, 254,96,100,255, 254,110,111,255, 254,107,109,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,99,102,255, 252,82,84,255, 216,54,54,255, 125,31,32,255, 53,24,25,255, 191,183,183,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,210,210,255, 241,49,49,255, 250,45,45,255, 254,84,85,255, 254,108,108,255, 254,108,111,255, 254,104,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,101,255, 254,96,96,255, 242,69,69,255, 155,39,39,255, 57,18,18,255, 86,72,72,255, 243,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,252,255, 254,254,225,255, 254,254,127,255, 254,254,57,255, 254,254,50,255, 254,254,54,255, 254,254,63,255, 254,254,67,255, 254,254,67,255, 254,254,61,255, 254,254,59,255, 254,254,59,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,55,255, 254,252,50,255, 228,223,38,255, 183,178,101,255, 240,240,234,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,123,255,255, 255,44,255,255, 254,107,254,255, 253,134,253,255, 254,126,254,255, 255,124,255,255, 254,123,254,255, 255,126,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,128,254,255, 255,128,255,255, 254,129,254,255, 255,128,255,255, 254,129,254,255, 255,129,255,255, 254,129,254,255, 255,129,255,255, 254,129,254,255, 255,129,255,255, 254,128,254,255, 255,129,255,255, 254,129,254,255, 253,120,253,255, 197,71,200,255, 97,41,97,255, 175,172,175,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,248,248,255, 255,214,214,255, 253,146,146,255, 254,93,93,255, 253,88,88,255, 254,96,96,255, 253,108,108,255, 254,114,114,255, 253,118,118,255, 254,118,118,255, 253,115,115,255, 254,115,115,255, 253,112,112,255, 254,110,110,255, 253,110,110,255, 254,110,110,255, 253,111,111,255, 254,110,110,255, 253,109,109,255, 254,109,109,255, 253,109,109,255, 254,109,109,255, 253,105,105,255, 254,104,104,255, 253,101,101,255, 254,93,93,255, 253,82,82,255, 254,71,71,255, 248,56,56,255, 229,41,41,255, 202,43,43,255, 196,89,89,255, 224,183,183,255, 246,237,237,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 248,252,248,255, 133,199,130,255, 67,204,60,255, 122,251,111,255, 142,248,131,255, 122,233,117,255, 114,226,106,255, 103,209,95,255, 102,209,96,255, 130,247,121,255, 142,254,135,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,136,255, 137,254,131,255, 110,233,100,255, 63,146,59,255, 32,64,31,255, 15,32,15,255, 80,85,80,255, 237,238,237,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,251,250,255, 172,191,170,255, 43,111,37,255, 56,161,43,255, 94,223,80,255, 126,251,114,255, 142,254,134,255, 148,253,138,255, 145,254,137,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,134,255, 128,251,121,255, 92,210,85,255, 51,122,48,255, 19,45,17,255, 31,44,31,255, 200,204,200,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,253,253,255, 247,164,164,255, 241,38,38,255, 253,74,74,255, 254,102,102,255, 254,111,114,255, 254,105,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,99,100,255, 250,79,81,255, 199,48,51,255, 98,22,26,255, 72,49,52,255, 219,216,217,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,194,194,255, 239,33,33,255, 250,52,56,255, 254,92,94,255, 254,113,113,255, 254,109,110,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 253,102,102,255, 254,93,93,255, 236,65,65,255, 136,34,34,255, 45,16,16,255, 106,94,94,255, 248,247,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,243,255, 255,255,206,255, 254,254,126,255, 253,253,52,255, 254,254,48,255, 253,253,56,255, 254,254,62,255, 253,253,63,255, 254,254,63,255, 253,253,64,255, 254,254,60,255, 253,253,61,255, 254,254,60,255, 253,253,57,255, 254,254,55,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,51,255, 239,235,36,255, 173,167,60,255, 224,223,208,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,129,255,255, 254,40,254,255, 253,101,253,255, 254,141,254,255, 253,139,253,255, 254,129,254,255, 253,129,253,255, 254,129,254,255, 253,129,253,255, 254,130,254,255, 253,129,253,255, 254,129,254,255, 253,129,253,255, 254,129,254,255, 253,130,253,255, 254,132,254,255, 253,134,253,255, 254,135,254,255, 253,135,253,255, 254,135,254,255, 253,135,253,255, 254,134,254,255, 253,134,253,255, 254,134,254,255, 253,134,253,255, 254,134,254,255, 253,135,253,255, 254,129,254,255, 211,89,211,255, 103,45,103,255, 175,172,175,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,248,248,255, 255,217,217,255, 254,172,172,255, 255,128,128,255, 254,94,94,255, 255,88,88,255, 254,95,95,255, 255,101,101,255, 254,106,106,255, 255,109,109,255, 254,112,112,255, 255,112,112,255, 254,112,112,255, 255,110,110,255, 254,111,111,255, 255,109,109,255, 254,108,108,255, 255,105,105,255, 254,102,102,255, 255,100,100,255, 254,92,92,255, 255,84,84,255, 254,78,78,255, 253,65,65,255, 245,45,45,255, 231,46,46,255, 216,58,58,255, 212,111,111,255, 227,183,183,255, 248,237,237,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 215,234,215,255, 81,190,72,255, 102,241,89,255, 144,254,131,255, 151,255,142,255, 144,254,137,255, 142,254,133,255, 140,253,129,255, 137,253,127,255, 142,254,132,255, 144,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 144,254,136,255, 136,254,131,255, 97,214,95,255, 52,114,49,255, 22,41,21,255, 12,18,12,255, 37,38,37,255, 146,146,146,255, 234,234,234,255, 0,0,0,0, 0,0,0,0, 254,254,254,255, 236,237,236,255, 154,167,153,255, 51,95,49,255, 40,128,36,255, 78,203,72,255, 112,243,104,255, 137,254,128,255, 145,255,138,255, 145,254,137,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 144,255,133,255, 128,251,117,255, 88,203,81,255, 45,109,44,255, 17,38,17,255, 70,83,70,255, 232,234,232,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,249,249,255, 241,118,118,255, 244,41,41,255, 254,82,82,255, 254,104,104,255, 254,113,114,255, 254,104,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,97,99,255, 244,71,71,255, 172,41,42,255, 81,19,20,255, 96,77,77,255, 245,244,244,255, 0,0,0,0, 0,0,0,0, 255,254,254,255, 248,173,173,255, 241,32,32,255, 253,62,63,255, 254,99,99,255, 254,111,111,255, 254,106,106,255, 254,103,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,100,100,255, 254,86,86,255, 222,58,58,255, 113,31,31,255, 45,21,21,255, 156,148,148,255, 252,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,243,255, 254,254,193,255, 254,254,111,255, 254,254,57,255, 254,254,47,255, 254,254,50,255, 254,254,57,255, 254,254,62,255, 255,255,64,255, 254,254,66,255, 255,255,64,255, 254,254,60,255, 255,255,59,255, 254,254,59,255, 255,255,60,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,52,255, 250,247,39,255, 191,183,30,255, 188,185,146,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,150,255,255, 255,43,255,255, 254,97,254,255, 255,138,255,255, 254,138,254,255, 255,134,255,255, 254,133,254,255, 255,132,255,255, 254,133,254,255, 255,131,255,255, 254,130,254,255, 255,131,255,255, 254,127,254,255, 255,127,255,255, 254,127,254,255, 255,125,255,255, 254,123,254,255, 255,121,255,255, 254,118,254,255, 255,118,255,255, 254,117,254,255, 255,110,255,255, 254,107,254,255, 255,104,255,255, 254,113,254,255, 255,116,255,255, 254,115,254,255, 255,110,255,255, 247,106,247,255, 169,79,169,255, 181,171,181,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 255,245,245,255, 255,213,213,255, 255,145,145,255, 253,124,124,255, 254,84,84,255, 253,79,79,255, 254,78,78,255, 253,75,75,255, 254,82,82,255, 253,86,86,255, 254,86,86,255, 253,83,83,255, 254,81,81,255, 253,83,83,255, 254,77,77,255, 253,71,71,255, 252,62,62,255, 250,55,55,255, 247,51,51,255, 243,56,56,255, 236,63,63,255, 232,114,114,255, 238,178,178,255, 245,222,222,255, 252,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 229,244,229,255, 136,229,130,255, 136,253,124,255, 168,253,156,255, 171,254,157,255, 156,253,143,255, 147,254,137,255, 145,253,136,255, 145,254,135,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 137,253,131,255, 103,216,99,255, 58,126,57,255, 22,44,22,255, 13,16,13,255, 10,10,10,255, 23,23,23,255, 90,90,90,255, 192,192,192,255, 225,225,225,255, 187,190,187,255, 86,96,86,255, 28,56,28,255, 31,97,30,255, 65,174,58,255, 102,237,93,255, 127,253,118,255, 142,253,136,255, 147,254,137,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 136,254,131,255, 118,245,111,255, 81,185,74,255, 37,94,35,255, 16,36,15,255, 95,106,95,255, 250,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,246,246,255, 238,87,87,255, 248,44,46,255, 254,83,85,255, 254,103,104,255, 254,109,113,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,95,95,255, 238,65,65,255, 146,36,36,255, 62,19,19,255, 115,100,100,255, 249,249,249,255, 0,0,0,0, 0,0,0,0, 255,251,251,255, 241,126,126,255, 243,36,36,255, 253,68,68,255, 254,101,101,255, 254,113,113,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 253,101,102,255, 252,83,83,255, 202,54,54,255, 90,24,24,255, 72,52,52,255, 216,214,214,255, 255,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,243,255, 255,255,206,255, 254,254,152,255, 253,253,77,255, 254,254,43,255, 253,253,44,255, 254,254,51,255, 253,253,56,255, 254,254,62,255, 253,253,63,255, 254,254,63,255, 253,253,63,255, 254,254,64,255, 253,253,64,255, 254,254,60,255, 253,253,60,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 252,249,50,255, 208,201,31,255, 170,165,96,255, 239,239,235,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,154,255,255, 254,41,254,255, 253,82,253,255, 254,110,254,255, 253,117,253,255, 254,117,254,255, 253,112,253,255, 254,109,254,255, 253,116,253,255, 254,112,254,255, 253,108,253,255, 254,104,254,255, 253,97,253,255, 254,110,254,255, 253,125,253,255, 254,144,254,255, 253,140,253,255, 255,145,255,255, 255,164,255,255, 255,166,255,255, 255,163,255,255, 255,156,255,255, 255,154,255,255, 255,155,255,255, 255,177,255,255, 255,196,255,255, 255,205,255,255, 255,203,255,255, 255,219,255,255, 247,228,247,255, 243,240,243,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,250,250,255, 254,243,243,255, 255,224,224,255, 254,202,202,255, 255,175,175,255, 254,144,144,255, 255,126,126,255, 254,118,118,255, 255,97,97,255, 254,89,89,255, 255,67,67,255, 254,66,66,255, 252,65,65,255, 250,97,97,255, 248,124,124,255, 248,140,140,255, 246,163,163,255, 247,202,202,255, 250,226,226,255, 253,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 233,254,232,255, 181,255,173,255, 157,254,144,255, 170,255,158,255, 172,254,158,255, 161,255,150,255, 148,254,141,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,137,255, 145,254,136,255, 142,254,134,255, 121,238,114,255, 83,173,75,255, 43,88,42,255, 23,40,22,255, 13,15,13,255, 10,10,10,255, 13,13,13,255, 31,31,31,255, 42,42,42,255, 30,34,30,255, 16,37,16,255, 30,91,29,255, 60,164,58,255, 93,221,85,255, 122,252,110,255, 139,255,128,255, 145,254,135,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 144,254,133,255, 132,253,119,255, 107,230,100,255, 71,165,63,255, 32,78,30,255, 28,46,28,255, 141,151,141,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 252,233,233,255, 235,70,70,255, 250,47,51,255, 254,89,92,255, 254,107,108,255, 254,108,110,255, 254,102,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,101,255, 254,89,89,255, 229,62,62,255, 124,33,33,255, 54,19,19,255, 157,149,149,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 255,248,248,255, 238,94,94,255, 247,40,40,255, 254,74,74,255, 254,101,104,255, 254,111,111,255, 254,105,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,95,99,255, 253,78,78,255, 192,48,48,255, 77,19,19,255, 84,64,64,255, 236,235,235,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,252,255, 254,254,226,255, 254,254,155,255, 254,254,101,255, 255,255,59,255, 254,254,49,255, 255,255,42,255, 254,254,49,255, 255,255,51,255, 254,254,55,255, 255,255,58,255, 254,254,62,255, 255,255,64,255, 254,254,66,255, 255,255,60,255, 254,254,59,255, 255,255,56,255, 254,254,58,255, 255,255,56,255, 254,254,58,255, 254,254,51,255, 230,225,36,255, 151,146,51,255, 207,206,189,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,255,255, 255,204,255,255, 255,145,255,255, 254,150,254,255, 255,167,255,255, 254,196,254,255, 255,205,255,255, 254,203,254,255, 255,207,255,255, 254,228,254,255, 255,230,255,255, 254,229,254,255, 255,228,255,255, 254,227,254,255, 255,232,255,255, 254,237,254,255, 255,244,255,255, 254,244,254,255, 255,247,255,255, 255,254,255,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 255,247,247,255, 255,243,243,255, 255,236,236,255, 255,233,233,255, 255,226,226,255, 255,225,225,255, 254,226,226,255, 254,238,238,255, 255,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 247,255,246,255, 200,253,195,255, 158,254,149,255, 168,253,156,255, 177,254,164,255, 161,253,153,255, 149,254,139,255, 146,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,138,255, 145,253,139,255, 145,254,136,255, 138,250,130,255, 111,222,104,255, 84,175,78,255, 57,117,53,255, 28,50,28,255, 16,19,16,255, 11,13,11,255, 14,16,14,255, 12,20,12,255, 20,45,18,255, 35,92,30,255, 62,152,54,255, 92,213,88,255, 119,246,112,255, 136,253,126,255, 141,254,135,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 144,254,136,255, 138,253,131,255, 118,243,109,255, 88,200,79,255, 48,125,45,255, 23,57,22,255, 115,125,115,255, 241,243,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,205,205,255, 234,47,47,255, 252,61,62,255, 254,96,100,255, 254,110,113,255, 254,107,110,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,101,101,255, 252,84,84,255, 209,55,55,255, 102,23,23,255, 52,22,22,255, 191,183,183,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,228,228,255, 239,68,68,255, 247,47,47,255, 254,81,81,255, 254,106,107,255, 254,110,113,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,103,255, 253,95,96,255, 246,69,71,255, 166,41,41,255, 61,18,18,255, 96,83,83,255, 247,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,242,255, 255,255,220,255, 255,255,185,255, 254,254,120,255, 253,253,87,255, 254,254,59,255, 253,253,59,255, 254,254,55,255, 253,253,48,255, 254,254,55,255, 253,253,65,255, 254,254,65,255, 253,253,57,255, 254,254,56,255, 253,253,56,255, 254,254,55,255, 253,253,54,255, 247,246,40,255, 186,182,44,255, 204,204,178,255, 251,251,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,254,251,255, 220,255,216,255, 158,254,147,255, 156,255,142,255, 170,254,160,255, 172,255,156,255, 159,254,144,255, 147,255,138,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 148,255,138,255, 152,254,145,255, 147,255,138,255, 145,254,135,255, 138,251,132,255, 124,244,121,255, 106,220,99,255, 75,157,71,255, 46,91,45,255, 38,73,37,255, 38,76,37,255, 42,94,41,255, 57,132,52,255, 76,174,68,255, 101,221,96,255, 127,247,116,255, 140,254,129,255, 144,254,135,255, 144,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 143,255,133,255, 129,251,118,255, 94,218,88,255, 66,157,58,255, 32,81,26,255, 67,87,66,255, 219,221,219,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 247,188,188,255, 234,35,35,255, 253,66,68,255, 254,100,102,255, 254,111,111,255, 254,105,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,99,99,255, 252,80,80,255, 189,47,47,255, 73,19,19,255, 72,48,48,255, 220,216,216,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,201,201,255, 236,40,40,255, 251,53,53,255, 254,89,89,255, 254,108,108,255, 254,109,110,255, 254,104,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,100,102,255, 254,86,87,255, 241,66,67,255, 147,37,37,255, 56,20,20,255, 149,138,138,255, 251,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,248,255, 254,254,236,255, 255,255,225,255, 254,254,219,255, 255,255,161,255, 254,254,33,255, 255,255,44,255, 254,254,63,255, 255,255,64,255, 254,254,60,255, 255,255,56,255, 254,254,58,255, 255,255,53,255, 253,252,46,255, 204,199,35,255, 183,180,129,255, 248,248,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 228,255,227,255, 154,255,144,255, 145,253,134,255, 170,254,157,255, 173,253,160,255, 160,254,151,255, 148,253,142,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,133,255, 146,254,137,255, 160,253,155,255, 152,254,140,255, 145,253,136,255, 145,254,136,255, 143,253,135,255, 137,251,125,255, 114,228,110,255, 92,193,88,255, 87,182,82,255, 83,180,79,255, 83,183,80,255, 102,216,95,255, 113,233,103,255, 128,250,119,255, 142,253,133,255, 144,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,134,255, 134,253,129,255, 110,241,107,255, 75,185,68,255, 44,113,39,255, 34,63,31,255, 166,175,165,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,253,253,255, 241,164,164,255, 234,39,39,255, 253,73,73,255, 254,102,102,255, 254,113,113,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,103,104,255, 254,100,101,255, 246,73,73,255, 163,39,39,255, 60,18,18,255, 93,77,77,255, 245,244,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 247,187,187,255, 234,34,34,255, 252,62,62,255, 254,97,97,255, 254,110,111,255, 254,105,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,100,100,255, 253,82,83,255, 235,59,61,255, 130,32,32,255, 49,18,18,255, 181,174,174,255, 255,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,254,215,255, 253,253,49,255, 254,254,34,255, 253,253,58,255, 254,254,63,255, 253,253,64,255, 254,254,60,255, 253,253,56,255, 253,253,50,255, 227,223,36,255, 163,158,70,255, 230,230,223,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 237,255,236,255, 169,254,166,255, 144,255,135,255, 168,254,155,255, 175,255,160,255, 163,254,157,255, 150,255,143,255, 146,254,136,255, 144,255,136,255, 137,254,131,255, 130,246,122,255, 168,251,157,255, 160,255,151,255, 147,254,138,255, 145,255,136,255, 145,254,136,255, 145,255,135,255, 140,253,134,255, 135,250,125,255, 128,246,121,255, 124,246,118,255, 124,245,117,255, 130,252,124,255, 138,254,131,255, 142,255,131,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 142,254,133,255, 124,251,117,255, 91,221,90,255, 55,151,51,255, 27,78,26,255, 93,109,92,255, 241,241,240,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,247,247,255, 236,117,117,255, 243,42,43,255, 254,78,79,255, 254,105,106,255, 254,110,111,255, 254,105,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,94,97,255, 239,66,68,255, 140,35,36,255, 46,17,17,255, 112,100,100,255, 249,249,249,255, 0,0,0,0, 0,0,0,0, 255,252,252,255, 242,143,143,255, 237,36,36,255, 253,71,71,255, 254,99,99,255, 254,110,113,255, 254,105,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,100,102,255, 253,80,81,255, 217,51,51,255, 105,26,26,255, 54,30,30,255, 198,193,193,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,244,255, 254,254,120,255, 255,255,38,255, 254,254,48,255, 255,255,62,255, 254,254,66,255, 255,255,67,255, 254,254,55,255, 240,237,36,255, 173,161,41,255, 205,202,180,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,255,244,255, 187,255,180,255, 146,253,135,255, 158,254,147,255, 172,253,163,255, 165,254,157,255, 151,253,143,255, 145,254,137,255, 131,251,125,255, 114,230,108,255, 168,244,156,255, 174,254,162,255, 155,253,144,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,135,255, 144,253,135,255, 144,254,135,255, 143,253,135,255, 143,254,135,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,136,255, 141,254,133,255, 135,253,128,255, 111,242,103,255, 71,192,71,255, 37,108,34,255, 36,69,36,255, 181,192,181,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,218,218,255, 229,62,62,255, 245,44,49,255, 254,82,86,255, 254,106,108,255, 254,108,110,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,104,255, 253,94,95,255, 233,62,63,255, 117,28,29,255, 43,17,17,255, 156,149,149,255, 252,252,252,255, 0,0,0,0, 0,0,0,0, 255,250,250,255, 237,107,107,255, 241,40,41,255, 253,79,79,255, 254,102,102,255, 254,110,111,255, 254,105,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,99,100,255, 247,74,77,255, 202,49,50,255, 92,22,22,255, 76,54,54,255, 225,224,224,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,234,255, 254,254,156,255, 253,253,104,255, 254,254,63,255, 253,253,52,255, 254,254,60,255, 248,246,52,255, 188,181,29,255, 168,164,120,255, 246,246,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,255,249,255, 192,254,188,255, 135,255,123,255, 158,254,146,255, 174,255,163,255, 166,254,157,255, 157,255,150,255, 128,243,120,255, 89,194,79,255, 154,236,141,255, 180,255,168,255, 169,254,159,255, 152,255,144,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 143,254,133,255, 133,254,123,255, 120,250,106,255, 92,223,81,255, 50,149,48,255, 31,75,29,255, 133,147,131,255, 247,247,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 241,233,233,255, 225,225,225,255, 226,226,226,255, 223,174,174,255, 223,36,36,255, 247,51,52,255, 254,92,93,255, 254,109,110,255, 254,109,109,255, 254,104,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,103,255, 252,86,87,255, 211,54,54,255, 93,23,23,255, 45,22,22,255, 189,183,183,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,246,246,255, 232,85,85,255, 245,43,46,255, 254,81,82,255, 254,102,102,255, 254,110,113,255, 254,105,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,97,99,255, 241,69,69,255, 181,44,44,255, 77,18,18,255, 89,72,72,255, 243,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 254,254,241,255, 255,255,195,255, 254,254,136,255, 255,255,80,255, 237,235,44,255, 178,175,100,255, 240,240,235,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 250,255,250,255, 216,255,214,255, 153,253,147,255, 144,254,130,255, 162,253,148,255, 156,254,145,255, 136,242,123,255, 77,164,65,255, 112,202,101,255, 161,252,151,255, 176,253,166,255, 170,254,159,255, 154,253,144,255, 147,254,137,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 145,253,136,255, 145,254,136,255, 144,253,136,255, 141,254,132,255, 132,252,120,255, 111,241,100,255, 88,214,76,255, 55,157,49,255, 44,104,44,255, 140,158,139,255, 237,239,237,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,223,223,255, 170,77,78,255, 48,41,42,255, 43,43,43,255, 69,34,34,255, 177,23,23,255, 248,59,59,255, 254,98,98,255, 254,110,110,255, 254,105,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,100,100,255, 249,81,81,255, 189,48,48,255, 73,19,19,255, 39,23,23,255, 164,161,161,255, 248,248,248,255, 0,0,0,0, 0,0,0,0, 249,219,219,255, 230,59,59,255, 248,51,51,255, 254,88,88,255, 254,105,105,255, 254,110,110,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,104,255, 254,90,91,255, 236,64,64,255, 152,36,36,255, 63,20,20,255, 123,106,106,255, 249,248,248,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,255,253,255, 255,255,227,255, 242,242,162,255, 232,232,206,255, 254,254,254,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 229,254,227,255, 154,255,149,255, 122,253,113,255, 116,251,106,255, 109,247,99,255, 111,214,103,255, 124,200,117,255, 131,250,119,255, 161,254,147,255, 179,255,166,255, 174,254,161,255, 161,255,154,255, 151,254,144,255, 147,255,137,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,136,255, 145,255,136,255, 145,254,137,255, 145,255,136,255, 143,254,133,255, 132,252,119,255, 108,239,99,255, 79,206,67,255, 49,147,40,255, 56,111,54,255, 168,183,168,255, 247,249,247,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,254,254,255, 247,178,179,255, 198,29,32,255, 54,18,20,255, 17,11,11,255, 24,14,14,255, 96,23,23,255, 234,67,67,255, 254,101,101,255, 254,110,110,255, 254,104,106,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,99,101,255, 246,78,79,255, 158,42,45,255, 42,18,18,255, 14,12,12,255, 39,39,39,255, 155,155,155,255, 243,243,243,255, 254,254,254,255, 236,184,184,255, 214,32,32,255, 249,57,57,255, 254,93,93,255, 254,108,108,255, 254,106,106,255, 254,103,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,100,101,255, 254,83,84,255, 222,55,55,255, 133,34,34,255, 53,22,22,255, 168,161,161,255, 253,253,253,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 245,255,245,255, 230,254,229,255, 230,254,228,255, 230,253,228,255, 236,253,236,255, 242,254,241,255, 190,255,185,255, 133,253,120,255, 161,254,146,255, 179,253,163,255, 179,254,166,255, 172,253,159,255, 160,254,147,255, 148,253,142,255, 146,254,137,255, 145,253,137,255, 146,254,137,255, 146,253,136,255, 145,254,136,255, 146,253,137,255, 146,254,137,255, 146,253,137,255, 146,254,137,255, 144,253,138,255, 146,254,133,255, 133,253,122,255, 112,246,101,255, 75,205,65,255, 46,144,40,255, 84,137,80,255, 196,210,195,255, 250,251,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,249,249,255, 242,122,122,255, 239,43,43,255, 161,53,53,255, 96,32,32,255, 90,30,30,255, 99,30,30,255, 198,60,60,255, 253,99,99,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,99,100,255, 238,73,75,255, 144,43,47,255, 48,20,21,255, 14,11,11,255, 12,12,12,255, 32,32,32,255, 110,110,110,255, 173,172,172,255, 159,87,87,255, 205,31,31,255, 251,65,65,255, 254,95,95,255, 254,109,109,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,102,255, 253,82,82,255, 208,52,52,255, 113,29,29,255, 51,21,21,255, 189,182,182,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 249,255,249,255, 190,254,186,255, 131,255,123,255, 138,254,127,255, 159,255,147,255, 172,254,162,255, 174,255,159,255, 166,254,154,255, 159,255,152,255, 157,254,149,255, 157,255,146,255, 153,254,143,255, 150,255,141,255, 153,254,140,255, 152,255,143,255, 152,254,142,255, 148,255,135,255, 134,254,125,255, 123,254,113,255, 106,249,97,255, 76,215,68,255, 55,153,46,255, 123,167,122,255, 223,232,222,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 253,241,241,255, 244,85,85,255, 252,58,58,255, 245,91,91,255, 224,75,75,255, 212,62,62,255, 206,58,58,255, 224,65,65,255, 252,94,94,255, 254,104,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,103,255, 253,91,92,255, 221,67,68,255, 133,41,42,255, 48,20,20,255, 15,11,11,255, 12,12,12,255, 13,13,13,255, 26,25,25,255, 65,16,16,255, 194,35,35,255, 251,73,73,255, 254,100,100,255, 254,108,108,255, 254,105,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,100,100,255, 251,77,77,255, 193,47,47,255, 92,20,20,255, 70,45,45,255, 216,213,213,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,255,251,255, 222,255,222,255, 166,253,158,255, 130,254,117,255, 139,253,124,255, 160,254,143,255, 167,253,152,255, 165,254,155,255, 162,253,152,255, 159,254,148,255, 159,253,148,255, 156,254,147,255, 155,253,145,255, 145,254,136,255, 138,253,125,255, 123,252,110,255, 103,242,91,255, 79,223,71,255, 64,197,59,255, 69,163,60,255, 154,192,151,255, 244,247,244,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 248,199,199,255, 238,50,50,255, 253,70,71,255, 254,102,104,255, 253,101,102,255, 252,93,94,255, 251,89,89,255, 251,90,90,255, 253,99,100,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,103,103,255, 251,91,91,255, 217,65,65,255, 135,42,42,255, 66,26,26,255, 29,13,13,255, 17,12,12,255, 17,10,10,255, 68,19,19,255, 198,43,43,255, 251,80,80,255, 254,101,101,255, 254,106,107,255, 254,106,106,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,103,255, 253,93,93,255, 243,68,68,255, 160,37,37,255, 70,19,19,255, 128,111,111,255, 246,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 251,254,250,255, 222,255,220,255, 180,254,172,255, 154,253,145,255, 131,251,118,255, 131,252,120,255, 125,251,117,255, 117,252,107,255, 122,251,114,255, 126,253,116,255, 122,254,112,255, 105,244,95,255, 92,232,83,255, 90,217,83,255, 118,216,115,255, 148,212,144,255, 158,206,154,255, 216,232,214,255, 249,251,249,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,252,255, 244,152,152,255, 245,49,51,255, 254,86,87,255, 254,111,111,255, 254,110,112,255, 254,103,104,255, 254,101,103,255, 254,101,103,255, 254,102,103,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,101,255, 254,105,105,255, 254,103,104,255, 254,101,103,255, 252,92,92,255, 223,71,71,255, 188,57,57,255, 140,42,42,255, 98,30,30,255, 105,32,32,255, 150,39,39,255, 228,59,59,255, 254,83,84,255, 254,100,100,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,103,255, 254,86,86,255, 222,57,57,255, 123,27,27,255, 63,23,23,255, 189,180,180,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 242,254,241,255, 229,254,227,255, 212,254,210,255, 189,249,187,255, 158,246,154,255, 157,246,154,255, 143,246,138,255, 129,244,124,255, 138,230,131,255, 174,230,171,255, 217,241,216,255, 241,249,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,251,251,255, 248,146,148,255, 251,72,74,255, 254,95,96,255, 254,118,118,255, 254,119,120,255, 254,112,115,255, 254,108,110,255, 254,105,105,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,103,104,255, 247,91,91,255, 247,109,109,255, 254,108,108,255, 254,104,104,255, 254,103,103,255, 253,95,95,255, 251,89,89,255, 240,77,77,255, 220,65,65,255, 227,68,68,255, 239,73,73,255, 251,81,81,255, 254,94,98,255, 254,103,103,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,100,100,255, 250,78,78,255, 206,49,49,255, 95,22,22,255, 91,64,64,255, 233,230,230,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,255,254,255, 247,253,247,255, 243,252,243,255, 248,253,248,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,240,241,255, 254,184,185,255, 254,120,120,255, 254,98,98,255, 254,106,108,255, 254,115,119,255, 254,117,122,255, 254,114,114,255, 254,110,112,255, 254,103,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,103,255, 237,79,79,255, 220,89,89,255, 253,120,120,255, 254,111,111,255, 254,103,104,255, 254,102,103,255, 254,101,101,255, 254,99,99,255, 253,94,95,255, 254,95,96,255, 254,97,97,255, 254,100,100,255, 254,102,103,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,101,101,255, 254,90,93,255, 248,70,70,255, 176,39,39,255, 78,25,25,255, 150,131,131,255, 251,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,252,255, 255,239,239,255, 254,183,183,255, 254,97,97,255, 254,89,92,255, 254,106,106,255, 254,116,117,255, 254,118,120,255, 254,112,113,255, 254,108,108,255, 254,105,105,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,100,100,255, 227,69,69,255, 154,47,47,255, 240,106,107,255, 254,119,121,255, 254,105,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,103,104,255, 254,103,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,102,104,255, 254,98,100,255, 254,83,84,255, 238,59,59,255, 141,30,30,255, 98,63,63,255, 229,225,225,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,251,251,255, 254,222,222,255, 254,154,155,255, 254,95,95,255, 254,88,89,255, 254,105,108,255, 254,115,117,255, 254,117,117,255, 254,114,114,255, 254,111,112,255, 254,103,105,255, 254,102,104,255, 254,99,101,255, 224,67,67,255, 115,30,31,255, 222,87,88,255, 254,122,123,255, 254,113,113,255, 254,105,105,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,102,104,255, 254,99,101,255, 254,86,87,255, 251,70,70,255, 208,46,46,255, 108,29,29,255, 156,133,133,255, 251,250,250,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,251,251,255, 255,222,222,255, 255,165,166,255, 255,126,127,255, 254,91,92,255, 254,98,99,255, 254,110,110,255, 254,116,116,255, 254,112,114,255, 254,109,110,255, 254,106,106,255, 223,70,70,255, 98,25,26,255, 200,56,58,255, 253,115,115,255, 254,123,123,255, 254,115,115,255, 254,111,111,255, 254,105,105,255, 254,104,105,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,104,104,255, 254,101,102,255, 253,88,89,255, 246,73,73,255, 217,50,50,255, 145,36,36,255, 162,129,129,255, 244,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,234,234,255, 254,166,168,255, 254,112,113,255, 254,78,78,255, 254,95,95,255, 254,111,112,255, 254,113,114,255, 254,111,111,255, 232,84,85,255, 115,32,32,255, 166,36,36,255, 252,87,88,255, 254,116,117,255, 254,123,123,255, 254,123,123,255, 254,115,115,255, 254,111,112,255, 254,104,106,255, 254,103,105,255, 254,103,105,255, 254,103,105,255, 254,103,105,255, 254,103,105,255, 254,103,105,255, 254,104,104,255, 254,103,103,255, 254,96,98,255, 251,74,76,255, 216,47,47,255, 151,35,36,255, 172,130,131,255, 245,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,252,255, 255,231,231,255, 254,152,152,255, 254,92,92,255, 254,79,79,255, 254,87,87,255, 254,82,82,255, 250,77,82,255, 215,71,72,255, 199,109,110,255, 251,117,120,255, 254,80,87,255, 254,102,106,255, 254,118,118,255, 254,121,121,255, 254,120,120,255, 254,117,117,255, 254,112,112,255, 254,110,110,255, 254,110,110,255, 254,109,110,255, 254,107,110,255, 254,104,109,255, 254,99,101,255, 254,88,88,255, 253,77,77,255, 236,52,52,255, 173,46,46,255, 185,138,139,255, 246,242,242,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,251,251,255, 254,223,223,255, 254,154,154,255, 254,132,132,255, 254,155,155,255, 254,197,198,255, 254,227,227,255, 254,244,244,255, 254,234,234,255, 254,155,156,255, 254,89,92,255, 254,84,85,255, 254,97,97,255, 254,107,107,255, 254,113,113,255, 254,113,113,255, 254,112,112,255, 254,106,110,255, 254,105,106,255, 254,102,103,255, 254,92,96,255, 254,76,77,255, 246,59,59,255, 232,49,49,255, 198,62,62,255, 203,153,153,255, 249,246,246,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,252,255, 255,249,249,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,250,250,255, 255,209,209,255, 255,157,157,255, 254,116,116,255, 254,84,84,255, 254,81,82,255, 254,85,88,255, 254,87,89,255, 254,82,86,255, 254,76,77,255, 253,72,72,255, 251,61,62,255, 236,63,63,255, 224,102,102,255, 223,155,155,255, 238,218,218,255, 252,248,248,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 255,252,252,255, 254,239,239,255, 254,205,205,255, 254,163,163,255, 253,133,134,255, 253,124,125,255, 253,122,122,255, 252,117,117,255, 250,137,137,255, 247,151,151,255, 247,208,208,255, 252,241,241,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 254,247,247,255, 254,243,243,255, 254,244,244,255, 254,243,243,255, 254,251,251,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -}; diff --git a/lib/glut-3.7.6/progs/examples/luminance16.c b/lib/glut-3.7.6/progs/examples/luminance16.c deleted file mode 100644 index a5b8bad3840fa55bb27455698584d7f6e2d8b6ec..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/luminance16.c +++ /dev/null @@ -1,154 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* molehill uses the GLU NURBS routines to draw some nice surfaces. */ - -#include - -GLfloat mat_red_diffuse[] = { 0.7, 0.0, 0.1, 1.0 }; -GLfloat mat_green_diffuse[] = { 0.0, 0.7, 0.1, 1.0 }; -GLfloat mat_blue_diffuse[] = { 0.0, 0.1, 0.7, 1.0 }; -GLfloat mat_yellow_diffuse[] = { 0.7, 0.8, 0.1, 1.0 }; -GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat mat_shininess[] = { 100.0 }; -GLfloat knots[8] = { 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0 }; -GLfloat pts1[4][4][3], pts2[4][4][3]; -GLfloat pts3[4][4][3], pts4[4][4][3]; -GLUnurbsObj *nurb; -int u, v; - -static void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(1); - glFlush(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayString("luminance depth"); - glutCreateWindow("molehill"); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - nurb = gluNewNurbsRenderer(); - gluNurbsProperty(nurb, GLU_SAMPLING_TOLERANCE, 25.0); - gluNurbsProperty(nurb, GLU_DISPLAY_MODE, GLU_FILL); - - /* Build control points for NURBS mole hills. */ - for(u=0; u<4; u++) { - for(v=0; v<4; v++) { - /* Red. */ - pts1[u][v][0] = 2.0*((GLfloat)u); - pts1[u][v][1] = 2.0*((GLfloat)v); - if((u==1 || u == 2) && (v == 1 || v == 2)) - /* Stretch up middle. */ - pts1[u][v][2] = 6.0; - else - pts1[u][v][2] = 0.0; - - /* Green. */ - pts2[u][v][0] = 2.0*((GLfloat)u - 3.0); - pts2[u][v][1] = 2.0*((GLfloat)v - 3.0); - if((u==1 || u == 2) && (v == 1 || v == 2)) - if(u == 1 && v == 1) - /* Pull hard on single middle square. */ - pts2[u][v][2] = 15.0; - else - /* Push down on other middle squares. */ - pts2[u][v][2] = -2.0; - else - pts2[u][v][2] = 0.0; - - /* Blue. */ - pts3[u][v][0] = 2.0*((GLfloat)u - 3.0); - pts3[u][v][1] = 2.0*((GLfloat)v); - if((u==1 || u == 2) && (v == 1 || v == 2)) - if(u == 1 && v == 2) - /* Pull up on single middple square. */ - pts3[u][v][2] = 11.0; - else - /* Pull up slightly on other middle squares. */ - pts3[u][v][2] = 2.0; - else - pts3[u][v][2] = 0.0; - - /* Yellow. */ - pts4[u][v][0] = 2.0*((GLfloat)u); - pts4[u][v][1] = 2.0*((GLfloat)v - 3.0); - if((u==1 || u == 2 || u == 3) && (v == 1 || v == 2)) - if(v == 1) - /* Push down front middle and right squares. */ - pts4[u][v][2] = -2.0; - else - /* Pull up back middle and right squares. */ - pts4[u][v][2] = 5.0; - else - pts4[u][v][2] = 0.0; - } - } - /* Stretch up red's far right corner. */ - pts1[3][3][2] = 6; - /* Pull down green's near left corner a little. */ - pts2[0][0][2] = -2; - /* Turn up meeting of four corners. */ - pts1[0][0][2] = 1; - pts2[3][3][2] = 1; - pts3[3][0][2] = 1; - pts4[0][3][2] = 1; - - glMatrixMode(GL_PROJECTION); - gluPerspective(55.0, 1.0, 2.0, 24.0); - glMatrixMode(GL_MODELVIEW); - glTranslatef(0.0, 0.0, -15.0); - glRotatef(330.0, 1.0, 0.0, 0.0); - - glNewList(1, GL_COMPILE); - /* Render red hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_red_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts1[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - - /* Render green hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_green_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts2[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - - /* Render blue hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_blue_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts3[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - - /* Render yellow hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_yellow_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts4[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - glEndList(); - - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/luminance16.dsp b/lib/glut-3.7.6/progs/examples/luminance16.dsp deleted file mode 100644 index 82b50905ca88a0d739542eb18fc2520c7b03fc27..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/luminance16.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="luminance16" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=luminance16 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "luminance16.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "luminance16.mak" CFG="luminance16 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "luminance16 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "luminance16 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "luminance16 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "luminance16 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "luminance16 - Win32 Release" -# Name "luminance16 - Win32 Debug" -# Begin Source File - -SOURCE=.\luminance16.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/mjkimage.c b/lib/glut-3.7.6/progs/examples/mjkimage.c deleted file mode 100644 index 038e089a7f0492517e33fbf87568a05bfa31482f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/mjkimage.c +++ /dev/null @@ -1,13244 +0,0 @@ -const int mjk_depth = 3; -const int mjk_height = 256; -const int mjk_width = 256; -const unsigned char mjk_image[]={ -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,185,184, -184,185,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,179,179,176,177,166,115, -208,175,109,217,183,134,200,189,152,182,202,162,175,216, -173,172,228,189,169,236,202,166,241,211,163,246,216,162, -249,222,159,249,222,155,250,220,152,250,218,151,249,217, -150,247,217,148,243,219,142,242,217,138,242,216,136,242, -215,137,242,215,138,241,215,139,241,214,139,241,214,139, -241,214,140,240,216,141,242,217,140,242,216,140,241,216, -142,240,217,142,239,217,145,241,217,146,241,217,145,241, -217,146,243,217,143,242,217,143,244,217,145,244,217,144, -245,217,144,246,218,141,245,218,141,246,217,143,245,217, -141,243,217,140,242,217,139,240,215,137,237,214,139,236, -214,140,237,215,141,239,214,147,243,216,149,246,219,149, -246,219,148,245,218,148,245,218,148,244,217,147,244,217, -148,244,218,148,246,218,146,247,218,143,248,217,141,247, -216,141,247,216,143,246,216,140,244,216,140,244,216,138, -246,216,137,245,215,136,244,215,131,241,213,133,229,215, -142,230,202,156,246,199,158,250,207,151,252,214,137,248, -212,126,239,209,118,225,209,117,213,206,122,205,192,130, -199,173,138,197,156,143,202,149,144,205,143,147,207,144, -147,209,148,144,213,154,145,217,159,145,222,163,146,225, -168,145,231,179,145,235,188,145,238,194,144,240,199,143, -240,204,144,241,210,141,242,215,140,244,215,140,244,215, -142,244,216,144,245,216,145,246,217,144,249,217,143,247, -217,118,230,213,34,170,198,1,98,115,3,79,72,21,76,61, -33,66,62,33,56,65,26,48,63,17,44,54,13,44,46,15,44,45, -16,45,43,19,46,40,22,46,36,23,47,35,24,48,34,23,48,34, -25,48,38,25,47,42,24,47,38,24,48,38,24,48,38,23,47,40, -24,46,43,29,44,44,67,37,73,178,113,114,245,194,143,232, -239,174,197,254,203,183,255,210,171,255,220,156,254,220, -149,251,217,143,249,216,140,247,215,139,245,215,136,242, -215,133,240,215,132,239,215,130,239,213,131,237,212,132, -237,206,135,239,204,136,236,209,138,238,209,140,241,210, -143,244,216,145,244,216,152,247,217,168,254,218,173,255, -219,166,255,215,156,255,209,146,255,204,137,255,201,131, -255,199,126,255,209,134,255,213,148,255,216,157,255,219, -162,255,220,162,255,221,163,255,222,165,255,223,168,255, -224,168,255,224,167,255,222,167,255,222,163,255,222,165, -255,223,166,255,224,161,255,223,160,255,222,159,255,222, -159,255,222,163,255,222,162,255,222,161,255,222,159,255, -221,158,255,220,157,255,220,158,255,220,159,255,221,160, -255,221,159,255,221,160,255,221,161,255,221,161,255,222, -161,255,222,159,255,220,157,255,219,156,254,219,155,254, -220,153,254,219,152,252,218,148,251,218,148,251,218,149, -250,219,148,250,218,147,251,218,147,252,218,148,251,218, -149,252,218,146,251,217,146,249,217,146,248,218,147,248, -218,146,247,217,146,247,218,149,249,218,149,248,218,148, -247,217,150,247,218,148,249,218,143,246,218,139,243,217, -136,241,216,135,240,214,136,240,211,139,242,209,142,245, -210,145,245,216,144,245,218,141,245,218,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,182,182,181,182,169,158,194, -177,122,195,197,86,178,215,68,166,223,90,160,235,106,159, -241,139,157,245,173,155,246,200,155,249,222,152,250,238, -150,250,249,146,248,254,145,247,255,147,245,255,151,249, -255,147,249,255,141,247,255,135,243,255,133,238,255,136, -236,255,136,237,255,136,237,255,135,237,255,136,239,254, -137,239,251,136,238,252,136,237,254,140,238,255,140,237, -254,142,238,255,142,239,255,142,239,255,142,238,255,141, -239,255,140,240,255,141,241,255,141,243,253,139,244,255, -138,244,255,137,243,255,140,242,255,139,240,255,138,239, -255,136,236,255,133,233,255,134,231,255,136,231,255,139, -235,255,143,238,255,146,243,255,145,244,255,144,242,255, -144,242,255,144,243,255,143,244,255,143,243,255,145,245, -255,142,245,255,139,245,255,136,244,255,135,243,255,137, -242,255,137,242,255,137,243,255,135,243,255,133,241,255, -131,238,255,123,231,255,130,230,218,146,237,221,155,245, -240,153,246,253,141,244,255,125,238,255,112,227,252,107, -218,232,111,212,203,119,208,179,129,207,155,138,207,152, -142,210,153,142,210,154,146,213,157,145,215,167,145,219, -175,146,222,189,146,224,203,147,229,213,144,233,224,142, -234,233,142,236,243,142,237,251,141,237,254,142,239,255, -140,240,255,136,240,255,137,240,255,139,240,255,139,241, -255,137,240,255,138,246,255,138,246,255,131,246,255,92, -227,246,9,124,221,1,81,167,29,85,123,62,103,85,70,109, -46,60,101,17,43,87,6,29,73,15,20,58,29,17,49,42,18,44, -52,19,41,59,19,40,60,21,41,59,19,41,57,18,41,56,20,42, -54,20,41,53,19,42,51,19,43,49,19,43,45,22,46,36,35,56, -14,115,94,0,232,186,84,255,222,157,225,244,198,191,255, -222,176,255,233,166,255,251,152,254,255,144,251,255,140, -250,255,137,246,255,136,244,255,135,242,255,132,239,255, -131,236,255,126,233,255,128,230,255,128,230,255,130,231, -255,133,231,255,134,233,249,134,233,249,136,236,252,137, -237,253,143,241,255,155,249,255,164,255,255,163,255,251, -154,255,246,143,255,242,134,255,239,128,255,237,126,255, -234,128,255,244,141,255,255,151,255,255,157,255,255,158, -255,255,159,255,255,163,255,252,166,255,251,165,255,249, -164,255,250,162,255,251,160,255,251,163,255,254,162,255, -254,157,255,255,157,255,255,155,255,255,155,255,255,159, -255,255,159,255,255,158,255,255,155,255,255,154,255,255, -152,255,255,151,255,255,151,255,255,153,255,255,155,255, -255,155,255,255,154,255,255,156,255,255,157,255,255,155, -255,255,154,255,255,153,255,255,152,255,255,149,255,255, -147,252,255,144,251,255,143,249,255,145,249,255,145,249, -255,144,250,255,143,250,255,144,250,255,144,249,255,141, -248,255,141,247,255,142,248,255,143,249,255,143,249,255, -142,248,255,145,248,255,146,246,255,145,245,255,147,246, -255,145,247,255,141,243,255,138,239,255,134,234,255,133, -233,255,133,234,253,134,237,249,137,239,252,141,241,254, -142,244,255,139,243,255,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,184,179,180,167,178,181, -140,183,185,110,186,189,106,188,193,109,197,200,130,203, -208,165,193,214,191,179,226,215,169,234,232,163,238,245, -158,240,254,151,240,255,146,239,255,154,246,255,155,247, -255,151,250,255,144,249,255,140,244,255,137,239,255,134, -237,255,132,237,255,130,236,255,133,238,252,139,238,250, -138,238,252,136,237,254,136,237,254,136,238,253,137,239, -254,137,239,253,137,238,255,137,238,255,137,238,255,138, -238,255,141,241,255,139,243,252,139,243,254,136,242,255, -134,242,255,133,241,255,133,240,255,134,238,255,132,236, -255,130,234,255,131,233,255,133,230,255,137,232,252,144, -235,253,147,239,254,149,241,255,145,242,255,143,242,255, -141,240,255,140,242,255,140,242,255,144,242,255,143,244, -255,139,242,255,138,242,255,136,240,255,136,241,255,134, -239,255,134,240,255,134,241,255,129,239,255,125,235,255, -122,224,255,135,226,216,147,240,221,149,246,237,144,246, -250,129,240,254,119,223,255,118,209,248,121,201,226,125, -197,200,131,198,177,138,201,156,141,204,151,144,208,153, -143,211,154,146,214,157,143,219,168,141,223,174,141,227, -189,140,228,203,139,232,213,137,236,222,135,239,231,134, -240,241,132,239,248,134,239,254,137,240,255,137,239,255, -135,241,255,134,240,255,134,238,255,137,237,255,134,238, -255,139,239,255,142,242,255,142,244,255,132,237,255,57, -173,254,2,121,189,2,109,120,40,125,88,75,132,60,88,138, -46,89,133,41,73,114,56,44,91,59,29,79,68,31,66,75,30, -54,77,26,50,74,22,47,69,18,44,62,16,39,57,14,40,53,17, -39,52,20,38,50,22,37,48,26,38,45,45,37,39,121,46,34, -204,149,54,243,234,120,214,255,162,192,255,199,173,255, -222,162,255,233,155,255,250,143,254,255,140,250,255,140, -250,255,137,247,255,135,243,255,133,241,255,130,239,255, -129,237,255,127,234,255,127,230,255,125,229,255,125,230, -255,126,231,253,132,229,246,132,229,246,134,231,247,134, -231,247,137,235,248,144,242,255,154,252,250,166,255,250, -167,255,245,162,255,241,152,255,239,144,255,237,138,255, -233,128,255,239,133,255,255,145,255,255,158,255,255,159, -255,255,161,255,255,162,255,253,162,255,251,161,255,251, -159,255,250,157,255,250,156,255,251,158,255,252,158,255, -253,154,255,255,155,255,255,157,255,255,157,255,255,160, -255,255,162,255,255,159,255,255,157,255,255,151,255,255, -150,255,255,149,255,255,150,255,255,153,255,255,153,255, -255,154,255,255,154,255,255,154,255,255,155,255,255,151, -255,255,149,255,255,151,255,255,152,254,255,147,254,255, -145,253,255,143,251,255,142,249,255,145,249,255,145,249, -255,145,248,255,145,248,255,145,247,255,146,246,255,143, -244,255,142,244,255,142,248,255,142,249,255,143,247,255, -142,246,255,142,248,255,143,248,255,141,246,255,144,245, -255,142,246,255,137,245,255,133,241,255,129,237,255,128, -234,255,129,233,252,134,237,248,135,238,249,139,241,253, -141,242,254,145,240,255,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,184,184,184,182,180,180,178,177,170,178,179,151,188, -200,120,187,226,77,174,239,110,164,243,155,159,245,189, -156,246,214,149,244,228,145,243,239,152,244,255,155,250, -255,153,254,255,147,253,255,146,251,255,143,248,255,140, -246,255,138,244,255,135,240,255,136,237,255,140,236,255, -139,236,255,137,236,255,136,236,255,138,238,255,138,237, -255,138,237,255,139,238,255,138,237,255,139,238,255,140, -241,255,140,240,255,139,243,255,139,242,255,137,242,255, -134,240,255,133,241,255,133,240,255,134,239,255,133,238, -255,132,236,255,131,235,252,133,233,249,137,233,246,144, -237,246,147,239,248,149,239,255,145,242,255,142,241,255, -142,240,255,142,242,255,140,242,255,145,243,255,143,243, -255,140,242,255,137,241,255,138,241,255,137,240,255,135, -239,255,136,240,255,135,242,255,129,239,255,124,233,255, -123,231,226,140,231,223,150,240,240,148,241,254,141,238, -255,123,233,255,111,221,234,113,212,206,119,207,182,126, -206,162,135,207,151,143,208,154,145,207,156,149,211,165, -148,213,170,151,216,179,148,221,191,147,224,205,146,226, -222,145,228,234,144,233,239,141,235,251,137,237,253,134, -239,253,134,240,254,135,239,255,137,239,255,138,241,255, -134,240,255,135,242,255,135,240,255,138,239,255,135,239, -255,139,240,254,144,246,254,145,249,255,141,248,255,109, -238,255,29,165,234,1,105,177,39,114,147,79,127,111,95, -136,95,102,135,114,95,132,102,71,118,89,53,106,83,57,97, -78,57,89,73,51,82,73,45,74,68,37,67,55,31,61,39,21,51, -38,19,44,40,21,41,42,25,42,36,30,49,20,61,66,2,184, -127,6,252,202,104,250,234,168,215,249,201,193,255,215, -173,255,226,161,255,244,154,255,255,145,255,255,142,252, -255,140,249,255,139,248,255,137,246,255,134,242,255,131, -240,255,129,237,255,128,234,255,128,232,255,127,232,255, -126,232,255,126,232,247,132,230,240,134,232,242,134,232, -246,134,231,248,135,232,248,139,236,253,147,243,255,158, -253,255,167,255,254,162,255,251,152,255,244,144,255,240, -139,255,236,128,255,250,131,255,255,144,255,255,157,255, -255,159,255,255,162,255,251,163,255,245,164,255,242,163, -255,239,160,255,241,157,255,246,155,255,250,158,255,255, -156,255,255,152,255,255,155,255,255,157,255,255,158,255, -255,161,255,255,162,255,254,160,255,251,158,255,255,153, -255,255,151,255,255,150,255,255,151,255,255,153,255,255, -154,255,255,153,255,255,154,255,255,155,255,255,156,255, -255,153,255,255,151,255,255,151,255,255,153,255,255,150, -255,255,147,254,255,145,254,255,143,252,255,146,251,255, -144,249,255,144,249,255,144,249,255,145,248,255,145,246, -255,144,246,255,144,246,255,143,246,255,142,247,255,144, -245,255,143,245,255,143,247,255,143,247,255,142,247,255, -145,247,255,144,247,255,139,247,255,134,244,255,130,240, -255,129,237,255,132,236,253,134,237,249,137,240,245,139, -243,243,143,245,246,148,244,252,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,182,182, -179,178,180,162,186,188,123,213,203,113,206,208,143,190, -218,175,175,227,202,161,233,222,153,236,238,148,239,250, -151,246,252,153,250,255,152,250,255,148,248,255,146,247, -255,150,248,255,151,248,255,144,244,255,139,242,255,136, -241,255,133,240,255,131,238,255,132,238,255,134,238,255, -135,238,255,135,238,255,134,237,255,135,237,255,134,237, -255,138,240,255,139,240,255,135,240,253,136,241,255,135, -238,255,134,237,255,135,237,255,136,237,255,136,236,255, -134,234,254,132,234,253,130,235,251,131,233,249,133,233, -245,140,236,244,146,239,248,148,239,255,141,242,255,140, -243,255,140,242,255,139,241,255,139,241,255,142,242,255, -140,243,255,138,241,255,137,240,255,137,239,255,138,238, -255,136,239,255,136,240,255,135,238,255,128,234,255,118, -227,254,134,223,220,140,234,225,142,242,240,135,241,253, -126,235,255,119,220,252,119,208,225,122,202,198,127,201, -178,133,203,161,139,209,154,142,209,156,143,211,160,143, -217,170,141,219,174,142,222,183,139,228,197,139,230,210, -140,231,225,138,231,235,137,234,240,136,234,251,134,235, -252,134,235,251,136,235,253,137,233,253,138,232,255,136, -234,255,134,235,255,135,236,255,136,237,255,137,237,255, -136,237,255,139,238,253,146,243,252,148,248,255,147,248, -255,142,246,255,90,204,254,27,145,216,22,131,158,61,147, -123,92,147,101,94,134,110,84,136,100,73,129,96,60,119, -93,52,112,88,54,102,79,51,96,80,47,89,76,42,83,66,43, -80,57,32,67,54,25,57,51,25,49,48,38,43,37,79,47,21, -159,94,21,231,207,50,226,246,129,208,252,177,189,255,204, -181,255,218,166,255,229,156,255,245,150,255,255,147,255, -255,145,252,255,142,250,255,138,249,255,137,247,255,135, -244,255,134,241,255,132,239,255,126,237,255,124,235,255, -123,233,255,122,230,255,122,231,246,124,231,240,127,232, -241,128,233,244,127,232,244,132,232,244,133,232,246,137, -237,248,144,245,249,158,255,252,167,255,251,167,255,246, -157,255,240,152,255,237,139,255,250,133,254,255,144,255, -255,157,255,255,160,255,255,163,255,252,164,255,246,164, -255,241,164,255,239,160,255,243,156,255,247,154,255,251, -154,255,254,155,255,255,155,255,255,155,255,255,157,255, -255,158,255,255,157,255,255,158,255,254,159,255,252,155, -255,255,149,255,255,148,255,255,149,255,255,149,255,255, -152,255,255,151,255,255,154,255,255,155,255,255,156,255, -255,156,255,255,155,255,255,152,255,255,151,255,255,152, -255,255,149,254,255,148,254,255,147,252,255,146,251,255, -149,249,255,148,249,255,147,248,255,145,248,255,143,247, -255,143,246,255,143,245,255,142,244,255,144,244,255,145, -245,255,145,243,255,146,244,255,145,244,255,145,244,255, -146,245,255,150,246,255,146,246,255,140,245,255,135,242, -255,130,238,255,128,236,255,129,235,253,134,235,248,136, -238,245,140,242,245,142,244,246,146,243,251,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,183,182,179,187,179,151,203, -199,122,196,216,115,182,230,128,166,238,154,156,240,188, -148,241,211,148,244,225,151,249,238,151,249,247,149,249, -254,145,248,255,149,247,255,154,251,255,153,253,255,149, -251,255,145,250,255,138,246,255,135,242,255,135,240,255, -135,238,255,135,238,255,135,237,255,136,239,255,135,238, -255,134,237,255,136,238,254,137,239,255,135,238,255,136, -237,255,136,236,255,136,236,255,136,236,255,135,234,255, -135,234,255,135,234,255,133,234,255,131,234,254,132,233, -250,134,233,244,140,236,243,145,239,243,149,242,250,143, -242,255,139,241,255,139,241,255,138,241,255,139,240,255, -142,242,255,141,243,255,139,242,255,138,240,255,138,240, -255,139,241,255,136,239,255,135,238,255,133,235,255,125, -230,255,116,226,248,143,227,219,144,236,234,140,239,249, -131,236,255,118,225,249,116,214,219,120,208,189,128,206, -170,136,208,163,140,209,160,143,210,162,147,211,172,147, -216,172,146,220,181,145,222,189,145,226,197,142,230,207, -141,231,216,141,232,227,139,232,235,137,233,240,135,234, -244,134,233,248,133,233,248,133,231,245,134,231,244,137, -232,246,136,234,244,134,235,246,135,235,248,135,236,249, -136,236,252,137,238,247,141,240,247,146,244,253,148,248, -255,150,252,255,149,251,255,129,242,255,84,204,251,36, -151,216,64,157,195,106,166,148,118,164,111,102,157,91,87, -143,81,75,132,83,62,120,93,63,107,100,62,103,93,57,97, -83,50,90,70,47,83,65,39,73,69,34,64,63,38,62,35,63,67, -14,145,106,9,242,173,44,243,232,125,219,247,179,198,253, -214,183,255,232,174,255,243,160,255,249,153,255,255,149, -255,255,147,255,255,146,253,255,145,252,255,141,251,255, -139,249,255,138,246,255,136,243,255,134,243,255,127,239, -255,126,237,255,125,233,255,124,231,255,124,230,255,126, -232,247,127,233,242,128,234,240,127,233,236,130,233,232, -132,235,234,133,236,241,138,239,247,150,248,251,165,255, -253,170,255,250,161,255,242,157,255,239,149,255,239,139, -254,244,142,253,255,157,255,255,160,255,255,164,255,255, -164,255,249,166,255,245,164,255,241,160,255,240,157,255, -242,155,255,247,156,255,251,155,255,251,155,255,255,157, -255,255,157,255,255,157,255,255,158,255,255,159,255,255, -159,255,255,157,255,255,153,255,255,150,255,255,151,255, -255,151,255,255,151,255,255,152,255,255,154,255,255,155, -255,255,155,255,255,156,255,255,154,255,255,153,255,255, -152,255,255,152,254,255,150,255,255,149,255,255,148,253, -255,148,250,255,150,250,255,150,250,255,150,250,255,147, -249,255,145,249,255,143,248,255,142,247,255,142,247,255, -144,246,255,145,246,255,146,244,255,146,244,255,145,245, -255,146,245,255,147,245,255,151,246,255,148,248,255,140, -246,255,135,243,255,132,240,255,129,236,255,130,234,254, -135,234,251,137,237,249,141,240,250,143,243,251,148,244, -253,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -183,183,182,181,181,154,191,194,133,198,206,125,199,213, -129,190,220,158,168,228,188,159,232,210,157,238,228,152, -242,240,150,243,251,147,245,254,150,247,255,154,250,255, -155,252,255,155,253,255,154,253,255,149,253,255,145,250, -255,140,245,255,139,242,255,135,238,255,133,238,255,135, -238,255,135,237,255,134,236,255,137,236,253,138,235,254, -135,234,255,136,234,255,135,233,255,137,233,255,137,234, -255,136,233,255,135,234,255,134,234,255,133,233,255,133, -233,255,133,232,251,134,232,245,140,235,242,145,239,243, -148,240,250,143,240,255,140,240,255,140,241,255,139,240, -255,140,239,255,142,240,255,143,242,255,141,241,255,139, -239,255,140,239,255,141,240,255,138,238,255,136,237,255, -132,233,255,122,226,255,126,221,240,144,230,223,144,236, -238,137,235,251,124,225,251,119,214,238,123,207,201,128, -206,176,133,207,165,137,209,162,140,212,165,142,214,173, -143,213,185,142,218,184,144,222,194,143,222,201,143,224, -209,142,226,216,138,230,223,137,231,234,134,231,239,134, -231,240,135,229,241,135,228,244,133,227,243,133,228,241, -133,229,240,133,230,239,133,232,235,132,234,240,132,234, -244,133,233,246,136,232,246,138,235,241,140,240,244,144, -244,252,145,247,254,149,249,255,151,250,255,143,247,255, -119,231,255,67,180,248,59,161,217,93,171,162,127,184,122, -130,185,115,120,171,99,108,157,92,92,139,98,82,122,108, -75,113,95,69,106,83,63,101,72,57,97,68,42,87,76,44,73, -61,63,69,28,126,112,19,198,175,44,226,226,107,212,242, -183,193,248,214,180,252,236,170,255,248,160,255,252,154, -255,255,148,255,255,146,255,255,144,254,255,147,252,255, -148,252,255,145,252,255,143,251,255,140,249,255,138,247, -255,136,245,255,130,240,255,127,238,255,126,235,255,126, -232,255,127,230,255,126,230,248,126,231,243,127,231,240, -128,231,236,130,232,236,130,234,234,132,234,238,135,235, -243,142,241,247,156,252,249,170,255,249,170,255,245,160, -255,241,154,255,238,141,255,242,130,252,255,147,254,255, -154,255,255,161,255,255,163,255,252,166,255,249,166,255, -243,165,255,239,162,255,241,158,255,244,158,255,247,160, -255,251,159,255,255,159,255,255,158,255,255,157,255,255, -159,255,255,161,255,255,162,255,255,159,255,255,155,255, -255,153,255,255,152,255,255,151,255,255,151,255,255,151, -255,255,152,255,255,153,255,255,155,255,255,156,255,255, -156,255,255,155,255,255,154,255,255,153,255,255,150,255, -255,150,253,255,151,251,255,150,249,255,152,250,255,151, -249,255,150,250,255,148,249,255,146,247,255,145,246,255, -144,245,255,145,246,255,146,246,255,145,247,255,146,247, -255,145,247,255,143,247,255,144,246,255,146,247,255,148, -246,255,144,247,255,141,247,255,137,243,255,134,239,255, -133,236,255,133,234,254,135,233,251,137,236,249,141,240, -250,144,241,252,148,242,253,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,184,183,183,183, -181,185,185,174,193,190,155,203,201,142,186,218,139,172, -227,166,161,234,194,153,237,215,150,238,232,147,242,245, -150,246,248,154,250,250,157,253,253,158,254,255,155,253, -255,151,254,255,148,254,255,147,252,255,146,250,255,143, -247,255,135,242,255,134,240,255,133,237,255,133,235,255, -137,235,255,138,232,255,135,233,255,134,234,255,133,233, -255,138,231,253,139,233,253,138,234,253,138,235,254,135, -233,255,134,231,255,135,231,255,135,231,252,135,230,248, -139,232,244,146,236,244,149,238,249,145,237,254,142,238, -255,141,240,255,140,238,255,141,237,255,142,240,255,141, -241,255,140,240,255,139,239,255,139,239,255,140,240,255, -138,237,255,132,236,255,124,231,254,119,225,243,136,224, -223,143,234,223,137,236,241,130,232,249,118,217,236,120, -208,215,129,206,186,134,208,175,137,211,171,139,213,172, -141,215,177,142,217,185,142,218,191,140,220,194,143,224, -203,142,225,211,143,226,221,140,228,227,137,230,232,135, -229,239,133,227,239,133,226,237,135,225,241,136,225,240, -136,226,239,136,227,241,135,228,241,134,229,238,134,231, -233,131,232,239,130,231,242,131,230,242,138,231,240,140, -235,242,139,239,246,140,243,253,140,245,255,144,248,255, -143,247,255,138,246,255,129,240,255,102,215,250,75,183, -212,91,184,168,122,193,146,127,195,142,126,190,129,125, -188,123,122,179,124,110,163,119,96,150,96,91,138,68,87, -127,43,82,119,41,57,106,71,79,85,41,123,99,21,201,176, -76,219,220,121,202,241,170,182,249,216,174,253,237,166, -254,250,158,254,255,154,254,255,149,255,255,145,254,255, -145,254,255,145,253,255,148,251,255,150,251,255,148,251, -255,146,250,255,143,250,255,140,248,255,138,247,255,134, -242,255,129,240,255,129,238,255,129,235,255,127,234,255, -127,231,255,126,231,251,128,230,248,129,231,245,129,231, -245,129,231,240,130,232,239,134,233,244,137,235,248,145, -241,253,162,252,254,172,255,251,161,255,246,154,255,242, -142,255,245,125,254,255,138,250,255,147,254,255,157,255, -255,162,255,255,164,255,254,169,255,247,168,255,242,166, -255,242,162,255,243,161,255,245,162,255,248,162,255,252, -161,255,255,159,255,255,158,255,255,159,255,255,157,255, -255,161,255,255,159,255,255,155,255,255,152,255,255,151, -255,255,151,255,255,152,255,255,152,255,255,153,255,255, -154,255,255,156,255,255,157,255,255,156,255,255,156,255, -255,155,255,255,153,255,255,150,255,255,150,253,255,151, -253,255,151,251,255,152,251,255,150,251,255,150,251,255, -149,250,255,147,247,255,146,245,255,146,245,255,149,246, -255,150,246,255,149,246,255,146,247,255,146,247,255,145, -246,255,146,247,255,147,248,255,146,247,255,145,249,255, -143,247,255,140,245,255,135,241,255,132,238,255,131,236, -255,134,235,255,136,236,255,144,239,253,149,241,251,151, -242,255,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,182, -182,179,182,182,157,186,203,127,186,213,127,180,225,135, -170,230,164,162,235,194,152,237,224,151,241,233,155,246, -243,159,252,251,162,254,254,159,254,255,154,253,255,150, -252,255,150,251,255,150,252,255,150,253,255,143,248,255, -141,245,255,139,241,255,137,238,255,136,237,255,137,235, -255,134,234,255,134,233,255,132,231,254,138,230,253,140, -233,253,139,234,253,139,234,254,138,233,255,136,232,255, -136,231,255,136,231,254,136,232,251,140,232,248,145,235, -249,149,238,250,149,239,255,143,238,255,140,239,255,138, -238,255,140,237,255,141,240,255,141,241,255,140,240,255, -140,240,255,139,239,255,138,240,255,135,237,255,129,234, -255,121,228,253,120,224,242,139,228,215,142,234,229,132, -231,249,123,222,236,118,212,208,125,210,188,134,210,173, -137,211,170,139,213,172,140,214,175,141,215,179,143,218, -183,142,219,189,142,221,193,143,224,200,142,227,209,144, -227,218,140,228,227,138,228,232,137,228,232,135,226,230, -136,225,230,137,226,231,136,226,228,137,227,229,136,227, -232,135,227,237,134,228,239,134,229,234,132,230,235,133, -230,234,134,231,233,140,232,235,141,234,245,139,237,250, -138,239,253,137,240,254,137,241,254,136,239,255,131,235, -255,124,230,255,109,214,250,95,192,236,97,177,223,106, -164,217,105,160,183,108,160,159,108,159,144,108,157,134, -107,150,134,106,151,120,117,154,94,133,160,68,137,155,48, -100,129,70,128,124,28,187,165,55,221,209,118,212,227,169, -189,237,209,172,244,234,167,249,248,161,251,255,154,250, -255,150,250,255,146,252,255,145,252,255,146,252,255,146, -251,255,145,249,255,148,250,255,148,250,255,146,251,255, -144,251,255,142,250,255,140,248,255,138,245,255,133,241, -255,132,239,255,131,238,255,130,237,255,127,233,255,128, -233,255,130,232,255,130,232,254,130,231,253,131,231,252, -131,231,249,132,231,248,134,231,248,138,235,252,150,245, -254,166,255,254,163,255,252,159,255,245,150,255,244,134, -255,247,132,244,255,141,248,255,150,253,255,157,255,255, -163,255,255,169,255,253,168,255,248,168,255,246,165,255, -244,163,255,243,162,255,244,161,255,248,158,255,254,158, -255,255,160,255,255,161,255,255,158,255,255,162,255,255, -161,255,255,156,255,255,154,255,255,155,255,255,152,255, -255,152,255,255,154,255,255,155,255,255,156,255,255,157, -255,255,157,255,255,157,255,255,157,255,255,155,255,255, -153,255,255,151,255,255,151,255,255,151,255,255,152,253, -255,151,252,255,147,252,255,148,251,255,149,250,255,148, -249,255,147,247,255,147,246,255,149,246,255,151,248,255, -151,249,255,147,247,255,147,246,255,146,247,255,147,248, -255,147,248,255,149,249,255,149,249,255,147,247,255,144, -246,255,137,243,255,134,241,255,132,237,255,133,234,255, -136,236,255,145,241,253,149,243,252,150,242,254,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,184, -183,184,184,177,185,184,167,194,190,152,202,199,147,194, -210,165,176,222,196,165,230,211,163,236,226,163,242,240, -163,246,249,159,249,253,154,249,254,150,249,255,150,251, -255,149,251,255,147,251,255,147,249,255,153,249,255,153, -248,255,145,243,255,139,240,254,136,237,255,134,234,255, -134,231,255,131,229,255,133,232,255,134,233,255,134,235, -255,135,236,255,132,235,255,130,234,255,131,234,254,133, -231,254,137,230,248,137,231,246,138,235,248,142,240,250, -143,240,253,140,239,254,140,238,255,140,237,254,142,237, -255,140,238,255,139,240,255,139,240,255,139,238,255,136, -238,255,132,240,255,126,237,255,123,232,255,121,222,251, -127,219,242,140,229,221,133,232,231,125,222,242,122,210, -223,128,204,197,134,205,179,137,210,173,137,213,172,138, -214,174,140,215,177,141,216,180,144,218,183,143,218,191, -144,219,193,144,223,202,142,224,209,143,225,214,137,226, -225,134,224,229,134,224,226,135,225,225,136,223,224,135, -225,224,135,225,223,136,226,225,133,227,228,131,228,233, -129,226,233,130,225,228,132,224,227,135,225,226,137,226, -227,139,230,228,139,229,237,139,230,241,138,231,248,135, -230,249,132,229,251,117,229,254,100,220,254,87,203,251, -77,178,231,72,151,209,69,121,190,70,91,170,77,86,135,84, -86,110,88,87,97,90,90,90,86,88,93,84,87,83,93,94,67, -116,116,61,142,140,67,147,144,92,161,165,63,188,204,80, -194,225,119,183,233,161,172,239,203,159,244,230,153,247, -244,147,248,255,141,247,255,144,244,255,143,247,255,145, -248,255,144,249,255,143,250,255,145,249,255,146,249,255, -145,249,255,144,249,255,142,250,255,140,249,255,139,248, -255,137,246,255,134,243,255,133,240,255,132,239,255,131, -237,255,128,235,255,127,235,255,128,234,255,130,232,254, -131,232,254,131,232,255,131,231,253,131,231,252,131,231, -249,133,233,249,141,238,251,154,250,252,168,255,253,168, -255,247,163,255,245,151,255,246,136,241,255,137,242,255, -145,245,255,154,251,255,159,255,255,168,255,255,169,255, -249,170,255,247,169,255,245,169,255,245,165,255,244,161, -255,247,155,255,253,154,255,255,155,255,255,155,255,255, -156,255,255,158,255,255,158,255,255,155,255,255,154,255, -255,156,254,255,155,255,255,155,255,255,155,255,255,156, -255,255,157,255,255,159,255,255,159,255,255,160,255,255, -160,255,255,157,255,255,154,254,255,153,253,255,153,254, -255,153,255,255,153,255,255,151,253,255,150,251,255,152, -250,255,151,250,255,150,249,255,149,248,255,148,248,255, -151,247,255,152,248,255,151,248,255,150,246,255,150,245, -255,148,246,255,148,246,255,148,245,255,151,247,255,149, -248,255,144,247,255,144,246,255,141,242,255,139,239,255, -136,237,255,134,235,255,137,236,254,142,239,253,144,242, -253,146,242,255,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,184,184,185,184,184,185, -184,184,185,184,184,185,184,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,183, -182,178,185,182,151,185,198,131,174,219,129,165,234,129, -162,242,156,161,246,187,160,247,214,158,250,237,154,251, -250,151,251,255,149,251,255,147,250,255,145,249,255,147, -250,255,155,253,255,159,255,255,154,254,255,151,253,255, -144,247,255,139,241,255,137,235,255,136,233,255,137,236, -255,135,235,255,135,235,255,135,236,255,131,234,255,131, -234,255,130,233,255,132,229,254,138,231,251,139,232,248, -137,235,246,140,240,238,144,243,249,139,241,253,139,238, -255,141,236,255,142,234,255,140,236,255,138,238,255,138, -238,255,139,238,255,137,239,255,131,239,255,125,235,255, -119,227,255,120,223,241,130,225,227,139,228,229,128,225, -243,120,221,209,121,213,183,130,211,168,137,210,169,141, -215,176,140,216,183,140,216,188,142,216,189,144,217,191, -146,218,197,146,217,208,146,219,204,146,223,210,144,224, -218,144,224,226,137,225,226,134,224,227,134,224,223,133, -223,220,136,221,225,136,225,231,135,224,227,135,226,225, -131,225,223,128,226,223,127,225,220,128,226,206,132,227, -207,136,227,214,135,226,217,134,228,213,136,226,225,136, -229,220,133,226,232,125,217,252,115,203,252,83,190,252, -49,170,218,26,147,170,20,128,133,27,114,111,42,100,97, -61,89,82,73,85,81,79,81,76,84,82,76,84,81,76,80,79,74, -77,76,71,77,73,64,83,74,65,94,83,77,132,125,94,157,155, -96,179,189,100,187,217,107,180,231,125,171,239,165,158, -243,211,149,242,235,143,244,252,137,244,255,142,245,255, -142,246,255,142,246,255,143,249,255,141,250,255,143,248, -255,145,249,255,145,249,255,145,249,255,144,249,255,142, -249,255,141,249,255,138,245,255,136,243,255,136,242,255, -135,241,255,136,240,255,132,240,255,131,238,255,132,234, -255,135,233,255,136,236,255,135,235,255,134,233,255,135, -234,255,134,233,255,134,233,255,138,234,255,146,240,255, -161,254,255,168,255,255,165,255,253,157,255,242,145,252, -255,143,249,255,144,243,255,150,243,255,155,248,255,166, -255,255,168,255,255,170,255,255,171,255,251,170,255,245, -168,255,243,162,255,244,158,255,248,155,255,255,153,255, -255,156,255,255,156,255,255,157,255,255,158,255,255,156, -255,255,157,255,255,157,255,255,157,255,255,157,255,255, -156,255,255,156,255,255,158,255,255,160,255,255,161,255, -255,163,255,255,162,255,255,156,255,255,155,255,255,156, -255,255,155,255,255,154,255,255,153,255,255,152,254,255, -153,253,255,155,253,255,153,251,255,150,249,255,150,250, -255,148,249,255,153,249,255,155,249,255,154,249,255,153, -247,255,153,246,255,151,246,255,150,246,255,150,246,255, -154,247,255,150,248,255,146,249,255,144,247,255,143,244, -255,140,241,255,139,240,255,136,238,254,139,239,253,145, -242,253,146,243,254,147,244,255,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -185,184,183,185,183,182,185,182,182,185,183,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,182,182,182,179,178,184, -168,178,192,143,195,200,149,204,210,180,192,220,206,177, -231,230,166,237,246,159,241,254,154,244,255,150,244,255, -150,242,255,152,247,255,159,252,255,162,254,255,158,255, -255,155,255,255,153,253,255,146,250,255,142,244,255,135, -238,255,134,237,255,132,235,255,133,234,255,135,235,255, -133,232,255,132,230,255,134,228,255,136,226,254,137,229, -249,138,231,247,138,233,244,145,236,236,147,238,247,142, -238,252,138,238,255,135,236,255,135,235,255,138,236,255, -140,237,255,141,238,255,139,237,255,136,235,255,131,233, -255,125,229,255,120,223,255,123,219,240,129,224,226,130, -226,224,129,212,235,130,203,201,134,204,181,139,210,170, -141,212,171,142,214,175,141,216,183,138,215,187,137,216, -188,139,218,189,143,219,196,139,219,206,139,224,204,136, -224,208,134,225,215,132,223,221,132,220,220,132,218,222, -132,216,217,133,217,216,135,216,220,136,215,224,136,215, -221,136,215,219,136,214,217,136,210,215,137,208,211,139, -212,200,137,216,202,137,218,209,135,217,211,140,217,208, -131,217,217,116,219,208,102,216,214,84,192,222,75,144, -232,73,99,198,71,82,167,72,77,140,76,78,121,76,78,105, -75,78,94,76,80,82,76,78,77,77,78,73,79,78,72,80,77,72, -80,75,71,77,75,69,77,74,65,80,73,63,82,73,66,95,89,57, -116,114,54,147,143,58,191,182,85,213,198,114,215,205,158, -189,214,203,174,218,227,161,221,242,155,226,251,150,231, -255,144,234,255,143,238,255,145,242,255,145,243,255,147, -244,255,146,247,255,145,246,255,146,246,255,145,247,255, -143,248,255,142,248,255,142,245,255,140,243,255,137,243, -255,134,244,255,133,243,255,135,242,255,133,240,255,133, -238,255,132,236,255,133,238,255,135,236,255,136,237,255, -136,237,255,133,236,255,131,235,254,131,235,255,133,237, -255,145,247,255,166,255,254,171,255,252,169,255,244,152, -255,255,151,253,255,149,249,255,145,244,255,147,246,255, -154,251,255,159,255,255,165,255,255,169,255,250,171,255, -245,170,255,242,164,255,244,160,255,248,156,255,255,154, -255,255,156,255,255,157,255,255,159,255,255,161,255,255, -159,255,255,156,255,255,153,255,255,155,255,255,157,255, -255,157,255,255,157,255,255,158,255,255,156,255,255,157, -255,255,156,255,255,156,255,255,155,255,255,158,255,255, -158,255,255,156,255,255,152,255,255,152,255,255,151,253, -255,152,254,255,152,255,255,150,252,255,149,250,255,151, -250,255,151,251,255,151,251,255,150,250,255,149,248,255, -148,247,255,153,246,255,150,248,255,149,248,255,149,248, -255,150,249,255,150,250,255,148,248,255,146,246,255,145, -245,255,139,242,255,136,240,255,136,239,255,138,242,254, -140,244,252,142,243,252,149,244,255,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,184,183,185,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,182,183,182,178,178,173,185,193,147,182,226,94, -172,244,121,162,249,162,156,250,199,151,248,226,147,245, -243,149,245,255,151,249,255,158,253,255,161,255,255,158, -255,255,154,255,255,153,254,255,150,255,255,148,253,255, -144,249,255,140,246,255,136,239,255,134,235,255,135,235, -255,133,233,255,132,232,255,135,232,255,138,230,254,139, -232,248,139,234,250,139,233,247,146,237,238,147,240,248, -143,240,254,139,239,255,135,236,255,136,236,255,138,237, -255,140,238,255,140,238,255,138,236,255,137,237,255,132, -235,255,125,230,255,122,228,254,126,223,238,131,225,230, -126,221,231,125,214,205,132,209,185,140,212,181,144,213, -180,146,215,185,144,215,186,143,217,187,142,219,190,141, -219,194,141,218,195,144,221,195,141,222,203,141,225,212, -137,226,212,133,226,206,131,225,202,132,223,205,133,223, -200,134,222,196,132,222,191,133,220,189,135,221,191,134, -220,190,133,218,187,133,218,183,135,218,178,137,217,174, -139,218,172,137,222,179,135,222,186,132,219,190,136,213, -207,121,199,243,94,184,242,61,163,210,25,132,153,27,111, -113,49,96,90,62,92,78,69,90,70,75,89,68,75,86,68,74, -82,71,72,79,69,73,78,66,75,78,65,76,77,64,78,78,60,79, -80,50,79,80,54,83,82,55,87,83,55,87,82,56,89,82,56,92, -83,66,108,91,80,146,123,105,184,163,116,201,200,108,180, -225,100,166,230,129,156,232,161,149,234,188,145,235,211, -140,238,228,140,241,239,142,243,247,143,245,253,144,245, -255,145,247,255,144,246,255,146,247,255,145,249,255,142, -248,255,141,249,255,142,249,255,141,249,255,140,249,255, -136,247,255,135,246,255,136,244,255,135,244,255,136,243, -255,136,241,255,135,240,255,137,241,255,138,241,255,139, -241,255,136,240,255,135,240,255,135,238,255,134,236,255, -139,238,255,159,252,255,170,255,255,170,255,250,157,255, -248,154,255,253,152,255,254,150,255,255,149,253,255,155, -254,255,157,255,255,162,255,255,169,255,255,170,255,251, -169,255,246,164,255,243,159,255,245,154,255,252,154,255, -255,155,255,255,158,255,255,160,255,255,161,255,253,158, -255,251,155,255,255,155,255,255,156,255,255,158,255,255, -157,255,255,158,255,255,157,255,255,155,255,255,156,255, -255,156,255,255,156,255,255,155,255,255,157,255,255,158, -255,255,156,255,255,152,254,255,151,254,255,152,253,255, -153,253,255,152,254,255,150,252,255,151,251,255,152,252, -255,151,252,255,151,252,255,151,252,255,150,251,255,149, -250,255,154,250,255,150,249,255,149,249,255,149,250,255, -150,251,255,149,250,255,147,249,255,147,249,255,146,248, -255,141,245,255,138,242,255,139,241,255,140,242,255,140, -242,255,142,241,255,149,241,255,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,185,184,184,185,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,181,183,177,179,185,128,206, -196,131,210,204,162,200,216,194,186,225,223,170,230,241, -159,234,252,157,241,253,158,250,255,157,254,255,155,253, -255,154,253,255,153,253,255,151,254,255,151,253,255,148, -249,255,149,250,255,141,246,255,132,240,255,128,237,255, -125,234,255,124,233,255,128,234,255,130,231,254,134,232, -247,138,233,249,136,232,244,141,237,235,143,240,247,137, -240,252,134,239,254,132,236,254,134,235,255,136,236,255, -136,236,255,136,236,255,134,234,255,134,233,255,133,231, -255,125,225,255,125,220,250,128,222,237,129,221,226,125, -213,224,131,208,203,133,210,186,134,213,180,135,216,178, -138,216,182,137,216,183,137,216,183,139,217,186,139,216, -190,141,216,191,142,220,192,138,221,199,136,220,206,137, -219,206,135,218,201,134,216,199,139,214,200,137,213,194, -138,212,190,137,211,185,140,209,183,141,209,185,140,208, -184,139,207,182,138,207,177,137,208,172,138,209,169,143, -208,167,142,209,172,133,208,174,117,209,176,90,202,180, -79,154,194,71,112,181,66,86,159,66,74,132,72,73,107,76, -77,90,76,80,78,77,84,70,77,84,66,75,81,65,72,77,67,68, -76,65,71,74,62,71,73,61,72,73,61,74,75,58,80,79,50,82, -81,55,84,81,55,87,83,55,89,84,58,90,85,59,87,83,66,87, -82,68,95,92,65,120,117,60,160,156,61,197,185,81,206,194, -121,200,202,156,182,209,183,170,214,206,155,222,222,148, -226,231,147,231,239,146,237,248,147,241,254,147,243,255, -144,244,255,144,245,255,144,246,255,143,246,255,142,247, -255,143,249,255,142,249,255,141,247,255,140,245,255,139, -245,255,137,243,255,137,243,255,138,243,255,136,242,255, -135,241,255,136,243,255,136,244,255,138,244,255,138,243, -255,138,243,255,137,241,255,133,237,255,134,237,255,145, -249,255,156,255,253,162,255,249,157,255,250,154,255,253, -157,255,255,158,255,255,155,253,255,152,253,255,153,253, -255,158,255,255,164,255,254,167,255,251,168,255,246,165, -255,243,159,255,245,154,255,251,152,255,255,154,255,255, -157,255,255,164,255,255,165,255,254,162,255,252,156,255, -254,154,255,255,155,255,255,157,255,255,155,255,255,155, -255,255,155,255,255,154,255,255,154,255,255,154,255,255, -154,255,255,153,255,255,155,255,255,155,255,255,155,255, -255,150,254,255,148,254,255,151,254,255,152,253,255,151, -251,255,150,250,255,151,250,255,151,251,255,150,252,255, -150,253,255,149,251,255,147,250,255,148,251,255,149,250, -255,147,250,255,145,249,255,146,251,255,146,251,255,145, -251,255,144,249,255,145,249,255,145,248,255,144,245,255, -142,241,255,143,239,255,143,240,255,143,239,255,143,240, -255,145,240,255,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,182,180,174,190,192, -135,192,221,111,182,240,106,168,248,136,157,246,177,154, -245,218,152,247,235,151,249,249,151,250,255,152,252,253, -152,253,255,150,254,255,149,253,255,149,252,255,151,254, -255,146,254,255,140,251,255,136,247,255,129,238,255,127, -235,255,129,232,255,133,233,255,136,233,253,140,236,254, -138,234,252,141,234,252,142,239,252,138,240,253,134,239, -254,132,237,255,134,236,255,136,237,254,136,238,254,135, -237,254,134,236,253,134,236,251,134,235,249,125,228,251, -125,226,229,129,225,227,127,221,221,124,217,204,135,216, -188,138,217,189,140,218,192,140,218,192,141,217,190,140, -217,191,140,217,189,141,218,188,141,218,188,143,218,191, -144,220,198,138,222,195,136,222,193,134,220,192,134,218, -191,132,217,190,136,214,185,136,215,181,137,215,176,136, -214,170,139,212,170,138,212,161,137,211,155,137,211,155, -138,211,158,138,212,160,138,211,162,141,206,174,137,197, -202,120,181,222,88,161,216,42,139,180,32,112,124,41,97, -95,53,90,81,63,86,72,73,84,66,77,84,68,77,83,70,75,82, -69,75,81,68,73,78,65,70,76,66,65,73,63,68,73,55,70,74, -55,71,75,54,74,75,54,79,77,56,80,79,53,84,81,55,88,84, -59,90,85,60,93,87,62,91,88,60,90,88,57,91,88,57,96,89, -62,116,100,82,158,130,112,185,172,107,192,205,96,178,223, -93,168,230,122,154,232,178,147,232,201,144,234,216,142, -238,226,143,240,238,144,243,248,143,247,253,143,249,255, -143,248,255,143,248,255,143,248,255,143,248,255,142,248, -255,142,248,255,142,247,255,141,246,255,139,246,255,139, -245,255,139,245,255,137,244,255,136,243,255,137,243,255, -138,244,255,140,246,255,141,247,255,141,247,255,139,244, -255,136,241,255,136,239,255,139,241,255,148,248,255,156, -255,255,156,255,255,153,255,255,158,255,255,162,255,254, -162,255,249,157,255,244,156,255,241,159,255,241,163,255, -243,166,255,242,167,255,240,166,255,238,159,255,241,154, -255,249,152,255,255,154,255,255,156,255,255,164,255,255, -167,255,255,162,255,252,158,255,255,154,255,255,154,255, -255,156,255,255,155,255,255,154,255,255,155,255,255,154, -255,255,154,255,255,154,255,255,154,255,255,153,255,255, -154,255,255,155,255,255,154,255,255,151,254,255,149,254, -255,151,253,255,152,253,255,151,251,255,150,249,255,151, -251,255,151,252,255,150,252,255,150,252,255,148,251,255, -147,250,255,149,251,255,149,251,255,146,250,255,145,251, -255,146,252,255,146,252,255,145,251,255,144,250,255,145, -249,255,145,248,255,144,245,255,144,244,255,145,244,255, -145,244,255,144,242,255,143,242,255,145,242,255,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,178,180,170,182,184,129,210,199, -121,224,206,136,208,212,177,179,222,213,166,230,229,158, -236,242,152,239,248,152,245,250,154,247,255,152,248,255, -153,249,255,151,250,255,153,253,255,151,252,255,148,251, -255,145,250,255,138,243,255,132,238,255,127,235,255,125, -236,255,129,238,254,133,238,253,131,236,251,129,236,250, -139,238,249,137,237,251,135,236,254,133,234,255,133,232, -255,133,234,251,133,234,251,131,233,252,129,234,252,129, -235,250,132,234,247,122,225,250,124,222,227,128,223,225, -126,218,218,132,215,204,130,220,187,133,221,189,135,221, -190,133,219,188,132,218,187,134,216,187,133,215,185,135, -215,185,136,216,186,137,218,190,135,218,193,134,219,191, -134,216,189,134,214,187,134,212,186,137,209,186,138,209, -181,138,208,177,138,207,170,137,207,163,137,204,163,139, -202,155,139,203,151,140,205,153,138,206,157,134,207,158, -127,209,158,105,205,161,88,180,167,69,133,166,64,97,163, -65,75,151,71,72,118,73,74,94,74,77,80,75,77,71,80,78, -66,79,80,66,78,79,68,77,78,68,75,77,65,73,74,63,74,71, -65,75,68,63,75,70,56,78,74,57,78,75,56,80,76,57,81,78, -56,82,80,54,85,82,55,86,82,57,88,84,59,90,88,60,90,89, -61,92,89,59,93,89,58,91,88,60,92,88,66,102,98,71,136, -130,59,183,170,67,206,189,80,211,199,117,186,209,174,168, -216,197,157,221,212,152,225,221,150,228,232,148,234,242, -147,239,248,147,243,253,145,245,255,144,245,255,144,246, -255,143,246,255,142,246,255,141,246,255,140,246,255,138, -244,255,138,245,255,139,244,255,138,243,255,136,243,255, -139,242,255,138,242,255,139,243,255,139,244,255,139,246, -255,141,248,255,141,247,255,139,243,255,135,241,255,133, -239,255,136,243,255,144,251,255,151,252,255,147,252,255, -155,254,255,165,255,255,167,255,251,163,255,249,161,255, -247,161,255,245,163,255,244,166,255,243,165,255,240,161, -255,238,158,255,242,154,255,250,150,255,255,149,254,255, -154,255,255,158,255,255,160,255,254,160,255,253,153,255, -255,150,255,255,151,255,255,153,255,255,153,255,255,152, -255,255,152,255,255,150,255,255,151,255,255,152,255,255, -153,255,255,153,255,255,152,255,255,151,255,255,150,254, -255,148,251,255,148,250,255,150,252,255,150,252,255,149, -251,255,146,248,255,149,250,255,151,251,255,152,250,255, -150,249,255,149,250,255,147,249,255,147,250,255,146,250, -255,143,249,255,144,248,255,144,248,255,147,250,255,144, -251,255,143,249,255,143,247,255,142,247,255,140,246,255, -140,245,255,142,244,255,142,244,255,141,242,255,142,242, -255,144,242,255,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,183,178,196,189,150,202,219,105,179, -234,111,165,237,151,158,241,190,149,243,219,147,242,239, -150,244,251,150,249,250,152,251,255,152,253,255,153,254, -255,152,254,255,149,254,255,145,253,255,142,252,255,138, -250,255,133,245,255,130,239,255,131,239,255,135,239,255, -133,237,255,131,234,255,140,237,255,139,238,255,137,239, -255,136,237,255,135,235,255,133,234,255,132,234,253,133, -236,253,129,235,251,128,235,249,131,234,245,123,230,233, -127,225,224,129,225,220,129,222,210,137,222,200,136,223, -208,136,220,211,138,219,211,137,219,207,135,218,202,135, -216,198,136,217,192,137,218,189,140,221,189,138,221,188, -136,221,190,133,218,188,132,217,186,134,216,185,134,213, -182,137,210,183,138,212,173,137,212,168,137,210,164,136, -209,158,136,208,146,141,207,147,142,207,153,143,207,163, -140,204,177,132,195,197,112,178,213,69,151,196,41,126, -154,35,104,113,46,94,87,60,87,75,72,83,72,75,82,70,76, -82,67,76,79,65,81,78,69,80,81,65,78,80,64,77,80,63,75, -78,59,75,78,56,77,77,53,79,76,56,80,76,54,83,79,57,83, -81,55,84,83,51,84,81,62,85,83,63,87,84,61,89,85,59,91, -86,65,92,90,65,92,91,64,94,90,64,95,91,65,93,90,62,92, -90,58,91,89,55,106,92,66,144,116,96,182,152,113,200,192, -91,183,225,85,169,232,127,158,231,165,150,229,195,148, -228,216,145,233,229,145,238,235,145,243,241,145,247,247, -145,249,251,145,249,254,143,249,255,143,248,255,143,248, -255,141,247,255,141,247,255,140,246,255,140,246,255,140, -245,255,136,244,255,140,242,255,139,243,255,140,245,255, -141,247,255,141,248,255,143,251,255,144,251,255,143,250, -255,140,248,255,137,244,255,136,243,255,139,243,255,147, -249,255,146,251,255,154,255,255,166,255,254,167,255,246, -164,255,241,163,255,238,164,255,236,165,255,235,166,255, -235,166,255,235,161,255,236,158,255,242,154,255,255,150, -255,255,149,254,255,153,255,255,159,255,255,160,255,255, -160,255,255,155,255,255,152,255,255,152,255,255,153,255, -255,154,255,255,154,255,255,152,255,255,149,255,255,150, -255,255,152,255,255,152,255,255,152,254,255,150,254,255, -149,253,255,149,252,255,148,251,255,149,250,255,150,250, -255,150,251,255,149,251,255,147,249,255,150,251,255,152, -251,255,153,251,255,151,251,255,150,251,255,148,251,255, -147,252,255,146,252,255,143,249,255,144,249,255,146,250, -255,148,251,255,144,250,255,142,248,255,143,248,255,142, -247,255,141,246,255,141,245,255,143,245,255,144,246,255, -143,246,255,143,246,255,144,245,255,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -182,184,188,151,211,194,131,210,198,161,199,205,188,181, -217,212,162,226,233,151,232,244,150,238,243,152,244,252, -151,247,255,153,251,254,155,252,255,153,250,255,150,250, -255,147,250,255,145,250,255,145,248,255,145,239,255,136, -240,255,133,240,255,131,239,255,128,234,255,133,237,254, -136,238,255,135,237,255,132,237,254,130,236,255,131,234, -255,132,233,252,133,233,252,131,230,249,129,228,246,127, -226,240,127,224,232,129,222,222,129,220,217,130,221,210, -133,225,200,134,223,206,131,221,209,130,220,208,131,218, -204,132,216,199,133,214,196,135,213,190,136,214,186,136, -216,184,135,218,183,134,217,185,134,215,185,133,212,184, -133,210,181,134,209,179,136,205,178,135,204,168,134,206, -163,137,203,161,139,200,155,140,203,145,140,204,147,135, -208,151,124,209,156,106,200,159,83,173,159,66,133,162,63, -91,156,66,81,135,71,78,111,74,80,90,77,81,79,79,83,72, -77,81,69,76,80,65,76,80,64,76,78,67,77,79,62,76,81,63, -75,81,62,76,80,60,78,80,56,82,81,55,80,79,58,83,79,56, -86,81,59,86,83,58,87,87,55,83,85,64,83,84,63,85,86,62, -88,88,61,89,86,65,92,87,64,94,88,63,97,90,66,96,89,65, -96,89,63,97,90,61,98,90,58,93,90,60,96,94,65,119,118, -66,158,160,48,216,184,68,214,198,120,197,208,162,172,214, -192,156,220,214,148,225,224,145,230,228,145,235,235,146, -240,241,147,244,248,148,245,254,146,245,255,144,249,255, -143,248,255,140,247,255,139,248,255,138,247,255,137,247, -255,137,247,255,137,246,255,136,243,255,138,243,255,138, -243,255,140,246,255,141,247,255,143,248,255,147,251,255, -148,252,255,146,252,255,140,249,255,135,244,255,134,241, -255,145,247,255,146,250,255,151,253,255,162,255,251,167, -255,246,166,255,241,166,255,238,166,255,236,165,255,235, -163,255,235,163,255,235,159,255,235,151,255,241,146,255, -253,145,255,255,146,254,255,150,255,255,157,255,255,159, -255,255,156,255,255,155,255,254,150,255,255,152,255,255, -152,255,255,153,255,255,155,255,255,154,255,255,152,255, -255,153,255,255,152,255,255,150,255,255,149,254,255,147, -252,255,146,252,255,146,250,255,145,249,255,147,250,255, -147,249,255,146,251,255,146,251,255,145,250,255,146,251, -255,147,251,255,148,252,255,146,251,255,145,251,255,142, -250,255,146,251,255,144,252,255,143,249,255,141,249,255, -142,251,255,145,252,255,140,249,255,139,248,255,141,248, -255,141,246,255,140,244,255,140,242,255,143,243,255,144, -245,255,146,246,255,143,245,255,142,245,255,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,184,188,178,173,195,190,146,193,211, -121,180,228,105,162,236,145,151,240,194,147,242,208,148, -245,225,148,248,239,151,248,253,153,249,255,153,250,255, -152,251,255,148,250,255,146,251,255,147,251,255,154,253, -255,146,253,255,137,248,254,134,243,255,131,238,255,133, -236,255,136,237,255,138,240,255,134,240,255,133,239,255, -132,236,255,132,234,255,134,232,255,132,230,255,129,227, -253,127,225,249,127,224,240,132,226,227,133,226,218,134, -226,214,135,226,212,136,224,211,133,224,209,132,223,205, -132,222,197,134,220,192,136,219,191,137,218,183,140,220, -180,138,220,179,136,221,178,133,220,174,132,218,172,133, -216,171,133,215,170,133,211,165,135,210,153,134,207,151, -132,207,143,135,207,136,140,207,136,141,206,146,141,203, -162,132,194,191,110,180,203,68,149,177,39,124,142,31,106, -105,54,96,83,65,94,74,73,90,74,75,85,76,78,83,76,79, -83,67,78,82,67,78,82,67,77,81,64,77,79,66,79,81,64,75, -82,59,74,80,57,76,81,58,80,82,56,84,83,54,82,82,55,86, -82,56,89,83,61,89,85,64,89,87,65,86,89,62,86,88,63,85, -87,65,87,86,65,90,88,63,92,87,67,93,86,71,95,87,72,97, -89,68,97,90,64,99,91,62,101,92,61,97,95,58,95,95,60, -99,96,63,116,105,77,183,131,116,199,189,77,195,223,81, -174,235,108,158,235,157,148,232,199,143,232,212,143,235, -222,143,238,231,143,241,239,147,246,248,147,249,253,144, -252,255,142,250,255,141,251,255,140,251,255,141,251,255, -139,251,255,139,250,255,137,248,255,137,246,255,140,244, -255,140,245,255,140,246,255,141,247,255,144,249,255,147, -251,255,148,254,255,148,255,255,144,255,255,139,251,255, -139,247,255,147,247,255,147,253,255,152,253,255,161,255, -255,166,255,253,165,255,245,166,255,240,166,255,238,164, -255,236,163,255,235,163,255,237,160,255,243,153,255,250, -148,255,255,146,255,255,146,255,255,150,255,255,157,255, -255,159,255,255,156,255,253,155,255,251,151,255,255,151, -255,255,153,255,255,154,255,255,154,255,255,155,255,255, -154,255,255,153,255,255,153,255,255,150,255,255,147,255, -255,146,253,255,147,254,255,147,253,255,146,253,255,146, -254,255,147,253,255,146,254,255,145,253,255,144,252,255, -146,253,255,147,252,255,147,252,255,149,255,255,147,255, -255,144,254,255,147,252,255,144,250,255,143,250,255,141, -251,255,142,251,255,145,253,255,140,250,255,138,249,255, -141,249,255,142,249,255,142,248,255,143,248,254,146,248, -255,147,249,255,146,249,255,145,250,254,144,248,255,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,181,183,172, -185,188,148,200,198,133,216,195,153,192,205,188,172,220, -202,161,231,219,155,237,235,155,239,248,155,243,254,154, -244,255,152,245,255,151,248,255,147,249,255,146,250,255, -154,255,255,153,255,255,150,254,255,145,251,255,138,245, -255,133,241,255,131,241,255,130,241,255,131,241,255,133, -239,255,132,238,255,130,237,255,128,236,255,125,232,254, -122,227,250,120,223,245,123,218,235,127,227,226,129,228, -218,128,228,213,127,227,210,128,224,209,130,221,207,130, -219,202,131,216,194,135,215,189,137,214,188,135,214,179, -136,217,177,135,217,176,133,215,173,134,214,170,135,210, -168,136,207,166,137,205,165,134,203,160,133,204,149,131, -200,145,135,200,139,138,200,133,135,205,134,127,206,142, -115,197,149,98,165,161,79,125,157,64,92,139,67,83,124, -74,82,104,82,85,85,81,85,74,81,84,72,79,81,74,79,78, -73,78,82,66,77,81,66,76,80,65,73,80,62,75,79,65,74,81, -62,75,80,58,77,79,58,78,79,57,79,80,54,81,82,52,79,82, -54,80,83,55,83,83,59,84,84,62,88,86,64,86,89,62,87,87, -63,91,86,66,92,85,66,93,87,63,92,89,68,92,89,72,92,88, -71,94,89,67,94,91,63,97,93,62,98,93,61,100,96,60,100, -96,62,99,94,62,104,94,65,108,106,74,151,151,36,201,184, -58,223,200,102,205,209,155,176,217,199,156,221,209,147, -225,217,143,230,226,143,234,234,143,239,242,142,244,249, -144,247,252,146,246,255,146,245,255,147,247,255,140,250, -255,143,249,255,142,250,255,138,249,255,135,247,255,134, -246,255,135,245,255,138,247,255,139,246,255,142,247,255, -145,249,255,148,250,255,151,253,255,153,255,255,147,252, -255,141,249,255,139,250,255,142,254,255,147,254,255,155, -255,255,164,255,252,165,255,245,165,255,240,166,255,238, -165,255,236,164,255,235,160,255,236,155,255,241,152,255, -247,149,255,253,148,255,255,150,255,255,152,255,255,157, -255,255,161,255,255,160,255,253,157,255,250,153,255,255, -154,255,255,156,255,255,154,255,255,154,255,255,153,255, -255,151,255,255,149,255,255,146,255,255,144,255,255,148, -254,255,146,250,255,146,251,255,146,252,255,145,252,255, -149,254,255,148,251,255,149,251,255,148,250,255,148,250, -255,149,250,255,147,250,255,144,252,255,144,253,255,144, -252,255,146,252,255,146,251,255,142,250,255,143,248,255, -146,249,255,146,249,255,146,249,255,142,247,255,141,249, -255,141,251,255,141,251,255,142,251,255,144,251,255,144, -250,255,142,248,255,144,251,255,144,251,254,145,249,255, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,184,184,183,181,174,196,185,164,191,211,125,176, -231,110,162,240,130,153,244,164,153,245,190,152,246,218, -151,247,229,152,250,236,151,252,243,149,253,249,148,253, -254,153,253,255,154,255,255,153,255,255,150,255,255,145, -254,255,141,251,255,138,250,255,135,247,255,133,243,255, -134,240,255,133,238,255,131,237,255,129,236,255,129,234, -255,126,231,255,123,225,250,129,226,228,130,229,226,132, -230,226,131,230,224,129,227,223,129,223,218,131,222,205, -132,222,195,133,219,188,136,219,187,139,218,182,139,218, -180,138,218,180,136,217,179,134,214,177,134,213,173,136, -211,170,137,209,166,138,207,163,135,205,156,135,205,145, -136,204,142,141,204,147,144,202,165,130,194,186,104,176, -204,72,145,175,57,118,134,54,100,103,65,95,90,73,91,80, -78,88,75,82,87,67,81,86,65,81,84,65,81,84,64,82,83,69, -77,80,67,77,81,61,77,81,63,73,80,62,74,78,62,75,80,64, -75,78,63,77,78,64,77,77,66,79,78,67,79,79,67,77,78,68, -79,81,68,83,83,64,84,85,58,89,88,59,86,88,64,88,89,64, -92,90,61,94,91,56,97,92,57,95,93,61,93,92,56,94,92,55, -96,93,57,96,93,59,98,94,61,101,96,62,102,97,64,104,99, -66,104,98,63,107,99,58,100,97,66,115,103,64,159,128,85, -207,176,106,204,216,80,180,231,134,162,233,165,151,233, -189,143,232,210,141,233,227,142,237,238,139,240,244,141, -244,244,144,247,248,146,247,251,148,249,254,139,250,255, -144,251,255,144,251,255,141,251,255,138,250,255,136,247, -255,136,245,255,137,245,255,138,245,255,141,246,255,144, -248,255,147,249,255,151,251,255,154,254,255,151,254,255, -147,254,255,144,254,255,145,254,255,148,255,255,153,255, -255,164,255,255,166,255,248,166,255,243,166,255,240,165, -255,237,164,255,235,160,255,240,155,255,250,152,255,254, -150,255,255,149,255,255,151,254,255,152,254,255,159,255, -255,163,255,255,162,255,254,159,255,247,153,255,248,154, -255,250,156,255,254,154,255,255,155,255,255,155,255,255, -152,255,255,149,255,255,146,255,255,144,253,255,147,252, -255,147,251,255,147,252,255,147,253,255,147,253,255,149, -253,255,150,251,255,151,253,255,151,253,255,149,251,255, -149,251,255,150,253,255,146,254,255,145,254,255,146,253, -255,147,253,255,148,253,255,143,251,255,146,251,255,149, -253,255,149,254,255,149,254,253,147,253,243,147,253,242, -147,253,239,147,253,237,148,253,237,150,253,237,151,253, -235,152,253,242,151,254,244,151,254,248,153,255,253,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,181,183,186,167,188,195, -132,198,208,120,194,214,146,186,222,172,172,232,203,162, -236,219,158,240,229,156,244,239,153,247,246,150,249,252, -150,252,254,152,254,255,154,255,255,151,255,255,151,254, -255,148,254,255,148,254,255,146,253,255,139,248,255,136, -243,255,137,240,255,134,239,255,132,238,255,128,234,255, -124,231,255,120,224,251,132,224,228,136,225,227,136,227, -227,131,225,225,129,223,224,129,220,217,131,219,202,133, -219,192,134,217,186,135,215,184,136,216,181,136,217,179, -136,216,180,134,214,180,134,212,178,136,212,174,136,208, -170,135,206,166,134,203,160,135,201,152,138,203,143,139, -206,144,133,207,156,120,197,177,95,167,185,67,126,175,59, -100,138,63,90,106,73,90,90,78,89,80,79,87,73,80,86,71, -82,85,65,82,83,63,81,83,64,79,82,63,80,79,64,76,79,63, -76,78,59,76,79,61,74,78,63,75,76,64,75,76,64,74,76,63, -74,76,64,74,75,64,74,76,64,74,77,64,73,78,65,75,79,67, -79,80,66,81,83,61,84,85,62,84,85,65,85,87,66,87,88,61, -89,91,56,94,91,56,93,93,58,93,94,56,95,94,56,95,94,58, -97,94,61,98,93,63,100,94,64,101,97,66,104,98,67,105,99, -64,109,101,60,105,99,62,104,97,62,115,105,69,146,136,70, -193,187,50,212,205,110,196,215,152,178,221,184,161,222, -206,149,223,221,144,229,232,140,232,238,140,237,238,143, -242,245,143,245,249,146,247,252,144,247,255,145,249,255, -145,250,255,145,248,255,143,247,255,142,246,255,140,245, -255,138,244,255,138,243,255,142,245,255,145,247,255,145, -247,255,149,250,255,153,254,255,154,255,255,150,255,255, -146,255,255,146,255,255,146,255,255,148,255,255,161,255, -255,165,255,249,164,255,244,163,255,240,163,255,238,163, -255,237,160,255,241,153,255,251,148,255,255,146,255,255, -146,254,255,150,253,255,153,252,255,160,255,255,163,255, -255,162,255,252,162,255,248,155,255,250,154,255,251,155, -255,254,155,255,255,153,255,255,152,255,255,152,255,255, -148,255,255,144,253,255,146,252,255,149,250,255,148,250, -255,150,252,255,151,253,255,151,253,255,151,253,255,153, -253,255,152,253,255,151,254,255,150,254,255,151,254,255, -152,254,255,152,254,255,151,253,255,152,253,255,152,254, -255,154,252,253,153,252,252,153,255,249,155,255,248,154, -255,247,155,255,247,160,255,244,161,255,241,162,255,240, -162,255,238,160,255,237,160,255,237,161,255,237,158,255, -241,158,255,246,155,255,248,152,255,252,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,180,181,174,182,181, -150,190,192,142,191,211,127,181,229,128,169,238,149,161, -242,179,157,245,205,152,246,225,149,247,241,147,249,250, -148,250,254,152,254,255,151,254,255,151,253,255,149,253, -255,150,253,255,152,254,255,148,254,255,144,250,255,144, -248,255,140,246,255,136,242,255,130,237,255,124,232,255, -121,225,253,131,223,241,134,224,237,134,225,237,131,223, -233,129,220,227,130,217,212,131,217,200,134,216,190,137, -215,185,138,214,185,137,215,185,136,214,179,136,214,178, -135,213,179,135,212,177,135,211,173,137,208,168,136,204, -164,138,202,156,143,204,150,144,206,151,133,204,170,107, -193,188,82,165,183,57,122,151,60,99,116,71,93,95,77,91, -82,80,90,75,83,90,71,81,86,67,79,84,68,82,81,68,84,82, -67,80,81,64,78,80,63,80,78,66,75,77,64,75,76,62,75,76, -63,72,74,63,71,73,63,73,73,68,74,73,67,74,73,65,75,75, -64,75,76,62,76,77,62,75,76,63,75,77,67,76,76,65,78,78, -63,82,80,65,85,82,66,84,83,65,87,86,63,89,87,61,91,88, -62,91,90,63,92,92,62,95,94,62,95,94,61,96,94,60,99,95, -60,99,95,59,100,96,62,102,97,65,104,98,65,108,100,65, -110,104,60,109,103,62,107,102,62,114,108,60,149,133,67, -201,175,94,205,208,118,190,221,142,172,225,168,156,227, -193,147,230,214,141,232,232,140,235,237,143,239,245,142, -242,250,144,243,254,143,244,255,144,247,255,145,248,255, -145,249,255,145,248,255,143,248,255,142,247,255,140,245, -255,139,243,255,142,245,255,144,245,255,144,246,255,146, -249,255,151,253,255,154,255,255,152,255,255,151,255,255, -149,255,255,148,255,255,149,255,255,160,255,255,163,255, -253,164,255,250,163,255,247,162,255,245,162,255,243,160, -255,246,152,255,255,148,255,255,147,254,255,146,254,255, -149,254,255,155,254,255,160,255,255,163,255,252,164,255, -247,162,255,248,156,255,254,154,255,255,154,255,255,154, -255,255,152,255,255,149,255,255,150,255,255,148,254,255, -144,252,255,145,250,255,151,251,255,150,252,255,151,253, -255,153,254,255,154,255,254,154,255,250,155,255,245,156, -255,243,158,254,242,158,253,240,160,253,241,161,254,241, -160,254,241,160,254,242,161,255,243,160,255,243,162,255, -243,163,255,242,161,255,239,162,255,238,161,255,237,160, -255,236,162,255,235,162,255,235,162,255,235,162,255,235, -161,255,235,160,255,238,158,255,243,156,255,248,154,255, -250,152,255,251,147,255,251,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,180,182, -174,178,184,152,182,199,126,187,215,118,185,223,136,179, -228,164,170,233,195,163,238,221,155,242,241,153,245,249, -152,248,255,151,250,255,151,251,255,152,251,255,152,252, -255,153,253,255,151,254,255,148,252,255,148,253,255,146, -250,255,143,247,255,140,244,255,136,240,255,128,232,255, -124,226,253,127,227,251,130,226,244,128,222,229,129,219, -218,132,218,203,132,217,194,135,215,187,139,215,181,141, -214,182,139,213,184,138,213,180,138,213,177,137,212,176, -136,211,173,135,209,171,136,205,163,138,204,154,141,204, -149,141,207,150,135,204,161,106,180,208,73,149,186,56, -118,142,59,102,106,75,98,86,81,95,77,83,92,73,83,90,71, -85,88,70,84,85,69,83,82,71,81,80,73,81,81,67,80,82,66, -77,79,64,77,76,67,75,75,68,75,76,64,75,77,63,74,76,62, -72,75,62,72,73,65,73,73,64,74,74,63,73,75,61,73,76,59, -75,76,58,76,76,62,76,78,61,77,79,60,81,80,59,85,81,61, -87,84,62,87,86,62,87,86,62,89,87,62,90,88,65,91,89,68, -91,91,64,94,94,61,95,94,59,97,94,58,101,96,58,102,98, -57,102,98,66,103,98,69,106,97,68,107,99,68,111,103,60, -111,104,65,111,105,63,112,106,61,115,106,74,148,135,78, -183,181,75,201,213,95,195,223,126,178,226,161,161,228, -196,146,229,223,142,232,230,144,236,238,144,239,246,146, -239,253,143,242,255,144,244,255,145,245,255,147,245,255, -148,248,255,145,248,255,143,247,255,141,246,255,141,245, -255,141,244,255,142,245,255,143,247,255,143,248,255,146, -250,255,150,254,255,153,255,255,154,255,255,153,255,255, -152,255,255,150,254,255,156,254,255,162,255,255,165,255, -253,166,255,253,164,255,251,163,255,251,159,255,251,152, -255,255,149,253,255,150,252,255,150,253,255,152,255,255, -154,255,255,161,255,255,164,255,253,164,255,248,161,255, -247,155,255,254,152,255,255,152,255,255,153,255,255,150, -255,255,148,255,255,148,253,255,147,253,255,146,251,255, -146,251,255,152,252,255,154,254,255,155,255,254,157,255, -248,156,255,245,156,255,242,154,255,237,157,255,235,160, -255,235,163,255,235,163,255,235,162,255,235,161,255,235, -160,255,235,158,255,235,157,255,235,156,255,235,158,255, -235,158,255,235,158,255,235,158,255,235,157,255,235,160, -255,235,159,255,235,159,255,236,159,255,238,157,255,241, -155,255,246,153,253,249,148,253,251,145,252,253,139,252, -255,131,245,255,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,184, -184,183,183,180,182,183,161,189,189,146,193,199,149,191, -209,163,181,220,178,167,231,196,160,237,210,157,242,229, -153,244,241,151,247,249,152,249,253,150,251,253,150,251, -254,150,253,255,147,251,255,146,251,255,145,250,255,143, -247,255,144,245,255,144,244,255,137,239,255,118,231,255, -121,226,255,123,223,241,123,221,224,127,217,209,131,216, -193,134,214,188,135,213,183,136,213,179,138,211,179,138, -212,183,139,211,181,139,210,179,138,209,176,136,207,173, -136,205,169,139,203,159,142,205,154,139,206,157,123,205, -164,92,196,176,64,140,187,62,105,144,72,93,113,81,93,93, -87,92,83,87,91,76,86,90,74,84,87,71,84,85,68,84,84,68, -83,81,72,75,79,73,79,80,65,81,80,66,76,78,66,74,75,67, -74,75,67,72,76,62,71,77,60,71,77,59,71,73,59,71,72,59, -71,72,59,71,72,58,71,73,57,72,75,55,75,76,56,75,75,61, -75,77,58,77,80,58,79,80,57,81,82,59,82,83,59,84,86,60, -88,85,60,90,85,61,91,87,64,93,89,66,91,89,61,93,90,59, -95,90,59,100,92,61,102,92,62,103,96,61,102,95,67,105, -97,70,106,97,68,107,98,66,110,101,60,110,103,66,111,104, -65,114,107,65,113,106,71,114,109,66,142,133,56,187,172, -77,216,204,111,209,215,138,185,223,173,157,225,209,145, -226,219,144,230,231,144,232,241,144,233,252,143,235,253, -144,240,255,146,241,255,144,243,255,146,245,255,145,247, -255,142,247,255,141,246,255,140,245,255,140,244,255,141, -244,255,142,245,255,144,245,255,146,247,255,150,251,255, -154,253,255,156,254,255,156,255,255,154,255,255,151,254, -255,154,253,254,162,255,255,164,255,255,164,255,255,163, -255,255,162,255,255,159,255,255,151,254,255,148,252,255, -150,251,255,152,252,255,154,253,255,158,255,255,159,255, -254,162,255,253,163,255,248,160,255,247,155,255,254,152, -255,255,152,255,255,151,255,255,150,255,255,150,254,255, -148,252,255,146,254,255,145,251,255,149,251,254,159,251, -251,163,252,250,164,255,250,161,255,245,155,255,241,151, -255,238,148,255,237,148,255,235,149,255,235,149,255,235, -148,255,235,148,255,235,148,255,235,147,255,235,149,255, -235,150,255,235,150,255,235,154,255,235,155,255,235,158, -255,235,158,255,235,158,255,235,158,255,239,156,255,241, -154,255,242,151,255,244,148,254,246,144,251,247,136,245, -247,128,242,246,114,238,247,93,226,250,72,205,243,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,183,183,181,181,184,168,181,191,154,180,202,149, -174,216,138,170,226,149,165,237,172,157,242,199,152,244, -221,152,248,236,150,250,247,150,250,254,149,251,255,147, -251,255,145,250,255,143,248,255,142,245,255,145,246,255, -146,245,255,139,240,255,118,229,255,122,225,255,124,223, -243,123,220,224,128,218,207,131,214,195,135,214,189,138, -215,185,138,215,180,139,214,177,138,214,177,138,211,179, -139,210,180,138,209,177,137,208,170,136,207,159,142,207, -147,142,207,162,133,198,198,97,173,214,49,141,193,48,117, -124,64,103,99,79,98,86,85,95,79,88,91,76,87,92,68,85, -89,66,84,87,67,85,87,69,85,84,70,83,82,73,74,79,68,78, -80,58,80,81,56,76,80,57,74,77,63,73,75,68,69,76,68,70, -75,66,69,75,60,71,74,61,71,73,61,71,72,61,71,72,61,71, -72,60,72,73,62,74,73,67,74,73,71,73,75,68,75,77,67,77, -78,63,79,79,62,81,81,65,84,85,63,89,84,63,94,86,64,95, -88,65,95,90,66,94,90,65,94,89,65,96,88,65,99,90,65, -101,92,64,102,94,56,104,97,60,105,98,58,106,100,56,110, -101,62,112,103,66,112,104,66,113,105,69,115,106,74,117, -107,78,117,108,71,120,106,75,140,121,82,189,172,107,208, -209,106,199,230,111,171,231,167,154,229,197,146,229,221, -142,230,232,143,231,243,142,234,243,142,238,250,142,240, -255,142,244,255,145,247,255,144,249,255,143,249,255,143, -248,255,141,246,255,140,243,255,141,242,255,141,243,255, -145,245,255,147,245,255,149,248,255,153,251,255,156,254, -255,157,255,255,155,255,255,150,254,255,155,254,255,162, -255,255,162,255,255,162,255,255,162,255,255,160,255,255, -157,255,255,150,253,255,147,251,255,150,251,255,154,254, -255,157,255,255,162,255,255,161,255,255,163,255,247,163, -255,241,160,255,238,157,255,245,154,255,252,153,255,254, -151,255,255,152,255,255,153,255,255,150,253,255,147,254, -253,150,255,244,155,255,240,166,255,241,168,255,238,163, -255,236,157,255,235,149,255,235,146,255,235,146,255,235, -146,255,235,147,255,235,146,255,235,146,255,235,146,255, -235,147,255,235,147,255,235,149,255,235,151,255,235,152, -255,235,155,255,235,156,255,235,158,255,238,158,255,242, -157,255,248,154,255,252,151,254,254,148,253,253,145,242, -247,145,234,241,144,217,234,134,205,227,138,194,213,147, -182,201,138,175,187,132,166,174,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,183,181,184,172,180,186,156,184,193, -158,189,201,168,188,209,184,175,222,203,161,232,222,158, -238,238,154,242,251,149,245,253,148,244,254,146,244,255, -144,243,255,143,242,255,144,245,255,141,243,255,137,239, -255,117,227,255,119,224,254,120,220,240,122,216,220,127, -214,205,133,211,197,136,211,190,138,211,183,140,211,179, -141,211,175,142,212,177,139,213,181,138,211,181,140,207, -176,142,203,168,144,204,158,143,210,151,116,214,165,81, -182,181,57,135,184,64,98,168,80,96,116,84,95,97,87,94, -85,88,92,76,86,89,72,88,91,66,87,90,66,85,87,66,83,85, -68,81,83,70,81,81,72,76,79,69,76,81,58,77,81,55,75,79, -55,74,75,61,75,71,68,71,71,69,71,70,65,71,71,59,70,70, -58,68,70,59,66,71,59,67,71,60,69,72,61,71,73,63,72,72, -67,72,70,70,73,72,67,75,73,65,78,75,62,78,78,63,81,79, -66,83,80,61,88,83,63,91,85,63,93,87,65,92,90,66,90,91, -66,91,92,67,92,91,65,93,92,65,95,94,63,100,97,57,102, -96,60,104,99,59,105,102,57,109,101,62,107,103,65,110, -107,66,115,107,71,116,105,74,119,105,78,119,109,72,120, -108,76,122,108,70,141,126,67,186,168,77,223,204,100,216, -212,158,191,217,191,168,220,215,152,223,228,143,225,238, -139,232,239,140,235,246,140,237,252,139,239,253,143,243, -255,144,244,255,145,246,255,144,247,255,141,245,255,141, -244,255,141,241,255,142,243,255,143,244,255,145,244,255, -147,245,255,150,249,255,156,253,255,157,255,255,155,255, -255,151,254,255,151,255,255,152,255,255,152,255,255,153, -255,255,154,255,255,154,255,255,152,255,255,144,254,255, -145,251,255,149,251,255,153,253,255,160,255,255,165,255, -254,163,255,254,165,255,248,168,255,242,165,255,238,158, -255,244,155,255,252,152,255,254,151,255,255,154,254,255, -158,251,254,162,248,254,161,255,254,158,255,250,152,255, -243,149,255,240,145,255,237,142,255,235,142,255,235,141, -255,235,141,255,235,141,255,235,143,255,235,146,255,235, -147,255,235,148,255,235,149,255,235,152,255,235,152,255, -235,151,255,235,152,255,235,156,255,236,155,255,236,154, -255,236,150,255,239,147,255,243,143,254,247,131,253,253, -124,245,246,120,236,238,123,220,229,141,196,212,157,182, -201,169,176,192,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,182,182,184,181,183,186,177,182,196, -159,176,217,126,161,235,148,153,238,180,149,245,207,145, -247,225,145,246,240,144,245,250,142,243,254,141,242,255, -141,242,255,139,241,255,136,241,255,118,231,255,120,227, -245,121,223,230,124,218,217,129,217,201,135,213,199,138, -214,186,139,214,175,141,214,169,143,212,180,144,212,188, -139,211,186,136,208,176,139,207,166,144,206,161,149,206, -171,141,196,208,92,174,227,44,139,177,35,121,123,61,108, -97,80,102,79,85,100,77,88,98,73,88,93,70,86,89,71,86, -88,68,86,87,68,85,86,70,82,84,68,81,84,64,81,84,58,77, -81,66,76,80,65,76,77,63,73,75,61,73,73,65,74,70,67,70, -70,66,70,68,69,69,67,68,69,67,68,68,70,62,66,71,59,65, -70,58,67,70,59,69,71,61,70,71,65,72,71,66,72,71,65,75, -73,67,79,75,68,76,75,72,80,79,59,82,80,59,87,82,59,89, -83,61,90,84,62,91,89,67,90,91,65,90,92,64,92,92,63,94, -93,63,96,94,63,98,93,61,103,97,61,105,100,62,104,101, -60,109,101,62,107,103,68,110,106,71,114,106,70,116,106, -71,120,106,78,120,108,83,121,109,76,123,109,71,128,110, -74,146,117,92,189,159,122,209,214,101,195,235,116,174, -239,146,156,236,186,146,232,223,139,231,242,139,234,239, -140,237,244,138,239,249,141,241,255,143,243,255,144,246, -255,144,248,255,142,247,255,142,244,255,143,243,255,143, -243,255,143,243,255,144,243,255,146,243,255,148,247,255, -154,251,255,158,254,255,157,255,255,153,255,255,152,253, -255,151,255,255,150,255,255,152,255,255,152,255,255,153, -255,255,151,254,255,142,251,255,145,251,255,149,251,255, -153,253,255,162,255,255,166,255,254,164,255,254,165,255, -251,168,255,247,165,255,241,159,255,241,156,255,242,154, -255,241,152,255,236,156,255,234,164,255,236,171,255,237, -165,255,235,158,255,235,152,255,235,149,255,235,145,255, -235,142,255,235,142,255,235,141,255,235,141,255,235,141, -255,235,143,255,235,146,255,235,147,255,235,148,255,235, -149,255,235,152,255,235,152,255,235,151,255,240,152,255, -251,156,255,255,152,254,254,149,254,254,145,251,253,139, -239,251,134,229,246,130,215,238,121,202,228,128,188,211, -160,182,185,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,181,184,178,182,190,150,195,199, -158,187,205,178,178,214,197,166,226,218,160,230,235,153, -231,245,147,232,251,142,232,254,140,232,255,140,232,253, -142,231,252,128,222,255,124,220,242,126,217,228,127,213, -214,132,213,199,133,210,195,133,208,180,137,210,172,142, -213,169,143,212,178,140,210,184,137,206,180,136,203,171, -139,205,163,138,209,159,124,208,161,73,187,173,60,126, -179,66,98,156,79,93,122,84,93,97,88,95,78,90,93,73,90, -91,68,91,90,67,87,86,69,85,87,66,84,87,67,83,85,67,80, -82,65,77,82,60,76,84,57,75,79,64,74,77,62,74,76,62,71, -75,60,68,74,64,66,72,65,67,69,64,67,69,67,63,67,65,66, -66,65,67,68,59,66,69,58,65,68,57,65,68,57,66,69,59,67, -69,61,69,69,62,69,69,61,71,71,63,73,73,63,72,72,67,76, -75,55,79,78,56,82,80,56,83,81,58,85,83,60,88,84,62,91, -86,61,94,88,61,94,89,60,95,90,60,97,91,61,101,92,61, -103,96,60,107,98,62,108,99,61,106,101,62,107,102,67,105, -104,68,109,106,67,111,107,68,112,107,74,115,106,78,116, -106,72,120,109,70,123,111,73,122,110,77,134,124,77,184, -174,62,232,199,104,231,213,149,201,219,191,171,222,226, -147,226,241,145,226,236,145,231,241,143,234,246,143,238, -254,145,237,255,143,239,255,144,242,255,145,244,255,145, -243,255,143,243,255,139,245,255,141,245,255,141,245,255, -140,245,255,143,248,255,151,251,255,154,254,255,155,255, -255,153,254,255,145,251,255,143,252,255,144,252,255,147, -253,255,149,255,255,149,255,255,148,252,255,148,248,255, -151,251,255,151,251,255,153,255,255,159,255,255,161,255, -254,161,255,253,163,255,249,167,255,244,170,255,240,167, -255,243,158,255,244,153,255,245,150,255,244,148,255,242, -147,255,240,145,255,238,142,255,236,139,255,235,136,255, -235,134,255,235,137,255,235,137,255,235,141,255,235,146, -255,235,148,255,235,153,255,235,155,255,235,157,255,235, -160,255,235,162,255,235,162,255,235,162,255,235,159,255, -235,153,255,237,147,255,245,137,252,250,124,252,252,113, -246,246,127,227,228,133,202,218,129,179,216,148,165,206, -169,174,188,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,182,185,164,182,201,143,177,217,133,165, -231,146,157,238,169,151,237,204,145,236,220,141,236,228, -138,235,233,138,234,234,141,234,236,129,229,240,125,225, -227,126,221,216,127,217,205,133,215,197,134,215,182,136, -214,171,140,213,172,142,213,177,142,212,177,138,211,173, -135,209,161,138,208,159,142,207,176,135,195,206,104,170, -227,34,139,162,42,118,113,64,110,93,79,102,81,83,98,73, -88,94,75,90,93,72,91,92,73,91,90,73,88,88,67,85,87,67, -83,86,66,83,85,67,80,82,68,78,81,71,76,80,74,74,78,68, -76,78,65,75,77,64,73,76,62,68,74,59,66,72,58,67,71,59, -67,69,64,62,66,65,64,65,64,65,66,60,64,66,58,64,66,57, -65,68,55,66,69,54,66,70,54,68,70,54,68,70,51,71,72,55, -72,73,54,73,75,54,76,76,54,77,77,52,81,79,55,83,81,57, -84,83,61,88,84,68,91,85,66,94,88,65,94,89,63,95,91,63, -97,92,63,101,92,65,102,94,65,105,95,64,107,97,64,105, -100,62,106,100,64,106,104,63,109,105,65,110,106,67,112, -108,70,115,109,65,117,109,66,120,110,68,123,112,69,125, -115,70,125,114,71,148,124,93,198,157,116,223,212,123,202, -238,117,176,242,163,151,238,212,148,232,231,146,232,246, -142,233,253,141,235,255,143,236,255,142,239,255,142,241, -255,144,244,255,145,245,255,144,245,255,139,244,255,141, -244,255,142,246,255,141,247,255,144,248,255,151,253,255, -153,255,255,155,255,255,154,255,255,145,251,255,141,250, -255,143,250,255,147,253,255,148,255,255,147,255,252,145, -254,244,147,253,239,152,254,242,153,254,242,155,255,243, -159,255,242,161,255,240,161,255,237,163,255,235,168,255, -235,171,255,236,167,255,235,162,255,235,157,255,235,153, -255,235,149,255,235,148,255,235,145,255,235,142,255,235, -139,255,235,136,255,235,134,255,235,137,255,235,137,255, -235,141,255,235,145,255,235,147,255,235,152,255,235,154, -255,235,157,255,237,160,255,241,161,255,245,162,255,251, -160,255,255,154,252,255,148,245,253,146,233,244,149,213, -224,142,205,218,152,191,201,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,175,185, -157,182,194,141,193,201,150,184,215,167,168,222,202,156, -224,217,149,226,225,145,227,230,142,228,232,139,229,232, -128,222,234,126,219,223,127,217,212,128,213,202,129,210, -192,135,210,178,136,211,168,138,213,171,136,212,173,136, -210,171,141,204,168,141,202,158,136,208,158,120,208,167, -87,180,176,58,133,182,66,96,149,78,98,115,88,99,96,90, -95,81,91,94,74,88,93,73,87,91,69,86,90,69,84,87,67,86, -84,63,84,83,64,81,82,64,80,82,65,78,80,67,76,78,70,75, -77,70,74,76,66,70,77,62,70,76,61,70,74,60,67,73,60,65, -72,59,64,71,58,63,68,62,62,64,62,62,64,61,64,64,57,63, -64,56,63,64,55,64,66,53,64,66,51,65,67,51,65,67,52,67, -68,51,68,70,53,68,71,51,70,73,52,71,74,51,72,78,51,74, -79,52,77,79,53,82,80,58,85,81,66,87,83,64,91,87,62,94, -89,61,94,88,60,96,90,62,96,92,63,99,94,63,103,95,63, -104,98,61,105,99,60,105,98,62,108,99,60,111,102,63,109, -104,65,109,104,66,110,109,63,114,110,65,117,110,66,121, -112,66,125,115,67,128,115,69,130,113,77,143,132,74,205, -180,91,239,206,110,227,218,167,186,227,219,165,230,236, -151,232,248,142,232,253,139,233,255,140,237,255,138,239, -255,138,240,255,139,242,255,142,243,255,144,244,255,144, -243,255,142,243,255,142,245,255,141,246,255,144,247,255, -151,252,255,154,255,255,155,255,255,154,255,255,145,251, -255,151,242,255,154,241,255,156,244,255,156,249,255,154, -252,254,151,252,252,147,253,249,145,255,249,147,255,249, -149,255,248,153,255,246,151,255,245,147,255,240,144,255, -238,141,255,237,137,255,236,139,255,235,136,255,235,135, -255,235,135,255,235,136,255,235,137,255,235,140,255,235, -139,255,235,141,255,235,144,255,235,148,255,235,153,255, -235,154,255,235,157,255,235,159,255,235,161,255,235,160, -255,235,157,255,235,153,255,236,148,255,238,141,254,240, -128,254,244,113,252,249,121,238,240,150,201,212,184,185, -186,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,190,143,181,220,108,167, -237,118,156,238,150,150,237,177,145,235,195,142,234,208, -141,232,220,132,226,228,129,223,216,130,220,206,131,216, -195,131,214,184,137,214,174,139,213,175,139,214,179,136, -213,172,135,212,160,141,209,149,146,206,168,139,201,204, -101,173,214,54,138,184,36,119,127,66,110,90,78,105,82, -87,101,75,91,98,70,91,95,69,86,94,65,87,93,60,86,91, -61,84,87,61,86,85,64,84,83,69,82,82,71,81,82,69,78,80, -65,76,79,62,75,79,60,74,79,58,69,77,60,69,75,62,68,74, -62,66,72,64,64,70,65,63,68,63,62,68,59,64,67,55,63,66, -57,64,65,55,64,65,55,65,66,57,66,67,58,65,67,57,66,67, -57,65,67,53,67,69,51,69,70,54,68,71,56,70,71,58,71,73, -59,72,76,56,74,77,58,76,77,58,81,79,59,84,82,61,86,83, -62,90,85,61,93,89,59,95,91,57,98,94,56,96,95,57,99,97, -57,103,97,58,104,98,57,104,100,56,106,99,63,110,101,64, -113,105,67,112,106,68,111,105,69,110,107,73,113,109,68, -118,111,67,122,112,70,125,113,72,128,115,72,130,116,68, -129,117,71,169,136,95,219,181,117,222,231,83,188,245,152, -170,245,194,155,243,221,145,240,237,141,238,252,141,237, -255,138,239,255,137,239,255,139,241,255,142,243,255,144, -244,255,145,245,255,143,246,255,142,248,255,141,248,255, -143,248,255,151,252,255,154,255,255,157,255,255,155,255, -253,144,255,242,156,255,235,162,255,233,165,255,234,168, -255,236,164,255,235,159,255,235,155,255,235,152,255,235, -154,255,235,155,255,235,155,255,235,152,255,235,148,255, -235,144,255,235,141,255,235,137,255,235,139,255,235,137, -255,235,135,255,235,135,255,235,135,255,235,137,255,235, -139,255,235,138,255,235,140,255,235,142,255,235,146,255, -235,152,255,235,154,255,235,156,255,236,158,255,238,160, -255,243,159,255,252,156,254,255,151,250,254,139,244,253, -130,237,252,112,221,246,123,194,215,183,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,174, -190,115,196,202,126,197,211,147,183,215,174,171,219,194, -160,222,207,152,222,218,140,216,224,133,215,213,131,213, -203,131,210,192,136,208,182,139,210,171,139,212,173,140, -208,174,139,203,166,142,202,157,140,209,150,123,214,164, -101,194,183,63,132,172,62,101,162,78,95,127,87,101,91, -89,97,81,91,95,73,90,95,67,89,93,66,88,92,63,85,91,57, -86,89,58,86,87,60,82,86,63,81,82,67,79,80,68,77,79,66, -76,77,62,76,77,59,77,78,59,73,78,56,70,74,57,69,73,58, -68,72,60,67,70,62,63,69,63,62,67,61,64,67,58,63,68,55, -60,67,56,62,65,55,61,66,55,60,67,56,60,67,56,60,67,55, -60,68,55,60,69,52,62,70,49,64,71,52,63,70,54,66,71,55, -66,72,56,67,75,53,70,78,56,71,78,56,73,79,56,78,80,59, -79,82,59,82,84,58,87,89,57,90,91,55,93,94,54,93,97,56, -95,97,56,98,96,55,99,97,53,104,98,54,105,100,63,107, -102,63,111,103,65,112,103,66,112,103,67,114,101,70,115, -104,65,119,109,65,120,110,66,123,110,68,127,110,68,128, -114,65,130,114,69,133,118,70,169,151,78,234,197,65,234, -219,153,203,231,198,180,236,226,162,237,241,150,236,254, -141,236,255,138,237,255,139,239,255,139,240,255,140,243, -255,140,244,255,140,244,255,143,246,255,143,247,255,143, -247,255,143,246,255,151,251,254,156,255,255,158,255,255, -158,255,254,165,255,250,165,255,245,160,255,241,154,255, -239,148,255,236,143,255,235,139,255,235,135,255,235,138, -255,235,142,255,235,145,255,235,145,255,235,140,255,235, -136,255,235,135,255,235,134,255,235,134,255,235,136,255, -235,136,255,235,138,255,235,141,255,235,144,255,235,149, -255,235,155,255,235,157,255,235,160,255,235,161,255,235, -161,255,235,163,255,235,159,255,235,153,254,236,146,254, -237,140,253,238,124,254,248,123,249,250,118,236,251,126, -196,232,149,176,204,168,179,189,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,185,179,185,193,152,179,223,107,169, -234,114,159,235,135,153,233,164,142,227,189,134,222,191, -132,217,188,132,214,181,138,213,173,141,213,169,140,213, -168,139,211,161,141,209,152,145,209,148,145,206,192,111, -188,217,69,152,190,44,118,134,58,111,101,82,107,87,86, -100,84,88,97,74,91,96,70,89,94,66,88,93,62,87,92,62, -85,89,67,85,87,66,86,85,66,82,84,68,79,80,67,77,79,67, -76,78,67,77,78,66,76,76,63,76,77,60,72,76,59,70,74,59, -68,72,58,67,71,57,66,70,57,62,69,55,62,69,51,64,69,50, -62,69,51,58,67,53,62,65,58,61,66,53,59,67,50,59,67,50, -58,65,54,59,66,59,58,67,58,60,66,54,62,68,54,62,69,52, -64,68,52,64,72,50,65,74,51,67,76,51,68,76,52,70,78,54, -75,78,55,78,82,54,81,84,54,85,86,55,89,90,54,90,92,53, -90,94,55,94,96,54,97,96,52,100,98,53,104,99,57,104,101, -56,104,100,59,109,102,60,111,103,59,112,103,61,114,102, -65,114,103,64,116,104,65,118,107,66,122,108,67,126,109, -68,124,110,68,129,113,72,130,114,70,146,121,82,206,147, -131,222,221,77,201,242,139,182,246,185,167,247,219,155, -245,238,145,245,252,141,242,255,140,242,255,139,241,255, -139,243,255,140,244,255,141,245,255,142,247,255,143,248, -255,143,248,255,143,248,255,150,250,255,155,255,254,158, -255,255,160,255,253,169,255,248,165,255,242,160,255,238, -154,255,236,148,255,235,143,255,235,139,255,235,135,255, -235,138,255,235,142,255,235,145,255,235,145,255,235,139, -255,235,135,255,235,135,255,235,134,255,235,134,255,235, -135,255,235,135,255,235,137,255,236,140,255,236,143,255, -237,148,255,237,154,255,237,157,255,237,159,255,238,162, -255,239,162,255,241,163,254,254,160,251,252,153,248,251, -147,243,247,135,230,242,111,215,234,110,189,217,144,180, -187,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,182,178,189, -148,184,200,123,195,206,132,197,203,164,177,202,188,158, -203,189,148,204,186,144,203,180,144,205,171,141,208,167, -140,207,166,138,206,158,138,205,151,141,210,149,107,211, -179,80,161,188,61,110,162,67,99,132,77,101,102,86,103, -85,86,96,81,91,94,73,93,93,69,92,92,64,91,92,61,86,89, -61,83,87,64,81,86,63,80,85,62,81,79,64,78,78,64,76,78, -66,75,77,66,74,76,64,73,75,61,72,76,57,69,77,57,69,73, -58,68,72,58,64,70,56,64,70,56,66,68,55,65,68,51,65,68, -49,64,69,50,62,66,52,60,64,56,59,65,52,60,67,50,60,67, -51,58,65,53,57,64,57,57,64,56,61,67,55,63,67,53,64,68, -51,66,67,51,66,69,48,66,71,49,69,73,49,70,72,49,72,73, -50,79,75,53,78,77,51,80,81,51,83,84,51,88,86,49,93,88, -48,93,88,51,95,93,51,99,96,50,100,97,51,102,98,54,108, -100,55,105,100,58,105,101,57,107,103,56,108,104,59,107, -102,62,112,102,61,116,104,63,119,106,65,122,108,66,123, -108,67,123,108,68,125,111,71,130,115,71,132,114,74,139, -125,95,212,189,52,234,213,133,218,225,185,188,235,219, -168,240,239,155,242,253,148,241,255,143,241,255,139,240, -255,137,241,255,137,243,255,138,246,255,139,246,255,141, -247,255,142,248,255,141,249,255,144,251,254,150,255,252, -154,255,254,157,255,251,167,255,246,164,255,241,157,255, -238,150,255,236,144,255,235,141,255,235,141,255,235,143, -255,235,148,255,235,152,255,235,152,255,235,151,255,235, -148,255,235,145,255,235,146,255,235,149,255,235,152,255, -235,156,255,235,158,255,235,158,255,235,156,255,235,155, -255,235,156,255,236,157,255,236,157,255,236,155,255,236, -150,253,236,143,251,234,136,247,241,138,238,239,141,220, -231,131,191,225,141,171,203,165,171,187,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -185,184,173,178,156,174,180,126,186,198,123,175,215,99, -159,221,94,149,219,107,146,215,125,146,214,135,142,213, -142,140,211,146,140,210,147,142,207,163,140,198,202,80, -170,223,49,130,163,54,112,116,70,110,96,79,106,85,84, -101,81,84,96,72,89,93,68,92,91,70,89,88,70,88,86,74, -85,87,63,82,87,57,80,86,60,76,81,58,79,79,54,77,77,61, -75,77,63,75,77,63,75,77,62,74,77,60,72,76,60,67,73,63, -69,73,58,68,73,53,64,72,51,63,69,57,67,69,55,66,68,57, -66,68,57,64,68,54,62,67,48,60,65,56,59,65,56,59,65,53, -59,66,51,57,66,49,57,66,50,57,66,49,58,65,49,62,66,52, -63,65,52,65,66,52,65,67,53,64,69,48,66,70,46,68,70,47, -72,72,48,77,73,51,77,76,53,79,79,53,82,82,54,86,82,56, -90,83,60,92,85,59,93,88,56,97,93,61,98,93,61,101,95, -56,105,95,62,104,98,64,106,100,66,107,101,67,107,101,69, -107,101,66,111,100,62,115,103,61,119,106,62,122,108,64, -124,110,66,125,110,68,127,114,69,131,116,72,133,116,72, -129,119,67,175,131,118,212,194,91,215,234,122,188,244, -166,169,247,203,158,249,234,151,248,246,146,246,252,142, -245,254,139,244,255,138,244,255,137,244,255,139,246,255, -142,247,255,142,247,255,141,247,255,145,250,255,150,255, -255,153,255,255,157,255,255,169,255,249,164,255,243,157, -255,240,150,255,238,144,255,236,141,255,235,141,255,235, -143,255,235,148,255,235,152,255,235,152,255,235,151,255, -235,147,255,235,144,255,235,145,255,237,148,255,242,152, -255,252,155,255,254,157,255,254,157,255,254,152,255,254, -151,255,254,152,255,254,154,254,253,154,253,253,147,249, -250,143,241,246,134,225,240,132,201,228,135,184,200,159, -180,183,178,183,183,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,183,173,178,165,153,173,119,161,190, -87,181,197,90,177,199,102,165,201,120,158,204,130,147, -208,139,144,206,143,143,208,147,134,209,166,93,196,197, -60,129,188,58,103,143,74,103,112,84,102,93,88,99,82,92, -97,79,91,95,72,89,91,67,88,90,68,84,88,68,82,85,72,81, -84,61,80,85,57,79,84,60,76,81,60,77,81,57,78,77,62,76, -76,62,75,76,62,75,77,62,75,75,60,76,75,62,68,74,63,67, -73,58,67,74,55,66,74,54,62,72,58,65,72,56,63,73,60,63, -72,60,62,71,57,61,71,51,60,69,59,60,68,58,60,67,55,60, -68,52,60,69,52,60,69,52,59,68,52,58,68,52,57,69,52,57, -69,51,58,69,51,60,68,52,59,69,46,61,73,46,62,74,47,65, -74,48,68,77,50,70,78,51,72,78,52,77,80,53,80,82,55,81, -83,60,81,87,57,84,90,54,89,92,57,92,91,58,98,93,55, -103,94,62,103,95,62,103,98,64,102,98,65,100,97,67,105, -97,63,110,98,61,114,101,61,118,105,63,121,107,65,125, -107,68,124,108,69,127,109,67,128,111,70,128,114,71,130, -119,69,131,115,96,176,161,57,223,209,103,224,224,157,194, -235,201,171,240,232,161,243,245,154,244,252,147,244,254, -143,244,255,141,244,255,140,243,255,139,244,255,140,245, -255,141,246,255,141,245,255,145,248,255,151,254,255,154, -255,255,157,255,254,166,255,248,168,255,244,165,255,240, -162,255,238,158,255,236,155,255,235,155,255,235,157,255, -235,159,255,235,161,255,235,160,255,235,160,255,235,157, -255,235,154,255,235,151,255,238,150,255,242,148,255,249, -146,255,254,146,254,254,143,253,253,141,252,252,138,252, -252,139,248,250,140,238,249,137,224,243,145,198,217,155, -182,195,158,173,192,172,176,184,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,177,181,173,145,165,111,169, -178,84,180,198,93,170,203,106,161,207,118,147,208,134, -148,209,139,144,208,165,121,196,193,54,158,199,49,116, -128,67,109,98,80,108,85,87,105,79,90,101,74,91,98,72, -90,95,71,89,92,66,87,90,66,83,89,64,80,86,64,79,84,63, -78,81,65,78,82,67,76,81,65,76,78,65,78,77,63,75,75,59, -73,73,56,74,74,56,76,74,57,78,75,57,70,76,53,69,76,51, -68,77,54,67,76,55,63,75,58,67,75,62,64,75,62,63,75,60, -63,74,54,64,75,56,63,73,58,64,72,57,64,72,55,65,73,53, -64,73,53,64,72,56,63,71,61,60,70,64,60,71,64,60,71,58, -60,72,53,63,72,50,61,72,46,62,74,46,63,75,46,66,75,50, -67,77,51,67,77,54,70,77,54,76,80,54,78,81,53,80,82,57, -80,84,60,82,87,59,88,89,58,91,90,57,94,89,60,100,91, -57,101,94,55,101,97,60,100,97,63,99,93,71,104,94,63, -109,96,58,113,100,58,118,105,61,120,107,63,124,109,66, -124,110,65,126,110,64,129,113,70,129,116,72,130,118,69, -128,117,72,144,126,68,193,172,76,227,221,103,202,241,156, -175,243,209,164,245,228,158,247,241,152,246,250,146,245, -254,142,244,255,143,244,255,141,245,255,141,245,255,142, -246,255,142,246,255,145,247,255,151,254,255,154,255,255, -155,255,255,167,255,249,167,255,245,166,255,241,164,255, -238,161,255,237,159,255,237,158,255,239,160,255,240,163, -255,238,164,255,236,162,255,236,162,255,239,158,255,249, -152,255,249,148,255,252,145,255,255,143,255,255,142,253, -254,139,250,252,136,242,247,126,233,243,117,220,238,128, -198,218,151,182,193,160,178,184,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,169,176,159,161,173,110, -176,192,94,172,201,100,160,205,118,152,205,133,150,208, -142,131,207,179,89,175,192,47,125,163,64,105,111,80,105, -90,87,105,81,88,102,75,89,99,72,90,97,70,86,92,72,86, -90,65,86,90,66,82,88,64,79,85,64,75,84,63,73,81,68,74, -81,69,73,81,67,73,78,67,74,76,62,73,75,60,73,74,57,74, -74,55,74,75,55,73,78,55,73,79,53,71,80,54,68,80,57,67, -79,58,64,78,58,68,76,63,65,75,64,65,75,61,67,76,57,68, -74,56,71,73,58,69,72,57,67,73,56,66,75,55,66,75,55,66, -74,57,61,72,59,59,69,61,63,71,63,64,71,60,66,72,55,68, -74,50,65,75,49,67,76,49,67,78,49,68,78,52,66,79,50,66, -78,53,68,78,52,71,80,51,73,80,51,77,82,57,80,82,60,81, -83,61,87,86,61,87,87,60,88,86,63,94,91,51,98,94,52, -100,95,56,100,94,57,97,90,63,100,92,54,104,96,51,109, -100,54,113,103,56,116,104,57,120,109,60,123,111,61,124, -109,61,129,113,68,129,113,68,132,115,66,128,115,68,128, -115,72,157,141,55,214,199,79,230,225,132,193,234,197,174, -238,221,166,241,237,158,243,249,151,243,254,147,242,255, -146,243,255,143,242,255,143,244,255,143,245,255,142,245, -255,143,246,255,151,254,255,154,255,255,154,255,254,166, -255,248,166,255,244,165,255,239,165,255,238,163,255,237, -161,255,239,161,255,242,160,255,242,161,255,240,162,255, -239,159,255,241,156,255,245,148,255,255,143,255,255,139, -254,255,134,251,254,131,243,252,130,225,247,131,202,221, -149,187,201,152,177,190,162,175,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,170,178,148,172,190,101,175, -200,100,162,204,123,156,204,134,148,207,155,115,196,195, -58,146,182,57,112,132,77,105,101,87,104,86,92,103,79,92, -100,73,91,96,70,89,93,71,84,88,72,87,87,69,85,86,68, -81,84,68,79,83,69,77,82,71,74,80,69,74,79,69,76,80,70, -74,76,68,76,77,62,75,78,58,75,78,55,76,79,54,74,79,55, -71,79,60,71,79,59,70,80,60,67,79,61,68,80,63,70,80,60, -69,77,65,67,76,67,68,75,67,70,75,64,72,75,60,75,75,62, -74,74,59,73,75,58,72,76,58,71,76,58,71,75,60,66,73,59, -67,71,57,69,73,60,70,73,61,73,72,60,70,73,55,69,76,54, -70,78,54,71,78,54,72,79,56,70,82,53,69,81,54,70,80,54, -71,80,54,73,81,54,75,81,55,78,81,57,80,82,60,82,84,62, -83,84,61,87,84,60,94,89,51,94,93,54,96,93,56,98,93,58, -95,90,60,98,92,55,101,95,55,103,97,57,108,100,60,112, -103,64,117,106,67,121,108,67,124,110,66,127,110,70,129, -110,71,131,113,70,130,116,72,130,118,73,135,123,62,176, -159,71,238,202,93,208,234,166,183,237,203,170,239,226, -163,242,240,157,243,248,151,242,253,146,243,255,144,245, -255,144,244,255,144,245,255,144,244,255,143,246,255,152, -252,255,155,254,255,157,255,255,170,255,253,170,255,245, -167,255,240,165,255,239,163,255,241,160,255,244,160,255, -249,161,255,249,159,255,247,156,255,247,152,255,250,144, -252,253,134,248,251,120,246,251,103,243,252,81,227,250, -90,190,215,133,169,189,184,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,172,177,152,173,188,98,177,199,97,162,205,113, -158,209,120,141,203,170,100,177,190,49,127,155,63,112, -114,82,107,93,89,104,85,92,101,78,92,97,72,91,95,71,89, -91,73,84,87,66,84,85,69,82,82,69,79,82,66,79,82,64,79, -81,70,78,81,62,77,80,61,76,78,60,77,76,62,77,78,59,76, -79,54,76,80,51,78,83,55,75,80,60,71,78,68,72,78,64,73, -80,59,71,80,58,69,80,56,72,79,56,68,78,60,69,77,56,71, -77,57,74,77,57,76,77,55,77,78,56,77,78,52,79,80,52,79, -81,53,78,81,53,77,79,54,75,77,56,77,77,55,74,75,59,72, -74,62,76,74,64,75,76,65,74,78,62,75,78,61,75,78,57,74, -78,57,74,82,53,73,84,52,72,83,52,72,82,51,74,82,49,76, -82,47,75,80,56,77,82,61,80,83,60,82,84,56,88,86,56,92, -88,57,91,91,58,92,91,59,95,92,63,95,91,69,97,92,61,97, -94,59,99,96,60,102,98,61,107,101,64,113,103,68,119,105, -70,121,108,70,125,111,69,127,112,67,129,114,67,129,115, -73,131,116,73,131,116,74,149,130,64,211,178,50,219,231, -114,196,238,166,175,238,203,166,241,228,160,243,244,154, -244,254,146,245,255,143,245,255,143,244,255,142,243,255, -142,243,255,143,245,255,151,252,255,155,254,255,158,255, -255,170,255,254,168,255,246,166,255,244,165,255,245,162, -255,248,160,255,251,160,254,253,158,253,252,152,252,252, -146,251,252,136,243,248,129,227,246,119,201,238,90,186, -229,123,175,196,140,168,175,183,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,184,167,172,142,177,184, -96,179,196,94,164,201,105,160,205,117,117,198,174,80,156, -171,60,113,137,75,106,108,86,103,90,91,101,83,91,98,76, -91,98,72,89,95,70,85,90,70,85,89,64,78,86,67,76,85,68, -74,82,64,77,79,58,78,79,65,75,80,59,74,81,58,74,81,57, -75,79,58,74,81,58,75,83,55,76,85,55,77,86,59,72,82,62, -68,79,67,73,76,62,78,77,59,78,78,58,76,78,55,78,77,56, -73,75,58,79,74,51,84,75,53,83,77,54,82,80,55,81,81,55, -79,82,53,79,84,54,81,86,55,83,87,55,83,87,57,81,86,59, -80,84,57,80,80,61,78,76,63,78,76,63,77,75,67,76,78,64, -77,79,63,78,79,60,76,80,61,78,83,53,78,84,52,78,84,52, -76,83,52,76,83,51,78,83,53,75,81,58,72,80,59,77,82,59, -80,83,55,82,84,57,82,88,57,87,89,56,90,89,57,90,89,59, -90,88,65,96,90,58,98,93,58,99,95,59,99,97,60,102,97, -61,109,100,64,116,102,67,119,106,71,120,111,67,121,113, -63,126,112,64,126,113,70,126,114,68,127,117,69,130,122, -54,157,150,36,231,200,86,222,224,149,196,231,192,175,235, -220,165,239,241,157,240,252,147,242,255,145,242,255,146, -243,255,142,243,255,138,243,255,138,244,255,145,251,255, -150,253,255,155,255,255,163,255,254,161,255,247,159,255, -246,157,255,248,155,254,249,153,252,250,151,250,250,143, -245,247,120,239,242,105,227,234,96,204,227,148,176,198, -167,171,190,168,174,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -171,174,154,177,185,107,181,197,89,168,201,107,160,202, -134,104,180,200,65,139,168,62,116,119,76,108,99,87,103, -85,91,101,76,92,99,74,91,96,75,88,92,74,85,89,70,85, -89,63,78,88,64,75,85,62,74,84,60,79,82,60,82,84,63,79, -84,62,76,84,63,74,82,58,77,82,50,78,86,57,78,86,61,79, -87,66,77,85,68,73,83,67,69,79,63,74,76,65,80,79,61,84, -83,60,83,82,58,83,81,57,78,80,55,87,80,51,94,85,50,93, -87,50,90,88,58,89,88,60,86,88,64,83,87,60,85,89,55,87, -90,54,87,90,60,84,88,65,83,86,59,86,85,61,86,83,63,85, -82,64,82,81,62,79,82,61,82,83,60,83,86,59,78,83,62,80, -85,52,83,88,52,84,89,55,81,86,59,80,84,63,82,85,64,81, -87,55,77,88,47,77,84,52,78,82,61,82,84,62,81,87,61,86, -86,64,91,89,65,92,91,62,90,88,64,95,90,59,100,94,59, -102,97,62,99,95,60,98,93,59,106,96,62,115,101,64,117, -104,71,117,106,75,118,107,76,125,109,75,125,112,76,127, -116,67,126,119,67,126,118,68,136,121,79,205,175,47,220, -223,105,202,239,158,179,239,195,167,241,224,160,244,239, -150,245,250,148,244,255,148,245,255,144,245,255,139,243, -255,139,243,255,144,251,255,150,254,251,156,255,247,163, -255,247,161,255,250,158,254,252,156,252,252,153,247,247, -155,238,242,154,225,236,139,207,226,134,186,208,148,175, -194,177,182,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,173,178,163,173,184,110,183, -192,91,171,197,109,143,201,128,93,161,184,66,120,156,73, -107,117,81,102,97,91,98,83,91,98,75,88,99,73,83,94,72, -82,90,71,83,88,69,80,89,62,75,83,60,77,82,60,77,82,59, -77,82,60,80,82,61,78,83,61,80,81,63,82,79,60,85,86,55, -88,86,61,84,86,64,82,86,68,80,84,69,79,81,67,82,78,66, -81,77,67,86,79,63,91,80,60,94,79,58,95,79,59,96,81,60, -100,83,57,104,85,54,106,87,54,103,87,62,103,87,64,101, -85,67,99,81,61,101,84,56,102,87,56,102,86,62,101,85,69, -97,86,64,93,85,64,90,83,64,89,82,64,92,79,63,92,79,63, -90,82,61,90,84,60,90,83,65,88,88,57,87,90,54,85,90,56, -80,86,58,77,85,62,77,86,62,81,88,55,82,90,49,79,87,54, -79,82,61,79,83,60,80,83,58,83,86,64,86,87,62,89,88,60, -90,85,63,94,89,59,97,93,57,101,95,60,99,94,59,99,93, -59,102,96,61,109,100,62,112,101,69,113,102,72,117,104, -74,124,106,73,126,107,74,130,113,67,132,116,67,130,116, -69,131,118,76,159,154,18,212,201,88,224,225,155,200,229, -195,177,233,221,165,240,238,156,242,250,148,240,255,147, -242,255,145,241,255,142,240,255,137,241,255,143,247,255, -151,251,249,159,255,246,160,255,246,151,252,246,142,248, -246,132,240,239,123,231,231,120,219,223,150,188,202,176, -181,190,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -175,176,168,171,181,119,183,195,85,173,202,93,137,189, -154,81,155,151,61,123,121,72,111,96,82,106,85,91,99,81, -90,97,81,84,94,78,81,91,75,81,89,72,82,87,72,78,84,75, -77,84,68,78,84,63,78,84,58,78,85,53,82,85,56,81,89,52, -83,88,47,89,91,49,89,92,57,90,91,56,87,92,56,84,92,55, -80,89,52,82,88,53,86,86,55,84,84,54,88,83,56,92,83,53, -97,86,50,101,88,51,101,90,48,105,91,50,108,92,51,107, -90,51,105,91,55,107,93,63,106,93,64,106,91,65,107,90, -66,106,92,62,105,93,57,106,92,64,102,94,65,98,91,64,94, -89,61,93,89,51,98,90,49,98,88,61,94,87,68,91,85,69,92, -87,67,91,91,61,88,91,58,86,90,61,81,86,63,80,88,67,80, -88,66,83,89,63,84,91,58,86,94,60,83,90,56,82,87,55,82, -85,65,85,89,61,89,89,61,90,89,61,93,89,62,96,92,63,97, -92,63,99,94,64,102,95,66,101,94,64,103,96,65,109,98,64, -112,100,67,112,102,66,116,105,65,124,108,63,125,109,62, -127,108,73,129,111,78,130,114,77,131,117,73,143,121,73, -189,177,68,216,227,105,201,241,149,176,240,192,163,241, -228,155,242,245,149,241,255,147,243,255,145,243,255,142, -243,255,136,241,255,140,243,255,150,244,254,158,246,252, -157,240,248,151,229,242,147,216,231,148,201,213,154,184, -200,173,182,188,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,178,181,175,173,176,120, -192,186,90,183,192,96,124,183,144,87,138,142,76,112,119, -82,105,96,88,101,85,90,100,79,87,96,77,84,92,75,82,89, -73,82,87,70,81,86,70,75,82,72,77,84,68,78,84,63,80,84, -59,81,86,55,87,85,58,89,87,53,90,92,51,93,95,52,94,94, -58,95,94,58,93,91,57,92,88,56,91,88,56,92,88,57,91,87, -58,92,85,58,97,83,61,100,84,58,106,87,55,113,88,56,114, -92,53,116,93,57,114,94,57,112,95,58,113,95,62,114,95, -67,111,95,68,108,95,69,106,94,68,107,94,64,111,96,62, -108,94,67,107,92,66,104,89,66,103,87,65,109,87,58,114, -91,57,112,92,69,108,89,74,102,87,74,99,87,71,99,86,63, -100,88,61,98,87,65,89,82,65,85,83,67,85,85,66,91,86, -64,98,88,61,100,90,62,95,91,59,92,89,59,87,85,65,87, -87,60,89,89,60,90,89,60,91,88,60,87,91,60,90,93,62,94, -95,63,96,94,62,98,94,62,99,95,62,102,98,60,105,101,64, -109,100,64,115,102,63,119,108,60,119,112,60,123,110,71, -124,110,74,127,112,73,130,115,70,131,121,68,176,146,43, -227,199,90,232,227,151,199,228,193,174,232,227,161,237, -244,151,240,254,145,240,255,143,241,255,140,243,255,131, -239,255,128,243,252,122,244,245,115,240,240,119,229,232, -126,191,222,154,173,199,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,182,183,181,171,174,128,191,186,94, -183,192,96,116,167,168,82,133,129,74,114,101,82,107,83, -88,103,74,88,99,71,85,96,65,83,94,61,83,92,61,82,90, -63,81,87,65,76,86,66,78,87,59,79,86,58,82,88,56,84,90, -50,89,92,44,92,92,51,93,94,57,94,94,58,95,95,57,97,95, -63,96,94,58,95,94,54,94,92,51,95,93,54,95,93,60,97,91, -61,103,92,60,108,94,61,111,92,58,116,93,60,117,94,63, -119,96,69,118,98,71,115,97,70,115,95,73,117,97,79,115, -98,81,112,98,80,109,96,75,112,98,72,114,98,71,109,95, -73,110,95,72,107,93,67,107,92,64,114,92,64,119,95,67, -116,99,64,112,97,66,106,94,67,102,92,64,104,93,65,105, -93,66,102,93,67,95,90,65,90,90,64,88,90,63,94,91,59, -101,94,56,104,98,58,98,95,56,95,93,62,92,93,60,91,92, -59,91,92,59,91,91,57,93,92,55,87,91,57,87,91,59,91,92, -60,95,94,58,98,95,59,100,95,64,101,96,68,103,98,66,109, -100,67,116,103,68,119,107,68,119,111,61,125,115,60,127, -116,61,128,116,60,131,117,56,132,122,65,164,126,60,209, -177,80,230,232,110,202,241,140,176,241,195,162,242,225, -151,243,240,145,242,251,144,243,255,141,242,254,136,235, -250,133,217,241,119,203,232,135,185,203,162,179,186,173, -180,181,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,183,183,182,168,172,127,186,183,91,177, -188,91,95,163,155,75,125,121,76,110,99,82,106,82,86,103, -73,88,98,69,86,94,63,85,93,61,83,92,62,80,88,62,79,86, -65,75,84,66,79,86,60,83,86,58,86,86,56,91,89,52,93,96, -47,93,96,53,95,94,57,97,92,58,104,95,60,105,93,64,102, -91,58,102,92,55,102,92,55,104,94,59,103,93,63,105,92, -65,107,94,64,113,95,63,116,95,62,117,96,62,124,93,64, -121,95,68,121,96,71,119,98,74,116,97,75,117,98,78,117, -97,81,117,96,81,117,96,79,118,97,75,119,97,73,118,93, -75,119,94,74,118,92,71,120,93,70,123,94,69,123,96,68, -122,99,66,121,99,70,115,97,72,115,96,72,116,96,72,110, -98,71,106,98,72,102,96,72,102,94,73,101,92,71,99,94,64, -99,96,57,104,99,59,101,97,59,96,96,65,91,98,64,91,96, -62,91,95,62,89,95,60,92,95,57,89,93,59,88,91,61,88,90, -58,92,93,56,97,94,58,101,94,64,101,95,68,103,96,66,109, -99,67,112,101,66,114,105,66,119,108,61,125,114,61,129, -115,62,130,116,61,131,119,57,131,120,64,139,128,50,177, -155,54,238,210,101,232,224,143,195,230,196,168,237,224, -155,239,239,147,239,249,145,239,252,144,235,250,135,223, -240,111,190,220,142,170,194,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,183,164,168,129,183,175,110,174, -183,98,86,150,165,70,120,118,76,110,98,81,105,84,84,102, -74,86,97,67,86,95,64,85,93,63,83,92,61,82,91,59,82,91, -59,76,88,56,79,88,55,84,90,53,89,93,51,95,96,52,94,98, -56,93,98,54,95,96,56,98,95,55,105,96,56,107,97,59,104, -96,53,104,96,51,105,97,51,106,100,50,107,102,50,110,101, -57,109,98,59,114,97,64,120,97,69,120,98,72,128,98,61, -126,102,71,127,102,78,125,103,82,120,100,84,120,101,80, -118,99,78,118,98,77,120,100,78,121,100,78,121,99,76,121, -99,72,123,101,69,123,99,70,125,100,71,128,102,66,125, -100,67,124,101,72,123,101,75,119,102,73,121,105,71,123, -105,67,118,108,68,111,106,69,105,101,69,106,101,72,106, -100,72,102,97,76,103,99,70,103,97,71,103,98,74,99,100, -66,93,98,69,93,100,64,94,100,65,92,98,66,94,96,67,92, -95,68,90,93,62,89,92,60,90,91,59,96,93,59,101,95,61, -100,96,63,101,94,65,108,98,66,111,101,63,112,104,64,118, -107,63,124,113,63,129,115,62,129,116,61,130,116,64,131, -119,68,135,121,64,162,140,52,223,199,80,231,232,115,196, -239,167,168,238,220,156,241,236,147,240,245,146,238,249, -149,231,240,146,201,221,180,184,186,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,182,185,182,183,185,183, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,177,181, -165,166,179,99,169,180,88,75,145,158,68,117,116,77,109, -97,81,103,83,84,99,71,84,98,66,83,96,63,83,93,60,83, -91,59,84,89,58,85,88,58,85,87,58,85,87,58,87,90,55,89, -95,52,92,98,51,91,98,53,94,97,52,98,95,56,101,93,55, -107,94,56,111,96,61,115,97,58,118,98,57,117,97,55,119, -99,55,120,101,54,119,100,60,118,99,62,115,98,64,115,98, -67,120,96,69,129,100,61,126,103,71,123,102,76,122,101, -79,121,98,82,120,98,76,120,97,77,121,95,76,125,95,75, -126,93,74,127,95,76,127,98,73,131,100,72,135,102,76,136, -102,77,134,107,71,127,107,72,125,102,73,127,100,77,129, -101,76,135,104,74,131,107,70,127,108,70,125,108,74,120, -104,76,114,103,74,109,102,73,107,95,77,109,97,72,108,95, -74,106,95,75,108,97,68,100,97,72,98,98,67,98,98,67,97, -98,67,99,96,68,95,96,70,89,94,62,88,94,60,87,91,58,90, -92,56,94,94,57,96,94,61,100,93,64,103,95,62,107,99,61, -111,103,63,114,104,61,117,109,58,123,112,57,125,113,57, -127,114,62,131,115,65,132,119,61,149,127,39,212,182,64, -240,221,110,214,231,168,171,234,217,159,237,233,147,234, -241,144,231,241,155,219,228,137,198,207,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,180,183,179,181,185,181,182,184,182,183,184, -183,184,185,184,184,185,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,184,183,164,170,128,165,184,46,72,146,138,68, -119,103,77,110,91,80,104,81,84,98,75,83,96,73,81,93,68, -83,92,63,83,92,56,85,92,51,86,91,48,87,94,35,90,98,40, -93,100,50,91,98,57,93,97,60,92,97,64,93,95,55,98,96, -58,104,96,61,108,95,52,111,95,63,115,96,60,119,100,59, -122,102,59,123,103,66,123,102,72,122,103,64,122,105,63, -119,103,68,115,98,71,120,94,81,128,97,67,124,98,80,121, -99,83,120,99,78,121,99,78,119,97,78,116,94,73,119,94, -68,124,96,66,125,95,66,127,95,74,126,95,88,132,98,87, -137,103,83,139,106,79,136,107,90,130,110,78,130,109,74, -133,108,74,133,107,72,137,108,68,134,110,78,131,113,74, -128,114,71,125,112,73,118,109,77,111,103,79,110,98,81, -111,99,74,111,99,74,111,101,77,113,101,80,101,99,71,99, -98,68,101,100,71,99,100,69,102,100,62,99,101,64,94,99, -61,91,97,58,90,95,58,89,92,59,94,93,64,98,94,64,102, -96,60,105,98,56,106,100,53,111,102,63,115,107,61,118, -110,56,124,113,57,127,114,60,128,115,62,131,115,65,133, -119,67,147,122,53,196,161,68,235,216,101,215,240,135,173, -238,205,159,240,219,148,232,232,148,224,233,162,208,216, -158,185,196,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,181,184,181,180,184,180,182, -184,182,183,185,183,184,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,166,162, -147,228,136,30,113,118,133,95,102,100,93,100,89,92,96, -81,89,94,74,86,91,71,79,89,65,79,90,60,84,93,56,86,91, -51,90,92,49,94,97,40,89,105,43,88,101,49,86,97,55,88, -96,57,93,92,62,97,94,55,101,95,59,103,93,58,116,95,55, -115,95,63,114,95,59,118,100,57,122,105,60,121,104,64, -119,102,70,129,101,64,130,105,65,125,103,69,118,101,73, -113,96,80,121,97,63,111,96,73,111,94,76,118,93,73,120, -89,71,118,90,73,116,90,69,119,92,66,124,96,66,128,96, -67,129,95,74,121,91,83,123,91,78,133,95,77,140,98,74, -140,98,86,137,108,78,135,111,75,134,112,75,133,111,72, -134,113,69,131,110,77,131,111,72,135,114,72,132,111,74, -126,107,78,120,102,82,116,98,83,116,100,75,113,101,75, -110,100,76,110,99,77,111,97,74,108,99,70,107,100,72,104, -99,70,105,101,63,101,100,64,96,99,62,94,98,61,93,97,61, -92,95,62,93,94,65,94,95,63,99,95,58,103,98,56,104,100, -53,111,99,61,111,107,60,117,108,54,122,113,56,124,115, -58,127,116,62,125,117,65,129,117,64,138,123,50,170,153, -53,223,205,88,232,231,135,180,233,204,163,233,215,153, -226,227,151,214,219,154,200,201,183,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,183,185,183,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,180,180,178,217,135,61,113,116, -126,94,101,96,93,99,85,93,98,77,89,94,73,87,93,68,81, -92,63,79,90,55,84,93,53,89,95,50,95,97,50,98,100,56, -90,101,63,87,98,61,87,97,58,89,96,58,96,96,50,100,96, -51,102,96,54,104,94,51,116,96,53,117,97,69,118,99,70, -120,101,70,119,100,71,115,97,70,115,96,70,127,99,66,128, -102,73,124,101,73,117,100,69,113,99,62,121,96,68,108,91, -83,103,84,74,111,84,63,119,87,63,118,89,71,116,87,74, -117,87,75,121,90,76,126,93,75,126,93,75,118,88,79,120, -87,79,130,91,75,138,96,72,140,101,69,137,107,70,136,111, -74,135,112,75,135,112,74,134,111,74,131,110,72,132,112, -70,134,112,69,132,111,67,129,110,67,123,106,68,118,102, -76,118,103,69,115,103,72,110,100,74,109,99,73,114,100, -68,110,99,73,107,99,73,104,98,70,102,98,72,104,104,63, -100,103,67,97,101,67,95,99,64,95,98,64,96,97,67,96,96, -64,101,96,63,104,99,58,105,101,54,113,101,58,112,107,58, -119,108,56,123,113,60,124,114,61,130,116,65,126,116,66, -130,116,67,139,121,64,162,141,64,213,195,78,231,234,104, -183,237,187,166,232,204,155,220,221,152,200,214,168,184, -193,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,185,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,180, -180,179,169,150,47,95,121,112,87,107,89,88,102,82,87,98, -75,84,95,74,82,95,69,80,93,63,81,92,57,87,96,54,91,99, -51,92,102,51,91,100,54,85,96,58,85,95,59,88,94,56,92, -93,55,99,96,53,102,96,54,104,95,54,105,95,53,111,96,55, -109,97,70,108,94,66,110,96,65,109,94,65,107,92,65,109, -92,65,114,93,61,114,94,64,113,92,64,111,92,61,112,93, -59,111,92,64,103,82,78,101,76,70,111,83,64,115,89,66, -118,89,71,114,87,75,112,86,76,113,86,74,114,87,71,114, -87,70,111,81,72,112,79,69,123,88,69,130,94,66,135,98, -64,138,101,68,138,105,72,136,106,72,134,105,71,136,103, -72,133,104,72,134,106,71,138,109,71,140,109,70,137,108, -67,133,107,70,120,103,79,120,101,71,119,101,73,112,97, -73,111,96,72,121,98,65,114,100,71,110,100,70,108,100,69, -101,97,71,103,103,59,101,103,64,97,101,64,97,102,65,96, -100,65,95,98,68,93,97,64,94,97,63,99,99,57,102,101,53, -106,103,55,108,104,54,116,107,54,121,110,56,123,112,58, -128,114,62,128,113,66,130,116,66,134,119,61,155,136,58, -210,185,67,239,227,97,190,230,181,171,229,201,152,211, -213,138,181,195,179,182,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,185,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,177,180,169,136,145,61,85,123,103,83, -108,83,87,104,78,86,99,74,82,94,72,80,92,70,81,91,63, -84,92,58,90,97,58,92,99,58,92,99,59,88,97,56,84,93,57, -84,91,60,88,90,62,94,90,58,96,92,56,97,92,55,102,93, -55,105,94,55,109,94,60,105,92,67,102,88,62,103,89,62, -104,90,64,103,88,66,103,87,68,105,87,67,105,88,67,106, -87,66,105,87,63,104,87,65,102,87,69,100,84,71,101,82, -69,104,85,69,102,83,69,111,87,69,109,88,71,105,85,70, -104,83,72,105,83,75,104,81,76,106,79,72,111,80,59,119, -87,61,123,91,60,128,96,56,130,98,63,130,99,65,128,99, -66,128,99,66,132,101,61,131,104,72,131,104,73,136,105, -72,140,107,71,143,110,75,137,111,81,119,105,85,120,102, -75,118,100,79,112,95,80,109,92,79,120,96,58,116,102,64, -112,101,66,110,100,70,106,98,70,103,99,61,104,103,64, -101,105,64,97,103,60,97,104,60,96,102,62,93,100,62,92, -98,64,95,98,62,99,100,58,102,102,58,107,102,58,112,104, -56,119,109,59,123,113,60,127,115,61,127,116,58,128,119, -58,133,122,56,152,135,53,206,179,62,241,223,93,195,231, -175,172,222,198,146,202,217,152,176,189,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,185,184,185,185,185, -184,185,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -134,167,136,76,120,116,77,107,96,83,102,84,84,97,73,83, -92,70,83,89,66,86,91,59,90,95,58,92,97,59,90,96,60,89, -96,63,85,94,60,81,90,62,83,88,64,85,86,63,89,88,59,90, -88,54,90,88,58,95,89,61,98,90,62,99,87,62,99,86,66,97, -86,62,97,86,61,96,85,63,94,82,65,93,81,67,92,82,67,90, -82,69,93,81,69,95,81,68,96,80,70,93,76,77,92,78,73,93, -78,74,89,76,73,90,76,71,98,79,72,96,80,73,92,77,73,89, -74,73,88,72,74,86,70,72,94,72,64,106,79,56,111,83,59, -112,86,62,117,90,62,117,92,67,119,94,65,121,94,69,121, -95,69,124,101,64,126,104,68,126,103,70,129,103,69,135, -106,71,136,108,73,131,107,74,119,100,76,120,99,73,116, -97,77,110,92,79,110,90,75,116,96,60,120,101,68,117,100, -72,113,98,74,109,97,72,106,97,69,106,101,68,103,103,66, -99,105,62,98,105,61,97,104,63,93,101,63,88,98,63,90,98, -63,95,99,60,101,100,59,107,101,61,110,104,60,116,107,59, -120,108,58,125,112,61,128,116,58,128,118,61,132,120,60, -149,132,55,203,174,60,242,219,91,198,229,173,171,220,195, -137,187,200,184,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,184,184,185,184,185,185,185,183,185, -183,183,185,184,184,185,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,133,178,168,66, -123,124,68,108,100,75,101,85,80,96,74,82,92,68,84,91, -61,87,94,59,90,97,60,90,96,61,86,94,61,83,93,62,80,90, -62,77,87,62,80,85,63,80,85,63,80,87,61,87,84,56,85,84, -62,87,82,65,87,82,65,90,82,63,87,81,69,87,80,65,90,82, -64,90,81,65,88,78,65,87,77,68,81,76,69,79,74,68,81,73, -67,82,72,67,85,72,73,83,69,77,81,69,71,82,69,72,80,69, -73,78,69,72,81,72,73,80,73,74,78,70,73,77,67,71,76,64, -67,76,63,62,85,65,57,92,72,56,97,76,60,99,79,63,101, -82,66,104,82,70,106,85,68,107,87,70,107,88,70,111,90, -71,116,95,70,116,96,71,117,96,69,121,99,69,123,102,68, -123,101,67,120,97,69,114,96,69,113,94,75,111,93,76,116, -92,71,111,95,66,117,96,64,118,98,69,113,98,71,108,98, -72,105,97,65,104,98,62,104,101,62,103,104,63,101,105,63, -101,105,64,96,104,64,90,99,63,90,98,62,93,98,60,101, -100,58,108,102,55,109,105,53,115,108,54,122,111,55,125, -112,60,129,117,60,128,119,63,128,121,61,146,132,57,200, -171,59,243,218,91,198,227,172,168,214,192,148,177,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,184,184,179,185,180,183,185,183,183,185,183,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,120,171,194,66,120,138,66, -106,109,75,101,90,79,96,76,83,93,71,85,95,62,87,95,61, -89,95,62,89,95,60,86,93,58,82,90,59,80,87,59,80,87,58, -83,85,61,82,83,64,78,80,68,87,81,60,86,84,58,86,81,56, -86,80,57,87,79,56,83,79,61,82,77,58,84,78,58,85,77,59, -85,76,61,85,75,63,76,72,67,76,71,67,77,69,69,73,65,69, -74,63,73,72,63,61,72,63,61,73,63,63,71,62,63,69,63,65, -69,64,68,68,63,65,68,62,62,70,63,62,71,62,61,73,61,61, -78,60,65,80,63,68,84,66,72,86,69,71,86,69,75,93,70,68, -93,73,69,93,76,65,93,77,64,100,79,71,103,82,79,105,84, -76,109,87,72,113,91,71,115,94,72,115,92,74,113,91,79, -112,94,70,109,91,73,107,89,75,116,91,73,113,95,65,114, -94,61,118,98,69,114,98,75,105,95,74,105,97,63,105,99, -62,106,102,65,104,103,65,103,105,62,104,107,62,99,105, -69,95,101,68,92,99,65,93,98,61,99,98,61,109,102,58,111, -104,60,116,108,58,123,111,58,127,113,61,129,118,57,129, -121,62,130,123,61,144,132,54,198,170,57,242,218,91,196, -227,176,161,207,203,165,177,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,180,184,181,178,185,179,181,185,182, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,177,187, -182,84,166,198,62,120,141,66,105,111,71,101,90,77,99,77, -81,94,71,87,93,63,89,93,62,89,92,62,88,92,59,86,91,57, -84,88,58,82,87,58,81,86,56,82,85,60,82,83,62,86,78,67, -87,82,60,90,83,57,90,83,57,89,81,58,88,80,57,86,78,59, -85,77,56,84,78,56,81,76,55,80,75,57,81,74,59,75,72,65, -74,69,66,71,67,68,66,65,69,63,62,71,64,62,59,63,61,59, -61,58,60,58,57,58,59,57,59,57,56,61,57,56,59,58,56,57, -58,56,57,60,56,58,63,56,59,63,57,61,64,57,63,70,59,67, -71,59,65,72,59,67,75,61,59,76,65,62,80,65,57,85,68,57, -86,70,62,89,73,70,92,74,68,97,78,65,103,85,66,104,87, -66,105,89,70,103,85,75,108,87,67,107,86,70,105,83,70, -108,85,67,113,92,61,116,96,64,115,99,70,106,95,72,97, -92,71,102,94,63,103,95,62,106,98,64,107,101,65,104,102, -61,105,106,63,105,104,71,99,103,69,92,100,64,90,101,60, -94,100,60,105,102,59,108,105,63,114,106,59,119,111,58, -124,112,61,128,117,58,132,121,64,132,122,62,145,131,53, -197,170,56,239,216,90,188,224,175,147,201,194,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,179,185, -179,182,185,182,184,186,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,180,187,179,153,187,168,78,155,205,60,118,139,65, -105,111,71,102,86,75,99,65,80,96,54,88,95,55,89,93,59, -88,90,63,87,89,66,85,89,66,83,86,64,80,83,62,81,85,58, -80,85,53,80,84,51,87,82,58,87,84,53,90,84,52,93,86,57, -92,85,59,90,80,67,88,78,68,87,76,69,86,76,72,83,74,72, -82,73,72,81,72,73,72,67,71,70,62,73,66,60,72,60,58,69, -58,57,67,58,56,59,57,55,60,56,53,60,52,51,57,52,49,56, -50,48,60,50,48,61,52,49,61,52,49,57,52,49,54,56,50,54, -55,51,52,57,51,53,61,49,59,64,50,63,66,53,61,71,56,56, -70,58,58,75,59,58,79,61,57,81,63,59,81,66,62,85,67,61, -90,71,59,95,76,59,97,79,61,96,80,67,98,79,75,105,82, -76,108,86,73,105,84,63,106,84,63,108,85,67,111,92,60, -111,96,65,106,97,68,99,96,65,100,92,61,101,91,65,103, -93,67,105,99,67,103,100,65,102,101,65,105,104,68,101, -106,65,97,106,63,92,103,61,94,100,66,103,99,60,108,105, -64,114,106,64,116,108,62,122,110,60,128,115,70,130,117, -67,132,121,63,144,131,54,197,171,58,236,215,96,183,216, -180,164,185,189,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,179,185,179,181,185,181,184,186,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,177,189,175,148,182,164, -76,145,201,62,114,137,65,99,108,75,96,84,83,96,67,85, -97,57,85,96,55,84,91,57,83,87,60,83,87,63,81,85,62,80, -84,62,80,82,61,84,82,57,87,83,54,87,83,54,86,82,57,87, -84,54,91,85,54,95,86,57,92,86,60,88,81,65,87,82,68,86, -80,69,84,76,70,83,73,69,81,71,69,78,69,69,72,66,69,67, -61,70,62,58,68,58,56,65,56,53,63,57,54,57,53,53,57,52, -52,57,50,51,56,50,50,54,50,47,58,49,46,58,49,46,56,49, -47,54,49,48,51,49,49,51,50,50,50,50,50,50,53,48,55,55, -48,56,57,50,55,63,55,51,65,57,53,67,59,53,68,62,51,68, -64,54,71,64,55,77,65,55,84,68,54,91,73,54,96,74,56,96, -75,62,90,74,67,88,78,66,100,83,66,105,84,62,106,84,63, -107,83,64,109,89,58,109,93,63,106,95,66,104,94,66,103, -93,63,100,91,63,99,90,62,103,95,64,105,97,63,106,99,64, -103,103,65,100,105,63,99,104,62,96,102,60,93,99,63,99, -101,59,107,105,62,111,106,62,115,107,59,119,109,57,126, -113,67,127,116,64,132,119,61,148,129,54,199,173,61,225, -215,96,167,206,172,171,182,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -185,184,177,185,177,180,185,182,184,186,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,177,186, -182,138,176,170,58,145,148,53,112,98,65,106,74,76,102, -63,83,99,59,84,96,56,84,92,65,83,88,67,82,85,66,80,83, -65,80,82,66,80,81,70,81,82,62,84,81,65,89,83,63,89,84, -59,88,84,63,87,83,63,92,85,60,95,86,62,91,84,60,87,83, -56,86,83,57,85,81,57,84,78,62,83,74,68,81,71,72,78,67, -73,69,62,71,64,59,66,61,57,62,58,57,58,56,55,53,57,55, -50,53,55,45,52,54,42,50,52,38,48,50,38,49,49,40,48,49, -39,48,49,40,48,49,40,48,50,38,48,51,38,48,49,42,48,49, -40,52,50,41,53,49,43,55,50,48,62,54,47,63,55,45,65,58, -47,66,61,47,66,62,48,69,61,50,74,62,48,82,66,49,91,72, -53,95,75,53,97,78,56,89,76,60,85,73,65,94,77,62,102, -82,54,106,85,54,108,86,59,110,90,62,109,93,67,105,94, -67,104,94,64,103,93,67,100,92,64,98,92,58,100,94,55, -103,97,54,105,101,57,103,104,56,101,105,61,99,105,65,96, -102,64,93,99,69,99,99,65,105,104,58,110,107,54,114,108, -52,119,110,58,127,115,60,128,120,59,131,122,53,150,134, -49,202,177,66,222,210,120,165,186,192,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,179,185,180,180,185,180,183,185,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,167,175,171,124,142,139,93,106,137,84,94,96, -84,94,73,86,96,63,85,96,57,86,95,57,84,93,65,80,89,66, -79,85,65,79,82,64,79,80,65,79,79,67,81,82,61,81,81,63, -87,82,61,91,84,59,95,80,64,94,79,62,96,81,58,98,82,60, -96,82,60,95,80,57,93,79,58,90,79,58,87,78,63,81,73,67, -76,69,69,70,67,68,64,61,67,63,56,63,64,54,60,65,53,58, -66,53,56,66,53,53,65,51,50,66,50,48,67,49,46,68,46,45, -70,44,47,69,43,46,69,42,45,69,42,45,69,43,44,68,43,43, -63,42,45,63,43,42,65,43,43,65,43,44,65,44,48,67,46,44, -67,50,43,68,53,43,67,56,44,68,56,44,73,60,50,75,62,48, -78,66,47,83,72,49,87,76,50,93,79,53,94,76,60,89,72,65, -92,75,60,99,82,53,103,86,54,101,88,58,100,93,60,101,93, -63,98,91,63,100,92,61,97,91,63,97,91,62,97,92,58,98, -94,54,100,98,55,102,100,56,102,101,55,99,103,60,99,103, -63,100,102,65,97,98,70,93,100,63,101,104,56,109,105,52, -115,106,50,119,107,55,126,113,57,128,115,55,134,118,51, -153,133,49,198,182,69,198,214,120,161,184,182,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,180,184,181,178,185,178,182,185,183,184,185, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,153,164,153,98,126,81,82,110,55,82, -100,53,84,98,55,86,98,55,85,96,54,85,94,57,83,92,64, -80,90,65,81,87,63,83,86,62,82,84,62,81,82,63,82,83,56, -81,83,53,88,85,53,91,86,53,97,85,56,96,84,53,98,84,54, -99,85,54,97,85,54,97,84,56,96,83,62,92,81,69,89,77,75, -82,72,76,75,67,75,68,63,71,63,61,57,63,60,52,67,61,50, -70,61,54,73,60,61,73,60,59,72,58,55,73,58,55,74,57,53, -78,57,49,79,56,49,79,56,47,80,57,46,81,57,47,80,56,51, -78,55,56,73,54,55,72,54,54,72,52,55,73,52,57,73,52,58, -72,52,53,69,53,50,69,54,51,67,55,49,68,55,50,73,59,54, -75,61,53,78,65,53,81,69,53,85,73,55,91,75,57,95,79,51, -92,80,50,95,82,50,100,84,48,102,87,49,101,90,55,100,91, -61,99,91,62,97,90,59,97,89,59,94,89,59,94,91,56,96,93, -56,97,94,56,98,95,57,100,99,58,102,102,56,97,103,58,97, -102,63,100,105,65,101,106,59,94,102,67,99,103,59,108, -104,58,114,105,58,119,106,56,126,111,63,130,115,63,135, -119,51,156,137,49,202,184,88,191,201,150,165,178,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,185,185,185, -185,185,185,185,178,185,179,181,185,182,184,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,182,183,183,181,181,181, -185,185,185,184,184,184,146,148,140,99,99,63,93,94,50, -92,92,54,89,94,55,89,93,54,89,94,54,85,91,55,84,88,62, -81,85,62,80,84,60,81,85,60,80,82,58,82,79,60,86,77,54, -90,79,51,95,83,53,97,84,54,99,83,56,99,84,55,100,85, -56,100,85,56,100,85,56,99,84,58,94,85,63,86,82,68,80, -78,72,74,71,73,69,64,72,69,59,70,74,59,61,79,62,59,82, -65,58,81,64,60,80,60,64,82,56,62,85,55,59,87,54,58,87, -54,57,90,55,53,90,56,54,89,55,50,91,55,49,93,58,52,91, -58,56,89,57,62,90,57,63,89,56,62,89,54,63,88,53,65,87, -53,66,87,55,61,85,56,58,85,56,58,85,56,56,85,56,57,81, -55,56,77,59,53,75,63,51,77,67,51,82,71,54,88,73,54,90, -78,49,92,81,50,94,84,49,96,86,46,98,89,47,96,91,52,98, -90,59,96,90,58,94,90,56,91,88,57,88,86,56,89,90,55,91, -92,54,92,90,52,97,92,53,101,94,54,104,98,53,104,98,57, -101,97,60,100,101,63,105,105,61,97,101,69,93,102,59,99, -104,57,105,105,54,114,107,53,124,108,60,128,112,60,139, -115,49,162,138,52,193,191,86,159,188,131,165,174,181,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,184,185,185,185,185,185, -185,178,185,179,180,185,180,183,185,184,184,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -166,170,167,142,149,135,112,119,84,94,95,51,93,93,59,94, -94,60,90,94,58,89,94,57,88,94,57,84,91,58,83,88,62,81, -85,60,80,85,59,80,84,59,80,82,60,83,81,59,89,81,56,93, -85,51,99,89,53,99,89,50,103,88,52,105,90,61,104,90,54, -104,90,55,105,90,59,101,86,64,93,83,69,85,82,67,78,79, -62,73,75,59,72,72,59,75,70,63,81,67,70,84,66,68,84,64, -68,83,64,67,81,61,64,83,58,58,88,58,59,92,60,63,93,61, -63,97,63,63,95,61,66,94,60,66,97,62,65,98,64,63,96,64, -64,95,63,68,95,63,69,94,61,71,94,61,71,94,60,72,93,59, -75,91,59,65,89,60,75,88,59,75,89,59,69,90,61,63,88,62, -63,82,64,59,77,63,60,75,63,64,80,66,66,88,72,62,90,76, -60,94,81,58,96,86,55,98,87,56,99,87,66,97,89,66,98,91, -58,97,91,60,94,89,64,92,86,69,88,87,58,87,86,61,88,87, -59,91,89,54,96,91,54,101,92,60,102,94,59,103,96,60,101, -98,58,99,101,57,104,104,59,100,105,67,96,104,64,100,103, -62,106,104,61,113,103,62,126,111,59,130,115,58,139,120, -35,169,147,50,194,181,143,146,159,178,182,183,183,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,179,185,179,182,185,182,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -142,146,141,98,102,73,93,95,50,93,94,51,94,90,60,95,92, -59,89,94,57,86,94,55,83,94,54,85,89,57,85,86,62,83,84, -60,84,84,59,83,81,59,83,80,60,84,80,60,86,83,57,94,86, -52,103,88,54,106,88,52,107,89,53,106,89,61,103,91,54, -103,94,55,101,92,59,97,87,63,90,83,67,85,77,63,84,73, -60,85,72,60,85,70,62,85,68,66,82,65,69,86,61,65,90,58, -66,92,56,67,94,57,68,95,58,64,100,61,67,101,62,68,98, -63,66,99,65,64,103,65,72,103,64,72,105,65,69,109,67,69, -112,67,72,111,64,76,111,65,77,108,66,81,107,64,79,106, -63,80,103,61,83,100,63,72,97,59,80,91,58,77,87,58,69, -90,60,64,94,62,66,94,62,63,95,63,68,91,59,69,88,61,66, -89,68,60,92,73,58,95,80,56,100,86,55,101,87,58,97,86, -66,98,85,65,98,89,57,98,91,60,93,89,64,87,86,66,87,84, -55,82,85,58,78,83,52,82,86,48,86,88,49,90,90,55,95,93, -55,97,96,57,100,98,57,101,98,55,98,101,54,97,100,62,94, -100,62,95,102,60,99,104,58,107,105,60,116,112,55,121, -117,53,135,120,32,166,150,51,156,172,128,127,155,166,182, -184,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,181,185,182,180,185,180,183,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,174,176,174, -142,151,142,104,118,81,89,96,50,93,96,54,92,93,53,95, -93,53,95,92,61,89,93,58,85,92,58,79,88,57,84,86,63,85, -84,64,85,84,64,84,84,61,84,84,58,85,84,55,85,84,53,85, -84,53,93,88,46,104,91,47,109,91,51,109,90,60,106,87,70, -105,91,65,103,91,65,98,87,65,95,83,69,89,81,71,87,78, -69,88,76,70,88,73,71,86,68,74,84,64,78,79,62,71,86,62, -58,91,62,54,95,62,55,98,62,64,100,64,64,105,66,67,108, -69,70,105,71,70,104,70,69,108,70,71,110,71,70,112,72, -69,114,72,68,119,75,71,120,74,72,118,75,66,113,75,64, -114,76,65,113,74,67,111,73,72,107,72,75,104,68,78,99, -68,76,92,66,69,92,62,72,95,61,74,95,62,73,97,64,74,98, -67,73,93,66,67,88,67,65,90,67,76,92,74,70,99,84,63, -102,89,54,97,89,53,98,88,54,100,91,60,99,93,61,95,92, -61,89,89,65,88,84,58,84,86,62,80,84,63,81,82,65,85,82, -67,89,86,69,93,88,69,96,92,67,101,96,67,101,96,64,96, -97,63,96,97,65,94,100,66,94,100,66,97,102,61,108,110, -45,117,114,50,121,117,50,135,115,49,161,139,80,131,145, -106,136,161,147,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,181,185,181,182,185,182,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,150,157,149,93,106,89,87,93,48,88,95,47,89,95, -52,90,94,53,90,94,54,88,95,60,84,94,57,85,92,57,84,89, -58,84,87,63,83,86,63,82,85,64,84,85,62,86,85,59,89,84, -57,95,85,57,98,84,57,106,88,51,110,90,50,112,92,54,111, -90,62,107,86,68,104,87,63,103,87,63,99,83,63,96,77,65, -94,76,68,92,75,68,92,74,70,91,72,72,87,66,72,87,61,75, -89,59,71,96,62,60,101,65,58,101,66,60,101,66,67,106,67, -68,106,67,68,108,69,69,108,69,69,111,71,72,113,72,73, -112,74,71,112,76,70,111,77,69,112,78,71,114,78,73,118, -77,67,116,76,67,115,77,68,114,76,70,113,75,74,111,73, -77,109,70,79,107,67,77,106,66,73,105,63,76,102,64,78, -97,63,75,96,64,73,95,65,71,97,68,70,98,68,70,95,63,73, -92,68,66,98,79,60,99,85,52,101,86,54,103,88,56,101,87, -58,100,87,57,100,87,58,95,86,63,92,85,59,91,86,64,88, -86,66,84,84,66,84,83,67,87,82,66,89,85,64,90,89,62,95, -94,63,96,94,59,97,94,60,95,95,63,91,96,62,93,95,63,96, -97,57,107,106,44,120,110,48,119,116,48,117,122,51,118, -130,69,122,136,104,178,179,178,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,183,185,183,181,185,181,183, -185,183,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -179,181,179,164,169,164,118,132,110,87,102,59,91,97,50, -89,96,49,90,96,51,91,95,50,91,96,53,89,97,55,86,96,55, -87,93,53,87,92,53,88,90,57,87,89,59,86,87,64,85,84,64, -88,84,62,91,84,60,95,85,63,100,86,64,106,87,65,111,90, -66,112,92,64,112,90,66,108,88,68,105,88,66,103,87,61, -102,86,57,101,84,60,98,80,61,95,77,63,94,75,68,91,71, -69,91,69,69,94,67,66,97,65,63,105,69,60,110,71,61,109, -71,62,110,71,71,112,73,56,112,74,59,115,75,61,116,76, -62,120,78,65,120,78,69,119,79,75,117,79,80,113,77,82, -112,76,84,114,78,79,121,83,55,120,81,63,120,82,69,120, -82,67,121,84,70,119,81,69,116,76,74,114,74,76,114,72, -75,114,70,74,111,72,79,106,70,75,102,69,74,99,69,72,99, -71,70,100,71,68,103,72,68,98,74,64,96,74,65,97,78,68, -99,81,71,101,84,74,102,89,64,102,89,58,101,89,54,99,90, -54,96,89,55,94,90,54,90,89,56,86,87,60,84,84,64,90,86, -66,92,90,55,91,91,57,95,96,56,98,98,53,99,99,55,98,99, -58,91,97,58,92,95,58,94,96,57,101,100,58,119,110,44, -121,117,49,113,117,67,106,115,94,149,154,149,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,181, -185,181,183,185,183,183,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,184,168,173,166,132,143,125,95,109, -76,91,102,54,90,97,49,92,94,49,95,94,51,95,94,51,95, -94,55,93,94,57,93,93,56,92,92,56,92,92,55,96,90,59,96, -88,63,92,86,66,88,84,64,87,83,62,88,81,61,90,82,64,92, -83,66,98,83,67,105,85,65,109,87,62,112,87,64,110,87,73, -105,86,70,105,86,64,107,87,59,104,83,63,100,81,66,96, -76,68,94,72,70,94,69,71,99,69,71,103,69,65,105,69,63, -109,69,61,119,73,64,121,74,65,117,72,74,125,78,55,125, -82,58,126,84,63,126,87,69,129,89,80,126,86,78,120,84, -83,115,82,88,108,77,90,105,74,91,111,75,85,131,87,60, -130,89,72,131,90,73,130,88,67,132,86,71,134,88,72,130, -84,79,125,80,81,122,79,80,125,77,79,116,75,79,111,74, -77,108,74,77,100,71,74,98,70,72,99,71,71,100,72,72,104, -75,69,100,74,67,96,75,68,93,77,68,91,77,70,101,85,64, -105,87,61,104,88,58,104,87,57,100,89,58,99,89,56,98,89, -58,95,87,60,90,83,62,91,85,63,96,90,56,93,87,57,95,92, -57,96,96,54,98,97,55,96,97,60,93,96,60,89,94,57,89,93, -55,95,94,57,109,107,38,117,112,45,114,115,70,102,112,95, -169,170,169,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,183,185,183,183,185,183,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,182,183,181,154,161, -153,115,126,101,97,109,67,91,103,54,92,97,54,93,96,54, -96,96,58,96,95,58,97,95,57,97,94,63,96,95,62,95,95,64, -93,91,63,97,88,65,100,88,72,96,88,74,90,87,72,86,85, -68,85,82,68,87,80,72,87,76,75,91,76,66,100,79,62,109, -83,60,114,85,61,111,86,75,103,84,73,103,82,68,106,83, -65,104,80,68,101,77,71,97,73,70,97,71,71,99,71,71,103, -72,69,107,73,65,109,71,66,110,73,64,120,80,67,123,81, -66,122,81,69,129,89,70,128,96,74,126,99,80,122,98,81, -121,92,79,116,89,79,112,88,86,105,84,91,96,77,90,90,70, -86,97,71,81,121,83,66,122,90,73,125,93,73,126,93,69, -130,91,67,132,96,75,136,98,78,131,95,77,123,91,72,127, -89,72,119,86,73,113,81,72,108,77,74,104,73,76,103,72, -77,102,71,77,99,71,75,104,76,71,105,79,68,100,78,61,95, -77,60,92,77,63,97,80,60,102,85,62,102,85,62,102,86,64, -100,86,62,100,86,59,102,89,61,100,89,62,94,85,58,93,85, -59,94,86,58,94,87,58,95,90,58,95,93,55,97,95,58,96,95, -61,94,95,59,91,94,57,89,92,54,93,93,54,99,99,47,111, -108,48,112,117,72,99,110,98,174,174,174,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,185, -184,184,185,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,183, -183,183,170,174,170,135,147,129,106,121,86,98,108,61,94, -102,52,95,99,56,94,99,57,96,98,60,97,96,58,101,98,54, -102,98,67,100,99,64,99,97,63,97,93,61,99,90,65,100,91, -71,94,89,73,89,86,71,86,84,68,83,81,65,84,78,67,85,74, -64,93,77,45,101,78,46,108,80,57,114,85,60,107,86,68, -100,83,73,101,80,70,102,80,68,101,79,69,99,75,69,98,74, -67,98,74,68,98,73,70,100,72,73,104,72,76,105,72,78,108, -77,73,112,79,76,115,82,84,118,83,89,111,81,95,106,83, -100,100,81,101,96,79,94,104,81,86,96,76,90,90,73,93,84, -69,94,78,64,91,74,60,85,79,62,81,96,69,74,95,72,72,98, -73,75,103,76,78,111,81,75,109,83,84,115,85,81,119,89, -84,118,90,83,124,90,84,120,88,79,117,85,74,114,82,74, -110,78,73,109,77,71,107,77,67,102,76,71,101,75,72,105, -78,72,104,79,64,102,79,59,97,80,61,98,80,62,101,81,61, -100,84,58,101,84,60,103,85,57,103,86,57,102,88,59,100, -91,60,94,89,59,91,86,59,91,85,62,92,88,63,95,92,60,95, -94,58,96,94,62,96,95,62,96,96,61,94,96,61,90,94,58,91, -93,54,91,93,59,103,102,47,110,114,68,101,114,97,169,172, -171,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,184,184,185,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,182,183,182,173,177,174,152,161,151,122,134,112,100, -113,77,90,100,56,96,98,54,99,98,55,98,97,56,98,95,56, -100,96,55,107,97,55,107,95,63,103,98,60,105,98,61,104, -96,63,102,92,66,97,92,71,91,86,69,88,81,67,88,79,65, -88,76,62,88,75,62,91,73,59,104,80,44,107,79,47,107,80, -56,110,83,60,97,84,68,89,80,74,86,77,71,86,76,67,89, -75,67,87,75,67,86,74,65,86,75,67,84,75,70,80,72,72,81, -73,78,81,74,81,86,77,75,81,72,73,76,68,78,72,64,80,70, -61,83,67,58,84,66,56,85,65,55,82,69,56,78,69,58,82,64, -53,83,59,48,82,54,43,78,53,41,74,58,43,73,68,51,67,73, -57,70,73,58,72,75,61,73,79,65,71,79,64,75,79,65,70,86, -68,73,94,72,76,101,77,78,105,81,78,110,82,73,112,83,71, -109,81,68,108,82,66,105,84,64,95,80,70,92,76,71,95,76, -70,98,77,66,103,80,59,101,78,61,102,80,65,103,81,61, -104,83,57,105,84,57,104,87,54,103,88,54,102,88,55,100, -89,58,96,87,58,91,85,58,87,85,60,87,87,62,91,90,60,94, -91,59,98,91,64,99,93,64,99,93,66,97,94,66,93,92,62,93, -92,58,89,92,60,92,95,45,98,107,64,95,109,92,159,165, -161,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,180,182,180,161,170,161,136,149,131,110,126,92,94, -108,69,92,101,59,99,101,57,102,101,56,100,99,54,100,97, -56,103,98,57,110,100,59,112,100,64,108,102,65,108,99,66, -108,99,70,105,94,74,96,90,72,90,84,70,89,81,70,90,79, -71,90,78,69,90,76,66,93,73,64,102,75,68,106,77,72,108, -80,75,107,79,85,88,74,89,81,69,94,75,64,89,71,61,82, -76,60,82,74,61,72,74,62,70,73,62,71,68,60,67,62,58,59, -59,58,50,57,57,48,58,54,46,57,52,42,53,51,38,51,49,36, -48,46,34,47,45,38,49,44,39,47,42,41,51,40,47,50,41,46, -47,40,42,45,39,40,43,37,38,44,37,38,47,36,38,49,36,41, -52,39,45,53,42,45,53,44,43,55,45,44,57,47,46,60,50,51, -65,51,57,70,52,61,73,53,66,78,57,71,86,60,74,95,67,75, -102,75,77,104,79,77,102,80,78,92,77,75,89,74,75,91,72, -72,95,74,70,101,77,66,102,78,67,102,80,69,105,83,65, -105,85,58,104,82,58,104,88,61,104,89,56,104,90,60,101, -88,65,98,86,68,95,86,67,89,87,65,89,88,62,91,89,59,93, -91,54,97,91,60,100,94,59,99,93,65,98,93,65,95,92,58, -95,94,52,91,94,59,90,92,61,88,95,72,92,107,92,160,162, -161,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,184,184,185,184,184,185,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,184, -184,172,177,172,144,157,144,118,137,108,97,116,77,88,104, -61,90,102,57,95,102,55,98,100,53,96,99,52,99,100,58, -102,100,59,106,103,60,114,101,66,109,103,67,108,102,68, -108,99,70,104,93,73,93,89,68,88,85,68,84,80,68,83,79, -68,82,78,67,84,79,67,88,78,66,90,80,70,92,82,72,87,83, -72,77,79,78,61,71,81,57,59,82,57,48,75,59,43,69,61,41, -68,62,45,59,61,45,56,61,43,56,60,42,54,63,43,49,64,45, -40,62,45,38,62,45,38,62,45,35,63,45,33,63,45,33,64,46, -34,66,45,40,65,44,41,65,43,45,64,41,51,65,42,50,65,40, -46,65,38,43,64,37,42,65,36,42,67,35,42,63,36,43,62,35, -44,61,36,42,57,35,37,59,34,37,60,34,37,57,34,40,57,36, -45,57,35,48,61,34,51,60,35,54,61,39,55,63,44,54,68,52, -55,73,57,57,77,62,62,78,67,65,80,70,71,84,70,70,86,71, -66,89,75,62,94,76,64,95,79,66,97,82,61,100,85,56,103, -83,58,103,86,60,102,87,56,103,88,59,99,86,64,94,83,67, -93,84,67,93,85,66,93,85,62,96,87,58,97,87,52,98,87,57, -101,93,57,98,95,64,94,93,63,92,94,57,91,94,49,90,94, -58,89,92,62,86,90,69,89,95,84,158,162,158,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,185, -185,185,184,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,182,184,182,162,170,161, -132,149,125,103,128,84,88,110,58,90,108,55,93,104,59,96, -101,62,100,101,60,99,102,56,101,102,57,105,104,60,108, -105,62,115,104,63,111,105,64,110,104,68,108,99,70,104, -94,73,96,92,76,88,84,76,84,79,75,82,77,72,80,74,69,79, -73,68,84,72,67,86,72,82,86,70,93,78,66,94,66,61,88,48, -60,49,46,55,30,51,52,25,60,54,27,65,54,35,67,56,38,67, -57,34,69,58,37,72,58,42,74,58,46,76,59,48,74,58,45,74, -57,50,74,57,49,75,57,46,75,57,48,74,56,46,75,56,44,75, -55,46,73,54,47,72,53,44,72,52,43,73,52,39,74,52,39,74, -51,40,76,51,42,78,51,41,73,50,37,73,50,40,72,49,44,69, -49,44,72,50,41,72,49,42,68,50,41,67,50,39,65,49,36,67, -47,40,66,48,39,63,47,37,61,47,34,59,47,32,59,46,33,62, -49,39,64,53,43,67,58,44,76,63,50,81,66,55,83,67,62,90, -70,60,95,80,53,99,84,53,102,86,54,105,86,54,105,88,61, -104,88,62,102,87,61,97,85,59,93,84,59,89,82,60,90,80, -69,95,88,60,99,91,57,101,92,56,103,93,62,103,96,54,99, -97,58,98,98,62,95,96,64,94,94,68,93,96,59,90,94,57,89, -95,61,90,99,70,151,154,148,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,181,182,181,145,159,145,114,133,102,96, -112,68,93,108,58,95,107,58,97,104,62,99,102,63,97,104, -60,101,103,58,106,103,59,109,103,60,109,104,62,114,103, -62,113,102,63,113,101,68,108,100,71,101,96,73,97,92,76, -90,85,77,83,78,75,76,74,69,71,71,64,70,69,63,69,70,59, -63,66,68,57,60,72,56,51,72,66,38,70,77,41,49,81,49,42, -84,54,40,85,57,40,86,57,44,85,57,47,85,59,44,86,60,46, -85,59,49,85,58,51,85,59,53,87,59,53,87,58,55,87,58,55, -87,59,52,88,58,55,87,58,54,88,58,52,88,58,54,85,55,53, -87,54,51,91,53,52,93,52,49,97,53,50,99,53,52,101,52, -53,102,51,52,99,52,50,97,52,51,93,50,54,89,50,54,89, -53,51,89,53,52,88,54,52,85,55,50,83,56,48,83,55,53,82, -55,52,82,57,51,81,57,50,80,58,49,76,57,48,73,57,50,71, -57,50,70,56,46,69,57,44,65,59,44,65,60,47,72,65,47,84, -70,40,98,78,46,106,81,51,108,81,51,110,83,59,108,83,59, -106,83,59,101,81,59,98,82,60,95,82,62,92,78,67,96,84, -58,104,90,57,104,91,56,102,91,61,106,96,56,103,96,59, -100,97,62,95,97,65,90,94,66,91,95,59,92,94,57,91,92, -60,98,101,75,146,149,139,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,184,184,185,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,177,181,178,124,145,129,100,121,94,92,111,72, -92,108,61,97,109,57,99,107,55,102,107,61,99,105,66,102, -105,61,107,104,64,110,104,68,110,106,65,116,105,63,114, -104,70,114,101,78,109,100,78,101,97,70,96,92,73,90,86, -71,85,82,70,78,75,70,71,68,71,67,63,72,61,58,71,52,53, -66,45,49,53,46,49,35,69,55,20,94,68,21,101,76,30,103, -80,36,102,80,35,101,80,32,99,78,39,96,74,45,94,71,49, -92,68,52,90,66,54,90,66,55,92,66,53,91,65,52,91,65,55, -91,63,57,92,63,56,92,63,58,93,64,57,94,64,60,92,62,59, -94,61,55,98,65,45,102,67,37,107,70,33,112,73,34,117,76, -38,119,75,41,112,70,43,108,66,58,102,61,66,97,58,68,93, -56,72,94,57,69,92,60,61,89,60,58,87,61,56,89,64,51,89, -65,50,89,66,54,88,66,56,86,66,54,83,66,53,81,67,54,81, -68,54,81,67,54,77,65,55,70,63,52,65,61,45,64,55,49,73, -53,61,88,62,65,101,73,61,106,79,52,109,82,60,108,83,60, -107,85,58,103,85,56,100,85,62,98,85,67,99,89,52,103,91, -58,107,94,62,108,95,65,106,95,69,107,97,66,107,100,64, -104,101,63,97,100,60,92,99,54,92,97,56,91,94,57,93,95, -61,98,102,76,123,129,115,183,183,183,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,184,183,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,167,173,169,107,133,113,92,112,82,90,107,67, -95,108,62,100,108,59,102,107,58,102,105,62,104,102,67, -106,105,62,108,106,66,106,106,67,109,107,65,112,106,62, -111,106,70,109,103,76,104,96,74,107,91,69,102,88,72,96, -86,72,90,83,74,81,76,73,72,70,73,65,65,73,59,57,69,55, -51,65,58,49,58,69,54,49,85,68,34,101,80,32,108,86,40, -115,89,47,120,92,50,126,93,50,126,91,58,121,88,62,115, -83,65,109,75,65,107,73,67,107,72,67,107,71,65,109,70, -64,106,66,66,104,65,66,105,65,65,107,63,66,111,65,66, -114,65,71,116,62,71,116,63,68,125,67,60,131,72,54,139, -78,55,146,84,59,150,89,63,149,91,66,143,91,72,130,85, -81,116,74,80,109,67,80,104,61,80,98,59,72,104,57,66, -108,57,65,110,57,64,116,58,60,116,61,58,113,61,63,109, -61,63,106,61,61,105,61,60,105,62,62,105,64,62,101,67, -63,98,66,66,96,65,66,98,64,62,83,63,65,71,58,67,63,59, -56,69,70,47,85,79,43,95,82,53,97,85,56,99,87,56,100, -88,57,98,87,62,95,85,66,100,92,54,96,94,58,105,98,64, -110,96,66,111,94,69,110,96,66,107,99,63,105,100,63,101, -98,60,98,98,56,100,95,59,96,93,58,93,92,59,98,99,71, -111,115,97,158,159,155,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,184,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,180,182,179, -144,162,144,93,125,97,88,112,72,93,111,66,96,109,66,102, -108,69,103,106,69,103,106,67,107,107,63,108,108,58,111, -110,62,111,111,64,111,110,63,112,106,70,110,105,69,108, -103,73,104,97,70,110,95,64,105,92,71,100,91,72,94,89, -71,84,81,66,75,75,64,67,68,64,62,62,62,61,61,55,68,62, -53,78,65,50,91,72,51,106,83,49,112,89,46,119,93,53,125, -96,61,134,100,65,139,106,62,136,107,62,132,104,63,127, -100,64,125,96,66,126,96,69,124,94,64,124,92,60,124,91, -60,122,89,62,122,87,65,121,82,65,124,82,67,127,82,68, -130,80,70,131,81,75,141,86,71,150,90,76,157,95,80,163, -101,80,167,105,75,169,111,74,164,113,82,150,112,75,135, -101,69,127,92,69,120,82,77,108,72,73,112,70,54,119,74, -48,122,77,45,130,80,44,129,81,48,126,83,52,124,83,55, -119,80,54,119,82,56,120,84,56,119,86,52,115,85,64,113, -85,66,112,86,63,117,88,58,103,88,64,90,83,67,76,75,67, -67,63,71,74,56,90,87,66,84,92,75,68,95,82,60,99,86,59, -99,88,58,97,89,57,99,90,58,96,91,66,103,95,61,109,98, -50,111,99,50,112,101,57,107,99,63,106,99,70,104,99,74, -99,97,70,100,95,74,97,93,71,95,94,66,97,98,65,108,113, -85,153,154,148,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,185,184,185,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,178,182,178,128,151, -127,89,120,94,91,112,73,97,110,68,101,109,68,101,106,68, -101,104,67,105,105,68,108,107,64,111,109,60,116,109,63, -117,107,65,116,107,64,113,103,70,112,103,69,111,102,74, -104,96,70,108,96,64,103,94,71,99,90,71,95,88,69,86,81, -65,78,75,65,74,69,67,70,65,66,74,64,62,76,65,59,80,68, -53,86,74,50,100,84,45,108,88,43,112,94,50,115,95,55, -124,97,57,134,102,56,138,105,60,141,106,67,141,105,72, -139,104,76,138,104,79,143,103,76,144,102,72,145,101,74, -146,101,77,146,100,82,144,98,83,142,97,84,141,96,84,138, -93,83,135,92,85,141,96,77,145,101,80,146,103,80,146,105, -75,152,111,72,157,117,72,160,113,79,157,113,78,154,111, -81,145,104,84,135,93,91,130,82,89,131,82,70,140,88,66, -147,94,66,151,100,65,148,102,71,145,103,75,143,102,77, -142,99,77,143,100,78,142,101,77,143,103,73,136,99,82, -132,97,83,127,101,79,124,105,72,120,97,78,111,93,83,101, -86,86,82,73,86,60,58,87,48,60,64,61,67,50,77,75,48,86, -81,49,87,82,47,88,83,48,91,86,51,88,86,59,99,89,55, -113,94,49,118,98,52,116,100,58,110,99,64,106,100,71,101, -98,72,97,96,69,96,94,73,94,93,71,95,93,66,97,96,64, -102,103,75,159,160,157,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,178,181,178, -123,150,119,92,125,86,95,116,78,100,112,72,104,111,71, -104,108,68,103,105,67,106,106,66,110,109,62,114,112,62, -119,113,61,119,111,62,118,109,66,118,109,65,113,105,61, -112,104,65,108,102,65,111,100,59,107,98,71,101,93,71,96, -89,73,88,82,74,82,78,72,77,73,68,74,69,64,79,71,59,82, -72,59,85,73,60,88,75,63,99,80,55,107,86,49,111,92,52, -110,90,55,118,90,58,129,93,70,133,98,69,135,100,66,140, -105,69,140,106,69,139,107,69,145,107,66,148,104,78,150, -106,78,154,110,77,155,111,83,153,110,75,152,112,71,152, -112,73,149,108,78,144,100,89,146,99,86,147,102,85,145, -102,83,144,100,81,147,103,84,148,103,81,155,106,77,155, -110,80,155,111,78,150,112,69,144,111,64,147,103,77,149, -104,66,155,106,65,162,111,69,164,112,75,163,116,88,158, -118,82,154,116,74,154,115,73,156,116,77,153,113,83,153, -109,92,148,110,96,142,107,95,136,108,94,129,108,89,126, -104,79,118,101,84,109,96,83,93,88,78,72,76,75,47,59,66, -52,53,64,66,58,67,75,64,66,79,69,65,83,73,65,86,78,58, -86,82,60,98,86,54,113,94,46,117,98,45,115,99,53,112, -101,59,108,103,60,104,102,60,100,100,65,100,98,71,98,97, -71,99,96,69,100,98,67,97,99,65,160,163,153,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,177,180,176,122,147,119,93,124,86,96,117,79,100, -111,72,103,109,69,104,109,69,102,106,67,106,106,66,114, -107,63,115,111,63,117,111,61,120,112,64,118,111,69,121, -109,67,116,109,65,113,108,68,109,105,67,111,104,61,106, -99,72,98,94,72,95,90,74,91,83,77,90,78,77,89,74,74,83, -73,71,87,73,64,89,75,64,88,76,64,85,79,65,93,81,55, -101,87,48,108,90,50,108,90,54,110,92,56,118,92,64,120, -93,60,123,97,58,125,98,57,130,100,59,136,102,62,137,106, -60,134,101,70,134,104,70,138,110,70,142,107,75,142,109, -69,152,110,68,156,112,73,151,112,79,139,105,87,135,102, -84,136,102,81,136,103,80,132,101,78,133,101,78,133,100, -74,127,106,63,130,102,63,141,107,69,147,110,66,153,113, -67,144,109,79,144,109,67,150,114,67,153,117,67,158,117, -73,156,117,84,154,118,79,153,120,75,149,118,72,144,118, -73,135,113,74,128,109,80,127,106,85,125,102,86,124,103, -86,122,101,82,120,100,73,108,97,77,103,93,79,97,88,79, -84,80,81,75,68,82,66,62,76,62,59,68,64,62,62,67,65,60, -74,68,59,84,73,55,79,79,55,83,83,46,97,94,39,110,100, -41,115,98,51,112,100,58,110,101,60,108,103,63,103,103, -69,98,100,72,95,98,71,95,97,68,97,97,65,96,95,63,149, -150,141,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,173,178,171,119,146,113,93, -123,90,95,116,79,100,112,72,104,111,68,105,110,64,105, -110,60,109,111,58,116,111,49,114,112,54,118,113,54,120, -114,57,120,114,63,124,114,63,123,117,60,119,114,68,113, -108,72,114,107,70,111,105,73,105,101,78,99,95,76,95,89, -69,95,86,67,97,83,69,88,81,60,92,79,55,95,83,53,94,85, -51,90,84,57,98,86,56,103,88,58,107,88,62,108,88,69,108, -86,76,114,85,78,118,89,74,120,92,71,123,93,70,130,96, -71,134,98,72,132,97,83,135,100,80,133,102,74,133,104,70, -139,105,69,137,103,68,147,105,64,153,110,70,151,113,78, -140,108,87,134,102,86,134,100,82,132,100,77,127,97,72, -127,96,71,128,96,73,121,96,69,126,98,63,137,103,66,146, -109,68,152,112,67,145,112,73,146,111,72,150,111,82,150, -109,87,154,111,81,153,112,89,151,113,93,150,114,93,148, -114,92,140,111,90,132,107,89,124,103,85,122,101,81,122, -99,82,121,99,82,121,98,86,120,100,69,108,98,69,102,94, -68,98,91,71,88,85,75,81,77,70,74,73,66,69,69,60,67,67, -55,68,68,49,74,71,44,87,78,46,81,80,59,78,75,58,91,85, -57,107,94,52,117,101,48,115,105,53,114,106,57,112,108, -62,104,104,69,100,103,62,97,101,65,96,98,66,98,99,65, -99,99,63,138,141,119,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,162,174,160,103, -138,99,91,120,87,98,114,79,101,110,72,102,109,68,104, -108,63,109,110,62,114,110,59,122,112,50,121,112,55,118, -113,56,116,113,57,119,111,61,123,112,62,125,116,62,124, -115,72,118,110,75,121,108,73,122,106,76,116,101,77,109, -95,74,105,91,71,103,88,68,100,84,67,94,86,64,95,86,59, -104,88,57,107,86,54,106,86,59,110,90,61,111,88,60,111, -89,63,107,89,69,107,87,76,111,86,77,113,90,72,117,94, -70,119,94,68,123,96,67,127,99,70,120,94,78,119,98,74, -123,100,70,128,103,68,131,104,67,132,102,67,136,104,64, -141,107,68,139,108,74,130,103,81,122,100,84,116,96,77, -113,94,72,110,94,68,107,95,68,108,96,70,110,95,69,112, -98,62,122,102,63,130,104,63,138,108,63,140,108,70,141, -108,71,141,107,78,136,103,79,138,106,73,140,108,82,139, -106,85,137,105,86,134,105,86,131,101,84,128,97,80,122, -97,78,121,100,79,116,100,78,113,99,78,112,95,81,115,99, -64,105,98,68,99,94,69,96,90,70,90,83,73,79,78,70,75, -74,67,73,71,63,75,71,59,79,72,53,87,77,49,94,82,47,83, -82,58,75,74,54,85,80,54,106,89,47,120,100,46,116,104, -55,115,106,59,111,104,61,105,100,66,104,101,61,101,99, -64,100,98,65,102,98,65,102,97,61,117,114,85,181,181,181, -184,184,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,165,175,162,104,139,96,92,120,77,98,113,73,102, -111,72,103,110,71,105,109,69,108,109,63,115,110,58,125, -111,61,123,113,63,118,112,67,116,112,67,121,113,64,125, -113,70,125,112,74,123,113,77,120,112,74,124,112,67,128, -110,75,124,108,74,118,104,71,112,97,68,111,93,68,108,89, -68,97,86,71,100,86,72,106,87,68,111,91,63,114,94,60, -115,94,67,117,91,67,118,93,68,112,94,66,112,94,69,116, -93,71,118,94,71,119,95,71,118,93,69,119,93,69,121,95, -69,118,93,63,113,92,65,117,95,66,120,95,67,123,95,74, -125,95,76,128,96,72,132,98,73,131,99,79,122,95,89,113, -92,89,108,90,82,107,90,79,103,89,75,98,87,72,98,88,74, -101,89,72,101,89,70,112,93,70,121,96,67,129,100,64,133, -101,69,133,103,71,132,103,73,130,102,70,133,105,61,133, -105,73,132,104,72,130,102,74,126,98,76,127,97,77,131, -100,73,127,100,68,122,100,73,115,98,78,112,99,79,114,99, -73,116,100,66,107,99,74,99,92,79,95,87,78,93,85,66,84, -81,74,79,76,69,78,75,66,79,75,63,83,77,60,90,81,57,98, -87,57,86,86,61,74,76,51,85,81,47,109,92,34,123,103,41, -119,106,56,115,104,62,110,103,64,107,102,62,103,102,58, -100,101,63,99,98,63,100,96,60,103,98,58,110,105,64,142, -142,126,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,162,173,161,104,136,97,96,121,78,99,114, -69,103,111,66,106,109,66,107,108,64,112,108,60,121,112, -58,127,115,65,123,115,68,120,112,71,121,112,73,125,116, -66,127,116,70,122,114,74,122,115,73,123,115,68,126,116, -63,130,113,72,129,110,76,125,106,76,119,100,73,119,97, -74,117,93,76,109,90,79,112,89,78,114,91,74,114,93,67, -116,96,61,120,97,66,122,94,73,122,94,75,119,95,73,116, -94,73,121,94,71,123,97,72,121,98,74,116,94,74,112,91, -73,113,89,70,118,91,60,117,91,69,117,92,70,118,93,69, -119,92,70,116,90,72,120,92,68,123,96,70,122,96,75,112, -93,83,104,90,87,98,86,82,95,85,79,92,84,76,89,81,74, -91,80,74,93,82,70,93,82,70,103,87,71,111,91,69,120,96, -64,122,98,65,122,98,66,120,98,68,120,98,66,128,102,65, -123,101,74,123,99,70,125,100,71,121,96,70,121,94,71,127, -98,70,133,101,64,126,100,73,120,96,77,118,96,76,121,97, -65,119,97,62,114,99,69,106,96,78,96,90,78,96,90,69,93, -85,74,87,82,72,84,80,69,81,79,65,84,82,63,89,84,61,92, -87,61,83,86,65,74,75,54,88,81,48,113,94,37,123,104,45, -119,107,59,116,107,66,111,106,66,108,106,67,103,104,56, -101,103,61,98,100,63,99,99,61,100,99,58,107,107,65,130, -134,114,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,181,183,180,145,164,146,98,129,96,97,123,84,101,117, -70,104,113,66,107,111,67,110,110,64,114,111,61,123,115, -60,128,118,61,126,117,64,127,115,67,127,115,68,129,119, -69,130,119,69,124,118,73,124,115,71,127,116,68,128,114, -67,130,113,72,133,112,78,133,110,79,133,108,78,132,106, -78,127,103,77,123,97,76,123,98,76,123,98,76,119,95,71, -123,94,67,127,100,66,129,98,77,131,98,80,130,98,79,125, -96,77,129,95,74,129,98,75,126,99,79,118,94,80,111,90, -79,108,86,74,114,90,68,114,90,73,111,90,71,110,90,70, -112,92,67,113,91,68,112,92,65,111,94,69,109,93,76,105, -92,80,92,85,83,86,81,80,82,79,78,78,76,75,77,75,73,81, -75,71,83,75,68,86,77,66,94,80,67,100,82,65,111,87,61, -118,94,67,118,93,66,118,95,68,116,95,67,119,93,66,117, -93,71,120,94,72,123,96,74,121,93,72,122,94,71,126,96, -68,134,99,66,125,98,71,124,98,72,124,98,68,128,100,62, -125,102,67,121,103,72,112,100,74,101,93,72,99,89,73,98, -88,70,92,85,70,88,81,68,88,81,66,90,83,63,89,83,59,87, -85,59,81,84,64,80,78,58,95,83,53,116,94,44,126,103,53, -121,105,66,117,106,69,111,107,69,105,106,73,105,106,65, -102,106,66,98,103,65,97,99,64,100,101,64,106,104,68,112, -114,91,172,173,173,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,175,180,174,131,156,129,99,131,95,95,122,80,102,119, -69,105,115,70,106,112,70,109,111,68,115,112,64,123,115, -61,127,117,56,128,119,58,131,121,60,132,122,63,131,120, -69,134,123,66,130,122,71,129,118,69,130,115,64,134,116, -67,134,116,75,135,115,75,138,115,74,141,116,72,141,114, -66,140,113,62,139,110,64,133,108,68,133,108,72,128,102, -73,129,99,80,133,102,72,136,103,77,137,103,75,137,105, -73,134,104,71,136,100,74,134,100,76,128,99,77,120,94,76, -111,88,73,108,86,74,109,84,77,110,87,73,108,87,67,105, -86,63,104,86,63,106,87,67,106,88,74,104,88,81,97,84,82, -90,80,79,82,76,84,75,71,78,72,70,72,68,68,66,68,67,66, -73,69,68,78,71,61,80,74,60,88,77,64,95,79,61,106,84, -57,110,86,73,110,87,65,112,90,66,110,90,67,115,89,66, -118,95,53,119,95,57,121,96,63,121,96,62,124,98,61,129, -100,64,132,100,73,127,101,71,127,103,69,128,102,65,130, -102,68,126,101,84,122,100,79,115,100,72,106,96,66,104, -90,78,102,92,58,96,89,61,91,85,63,94,86,64,94,86,59, -92,87,57,86,84,62,83,84,58,91,88,53,103,92,47,120,98, -48,128,104,56,123,108,65,119,109,66,113,110,64,105,107, -68,105,107,68,103,107,66,100,104,65,97,100,63,99,99,63, -105,102,66,113,112,86,149,156,151,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,183,175,180,173,137,160,135,99,129,93, -100,121,80,104,117,69,106,116,69,106,112,69,111,112,68, -118,114,66,123,115,63,126,118,58,131,121,61,133,121,62, -134,122,63,132,122,68,134,123,65,134,120,66,135,118,66, -137,121,66,137,121,69,133,118,74,135,117,72,139,117,70, -142,116,68,147,117,68,152,117,65,154,113,66,149,113,71, -146,111,73,142,108,77,136,103,81,145,102,72,148,106,77, -147,105,75,144,104,72,138,107,75,136,105,78,132,103,78, -127,101,77,120,96,75,111,91,72,106,88,74,109,82,75,107, -86,72,106,87,68,103,86,64,97,85,61,92,83,64,91,82,71, -88,79,76,83,76,76,79,75,73,72,68,79,68,64,73,68,63,66, -68,64,63,67,63,63,68,63,64,75,65,57,79,67,58,85,72,62, -92,75,60,101,80,56,99,82,69,100,83,60,104,85,60,105,83, -63,109,85,65,118,96,53,118,99,58,116,97,59,119,97,59, -123,100,60,125,101,64,123,99,70,128,99,70,133,102,72, -131,101,67,130,100,71,136,96,83,132,98,81,126,98,75,120, -96,72,115,89,81,107,93,64,104,90,66,101,86,66,103,87, -65,100,86,60,98,89,61,93,87,65,96,85,61,111,90,56,122, -98,52,125,106,55,125,111,61,119,111,65,115,108,63,114, -108,62,107,105,65,104,106,64,105,105,64,105,103,64,100, -100,62,98,99,61,101,101,64,112,110,79,139,141,138,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,183,185,185,185,185,185,185,155,169, -155,106,132,105,99,120,86,107,118,74,107,117,66,108,115, -63,114,116,65,120,117,68,126,118,70,129,120,65,133,122, -68,137,124,70,139,126,70,136,127,70,138,127,65,139,125, -64,140,124,65,139,124,69,140,124,72,136,121,79,136,117, -78,141,118,75,144,118,70,151,121,72,156,121,73,164,124, -63,159,124,70,154,120,72,150,117,74,147,113,78,156,112, -77,157,115,77,155,113,72,151,113,68,141,110,74,137,107, -80,133,103,87,128,100,86,119,95,75,112,93,73,106,87,78, -113,85,81,109,85,81,106,85,84,102,83,83,95,80,85,88,74, -87,83,73,72,79,71,68,75,69,69,71,66,72,67,63,70,65,60, -67,65,59,66,66,59,66,64,59,63,65,59,59,72,61,55,78,65, -56,83,68,61,88,69,62,98,75,57,96,79,59,99,81,61,103, -83,56,105,84,55,110,84,68,116,89,83,115,93,78,116,95, -70,122,99,69,126,101,72,125,100,75,124,99,74,132,104,64, -140,110,67,137,107,68,135,105,71,143,106,61,137,103,77, -132,101,81,127,101,76,125,100,70,114,97,77,107,92,70, -107,91,67,111,95,66,106,93,59,101,93,57,97,94,55,105, -97,48,122,103,45,135,112,45,135,117,55,130,115,81,117, -111,68,115,109,67,117,110,68,110,109,61,107,109,71,105, -103,73,106,102,74,103,101,70,98,98,65,101,100,67,108, -106,74,153,155,149,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,185,185,185,185,185, -185,185,185,185,156,169,155,109,129,104,104,119,86,109, -117,74,112,114,65,116,113,64,121,115,66,123,115,67,129, -116,70,135,119,68,132,120,67,139,123,71,141,125,70,139, -126,71,137,127,66,142,126,66,147,126,69,146,126,73,146, -125,75,143,120,81,141,117,79,140,117,74,144,120,71,147, -124,72,150,126,72,156,128,64,159,124,70,157,122,75,154, -121,79,153,118,83,159,116,80,157,117,78,153,119,75,150, -118,73,143,110,76,142,107,81,133,102,87,126,97,83,124, -97,78,118,93,75,109,87,78,103,85,76,99,86,77,95,84,79, -88,80,76,84,77,78,81,71,80,76,71,67,75,70,65,69,65,64, -62,60,65,63,57,64,61,54,60,61,54,60,62,55,61,62,54,59, -65,54,55,67,59,50,73,60,51,80,65,57,84,68,58,91,73,52, -94,76,56,97,77,57,102,81,54,108,88,58,102,89,68,107,88, -79,110,88,72,114,91,66,120,96,66,127,98,70,135,98,77, -135,100,79,148,105,72,154,110,72,149,107,74,143,107,77, -143,114,68,141,108,82,139,103,86,139,104,83,137,106,79, -130,97,84,122,94,78,121,95,75,122,97,72,119,94,65,118, -95,65,121,95,66,126,102,60,135,111,55,142,117,52,139, -120,60,123,116,79,122,111,70,120,112,71,117,111,69,117, -108,64,113,107,72,106,104,74,102,102,72,101,101,69,96, -99,66,95,101,66,97,104,66,151,155,145,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,184, -186,181,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,175,181,173,129,154,121,103,129, -81,104,122,74,109,117,73,114,115,72,119,116,70,122,116, -66,125,118,63,131,121,62,137,123,63,134,124,61,140,125, -72,142,124,79,139,124,79,138,127,69,145,128,68,150,129, -70,149,130,70,150,132,68,147,127,70,147,126,70,148,125, -73,146,122,77,148,122,80,149,122,80,155,123,82,163,127, -78,161,126,82,157,122,85,155,122,79,164,124,70,160,120, -80,157,120,88,151,115,90,147,111,91,142,105,93,133,100, -94,124,94,93,121,90,97,117,87,99,109,83,98,100,77,98, -92,74,94,86,72,87,80,71,77,76,69,70,75,67,62,70,64,60, -68,63,61,64,60,62,59,57,61,58,53,54,59,54,50,60,54,48, -60,55,48,61,55,47,64,56,47,65,56,48,72,60,49,77,63,51, -81,65,50,87,68,49,89,71,53,95,74,52,101,79,56,106,85, -60,100,88,57,104,89,56,110,91,59,116,93,64,119,94,65, -126,98,64,136,102,65,139,106,70,153,112,73,159,115,79, -156,115,80,150,114,83,148,116,81,147,114,90,146,114,82, -145,115,70,141,114,73,137,111,68,132,110,67,127,107,64, -129,108,63,131,112,58,129,112,50,132,112,55,136,115,63, -142,117,71,145,118,74,140,119,76,123,118,71,126,116,72, -124,117,74,119,112,73,120,110,76,116,111,74,110,109,74, -104,105,70,101,103,64,97,100,62,95,99,66,98,102,71,156, -158,150,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,182,186,180,185,185,185,185,185,185, -185,185,185,185,185,185,179,181,178,174,174,168,159,151, -133,137,119,89,127,113,79,121,114,75,117,113,74,119,113, -73,122,114,70,125,116,68,128,118,65,131,120,63,129,123, -62,136,124,62,144,125,73,143,122,77,143,123,78,145,127, -72,148,131,71,150,131,72,150,130,71,149,133,70,146,133, -76,149,131,75,154,130,78,150,125,79,148,122,80,148,123, -79,153,123,78,161,125,75,164,125,81,160,121,85,160,122, -80,162,125,71,157,122,80,153,119,84,150,115,87,145,112, -89,138,109,92,127,105,93,117,100,93,106,91,90,97,85,88, -90,81,87,80,76,87,76,68,83,71,64,74,69,63,66,72,61,62, -70,61,55,66,60,55,63,58,56,57,57,57,54,53,57,58,51,53, -62,51,50,64,52,49,64,52,48,64,52,48,65,53,47,64,54,47, -69,60,46,75,63,48,76,63,47,81,67,45,83,71,49,86,74,49, -91,78,52,95,81,53,98,84,53,102,86,53,106,88,55,112,92, -60,120,95,64,125,95,60,139,101,63,148,103,71,153,109,70, -159,113,75,162,114,80,162,114,86,164,114,85,157,113,94, -153,114,84,154,117,75,151,115,77,155,114,76,150,113,77, -145,112,77,142,114,74,141,117,68,140,122,63,136,124,65, -131,122,67,133,119,70,136,117,70,135,115,71,128,112,71, -125,116,73,124,116,75,122,112,76,120,109,78,116,112,75, -109,110,76,103,106,70,100,103,64,98,99,62,97,96,64,105, -106,77,159,159,154,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,183,183, -186,183,184,185,184,184,185,184,179,185,174,176,183,178, -171,180,177,168,174,173,164,170,166,154,159,155,139,137, -133,129,117,91,127,112,65,125,118,60,121,118,59,119,116, -67,121,116,66,125,118,64,126,117,62,130,121,63,134,124, -63,131,125,65,137,127,62,144,129,65,145,127,65,145,128, -69,150,133,67,151,135,66,153,135,72,155,135,81,151,133, -86,149,136,76,150,133,71,154,132,74,156,132,78,153,129, -79,152,127,78,153,125,75,162,125,79,167,130,78,166,130, -75,165,127,80,165,126,82,159,123,90,155,119,90,151,116, -89,146,112,94,139,109,96,125,101,101,111,90,104,99,80, -104,89,72,99,80,66,94,67,60,85,65,56,78,62,56,66,62, -57,54,67,58,48,67,59,49,64,58,51,61,56,55,55,54,55,54, -53,51,58,54,43,63,56,37,66,57,39,68,58,43,67,56,46,67, -56,49,66,54,59,68,57,57,72,58,57,75,60,58,79,63,56,81, -65,60,85,69,60,89,72,64,92,75,65,96,78,69,100,80,70, -104,85,64,111,90,60,118,95,59,126,97,57,139,103,60,151, -110,60,156,115,59,162,120,62,167,122,67,168,123,77,171, -124,79,165,124,83,162,124,82,162,124,80,158,122,78,161, -122,72,160,125,76,156,125,79,152,124,81,147,122,84,144, -122,86,136,121,79,127,117,73,130,116,71,136,118,69,138, -120,70,136,120,79,130,121,74,126,120,73,125,117,72,125, -116,73,119,116,70,113,115,74,107,110,76,102,105,74,100, -100,74,100,98,75,111,110,85,150,151,143,179,180,181,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,184,182,186, -182,180,187,177,177,187,173,181,186,177,181,185,176,170, -184,163,150,174,159,141,153,154,134,132,140,136,127,129, -137,123,125,128,110,109,121,98,71,123,103,58,125,113,58, -126,114,60,121,114,67,121,116,67,124,117,65,125,117,64, -132,122,66,138,123,66,140,121,67,140,125,62,142,128,63, -144,129,65,145,130,70,151,133,69,154,134,67,154,135,72, -151,134,77,147,130,81,153,127,73,158,129,71,160,130,74, -159,129,77,156,128,80,155,128,79,157,126,76,154,125,75, -157,126,71,159,128,70,162,126,77,164,124,78,156,122,86, -151,120,88,146,116,88,138,111,91,130,105,89,116,97,95, -97,86,96,78,72,90,68,64,86,64,55,81,57,49,73,54,46,66, -55,47,57,58,50,48,64,52,43,66,55,44,67,54,48,66,53,54, -62,49,54,65,46,51,70,53,46,69,59,42,70,63,44,70,63,48, -70,61,50,69,60,53,64,56,60,61,59,56,63,59,55,65,61,54, -70,62,51,71,64,55,76,65,54,79,68,56,80,69,57,83,72,59, -89,75,61,95,79,55,106,85,53,118,91,55,127,94,55,138, -100,57,145,109,56,153,112,55,161,118,60,164,119,66,167, -119,75,172,121,79,172,122,84,170,123,84,168,124,81,167, -125,80,167,127,75,165,127,77,162,126,80,157,124,82,148, -119,81,143,119,83,138,121,80,134,121,78,134,124,77,134, -125,73,136,125,71,130,119,77,129,119,73,130,119,73,128, -120,74,127,117,74,123,116,71,114,114,74,107,109,75,103, -104,74,101,100,74,101,99,75,111,109,84,147,148,137,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,183,186, -183,181,186,181,181,186,181,182,185,182,184,185,184,185, -185,185,172,180,178,140,163,160,131,146,137,122,125,107, -121,111,90,122,106,85,119,99,78,122,96,65,128,106,65, -125,112,61,128,116,62,124,119,63,124,120,62,127,122,63, -131,124,63,135,125,64,142,126,69,145,127,74,144,128,73, -146,132,71,148,134,70,149,134,72,152,131,84,153,131,83, -153,134,76,151,137,69,149,135,71,155,131,70,159,132,69, -160,133,66,161,135,67,160,134,74,157,129,85,158,126,85, -155,124,88,158,125,86,159,126,84,163,126,81,164,123,81, -158,123,90,152,120,93,147,116,94,137,109,95,127,99,94, -112,92,98,93,81,95,70,64,81,60,57,71,58,52,62,54,48, -59,53,46,57,54,47,56,58,49,52,65,50,53,65,52,48,65,52, -46,65,55,37,64,58,24,69,59,23,78,64,43,77,67,50,74,67, -51,74,67,51,74,67,50,75,67,49,68,64,46,60,59,51,62,57, -60,62,55,64,66,56,62,66,56,65,70,56,60,71,59,56,72,59, -55,73,60,60,78,62,54,85,67,53,97,73,50,113,85,48,127, -94,46,138,101,47,143,106,48,153,111,56,161,116,65,165, -119,69,170,123,69,175,125,78,174,127,76,173,129,80,171, -128,84,170,128,86,169,128,77,166,127,79,164,128,81,160, -129,81,156,130,80,152,132,82,147,132,82,141,130,82,138, -128,81,135,128,78,138,126,78,134,125,75,132,125,68,132, -124,71,129,123,72,129,122,71,125,118,75,114,115,78,106, -109,75,105,107,74,103,105,73,102,102,76,109,109,86,131, -131,120,182,182,183,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,186, -184,180,188,181,181,188,181,185,185,185,185,185,185,184, -185,185,185,185,185,161,179,173,138,147,151,131,131,128, -128,114,101,129,109,91,130,104,86,127,101,81,122,103,70, -120,109,64,122,115,61,126,119,63,126,120,64,126,119,62, -129,118,62,135,121,64,141,124,66,145,126,71,147,125,75, -145,127,72,150,131,72,154,132,73,156,133,75,154,132,85, -155,131,84,156,131,74,159,134,69,158,132,71,156,134,71, -154,134,67,155,136,64,159,136,65,159,132,72,156,126,84, -156,124,84,154,121,86,156,122,84,155,121,80,156,123,77, -160,123,79,157,121,89,150,117,90,141,111,88,135,103,90, -119,97,89,102,88,91,85,75,88,70,61,78,63,56,71,57,55, -63,49,52,59,47,50,57,51,50,56,54,51,51,56,52,50,54,54, -44,62,52,44,72,52,38,82,61,33,85,70,35,82,73,49,78,71, -53,75,69,52,74,69,52,75,69,51,78,70,51,78,69,53,76,63, -60,63,55,62,53,55,61,49,57,57,51,54,58,53,54,53,54,55, -47,55,55,44,56,52,48,59,54,41,65,58,39,76,63,35,97,78, -37,116,89,39,134,98,43,147,105,47,152,110,52,158,116,62, -162,122,68,168,126,69,168,126,79,166,129,74,167,132,79, -163,129,82,166,125,82,166,127,76,165,128,80,161,128,80, -158,130,80,156,131,80,154,130,82,148,130,81,146,126,80, -143,124,79,142,124,78,141,123,77,135,124,74,135,125,69, -134,124,72,132,122,72,133,121,71,125,120,76,120,114,81, -114,109,79,110,106,75,105,103,73,102,103,77,108,108,85, -144,146,133,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,183, -185,184,181,186,182,183,186,184,185,185,185,185,185,185, -178,186,183,167,183,181,134,166,174,126,142,134,129,133, -108,132,121,90,135,116,86,137,111,86,135,110,80,126,108, -75,123,111,73,123,115,69,126,119,65,127,122,63,129,121, -63,133,122,64,140,127,66,143,126,66,147,128,72,151,131, -70,148,131,75,153,134,78,156,135,72,157,137,66,156,137, -71,156,134,74,159,135,76,161,137,73,163,139,75,160,140, -68,159,142,64,160,141,66,162,140,74,163,136,79,161,133, -81,160,130,79,157,126,81,157,123,86,156,119,90,156,119, -92,160,123,81,156,121,80,150,117,84,139,109,85,134,103, -83,118,96,87,101,88,81,86,79,74,76,71,72,68,64,72,60, -57,75,50,50,76,46,46,74,50,46,73,52,44,67,53,45,61,51, -50,44,61,60,13,81,69,18,98,79,39,95,80,48,88,78,59,84, -76,58,82,76,58,82,75,62,82,74,64,84,74,64,84,74,61,88, -78,53,77,74,51,58,62,55,46,50,83,48,44,89,49,46,73,50, -48,62,50,47,54,54,48,50,57,51,49,61,52,43,71,56,41,90, -67,45,111,80,46,131,93,44,146,105,40,154,112,52,159,120, -55,164,127,57,172,130,72,173,131,85,169,131,83,170,134, -84,167,134,80,168,129,71,168,128,76,167,129,79,165,132, -80,158,130,76,156,131,79,155,130,82,148,132,72,149,133, -73,148,131,75,147,130,74,148,132,73,140,129,83,139,127, -86,138,126,84,136,125,80,135,122,80,129,122,87,123,118, -79,119,115,76,113,109,73,107,107,71,103,106,68,108,112, -72,138,144,127,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,185,184, -181,187,181,184,186,184,185,185,185,185,185,185,184,186, -185,171,183,181,151,172,172,133,145,166,132,124,124,138, -119,99,140,118,89,139,114,86,139,110,85,132,109,79,123, -110,76,122,110,72,124,113,68,124,119,64,124,120,61,126, -123,64,129,124,65,134,126,64,138,128,65,141,128,70,145, -130,68,146,130,74,151,131,76,154,133,70,163,136,67,161, -137,73,163,134,76,163,134,77,162,136,73,161,138,75,161, -141,70,162,142,66,165,142,69,164,139,75,162,135,79,159, -131,80,155,129,77,152,127,80,152,123,85,151,118,87,150, -115,87,152,120,78,147,120,75,144,117,83,132,111,85,124, -105,82,112,93,84,101,85,80,92,79,77,82,71,74,74,65,74, -63,56,75,45,49,74,39,45,71,39,44,68,39,42,60,42,41,54, -63,41,38,80,62,20,95,82,31,98,88,44,97,86,53,97,83,64, -91,80,62,89,80,63,85,77,63,85,76,66,87,76,65,91,75,63, -95,80,56,97,82,62,85,73,69,70,52,89,29,45,83,28,47,66, -34,46,56,41,45,50,46,46,47,52,48,46,61,50,42,71,55,40, -82,63,39,97,75,38,115,89,36,141,101,36,148,108,47,158, -117,53,166,126,57,169,129,70,166,126,78,165,127,79,163, -130,78,162,131,76,160,130,70,157,125,71,153,126,73,152, -126,72,153,125,71,152,124,73,151,124,77,154,128,72,156, -130,74,154,129,76,151,130,75,150,131,73,143,126,83,141, -122,84,137,119,79,133,121,76,136,121,79,128,117,82,122, -118,77,119,116,77,114,109,73,112,105,71,111,103,69,109, -106,67,112,112,81,147,147,152,184,184,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,185, -184,182,187,183,185,185,185,185,185,185,185,185,185,185, -185,185,176,184,181,145,167,161,131,145,140,131,122,104, -139,119,85,145,122,82,143,119,77,143,115,77,134,113,77, -123,111,74,123,112,68,127,118,66,128,123,66,128,124,62, -128,125,64,131,125,68,134,127,69,139,128,71,140,128,75, -144,130,74,145,130,75,149,130,72,155,134,68,164,137,70, -163,138,79,165,137,76,166,137,81,164,137,80,161,137,74, -159,136,76,162,137,78,167,140,82,165,138,81,163,135,82, -159,130,87,155,127,91,151,126,91,151,122,89,149,116,83, -150,113,85,150,116,85,147,119,81,143,116,88,134,111,95, -120,103,90,112,95,76,105,90,75,99,87,73,92,82,65,86,79, -60,78,75,57,58,66,51,48,58,47,45,52,42,49,52,40,57,55, -38,88,66,43,98,79,47,102,87,51,100,89,53,100,89,56,103, -89,49,100,89,49,97,87,54,95,85,59,92,82,60,94,84,59, -100,85,59,103,88,56,104,91,58,99,89,58,93,82,59,46,67, -53,29,49,57,30,40,62,37,38,64,44,39,62,51,44,58,62,50, -46,74,57,38,88,68,39,98,75,41,112,84,46,138,97,50,154, -113,56,163,121,61,165,124,63,167,127,65,164,127,74,162, -127,74,161,127,82,159,126,84,158,126,79,156,125,74,151, -123,77,149,122,79,154,125,82,152,123,77,150,123,73,152, -127,71,155,130,74,155,131,76,153,133,76,152,133,75,147, -129,85,145,127,85,144,127,84,137,123,78,136,121,78,131, -124,67,127,124,72,123,120,76,119,115,76,116,110,74,114, -107,72,110,104,69,105,103,75,107,108,94,140,144,136,184, -184,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,185,182,186,183,185,185,185,185,185,185,185,185, -185,185,185,185,177,183,182,134,160,152,125,134,125,131, -118,99,138,119,89,143,120,83,145,120,78,143,117,78,135, -113,82,126,111,79,124,113,72,126,117,67,126,119,68,131, -124,65,134,127,66,135,126,67,138,127,68,140,127,70,140, -126,74,141,128,72,145,126,74,149,128,73,154,133,71,162, -135,72,161,136,79,161,134,71,165,136,76,165,138,77,167, -137,75,167,136,78,169,138,81,169,140,82,167,140,82,164, -138,85,160,134,91,155,128,91,152,125,88,150,121,88,149, -117,86,148,114,87,147,111,84,144,114,80,139,113,87,127, -107,91,118,102,86,119,93,69,118,91,69,114,89,67,111,88, -64,107,87,62,102,87,63,93,84,63,84,80,61,81,78,59,83, -78,58,91,79,58,97,83,63,98,87,58,101,88,55,103,89,55, -106,89,59,111,91,55,113,93,56,111,94,60,107,91,61,106, -90,63,106,90,65,104,91,64,107,94,59,108,94,60,105,93, -62,102,90,65,89,84,67,73,69,72,61,55,70,55,45,64,56, -43,55,62,48,50,72,56,41,86,66,38,99,77,40,105,83,43, -111,90,47,125,102,48,140,115,55,150,121,61,157,122,65, -164,123,69,158,124,76,155,123,78,150,123,86,145,119,84, -144,117,76,146,119,76,146,118,76,145,117,76,145,118,75, -150,123,75,151,126,72,150,128,71,152,131,73,153,132,73, -154,134,74,155,135,78,153,133,83,149,129,83,148,128,80, -145,126,79,138,124,79,133,126,69,131,123,75,126,119,77, -121,114,75,118,110,75,116,108,74,110,105,69,107,104,71, -104,101,74,115,111,93,154,149,139,184,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,185,181,187,182,181, -187,183,183,185,184,185,185,185,185,185,185,171,181,176, -117,152,137,123,131,115,132,123,104,132,117,97,138,117, -87,145,121,80,145,122,82,138,116,90,126,111,82,123,113, -73,126,119,71,127,121,76,132,124,73,135,126,71,139,128, -69,144,130,68,145,128,67,146,128,73,145,130,72,149,128, -74,151,127,77,155,131,77,163,135,70,160,136,78,161,135, -70,164,138,73,165,138,76,169,138,80,167,138,81,168,140, -79,169,142,79,168,143,82,163,140,84,161,136,87,161,130, -89,158,126,88,157,123,89,152,118,90,145,114,98,146,111, -93,140,111,90,134,110,96,121,102,95,113,96,90,124,95,63, -128,99,58,127,101,58,126,102,58,123,102,60,118,100,63, -110,96,68,105,93,68,99,91,64,95,89,62,98,88,63,98,89, -60,101,90,57,106,90,58,111,92,60,116,94,63,120,97,62, -122,100,67,121,101,70,118,100,69,117,99,68,117,98,69, -114,97,71,116,98,72,116,97,75,111,94,78,105,91,78,100, -87,81,96,86,76,94,82,70,92,78,62,96,78,52,98,80,50, -103,83,49,110,87,49,118,94,50,122,97,49,123,100,54,125, -103,63,129,108,68,138,111,71,148,114,73,158,118,72,155, -119,80,149,118,83,142,115,88,137,111,85,137,110,79,142, -111,82,143,113,79,146,117,78,148,120,76,153,126,75,155, -130,75,153,130,78,153,130,77,156,134,79,156,135,78,155, -134,81,152,134,80,153,133,75,152,132,77,148,131,79,141, -127,76,137,127,73,135,123,80,131,119,81,126,116,78,123, -113,79,119,110,82,111,107,74,108,105,68,107,100,60,117, -103,66,133,116,93,156,149,147,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -185,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,183,187,184,185,185,185,185,185, -185,182,185,183,180,185,181,160,179,168,112,149,130,126, -136,109,135,125,100,133,120,92,138,120,89,143,121,86,139, -121,86,134,117,85,125,114,77,124,116,70,126,119,66,129, -123,70,137,127,67,140,129,67,143,130,65,146,132,62,146, -132,61,149,132,70,147,131,73,152,131,67,155,130,71,157, -131,72,166,135,63,164,135,73,163,136,75,165,138,79,166, -136,78,168,135,80,167,138,88,168,140,86,171,142,86,171, -141,86,168,139,82,167,138,77,168,131,81,161,127,89,162, -126,89,155,120,86,142,114,92,145,111,93,136,110,91,130, -108,94,123,103,93,113,96,93,127,97,54,136,106,54,139, -111,58,140,115,59,137,114,57,134,112,61,126,107,66,119, -105,70,110,100,63,106,97,58,108,94,58,112,96,53,113,97, -49,119,98,51,124,101,52,131,105,52,136,109,56,135,109, -65,132,107,71,129,106,70,129,107,67,132,111,66,131,109, -70,128,107,71,124,105,75,117,100,78,108,98,78,105,92,79, -103,91,73,104,89,63,109,91,53,120,96,48,127,100,54,129, -102,54,131,104,54,136,108,55,139,111,58,139,111,65,131, -108,77,125,107,81,134,110,84,142,111,83,146,113,83,144, -112,86,142,114,81,139,110,81,137,107,79,141,111,70,146, -114,73,146,116,78,147,117,77,150,121,72,152,125,67,153, -128,69,152,128,78,154,129,76,159,135,80,158,135,79,156, -134,79,154,133,79,158,134,77,157,133,83,149,129,85,146, -128,84,143,127,78,138,124,80,135,122,80,131,120,78,126, -116,78,120,111,79,112,107,75,110,105,73,122,108,62,135, -111,57,139,110,82,144,122,108,157,156,156,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,183, -185,183,184,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,186,184,185,185,185,185,185, -185,182,185,183,175,185,176,149,175,158,118,148,127,130, -135,106,141,126,96,137,122,89,138,120,90,138,119,90,136, -118,89,127,115,87,124,111,75,127,114,69,130,119,65,132, -122,66,138,127,64,140,130,63,143,131,63,146,132,61,147, -133,61,148,132,66,148,130,68,149,131,62,153,131,69,155, -130,71,162,133,67,166,133,72,167,135,77,169,135,79,171, -137,79,173,137,83,172,138,91,173,137,88,176,137,87,176, -137,85,177,139,83,176,142,80,171,138,87,163,131,93,161, -126,90,162,125,91,154,121,96,145,114,94,137,111,89,133, -107,90,127,101,89,116,91,88,134,97,55,148,108,57,153, -115,61,155,120,61,152,121,59,149,121,64,142,120,68,127, -115,75,119,107,69,120,104,62,124,102,60,131,106,57,129, -109,55,131,110,55,137,112,54,147,115,52,153,117,58,151, -117,68,147,114,72,145,114,70,144,114,65,148,117,64,151, -116,69,145,115,70,141,111,72,134,106,74,123,102,78,118, -96,78,114,94,72,115,94,63,119,97,53,130,104,50,146,110, -53,149,114,56,153,117,59,155,119,62,155,119,65,151,119, -73,137,113,80,120,105,82,127,106,88,133,106,87,133,104, -86,133,102,85,137,106,80,141,108,82,142,106,79,145,110, -71,148,113,72,149,115,77,150,115,73,157,121,70,160,124, -68,162,127,72,161,127,78,164,129,76,164,133,79,161,134, -79,161,135,78,159,134,81,159,136,80,158,136,85,150,133, -85,145,130,86,144,128,82,142,127,84,137,123,81,133,119, -77,131,116,75,125,113,74,115,109,76,113,107,78,132,118, -74,143,120,65,143,115,81,149,123,97,156,145,140,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,186,184,184,185,184,184,185,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,186,185,182,186,183,185, -185,185,185,185,185,174,185,176,139,172,153,118,149,130, -135,138,114,145,129,102,140,125,92,138,119,93,137,118,93, -135,117,85,122,110,87,124,111,68,128,118,58,130,122,53, -133,124,60,139,129,65,141,131,68,144,133,71,147,133,71, -151,133,70,152,134,69,153,136,71,154,136,71,157,135,71, -159,134,72,163,133,75,164,133,78,167,134,79,171,136,78, -173,138,77,172,138,79,173,139,83,175,138,84,178,139,81, -180,142,78,179,143,78,176,141,84,170,140,78,167,137,77, -166,134,75,165,130,77,157,124,89,150,119,92,142,115,87, -137,110,88,129,102,91,123,96,94,138,98,69,153,111,68, -161,120,70,163,125,70,159,126,67,156,128,68,148,127,68, -133,120,71,127,115,66,131,116,59,139,120,55,146,122,55, -144,125,57,146,124,56,149,125,53,161,128,54,168,132,63, -164,131,68,159,127,71,155,123,70,156,123,69,158,124,67, -162,124,68,154,121,69,153,119,72,148,117,74,137,112,77, -131,109,77,126,108,64,127,107,61,132,109,59,141,115,49, -157,123,43,163,130,45,166,133,50,169,133,60,166,128,69, -159,124,85,141,112,99,119,100,91,123,100,86,130,102,77, -131,101,72,133,101,72,135,104,73,138,105,75,141,107,73, -146,110,71,151,115,66,152,117,65,156,122,65,163,127,66, -165,129,66,166,130,70,165,130,78,167,130,84,166,132,83, -164,137,79,165,139,76,159,135,84,159,136,89,158,136,88, -151,134,82,146,131,83,146,129,81,144,128,81,140,125,79, -136,122,77,135,121,76,130,118,75,119,113,78,116,112,78, -133,120,74,144,123,62,150,125,62,153,128,80,155,140,113, -172,174,174,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,186,184,183,187,183,184,186,184,184,185,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,186,184,183,186, -184,185,185,185,185,185,185,166,183,170,124,165,143,117, -148,129,135,138,115,144,133,105,144,129,96,136,120,93, -131,115,89,131,113,80,123,107,84,122,111,65,128,118,56, -132,124,52,134,125,59,140,126,63,139,131,67,139,134,70, -142,134,70,148,135,71,155,135,72,155,137,75,154,139,74, -155,137,72,156,137,71,160,136,74,165,134,79,166,137,81, -169,139,79,171,139,78,173,138,80,175,136,83,176,135,83, -176,136,79,176,138,75,174,140,75,170,138,80,177,137,75, -172,138,75,166,141,76,159,138,76,155,127,88,154,119,91, -142,117,87,137,113,90,130,104,91,120,96,93,130,100,68, -151,111,68,163,121,72,164,127,72,161,129,70,160,130,70, -154,130,71,147,124,75,142,120,69,145,121,63,153,125,59, -158,129,61,160,132,63,164,134,64,170,137,62,181,139,63, -185,145,74,177,144,79,171,141,82,167,135,81,169,137,82, -167,138,78,161,136,74,163,130,77,165,129,81,163,126,83, -163,119,87,146,122,86,139,121,71,142,119,69,146,115,63, -161,120,55,168,132,50,171,139,49,173,143,55,171,141,62, -167,134,72,161,127,88,131,114,99,114,96,86,116,97,80, -123,101,73,128,104,70,132,100,70,133,102,71,138,105,74, -140,107,72,148,110,71,154,120,68,160,124,71,162,126,69, -162,129,66,166,132,66,170,131,70,170,129,78,167,125,83, -170,129,83,171,132,77,173,134,75,171,135,87,168,132,89, -164,131,87,159,131,84,155,126,84,154,126,79,151,128,80, -148,125,80,143,121,78,140,120,77,134,118,77,124,114,79, -118,112,78,130,116,70,144,123,60,152,127,61,155,124,74, -159,139,113,174,172,174,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,183,186,183,182,186,182,183,186,183, -184,185,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,186, -185,185,185,185,185,185,185,179,185,179,147,180,155,110, -156,130,114,144,123,133,137,111,142,130,104,142,129,91, -138,124,86,133,119,82,135,119,67,130,116,79,126,115,69, -129,118,62,134,125,58,137,129,54,143,131,57,142,135,63, -139,134,65,143,135,68,151,137,72,159,138,76,157,138,82, -156,140,81,157,138,80,158,138,79,161,138,72,166,135,78, -167,138,78,170,139,78,172,141,78,175,140,84,178,140,80, -179,140,76,179,141,73,179,143,74,175,142,76,172,141,82, -181,141,88,177,141,90,166,137,88,157,134,87,158,130,92, -160,128,82,147,123,90,138,113,92,131,106,93,123,100,92, -128,96,78,148,108,71,165,124,75,165,128,76,163,131,75, -163,133,68,156,133,67,151,130,72,149,129,67,152,130,60, -159,133,59,165,139,61,168,142,59,172,144,61,179,147,60, -191,153,62,195,157,79,190,159,86,183,154,87,180,149,88, -181,149,89,179,149,90,170,145,86,173,141,80,174,141,76, -174,141,72,179,141,73,159,140,74,150,136,73,153,132,68, -161,132,68,176,134,78,181,142,79,181,145,82,180,145,87, -175,141,87,171,136,86,163,128,97,128,105,128,113,92,98, -117,97,87,121,98,74,125,100,66,132,102,69,136,106,70, -141,109,71,144,112,71,154,117,72,158,124,72,162,128,62, -167,134,61,168,137,64,170,137,72,175,136,83,176,133,94, -173,131,95,173,133,88,174,134,82,175,136,83,172,137,84, -169,137,69,167,139,72,161,136,73,157,133,70,158,133,70, -155,132,79,151,129,86,147,124,88,141,120,83,136,120,79, -126,117,82,119,113,77,133,119,72,145,122,66,150,123,70, -155,122,80,154,128,102,158,153,149,169,170,172,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,183,186,183,181,186,181, -181,186,181,183,186,183,184,185,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,178,186,179,142, -178,151,110,141,120,122,129,115,139,125,104,151,120,99, -155,123,89,147,119,85,140,116,82,145,117,71,132,116,81, -124,116,70,126,120,63,133,126,58,138,130,55,145,131,57, -148,134,64,147,136,69,147,136,71,152,139,73,156,137,74, -153,134,78,160,135,80,163,134,81,166,133,79,169,136,74, -173,135,79,178,134,79,178,137,80,178,140,81,176,138,85, -180,141,83,175,143,78,173,144,75,173,143,74,174,141,76, -174,139,83,176,140,85,173,141,88,170,139,91,164,133,91, -159,127,93,160,129,85,151,121,93,145,115,97,135,109,97, -126,100,93,123,98,78,141,106,65,158,118,67,161,122,70, -163,125,70,166,129,67,159,129,68,154,127,71,156,126,68, -160,127,62,170,130,62,174,139,65,177,143,64,185,145,66, -191,152,68,197,164,72,199,172,91,192,172,97,185,172,101, -179,169,102,178,165,101,179,161,101,176,154,98,179,147, -90,185,150,89,183,151,83,184,149,80,171,144,84,165,141, -84,162,140,79,165,142,77,170,144,82,181,143,80,183,144, -82,184,141,86,180,136,87,170,134,86,149,128,93,114,100, -119,113,95,98,123,98,88,130,97,77,138,99,71,147,103,75, -148,102,73,152,105,72,157,110,74,163,117,75,170,124,76, -172,132,69,176,137,68,176,138,70,177,139,77,177,137,85, -172,134,92,171,132,93,176,133,88,177,136,83,173,140,83, -171,136,84,170,138,71,171,139,74,166,134,75,160,134,74, -160,137,75,157,135,82,152,130,87,148,126,90,141,122,84, -135,123,81,125,118,84,123,116,82,134,120,74,144,123,66, -152,123,70,153,123,78,151,119,90,146,122,114,147,145,154, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,183,186,183,179, -187,179,178,187,179,180,186,180,182,185,183,184,185,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,179,186, -181,149,175,162,111,141,123,118,127,107,133,120,101,146, -116,95,149,118,79,148,123,69,143,124,62,150,123,70,136, -120,90,126,116,81,126,118,71,133,124,64,137,128,62,145, -130,61,148,134,64,148,137,69,148,138,72,152,139,74,156, -138,71,153,136,69,160,136,79,166,139,80,166,137,72,168, -135,77,171,135,78,177,135,76,180,140,78,178,142,76,177, -142,77,184,146,83,181,147,91,176,144,92,175,143,87,177, -144,83,178,144,83,179,142,90,176,145,85,174,146,81,168, -141,75,165,136,82,165,134,92,156,127,94,149,121,95,137, -113,90,128,105,91,126,100,89,136,98,78,152,110,75,160, -120,73,161,124,69,165,128,72,157,126,73,152,122,77,155, -125,75,161,129,64,174,136,61,177,144,65,179,145,70,187, -149,69,195,159,68,199,166,72,200,174,92,199,179,105,195, -179,119,189,174,128,188,171,130,190,168,129,186,157,140, -188,152,122,192,154,118,191,153,117,192,151,120,180,146, -122,175,148,106,171,145,105,169,141,107,171,139,107,180, -138,100,182,139,99,181,136,96,181,135,102,169,128,116, -143,114,123,114,106,93,119,104,86,127,105,82,133,103,75, -142,105,70,152,112,61,155,114,61,160,118,64,166,123,64, -170,130,55,178,138,60,179,142,62,180,144,64,183,147,68, -182,146,74,180,144,80,176,142,78,178,144,79,180,141,76, -183,144,77,177,146,80,176,141,90,174,143,82,174,141,84, -173,140,89,166,137,92,162,138,85,157,136,80,154,135,81, -151,133,83,144,128,82,138,125,87,128,120,92,124,118,83, -134,120,73,145,123,67,152,123,77,154,125,75,154,126,71, -148,125,82,145,142,142,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,186,184,176,188,177,175,189,176,180,188,180, -181,186,181,183,185,183,184,185,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,177,185,180,138,173,157,102,137,118,115, -123,104,127,116,95,133,112,86,142,113,73,154,119,70,155, -123,67,143,128,71,128,120,85,124,114,77,127,118,69,132, -125,62,136,127,60,144,131,60,147,134,63,148,135,68,148, -136,71,151,138,74,156,138,73,160,137,73,161,136,81,165, -138,79,168,139,74,168,137,78,167,136,77,170,139,77,175, -140,76,179,139,75,179,140,76,183,144,80,183,143,89,180, -141,91,181,142,90,180,142,84,182,142,84,176,141,89,175, -142,85,177,144,82,177,143,80,173,139,87,167,134,92,158, -129,95,152,122,97,143,113,94,132,106,95,122,102,90,121, -102,75,131,108,66,147,120,67,155,123,65,161,127,67,160, -124,71,148,120,74,150,123,71,160,128,62,175,133,58,179, -140,65,181,143,70,185,146,66,195,154,65,207,161,73,210, -170,92,208,175,105,206,176,121,198,173,130,194,174,133, -194,177,135,187,163,144,185,162,126,186,164,120,183,164, -117,179,159,118,173,151,121,170,151,106,169,149,107,165, -142,106,172,137,105,173,139,98,174,138,95,173,136,93,167, -136,97,146,126,104,120,107,107,124,98,91,128,100,86,138, -102,83,144,101,77,153,103,74,158,115,67,162,120,69,166, -123,71,169,126,68,179,133,62,183,141,65,183,144,66,185, -146,68,186,147,71,188,148,77,186,145,83,184,144,83,182, -145,82,180,146,79,181,147,79,182,147,84,179,143,94,177, -144,85,177,146,88,173,143,91,168,139,95,162,140,88,160, -139,84,158,137,84,153,133,84,149,130,85,143,127,89,128, -121,92,122,118,82,128,119,70,140,123,65,145,123,74,155, -122,74,159,125,74,159,124,89,142,132,137,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,184,176,190,177,175,191, -177,177,189,178,181,186,181,183,186,184,184,185,184,184, -185,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,184,185,184,176,185,180,125,163,161, -98,127,135,112,115,120,123,108,108,128,106,89,140,110,74, -159,125,75,159,126,79,139,116,99,120,109,84,122,114,66, -129,121,64,133,124,65,138,129,61,146,134,61,149,135,64, -150,137,68,150,137,70,153,139,74,159,140,77,164,142,71, -166,144,69,166,141,74,169,140,79,171,141,80,171,142,78, -172,141,80,177,140,83,182,141,84,183,144,83,185,148,82, -185,147,84,185,147,87,185,147,87,185,147,86,186,147,88, -179,144,94,179,147,89,181,147,89,181,146,89,177,143,89, -170,138,93,161,136,86,155,130,81,149,125,78,139,118,82, -126,109,82,121,101,76,125,101,71,142,113,74,152,119,69, -160,125,66,161,128,60,148,123,69,150,123,70,160,127,62, -175,134,57,180,141,63,184,146,69,188,148,74,196,152,78, -206,159,74,208,169,82,204,174,87,202,177,97,199,179,108, -195,179,119,191,176,124,189,173,118,190,170,117,191,169, -123,186,165,126,181,161,126,177,157,115,173,152,119,169, -148,120,165,141,108,171,139,88,172,137,104,172,133,107, -172,131,111,159,124,109,135,113,101,114,103,90,125,101, -74,130,104,74,140,108,69,150,111,62,161,116,63,164,123, -68,170,130,61,174,134,65,177,137,68,187,140,73,189,145, -83,189,147,88,190,148,94,189,146,98,189,146,100,188,145, -100,188,145,102,187,149,101,184,148,99,185,149,100,187, -151,101,187,153,95,183,151,91,181,151,86,177,151,83,174, -149,86,167,145,86,165,144,87,164,143,87,157,138,83,154, -137,82,149,135,83,132,128,83,123,121,79,130,120,75,139, -121,70,145,124,71,159,129,64,164,132,75,163,130,83,145, -136,127,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,177,187,178,176,188,178,180,188,180,181,187,182,183, -186,183,183,185,183,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -179,185,181,124,158,156,94,121,128,105,108,111,113,100, -98,130,94,83,140,106,72,150,120,70,144,121,72,123,110, -89,122,95,76,129,108,65,136,116,65,139,120,65,144,125, -61,148,131,61,151,135,65,151,137,69,150,137,71,151,139, -74,150,139,74,154,142,67,163,144,68,163,143,74,162,142, -77,171,138,78,175,137,78,174,142,83,175,144,86,176,145, -85,182,145,84,186,146,81,186,146,82,183,146,83,181,147, -83,182,147,83,186,147,86,182,144,94,184,145,88,184,145, -88,180,144,88,175,142,88,173,135,91,167,133,87,164,131, -84,156,126,83,145,119,85,135,110,85,125,105,79,123,104, -71,133,110,68,142,115,63,151,120,61,154,126,55,144,121, -67,144,121,68,153,125,59,165,133,53,175,140,61,181,142, -67,188,145,73,193,149,76,203,157,73,204,167,78,206,172, -86,208,174,96,205,172,104,204,174,117,197,171,121,194, -170,116,195,167,115,197,163,121,195,158,125,188,153,124, -185,149,112,177,147,118,169,140,116,163,133,102,174,135, -86,166,134,98,158,133,101,150,130,101,137,119,95,127,105, -93,127,97,91,134,100,77,140,101,78,155,109,78,163,115, -71,170,121,71,173,126,75,178,135,69,182,143,74,184,146, -76,189,145,77,189,151,85,192,154,94,191,154,100,186,152, -102,186,154,106,185,154,106,184,151,106,185,153,104,185, -152,102,187,151,102,189,151,102,185,156,96,183,154,92, -180,154,88,177,154,86,174,151,87,172,147,89,170,147,90, -165,144,89,156,138,84,151,138,82,145,137,82,133,129,82, -121,122,78,122,120,72,134,124,70,145,126,74,160,134,68, -160,136,78,160,134,84,151,134,126,172,173,183,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,185,181,186,182,182,187,182, -183,186,183,184,186,184,185,186,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,179,185,182,126,157,162,91, -116,133,101,104,109,112,100,85,135,104,61,141,108,74,147, -112,86,138,108,90,116,99,91,120,98,47,129,110,55,136, -117,61,140,121,63,146,126,63,151,134,62,154,139,64,156, -142,68,154,141,72,153,141,77,152,141,78,154,142,70,163, -143,73,163,143,75,160,142,71,172,144,69,180,148,62,178, -151,69,177,150,72,176,148,71,182,149,70,187,150,70,186, -149,77,184,147,84,180,145,84,180,145,82,185,147,84,183, -146,93,184,145,87,185,148,87,181,146,87,175,141,94,172, -135,85,170,135,94,167,132,94,160,128,93,148,122,93,139, -117,81,131,114,77,127,109,74,133,111,73,143,115,71,152, -119,70,151,118,79,144,119,77,145,122,71,155,128,62,166, -135,56,176,141,57,183,146,55,191,151,65,197,155,74,203, -159,69,204,167,83,204,169,89,205,171,97,203,171,105,203, -173,118,198,172,128,194,168,132,195,165,127,194,159,121, -195,158,119,189,156,115,186,150,112,178,148,110,170,142, -107,165,136,96,178,141,75,168,138,90,156,130,101,145,122, -104,130,111,94,126,107,81,132,108,69,141,111,63,152,119, -62,167,126,63,176,132,65,182,136,74,183,137,85,186,139, -89,187,145,94,186,146,89,195,150,87,196,158,89,195,157, -95,195,158,101,192,159,102,191,160,102,190,160,101,190, -158,102,189,159,98,191,158,102,191,156,98,193,158,90,189, -160,100,187,157,101,186,157,102,183,157,99,179,155,97, -176,149,101,172,148,99,169,148,96,162,144,93,152,138,90, -146,136,95,136,131,95,123,121,98,123,119,83,136,128,67, -148,135,57,164,142,55,164,143,70,162,139,76,151,139,108, -165,168,173,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -186,184,184,186,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,183,185,183,183,186,182,172,181, -177,134,154,163,98,111,132,106,95,105,132,93,88,147,110, -68,134,115,74,125,113,76,119,105,79,120,90,86,124,103, -52,130,115,58,131,119,61,133,123,62,142,126,64,147,133, -61,149,139,62,154,140,67,157,137,70,158,134,73,158,134, -75,158,139,70,161,142,73,163,142,75,162,142,71,163,144, -65,178,148,60,178,150,68,180,148,71,181,148,72,183,151, -69,182,154,69,180,153,76,178,148,81,176,146,82,179,148, -82,183,149,82,179,144,90,178,146,85,179,148,84,178,146, -85,173,139,94,170,140,86,169,136,95,169,131,94,162,126, -93,151,118,93,146,117,82,140,112,80,135,109,77,136,110, -73,140,115,70,144,120,68,141,118,76,141,118,76,144,121, -69,153,128,62,171,135,57,181,140,58,186,149,58,191,154, -66,192,154,71,203,160,69,202,165,78,205,167,86,205,169, -95,203,171,104,204,172,117,204,167,128,196,163,129,193, -159,124,194,158,122,191,157,116,181,156,110,181,147,107, -174,146,106,163,140,102,156,137,92,167,147,74,166,134,86, -154,124,97,141,113,98,133,103,91,140,105,86,150,110,78, -156,114,72,164,119,70,177,132,73,183,139,73,187,142,82, -184,144,92,175,149,92,171,146,89,177,146,86,194,150,89, -197,153,88,197,157,98,195,157,102,195,158,104,197,159, -105,199,157,105,196,157,104,195,159,101,189,156,101,188, -159,100,190,164,93,190,160,100,184,157,101,185,158,104, -184,157,101,178,157,100,173,156,106,168,152,101,167,150, -98,164,147,96,158,143,97,149,138,99,137,130,96,118,120, -98,122,119,84,135,127,65,151,136,56,162,147,55,165,143, -69,167,139,76,157,133,101,145,139,155,184,184,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,183, -187,180,180,186,179,171,181,175,141,159,157,98,114,117, -108,100,90,142,108,73,150,108,94,124,99,98,108,91,82, -108,94,64,123,101,49,130,111,50,131,116,54,132,121,59, -134,125,60,144,132,52,150,138,56,149,139,57,151,139,56, -157,140,56,161,141,57,162,142,62,161,141,79,163,143,81, -164,143,78,164,142,75,163,142,75,178,146,71,180,150,80, -182,149,80,184,150,76,186,153,75,181,151,83,180,150,86, -180,150,87,181,150,89,181,149,90,183,147,93,180,146,86, -176,144,87,177,145,84,176,145,82,174,141,90,170,138,96, -167,135,89,169,133,85,164,131,83,155,126,84,150,123,74, -145,121,71,143,119,71,141,118,68,142,117,69,144,118,71, -142,119,75,142,119,75,144,121,69,154,129,64,173,137,61, -185,145,60,186,149,61,189,151,63,194,157,64,205,162,68, -206,167,90,206,166,101,207,167,113,202,167,117,200,168, -115,203,170,111,197,167,118,196,165,119,197,162,116,192, -160,111,178,154,106,179,147,92,170,143,97,162,140,94,156, -138,87,162,139,89,163,129,86,155,128,88,145,122,79,140, -116,67,151,122,62,163,128,57,169,132,55,178,139,55,187, -145,69,192,148,82,197,152,86,192,153,100,181,152,109,174, -147,99,177,146,84,196,154,78,200,157,93,200,161,94,197, -161,94,195,160,94,198,161,95,202,162,99,199,161,104,199, -164,105,195,162,107,192,162,107,192,162,111,192,164,98, -189,163,102,189,162,106,190,162,111,184,163,112,174,157, -111,171,155,105,170,152,104,167,150,104,163,148,103,154, -144,100,142,135,99,122,125,96,125,123,82,137,127,68,153, -134,76,163,144,76,164,140,77,166,137,81,158,132,93,137, -133,130,184,184,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,183,186,183,181,185,181,175,181,177, -139,155,153,98,107,113,114,102,93,143,110,72,129,103,87, -112,91,90,109,83,77,120,89,64,133,103,52,133,113,54,129, -117,55,130,119,58,132,121,58,146,130,54,154,135,57,156, -136,59,157,136,58,157,137,56,160,140,57,162,140,61,158, -138,76,160,139,77,165,140,75,169,139,75,170,139,75,171, -142,66,173,144,74,174,145,73,177,149,71,180,150,71,181, -148,81,179,148,84,178,148,86,179,150,88,177,148,89,174, -146,92,178,146,86,176,144,89,175,142,85,174,142,82,172, -138,90,164,135,94,161,132,89,163,132,86,161,132,84,155, -127,84,149,127,76,146,124,75,145,122,74,145,122,74,141, -119,71,140,119,73,144,117,75,142,119,74,143,122,68,148, -128,60,160,135,56,172,141,56,184,146,60,193,149,63,200, -154,65,209,163,70,210,166,92,208,166,103,204,167,113,198, -167,118,196,166,114,200,168,110,198,165,115,197,162,117, -188,158,112,181,156,107,177,151,104,174,148,94,167,142, -97,159,134,91,155,131,84,162,131,85,161,128,84,159,125, -85,155,121,78,157,119,71,167,128,69,176,137,66,179,141, -65,182,145,62,190,151,74,191,152,84,192,155,89,185,156, -102,182,153,109,183,150,103,188,152,91,193,160,85,197, -162,98,193,160,93,192,162,95,192,164,98,194,167,101,193, -168,102,192,168,108,197,168,109,192,166,109,189,166,109, -188,164,113,191,167,101,191,170,109,190,168,111,188,166, -111,185,165,111,175,161,115,171,159,108,170,157,108,166, -151,106,163,147,103,156,142,98,143,134,97,128,124,95,128, -124,81,142,131,70,156,132,74,158,140,74,160,136,77,163, -131,79,159,127,89,146,126,126,182,182,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,186,182, -181,185,180,167,178,172,127,146,145,97,105,109,117,106, -94,144,112,76,124,101,91,108,89,89,116,89,66,133,100,50, -139,109,58,133,113,67,130,118,65,132,121,66,136,123,66, -145,128,70,155,134,70,159,135,70,160,136,72,162,139,73, -165,141,74,166,142,79,161,140,86,160,141,82,166,142,75, -173,146,72,176,146,73,174,145,76,174,145,76,173,143,77, -173,144,79,177,145,88,179,145,89,179,148,88,176,149,86, -175,148,85,172,146,85,170,144,87,175,145,86,176,146,86, -175,143,88,174,140,91,172,139,90,169,140,87,166,138,91, -166,135,91,161,131,88,157,128,86,151,127,85,147,125,78, -148,124,77,148,123,79,144,120,82,141,119,84,146,119,82, -145,121,81,144,121,75,148,126,70,158,131,70,169,136,68, -181,142,69,192,147,70,198,152,72,205,161,76,207,164,84, -209,167,88,209,172,99,204,173,109,198,169,113,199,168, -116,198,167,116,197,165,114,185,156,115,177,152,119,175, -148,121,169,144,113,162,137,107,160,135,102,156,133,93, -162,132,92,162,132,81,161,131,79,163,130,79,170,134,80, -178,140,80,182,144,79,184,148,77,187,151,81,195,157,86, -197,161,89,197,161,97,188,160,98,186,158,93,189,158,93, -194,160,95,192,161,95,197,163,100,194,162,107,194,164, -113,194,167,115,193,168,112,194,170,112,191,169,113,196, -168,112,197,170,117,191,169,119,189,168,121,193,168,118, -192,171,114,189,167,113,188,165,117,186,166,123,177,162, -113,170,159,113,167,156,108,163,151,98,163,149,92,157, -144,90,144,135,89,130,127,89,127,123,79,146,135,77,164, -140,73,152,134,89,151,126,86,155,124,78,158,125,80,146, -124,106,153,159,174,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,183,176,185,176,146,169,158, -109,130,133,97,99,105,122,105,96,141,111,84,119,100,98, -105,89,91,123,94,61,146,108,41,141,113,60,130,114,62, -131,119,61,135,124,62,140,127,62,146,130,64,153,134,63, -157,137,66,161,141,70,164,142,72,165,143,73,165,144,78, -161,142,83,158,141,81,166,145,78,173,148,74,176,149,78, -175,148,87,176,146,85,175,144,89,172,143,93,172,142,95, -175,142,94,174,144,89,173,145,83,172,145,81,171,145,79, -169,143,77,169,143,79,176,146,82,175,144,86,171,140,86, -170,140,83,169,143,79,165,139,84,165,135,87,162,132,88, -155,128,91,151,125,86,149,124,77,149,125,76,146,122,77, -143,120,80,142,118,84,146,119,78,146,120,78,146,120,74, -148,122,70,157,126,69,167,132,65,175,137,63,187,142,67, -195,149,72,201,159,74,207,162,75,210,165,76,211,172,89, -207,176,104,200,174,116,194,168,121,193,164,116,194,163, -114,186,154,113,178,148,118,170,143,120,170,139,103,163, -137,102,160,135,97,159,134,90,159,133,91,163,132,81,163, -133,78,167,133,78,174,138,79,177,140,80,181,144,82,186, -149,80,187,152,89,194,155,88,200,159,88,199,161,96,193, -160,96,192,162,90,193,163,94,192,163,96,195,163,92,196, -165,98,194,163,111,191,160,114,192,162,112,194,167,111, -193,169,111,189,169,109,193,169,111,195,170,113,193,170, -114,194,168,118,188,168,122,192,167,110,193,167,115,187, -165,120,180,162,120,177,161,110,170,157,109,164,150,99, -165,151,93,162,149,89,155,144,89,144,135,86,130,124,84, -125,119,78,140,131,81,159,136,75,142,125,87,135,119,82, -144,117,70,159,122,72,153,125,101,166,171,180,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,183,185, -183,174,186,174,129,163,150,95,118,123,101,100,100,126, -105,93,136,107,89,116,95,98,104,88,90,129,99,61,154,113, -40,140,114,60,133,115,61,134,120,60,137,123,60,143,129, -61,151,132,61,155,136,62,157,139,65,159,141,68,162,144, -71,163,145,73,163,146,76,161,146,79,167,145,80,172,146, -80,176,148,82,177,148,90,172,147,98,175,146,96,174,145, -98,168,143,97,164,141,96,167,141,98,169,141,92,172,142, -88,172,141,84,173,143,81,173,144,77,169,142,82,174,142, -84,174,142,89,170,139,85,170,138,77,166,140,82,168,139, -85,166,137,87,160,134,88,149,128,92,149,121,83,150,121, -83,149,121,81,145,120,78,142,119,80,140,118,84,145,120, -75,143,123,72,142,121,68,148,125,66,158,127,64,164,132, -63,173,136,61,186,140,64,195,147,70,199,156,74,206,159, -71,210,165,79,210,172,94,206,174,109,199,171,119,192,165, -122,192,162,120,190,159,120,182,149,112,177,145,110,167, -139,111,174,137,87,165,137,91,161,136,87,163,136,85,165, -135,91,170,136,83,172,137,81,175,139,78,179,142,77,180, -142,77,181,142,82,184,147,85,183,148,92,192,150,87,201, -155,82,196,158,91,194,159,99,193,160,92,193,162,97,191, -161,100,196,164,98,197,167,105,195,163,110,193,161,110, -196,165,111,197,170,112,194,172,113,191,171,109,189,170, -108,189,170,107,191,171,109,195,170,113,188,167,118,189, -164,106,191,166,110,184,163,108,182,163,103,177,159,99, -171,156,96,166,153,93,163,151,92,158,149,95,149,142,94, -143,135,85,134,127,84,122,118,79,131,126,85,149,131,76, -143,122,76,129,113,79,135,109,75,152,115,78,159,126,99, -172,174,180,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,183,176,185,175,139,167,156,92,119, -117,101,103,88,128,110,77,132,109,80,115,96,93,102,88, -87,129,101,57,156,115,37,142,116,60,134,117,61,135,121, -58,139,123,63,143,127,64,154,135,60,159,139,67,160,140, -71,162,143,75,163,145,77,165,146,79,165,145,83,160,143, -82,167,143,80,175,147,81,176,148,83,175,146,96,167,142, -104,168,141,103,168,142,99,165,141,98,160,140,97,159,137, -103,160,134,101,163,133,96,165,134,91,169,136,87,172,139, -85,169,137,88,170,136,87,170,136,93,169,137,94,175,141, -79,168,140,82,168,138,79,167,138,84,159,134,86,148,127, -84,148,121,76,150,120,77,148,118,77,145,119,79,143,119, -84,139,116,87,142,118,83,140,121,75,141,121,72,144,122, -71,156,126,67,163,131,66,172,133,69,183,137,66,195,148, -67,201,156,75,208,159,76,213,167,89,212,173,103,206,173, -112,200,172,116,196,168,117,191,159,129,186,156,127,182, -149,116,174,143,104,164,136,107,174,137,88,167,138,92, -164,136,85,165,136,81,166,136,87,172,137,80,174,139,82, -175,139,79,179,142,75,183,144,74,184,144,76,181,144,78, -183,146,83,192,150,83,200,157,87,196,159,93,194,159,95, -192,159,90,195,163,97,195,164,102,195,166,99,196,167,105, -193,165,107,193,165,107,196,169,108,196,172,109,193,171, -110,191,170,108,190,168,106,189,170,107,186,169,104,187, -167,108,186,165,109,186,162,111,186,162,111,183,162,105, -182,162,101,178,160,100,170,158,103,164,154,100,160,151, -96,153,146,94,146,140,94,144,135,90,135,129,88,121,119, -84,123,121,85,140,127,73,150,128,57,140,122,66,133,107, -75,140,107,87,158,122,88,156,157,169,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,183,185,182,175,185, -175,153,172,162,101,122,120,108,103,85,135,112,76,130, -112,79,108,97,92,97,87,84,122,99,55,152,116,37,148,117, -60,134,119,59,133,122,57,140,126,63,144,129,61,153,137, -57,160,140,64,163,141,69,165,143,73,167,146,78,165,145, -80,163,144,82,156,146,82,160,144,81,165,149,81,169,151, -83,171,145,96,165,140,103,161,138,99,159,136,93,156,135, -91,155,134,90,152,129,97,148,126,95,148,125,89,151,125, -85,156,128,82,161,132,81,162,132,83,162,132,82,158,129, -85,162,130,87,171,136,77,173,137,78,169,137,76,164,138, -82,155,133,83,152,124,79,149,124,75,148,122,75,148,121, -77,147,121,80,146,118,82,146,116,86,142,115,85,141,117, -75,142,115,73,145,118,73,149,125,65,160,130,65,167,132, -69,176,135,66,190,143,64,201,151,70,212,160,75,216,168, -89,213,173,103,205,173,111,200,173,116,197,171,119,182, -161,129,177,154,123,178,151,115,171,143,103,164,135,106, -169,138,92,169,136,91,169,133,86,169,134,82,167,133,82, -168,136,80,171,135,81,174,135,77,182,139,75,188,142,74, -191,144,75,193,147,78,194,149,85,195,153,83,195,158,86, -194,159,94,195,160,92,194,161,90,196,164,97,194,163,99, -193,163,95,194,163,101,193,163,103,193,163,104,195,165, -105,199,167,106,197,166,105,190,167,106,194,165,105,197, -169,106,194,171,105,189,171,109,189,166,110,186,163,113, -183,161,109,182,160,103,178,161,102,176,163,108,168,159, -109,162,152,101,160,148,95,159,143,91,157,140,92,149,135, -91,137,129,89,121,119,83,110,110,74,119,111,66,151,122, -53,165,125,65,150,117,78,135,106,81,156,114,73,143,126, -149,176,176,180,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,185, -183,180,186,176,174,186,174,152,172,164,110,129,120,112, -108,83,138,115,74,130,112,81,109,100,85,98,89,81,118,94, -58,150,113,47,152,121,59,136,122,52,137,127,53,142,130, -56,148,134,61,154,137,66,161,140,69,166,143,72,169,146, -78,168,145,82,165,145,85,163,144,87,154,142,91,158,142, -92,160,143,90,162,142,88,166,141,90,163,137,99,160,138, -95,159,137,95,155,134,96,152,130,92,149,127,93,147,126, -91,145,123,91,149,122,95,149,120,92,150,122,83,153,125, -77,156,127,82,158,130,82,162,132,78,170,135,77,173,136, -83,168,137,74,164,137,77,155,134,77,157,131,72,154,128, -78,151,124,79,151,124,79,148,121,75,147,120,74,148,120, -81,144,117,87,142,116,83,141,113,77,146,119,74,151,126, -64,159,129,65,165,131,76,175,133,74,190,141,72,199,149, -74,208,157,72,214,166,81,214,175,98,209,178,113,201,175, -121,198,172,128,183,163,130,177,159,111,177,153,107,174, -145,110,168,137,118,168,133,113,169,135,89,172,136,86, -172,136,84,171,136,78,167,134,83,170,134,81,176,136,81, -181,138,80,187,141,78,192,144,74,193,148,75,197,155,76, -197,157,77,195,158,86,192,155,107,193,158,99,194,159,100, -194,158,107,192,157,114,190,154,119,190,155,113,190,158, -106,191,159,106,192,160,110,194,159,110,196,163,111,188, -164,110,193,163,110,196,167,108,194,170,103,188,171,96, -189,169,98,190,169,104,189,167,107,187,165,107,179,162, -110,176,162,113,168,159,101,163,154,93,162,149,89,160, -143,87,161,142,88,153,139,86,139,131,85,125,122,89,108, -105,87,110,93,104,140,105,80,162,120,62,160,126,72,141, -114,71,153,110,59,144,130,116,170,170,173,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,179,186,173,174,188,167,170,185,171, -145,169,159,106,128,120,108,108,81,129,112,69,126,107,76, -112,94,82,96,87,79,100,94,53,128,118,44,146,122,58,139, -122,53,143,125,54,147,129,58,152,134,62,159,135,67,165, -139,69,163,141,70,162,143,74,160,143,78,158,142,81,158, -141,84,156,138,89,154,138,89,155,138,86,158,138,84,156, -139,85,148,135,92,148,134,89,147,132,88,142,127,88,140, -125,86,143,121,87,142,122,87,141,123,89,137,118,88,134, -113,82,137,115,73,143,118,70,148,119,74,151,124,75,152, -130,72,155,134,71,159,133,76,159,134,69,161,134,74,155, -133,76,154,134,73,148,128,76,144,126,77,141,124,76,140, -122,73,141,121,73,144,121,80,141,118,86,139,116,82,138, -114,77,140,118,71,150,124,63,160,126,64,161,126,72,167, -129,69,184,139,68,202,147,72,210,162,76,219,168,84,221, -174,99,213,178,114,200,178,123,189,172,125,180,157,125, -176,149,105,176,148,104,167,141,106,163,132,113,160,127, -106,161,128,82,168,132,82,169,132,80,173,132,76,173,135, -85,170,137,83,171,139,81,176,141,81,184,143,78,189,148, -76,183,154,76,186,160,75,190,162,78,189,159,86,184,152, -102,188,153,94,190,158,98,190,160,107,186,157,112,184, -154,117,181,150,107,184,154,101,187,157,103,184,153,103, -186,152,103,194,153,103,192,156,106,188,161,108,189,165, -105,190,165,99,195,166,95,195,165,98,190,169,104,188,168, -106,186,165,107,182,162,110,170,155,106,167,151,95,168, -149,91,165,145,87,161,140,85,157,140,86,150,139,85,139, -132,86,127,122,90,109,106,89,94,93,98,119,98,68,150,110, -50,162,125,72,149,117,76,150,109,55,147,117,107,170,170, -172,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,184,180,188,176,178,187, -173,174,185,179,148,169,167,99,122,115,107,107,78,129, -112,68,126,108,76,115,99,79,98,89,79,96,81,84,121,98, -86,145,122,47,139,123,50,144,127,55,149,131,56,152,135, -56,161,137,63,165,141,63,164,143,71,161,142,76,158,141, -74,157,142,72,156,142,71,156,139,81,153,138,79,156,139, -83,159,140,84,158,141,81,151,138,84,147,133,81,146,132, -80,143,130,76,141,127,75,147,126,79,147,129,80,144,128, -79,139,123,77,137,119,76,140,118,78,143,115,88,146,117, -79,149,120,76,148,124,74,149,127,72,156,128,78,158,129, -83,161,132,81,159,135,80,156,132,89,151,129,86,146,127, -84,142,123,81,141,122,81,143,122,78,144,121,72,142,119, -74,140,119,72,139,117,71,140,118,70,148,120,71,160,127, -63,161,131,49,169,135,50,186,143,59,205,151,67,208,159, -74,214,163,86,219,172,109,213,176,127,199,173,135,185, -165,132,177,155,119,178,150,110,174,145,108,167,139,109, -165,136,102,162,133,93,165,132,84,169,132,85,171,134,85, -175,138,74,177,142,72,175,143,80,173,142,81,178,143,81, -187,147,81,193,152,86,187,155,94,187,157,93,190,158,99, -189,157,101,186,156,97,189,156,91,189,159,93,188,160,95, -184,158,93,182,156,90,183,154,100,185,156,96,185,157,95, -180,152,92,181,149,93,191,152,97,192,158,97,186,160,101, -188,162,105,188,161,103,192,162,96,192,162,101,188,167, -98,186,168,95,186,168,94,183,165,96,175,163,96,170,155, -97,171,151,96,171,151,90,167,149,82,162,146,83,150,139, -91,138,131,92,125,122,86,110,109,84,94,94,98,116,94,68, -148,109,46,162,126,67,148,116,74,149,105,61,148,119,100, -163,163,166,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,182,186,180, -181,186,177,175,184,178,151,172,168,97,120,114,108,107, -77,128,111,67,122,108,75,110,100,78,94,90,79,83,81,78, -98,90,71,138,109,37,144,119,49,146,122,53,152,128,55, -158,135,59,158,139,64,165,141,64,167,141,71,164,139,75, -158,139,74,154,140,70,155,143,71,157,136,80,152,137,79, -150,138,81,151,140,81,157,139,81,154,138,86,147,136,83, -145,135,82,145,134,79,147,133,79,147,133,83,145,131,80, -145,129,81,146,125,82,146,124,83,144,125,84,138,121,87, -134,122,76,138,123,73,139,122,70,142,124,67,148,125,71, -149,127,76,152,131,75,155,134,77,147,129,82,145,124,79, -144,123,80,143,122,80,141,120,79,143,120,76,143,120,71, -137,117,71,140,116,71,140,117,72,140,119,70,142,122,69, -156,125,61,171,131,52,184,138,57,191,142,60,198,148,61, -205,162,75,211,169,87,215,174,106,211,174,123,202,167, -130,194,158,131,187,149,120,180,148,109,172,141,104,165, -134,104,163,131,99,160,131,91,163,131,82,166,133,85,168, -134,83,175,139,74,173,143,71,174,144,80,174,143,83,177, -145,82,182,149,81,188,153,85,187,153,92,186,156,91,183, -155,94,183,154,96,182,153,93,183,153,86,185,156,90,183, -158,92,178,156,90,175,154,86,177,148,94,175,146,85,178, -147,84,182,146,88,184,146,91,187,150,93,188,153,92,187, -152,95,187,154,100,188,155,99,193,157,95,188,159,97,185, -160,93,187,164,93,188,168,94,181,167,98,176,164,99,171, -159,101,167,154,96,169,154,90,169,151,84,165,146,84,152, -138,90,139,131,90,127,123,87,111,113,86,90,98,98,109,95, -64,141,110,43,155,122,62,145,113,70,147,105,60,147,118, -99,165,164,167,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,182,186, -180,181,186,177,173,184,181,142,165,172,93,116,127,111, -107,93,134,114,81,126,109,85,111,97,94,95,89,84,82,79, -79,87,77,68,125,89,50,143,117,53,146,123,52,153,130,53, -161,139,57,159,141,58,166,141,71,167,140,79,164,139,81, -158,138,78,153,139,75,151,138,71,157,139,71,154,141,72, -151,142,72,149,141,68,155,140,70,156,142,78,152,144,83, -150,141,82,150,140,82,152,138,87,150,137,82,148,135,81, -149,134,81,154,136,80,155,136,79,151,133,83,144,129,88, -139,125,87,140,123,82,142,124,80,142,122,84,146,119,87, -148,122,86,149,124,82,151,127,80,146,128,82,145,123,81, -144,123,83,142,121,84,140,120,82,142,120,78,144,121,72, -138,119,74,141,119,69,141,118,67,141,120,69,142,121,76, -157,125,60,174,132,59,186,139,61,194,146,63,204,153,70, -207,162,83,208,165,93,209,167,106,203,166,114,196,163, -115,191,160,109,187,154,105,180,149,103,172,143,99,165, -138,91,164,134,87,159,132,86,162,129,83,166,132,90,169, -134,88,177,138,78,172,140,85,173,141,85,177,144,85,179, -146,82,182,149,78,187,153,78,188,154,88,186,154,97,183, -154,98,184,154,94,182,153,88,180,148,94,181,150,95,179, -150,100,174,148,102,171,147,95,172,145,87,173,143,93,176, -142,95,181,144,92,184,147,87,185,148,85,184,149,84,185, -150,91,184,151,91,185,153,89,192,157,88,188,159,94,189, -163,97,190,165,100,189,167,104,185,167,108,178,166,100, -171,161,94,168,156,92,169,153,92,170,150,89,166,147,88, -154,139,93,141,135,88,129,126,86,113,114,92,91,97,111, -109,92,79,139,105,62,153,119,71,145,112,69,149,105,68, -147,119,115,171,169,174,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,183,185,183, -180,186,177,178,187,172,163,182,175,111,153,162,76,106, -116,98,104,85,127,116,79,129,109,88,117,94,95,109,88,88, -96,78,84,92,77,71,111,93,49,137,119,53,142,125,52,148, -131,52,154,138,53,158,141,57,162,144,71,159,140,75,154, -138,76,151,140,76,148,138,72,148,137,69,145,139,66,145, -138,67,146,139,68,148,139,67,153,140,70,155,139,75,151, -139,80,146,138,79,142,138,78,142,136,82,145,135,77,146, -134,80,146,133,80,151,136,79,153,136,78,152,133,83,148, -128,87,140,126,86,139,125,82,140,123,81,143,119,84,138, -119,85,138,120,80,141,120,75,145,122,75,150,124,81,147, -122,81,139,121,80,134,118,79,135,118,78,141,118,75,146, -119,71,140,117,74,141,118,69,141,118,68,139,117,68,141, -117,73,157,126,61,169,136,58,180,141,59,190,146,62,202, -152,69,211,160,81,208,164,93,204,167,104,195,162,109,188, -157,108,189,156,106,188,152,104,178,148,103,167,141,95, -162,137,87,161,133,84,160,131,85,159,130,81,160,129,85, -162,130,82,173,137,74,172,136,81,171,136,79,175,137,79, -179,140,78,183,145,76,182,150,75,179,150,81,175,152,90, -174,150,90,172,151,87,169,153,82,165,148,86,164,147,84, -166,144,90,164,137,90,165,136,86,168,137,79,172,138,88, -172,137,89,177,143,88,178,146,84,177,147,80,178,148,83, -181,148,90,179,150,89,176,153,85,176,158,83,180,162,90, -181,164,94,182,165,96,184,164,99,186,159,103,181,159,98, -179,158,95,174,155,92,166,151,88,164,148,84,163,145,86, -151,140,92,142,137,90,128,129,88,106,115,90,80,97,107, -102,91,77,131,104,59,147,116,67,143,111,68,144,105,69, -145,123,116,168,167,174,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,184,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -181,186,177,174,187,168,152,178,181,98,141,171,81,105, -139,91,90,111,124,107,102,131,113,79,124,108,66,119,107, -56,112,103,60,108,98,62,121,103,55,139,120,59,144,124, -68,147,127,66,151,132,65,157,136,72,160,140,76,159,140, -77,156,139,81,150,136,83,148,136,82,149,136,78,143,134, -72,142,132,76,145,135,77,149,139,74,154,142,71,159,141, -79,153,141,85,147,139,84,141,135,82,139,130,86,141,128, -84,142,128,83,144,129,82,147,130,82,149,132,81,150,132, -82,151,131,83,142,128,79,138,124,83,138,120,83,144,121, -77,140,121,86,138,120,83,141,118,82,146,120,85,149,121, -88,146,120,82,137,118,84,131,114,83,131,113,78,135,112, -74,142,114,73,138,116,71,141,117,73,141,117,70,139,118, -66,142,118,69,157,124,66,168,131,69,178,137,69,189,144, -68,203,152,68,209,159,71,209,167,87,205,169,100,198,166, -103,191,161,104,192,157,108,190,153,111,181,147,120,165, -135,114,161,132,109,161,131,99,161,131,88,160,132,81,161, -134,73,164,135,66,173,138,66,171,136,73,170,135,75,172, -135,71,178,140,70,182,144,77,179,144,88,177,144,98,172, -147,95,169,145,95,167,144,100,162,141,103,160,139,93,159, -139,87,160,136,87,163,134,88,164,133,88,170,137,88,170, -136,84,172,138,83,177,143,86,179,145,86,179,147,86,179, -148,85,184,152,84,186,157,85,181,157,84,177,156,91,178, -157,99,179,159,94,177,158,92,175,154,88,181,154,95,182, -159,100,178,156,93,175,156,94,166,151,90,163,146,87,165, -147,90,154,143,97,146,139,99,132,131,95,107,114,93,78, -93,113,101,90,77,131,104,61,148,117,65,145,113,62,147, -106,62,145,123,116,168,168,172,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,181,186,177,173,186,166,144,174,177,105,144,171, -85,113,141,75,90,103,110,105,95,136,112,80,132,114,72, -129,118,66,119,115,69,114,109,70,127,110,61,134,123,60, -138,124,67,142,126,65,148,133,65,150,135,69,147,136,68, -147,138,72,148,139,79,144,135,82,143,135,82,144,136,76, -145,135,72,138,133,74,137,134,72,138,138,68,141,144,64, -147,141,73,143,138,77,142,133,77,140,130,77,138,122,81, -131,122,77,129,122,74,131,122,72,132,122,69,133,121,66, -135,122,67,134,123,68,137,120,70,136,115,74,135,113,77, -139,118,71,138,114,82,137,116,82,137,117,81,137,117,80, -139,115,80,139,116,76,131,116,80,123,113,77,122,112,72, -125,111,65,134,112,65,137,113,67,140,113,67,145,113,67, -148,112,66,148,115,69,158,121,64,168,125,65,179,132,65, -193,141,66,205,149,67,211,158,71,209,168,87,204,172,99, -199,170,104,192,166,106,189,163,108,192,153,110,179,146, -117,166,134,113,160,128,107,159,128,96,160,129,86,159, -131,79,163,132,71,169,134,66,171,139,62,166,136,69,165, -132,71,167,131,66,176,139,68,177,141,72,173,141,84,163, -140,91,165,141,88,161,139,87,154,136,88,152,131,90,153, -131,85,154,132,81,155,133,83,155,133,84,159,132,85,156, -136,80,155,138,76,158,139,75,164,142,78,166,144,79,170, -147,82,172,150,83,174,154,81,177,157,81,178,159,84,177, -156,89,173,149,92,167,151,87,166,155,88,169,159,89,173, -159,97,173,158,97,172,156,92,171,155,92,167,150,91,166, -149,91,165,148,91,152,143,96,141,137,94,134,130,94,112, -111,92,81,91,112,104,89,77,127,103,58,145,115,61,146, -113,60,144,106,59,144,121,117,175,175,177,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,184,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,177,186,172,170,186,158,136,171,175, -102,141,169,83,110,144,71,84,110,108,102,93,138,118,61, -136,118,72,131,117,81,118,111,84,113,107,75,127,113,48, -135,123,65,138,125,62,143,128,64,147,132,67,151,135,68, -146,135,77,145,135,80,146,137,82,144,136,80,143,136,78, -143,135,80,145,130,93,139,130,87,138,132,80,136,134,75, -133,132,78,137,126,84,132,123,80,131,119,80,130,116,78, -131,114,75,125,114,82,122,111,82,123,111,80,123,110,75, -121,107,69,123,108,70,123,108,75,130,109,81,132,108,83, -133,109,82,136,111,80,138,113,83,135,115,78,135,116,74, -136,117,74,140,115,80,140,114,87,131,111,100,121,105,101, -115,100,91,121,102,81,131,107,72,134,111,59,138,111,64, -143,110,69,148,110,71,148,114,68,159,124,58,170,131,56, -183,138,56,196,146,57,208,155,59,214,162,72,211,170,89, -203,171,99,199,170,108,191,165,111,185,159,110,192,151, -112,179,143,119,167,135,111,160,129,100,158,128,92,162, -130,91,158,129,90,161,127,85,167,129,83,170,132,84,165, -132,83,163,127,80,167,127,79,172,131,80,171,132,79,168, -135,80,158,135,78,159,132,86,152,129,82,144,127,75,147, -125,82,154,129,89,153,129,89,155,130,91,153,128,89,155, -127,83,149,127,85,145,123,84,147,122,86,154,126,91,158, -130,92,164,136,95,167,140,97,168,144,88,172,151,76,168, -152,58,167,153,53,171,154,58,173,162,73,173,164,79,173, -164,85,173,159,94,172,160,86,174,161,81,175,162,86,173, -159,89,171,155,91,168,152,92,151,144,93,139,134,104,134, -129,100,113,113,87,81,94,103,106,95,67,128,104,60,143, -110,65,143,108,66,143,103,67,139,120,101,180,180,181,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,184,185,185,185,184,186, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,176,187,168,166,186,154,128, -164,169,91,131,163,67,97,134,61,73,99,103,96,87,138,114, -59,126,112,66,114,110,71,103,99,71,105,94,65,132,103,42, -139,116,62,136,121,59,143,126,62,146,128,65,148,131,63, -145,128,72,144,127,75,144,127,75,143,128,74,142,127,72, -143,128,75,138,123,85,132,126,81,130,129,75,127,131,70, -125,128,74,124,123,77,121,120,74,121,116,75,121,113,73, -123,116,73,119,112,80,117,110,80,116,110,78,114,112,74, -113,113,70,115,112,69,116,108,72,118,103,74,119,102,76, -117,100,72,118,103,69,124,104,72,127,107,70,131,109,68, -134,113,70,138,110,75,131,108,80,119,106,92,106,100,93, -101,96,84,105,99,74,112,104,64,126,108,55,131,109,60, -135,108,65,139,107,66,147,109,64,158,117,53,172,125,53, -185,135,55,197,141,54,208,147,55,216,159,71,215,164,86, -210,166,99,202,166,107,195,164,111,191,159,112,182,152, -110,169,138,112,163,132,108,157,126,97,151,126,89,158, -124,86,157,123,85,157,122,81,158,123,76,157,124,75,149, -124,72,151,123,73,152,122,71,154,127,71,154,129,70,154, -130,72,151,131,72,141,125,76,143,127,77,142,126,73,139, -121,77,136,119,77,142,120,79,143,120,80,138,117,75,137, -118,70,135,116,73,129,114,73,127,113,73,129,113,74,132, -116,74,132,119,74,133,121,72,139,124,65,151,135,59,163, -147,53,174,152,55,182,153,61,183,158,74,181,161,79,180, -162,86,175,155,92,170,152,80,176,159,81,179,161,86,172, -156,87,168,153,89,165,150,91,156,145,94,139,129,102,132, -128,99,107,113,85,80,92,102,107,93,66,126,99,56,137,109, -62,138,107,63,140,95,62,147,109,93,173,173,175,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,184,185,184,185,185,185,184,186,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,176,185,172,170,185,166,133,164, -169,84,124,154,56,86,126,57,68,93,101,93,80,134,108,53, -119,104,70,104,99,75,94,91,65,102,93,51,134,106,36,140, -120,54,137,123,59,141,124,61,145,127,64,144,127,66,143, -127,73,139,123,76,137,122,77,136,121,76,136,122,72,137, -124,65,137,127,61,133,129,62,128,128,64,123,127,65,120, -123,67,122,123,60,124,125,63,125,123,61,128,123,61,129, -124,63,126,121,76,125,121,70,124,122,68,121,120,72,117, -117,76,117,114,79,118,110,76,119,108,74,119,103,76,117, -101,76,115,100,71,116,96,81,119,99,74,123,100,74,125, -102,72,132,105,68,131,111,73,120,110,80,107,102,81,100, -96,79,101,95,81,106,96,79,119,100,66,125,103,65,131,105, -62,137,108,58,149,113,54,162,122,52,176,130,57,189,138, -59,200,144,58,209,149,60,217,159,75,214,163,87,209,167, -100,202,168,111,196,165,115,194,162,116,183,153,117,174, -144,109,166,135,105,159,127,104,150,122,103,155,121,91, -154,120,92,154,119,84,153,120,79,152,118,86,143,118,79, -144,116,79,148,117,81,147,118,81,146,119,83,146,119,86, -143,121,86,137,118,88,136,117,86,135,117,79,133,115,74, -130,111,83,134,111,77,135,111,74,132,111,70,130,111,71, -131,112,66,129,115,65,128,114,65,132,117,66,135,120,68, -134,122,71,135,122,71,139,124,74,148,129,78,153,132,75, -162,135,74,175,143,73,176,149,81,175,156,80,171,156,71, -171,154,67,174,159,70,176,160,74,176,161,79,172,158,81, -169,155,86,166,152,92,153,142,96,139,133,88,131,129,94, -106,110,94,80,91,107,109,95,69,131,104,62,144,113,79, -140,106,81,138,94,60,147,111,67,158,156,164,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,184,185,184,184,186,184,184,186,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,177,185,172,174,185,173,152,169,172, -95,125,152,55,78,118,56,62,84,99,87,73,130,104,51,108, -97,68,94,89,69,93,86,59,106,93,45,132,105,33,140,120, -52,137,122,55,136,125,58,137,128,62,134,128,63,129,125, -71,123,122,73,118,118,73,116,116,71,118,117,67,124,120, -60,133,120,56,133,122,60,131,122,62,128,122,62,126,121, -66,134,123,60,136,127,66,138,130,69,136,131,68,134,130, -68,126,124,83,122,119,71,123,120,69,119,117,74,115,114, -80,115,113,83,117,111,75,118,107,72,118,105,76,116,103, -78,119,103,76,114,101,84,117,100,76,117,101,74,116,102, -69,121,104,65,125,107,69,125,107,75,120,104,78,110,96, -77,104,93,79,104,94,79,110,101,65,114,104,62,121,106,61, -131,109,58,146,114,53,169,121,54,180,132,55,191,141,58, -200,147,61,208,154,64,211,165,84,210,167,93,208,169,104, -203,170,116,197,166,119,194,163,118,182,152,118,176,143, -108,165,133,104,151,125,101,144,118,102,144,121,89,141, -119,88,139,118,80,139,119,78,133,116,84,130,112,73,133, -112,74,135,113,75,137,116,76,135,115,76,134,113,79,130, -113,83,128,111,83,126,107,76,128,107,70,130,109,70,131, -107,76,132,107,72,134,111,71,136,113,69,138,116,70,140, -119,66,138,122,68,138,122,69,140,123,69,142,126,71,140, -127,72,138,129,74,138,127,75,138,125,75,140,129,74,147, -135,72,153,140,70,157,142,76,159,143,70,161,148,62,171, -155,61,175,161,69,173,162,72,173,161,77,172,158,80,169, -155,83,163,150,88,150,141,91,142,137,87,131,129,91,105, -107,91,82,88,102,112,94,67,132,103,60,135,113,84,119, -103,87,123,88,59,145,102,63,141,139,154,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,185,184,186,184,184,186,184,184,185,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,178,185,173,172,183,177,149,166,172,89, -118,151,48,73,114,51,60,80,92,83,65,121,99,45,100,89, -69,92,83,59,98,86,58,109,92,49,133,105,28,139,118,54, -138,123,59,135,125,63,132,125,65,129,123,66,123,119,74, -117,115,74,113,112,73,111,110,73,110,108,72,114,107,72, -126,112,69,130,115,70,128,115,64,127,119,61,125,119,63, -133,120,58,134,123,69,133,125,73,129,126,72,122,122,79, -113,115,83,105,105,74,103,102,73,102,100,75,101,101,77, -103,103,76,114,106,65,118,106,54,116,106,58,115,107,66, -122,107,69,119,106,80,121,105,75,119,105,72,115,103,68, -119,102,68,124,105,72,127,108,69,128,110,68,121,105,68, -112,100,71,108,98,74,109,99,68,108,100,67,118,104,65, -129,106,57,146,114,54,175,126,53,188,139,52,198,147,56, -204,152,62,210,158,73,208,163,94,207,164,99,208,168,109, -204,168,117,198,165,118,194,163,115,183,154,116,177,144, -109,164,135,110,148,124,105,140,117,95,142,116,89,137, -114,89,134,113,83,132,113,79,124,110,77,123,108,73,126, -109,75,130,110,78,132,113,80,131,112,79,131,111,80,127, -108,82,125,106,82,123,104,78,127,106,75,130,107,75,134, -109,77,133,109,72,136,113,69,140,117,65,143,120,63,145, -124,62,143,127,62,142,128,64,144,129,67,146,131,68,144, -132,69,138,130,73,138,130,75,140,128,77,140,129,76,140, -129,70,139,128,70,145,131,74,152,137,76,159,146,76,167, -154,73,171,157,73,170,159,74,170,157,75,172,156,78,172, -154,79,166,150,80,155,144,83,147,139,81,134,131,84,108, -111,83,89,95,89,117,97,71,135,107,64,129,113,105,100,92, -112,110,79,66,139,95,65,137,136,155,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -186,184,183,187,183,184,186,184,184,185,184,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,169,187,169,154,181,176,120,151,167,71,106, -147,40,66,114,48,57,80,88,79,60,118,94,36,98,85,56,95, -87,50,93,88,60,98,88,58,129,100,30,135,116,60,134,121, -58,133,124,64,128,123,68,124,121,72,118,116,77,111,111, -76,107,108,77,100,102,77,97,98,76,99,95,75,108,99,73, -116,105,65,123,109,62,122,113,59,125,114,63,127,119,61, -131,120,72,127,118,77,121,117,80,112,113,84,106,109,83, -95,98,79,88,91,76,89,93,78,91,95,82,92,95,85,100,97, -80,108,101,68,108,101,62,112,103,65,124,105,71,120,103, -90,118,102,77,118,101,75,115,99,72,119,98,66,122,100,70, -126,104,62,130,109,61,128,109,65,120,106,71,111,100,75, -109,96,69,102,94,70,110,98,62,124,104,52,144,110,54,172, -124,47,188,134,53,201,144,59,210,154,68,214,157,79,212, -163,91,208,165,99,205,167,109,200,166,114,196,164,113, -193,161,111,181,155,113,173,146,113,155,131,114,141,119, -110,138,114,97,136,109,98,129,106,84,128,107,76,129,111, -71,129,111,69,125,112,72,124,110,75,124,110,79,126,111, -83,124,110,82,125,109,83,123,109,84,122,106,81,121,105, -80,121,105,77,127,106,69,124,105,73,128,108,66,133,111, -59,141,118,57,146,126,65,150,127,65,153,132,62,154,136, -61,153,137,63,154,138,66,155,139,70,147,138,76,143,136, -77,143,135,77,142,135,76,142,135,74,146,136,72,148,138, -74,150,141,78,149,142,81,156,146,83,164,151,82,164,151, -76,164,150,76,166,149,79,167,147,78,168,148,80,156,142, -83,147,137,78,135,132,81,117,116,78,109,103,79,124,108, -69,135,115,59,121,115,108,85,85,117,102,73,67,132,92,56, -150,147,159,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,184,182,186,182,183,187,183,183, -186,183,184,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,153,189,161, -116,174,180,76,127,160,46,88,140,31,59,109,44,54,80,82, -74,60,111,88,36,100,85,51,89,88,56,75,82,60,77,80,51, -121,95,22,135,116,59,133,122,56,132,125,64,126,122,72, -123,118,76,114,115,82,105,109,79,96,103,77,88,97,76,81, -91,73,81,88,73,85,84,71,95,91,63,107,99,60,114,104,56, -118,105,58,114,108,59,116,111,68,114,111,73,108,106,73, -107,103,70,105,100,75,93,94,80,79,90,82,67,85,77,60,80, -73,62,74,73,62,73,71,69,79,62,80,85,60,94,91,62,110, -95,63,104,94,72,104,94,67,106,94,71,105,92,70,106,95, -66,112,98,71,117,100,60,124,106,57,122,108,59,116,104, -60,111,99,63,104,98,62,94,91,65,101,95,60,115,101,50, -133,108,49,163,123,40,185,132,49,201,142,58,213,153,67, -215,157,76,214,163,88,211,169,101,206,171,113,197,166, -117,193,162,117,192,160,114,176,152,113,164,141,111,146, -127,113,131,117,112,127,113,102,117,106,101,119,103,79, -124,106,72,125,109,67,129,109,68,128,113,72,125,110,74, -123,109,77,122,110,80,119,110,81,117,110,83,112,109,84, -112,109,79,114,107,75,117,105,72,120,105,65,112,105,68, -117,106,60,125,110,55,133,119,58,132,124,71,136,120,61, -148,127,59,156,137,61,157,143,62,158,146,63,162,148,67, -159,146,76,155,143,78,151,142,77,149,142,76,149,141,78, -150,143,75,147,141,76,144,141,77,140,141,79,144,140,84, -149,140,79,150,141,72,152,143,72,154,144,74,158,144,76, -162,146,79,153,143,81,145,139,79,135,134,81,127,124,79, -136,117,74,131,124,69,136,123,60,117,111,100,78,76,105, -97,69,64,132,90,55,140,134,149,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,183,186,184,180,188, -182,182,187,182,182,186,183,183,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,149,189,162,88,162,199,48,108,167,29,73,136,26, -55,106,43,54,84,74,67,73,102,79,64,95,82,68,79,76,73, -63,68,68,70,71,51,118,94,16,137,119,43,132,121,53,130, -123,66,122,118,71,120,115,77,110,111,82,99,103,78,92,97, -75,82,91,71,74,84,69,68,76,71,68,69,78,73,70,70,85,78, -65,96,86,59,105,91,54,104,93,64,102,95,73,100,95,73,99, -94,67,102,95,60,100,93,78,85,87,102,63,75,101,39,60,78, -35,57,65,40,55,60,40,55,53,43,56,51,49,58,47,60,64,46, -80,72,54,90,86,38,89,83,52,87,81,67,85,78,76,82,77,73, -86,77,71,94,80,68,103,87,68,104,90,60,106,96,49,113, -103,47,104,99,68,92,91,70,96,90,63,111,98,52,130,109, -40,159,122,35,179,131,38,199,142,46,214,155,55,218,163, -69,218,170,91,216,175,110,210,175,121,200,169,122,197, -165,122,196,162,121,179,152,117,166,142,117,143,124,118, -127,113,121,119,107,112,107,98,104,113,99,71,122,106,64, -124,108,65,123,107,70,124,110,79,124,110,81,124,109,84, -119,107,87,115,105,86,109,102,82,104,100,81,103,101,76, -106,100,72,111,102,70,114,103,66,105,100,77,108,99,71, -113,99,71,117,102,76,112,103,84,117,101,67,127,106,59, -136,116,57,139,125,56,150,138,60,161,146,64,162,148,69, -163,150,78,160,148,78,157,145,79,154,142,87,148,139,90, -143,138,89,139,137,92,133,134,92,135,132,92,139,128,89, -142,130,78,145,134,73,151,139,73,155,140,73,158,143,71, -153,145,66,145,141,74,134,133,84,132,130,87,149,130,70, -136,127,72,138,122,80,112,103,96,75,71,85,96,66,64,134, -89,51,129,121,134,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,183,187,183,181,188,181,180,187, -180,183,186,183,184,185,184,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,144, -187,159,67,153,190,31,101,159,22,70,132,23,54,105,35,53, -83,54,64,67,66,74,55,59,75,58,54,68,63,48,59,60,64,62, -46,115,87,12,141,118,40,134,119,51,127,121,63,117,119, -70,110,116,75,100,109,77,90,100,73,84,92,70,77,85,67, -73,81,68,65,73,68,50,63,70,48,62,59,54,66,52,66,73,47, -80,80,43,78,83,53,83,77,56,89,76,58,97,80,58,102,90, -59,82,100,82,58,84,97,37,62,89,30,54,74,33,54,66,34, -52,60,33,54,53,37,53,49,41,54,44,44,57,39,46,65,45,82, -80,35,87,83,53,76,80,65,61,72,67,60,66,60,60,65,58,65, -63,54,74,63,48,89,69,45,105,83,44,110,96,45,96,91,64, -89,84,64,95,85,59,107,92,49,126,105,38,160,120,34,181, -131,38,201,141,44,216,154,55,219,165,68,224,168,92,219, -171,110,213,173,120,206,170,123,200,164,120,196,158,117, -179,149,116,159,137,116,132,120,116,112,110,117,107,100, -107,94,94,98,101,99,67,114,106,62,116,108,63,108,106,68, -101,106,73,100,106,74,101,103,77,97,96,76,98,92,75,98, -89,73,96,86,72,96,88,68,98,92,68,95,95,64,90,102,62, -84,99,74,82,98,67,81,97,64,81,94,65,81,88,69,94,96,62, -107,101,53,117,108,49,123,114,47,129,121,46,137,127,49, -146,132,56,149,136,65,152,138,69,150,139,72,141,140,83, -135,139,88,129,136,86,124,132,89,118,125,86,117,118,80, -122,111,75,128,112,64,139,119,63,149,128,67,152,134,68, -151,137,64,150,139,61,141,136,71,128,131,82,118,124,82, -133,124,63,138,122,70,124,124,82,98,98,91,74,65,80,89, -64,62,134,85,46,138,130,142,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,184,182,186,182,181,187,181, -180,187,181,183,186,183,184,186,184,184,185,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,186, -184,142,185,161,61,148,185,24,97,142,18,70,110,22,55,92, -32,49,85,45,50,84,52,52,80,41,52,64,39,52,53,41,53,43, -61,61,29,113,84,16,141,119,35,136,124,42,129,122,61,116, -117,77,108,113,77,97,108,72,90,101,68,86,96,67,80,90, -64,74,84,62,66,76,61,48,63,61,41,52,67,43,50,68,51,52, -65,63,56,65,59,59,70,66,61,42,78,67,35,93,78,45,98,86, -59,74,87,100,45,69,92,29,55,73,27,52,64,27,49,59,28, -45,61,25,43,58,30,45,51,36,48,45,41,52,43,38,55,49,68, -61,50,80,76,46,75,80,57,59,71,61,58,64,57,57,55,87,57, -50,76,65,51,53,85,64,48,101,76,59,98,76,75,82,74,67, -79,75,50,92,85,48,105,90,47,122,98,49,158,118,31,180, -130,38,200,140,50,214,151,56,214,162,51,220,166,78,218, -171,102,212,172,118,205,168,126,198,160,128,196,156,132, -179,147,128,158,132,128,127,114,125,104,101,118,102,96, -96,90,91,95,93,86,90,103,89,80,107,95,73,101,95,75,85, -82,98,79,78,91,77,75,79,76,73,71,82,74,73,85,74,74,85, -74,66,84,75,62,85,76,70,78,72,80,65,66,93,54,66,65,52, -64,57,49,60,56,50,59,57,53,58,58,66,65,49,86,78,44, -103,91,48,112,99,54,118,104,62,123,107,68,132,113,71, -135,116,82,142,125,78,144,132,73,134,129,91,124,124,93, -117,118,104,109,112,104,100,102,91,99,97,81,111,101,59, -123,108,51,135,118,50,147,129,53,149,134,54,147,134,57, -147,133,69,141,135,73,125,126,92,105,105,102,119,99,107, -134,115,81,117,109,118,87,82,104,69,61,75,86,60,63,131, -82,40,148,142,155,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,183,185,183,181,187,182,180,187, -181,183,186,183,184,186,184,184,186,184,184,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,145, -182,160,75,141,182,42,92,148,32,75,120,21,65,99,14,55, -82,15,50,72,20,46,62,26,45,52,31,46,46,44,47,40,65,59, -29,104,86,12,139,115,31,136,120,40,129,121,60,115,113, -74,106,109,74,96,107,72,89,103,70,86,98,69,83,91,67,79, -85,65,72,78,66,58,66,67,43,54,69,31,48,62,31,50,55,37, -51,51,40,48,55,53,56,32,68,69,30,76,80,38,74,84,47,51, -77,84,30,57,78,23,46,64,24,46,59,20,42,52,14,37,51,12, -35,48,17,38,40,28,43,38,34,45,35,35,46,41,43,53,33,59, -65,31,64,70,46,54,63,54,51,61,51,50,55,82,49,45,68,57, -51,49,72,68,45,73,71,45,70,65,57,70,63,55,80,68,46,94, -80,46,100,88,43,111,97,44,151,115,27,171,129,34,189,139, -44,201,149,48,214,163,52,217,173,82,213,176,104,205,175, -118,196,171,125,190,167,128,183,161,130,166,150,127,143, -135,127,108,114,120,88,100,113,88,92,89,82,84,87,73,82, -79,74,83,65,84,88,59,87,86,64,58,69,77,52,62,69,57,61, -61,63,61,57,67,61,57,68,62,59,71,67,55,74,71,54,67,78, -63,46,70,64,39,54,71,40,54,51,38,58,47,40,57,49,38,53, -48,37,52,48,44,56,35,51,66,22,72,78,26,98,92,42,105, -97,50,103,100,55,103,107,54,107,106,64,119,115,60,123, -120,56,113,115,73,101,110,75,95,102,83,86,92,81,83,85, -72,90,82,66,101,92,49,114,104,45,126,115,45,138,126,49, -143,132,52,143,135,58,138,133,66,134,132,69,111,125,86, -70,98,82,66,86,76,108,102,61,95,100,101,75,75,92,69,58, -71,81,59,59,123,82,36,140,140,150,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,186,184,182, -188,182,181,187,181,183,187,183,184,186,184,184,186,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,152,182,164,85,148,173,52,104,149,41,84,130, -26,68,113,16,54,97,13,46,81,18,43,65,24,42,53,28,42, -47,44,49,35,66,62,22,103,84,16,142,120,20,138,125,32, -132,127,49,119,122,60,110,114,69,99,109,72,91,104,71,87, -100,68,87,97,65,84,93,63,78,86,64,66,78,59,51,68,59, -34,53,60,28,45,66,32,40,74,36,40,64,50,47,58,63,56,53, -68,67,53,66,72,59,42,66,81,26,52,72,22,45,60,22,43,55, -18,40,50,14,37,47,12,35,42,14,36,32,23,38,35,31,40,41, -32,42,45,38,45,40,53,54,43,57,59,56,48,55,60,45,50,60, -43,52,52,50,51,48,61,55,53,64,57,55,63,57,50,65,60,45, -70,66,36,84,73,35,96,83,42,101,88,45,111,95,46,150,114, -23,172,129,33,190,139,43,204,151,54,215,161,59,217,170, -89,212,174,108,205,175,120,198,173,125,190,168,126,183, -160,127,165,150,120,143,135,122,108,112,120,86,95,118,87, -86,108,82,83,94,71,78,88,67,70,80,72,69,78,79,73,76, -59,71,68,49,57,66,50,50,64,56,51,61,64,57,60,67,62,57, -71,67,54,76,72,58,59,67,72,37,56,76,37,53,58,40,50,67, -35,48,66,34,46,62,34,47,54,34,48,45,41,52,38,44,52,40, -58,59,34,90,84,36,102,96,34,101,99,46,94,92,69,95,86, -84,104,89,92,105,90,88,96,90,86,83,84,86,76,80,75,71, -77,64,73,76,54,87,82,45,100,89,51,110,98,48,122,108,49, -134,120,54,140,126,58,142,132,59,139,135,56,134,133,63, -108,120,95,61,82,100,49,64,85,87,76,63,81,86,81,69,72, -68,70,62,53,83,62,45,122,83,23,128,128,135,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,186, -184,182,186,182,181,187,181,183,187,183,183,186,183,184, -185,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,183,185,183,148,182,159,71,147,168,25,100,136,19, -76,116,18,60,103,16,47,91,17,41,79,20,40,64,26,39,52, -29,41,46,43,49,34,65,62,21,100,82,14,142,116,19,141, -122,32,132,126,49,120,124,62,109,115,71,100,108,72,91, -102,70,86,99,67,86,98,66,86,96,66,83,91,67,78,84,66, -70,76,69,58,62,73,43,48,75,31,40,72,27,39,59,32,43,48, -40,50,39,49,58,38,53,58,43,38,50,68,25,41,63,22,38,55, -22,38,51,22,35,47,22,34,47,22,32,44,19,37,36,19,39,35, -22,40,38,26,39,41,38,39,36,44,52,38,46,54,48,40,49,53, -40,45,53,45,45,48,50,50,47,52,52,47,54,51,46,59,52,46, -67,56,43,72,66,38,82,75,36,90,81,40,98,86,44,114,93, -46,153,113,25,169,131,33,185,140,41,200,149,49,211,163, -58,215,170,87,211,172,106,207,170,118,203,165,122,195, -160,123,182,153,120,167,141,114,144,127,116,113,106,118, -87,90,116,73,84,101,72,81,88,67,75,85,61,67,75,57,62, -66,55,63,59,60,61,63,50,53,65,42,46,59,44,46,53,51,52, -50,58,58,48,65,62,46,65,66,49,47,55,58,33,46,66,39,47, -54,29,46,59,23,40,56,20,37,50,24,36,43,31,39,38,41,44, -33,42,48,35,49,52,25,74,73,22,91,89,24,93,95,39,78,89, -60,66,81,67,65,79,68,70,79,66,71,77,66,64,68,67,63,64, -58,68,62,52,76,64,46,90,71,39,94,85,46,103,93,41,116, -103,43,128,114,49,135,120,52,140,125,53,141,130,53,135, -131,63,99,114,89,47,81,93,33,62,77,54,67,42,57,67,59, -61,62,57,67,58,48,82,58,40,119,79,19,129,125,135,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,184,183,186,183,182,186,182,182,187,182,183,186, -183,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,186,183,183,185, -183,182,185,182,171,185,176,138,174,176,49,126,185,8,78, -138,6,60,106,9,52,85,13,47,68,15,43,55,19,41,51,25,41, -42,29,45,32,44,51,35,63,59,31,98,79,24,142,115,23,142, -124,35,134,129,51,120,123,66,108,113,79,99,107,75,92, -103,72,88,100,69,86,98,65,85,96,64,85,94,65,81,91,56, -76,87,53,70,81,48,59,74,43,44,65,40,34,53,44,34,45,52, -35,41,54,38,41,55,43,44,52,33,46,56,22,39,53,17,35,49, -20,36,48,21,35,43,24,37,40,29,41,40,27,44,40,22,41,37, -21,39,34,24,39,30,38,41,27,42,47,45,41,47,50,37,45,47, -39,45,46,46,47,39,48,49,36,50,50,34,53,53,32,61,57,35, -73,62,43,76,68,45,82,73,47,91,80,45,99,88,40,116,98, -35,156,115,31,171,129,45,186,139,47,204,152,56,212,159, -76,213,166,91,207,167,103,201,164,107,198,162,108,192, -159,109,180,152,109,167,142,105,146,129,107,116,110,107, -89,95,106,73,83,103,69,77,92,66,75,79,62,70,70,57,63, -63,51,57,63,52,50,66,48,51,61,43,48,54,42,44,51,45,45, -54,51,48,54,59,55,48,58,57,51,39,46,52,28,43,55,34,43, -46,24,40,51,18,35,43,16,32,40,20,32,37,27,33,37,38,40, -34,39,45,38,45,47,28,65,62,27,85,79,37,86,84,53,71,79, -65,57,69,72,50,59,67,53,58,61,54,57,56,53,56,49,54,55, -41,62,59,30,75,67,25,91,76,30,94,85,46,101,89,44,113, -99,45,125,111,49,132,117,51,139,123,58,140,127,63,133, -126,67,96,108,97,46,76,109,33,58,87,48,58,54,48,56,57, -53,53,51,63,53,43,80,57,33,116,72,28,119,116,121,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,184,183,186,183,182,187,182,183,185, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,183,186,181,173,187, -170,147,190,158,126,183,151,96,159,150,26,90,159,8,53, -124,11,45,99,15,41,80,20,40,65,22,39,55,24,37,51,30, -39,43,35,45,35,45,51,36,57,59,29,87,79,19,139,110,19, -140,120,31,136,125,50,123,124,67,107,114,80,98,106,74, -91,102,71,85,98,66,83,98,63,81,95,61,82,91,61,86,90, -56,81,89,55,82,87,56,79,82,56,74,77,60,66,70,68,60,62, -76,54,54,74,48,49,68,45,48,60,41,45,62,30,38,58,24,33, -52,22,33,48,20,33,42,19,35,37,20,36,32,19,36,32,21,34, -32,23,33,31,29,35,29,36,42,26,37,44,41,37,42,45,39,39, -45,44,42,46,49,44,39,52,46,38,57,49,37,65,56,40,70,61, -43,72,64,46,75,66,45,80,71,45,89,78,45,102,86,43,122, -97,39,149,117,31,160,131,43,178,141,45,199,154,54,208, -162,74,209,165,87,202,164,98,194,161,101,190,160,102,186, -157,103,177,151,106,157,145,102,139,132,104,115,113,106, -91,96,106,75,81,102,64,74,86,64,71,75,65,68,69,63,62, -66,59,56,66,52,48,66,46,46,56,44,46,52,41,43,50,39,42, -50,41,44,48,47,52,41,47,53,44,32,43,47,22,40,50,27,41, -41,24,36,47,19,34,42,21,31,41,19,31,38,13,40,37,25,44, -32,28,46,34,33,47,24,54,62,22,71,77,30,71,79,43,59,71, -55,46,58,60,38,48,55,40,48,49,43,49,46,50,49,42,60,48, -40,73,55,34,86,70,32,95,82,35,95,87,48,97,91,43,105, -99,41,115,108,42,125,116,47,132,122,54,131,126,58,127, -126,64,84,104,90,35,75,104,29,57,86,41,60,53,37,55,53, -40,53,45,51,52,37,71,56,29,102,75,22,115,116,119,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,184,183,186,183,182,186,182,184,185, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,182,186,181,165,186, -178,123,168,190,86,144,179,45,112,143,3,75,102,3,54,76, -6,47,59,12,44,47,18,43,41,21,41,40,24,39,41,31,42,37, -36,46,36,44,49,38,55,57,34,85,76,22,140,113,8,141,122, -27,135,124,52,122,121,68,107,117,67,96,105,74,90,99,76, -85,96,73,79,93,67,78,91,63,83,91,63,88,95,54,84,94,54, -86,93,56,86,91,58,83,87,61,77,83,64,74,80,64,71,77,63, -68,75,61,64,72,64,59,69,60,49,63,52,40,56,47,35,51,45, -30,47,43,25,43,43,23,37,47,21,36,48,22,33,46,24,33,43, -29,35,40,36,39,44,34,43,39,36,44,36,43,47,37,49,50,39, -56,54,42,59,56,42,64,57,45,69,60,49,72,63,51,73,65,50, -76,67,49,80,73,44,91,80,43,104,88,41,125,99,43,149,116, -44,158,129,48,173,135,47,195,148,55,202,156,68,206,163, -73,200,164,86,193,161,95,188,158,97,186,158,99,178,153, -100,155,140,112,135,127,109,113,111,107,91,98,102,78,86, -97,63,75,85,63,69,76,64,67,70,65,65,63,63,62,58,58,58, -55,51,54,51,46,49,50,41,44,52,39,41,56,38,38,60,42,41, -63,43,45,57,31,40,54,20,37,56,24,36,51,23,36,44,20,37, -38,26,41,27,30,48,30,21,46,51,25,41,44,27,42,42,33,43, -37,49,53,39,61,61,45,60,62,53,47,55,56,38,48,52,35,46, -47,37,46,38,39,48,29,49,52,21,64,58,18,81,67,27,93,77, -37,98,85,40,98,89,52,100,92,52,104,96,48,113,104,48, -122,111,48,130,119,51,130,124,58,126,123,67,81,100,93, -32,71,106,28,56,85,37,51,68,34,49,61,38,48,52,49,49, -37,71,57,22,100,73,19,115,115,118,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -185,185,184,185,184,182,185,183,184,185,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,180,187,177,139,189,169,69,148,164, -35,99,140,19,67,108,14,52,89,12,43,72,13,41,56,17,40, -46,22,40,40,25,41,41,24,41,42,28,43,37,34,48,35,40,50, -37,53,55,33,85,74,21,139,109,5,139,119,24,133,121,49, -121,115,65,117,113,70,99,107,76,84,100,74,78,94,69,79, -92,66,83,92,65,84,93,64,87,97,54,89,97,55,91,94,58,89, -91,59,84,88,61,79,84,68,73,84,67,74,80,66,75,79,66,75, -78,71,74,77,70,72,73,66,69,70,66,64,67,67,60,65,68,59, -62,69,52,54,70,46,48,67,44,46,64,45,44,60,46,47,57,50, -49,59,51,50,53,57,52,51,61,55,48,64,57,49,64,57,47,65, -59,46,68,61,49,69,61,50,72,63,51,75,65,51,80,67,50,84, -72,46,95,79,45,109,88,43,121,99,42,141,114,40,150,124, -41,164,132,40,182,144,47,192,153,61,192,164,66,189,165, -81,185,161,90,180,155,92,177,152,91,169,148,93,143,134, -103,125,120,101,108,106,102,92,95,100,80,84,96,68,74,85, -65,68,75,64,65,69,64,64,62,66,62,59,65,61,60,63,58,58, -61,55,59,55,48,60,48,42,61,40,39,62,32,38,59,31,44,52, -29,42,55,22,34,55,20,33,49,24,33,42,24,35,36,32,45,30, -39,53,34,30,40,50,27,36,42,27,37,39,30,40,33,37,48,31, -40,52,31,39,51,38,36,45,46,32,41,46,33,41,43,38,41,35, -49,46,32,64,57,32,75,70,31,85,80,38,91,87,42,94,92,43, -96,96,55,94,95,52,97,96,46,106,103,45,117,112,47,126, -119,51,128,123,58,125,122,67,81,99,92,32,70,107,22,56, -83,27,50,64,28,50,59,33,49,50,48,50,37,76,58,25,95,79, -20,87,91,92,183,183,183,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,184, -185,185,184,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,177, -188,172,117,170,201,38,115,155,5,74,109,8,58,82,8,49, -66,11,46,57,12,42,48,16,40,43,22,41,41,25,41,41,24,41, -41,28,43,40,34,46,44,39,49,41,53,55,33,84,72,22,138, -108,10,139,118,31,133,122,43,121,117,53,117,112,72,101, -110,77,84,99,81,75,89,81,79,89,80,81,88,73,81,88,71, -83,86,76,83,87,64,86,86,58,85,86,59,81,83,62,77,81,69, -70,81,69,69,75,65,70,74,60,68,72,59,68,73,55,68,72,48, -71,75,48,68,75,49,63,72,50,62,69,55,59,65,53,54,62,48, -53,59,49,54,56,53,54,55,58,56,56,57,57,55,55,60,54,55, -62,54,52,64,57,47,65,59,44,66,60,44,67,61,44,70,63,44, -72,64,41,74,67,38,79,70,37,86,78,32,99,84,40,111,90, -47,120,96,50,138,107,52,149,120,51,161,128,49,181,142, -56,192,152,65,189,158,75,184,159,80,180,156,86,177,151, -94,174,147,97,166,144,99,139,130,103,121,116,98,107,106, -95,92,96,91,81,86,92,69,75,91,66,69,76,65,66,68,63,63, -61,66,63,58,65,61,63,63,59,59,63,58,56,63,58,55,58,55, -53,49,52,49,37,48,42,29,44,41,28,43,50,24,36,53,19,31, -55,23,29,53,23,29,53,23,30,51,23,32,47,22,32,41,22,31, -40,23,32,41,26,34,42,31,39,43,32,41,41,31,41,39,30,41, -36,30,44,28,35,48,26,47,54,31,63,62,36,77,70,44,83,76, -47,89,81,59,92,85,66,96,91,61,95,94,57,93,93,55,96,94, -52,106,102,50,118,112,47,126,120,46,128,123,56,126,124, -65,84,102,90,32,71,102,20,54,81,26,50,60,27,52,49,34, -52,41,50,54,31,81,64,18,99,79,43,84,89,88,182,182,182, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,184,184,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,183,186,182,174,187,169,78,162,190,25,99, -137,4,65,101,4,54,77,10,45,63,17,41,55,18,39,49,20,39, -44,23,40,42,25,39,40,28,38,40,31,41,39,35,44,42,38,48, -39,49,54,31,80,73,21,137,107,8,137,119,31,131,121,42, -122,121,56,111,114,70,94,111,75,78,100,80,65,88,77,61, -83,71,63,85,68,65,83,65,66,76,66,73,78,56,74,79,51,70, -77,50,67,73,51,57,69,56,53,66,54,54,64,54,55,63,50,54, -62,50,55,62,46,54,62,40,56,64,40,56,64,42,56,63,45,58, -61,50,56,58,49,52,57,46,48,56,49,43,53,51,42,50,54,44, -50,50,45,51,49,45,49,49,44,49,44,48,53,42,55,55,40,58, -56,39,62,57,40,66,60,41,70,61,38,77,66,38,81,74,40,94, -79,35,104,87,42,110,93,48,120,99,51,133,108,50,141,116, -48,154,127,47,168,135,49,181,142,55,184,146,65,181,151, -74,176,152,83,166,145,87,161,141,90,155,137,91,135,126, -98,123,114,95,112,104,93,100,95,91,89,83,92,75,72,89, -66,69,74,63,67,67,60,65,61,59,65,57,60,61,60,60,59,57, -61,59,55,61,58,55,61,55,54,59,54,54,54,54,51,50,50,51, -45,43,53,39,37,55,35,32,57,31,31,51,25,31,49,24,31,47, -23,31,42,23,32,38,25,33,39,30,34,39,33,35,39,37,38,38, -42,41,38,45,43,39,48,48,40,57,56,39,68,67,45,74,72,48, -81,76,51,89,81,54,87,86,56,88,86,62,86,83,63,90,87,55, -91,91,53,90,92,52,93,92,48,102,98,45,113,107,42,124, -118,45,123,124,55,117,124,62,74,100,87,27,72,103,20,56, -84,26,50,61,30,50,50,33,51,42,41,53,31,65,67,18,80,87, -48,72,83,82,181,182,182,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,181,186,181,170, -186,167,69,152,187,19,89,134,3,62,103,3,50,78,11,45,61, -18,41,53,20,40,49,21,39,47,24,40,45,26,39,41,29,38,38, -31,41,35,36,45,35,38,48,34,49,55,26,80,72,14,138,108, -4,137,118,34,131,121,49,125,123,59,115,119,65,91,108,83, -74,97,86,63,87,81,55,78,75,51,73,68,50,69,61,55,66,52, -60,67,44,64,69,46,62,68,46,60,64,52,49,62,50,46,58,46, -44,55,47,43,51,48,43,50,52,44,49,53,43,49,51,43,49,51, -42,49,50,42,49,49,45,49,50,46,49,51,41,47,50,37,45,50, -32,42,46,33,42,45,35,43,37,36,44,39,38,43,39,41,45,41, -44,48,43,51,51,35,56,54,37,62,57,39,66,59,37,73,62,38, -80,67,42,81,74,43,98,83,37,110,91,41,114,96,45,124,100, -50,134,108,57,139,113,63,148,119,63,162,128,60,177,138, -56,184,147,63,180,150,72,173,148,80,164,142,85,157,136, -87,152,133,92,132,122,101,120,114,97,111,104,94,101,97, -89,92,88,85,80,79,74,71,75,66,67,71,68,62,67,66,60,65, -60,61,64,55,61,64,52,60,62,51,59,59,50,59,57,51,59,57, -52,55,56,49,54,56,47,54,55,48,52,53,44,51,52,44,48,52, -38,42,52,37,42,51,33,41,52,31,42,53,32,44,53,32,50,55, -34,55,59,37,60,63,40,65,68,38,70,72,36,73,75,36,78,79, -41,82,84,44,85,88,44,87,89,45,92,89,52,89,90,62,87,87, -62,87,85,59,89,86,58,87,87,53,88,90,47,94,93,44,104, -100,44,118,109,43,129,122,46,125,126,54,118,122,64,70, -95,88,26,71,105,21,56,86,27,49,65,28,47,56,29,45,51, -32,44,43,52,51,42,61,70,58,41,58,63,120,127,134,180, -180,181,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,183,178,186,177,166,185,162,74,149,183,22,87,134, -1,59,99,1,49,72,10,44,59,16,42,52,18,41,48,20,40,47, -22,40,45,24,39,40,29,39,36,32,40,34,35,43,31,40,47,32, -51,53,23,85,71,11,135,105,4,135,116,32,130,119,46,127, -120,55,127,119,64,98,108,84,76,95,83,62,84,77,46,71,66, -42,66,61,45,64,53,50,63,48,55,64,43,58,66,44,54,64,43, -52,60,49,44,57,43,43,55,41,42,54,41,39,51,40,37,48,43, -35,47,48,30,45,43,28,44,40,25,43,38,26,43,38,28,43,40, -30,41,42,27,40,41,28,39,40,29,40,38,30,40,38,34,41,32, -35,42,34,37,42,35,41,44,36,44,47,38,55,52,33,61,56,36, -66,58,37,72,63,36,77,67,37,82,70,42,85,75,39,102,86, -39,111,94,44,116,98,48,123,103,49,129,108,58,133,113,63, -142,117,63,154,125,60,166,135,54,174,143,58,174,146,67, -171,145,77,163,140,81,156,136,84,149,132,89,131,119,100, -115,109,98,108,99,90,104,94,82,97,89,79,87,84,74,83,79, -69,77,76,72,66,69,69,62,63,62,58,64,57,52,63,53,50,61, -51,48,58,51,45,54,50,45,53,51,42,54,47,43,54,46,45,54, -47,48,55,45,52,55,45,52,56,47,53,58,47,56,58,45,59,60, -42,61,61,43,62,63,46,63,63,48,65,65,51,67,68,51,70,71, -49,77,76,47,83,79,50,86,82,54,89,86,55,90,90,53,92,91, -51,91,88,56,88,86,62,84,84,63,83,83,62,85,83,60,89,87, -62,93,90,57,99,94,50,107,100,45,121,110,39,135,120,40, -134,123,51,125,119,59,74,91,80,29,66,98,25,54,82,27,50, -64,27,47,54,25,42,49,26,39,42,33,42,38,37,50,38,34,49, -53,107,114,122,177,178,178,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,186,183,179,187,178,163,185,159, -70,146,177,19,87,129,1,58,94,0,49,70,9,45,57,16,44,50, -17,42,48,17,41,47,20,41,45,22,40,40,27,41,36,30,42,32, -33,44,28,38,47,31,53,54,23,89,71,9,132,103,5,133,114, -26,130,119,40,130,121,52,131,121,57,109,113,73,84,97,73, -68,86,72,52,74,66,46,68,65,47,64,63,49,63,55,52,61,53, -50,60,50,47,59,44,49,57,41,50,57,40,50,58,41,51,58,40, -50,58,38,43,55,41,36,51,43,31,48,40,29,47,39,28,45,39, -29,45,41,31,44,42,31,41,45,30,39,44,32,38,40,32,39,36, -33,40,38,38,42,35,40,44,39,42,45,39,43,45,37,49,48,34, -58,54,36,64,57,36,71,62,36,79,70,40,81,71,39,87,74,40, -97,83,38,106,92,45,111,97,53,115,101,57,123,108,55,126, -111,58,130,115,62,139,118,62,151,125,60,162,135,54,164, -135,63,168,142,70,167,144,77,160,140,81,154,135,86,146, -129,89,128,115,93,113,102,89,112,96,81,112,93,74,105,89, -79,93,86,77,92,83,70,87,80,73,74,71,71,64,64,70,59,62, -67,50,59,66,45,56,64,42,52,61,37,47,57,35,44,56,31,44, -50,30,43,46,33,45,45,37,46,44,44,48,43,44,50,51,46,52, -48,50,54,47,54,55,45,57,57,46,58,59,47,58,60,46,59,61, -48,61,62,49,63,65,49,68,69,50,76,73,53,81,77,54,84,81, -53,84,84,52,86,86,53,86,85,56,85,83,62,81,82,62,76,78, -56,78,79,53,80,81,57,86,83,54,96,91,49,108,103,44,122, -113,37,135,122,37,131,123,49,122,121,55,73,90,77,29,64, -97,24,52,77,27,49,65,26,47,54,24,41,48,22,37,42,24,38, -37,30,41,30,33,49,46,103,113,115,173,174,175,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,183, -185,183,173,186,170,73,148,178,15,86,126,2,59,94,0,48, -72,7,45,58,16,45,48,19,44,45,19,42,45,18,40,44,20,39, -41,25,40,38,30,41,33,32,44,31,38,48,33,54,54,25,92,74, -5,133,104,3,133,113,24,129,118,39,127,120,44,131,123,52, -123,122,60,103,112,66,82,98,67,64,85,61,54,75,57,50,68, -56,48,66,45,50,65,46,49,64,47,48,63,42,54,65,37,59,66, -39,58,64,40,60,65,41,60,66,43,50,62,49,45,60,42,43,58, -38,41,57,38,39,54,39,38,51,40,39,51,40,39,49,41,36,45, -43,39,44,36,40,48,31,40,49,33,41,50,36,42,49,36,44,49, -34,47,50,33,55,55,30,63,61,34,67,64,33,74,69,36,80,73, -41,84,75,40,93,80,36,105,91,32,111,98,44,113,100,53, -118,105,59,122,110,62,130,117,62,133,120,63,140,122,62, -149,127,57,159,133,50,157,136,72,160,138,79,164,142,86, -161,140,89,154,135,92,145,125,93,131,115,85,120,106,84, -117,100,78,115,98,76,104,93,88,93,89,81,94,87,68,92,84, -67,81,77,67,69,69,70,62,65,74,54,63,72,45,56,65,40,51, -60,36,47,58,33,43,55,31,42,49,28,40,45,29,40,43,30,40, -40,34,42,40,32,42,39,33,44,38,38,46,40,41,48,41,44,48, -42,45,50,46,45,50,46,46,51,46,47,53,47,49,55,48,52,57, -50,59,61,51,65,66,51,70,71,50,70,73,48,72,73,47,73,73, -52,73,74,56,72,74,55,73,75,51,76,78,46,80,82,42,86,84, -40,95,91,39,108,102,37,126,116,36,135,124,38,127,125,54, -119,120,62,66,83,80,26,59,99,25,51,74,26,46,63,24,45, -51,23,41,46,22,38,41,23,37,40,29,40,33,33,49,41,85,97, -95,158,161,161,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,184,180,186,177,94,156,179, -20,88,128,1,59,93,0,46,71,8,44,56,19,44,48,23,42,43, -23,40,43,21,39,44,21,39,41,26,40,38,30,40,32,31,43,32, -36,47,34,51,55,25,92,74,4,130,105,3,133,113,24,129,117, -38,128,122,45,130,125,53,127,125,58,119,119,66,105,108, -68,89,96,64,80,89,62,73,82,59,69,77,54,64,75,51,60,71, -50,57,69,47,60,69,44,66,70,43,67,67,43,67,68,45,64,68, -48,57,63,53,53,62,47,55,63,43,57,63,43,54,59,41,51,57, -42,49,56,42,48,55,40,47,53,43,50,56,39,51,57,34,51,57, -35,51,55,39,53,53,38,58,54,38,62,57,39,65,62,37,69,62, -35,75,67,35,81,72,38,86,75,41,95,79,42,108,86,42,120, -97,38,125,101,45,130,106,56,131,112,63,129,120,68,135, -120,67,138,122,64,144,123,60,152,127,55,164,133,54,157, -136,72,157,133,78,159,133,82,159,135,87,154,130,87,150, -123,89,146,117,83,131,111,84,124,105,79,117,102,79,100, -96,92,94,91,84,94,87,71,96,85,65,90,81,66,77,73,73,67, -68,77,57,62,71,49,57,66,42,50,60,39,47,57,36,43,55,34, -41,50,31,41,47,32,41,45,32,42,42,31,42,42,32,43,40,31, -42,38,32,41,38,32,42,38,33,42,38,34,43,42,34,44,42,36, -45,42,37,46,42,39,47,43,42,48,44,44,50,44,47,51,42,51, -55,43,55,58,45,61,62,46,67,64,50,64,65,50,64,65,49,65, -65,44,73,69,39,80,78,38,84,79,34,92,83,31,110,99,34, -130,116,36,136,124,39,124,123,55,111,118,64,56,80,79,20, -57,97,24,51,72,27,46,60,24,43,50,22,40,45,20,35,40,21, -35,39,27,38,36,32,43,39,66,74,73,125,129,132,175,177, -177,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,180,184,180,101,159,189,20,84,138,0,54,98,0,46, -73,9,44,56,19,44,50,24,41,42,25,42,40,22,40,41,21,39, -42,26,39,39,31,41,33,31,43,33,36,47,34,52,56,25,95,77, -4,130,103,15,134,112,27,132,119,40,127,120,48,128,123, -56,127,126,57,126,128,53,123,128,49,114,123,44,104,116, -43,96,106,46,87,96,50,80,92,46,72,86,44,66,79,43,65, -75,49,72,79,31,76,78,40,76,79,41,71,78,37,65,75,35,61, -72,39,62,70,35,65,72,30,66,75,23,62,73,17,60,73,18,60, -73,18,60,71,24,62,71,28,63,71,28,62,70,30,65,70,27,69, -70,32,73,70,35,74,70,34,74,72,35,81,75,33,85,79,29,90, -82,28,99,89,34,108,93,40,119,97,44,127,104,38,133,110, -42,142,119,50,142,124,56,134,126,56,139,124,68,140,124, -66,146,125,57,156,131,56,168,135,69,159,137,64,158,134, -68,160,134,75,156,132,77,152,129,82,151,125,91,150,120, -89,137,117,80,131,112,80,122,105,85,104,98,94,101,97,83, -98,88,82,100,89,72,97,87,67,81,76,86,77,76,85,65,68, -79,53,59,67,47,56,55,44,53,47,41,50,44,38,48,41,33,45, -40,35,46,38,35,46,32,35,48,28,36,48,35,35,46,39,35,45, -38,34,44,36,36,46,36,36,47,34,36,48,30,36,48,28,37,49, -30,39,48,35,41,47,39,42,47,36,45,49,35,45,49,38,45,49, -42,50,51,44,58,57,37,59,62,35,60,63,34,64,65,34,70,65, -34,73,70,31,79,74,27,91,83,26,110,99,31,129,115,41,136, -123,52,124,121,61,107,113,73,51,74,81,19,56,94,24,49, -72,25,43,64,23,42,49,20,37,44,19,34,41,19,33,34,24,36, -31,28,39,29,40,51,48,87,96,98,173,174,175,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,183,185,183,165,185, -174,81,139,188,16,77,138,1,50,100,7,42,74,17,43,58,23, -43,51,23,43,42,25,44,41,21,39,40,22,39,42,26,39,39,31, -41,33,33,43,34,39,45,33,58,54,25,100,76,4,126,100,13, -131,111,25,135,118,40,134,121,51,126,124,56,130,123,56, -135,126,54,140,129,54,143,132,58,138,129,61,128,122,66, -117,110,67,110,103,62,100,99,60,89,94,59,85,87,64,98, -91,46,94,92,54,92,88,50,94,86,47,90,85,47,88,82,52,82, -80,47,81,80,39,87,84,33,89,86,31,85,86,33,80,87,32,82, -85,38,86,84,44,87,85,44,84,86,47,94,88,46,98,85,50,98, -84,51,96,84,49,96,84,49,100,91,48,101,95,44,106,98,43, -112,100,45,117,103,48,122,107,50,130,118,46,137,120,48, -142,125,54,144,127,57,149,126,60,145,124,70,145,124,67, -150,130,61,158,139,62,157,140,69,156,137,62,157,135,67, -157,132,73,158,134,79,152,132,84,147,125,91,151,118,89, -144,120,84,141,116,86,133,107,90,120,99,98,115,98,88, -106,94,88,99,90,73,101,93,72,95,81,95,82,77,87,68,70, -81,58,63,70,56,59,60,55,56,52,54,54,50,51,53,47,47,49, -46,49,49,44,51,49,37,49,50,33,47,50,39,44,52,45,45,50, -44,44,49,42,44,50,40,45,49,38,47,50,35,50,53,35,52,53, -38,49,52,40,49,52,45,51,54,43,52,56,41,50,52,41,50,49, -44,51,51,43,58,57,36,60,60,33,64,63,34,66,65,34,65,69, -34,73,72,32,81,76,29,95,83,27,115,98,32,124,113,39,126, -121,48,127,119,60,109,109,71,52,70,78,24,52,92,28,45, -71,23,42,63,25,39,48,21,38,45,16,35,41,20,34,34,22,35, -29,27,38,28,29,42,38,59,72,77,169,171,172,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,181,185,182,143,174, -173,44,118,162,15,78,122,3,55,85,9,48,58,19,47,50,24, -46,41,26,46,42,25,44,45,22,40,42,23,40,39,26,40,35,32, -41,40,35,46,32,42,49,27,61,59,19,101,78,5,127,102,12, -132,112,22,135,118,37,135,123,51,127,125,54,133,127,55, -138,129,60,143,132,61,149,139,61,147,140,58,142,139,59, -135,134,64,130,130,62,120,126,59,108,121,54,103,113,55, -113,111,52,109,114,49,107,109,42,109,108,37,105,106,32, -103,104,39,100,104,43,99,101,45,104,102,49,106,103,51, -102,102,49,94,102,46,97,105,37,104,109,34,106,110,35, -101,108,40,110,108,40,120,115,41,122,117,46,122,117,47, -125,120,49,126,122,53,124,122,53,124,119,52,130,120,56, -134,122,58,137,124,62,139,125,68,144,127,67,146,127,69, -147,128,73,154,128,82,153,132,79,152,133,74,157,135,71, -163,142,69,162,146,67,164,143,81,162,139,75,161,138,71, -160,139,74,155,136,82,149,129,90,157,126,91,150,127,89, -145,124,78,141,122,72,130,117,77,123,113,63,115,109,73, -107,101,76,105,98,78,103,99,70,85,84,77,72,77,72,61,68, -63,58,63,58,62,64,57,62,64,50,58,63,40,55,63,36,59,63, -35,61,63,32,58,64,31,54,60,40,48,60,32,48,58,30,50,61, -31,51,62,30,53,62,32,55,62,32,57,63,35,58,63,37,55,62, -35,55,62,34,55,61,40,56,63,30,55,62,30,56,60,36,57,60, -37,63,64,36,65,69,26,68,72,19,72,76,21,73,80,29,81,82, -26,89,87,19,104,95,19,125,112,33,128,117,45,125,119,56, -126,119,60,106,108,73,49,67,74,22,51,83,27,45,65,22,42, -58,25,40,45,22,39,46,17,35,45,20,33,41,22,34,33,27,37, -32,27,38,41,35,49,62,155,157,161,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,180,185,181,142,169,171,39, -109,155,12,71,119,3,53,87,12,49,61,19,47,51,30,43,42, -31,43,43,28,42,45,26,39,43,29,39,40,32,40,37,29,41,39, -35,45,33,44,49,28,64,60,21,103,79,7,129,102,15,133,112, -24,135,118,37,134,120,49,135,122,56,137,125,55,139,129, -59,140,132,59,145,139,61,150,141,61,155,139,66,151,136, -71,145,135,72,143,132,72,139,126,70,137,119,73,132,120, -65,132,122,65,132,119,61,131,119,56,132,121,56,132,119, -63,127,115,65,123,113,65,121,113,66,119,113,65,119,113, -64,119,111,64,119,115,55,125,120,52,127,124,54,126,124, -63,128,126,61,136,130,59,140,132,64,142,131,66,145,133, -67,146,134,70,144,133,72,143,131,71,143,132,70,142,132, -68,140,132,69,143,129,73,149,133,73,150,134,76,148,135, -77,147,133,82,146,134,79,151,136,77,157,138,74,166,139, -70,172,141,70,168,142,82,162,140,77,162,141,74,163,141, -78,159,135,84,155,128,92,157,125,89,154,124,88,147,123, -79,146,123,76,148,115,83,141,118,75,130,113,82,120,110, -87,111,106,86,109,109,78,101,98,94,84,86,85,75,79,78, -69,72,71,71,70,67,76,69,61,79,68,54,80,69,51,78,69,49, -74,71,45,71,72,43,68,67,50,63,66,44,63,68,44,62,69,43, -67,69,42,65,70,44,62,70,42,60,70,42,59,68,42,59,69,42, -60,68,41,61,62,43,65,66,36,63,65,36,60,64,40,65,62,41, -65,67,38,79,68,31,88,74,29,92,82,34,95,87,45,101,87, -40,107,94,32,114,106,32,124,120,40,123,122,47,122,122, -58,119,124,60,94,109,71,41,69,72,17,52,82,22,46,64,20, -40,56,20,41,44,21,39,46,19,34,44,20,34,42,23,34,33,27, -38,32,28,41,43,24,40,52,124,131,136,182,182,183,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,177,184,177,135,171,149,38, -105,165,8,69,118,2,52,91,11,47,72,19,46,51,31,45,41, -32,46,38,27,44,35,27,43,33,29,42,31,33,43,31,30,42,40, -37,47,32,47,52,27,67,64,19,106,83,6,130,104,12,135,111, -30,136,116,44,136,119,55,136,122,59,139,126,60,140,129, -62,141,132,62,143,135,61,150,140,60,158,144,60,157,143, -74,151,143,72,151,142,72,149,140,71,152,138,70,148,140, -73,147,140,67,146,136,68,145,134,69,145,136,71,145,136, -64,142,135,67,139,134,70,136,132,71,134,131,74,135,130, -78,136,134,66,138,135,68,141,137,70,141,139,71,139,140, -71,139,139,68,146,140,73,149,142,77,152,143,74,155,145, -72,154,144,70,152,142,75,151,140,79,150,138,81,148,137, -82,145,134,83,148,135,77,155,138,79,157,140,83,153,139, -83,152,137,83,150,137,77,154,138,78,159,139,77,169,141, -78,175,143,81,171,147,84,168,145,85,167,144,87,167,143, -89,163,139,91,161,135,94,163,133,92,159,133,82,152,130, -82,150,127,84,156,128,79,150,125,97,136,124,74,130,125, -76,122,121,83,113,112,91,113,119,69,102,114,58,91,105, -52,85,97,46,86,95,40,92,95,32,96,96,32,100,96,44,96, -92,51,90,90,52,84,87,52,82,85,54,79,85,50,78,84,49,75, -84,48,81,84,48,79,84,62,74,81,57,70,79,51,66,77,44,64, -75,39,65,75,35,70,77,28,74,77,41,68,73,37,65,73,36,72, -72,41,70,79,18,89,85,12,105,98,16,109,106,21,110,109, -29,118,110,40,126,114,51,131,120,62,129,121,67,124,121, -67,124,121,69,119,119,77,95,108,81,41,67,74,18,52,80, -22,46,61,20,41,54,20,40,45,20,38,44,20,36,43,19,33,41, -22,33,36,25,36,34,26,40,41,25,42,50,91,102,109,166,168, -170,184,184,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,184,178,184,178,132, -171,148,27,108,163,6,70,115,1,58,92,3,49,71,19,47,52, -31,49,44,30,47,39,27,45,36,26,44,34,29,44,33,33,46,33, -33,43,42,42,47,34,53,52,29,73,65,23,107,85,8,130,105, -12,132,114,31,132,118,45,130,119,54,130,124,58,135,125, -58,137,128,58,140,129,59,145,132,58,151,137,58,157,144, -59,155,143,73,155,144,75,158,147,78,158,144,76,160,143, -75,159,145,81,159,147,77,158,147,82,157,145,82,158,143, -83,158,143,78,158,143,82,156,140,84,154,139,85,151,138, -87,149,136,89,151,141,79,150,143,80,148,140,76,149,140, -76,152,139,78,153,140,77,155,139,79,159,140,82,161,141, -79,163,144,76,162,146,78,159,144,81,157,140,83,157,138, -85,155,137,86,150,135,86,151,135,78,155,135,77,162,134, -81,161,132,80,156,132,80,156,133,77,160,134,78,162,137, -78,165,142,78,169,143,79,175,145,85,174,143,87,172,143, -89,170,142,91,166,138,92,164,134,94,162,133,92,165,138, -88,166,137,93,162,134,94,163,133,87,152,126,99,148,128, -82,150,131,88,142,124,94,130,112,97,136,114,77,137,115, -75,134,110,75,127,105,70,127,106,66,132,113,63,128,119, -63,119,116,69,114,109,73,111,104,73,109,102,74,103,102, -75,99,101,69,95,99,67,92,96,63,93,94,61,89,89,72,85, -85,67,84,83,61,84,82,57,81,80,53,82,84,50,87,90,44,88, -87,52,83,80,48,83,82,50,84,82,54,99,90,41,113,103,36, -124,117,40,130,123,45,131,124,52,133,131,62,132,133,68, -129,133,72,124,128,72,121,124,71,119,122,71,112,118,75, -84,108,78,36,66,72,20,50,80,23,45,61,23,40,55,24,40, -45,23,38,44,19,35,42,20,34,42,23,34,38,25,37,34,27,40, -41,30,46,54,84,94,103,154,156,159,180,180,180,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,178,184,179,136,166,184,23,109,196,7,70, -131,2,57,100,4,48,74,20,48,54,32,51,41,31,50,36,27,46, -35,26,44,35,29,45,37,34,46,34,35,47,34,44,51,31,57,59, -24,77,71,17,109,86,14,131,105,20,133,115,32,134,120,40, -133,124,45,131,126,50,137,128,54,139,130,56,140,130,57, -147,134,59,152,137,60,157,143,61,158,148,57,159,151,62, -161,153,67,163,151,67,166,151,70,166,153,77,164,153,74, -163,156,70,163,155,68,164,153,76,164,150,84,164,148,87, -163,149,87,163,150,84,160,149,81,159,149,79,159,149,82, -157,151,78,153,146,79,153,144,85,158,144,85,157,144,83, -158,144,80,161,143,83,165,145,86,166,146,85,162,144,83, -159,143,81,158,142,81,160,142,83,159,142,84,155,141,84, -153,137,84,156,136,82,163,137,78,165,137,78,159,133,89, -157,133,84,160,132,84,162,136,88,163,137,89,167,138,88, -173,143,86,173,144,83,172,145,84,170,145,86,169,143,89, -168,139,92,166,138,87,169,141,90,170,142,90,168,141,87, -169,141,82,159,139,81,159,141,88,159,143,89,153,141,80, -142,135,68,147,133,59,153,139,62,153,139,63,149,135,60, -152,137,67,155,139,76,146,139,78,134,132,84,129,128,76, -131,130,68,130,132,68,123,130,70,118,126,74,114,122,73, -107,115,67,106,112,67,101,109,58,99,106,55,98,105,53,99, -105,51,101,106,53,100,106,57,101,105,59,102,105,56,102, -106,45,103,110,38,105,113,40,122,119,43,133,127,47,142, -137,54,146,141,61,149,142,76,143,140,81,137,137,87,132, -133,89,126,127,85,123,125,77,121,125,71,113,120,73,81, -102,90,34,63,77,19,51,74,23,44,65,22,40,52,23,40,45, -25,40,45,21,37,44,20,34,43,25,37,34,26,39,31,27,41,36, -30,46,46,88,97,104,156,159,162,181,181,181,184,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,186,184,173,186,177,112,172,175,27,94,187,9,65,131, -10,54,101,11,45,74,24,46,54,36,48,40,35,47,35,30,45, -35,27,44,36,29,45,36,34,47,33,36,47,34,43,51,30,60,61, -26,82,74,21,107,87,15,127,106,18,131,115,33,131,120,41, -130,123,45,129,125,49,132,128,52,132,129,53,135,131,55, -139,133,56,142,135,55,147,139,55,159,145,54,166,146,63, -169,148,69,168,150,70,168,152,73,167,153,78,162,154,74, -163,155,68,166,156,70,167,154,79,163,152,86,161,149,87, -161,149,86,163,151,85,162,150,82,164,150,82,161,150,85, -163,150,81,162,147,85,162,144,90,163,143,89,158,146,86, -161,147,84,162,147,87,161,145,85,163,145,82,162,144,81, -158,142,79,156,141,78,156,142,80,156,140,82,156,137,84, -156,136,86,160,134,85,166,138,81,166,142,82,164,135,94, -158,136,87,158,137,87,158,135,87,158,132,84,158,133,81, -173,136,81,176,137,80,177,139,82,179,142,87,175,142,90, -168,139,92,169,137,89,175,138,91,174,140,91,171,141,88, -170,144,84,172,140,87,167,143,94,167,140,92,166,139,85, -163,139,80,171,138,72,174,144,75,171,147,77,167,146,76, -168,148,82,169,147,89,163,146,92,157,138,100,155,138,95, -157,144,87,155,146,87,150,143,88,146,136,92,144,131,92, -139,128,89,134,124,89,136,124,84,135,122,83,133,121,81, -133,124,79,132,121,78,129,118,79,122,118,78,126,117,75, -130,122,67,132,124,59,139,126,63,145,136,63,147,143,63, -151,148,65,153,149,70,150,144,79,143,139,80,137,132,85, -131,125,86,127,122,83,124,121,76,122,122,69,111,117,69, -74,98,85,30,59,73,18,48,72,19,43,63,21,40,50,24,39,44, -25,39,45,23,36,44,20,33,43,26,36,33,27,38,30,31,42,37, -43,53,56,97,104,111,164,166,168,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,185,185, -183,186,184,172,185,182,111,160,194,37,96,163,11,68,110, -12,58,84,13,49,65,24,46,48,37,49,39,36,48,37,30,45,37, -28,45,37,31,47,39,34,47,39,37,49,31,44,51,33,59,60,29, -81,73,21,108,89,13,128,105,26,133,116,35,133,122,43,132, -124,52,131,124,57,134,126,64,134,128,67,136,129,68,139, -131,69,142,131,69,146,134,72,157,138,72,165,144,69,171, -150,71,170,152,68,168,153,68,168,154,76,164,156,77,164, -155,75,167,156,75,169,159,75,166,157,82,163,155,79,164, -155,80,165,154,84,166,153,86,169,154,87,165,153,89,165, -150,91,166,150,91,169,150,94,171,150,102,163,149,101,166, -149,100,166,149,102,164,145,101,166,145,98,165,144,96, -161,142,95,157,140,94,157,140,93,158,140,93,159,140,94, -161,140,93,166,141,88,170,140,94,169,141,99,170,144,85, -166,146,85,163,142,89,163,141,85,163,139,81,161,135,84, -171,132,87,178,138,85,179,141,84,178,143,84,177,144,88, -173,144,90,176,143,92,178,145,78,176,144,83,173,143,93, -170,141,96,175,140,103,169,144,96,170,145,88,173,147,86, -171,147,85,179,148,76,181,153,82,180,155,86,175,155,85, -176,156,91,177,156,99,173,157,92,172,157,93,171,157,91, -168,157,90,164,156,92,161,155,98,158,152,93,158,149,92, -153,146,92,150,143,89,154,146,80,156,148,79,154,148,81, -150,144,80,150,143,82,149,142,86,140,138,87,141,135,79, -146,139,82,148,140,86,155,140,99,155,147,78,154,150,80, -155,151,86,155,149,85,150,144,79,141,135,89,134,130,82, -131,127,77,126,123,72,125,123,71,123,123,74,111,115,82, -72,92,101,29,56,85,18,47,76,18,43,60,20,40,49,24,39, -44,25,38,46,23,36,44,21,34,40,26,37,30,28,40,30,30,42, -32,52,61,55,105,112,113,170,171,173,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,185,177,184,182,115,164,188,48,100,164,16,67, -111,15,55,84,12,48,64,23,45,47,35,49,38,31,48,36,26, -46,36,28,47,37,31,47,38,36,46,39,42,49,33,44,51,33,59, -60,29,79,72,20,105,87,11,126,103,24,130,113,33,133,120, -42,130,123,51,126,124,56,132,125,64,131,126,66,131,128, -66,135,130,67,139,130,67,145,130,68,152,133,67,159,141, -65,167,146,67,171,149,66,173,152,69,173,151,75,173,151, -75,170,153,75,166,154,72,173,155,73,172,155,83,169,154, -81,170,154,82,170,152,85,172,150,86,173,151,85,169,151, -89,167,148,90,171,150,93,173,152,97,171,151,103,170,149, -104,172,148,102,171,148,104,166,145,102,166,142,96,168, -140,95,165,137,95,163,135,95,164,136,94,163,139,96,160, -142,98,158,144,96,164,144,91,165,143,95,160,137,95,166, -140,81,170,142,84,161,140,88,160,139,83,167,143,83,175, -138,91,170,139,89,173,140,84,177,143,84,175,144,84,176, -145,88,175,145,92,167,146,92,171,151,80,171,147,83,167, -141,90,166,139,94,162,140,99,167,140,93,171,141,87,172, -143,83,173,144,84,178,146,74,181,152,82,185,154,87,193, -157,93,186,155,94,173,155,97,172,158,93,174,160,95,174, -159,94,175,157,93,175,157,97,172,155,103,167,154,98,167, -154,101,168,154,105,167,155,105,169,152,90,169,151,87, -167,152,89,163,151,90,160,151,91,157,151,96,153,146,99, -153,146,92,157,148,93,153,146,94,150,143,101,160,149,82, -160,151,84,158,150,86,153,145,82,147,139,74,139,130,86, -136,128,82,133,126,79,128,122,73,128,122,72,126,122,74, -109,114,81,66,91,98,27,56,86,17,46,76,17,43,60,22,39, -49,25,38,44,26,39,47,23,36,44,21,34,40,29,37,31,31,42, -33,31,46,35,43,59,52,98,107,107,162,164,165,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,177,184,182,126,163,184,55,103, -139,17,71,84,15,59,65,12,48,54,23,45,43,37,50,33,35, -50,38,28,46,43,28,45,44,32,46,42,37,47,38,43,51,31,46, -54,27,61,62,25,80,73,21,105,85,20,126,103,24,131,113, -31,134,120,42,133,125,48,130,128,53,134,127,59,132,128, -63,131,128,63,136,130,63,140,132,61,147,134,63,153,137, -61,156,139,61,165,143,67,170,147,75,173,149,78,172,151, -70,174,153,78,172,154,81,167,152,78,171,149,86,172,153, -85,170,155,81,170,154,78,172,155,78,174,155,79,176,155, -81,172,155,86,171,152,93,171,151,92,171,152,87,170,152, -88,170,151,89,171,150,88,172,151,90,168,149,89,168,145, -93,170,144,94,170,144,92,170,145,88,173,148,88,172,150, -90,168,151,93,163,149,94,167,149,89,169,149,87,167,148, -83,171,146,81,174,145,88,166,145,88,166,145,87,169,144, -84,178,142,89,175,144,99,176,141,97,180,145,100,178,146, -103,177,146,103,179,149,100,171,150,88,171,148,87,171, -146,88,171,146,92,170,144,96,163,143,94,168,143,89,173, -144,95,174,143,99,174,146,94,179,145,90,182,150,96,184, -151,92,195,160,93,196,166,96,182,165,102,177,161,118,176, -159,119,176,159,113,179,160,106,180,164,98,177,162,102, -175,164,101,174,162,102,175,163,105,174,163,105,175,158, -98,176,158,98,176,160,98,170,159,94,168,161,94,165,160, -94,162,158,91,162,157,85,166,159,89,160,154,89,154,149, -93,161,149,92,158,147,93,154,145,91,151,142,85,149,141, -79,141,135,79,139,132,80,137,130,78,132,127,72,132,126, -71,128,125,74,108,113,83,63,87,99,24,54,86,17,47,77,18, -43,64,21,38,47,25,39,43,26,40,42,25,38,41,23,37,40,30, -39,29,32,43,33,32,45,43,37,51,55,73,85,86,136,141,141, -175,176,177,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,176,183,182,124,156, -182,54,95,133,26,66,79,24,56,63,17,46,53,24,46,44,39, -50,34,36,50,39,29,46,43,32,46,44,36,46,42,39,48,38,50, -49,32,53,55,30,66,63,28,85,73,25,103,87,24,122,105,25, -132,114,35,139,120,44,138,124,48,140,128,55,136,129,61, -134,128,63,133,127,62,135,127,61,138,128,59,145,131,60, -152,137,60,158,138,63,159,140,66,161,143,72,167,144,74, -175,147,67,172,150,75,172,150,78,175,150,78,175,148,85, -177,151,83,175,152,79,174,153,78,173,153,78,172,154,77, -173,156,79,174,155,85,169,153,89,170,151,88,170,153,84, -172,154,86,174,151,86,173,150,87,174,150,87,174,151,88, -175,150,93,172,149,93,166,150,93,164,151,91,168,152,91, -171,151,92,172,148,95,174,145,92,176,146,87,177,147,85, -176,147,84,174,148,86,172,145,91,174,145,93,175,146,89, -176,149,84,177,148,90,179,147,98,177,145,98,178,146,101, -175,144,101,172,142,100,173,144,96,177,146,88,176,145,88, -176,147,89,173,145,90,169,144,95,169,144,95,171,146,93, -173,147,98,167,144,97,168,146,93,177,149,91,181,151,95, -182,151,91,188,155,89,199,164,94,201,164,102,191,158,118, -179,158,118,176,159,113,179,161,107,183,164,98,179,165, -100,179,166,102,179,165,104,179,164,104,179,164,107,178, -165,104,177,165,102,174,165,99,170,164,96,170,165,96,171, -165,99,170,161,95,169,162,89,170,161,91,168,159,95,164, -154,98,161,149,94,154,147,95,149,143,91,148,139,84,147, -139,78,143,135,78,137,133,78,134,131,76,134,130,73,133, -128,71,128,126,75,104,113,83,60,84,96,26,54,86,20,48, -78,22,43,66,20,39,48,23,40,43,27,41,41,28,40,40,25,40, -42,32,42,30,33,45,35,29,45,42,25,44,47,45,60,61,92, -100,100,138,143,147,174,176,176,184,184,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,173,180,179, -105,142,179,43,84,125,22,59,69,26,55,60,20,47,56,23,43, -51,37,48,40,37,50,43,31,46,44,34,47,43,37,47,38,39,48, -34,51,50,32,56,56,32,68,64,31,85,75,28,103,89,25,121, -105,27,132,113,34,138,119,42,138,125,48,139,126,56,134, -129,62,131,128,61,132,128,62,135,128,63,139,130,63,146, -132,63,150,133,68,155,134,65,156,138,66,156,139,63,161, -138,67,172,142,66,172,148,74,172,149,74,176,152,73,176, -152,72,176,153,75,175,154,77,174,154,79,174,154,81,172, -153,84,172,153,87,173,154,78,170,155,75,171,154,78,170, -153,81,172,152,87,178,152,86,179,153,94,179,154,93,178, -156,93,178,154,99,178,157,96,172,157,94,168,155,89,170, -154,87,172,151,86,170,145,84,174,144,79,179,147,81,179, -146,82,178,145,87,175,145,96,176,145,99,176,146,97,176, -146,91,176,148,89,176,148,92,180,147,93,178,144,96,176, -142,97,178,144,99,174,142,95,173,141,92,177,143,81,180, -146,83,183,148,88,182,149,92,178,145,99,173,144,99,173, -144,88,175,147,86,174,150,83,174,149,84,179,152,89,181, -151,90,183,151,90,187,152,91,197,158,97,205,163,102,201, -164,103,186,162,105,180,160,104,181,161,103,187,164,103, -182,164,100,182,165,102,183,167,98,185,169,96,183,168, -103,180,167,106,180,168,103,181,170,101,179,172,101,177, -172,99,175,169,96,175,166,95,174,166,93,174,164,94,172, -162,95,169,156,97,159,149,97,150,143,90,145,138,84,142, -136,78,141,135,74,141,136,72,138,135,70,135,132,68,134, -132,67,132,130,67,126,125,74,99,109,87,58,83,94,27,55, -82,22,49,73,22,43,64,19,37,55,23,40,49,28,41,42,31,42, -37,28,42,39,36,43,29,36,47,39,30,45,46,21,38,43,31,44, -47,47,57,59,75,87,94,139,144,148,176,176,177,184,184, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,171,180, -179,85,129,173,28,70,110,12,51,62,24,53,57,22,47,56,22, -43,53,33,47,43,36,49,45,33,46,44,33,45,41,37,47,39,38, -48,37,46,52,33,58,58,31,69,66,29,82,77,27,102,91,21, -121,104,22,132,112,29,139,120,42,138,124,49,136,126,55, -130,126,62,127,125,62,129,126,62,133,127,61,138,129,59, -145,131,58,148,131,64,148,133,59,153,138,61,155,139,60, -161,137,65,168,141,63,170,148,65,171,149,67,172,151,68, -176,153,68,174,155,77,171,155,80,169,154,78,169,155,80, -167,153,83,167,151,89,174,152,82,174,155,80,175,155,81, -173,153,85,174,151,97,183,153,91,184,156,96,181,156,96, -179,157,97,177,153,105,174,154,105,173,155,98,173,155,91, -177,156,88,179,156,86,177,152,85,174,150,87,174,149,89, -172,146,87,172,146,86,173,145,89,173,144,91,174,146,86, -176,150,87,175,150,88,176,148,87,176,146,88,176,145,91, -177,145,93,177,144,94,174,142,91,174,142,86,180,148,76, -183,150,83,182,149,86,179,147,89,179,142,96,171,141,95, -173,143,83,175,148,77,174,151,75,175,150,83,179,151,86, -181,153,90,184,154,92,187,155,92,189,155,94,191,158,98, -192,163,98,188,164,100,187,160,101,187,161,105,186,163, -110,183,164,107,183,165,106,184,167,100,186,173,99,185, -173,105,181,169,109,181,168,107,182,171,107,181,172,106, -178,171,103,179,169,101,179,168,97,178,167,95,177,167,95, -174,163,97,170,154,104,157,142,95,147,136,88,144,135,85, -140,134,81,138,132,79,137,132,73,139,132,70,139,132,71, -134,130,70,130,128,71,121,124,77,94,107,90,57,82,97,29, -57,84,24,49,74,23,43,65,18,35,55,22,39,49,29,40,41,33, -43,35,33,43,38,41,46,29,38,48,38,31,44,42,22,36,38,26, -38,37,34,43,41,37,50,59,96,103,107,158,161,163,182,182, -182,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,184,167,179, -177,68,115,169,14,58,104,9,49,63,24,53,58,21,49,56,19, -46,50,29,49,40,34,51,42,33,49,42,34,48,39,37,50,37,39, -50,37,44,54,37,60,61,30,71,69,28,80,79,26,100,92,23, -123,106,21,133,116,33,138,122,46,136,127,53,129,126,54, -129,125,62,128,124,64,130,124,62,135,127,61,141,130,58, -147,133,57,149,133,64,148,136,60,152,137,61,157,138,64, -162,139,69,166,143,67,169,147,63,171,149,67,169,149,70, -174,153,71,171,153,79,169,154,79,167,154,76,168,155,76, -167,153,79,167,151,85,176,152,80,175,156,81,177,156,84, -179,156,89,175,153,98,184,152,87,183,155,91,181,156,94, -179,156,95,178,156,97,174,155,101,172,153,92,176,155,88, -180,158,89,182,161,89,180,161,90,175,159,95,174,157,96, -172,154,92,172,153,86,172,153,88,172,150,91,173,146,85, -174,149,87,172,149,85,172,148,84,177,148,94,173,147,96, -172,146,96,175,146,94,179,150,93,179,151,91,177,153,83, -174,150,85,175,153,88,175,153,90,175,148,97,176,145,96, -172,149,91,174,153,84,176,155,81,173,151,87,179,152,87, -182,157,92,182,158,94,184,159,94,185,160,93,184,160,93, -180,160,93,182,161,97,189,163,104,194,165,107,192,165, -108,184,168,106,183,170,102,183,171,98,184,174,97,184, -175,103,184,175,108,184,174,109,183,174,109,181,173,109, -180,172,109,180,170,109,181,172,102,179,172,99,177,171, -99,172,166,99,169,156,101,162,149,94,151,144,97,145,138, -92,141,133,86,137,128,86,137,130,81,136,130,75,136,131, -75,133,129,73,129,127,74,120,122,79,94,105,90,57,81,96, -31,59,86,25,51,76,22,44,66,19,37,56,21,40,47,28,41,41, -33,43,35,35,45,36,44,49,28,38,49,35,29,44,38,20,36,35, -24,39,34,28,41,35,22,41,47,67,79,83,139,146,147,177, -178,178,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,157, -176,172,42,101,166,4,53,107,5,47,70,22,52,56,22,50,46, -21,48,45,30,49,35,36,52,35,36,51,39,33,47,39,37,50,39, -43,53,34,46,54,38,61,63,25,75,75,26,85,84,27,102,94, -28,124,108,33,133,117,38,138,125,48,135,127,57,127,125, -66,129,124,67,129,124,66,131,124,63,137,128,64,143,131, -65,147,133,66,148,132,74,150,136,66,155,138,68,158,138, -70,160,140,72,164,140,72,167,143,67,170,147,66,171,149, -66,174,151,75,172,152,81,170,153,79,170,154,74,173,157, -74,171,155,75,168,152,79,177,154,80,172,156,76,175,156, -79,178,156,82,174,153,88,180,150,93,182,156,92,181,157, -99,177,155,101,178,155,98,175,158,90,174,156,82,178,158, -80,183,162,83,184,163,84,184,164,88,179,162,93,174,157, -97,176,157,97,175,157,93,174,154,97,175,154,95,177,148, -104,176,150,104,172,150,101,172,149,106,175,145,104,172, -145,103,171,143,96,179,149,92,181,151,90,181,152,96,181, -152,104,180,152,106,180,154,105,178,155,101,180,154,101, -184,156,94,182,160,89,180,157,88,182,156,90,181,157,85, -183,153,89,183,154,93,184,157,95,186,159,96,188,163,97, -190,167,99,187,166,102,183,163,107,184,162,106,189,165, -101,194,169,95,186,172,96,185,172,93,187,173,97,187,175, -101,184,177,103,184,176,97,185,177,96,185,177,98,183,175, -99,181,173,101,181,173,102,181,173,97,179,171,95,177,170, -101,172,164,100,173,161,88,163,154,96,153,148,95,145,141, -89,142,136,88,138,131,90,135,129,83,134,130,78,135,132, -74,134,132,71,130,130,70,119,123,75,92,105,86,55,83,89, -32,62,82,25,52,74,22,45,67,19,39,55,20,40,48,26,41,43, -32,42,38,35,46,32,44,50,33,39,50,39,30,44,41,21,38,38, -25,41,37,30,45,36,22,42,41,52,69,74,125,132,136,170, -171,172,183,183,183,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,185,180,185,181,133, -171,165,23,92,162,0,50,105,0,46,69,18,48,51,28,51,45, -21,45,43,30,45,34,37,48,33,38,50,39,33,46,40,35,49,41, -45,53,35,47,54,37,62,64,25,81,76,27,93,83,28,105,94, -29,123,107,33,137,116,39,142,124,47,139,126,58,128,121, -67,128,121,66,130,122,65,133,123,64,137,125,63,142,127, -63,146,129,66,145,129,71,147,132,63,153,135,66,155,136, -67,157,139,70,160,140,71,162,142,67,163,145,64,165,149, -65,167,148,71,168,145,76,166,145,73,167,149,71,172,153, -73,171,153,75,169,152,81,170,152,80,170,152,76,174,156, -78,177,155,78,177,153,84,174,151,95,175,155,89,176,157, -96,170,155,98,172,152,97,173,155,90,174,157,85,177,159, -83,183,161,83,186,160,83,189,162,87,186,160,94,179,155, -97,175,155,96,177,156,97,184,152,101,179,158,101,176,153, -107,172,152,103,167,154,101,166,152,107,168,143,101,170, -139,97,173,139,90,180,143,87,184,146,87,185,148,96,182, -149,103,178,151,106,178,154,105,178,155,101,181,156,101, -184,158,91,180,157,84,182,157,87,183,153,88,184,154,84, -185,153,90,186,153,93,187,157,96,191,164,100,187,166,97, -187,169,99,187,169,103,181,166,106,178,164,105,177,164, -97,184,166,92,187,170,93,187,170,93,188,170,98,185,171, -101,184,169,100,186,172,93,187,173,92,187,173,93,185,172, -95,182,171,96,182,170,98,180,170,93,175,167,92,177,166, -98,175,160,97,173,161,87,160,154,95,153,146,91,147,140, -88,141,133,85,139,126,85,140,127,82,137,129,76,137,129, -71,138,130,69,133,128,67,120,121,72,90,103,83,55,83,87, -33,62,79,25,52,73,18,45,67,16,39,56,19,39,48,25,40,42, -29,41,37,35,43,30,38,49,33,36,49,39,31,43,41,24,36,36, -29,39,35,35,44,37,35,43,43,59,73,78,122,133,134,167, -170,170,182,183,183,184,184,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,183,185,184,175,183,181,123, -164,162,19,95,153,0,53,103,0,44,74,16,46,54,28,51,43, -24,48,45,30,44,45,36,46,42,38,49,41,35,49,40,36,50,39, -46,54,37,50,59,32,62,65,27,83,77,25,97,88,21,108,98, -27,126,111,28,138,116,41,143,123,54,140,126,63,131,124, -65,130,125,59,132,125,59,136,127,60,141,130,60,144,131, -60,148,131,61,146,134,52,149,136,58,155,137,63,158,140, -66,158,140,66,160,143,56,162,144,62,163,144,75,161,142, -83,165,143,86,167,144,84,166,145,80,166,146,78,169,149, -79,170,152,75,169,154,70,170,152,76,170,153,75,172,153, -77,175,153,78,179,156,76,177,154,87,175,155,82,176,160, -82,171,160,81,174,156,91,176,158,92,177,159,93,177,157, -92,182,158,93,186,157,94,186,156,94,184,157,87,183,159, -95,179,158,101,176,155,100,186,156,94,180,157,105,182, -160,103,181,161,109,171,156,113,162,148,113,164,139,96, -169,139,95,174,141,91,182,146,88,187,149,88,185,150,91, -181,151,89,179,156,88,178,158,87,175,155,82,178,156,83, -184,158,82,183,159,99,184,158,101,188,158,98,189,158,93, -190,157,102,191,159,97,193,164,95,193,168,97,192,171,100, -190,171,103,189,172,102,185,173,101,181,168,98,178,165, -95,184,164,103,187,169,95,187,170,90,189,172,94,186,173, -95,185,171,96,187,170,99,188,172,96,189,172,100,186,171, -105,183,169,107,183,169,106,181,166,106,176,167,98,173, -163,91,173,161,87,171,159,85,160,154,96,153,147,89,148, -141,87,142,135,81,142,132,73,141,129,82,138,129,81,136, -128,74,138,130,69,134,129,66,121,123,67,92,106,75,56,86, -76,35,67,64,28,58,56,20,48,59,17,42,50,20,40,47,25,41, -41,29,42,32,36,45,28,39,50,33,37,48,43,31,43,43,25,36, -37,29,39,38,36,44,38,41,50,39,66,81,88,124,133,138,166, -168,169,178,179,180,182,183,182,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,185,181,183,182,155, -167,170,53,107,160,2,51,106,0,43,75,10,43,50,26,48,41, -31,44,45,26,43,43,31,45,39,37,48,40,38,48,41,38,49,40, -43,54,36,52,61,34,67,65,29,83,76,24,100,88,22,115,96, -29,132,110,30,135,118,40,134,124,51,130,127,59,126,125, -65,130,125,60,134,126,61,137,127,61,141,132,62,140,132, -60,142,133,60,146,136,56,147,136,59,151,138,63,153,140, -64,153,140,64,161,140,56,161,144,64,159,144,75,159,140, -81,162,140,82,163,142,81,162,143,77,162,143,75,165,144, -74,167,146,71,169,148,68,168,146,72,168,149,72,169,150, -73,170,151,75,174,156,74,174,154,86,174,153,81,178,155, -80,179,157,83,181,153,91,182,154,93,178,153,90,177,152, -89,179,153,89,182,156,91,179,159,93,181,161,89,180,159, -94,180,156,99,178,152,100,184,153,93,181,151,102,179,156, -99,180,157,106,176,153,110,171,145,112,174,141,102,176, -141,100,177,142,95,181,149,91,182,152,90,181,152,92,178, -152,89,177,152,85,179,155,85,178,157,84,180,157,85,179, -159,81,178,160,99,180,160,102,183,162,100,186,165,98,186, -165,106,182,165,100,183,168,97,186,170,97,188,170,99,191, -169,102,195,170,102,192,169,102,189,168,102,185,167,101, -179,165,103,182,167,93,183,171,91,186,172,95,185,171,96, -182,171,96,179,172,97,178,171,92,180,172,96,177,168,99, -176,163,99,180,162,99,178,160,101,176,160,94,173,158,89, -172,157,85,169,155,83,159,146,90,154,142,86,150,138,86, -143,132,80,137,133,73,136,131,80,134,127,77,133,127,71, -133,129,67,130,128,64,117,122,66,86,106,75,58,85,78,44, -69,70,35,58,61,23,47,61,21,41,51,21,41,48,26,42,42,31, -43,33,37,44,28,41,50,34,35,49,44,28,44,43,25,39,39,30, -41,40,37,45,39,44,53,43,74,88,94,129,138,143,167,169, -170,180,181,181,183,183,183,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,184,173,180, -175,95,135,167,15,63,118,0,41,87,9,36,69,23,41,55,31, -45,44,28,44,46,29,43,39,36,48,35,39,51,34,38,51,32,42, -52,35,50,57,33,67,66,25,84,77,25,99,87,24,115,98,24, -134,114,24,137,121,36,135,126,49,130,126,60,127,126,63, -130,124,57,135,127,58,139,130,59,143,134,58,143,135,58, -143,134,64,146,133,74,149,136,73,152,139,69,153,140,65, -152,139,63,162,139,58,161,143,65,159,144,64,160,145,61, -162,144,61,163,142,76,162,142,81,162,142,79,165,144,74, -166,145,69,168,148,68,169,148,70,170,151,68,170,151,74, -170,150,82,171,149,87,171,148,90,173,149,88,177,151,90, -177,153,90,180,154,87,180,154,84,177,154,84,177,153,85, -182,155,89,181,155,92,176,153,100,175,152,106,178,156,95, -179,157,93,179,156,94,186,155,91,186,157,99,181,156,106, -179,157,102,176,156,92,172,151,87,179,150,87,182,151,91, -183,150,93,183,151,94,184,152,93,183,153,93,178,150,97, -176,149,93,179,152,98,179,154,96,181,157,86,180,158,84, -176,160,86,177,159,89,180,160,93,183,162,99,185,164,103, -184,166,104,185,168,105,186,168,106,187,168,104,190,168, -103,193,168,104,194,169,110,192,170,108,189,171,103,183, -168,106,182,165,103,184,168,105,184,168,102,184,168,100, -182,169,104,179,171,100,176,168,97,176,167,98,174,163,98, -173,159,100,177,158,101,176,159,89,175,160,83,175,160,84, -172,159,81,168,155,76,159,149,78,156,146,80,153,143,83, -146,138,81,137,133,78,136,132,75,135,129,71,136,130,72, -135,130,74,131,127,76,118,119,84,85,101,98,58,82,95,44, -66,87,35,56,74,24,48,61,24,45,45,24,46,41,26,43,37,31, -43,34,38,46,26,41,50,32,33,49,38,26,43,37,24,39,33,30, -42,32,37,47,32,45,54,37,73,87,89,130,138,142,168,171, -172,182,182,182,184,184,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,184,180,183, -181,124,156,176,33,84,126,0,48,89,0,41,68,8,42,49,22, -45,39,31,45,47,28,43,39,32,46,33,40,50,33,42,50,33,42, -54,35,48,59,33,64,66,24,84,78,26,100,86,25,119,96,24, -131,113,22,137,121,37,135,125,50,128,125,59,127,124,61, -131,124,57,133,126,57,137,128,57,144,133,59,145,134,59, -142,133,64,141,132,72,147,132,70,149,136,67,150,138,63, -155,136,64,156,140,58,153,142,61,156,142,60,158,143,58, -159,143,60,157,146,76,156,144,79,158,142,76,161,143,72, -163,144,67,166,148,67,167,149,70,168,150,67,166,149,72, -165,146,78,166,145,82,166,144,87,169,145,85,172,148,88, -174,150,88,177,152,86,177,152,84,176,151,84,176,149,84, -178,148,84,179,148,88,174,144,92,170,143,97,176,152,93, -178,153,93,178,153,93,180,158,90,181,157,98,172,156,102, -174,154,97,175,151,90,170,152,88,173,155,88,171,156,91, -169,154,92,171,152,91,174,150,90,175,149,90,171,149,94, -177,146,92,176,148,95,171,148,89,182,150,81,185,157,87, -179,158,87,179,158,90,179,159,93,176,160,97,178,161,100, -181,161,100,182,161,100,183,162,100,184,162,97,189,165, -97,189,165,100,191,165,105,191,167,104,189,169,100,181, -167,104,179,162,99,182,164,101,184,165,99,182,165,96,181, -164,98,182,166,98,178,165,96,175,164,96,173,162,97,169, -157,96,167,155,95,170,154,85,173,152,78,176,152,79,173, -151,77,171,152,75,167,150,80,159,147,82,155,144,84,149, -139,83,142,134,81,135,134,76,134,132,72,133,131,71,132, -130,72,128,127,74,116,118,82,83,99,95,58,80,93,37,65, -83,25,55,70,21,47,61,25,43,45,27,43,41,28,44,38,30,44, -33,43,46,27,41,50,32,34,48,38,27,43,37,23,38,32,29,41, -32,36,46,31,43,53,35,74,86,89,134,139,143,173,175,176, -183,184,184,184,185,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,184,185,184,181,185,183, -144,170,172,44,96,144,2,56,92,3,44,76,8,37,66,20,39, -52,33,47,41,31,46,39,31,45,38,42,52,39,44,53,35,43,54, -37,48,58,34,64,66,23,85,79,24,102,89,23,122,100,23,131, -111,33,137,119,42,136,124,54,128,123,60,127,123,62,134, -126,59,139,130,61,142,132,63,148,135,65,148,136,65,144, -136,65,144,136,64,150,137,65,151,137,65,151,138,63,157, -137,66,158,139,69,155,141,75,156,138,76,161,140,80,161, -140,81,157,144,79,156,144,72,159,144,69,163,145,72,165, -145,76,165,144,81,166,142,89,166,145,84,164,143,85,164, -143,88,165,144,86,167,146,84,171,148,83,173,149,86,173, -150,89,176,150,90,177,150,92,176,148,93,175,146,92,177, -145,91,179,147,91,176,146,91,172,145,95,174,148,92,176, -149,90,180,153,93,181,157,92,181,157,95,172,157,98,172, -151,92,180,155,93,176,156,95,175,155,99,171,152,104,168, -149,104,169,147,100,174,149,94,176,150,86,168,145,87,176, -146,80,175,148,87,170,146,92,182,148,99,185,158,90,182, -161,88,181,162,87,182,163,89,180,165,92,180,161,110,181, -161,105,183,162,100,183,162,97,184,163,95,186,163,93,186, -164,92,187,164,93,188,164,98,187,165,104,180,164,108,181, -163,103,179,163,94,181,163,88,181,166,85,182,166,91,182, -166,97,179,167,96,176,166,94,175,164,93,171,160,92,168, -156,92,169,152,85,173,151,83,179,154,84,177,154,83,174, -154,83,171,153,83,164,152,82,159,149,83,154,145,82,147, -140,82,140,136,93,136,132,84,135,131,76,132,131,71,129, -128,72,117,120,81,85,101,93,56,79,89,36,64,83,24,54,75, -21,46,68,26,45,48,28,44,44,29,44,44,32,45,37,45,49,26, -43,52,33,37,50,41,29,44,41,25,39,36,31,43,35,37,45,34, -48,55,47,82,92,99,143,146,150,178,180,180,184,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,184,185,184,182,184,182,157,173,176, -58,108,154,6,62,99,5,51,82,7,41,69,11,41,50,23,45,36, -31,46,38,31,45,36,37,50,34,42,52,33,47,50,36,48,55,32, -63,65,20,80,76,20,98,89,21,119,100,22,129,113,33,132, -119,41,132,122,52,129,121,61,129,121,64,136,123,60,140, -127,61,143,130,62,147,133,64,150,134,66,150,134,67,151, -134,66,149,138,66,146,137,63,148,138,63,152,138,66,150, -140,68,153,139,74,153,138,77,152,139,78,152,138,77,152, -138,75,156,140,70,160,143,69,161,145,71,161,143,73,165, -140,78,163,136,84,164,139,78,161,138,79,161,136,82,171, -134,81,175,138,82,173,142,81,174,145,83,174,144,85,176, -142,86,172,143,85,172,142,87,171,141,88,172,143,87,173, -143,86,173,142,87,170,139,91,172,140,87,175,146,89,175, -150,89,176,154,88,176,153,91,171,152,94,171,152,92,172, -154,89,173,151,89,173,149,95,170,146,99,163,141,97,161, -139,92,169,144,88,178,149,85,172,146,90,171,148,80,173, -147,87,173,145,92,176,145,95,180,156,85,186,158,87,186, -161,89,183,166,91,185,166,95,180,157,108,175,156,100,177, -160,96,177,161,93,176,159,89,179,163,89,180,164,90,180, -164,89,182,166,96,180,164,99,179,157,103,179,156,97,179, -157,90,180,161,86,181,164,84,181,163,88,179,164,93,178, -163,93,177,162,92,175,160,90,171,157,90,169,154,91,171, -154,86,173,154,85,174,154,83,174,155,82,174,154,84,170, -153,84,169,151,84,164,149,86,157,146,86,151,143,87,140, -136,94,135,130,83,135,128,74,135,127,71,130,126,71,114, -119,79,81,97,91,52,77,87,35,61,81,27,49,72,21,43,66, -26,43,46,26,45,43,29,45,44,34,46,38,44,53,28,44,51,34, -34,50,41,26,45,41,23,40,36,31,42,34,38,45,34,57,62,54, -104,113,118,159,161,164,182,182,182,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,182,185,182,155,176,167,65,117, -153,10,67,105,7,53,76,11,48,60,12,39,58,21,39,52,29, -42,45,33,46,40,33,46,35,39,49,35,49,52,34,48,53,36,63, -61,31,80,74,30,96,85,28,118,98,30,129,114,29,131,119, -36,132,124,43,132,127,47,132,126,53,139,128,55,144,132, -57,146,134,61,149,134,67,151,134,71,151,134,72,152,134, -74,150,135,82,148,136,77,150,138,72,155,139,77,151,141, -72,153,139,73,155,141,75,154,140,75,153,139,78,155,143, -73,157,141,71,160,142,76,159,140,77,159,140,79,166,141, -80,168,142,78,166,141,80,160,137,82,158,132,80,169,132, -79,174,138,79,172,141,83,173,143,86,174,144,86,176,143, -84,173,144,88,172,142,93,172,140,97,170,138,96,171,140, -93,172,141,89,171,141,86,174,143,87,177,147,92,176,150, -95,176,150,103,177,152,98,174,155,93,173,155,91,171,152, -89,174,151,89,175,152,89,171,150,88,167,148,87,166,146, -85,170,147,85,179,149,86,173,149,86,172,147,89,176,149, -88,177,151,81,180,152,82,179,155,82,187,159,78,191,168, -84,184,167,86,185,164,91,182,162,93,181,161,98,181,162, -102,183,164,105,182,162,105,181,162,105,182,162,103,182, -163,103,181,164,103,179,161,99,179,158,95,178,155,96,181, -159,95,182,162,95,182,163,97,181,162,101,179,165,90,178, -164,92,178,162,98,177,161,101,174,158,99,171,156,94,173, -155,89,175,156,89,178,157,90,176,156,89,175,154,95,172, -154,90,171,153,89,167,152,87,160,149,87,154,145,91,142, -139,91,137,131,85,137,129,79,139,130,78,133,128,79,114, -117,85,82,96,96,52,76,90,33,60,72,27,52,58,21,46,56, -27,44,52,26,44,47,28,46,42,37,49,38,46,53,42,45,52,38, -36,51,47,25,43,45,24,40,40,31,41,37,43,48,38,76,82,67, -126,136,132,170,172,172,184,184,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,183,185,183,157,172,165,57,122, -152,7,74,107,3,58,78,11,54,63,18,43,64,18,41,54,20,42, -42,25,46,37,29,48,35,34,49,33,42,51,31,46,50,33,53,60, -25,73,71,25,88,82,22,103,95,22,124,109,23,127,113,30, -130,118,37,131,123,43,132,122,51,136,127,54,141,130,57, -146,133,63,147,134,68,146,134,71,149,133,72,147,134,76, -147,133,83,150,135,78,152,138,73,153,137,75,148,140,69, -150,140,72,153,138,72,156,138,74,155,136,77,156,137,69, -156,140,70,154,140,73,153,139,75,157,141,79,161,142,80, -160,144,78,160,140,79,159,136,82,160,134,82,163,137,80, -171,141,81,171,140,83,173,142,86,174,144,86,176,145,84, -176,145,90,171,143,93,168,138,93,167,133,90,170,134,90, -178,139,90,182,143,91,182,148,92,180,147,93,177,148,95, -176,145,103,168,150,97,171,152,91,172,152,90,170,150,88, -173,150,89,173,149,87,170,148,86,169,146,87,171,146,88, -174,149,88,175,151,87,175,152,89,169,150,91,169,149,87, -171,151,80,172,153,80,177,154,81,177,161,74,181,165,78, -182,164,82,179,163,86,186,161,94,184,159,99,182,160,101, -184,163,105,183,162,106,181,159,104,179,160,101,179,161, -99,176,156,95,179,155,93,184,154,91,179,153,96,180,157, -95,178,158,93,177,157,92,177,156,96,177,160,86,176,163, -90,174,162,96,171,157,96,169,152,94,170,151,91,170,154, -86,173,154,86,174,153,86,174,153,86,171,152,91,176,148, -88,171,150,86,165,151,84,158,148,85,150,143,90,139,136, -89,135,127,82,133,125,77,134,129,77,124,126,75,104,115, -80,68,94,88,43,71,83,31,58,69,27,50,57,28,42,57,33,43, -54,32,43,48,36,44,45,42,50,42,43,55,43,41,56,38,32,49, -45,24,42,45,23,40,40,27,41,36,42,51,39,92,96,86,144, -147,146,175,175,175,184,184,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,184,162,178,165,58,124,178,5, -72,125,8,61,92,10,52,66,22,48,63,22,46,54,21,43,48,25, -43,47,26,44,41,30,45,36,41,49,36,49,54,31,53,59,31,70, -68,29,86,79,25,100,90,28,120,101,32,125,108,39,129,114, -47,130,120,51,133,124,49,138,129,54,143,132,58,148,135, -63,146,134,64,145,134,65,150,136,68,149,139,70,150,140, -71,153,139,78,154,137,81,154,138,78,148,138,76,150,138, -80,154,138,78,156,138,72,156,137,78,157,138,71,156,139, -70,154,141,72,153,140,71,157,142,71,163,145,72,159,145, -74,162,143,75,165,144,77,167,144,74,170,146,74,177,148, -82,177,148,82,178,148,84,179,149,87,181,148,96,181,150, -94,175,148,91,171,144,85,173,143,82,177,143,86,181,142, -95,184,142,104,184,148,100,182,149,95,179,150,92,179,149, -97,168,152,93,170,150,99,173,152,95,171,152,86,172,148, -86,174,150,86,173,150,91,172,148,94,174,148,95,174,148, -90,173,149,87,174,150,86,169,151,85,172,153,84,175,155, -82,175,154,87,180,155,89,178,158,97,179,156,104,180,156, -108,177,156,111,183,155,101,185,159,99,183,160,101,181, -159,104,182,160,105,182,161,101,178,159,103,178,160,98, -177,157,98,179,155,95,186,157,89,184,159,95,183,160,92, -181,162,86,181,163,81,182,164,82,180,162,94,177,163,95, -173,162,93,170,158,91,169,153,92,172,152,98,169,153,92, -174,155,86,176,156,83,177,157,84,173,155,93,181,154,83, -173,153,82,166,151,82,157,148,83,150,143,91,138,133,98, -134,129,69,136,131,63,134,131,72,124,124,80,102,111,89, -62,85,98,37,64,81,30,54,82,27,47,72,32,48,45,36,49,42, -37,51,34,40,52,28,46,56,31,44,56,42,42,55,45,32,49,47, -25,42,47,25,42,45,28,42,38,44,54,42,101,104,91,149,153, -149,177,178,178,184,184,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,168,179,167,64,131,182,8,75, -128,8,61,92,13,56,71,17,47,62,20,46,53,22,44,49,22,42, -44,25,44,41,27,46,36,33,49,35,45,54,30,53,57,30,69,67, -28,83,77,22,95,87,24,111,97,25,112,104,32,120,110,41, -132,115,48,141,120,50,148,126,55,149,130,58,150,133,61, -150,135,65,149,135,66,150,136,67,148,138,69,149,140,71, -149,138,76,148,137,78,148,138,76,152,135,75,152,135,79, -152,138,77,155,140,74,157,136,76,157,137,72,154,136,69, -152,136,70,155,140,73,157,142,72,161,145,72,165,144,76, -164,143,77,164,143,76,164,146,75,166,147,75,169,148,81, -174,147,81,174,146,82,172,147,84,173,142,90,177,145,91, -179,148,93,180,148,91,182,149,89,183,150,92,183,149,100, -180,147,104,177,149,99,177,151,95,176,152,93,174,149,96, -172,150,94,172,149,98,171,150,91,172,152,86,176,148,86, -175,149,85,173,151,92,171,150,96,169,150,95,168,151,91, -170,151,87,173,149,86,171,152,86,171,156,85,173,157,83, -172,155,86,171,155,85,169,154,91,172,152,98,176,150,101, -177,152,106,179,155,99,180,157,96,182,158,99,183,156,102, -185,157,103,186,159,102,183,158,103,180,160,98,178,158, -99,179,159,97,181,162,91,181,160,94,175,161,90,175,163, -85,175,165,81,175,165,82,173,163,93,174,164,95,175,163, -94,174,160,93,172,155,93,171,152,95,173,152,91,174,154, -85,174,154,82,173,154,81,170,150,87,169,153,77,170,153, -81,164,152,82,158,149,85,150,142,91,134,129,95,133,128, -69,136,134,65,127,129,68,115,121,75,96,106,84,58,80,94, -39,61,79,30,50,78,26,44,69,35,47,46,39,45,41,38,51,35, -42,54,30,47,57,32,43,57,42,39,58,46,33,49,47,27,42,46, -28,40,44,32,42,39,48,53,43,97,100,88,144,149,145,174, -176,176,184,184,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,171,181,175,79,141,169,13,82,122,10, -64,96,11,54,73,18,50,61,21,48,50,23,46,43,24,44,39,26, -45,40,27,44,40,30,45,41,40,47,39,49,52,36,64,61,34,79, -72,33,92,81,34,108,93,22,110,100,38,116,105,40,132,114, -41,142,121,47,148,128,48,149,132,51,151,135,56,153,138, -62,151,138,64,152,138,68,150,139,69,151,141,72,153,141, -78,148,138,77,147,137,75,154,136,77,152,138,72,152,139, -76,151,136,77,154,135,75,158,139,81,157,140,77,156,141, -75,157,142,76,157,143,76,159,144,79,163,143,87,163,144, -83,165,145,81,165,146,79,167,148,80,169,149,86,173,147, -84,174,149,83,171,148,74,175,150,65,180,152,78,182,153, -82,184,155,86,186,156,88,187,157,90,186,157,91,184,156, -100,182,157,102,182,156,101,178,153,98,175,151,95,170, -149,102,172,152,93,172,153,90,171,152,85,179,151,88,179, -156,91,177,157,93,174,155,96,169,151,94,167,149,92,170, -150,92,171,148,97,165,147,98,169,152,98,175,156,95,177, -159,97,173,160,91,170,157,92,172,152,93,176,152,94,176, -152,96,179,156,90,179,156,91,180,157,94,182,158,93,182, -156,92,182,157,94,181,158,97,180,162,91,181,162,92,181, -162,94,180,161,97,180,162,93,178,166,94,177,165,94,176, -164,93,176,164,93,174,165,94,173,164,92,175,164,92,173, -160,88,171,158,84,173,157,82,174,155,89,172,153,90,170, -151,86,170,151,84,172,152,85,170,153,86,169,152,89,165, -151,95,155,145,97,145,137,100,128,125,83,134,129,75,139, -134,83,125,125,83,112,117,84,93,102,83,55,78,84,39,60, -79,28,48,72,28,46,63,36,47,50,41,49,42,38,52,39,44,55, -35,50,60,33,46,61,34,40,59,54,32,49,43,29,45,37,30,44, -32,34,45,25,48,54,27,84,89,68,135,140,139,172,173,173, -184,184,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,178,183,179,114,153,168,21,85,121,13,64,93, -19,56,71,20,52,60,25,49,51,28,47,43,30,46,41,31,44,40, -32,44,39,32,44,40,36,46,40,45,52,37,57,60,36,68,68,34, -81,77,35,101,90,21,107,96,35,114,99,34,126,109,33,138, -115,39,148,126,44,150,132,49,150,136,54,151,140,60,151, -141,63,152,140,66,151,140,69,152,141,71,152,139,74,149, -138,75,148,137,76,148,135,78,150,136,73,154,136,76,155, -136,75,156,138,77,159,139,76,159,139,72,159,140,71,161, -142,74,162,143,76,162,142,80,158,140,86,158,142,82,161, -143,79,164,144,76,170,147,75,167,149,80,167,145,77,170, -143,78,173,144,73,177,149,61,182,152,71,184,152,77,187, -154,83,186,154,86,187,158,90,187,161,93,184,157,99,179, -156,97,179,156,98,178,157,97,175,156,94,168,151,96,170, -151,90,173,152,89,175,152,87,179,156,90,175,157,92,174, -158,94,173,157,96,171,154,95,173,153,94,173,153,93,168, -153,95,165,151,100,170,153,98,174,155,92,174,157,94,174, -158,94,171,160,96,172,158,99,170,154,98,170,150,97,173, -152,90,174,155,90,175,156,90,174,155,87,175,157,87,177, -159,89,177,158,94,177,160,86,178,161,85,178,163,88,181, -162,94,177,162,87,178,164,90,179,165,95,179,164,95,178, -164,94,176,163,90,174,162,91,173,161,90,171,160,87,171, -158,83,173,157,84,169,154,86,167,153,86,165,151,82,167, -151,81,170,150,83,166,152,84,160,152,86,155,149,91,145, -143,92,135,131,92,134,122,73,138,127,74,136,130,84,118, -119,84,105,109,83,88,95,80,59,75,81,39,59,77,30,49,68, -33,47,57,41,48,48,41,51,43,41,51,39,46,55,38,51,60,35, -53,58,31,39,57,53,32,48,41,32,45,35,33,44,31,38,46,24, -50,54,24,73,77,51,124,130,128,168,170,172,183,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -182,183,182,144,167,167,37,96,123,12,62,95,20,56,74,23, -53,60,26,49,48,30,48,45,31,46,42,33,45,38,34,47,36,35, -48,38,39,48,35,43,50,38,51,56,38,60,64,33,70,72,30,88, -83,25,98,90,32,108,97,29,118,106,25,133,114,32,146,125, -40,148,131,47,148,136,55,146,137,58,149,140,61,152,141, -62,148,141,66,149,141,68,149,140,73,147,139,76,145,137, -75,143,134,77,148,132,73,155,135,73,160,138,72,160,139, -74,163,139,74,163,141,73,163,142,72,163,143,71,164,144, -74,165,145,80,161,144,87,160,146,82,162,147,80,164,148, -80,168,148,84,167,147,77,164,143,78,167,142,81,169,143, -77,171,146,70,178,151,73,181,152,77,183,152,81,183,153, -87,181,153,92,179,153,97,180,155,91,178,156,88,173,153, -89,172,153,89,171,155,86,173,154,86,172,152,82,174,151, -85,177,154,88,177,158,89,176,158,94,175,158,97,175,157, -97,175,157,96,176,157,94,177,157,91,172,156,92,172,156, -91,174,157,93,176,160,93,177,160,93,177,159,95,171,159, -103,170,157,106,168,155,102,169,151,98,170,153,87,172, -155,85,173,157,86,174,158,86,176,160,84,177,160,82,175, -158,90,179,160,86,179,160,85,178,160,86,181,159,88,180, -162,86,178,161,92,178,161,94,177,161,93,177,161,92,174, -162,91,172,162,90,169,161,88,167,160,86,168,161,88,170, -158,89,168,155,87,166,154,83,166,152,81,166,153,80,168, -153,81,164,154,77,160,153,79,154,150,84,140,139,83,133, -130,82,138,125,66,137,128,74,129,127,85,108,113,83,96, -104,82,81,93,80,55,75,81,38,60,73,35,55,63,39,52,48, -44,52,40,43,52,46,45,53,42,48,57,45,49,59,45,54,59,38, -39,57,57,32,48,45,32,46,41,33,44,37,39,47,29,50,55,25, -65,71,39,119,126,119,165,168,168,181,181,182,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,182,184,182, -152,169,161,43,106,119,7,66,98,11,53,77,21,53,60,27,50, -49,30,48,40,33,48,36,35,48,33,35,49,33,35,48,34,43,50, -34,44,52,39,48,54,40,57,61,36,66,67,30,78,74,34,86,82, -34,98,88,31,112,100,29,126,108,32,138,118,35,143,125,47, -145,130,59,144,132,62,147,136,64,150,137,65,147,135,69, -146,136,74,141,134,80,136,131,83,140,129,77,142,127,78, -146,127,72,153,130,67,158,136,64,162,139,65,164,141,72, -163,142,76,163,143,76,164,144,75,166,146,74,166,147,76, -163,148,79,163,149,73,163,149,74,164,148,77,162,146,87, -165,146,83,160,142,89,161,141,87,164,144,83,165,143,80, -175,149,75,179,150,75,181,152,79,180,152,84,174,148,90, -167,144,98,162,147,95,164,148,93,166,147,89,170,147,87, -169,150,88,172,150,83,174,152,79,175,153,82,172,153,84, -170,154,83,169,152,87,169,152,89,172,154,92,175,156,94, -174,154,92,174,154,94,173,153,97,173,154,91,170,153,91, -170,153,90,174,157,87,177,157,86,166,155,105,161,149,110, -160,145,103,162,146,90,166,146,88,167,148,88,170,150,89, -173,151,87,176,153,83,182,159,81,179,160,82,183,161,87, -183,159,95,180,157,98,183,158,96,179,160,95,177,161,89, -176,161,85,175,161,82,175,160,82,174,162,88,172,162,85, -169,163,85,165,161,84,164,160,84,166,158,82,165,155,81, -163,152,86,165,151,87,165,152,83,166,155,75,166,154,76, -161,153,76,155,150,85,140,139,83,133,128,76,138,129,78, -131,128,92,118,120,95,100,106,87,88,97,84,72,85,83,47, -68,82,35,56,72,37,54,59,41,55,43,48,55,35,45,53,42,49, -57,38,51,61,45,46,59,48,50,60,44,37,57,59,31,49,49,31, -46,46,33,45,42,40,48,33,54,58,25,66,72,37,116,125,112, -166,167,167,182,182,183,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,183,185,183,156,173,161,44,113, -122,3,72,103,1,55,80,13,52,62,25,51,51,30,49,40,34,51, -37,35,53,36,33,51,33,36,52,34,42,52,33,42,52,35,44,52, -35,53,58,36,66,65,36,78,70,36,83,76,31,90,83,30,101, -92,31,119,101,32,132,113,34,142,121,46,143,125,54,140, -127,55,143,131,57,149,132,61,144,131,67,134,129,75,121, -123,78,115,118,79,120,117,78,128,116,73,136,120,69,145, -125,63,154,131,57,159,136,54,162,140,64,162,139,70,161, -139,72,163,143,73,166,145,73,168,145,73,167,144,73,171, -148,71,170,148,74,167,146,77,162,143,84,156,142,86,160, -141,92,161,141,89,163,142,85,164,142,85,174,143,73,178, -148,74,179,152,79,182,155,86,175,150,91,160,141,98,136, -138,101,135,138,98,149,139,91,165,142,84,167,143,82,167, -148,75,173,150,74,176,152,77,176,153,80,173,153,79,169, -151,86,169,150,88,172,151,90,175,153,92,174,152,91,175, -152,93,171,150,92,167,150,89,169,152,90,170,153,88,170, -156,85,166,155,80,145,149,101,136,137,103,137,130,95,142, -132,85,149,130,83,151,132,79,158,136,80,169,144,83,174, -145,78,182,152,78,182,158,79,183,158,84,178,156,90,174, -155,94,177,154,93,176,158,92,175,159,82,173,160,78,172, -161,77,170,161,81,175,159,84,172,159,81,170,161,82,164, -159,81,164,158,80,167,158,78,166,156,81,164,152,86,163, -149,87,163,150,82,167,154,74,169,154,75,161,154,75,151, -151,85,137,139,84,136,130,71,135,132,82,122,125,92,107, -114,92,93,101,86,82,91,83,67,79,81,45,63,80,35,53,67, -40,53,56,47,56,43,52,57,37,48,56,40,52,62,37,53,63,42, -49,60,46,49,60,47,38,57,59,34,49,49,33,46,46,33,45,42, -42,50,34,56,59,27,66,74,43,116,126,116,167,169,169,183, -183,183,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,183,185,183,158,176,159,48,119,129,5,74,115,0, -51,97,7,43,83,22,44,63,29,45,49,32,48,42,33,51,38,30, -49,34,33,49,38,40,51,41,44,56,35,47,55,34,52,57,37,62, -62,34,77,70,39,82,75,32,86,79,35,92,84,41,108,91,48, -122,101,48,133,111,47,138,121,47,137,125,45,139,127,51, -143,127,66,136,127,62,123,120,67,108,112,70,99,103,80, -97,95,101,108,97,88,118,100,84,129,107,76,142,116,68, -154,128,58,159,135,59,161,138,59,163,141,61,163,143,64, -165,144,70,169,144,77,171,145,78,172,148,76,172,150,75, -170,150,78,167,148,83,155,141,90,158,141,86,162,144,76, -163,144,67,161,142,70,168,139,72,174,147,68,176,152,67, -179,156,75,176,153,84,164,148,93,131,133,93,118,120,106, -131,120,107,148,125,93,160,134,76,163,143,71,169,145,69, -172,147,76,173,147,79,171,151,71,168,149,84,167,147,87, -169,147,88,171,148,85,174,151,84,175,152,83,173,153,77, -170,155,77,171,155,83,171,154,86,168,153,90,163,151,96, -139,143,104,120,121,107,116,109,110,118,106,98,131,112, -75,138,120,66,148,128,60,164,141,63,173,146,64,180,150, -72,179,154,74,182,158,76,179,159,79,175,157,81,178,158, -83,174,159,84,175,160,82,174,160,81,171,159,81,164,155, -88,173,156,85,174,160,86,169,160,86,163,157,81,162,156, -77,167,158,79,167,157,83,166,157,83,165,153,83,165,153, -83,169,155,81,171,159,80,164,157,79,150,150,89,135,138, -84,138,134,59,135,132,84,119,123,83,104,112,82,87,98,79, -74,86,76,61,74,75,42,59,76,35,53,60,42,55,49,51,59,39, -56,61,32,52,62,29,54,64,32,54,65,31,51,64,28,50,62,39, -39,58,56,36,51,44,36,48,43,34,45,39,44,52,34,58,63,27, -65,74,42,112,121,120,164,168,169,182,183,183,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,184,183, -165,179,164,54,128,132,2,82,119,0,56,98,0,45,82,12,44, -61,22,45,48,30,46,40,35,48,37,35,47,34,35,47,37,32,48, -38,44,53,34,50,55,35,51,56,36,56,61,32,65,66,34,78,71, -29,87,75,33,88,79,38,87,85,42,109,94,41,118,100,36,126, -108,35,136,117,40,136,118,46,130,116,55,123,122,55,123, -120,65,115,107,68,102,95,75,82,81,89,66,87,73,78,87,67, -93,90,57,110,98,48,128,110,40,147,119,46,155,126,49,161, -133,55,166,139,62,167,138,67,168,139,74,167,142,75,172, -145,74,177,149,76,175,148,77,167,146,81,156,145,91,151, -141,83,157,138,70,165,142,64,161,143,69,153,143,70,162, -145,62,175,152,64,177,151,69,174,149,79,166,145,90,147, -132,93,116,110,98,101,103,89,111,113,76,137,121,62,150, -127,57,155,132,56,158,135,65,156,137,68,159,142,61,157, -139,73,155,136,76,156,135,76,161,136,74,167,139,73,170, -141,74,172,144,70,174,146,72,175,148,79,169,146,79,166, -146,85,165,143,93,153,132,101,119,117,105,82,98,95,81, -95,81,101,100,58,122,107,52,141,115,49,164,130,54,176, -139,59,180,144,66,183,147,69,180,151,71,179,156,76,177, -158,81,176,158,82,169,155,80,167,158,79,167,159,78,170, -157,79,173,149,87,173,154,84,171,156,83,171,155,83,171, -154,81,172,154,79,173,157,80,169,157,83,166,157,82,165, -155,84,162,154,82,163,156,78,162,156,76,159,153,75,147, -147,87,131,134,81,140,134,60,125,130,80,110,118,77,96, -107,77,76,93,73,61,81,69,50,69,69,38,55,73,39,52,61, -48,57,51,55,60,39,61,61,33,61,62,30,56,66,32,56,63,29, -57,61,26,54,59,36,44,59,57,39,51,45,37,48,43,35,44,38, -48,52,34,62,63,27,65,73,39,103,117,114,164,167,168,183, -183,183,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,170,180,167,68,136,144,6,85,132,0, -59,107,0,46,83,11,42,64,21,42,46,30,45,42,37,48,45,37, -47,44,37,48,40,32,47,42,42,49,40,51,55,37,52,58,32,55, -58,40,62,64,33,76,69,27,86,75,29,88,80,34,83,79,48,99, -82,48,112,92,43,121,100,41,130,109,45,136,117,48,132, -121,45,120,120,47,119,116,61,123,116,70,116,114,64,96, -109,44,66,86,65,69,71,78,80,69,78,96,74,75,112,81,75, -133,100,54,145,113,47,153,123,51,161,132,57,165,137,62, -169,142,68,170,145,74,175,151,70,178,151,72,176,151,77, -171,150,85,157,147,83,155,141,92,158,136,82,166,141,72, -161,142,72,156,143,81,162,143,69,174,148,71,179,151,80, -177,151,85,171,152,85,154,144,85,125,123,91,96,96,97,99, -89,111,124,95,103,139,113,56,144,115,67,148,120,74,148, -125,74,152,130,74,150,129,79,150,128,81,151,128,78,157, -130,76,163,132,80,165,133,86,166,135,80,169,138,80,172, -144,81,169,145,77,164,145,73,162,141,82,154,140,77,130, -135,83,85,104,84,68,72,110,87,75,87,109,87,68,133,103, -60,158,122,60,172,135,56,178,143,53,183,149,60,183,155, -67,180,157,74,178,159,80,177,160,81,171,157,83,168,158, -84,168,157,88,169,154,87,176,154,80,174,154,85,172,156, -85,173,158,86,176,158,89,175,157,86,174,159,83,171,160, -86,168,159,84,167,158,81,167,160,79,166,158,78,161,153, -84,158,149,88,145,144,90,131,134,81,140,131,68,123,123, -90,107,112,83,93,103,81,74,90,76,59,77,71,48,66,63,39, -58,51,42,57,50,49,60,38,57,65,24,64,67,22,66,69,25,61, -69,46,59,64,41,61,65,31,57,66,29,48,65,49,41,55,40,38, -50,37,39,50,35,52,58,34,64,66,31,65,72,44,102,114,122, -163,167,171,183,183,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -184,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,184,174,182,171,81,140, -151,14,90,139,0,61,111,3,47,86,11,42,63,22,42,46,31, -45,42,35,45,42,40,46,44,43,46,41,39,45,42,40,47,37,46, -57,36,51,59,33,55,57,40,61,62,32,70,67,25,79,71,24,87, -75,31,87,72,45,81,76,37,91,87,32,106,98,34,116,103,35, -126,110,38,136,116,42,139,116,51,132,112,64,125,109,66, -127,110,65,133,110,60,109,92,90,67,80,85,53,73,69,64, -75,59,82,77,56,102,93,34,123,106,32,140,114,39,152,121, -46,159,126,51,166,132,60,172,138,69,178,144,66,180,147, -70,177,148,76,176,150,86,169,148,90,156,138,92,146,134, -76,150,137,65,161,137,71,160,134,77,163,136,64,174,143, -66,178,145,74,181,146,83,180,147,86,167,141,89,141,127, -99,104,104,106,81,89,104,84,91,82,109,113,46,128,112,58, -136,113,64,138,115,63,144,116,62,147,117,69,141,120,71, -139,123,69,148,129,72,154,128,73,158,125,77,157,129,72, -161,132,73,168,135,74,169,136,72,167,137,70,160,133,77, -163,138,81,162,132,97,130,108,107,64,80,114,56,75,75,81, -86,56,113,101,49,144,119,51,159,130,48,168,140,49,176, -145,56,179,151,63,181,155,72,177,156,77,178,158,79,177, -157,84,172,156,84,169,157,89,166,155,86,170,156,80,171, -156,84,171,155,83,172,155,84,171,154,84,170,156,83,170, -160,84,169,158,85,165,157,83,165,157,80,168,156,77,168, -154,78,160,150,83,146,149,84,134,140,83,124,130,76,126, -133,64,109,121,83,97,111,78,87,101,77,70,85,72,59,73, -68,51,63,62,44,57,52,45,54,51,57,60,42,65,66,30,66,71, -27,65,74,30,56,71,46,54,69,41,56,70,31,58,66,29,51,67, -51,41,58,43,39,55,41,41,54,38,51,62,36,59,68,30,60,70, -43,105,117,124,165,169,171,183,183,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,178, -182,173,91,145,154,17,95,131,0,66,98,6,52,81,13,44,63, -23,43,48,33,47,42,37,49,38,40,48,34,44,49,31,39,46,39, -41,47,41,44,51,42,49,55,39,56,60,28,60,62,28,68,63,31, -77,67,30,86,74,29,90,78,34,82,77,45,85,75,48,96,80,52, -109,89,53,119,98,48,129,106,41,133,110,48,130,113,49, -126,113,54,126,112,55,135,112,58,121,113,60,83,104,70, -58,80,71,57,66,69,77,69,58,91,74,55,108,83,51,128,96, -49,144,110,49,153,119,46,160,127,46,168,136,50,176,142, -61,179,147,65,177,152,66,175,152,74,171,152,78,161,147, -80,151,132,105,149,123,119,162,135,86,162,132,88,164,133, -78,171,138,71,175,142,70,175,142,72,177,143,77,168,144, -76,146,137,83,114,120,88,89,103,94,84,89,100,96,87,83, -118,94,84,132,107,68,136,115,51,144,118,60,150,124,54, -141,123,54,132,116,59,139,116,74,151,121,84,158,125,80, -153,124,74,156,125,77,165,130,79,169,135,75,168,136,79, -159,133,76,159,133,79,161,135,78,148,136,82,85,113,84, -57,69,112,70,64,95,101,81,65,140,113,51,153,125,39,160, -130,48,170,138,58,177,146,67,177,149,75,175,151,80,177, -156,78,178,159,82,174,161,76,173,161,82,168,158,86,171, -156,90,172,156,90,172,155,88,173,155,87,171,155,85,170, -156,85,168,158,83,168,158,79,163,155,81,164,155,78,167, -155,76,168,154,82,163,152,88,145,143,100,131,133,94,125, -127,88,124,122,94,105,113,91,93,103,87,83,94,83,68,82, -73,59,73,66,52,64,63,43,54,63,46,57,43,61,66,42,67,67, -39,69,71,37,68,72,54,56,70,52,55,69,48,57,69,38,58,69, -16,52,71,38,44,63,36,43,60,31,46,62,28,55,68,28,59,69, -30,65,76,49,115,128,126,172,174,174,183,183,183,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,185, -184,179,182,176,107,152,160,30,96,137,14,67,105,9,53,84, -14,48,66,21,45,49,30,48,42,36,51,39,35,50,34,37,52,30, -28,50,38,33,49,39,36,51,39,42,54,36,54,59,27,60,61,27, -63,64,29,68,68,26,76,75,26,85,79,32,81,79,47,79,77,48, -82,78,45,87,83,41,95,93,35,105,104,31,122,104,39,127, -108,46,122,107,49,123,109,51,133,106,55,126,111,59,117, -100,81,87,84,86,56,68,71,54,70,50,70,74,46,83,79,39, -99,89,33,118,102,32,135,113,34,151,120,37,160,128,42, -167,134,52,177,141,59,181,145,62,179,146,71,179,144,78, -175,141,82,158,132,109,137,116,110,163,128,83,163,132,88, -164,133,78,166,140,70,162,145,66,162,148,70,163,145,75, -159,142,74,142,135,82,121,120,91,102,105,100,92,95,106, -108,85,92,85,91,68,101,99,51,131,111,47,142,112,55,147, -122,51,147,124,59,143,120,70,134,113,72,129,115,71,134, -126,69,146,124,72,148,122,72,159,129,74,163,134,71,163, -134,74,161,133,77,156,135,80,159,137,79,162,138,88,142, -118,112,64,82,124,45,69,89,66,76,50,116,106,38,143,119, -31,153,125,42,161,133,51,167,140,60,168,143,69,166,146, -73,169,151,71,175,153,75,174,156,71,176,155,78,174,152, -84,171,153,87,176,153,90,173,152,88,170,152,85,168,153, -84,166,155,83,165,157,83,162,160,79,160,157,81,164,156, -78,166,155,75,163,154,79,157,150,83,141,139,95,128,127, -89,122,121,84,113,117,87,100,106,85,86,97,81,78,88,77, -72,78,72,64,69,66,53,62,63,41,54,62,52,58,45,64,68,44, -66,71,41,73,72,40,61,75,53,58,68,52,56,69,50,57,70,39, -67,68,20,63,68,43,53,62,41,50,59,35,55,62,32,60,67,31, -58,71,33,68,86,62,132,139,139,174,174,177,184,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,183,178,183,177,116,159,154,40,106,120,20,75,93, -12,57,86,15,48,69,22,45,53,31,49,47,38,53,46,35,49,41, -37,50,43,29,50,41,33,51,35,34,49,39,38,48,46,51,52,46, -60,60,32,63,62,34,67,64,35,72,68,38,82,72,43,81,79,45, -79,78,44,83,79,47,87,81,52,88,80,56,95,84,61,117,95, -50,123,101,47,120,102,53,118,100,57,130,101,57,121,101, -70,117,103,63,99,101,70,66,81,67,55,68,70,65,65,57,78, -69,50,91,76,45,107,86,43,123,94,45,142,104,52,155,117, -51,164,128,48,173,136,50,178,139,55,176,142,67,178,145, -64,179,147,69,165,147,73,139,130,58,156,125,54,161,133, -72,165,136,66,170,144,69,165,146,72,161,147,69,162,146, -67,161,139,90,144,136,79,121,120,89,103,104,101,92,97, -91,116,101,58,91,99,66,92,83,69,124,96,72,142,117,27, -147,124,41,147,124,53,148,127,62,147,130,65,134,126,60, -125,119,63,142,114,97,152,127,68,158,130,64,161,131,72, -163,134,68,164,139,71,161,142,75,161,139,84,164,138,96, -153,135,96,85,114,102,52,76,104,58,59,90,104,80,82,137, -103,63,149,118,47,157,126,55,163,134,59,165,139,63,162, -141,68,163,141,82,169,142,97,169,146,89,172,149,80,172, -151,77,168,149,85,173,150,77,173,154,75,172,156,76,169, -156,77,168,157,83,167,158,89,164,160,82,162,157,85,165, -156,81,168,156,79,165,153,84,155,147,84,138,136,89,126, -125,83,119,119,77,109,113,82,97,102,82,82,92,82,72,84, -68,70,81,53,66,77,44,54,67,47,43,58,54,56,66,33,67,74, -35,68,75,36,76,79,29,62,73,66,61,70,53,58,70,53,55,65, -48,69,68,30,66,74,35,57,67,39,53,62,39,59,65,43,61,66, -47,59,65,63,80,87,107,146,148,154,178,178,180,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,184,184,185,185,185,185,185,185, -185,185,185,184,185,184,184,185,184,185,185,185,185,185, -185,185,185,185,179,183,176,124,155,157,50,106,125,20,81, -97,8,64,91,12,53,72,18,50,55,27,51,47,37,54,48,35,49, -41,35,50,42,41,47,43,40,48,36,38,48,40,37,48,46,43,50, -43,60,58,32,62,63,33,64,65,34,67,67,35,69,72,36,83,73, -41,86,76,44,87,79,48,90,80,53,93,78,58,92,76,57,90,96, -38,118,99,44,120,98,51,109,97,52,105,103,48,114,97,66, -112,99,58,112,97,74,89,82,78,55,69,72,50,66,53,60,69, -44,74,73,38,91,83,37,103,91,35,116,98,38,131,109,36, -149,120,36,162,128,40,169,134,47,173,135,61,178,141,62, -180,146,68,172,145,75,151,135,65,139,127,50,148,132,67, -153,133,60,162,140,63,166,144,71,166,144,70,168,146,71, -157,135,88,148,134,80,124,119,91,98,103,100,91,95,89, -107,102,54,113,102,76,93,93,75,82,92,52,123,115,15,152, -121,38,151,123,53,147,124,59,146,127,61,145,128,63,141, -122,71,127,106,88,135,123,59,148,131,61,156,128,68,167, -128,66,167,132,68,166,135,75,163,136,84,158,136,93,156, -133,97,130,115,122,87,84,123,55,62,91,67,74,64,107,98, -49,141,111,41,148,121,49,156,127,53,164,132,59,165,135, -66,163,132,79,152,132,86,156,136,77,162,142,72,165,147, -71,163,146,79,169,147,74,172,149,71,176,151,74,177,152, -78,173,151,81,168,151,84,164,155,80,161,154,84,163,156, -82,160,156,77,152,153,79,140,147,78,126,134,84,116,123, -79,111,115,71,101,108,72,90,97,74,78,85,76,70,74,63,76, -76,53,74,75,47,59,67,49,45,60,56,62,72,39,69,77,38,69, -77,39,80,80,31,57,75,66,57,73,53,57,71,54,56,66,49,68, -73,33,71,74,37,59,70,42,52,67,43,55,71,47,56,71,49,53, -68,63,80,98,113,144,150,156,177,178,178,184,184,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,184,185,184,185,185,185,185,185,185,185, -185,185,179,183,178,123,157,147,56,111,136,24,80,125,13, -67,101,14,56,77,18,49,62,27,50,52,38,56,45,36,52,37, -35,49,43,42,50,38,41,49,35,40,51,36,36,51,33,42,52,30, -59,57,27,63,63,30,65,65,29,69,69,31,69,73,33,80,71,32, -84,77,32,84,80,29,90,86,30,95,88,30,98,88,34,80,84,48, -113,90,56,122,98,58,108,93,61,98,83,90,111,94,49,109, -96,47,109,98,54,97,97,59,63,84,51,51,68,55,57,62,54, -70,65,52,86,73,50,98,82,44,111,91,38,124,100,40,141, -107,45,155,117,50,163,126,46,170,136,39,179,143,56,180, -146,65,175,145,82,157,134,98,145,117,122,154,127,114,155, -125,97,161,131,86,169,143,82,165,140,82,170,141,98,162, -142,78,150,133,88,128,124,93,101,108,92,93,94,101,107, -99,69,116,111,53,105,113,58,86,95,59,113,90,71,148,114, -46,153,126,49,150,128,59,150,130,70,148,129,72,147,131, -64,138,129,37,132,114,74,145,122,76,154,127,54,168,129, -62,171,138,65,170,139,75,167,144,77,159,141,76,158,134, -94,138,129,103,101,110,96,68,80,89,58,59,86,95,75,86, -135,99,63,142,115,46,151,121,49,160,130,50,165,137,54, -165,139,60,152,135,67,152,132,68,160,141,64,164,147,60, -161,145,75,168,146,70,173,149,71,176,150,71,176,151,72, -173,152,73,170,154,77,165,155,82,162,157,82,163,156,83, -159,154,81,148,150,81,134,139,92,120,124,101,112,114,91, -105,107,78,94,97,80,85,89,82,74,80,75,68,72,59,73,74, -48,76,79,46,63,73,46,49,67,51,67,76,48,72,78,49,72,78, -46,82,81,36,55,77,48,58,75,53,57,74,41,58,73,29,71,77, -33,72,76,32,63,76,34,56,72,38,57,72,51,56,67,59,52,64, -72,84,99,117,144,151,155,175,178,178,182,183,183,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,181,183,179,137,161,155,65,122,148,18,85,127,22,68, -106,20,57,81,19,51,64,24,49,51,38,57,46,37,53,37,30, -49,42,33,51,35,33,52,33,41,53,37,39,50,34,40,52,28,55, -56,24,63,58,27,66,62,27,69,65,28,73,66,30,76,69,29,81, -74,29,85,79,28,87,83,26,87,86,24,94,90,32,98,78,53,85, -88,43,108,97,52,111,87,61,80,76,83,90,88,38,101,94,41, -109,94,51,108,87,58,102,78,64,63,68,60,53,63,53,57,62, -46,68,67,40,82,75,33,99,85,29,113,93,30,125,101,34,139, -109,37,151,119,34,166,131,30,174,137,49,177,140,59,177, -139,77,161,132,98,132,121,121,159,118,114,160,116,97,163, -121,83,176,135,82,169,133,81,157,132,89,164,140,77,151, -132,90,134,118,93,112,105,95,82,97,100,104,99,69,137, -100,56,140,104,68,114,96,71,88,94,63,118,111,30,140,124, -42,147,125,57,145,122,63,146,124,68,149,126,61,157,134, -45,137,117,79,123,118,63,129,132,44,151,130,52,167,133, -60,168,134,71,171,133,71,174,133,77,167,126,93,160,119, -108,129,106,106,90,91,105,48,66,86,56,75,71,98,95,47, -137,104,39,145,113,40,156,123,44,163,128,47,161,132,54, -153,130,63,151,127,63,157,131,56,167,141,57,164,136,71, -170,139,65,170,142,66,171,145,66,175,148,69,174,148,70, -171,149,75,168,149,80,165,151,80,159,149,78,155,148,75, -149,144,78,133,132,86,114,116,94,102,106,81,95,102,70, -85,94,73,75,85,75,62,76,69,58,70,54,65,73,45,71,79,44, -65,76,48,59,71,58,65,80,51,65,80,49,66,83,46,67,85,34, -64,72,49,59,74,51,59,70,39,64,73,30,61,79,29,65,75,27, -63,77,34,61,76,43,56,74,51,46,73,59,44,76,76,93,111, -122,151,158,161,176,178,178,183,183,183,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,182, -184,181,150,173,142,85,138,126,23,91,118,25,76,81,22,62, -69,22,55,60,26,52,47,38,57,41,39,55,37,31,49,43,31,48, -38,34,51,40,41,53,36,40,51,31,38,48,39,54,54,30,64,60, -25,68,64,29,67,62,32,71,63,34,76,68,31,78,70,36,82,75, -38,86,81,34,85,81,34,89,82,48,102,85,46,81,81,53,97, -84,56,111,90,50,82,87,38,81,73,64,92,82,53,102,87,48, -109,90,47,107,88,48,70,76,67,56,64,64,57,60,57,63,59, -53,75,64,52,89,71,50,103,79,47,116,88,45,131,100,43, -144,110,41,156,117,48,164,124,61,170,131,64,172,136,69, -160,135,81,131,124,102,156,128,43,160,124,60,159,121,72, -170,132,72,168,137,66,155,134,67,158,135,62,150,134,73, -135,122,77,117,113,84,85,101,92,103,96,83,137,103,44, -149,118,51,126,113,66,94,96,88,107,89,82,130,109,64,146, -125,52,149,129,47,149,130,48,148,126,53,154,125,88,149, -134,61,122,116,62,121,116,80,149,125,56,166,133,54,167, -135,62,171,134,64,174,135,66,168,132,71,161,126,82,134, -115,98,96,99,107,55,73,95,52,68,82,84,76,66,129,92,58, -140,107,47,150,117,46,157,122,51,155,126,55,150,126,69, -149,127,60,155,130,55,161,136,55,162,137,62,170,141,64, -170,143,68,169,142,69,172,144,73,172,145,73,169,146,73, -166,147,74,163,148,78,156,146,82,151,141,85,144,136,90, -126,123,92,107,110,88,97,100,81,88,93,77,78,84,82,70, -80,69,59,74,64,56,68,51,64,72,44,68,76,40,67,80,45,65, -80,49,66,81,48,64,80,44,66,82,48,64,78,61,65,75,41,57, -72,55,59,69,45,68,75,43,62,74,60,66,72,54,66,77,50,63, -78,45,57,77,45,55,79,66,70,94,97,122,135,139,164,168, -169,179,179,179,182,182,182,183,183,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,181,185,181,164, -177,157,110,158,143,33,105,127,27,79,83,21,68,74,18,59, -64,22,54,49,32,58,42,37,58,40,32,52,46,30,50,40,35,50, -39,44,52,36,44,52,32,35,50,42,50,54,30,57,60,24,61,66, -30,60,66,35,62,65,36,66,68,31,71,70,37,74,70,35,85,80, -35,85,79,34,84,78,47,93,85,48,91,81,54,83,77,48,88,87, -44,96,88,38,71,73,64,74,77,47,88,83,44,97,87,43,97,88, -45,82,77,69,63,65,65,56,61,58,57,60,53,62,63,49,69,66, -44,81,73,38,96,82,36,116,93,35,130,102,32,141,107,40, -150,112,52,156,119,53,159,125,58,154,129,71,133,118,93, -155,120,31,154,125,57,142,117,66,154,127,65,155,130,59, -150,129,62,154,130,57,148,128,67,132,119,75,116,110,83, -103,96,94,100,95,86,122,103,42,147,119,49,144,118,69, -112,100,88,90,89,77,112,99,49,139,117,41,148,124,41,152, -130,48,153,129,59,143,116,82,152,129,57,139,120,66,127, -112,77,137,124,54,156,128,48,163,129,55,168,130,58,170, -132,60,167,130,66,151,128,80,128,118,98,103,102,109,75, -79,101,61,67,82,69,75,64,92,91,55,120,107,42,139,115, -41,146,120,46,148,125,54,147,123,65,147,125,57,151,127, -52,155,132,51,154,138,58,160,143,62,162,144,67,163,145, -71,164,145,72,163,145,72,162,145,71,158,148,73,156,148, -78,148,142,79,141,137,81,131,130,86,118,116,85,101,103, -82,90,95,77,79,89,74,67,80,77,68,74,64,62,68,59,59,64, -47,65,70,41,69,75,38,72,77,42,72,75,45,67,78,45,65,77, -41,68,78,44,66,74,58,64,79,42,56,71,51,61,69,44,70,76, -45,63,74,59,63,73,52,65,76,49,66,78,46,64,82,52,75,93, -83,113,124,128,156,161,164,177,178,179,183,183,183,184, -185,185,184,184,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,177,184,176,137,172,165, -52,120,145,33,87,104,24,74,91,18,61,76,21,55,64,30,56, -56,38,59,51,37,57,45,33,51,46,36,51,38,43,52,36,43,53, -36,35,52,41,48,54,39,56,61,28,61,67,28,60,68,33,62,66, -43,65,66,42,70,68,41,74,70,37,82,75,35,84,76,36,80,76, -43,83,77,45,91,82,43,80,79,48,76,78,54,88,82,47,73,76, -54,67,71,55,77,72,48,91,82,43,90,83,45,88,82,51,73,74, -57,58,64,55,55,60,51,57,60,47,64,62,44,74,67,34,83,71, -47,103,83,43,120,93,32,132,99,38,144,105,44,150,111,47, -153,118,55,149,123,65,136,121,72,150,114,27,150,122,49, -138,115,56,148,121,60,150,125,59,142,122,62,145,119,70, -141,119,74,129,115,80,114,105,80,107,99,76,98,95,81,114, -97,56,138,111,56,147,121,67,127,111,73,92,89,88,105,90, -65,132,107,56,143,118,54,146,122,56,152,126,62,149,123, -61,142,121,73,143,125,79,133,118,69,125,116,74,149,124, -59,160,128,58,165,130,63,166,131,66,166,131,68,147,129, -78,126,119,94,108,107,97,93,94,89,73,75,73,71,75,72,82, -81,61,107,94,61,134,110,55,143,118,45,143,120,54,145, -123,56,147,123,55,153,126,54,158,131,55,153,134,62,154, -136,68,156,139,73,161,142,76,163,144,73,162,144,68,160, -144,66,156,144,71,154,146,77,147,139,82,138,131,88,124, -122,91,113,113,80,98,101,74,86,94,74,73,86,73,60,76,75, -64,71,61,61,68,56,58,65,46,63,69,39,67,74,38,72,78,40, -74,79,39,61,75,48,65,76,49,70,76,45,69,77,45,63,78,50, -56,71,40,64,73,37,71,80,39,63,77,46,62,74,39,65,78,41, -66,80,50,69,85,72,97,110,114,146,151,157,174,176,177, -182,182,183,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -184,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,159,178,174,88,138,155,37,95,115,33,80, -92,26,67,77,23,58,65,30,56,56,42,59,47,47,59,36,37,53, -46,40,53,40,41,52,37,42,54,36,41,54,34,42,51,41,57,58, -28,69,65,26,70,67,30,64,65,37,65,65,37,68,66,35,71,68, -32,77,73,33,81,76,36,80,77,41,80,77,47,82,77,40,82,79, -46,75,74,48,74,74,49,74,76,46,69,71,54,69,68,48,82,77, -44,89,79,42,88,76,44,80,74,54,67,67,55,58,61,50,56,60, -46,61,62,43,73,68,37,72,66,44,83,74,40,102,87,34,122, -93,34,133,100,40,139,105,48,142,111,57,141,114,65,138, -112,68,139,107,38,141,116,54,135,113,58,139,116,58,144, -121,58,140,120,60,129,115,72,128,112,71,122,107,73,111, -99,71,107,97,65,98,96,76,107,97,61,125,107,60,136,115, -68,131,111,78,95,91,97,92,84,74,113,97,61,136,114,60, -141,117,54,147,122,57,151,128,50,132,117,70,139,119,71, -140,117,63,125,114,77,145,119,64,155,127,63,160,130,67, -158,128,68,157,129,71,149,128,76,129,119,92,112,107,94, -103,100,91,79,81,81,69,77,86,83,84,67,94,87,67,116,103, -58,132,115,46,143,119,45,143,122,55,145,126,59,149,130, -57,154,132,56,151,132,63,147,131,68,147,132,70,149,135, -70,153,141,70,157,143,66,160,143,63,157,141,67,151,141, -71,141,132,76,130,124,84,116,116,89,106,107,80,96,99,73, -86,93,73,74,84,71,64,74,68,58,69,55,58,68,53,57,66,45, -59,67,39,65,71,39,70,73,40,71,75,37,59,70,48,64,76,54, -66,76,46,67,76,42,57,73,60,58,69,36,66,76,35,69,81,38, -63,74,40,64,74,42,64,78,46,62,80,57,72,87,82,117,127, -132,165,169,170,181,182,182,184,184,184,185,185,185,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,184,184,185,185,184,184,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,185,184,173,182,174, -118,152,155,48,107,128,40,84,88,34,73,78,24,61,68,30, -58,57,44,61,46,52,62,38,34,56,46,39,53,41,41,53,39,42, -55,37,48,54,33,38,50,47,53,56,31,67,63,29,72,69,31,64, -66,34,64,64,35,67,65,34,71,67,31,74,71,30,77,74,33,78, -74,39,74,72,43,77,75,41,83,79,43,76,75,41,64,70,47,64, -71,43,65,68,48,65,66,47,70,67,42,85,75,41,89,75,40,82, -73,47,72,69,52,62,63,51,56,59,47,59,59,44,68,64,42,72, -67,41,72,68,38,84,76,40,109,84,42,121,94,40,124,98,48, -127,103,54,127,105,58,126,104,64,123,100,51,128,106,62, -129,108,63,133,110,57,139,114,54,140,117,58,127,113,67, -124,111,68,119,106,69,109,97,66,105,94,64,98,91,72,100, -95,66,115,104,67,128,111,74,119,108,82,102,98,89,91,85, -70,101,87,55,127,106,56,137,110,52,141,114,56,146,122, -56,140,120,62,143,116,54,146,115,52,128,113,66,139,112, -67,151,122,63,155,127,63,154,128,65,150,128,72,150,126, -71,132,118,88,113,106,91,107,103,94,80,86,91,61,79,98, -79,86,71,92,89,60,102,95,49,116,107,45,141,115,43,143, -121,51,141,124,54,141,126,54,144,130,53,144,133,54,145, -132,61,142,129,65,140,130,68,137,130,67,141,134,69,150, -138,72,154,139,66,146,137,68,133,129,69,123,122,73,112, -111,77,102,101,76,96,95,68,87,89,71,74,80,69,69,74,61, -60,70,49,59,67,43,60,65,39,63,66,37,68,67,36,72,70,35, -74,72,33,63,68,34,66,76,42,65,76,40,69,76,36,53,71,55, -62,72,36,67,80,41,62,80,42,66,75,38,67,74,47,60,77,59, -53,75,69,73,90,94,138,145,149,175,177,178,183,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,184,184,185, -185,185,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,178,184,176,143,168,153,62,115,147,44,87, -98,39,79,83,27,65,70,31,61,58,41,62,49,49,62,46,35,56, -45,38,53,42,41,54,45,41,54,45,49,54,45,38,51,50,50,54, -35,63,62,29,68,70,30,63,69,33,62,63,39,65,64,35,69,67, -28,73,72,27,75,74,31,74,73,38,72,72,40,71,72,40,78,77, -42,74,75,40,65,71,45,62,69,41,63,67,45,63,65,41,64,62, -38,70,64,45,83,74,34,82,75,38,74,72,48,63,64,51,60,62, -51,60,60,46,64,59,48,71,66,42,74,68,38,77,68,40,93,70, -56,111,87,45,115,92,50,119,97,52,119,100,54,115,98,62, -112,94,60,116,99,65,121,102,62,129,107,59,133,108,59, -133,109,65,129,109,64,125,108,61,120,105,62,111,98,59, -107,94,57,104,93,62,103,95,66,110,98,70,118,104,78,109, -101,85,103,97,75,90,84,74,93,80,63,117,97,58,130,104, -51,134,107,58,136,110,63,138,116,63,134,108,54,139,113, -58,128,111,63,128,104,79,145,116,70,151,123,64,151,125, -62,148,125,68,148,125,76,133,118,85,117,108,82,111,108, -84,85,93,88,66,84,98,86,90,59,97,95,48,105,99,49,109, -100,52,128,104,57,142,119,43,143,126,42,141,126,50,140, -126,56,140,129,56,142,130,57,141,128,67,137,126,70,131, -124,66,127,122,64,131,125,69,142,132,64,138,130,69,126, -122,72,116,113,75,107,106,71,97,96,76,92,91,66,83,86, -70,67,75,68,62,70,55,60,69,39,59,67,33,60,64,33,61,63, -32,65,65,30,68,68,26,67,67,31,64,70,26,65,75,34,63,74, -37,67,75,33,55,73,38,64,76,34,65,80,45,58,75,45,66,77, -25,67,76,41,54,71,62,44,68,78,85,101,110,154,159,161, -180,180,181,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,184,184,184,184,184,185,185,185,184,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,182,185,181,163, -176,167,85,135,157,41,92,103,41,82,84,35,72,73,29,63, -58,37,65,52,47,62,46,44,57,47,35,54,42,41,54,46,45,52, -44,47,53,45,47,51,47,49,53,35,60,61,29,70,68,30,66,69, -35,60,67,41,57,66,33,60,69,27,67,75,29,68,76,33,67,73, -39,66,69,38,66,69,38,77,74,41,78,74,39,68,71,43,62,70, -40,60,68,44,57,65,39,56,64,39,56,60,42,71,69,29,78,74, -36,77,72,46,70,64,48,65,60,47,65,61,45,63,60,47,68,64, -39,76,70,38,79,70,40,75,69,51,85,84,42,101,90,48,107, -93,48,111,96,50,110,94,59,99,87,54,102,90,55,107,93,53, -112,97,50,115,99,51,115,100,57,122,102,58,122,102,57, -117,101,59,111,97,57,109,93,53,108,91,56,108,94,58,114, -100,65,116,103,73,102,98,79,101,96,73,88,87,75,80,79, -59,99,94,53,113,102,48,118,104,53,122,107,57,124,110,59, -118,107,55,122,111,61,128,109,67,112,104,79,131,112,66, -141,120,61,143,121,59,147,122,63,140,121,72,131,112,78, -120,104,76,112,104,80,88,92,88,72,81,94,100,88,53,103, -92,46,107,100,50,107,100,52,112,99,52,117,115,40,135, -124,39,140,124,47,138,121,51,143,124,55,145,127,58,142, -127,66,136,124,68,129,122,64,126,121,62,124,118,60,122, -123,57,120,122,65,114,115,69,104,107,70,95,103,67,82,93, -73,80,87,62,74,84,68,61,73,64,60,66,51,60,65,36,58,66, -35,58,65,35,60,65,34,61,65,29,64,68,27,67,66,32,64,69, -28,67,75,37,64,74,39,64,75,36,67,70,36,68,77,35,64,76, -42,61,71,41,72,78,26,68,77,41,51,69,56,51,71,77,111, -123,130,169,170,173,183,183,183,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,184,184,184, -184,184,184,184,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,174,184,174,126,164,151,67,109,125,44,85, -97,42,80,78,31,65,64,37,63,57,50,65,42,46,61,40,37,55, -43,43,56,39,49,57,34,49,56,40,51,53,47,50,52,47,59,58, -40,72,69,36,68,71,36,62,69,45,58,67,42,59,67,40,64,70, -44,67,73,44,67,74,42,67,71,38,64,66,45,74,69,47,78,73, -43,70,73,44,60,66,52,59,67,43,58,67,40,55,64,35,56,63, -31,65,63,33,72,68,39,74,70,43,73,68,44,70,66,43,68,65, -40,65,63,42,68,63,43,76,68,45,80,72,42,78,72,46,75,74, -43,93,82,51,103,89,52,105,90,48,104,87,58,101,91,48, -103,93,47,107,94,50,110,94,51,111,95,53,108,93,54,112, -94,48,115,97,47,110,94,58,105,91,65,107,90,60,105,89, -60,108,95,52,115,102,58,120,108,68,105,105,61,99,95,67, -89,89,72,81,80,67,89,82,68,106,92,66,113,98,55,114,99, -56,115,100,57,112,100,62,116,103,71,124,105,75,108,101, -79,124,106,56,134,114,53,136,116,55,143,118,63,137,120, -68,129,112,65,122,106,72,112,102,88,92,94,102,76,85,89, -102,93,36,105,96,39,108,103,38,107,105,30,113,103,42, -105,104,43,122,111,47,135,119,48,138,122,47,140,121,52, -143,122,71,141,123,72,137,124,74,129,120,75,126,116,77, -124,114,76,113,111,64,107,107,73,107,107,71,100,105,63, -88,98,64,74,85,81,75,81,66,70,82,60,60,73,49,57,65,41, -59,65,32,56,64,36,55,62,36,60,64,37,60,63,35,63,65,34, -69,69,25,64,69,28,66,74,35,64,74,39,63,72,45,71,75,31, -71,77,51,64,74,50,63,72,45,72,74,52,64,69,69,52,69,69, -84,98,100,147,153,155,178,181,181,184,184,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,184,183,183,183,184,184,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,183,185,182,159,172,171, -100,140,147,43,95,100,44,83,81,38,69,69,35,65,58,43,70, -44,49,63,44,41,57,46,40,57,39,43,61,34,47,58,41,45,56, -47,44,55,47,55,58,39,72,69,36,77,72,40,68,70,47,60,67, -43,59,68,41,61,69,41,65,70,42,66,71,41,65,72,38,60,65, -43,61,67,40,67,72,38,74,70,43,67,64,52,65,63,42,64,64, -40,59,63,37,56,64,33,60,64,33,64,66,35,67,68,39,67,67, -41,68,66,41,70,65,41,65,64,43,64,63,41,68,68,42,71,72, -39,76,70,44,82,73,44,80,76,42,84,80,38,90,86,39,90,83, -49,92,84,40,96,90,44,101,94,48,104,94,48,105,95,51,101, -93,52,98,96,46,107,96,45,100,92,54,89,88,57,88,89,51, -86,87,50,97,90,45,113,100,55,122,104,66,120,102,65,110, -93,71,88,86,69,74,80,64,76,79,60,92,87,57,105,92,48, -106,92,48,106,95,50,103,93,55,107,95,63,116,97,67,105, -94,74,115,97,47,124,106,44,129,110,48,134,112,56,131, -116,62,122,111,61,116,107,70,106,100,85,90,90,98,80,80, -88,106,91,37,104,91,37,105,97,33,107,104,31,109,105,41, -111,105,48,100,109,38,108,114,36,123,118,39,134,116,46, -131,117,63,132,119,66,134,121,71,128,117,72,118,110,70, -114,111,70,112,111,63,101,101,67,89,97,57,81,97,52,80, -91,56,68,77,73,71,73,59,71,72,54,65,66,46,57,59,38,58, -62,31,58,63,36,54,62,36,54,64,34,55,66,35,56,66,32,64, -67,22,66,68,28,69,71,33,66,70,37,64,69,43,65,80,33,62, -75,46,61,69,45,62,71,44,62,76,49,51,76,68,71,94,91, -131,139,139,170,172,173,183,183,183,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,184,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,183,175,181,176, -131,157,160,72,112,128,50,85,96,44,76,72,37,67,59,42, -64,65,53,67,47,46,63,47,40,57,45,41,57,45,48,59,38,47, -62,30,47,62,29,56,63,27,71,70,27,80,78,25,73,78,34,65, -74,41,61,71,41,62,71,39,64,71,39,67,69,47,64,69,42,60, -66,39,59,64,43,63,65,44,73,71,34,67,66,43,64,63,42,64, -63,44,59,61,42,54,59,41,58,58,45,61,61,38,65,64,37,65, -63,40,67,64,43,71,67,40,66,67,36,63,64,37,68,69,37,69, -70,33,75,69,43,81,71,44,79,74,44,82,76,42,88,81,45,89, -81,52,89,78,45,91,82,49,94,83,51,100,87,53,100,87,51, -96,86,52,91,84,55,100,85,57,97,87,60,88,86,63,85,83, -61,80,80,51,90,78,55,106,89,61,117,98,61,116,98,57,111, -96,63,91,88,75,73,76,72,74,76,66,86,80,57,101,86,50, -103,89,46,102,88,56,99,87,63,101,88,64,111,92,56,103, -93,61,111,92,46,118,97,49,121,99,54,125,102,54,124,106, -63,119,106,58,113,105,61,103,100,66,87,91,73,79,83,69, -104,89,37,104,93,37,101,91,45,103,94,56,105,98,53,106, -96,57,99,102,48,101,100,46,114,103,51,129,108,53,128, -116,49,126,114,52,127,115,56,124,115,56,116,112,53,110, -108,57,107,103,65,99,99,60,82,88,58,75,86,63,75,84,57, -62,72,68,67,71,50,68,69,48,62,63,42,57,58,38,57,58,39, -58,63,38,56,64,34,54,63,32,55,65,37,54,61,38,63,62,39, -67,68,34,68,70,38,66,69,38,65,74,27,63,72,57,59,69,45, -60,70,35,61,72,36,59,73,52,70,88,97,115,128,136,163, -168,168,181,181,181,184,184,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,182,185,182,154, -171,172,96,133,143,49,95,99,48,83,78,49,70,66,43,64,66, -51,69,46,52,66,49,46,59,47,42,56,44,47,58,36,55,62,34, -49,63,31,56,65,29,70,69,27,81,76,24,81,78,37,75,75,47, -68,71,45,65,72,42,60,73,40,57,73,46,61,73,44,57,70,40, -54,67,42,55,68,43,67,72,33,62,69,42,59,66,41,58,64,42, -58,61,41,58,58,43,53,57,43,56,60,37,64,64,38,64,62,39, -62,61,39,64,65,37,69,66,38,66,66,39,68,69,38,69,70,34, -66,69,39,71,70,39,78,72,43,76,75,39,77,80,39,80,80,48, -81,78,42,81,80,45,83,82,46,89,86,47,92,87,48,92,86,51, -88,83,53,83,86,51,85,81,52,90,78,57,89,79,59,89,79,56, -83,78,54,82,83,48,89,92,46,96,95,47,96,93,55,84,82,68, -68,70,66,65,72,59,69,77,47,83,85,41,95,89,41,93,85,50, -91,84,58,91,87,57,99,92,50,97,91,59,95,91,39,102,94, -40,107,95,45,112,98,46,109,100,53,109,100,51,109,99,55, -101,93,60,85,84,67,74,79,64,92,89,32,96,95,35,89,91, -40,93,94,53,104,96,52,100,93,54,105,95,48,100,97,44,93, -100,40,102,105,39,115,110,41,113,111,45,110,109,45,110, -110,46,108,107,47,106,103,53,99,97,58,89,94,52,79,87, -55,71,78,55,69,77,50,63,68,64,64,67,45,62,67,43,55,61, -37,53,57,34,52,61,37,54,62,35,54,64,33,51,64,31,53,65, -36,53,63,38,54,63,37,60,71,34,60,71,36,59,72,37,66,77, -31,59,70,53,55,67,42,57,69,33,59,73,35,66,81,61,95, -116,121,151,156,160,177,178,179,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,170,182,174,125,154,155,73,110,125, -55,85,93,55,77,70,48,70,63,52,66,62,55,69,53,49,63,47, -44,59,46,47,56,50,55,61,39,50,63,38,54,62,30,68,67,29, -80,74,31,82,81,33,77,80,37,72,77,42,69,76,47,66,77,51, -60,75,48,63,74,44,59,71,41,56,68,44,54,66,43,64,66,44, -61,68,42,59,65,43,58,62,45,59,60,46,61,60,43,53,58,44, -54,56,40,60,59,38,65,63,37,62,62,34,62,63,38,69,65,40, -67,67,41,70,71,40,69,70,38,67,68,44,70,68,36,75,70,34, -77,75,40,73,75,43,79,79,41,82,79,44,80,78,49,80,78,53, -88,83,59,91,83,58,92,84,56,91,86,52,82,83,60,84,80,53, -92,83,48,92,83,55,91,86,36,84,84,38,82,84,40,82,83,46, -86,79,58,87,79,62,80,78,57,71,76,52,63,71,49,64,69,51, -77,73,58,90,80,51,92,82,52,88,80,55,88,82,60,95,84,62, -94,86,64,94,87,45,98,88,45,103,89,52,107,91,54,104,92, -62,103,90,60,103,90,60,96,87,61,82,80,69,74,75,75,92, -84,53,94,88,51,88,86,50,89,88,53,100,89,55,97,91,50, -102,88,59,99,92,62,89,91,54,95,93,53,108,98,51,108,102, -51,105,102,53,105,101,56,103,98,56,101,96,59,95,90,63, -84,86,62,76,80,61,68,73,57,65,69,57,62,71,45,64,68,47, -61,65,43,53,61,33,54,59,28,51,59,41,53,60,38,54,62,37, -52,63,35,55,68,34,56,69,27,57,70,25,61,73,32,59,71,30, -61,73,37,66,71,52,58,68,45,56,67,43,59,69,38,61,73,43, -77,87,92,122,133,143,167,169,172,182,182,183,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,179,184,180,147,169,172, -92,132,140,49,100,100,44,87,73,49,78,70,43,73,66,56,71, -56,52,67,51,44,63,49,42,59,51,52,61,38,53,60,38,51,62, -28,56,68,24,69,74,27,77,83,31,77,85,40,74,83,47,70,79, -49,70,77,53,72,73,53,70,70,46,63,68,43,61,67,46,58,64, -45,58,64,43,59,65,41,59,62,42,57,62,45,55,60,46,60,59, -43,54,57,44,50,55,39,52,57,35,57,63,34,59,63,34,60,62, -37,64,62,37,67,65,40,69,68,38,68,69,37,64,68,41,67,67, -36,71,69,32,74,72,38,72,72,40,73,73,34,79,77,40,80,75, -47,78,73,50,79,76,52,81,78,51,86,79,51,87,81,47,78,76, -54,78,78,48,81,80,40,79,78,46,87,84,32,91,80,39,91,80, -43,88,81,49,78,77,57,73,74,56,71,72,51,71,72,50,68,69, -51,64,66,51,65,67,50,70,76,41,75,78,43,74,76,47,77,76, -51,82,79,53,84,78,55,88,79,38,94,83,40,95,83,45,98,84, -47,93,84,52,90,86,52,88,85,50,85,83,53,74,75,62,65,70, -68,81,79,46,88,83,46,86,81,45,82,83,46,82,87,44,86,90, -45,81,88,50,86,88,55,88,86,52,85,84,44,94,88,39,95,94, -41,94,96,45,92,93,47,90,92,49,88,90,51,81,84,54,74,78, -54,68,73,53,59,66,48,52,65,48,62,66,40,61,68,45,57,64, -41,55,59,33,58,57,29,51,58,40,48,58,34,50,61,34,51,62, -33,55,65,31,59,68,27,63,70,27,62,73,32,62,68,31,67,71, -40,61,71,51,61,66,46,60,64,44,61,66,36,62,75,45,82, -108,105,141,146,153,176,177,179,184,184,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,182,185,182,164,180,171, -115,151,142,63,107,112,49,87,88,54,84,65,46,76,68,59, -74,55,58,73,54,48,66,55,46,60,59,53,60,45,56,61,41,54, -62,44,53,61,39,66,71,28,75,80,41,76,86,35,76,88,31,74, -86,33,73,84,38,75,80,40,74,79,31,68,75,36,64,70,45,59, -64,52,59,61,55,60,64,45,61,65,40,58,64,44,53,58,46,58, -56,45,56,61,39,53,60,33,53,60,32,55,60,33,56,59,36,59, -59,40,63,60,39,66,64,37,67,64,37,68,66,38,62,67,32,65, -64,39,69,67,38,71,69,44,70,69,47,72,71,42,76,74,35,78, -75,38,79,76,40,77,75,39,78,73,44,83,74,54,84,75,53,76, -74,48,75,74,48,77,74,46,76,75,48,84,76,49,89,76,44,93, -80,45,89,83,47,81,80,51,75,75,58,72,71,56,72,71,54,71, -72,52,68,72,48,68,72,45,66,72,37,68,70,42,69,68,43,71, -69,48,76,71,54,79,71,55,82,70,44,87,75,42,90,78,42,94, -79,43,88,78,51,83,78,49,82,78,49,80,78,52,70,74,52,62, -71,51,77,75,44,85,80,41,83,77,46,82,79,57,79,82,57,82, -85,47,77,83,53,78,80,55,83,80,54,81,77,55,88,78,48,88, -81,53,86,81,58,84,80,61,82,79,61,79,78,60,75,74,60,67, -69,58,61,63,54,55,61,52,48,59,51,58,64,26,58,68,36,54, -61,41,54,56,40,59,57,31,53,63,31,48,58,37,48,57,42,50, -59,41,55,65,36,59,68,31,63,68,34,59,70,30,67,73,36,68, -72,41,58,69,45,60,64,47,60,68,30,66,71,40,67,76,69,97, -114,126,158,161,163,182,182,182,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,185,184,176,183,177, -143,164,160,77,121,123,43,94,91,52,89,67,53,76,72,49, -78,55,61,81,62,58,70,63,45,64,63,48,63,46,49,65,40,53, -65,45,54,63,41,62,71,27,75,78,40,80,80,33,84,84,31,80, -82,32,74,81,35,70,82,37,72,84,32,65,82,37,62,77,49,55, -68,53,47,67,53,60,64,45,60,65,40,62,64,47,56,59,50,48, -60,44,54,61,39,54,62,35,52,61,32,51,60,32,51,60,35,54, -58,39,55,60,36,58,64,34,61,64,35,63,64,36,64,67,32,59, -65,37,61,66,34,67,66,41,69,64,43,71,68,40,75,73,34,76, -73,35,77,73,37,79,77,41,74,75,43,71,72,48,69,72,44,63, -74,41,64,74,42,67,73,41,69,73,44,77,73,44,77,73,37,78, -79,38,80,81,42,85,75,51,78,73,59,71,67,55,68,65,50,68, -67,48,67,68,45,69,71,44,75,73,41,76,68,46,76,63,45,73, -63,47,64,69,48,60,68,46,62,67,34,71,70,33,79,73,35,84, -74,36,79,72,43,78,71,41,78,72,42,74,72,45,70,70,49,64, -67,49,67,74,38,75,78,34,75,77,42,72,76,51,72,77,52,74, -81,39,73,79,48,71,74,48,73,72,46,75,71,49,78,75,41,83, -77,49,82,75,54,76,72,54,74,72,53,72,71,53,65,68,52,60, -63,51,53,58,48,49,57,46,46,55,47,59,60,22,58,63,31,52, -59,38,47,56,36,50,59,30,60,61,33,53,58,41,43,55,40,41, -57,37,50,62,33,59,67,30,56,70,31,57,69,29,61,78,37,54, -75,36,55,68,42,51,65,44,60,72,32,63,84,47,69,95,82, -122,130,140,171,171,175,184,184,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,185,184,182,185, -182,166,179,166,110,144,138,56,99,124,54,83,105,62,84, -81,53,80,74,61,82,62,65,81,52,51,75,50,49,60,66,50,65, -46,53,65,43,58,66,45,61,65,45,72,78,22,79,82,18,85,86, -23,83,88,23,77,88,26,74,87,36,75,86,43,66,81,48,67,83, -46,62,79,39,47,72,33,60,62,50,61,64,43,63,67,35,64,72, -33,53,68,32,55,61,43,55,61,44,53,59,44,52,58,45,52,58, -45,54,58,43,55,55,52,56,59,42,59,62,38,62,62,41,65,62, -54,61,67,39,60,60,50,64,62,46,70,63,44,70,61,55,71,63, -56,73,65,50,76,70,43,77,75,37,74,75,37,72,74,43,70,72, -49,62,73,43,61,70,41,66,71,41,68,71,42,76,71,42,77,74, -34,73,74,38,71,69,46,80,67,55,75,71,49,69,67,39,68,67, -35,67,68,35,64,66,38,61,62,43,66,60,45,74,65,40,84,70, -44,82,74,43,66,75,33,60,69,42,60,63,34,67,63,36,75,65, -40,79,66,39,75,67,39,74,66,37,75,68,42,71,67,45,65,65, -45,64,66,47,63,66,54,71,70,49,73,73,49,69,73,48,67,71, -48,67,68,50,65,68,49,66,68,44,70,69,39,74,70,41,74,68, -42,76,69,43,79,73,48,74,70,46,70,68,45,67,66,47,62,64, -51,59,60,52,50,52,51,47,50,57,46,50,59,59,56,41,57,61, -38,51,59,38,46,54,39,50,56,42,57,54,43,55,58,45,48,58, -47,41,54,44,50,60,40,61,68,31,56,71,31,60,71,39,54,69, -38,48,68,33,52,65,37,49,66,30,65,76,43,77,90,87,96, -110,124,144,149,155,177,178,179,184,184,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,184,179,185,179,141,168,161,76,133,142,26,110, -112,52,93,83,56,85,78,63,82,62,69,82,54,71,76,57,49, -67,70,47,68,47,53,71,47,56,68,45,58,65,43,66,73,18,73, -82,17,77,85,19,83,89,24,83,88,29,80,86,38,81,83,43,72, -80,48,70,80,45,67,77,39,63,73,39,48,69,51,62,68,44,61, -71,37,56,73,32,59,71,35,52,65,44,47,63,43,47,62,44,46, -59,44,46,57,43,50,60,44,52,53,49,55,58,41,57,61,36,59, -61,39,58,59,49,65,65,39,61,62,50,56,60,43,57,65,41,60, -61,50,60,60,50,59,62,43,61,67,36,67,74,34,68,73,33,69, -69,39,67,67,45,70,70,44,71,68,43,69,66,38,69,66,38,64, -67,37,68,74,31,72,76,40,67,71,46,62,65,48,63,68,43,60, -65,35,60,64,31,62,66,33,60,64,35,56,61,40,51,60,40,54, -64,33,62,69,36,69,70,36,74,73,35,72,68,45,70,67,40,71, -66,40,69,64,38,67,62,33,59,63,31,58,64,31,59,65,36,57, -64,39,53,61,39,56,64,44,61,64,51,63,68,45,69,69,45,71, -68,45,68,68,46,61,64,45,58,62,43,58,61,37,60,64,33,63, -66,36,61,69,38,65,69,40,68,69,42,67,67,42,64,64,40,61, -62,43,54,62,48,52,60,49,42,53,49,38,50,54,39,51,57,55, -58,41,51,59,35,49,57,36,47,54,39,47,58,42,44,54,39,53, -57,43,56,58,49,49,52,45,56,57,39,66,65,30,64,68,31,57, -68,37,52,59,31,57,61,31,54,63,36,57,67,33,64,83,48,86, -99,96,117,127,137,161,163,168,181,182,182,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,185,183,174,184,175,137,168, -163,70,128,163,66,98,127,59,86,97,65,84,72,70,84,57,75, -82,60,59,81,48,52,74,51,54,71,51,57,69,44,62,70,40,63, -69,38,70,77,35,74,80,37,78,80,43,82,86,47,81,88,38,82, -84,45,74,80,53,70,79,51,67,76,48,66,74,56,52,75,46,63, -70,45,65,74,53,55,70,45,61,72,37,59,73,39,52,67,46,48, -62,51,48,59,51,46,56,48,47,54,49,52,54,47,52,54,44,54, -56,45,56,58,43,58,60,38,61,61,39,61,64,38,57,62,40,52, -59,40,61,63,39,62,63,46,60,64,40,59,66,33,62,68,31,66, -68,36,69,67,44,67,67,36,65,66,37,69,66,33,71,68,30,73, -69,33,66,68,37,66,69,38,68,71,41,68,72,43,64,69,41,59, -63,49,57,60,48,59,61,44,61,63,41,61,65,38,57,63,35,50, -59,40,49,57,42,55,59,44,62,62,45,68,64,44,68,63,46,68, -64,43,71,67,37,73,69,34,70,65,45,61,64,37,55,62,31,53, -60,33,51,57,39,48,54,46,50,56,52,57,59,51,57,61,54,63, -62,46,70,65,41,66,66,40,56,62,43,56,61,40,56,61,38,57, -61,37,62,65,35,56,64,42,58,63,43,61,63,44,61,62,40,61, -61,37,56,59,40,48,55,51,48,57,43,41,53,37,39,52,37,40, -52,42,54,57,39,50,57,41,48,54,38,48,56,37,47,59,37,45, -58,35,53,61,22,60,66,22,58,65,21,60,64,23,66,67,29,60, -64,37,49,59,44,52,58,34,63,65,30,60,68,44,63,71,36,73, -85,89,103,113,123,141,147,153,173,174,176,184,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,182,185, -183,172,183,178,132,160,172,67,127,152,51,106,115,54,94, -82,60,92,65,66,87,63,68,88,47,61,82,51,57,76,50,58,76, -46,59,73,43,63,74,43,65,77,37,70,82,41,70,79,45,77,85, -47,83,89,38,78,87,45,74,83,54,70,78,50,67,79,51,60,77, -59,63,77,43,57,72,45,63,71,48,63,69,41,62,73,36,64,74, -36,61,71,44,54,64,48,47,60,48,45,58,47,45,55,48,44,54, -46,48,55,43,49,55,43,50,56,42,56,59,39,57,59,41,58,61, -36,58,62,39,52,58,38,50,61,37,60,62,40,59,62,34,58,64, -31,60,66,32,61,64,37,63,62,42,65,65,37,61,65,36,59,66, -30,61,68,25,66,68,27,63,66,36,63,67,35,64,67,38,63,68, -40,61,67,39,57,61,47,52,58,41,54,58,37,58,60,35,60,62, -34,60,62,35,53,57,39,48,54,40,48,55,42,51,59,45,54,63, -44,58,59,38,55,59,37,59,63,33,66,66,33,65,61,41,61,63, -38,56,64,36,53,63,36,49,57,37,45,51,40,45,51,46,48,55, -47,45,56,50,49,58,45,55,63,40,58,63,38,47,60,42,49,62, -39,50,63,39,51,63,39,55,64,37,50,62,42,46,59,40,47,57, -38,50,58,36,51,58,34,51,56,39,45,49,46,42,53,38,39,52, -32,42,54,33,45,55,41,48,60,38,44,57,41,42,54,38,43,56, -35,44,57,31,48,58,31,56,59,14,63,64,13,61,66,16,58,68, -21,55,68,27,46,64,33,39,57,40,53,62,34,71,71,31,69,77, -54,85,97,67,104,116,125,139,145,151,168,170,171,179,181, -181,183,184,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,182,185,182,165,180,173,98,152,165, -75,129,140,58,103,110,55,92,83,67,88,57,68,87,59,68,87, -46,65,85,41,60,80,39,62,78,50,65,77,51,66,79,44,67,79, -42,69,79,45,75,82,46,82,88,41,80,89,41,82,88,40,76,81, -44,70,79,54,60,76,57,61,75,49,58,75,50,61,70,47,68,73, -49,61,72,44,59,73,41,61,73,40,60,72,43,50,64,43,45,59, -46,45,56,48,41,53,45,43,53,46,46,56,47,47,56,43,52,57, -38,54,57,38,55,59,34,58,62,37,55,62,39,44,60,38,58,60, -39,59,62,37,57,63,37,56,62,38,60,64,40,63,65,40,62,64, -42,59,64,36,55,65,32,55,67,30,60,66,32,58,65,40,57,66, -42,60,66,40,59,64,36,57,63,40,55,61,44,52,58,39,54,59, -36,60,62,36,61,63,36,59,62,37,54,61,37,49,60,36,46,57, -35,44,58,36,43,57,42,55,58,40,52,59,38,53,59,37,57,60, -38,61,62,41,59,62,41,53,61,36,50,60,35,49,59,36,49,57, -36,51,57,38,49,58,42,46,58,39,48,60,36,50,61,35,56,62, -35,51,62,39,51,63,38,50,62,41,48,61,41,49,61,42,49,60, -47,46,56,42,44,54,38,45,53,38,45,53,42,47,54,46,48,52, -40,39,50,30,38,53,30,42,56,32,47,57,40,43,59,48,39,53, -43,39,54,43,40,56,42,43,55,36,45,54,35,54,57,24,63,65, -25,64,70,30,58,69,35,52,68,42,42,63,44,38,56,40,58,68, -33,82,85,44,101,108,83,125,134,130,151,157,159,170,173, -174,179,180,181,182,182,183,184,184,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,186,184, -178,186,180,149,173,169,99,147,159,70,119,139,55,98,97, -65,95,68,70,86,63,66,85,53,69,86,46,71,84,44,69,81,52, -64,78,52,66,79,46,72,83,46,70,80,43,74,82,42,82,87,39, -85,91,35,85,90,40,75,82,50,68,80,60,67,80,52,64,76,50, -62,76,52,63,73,51,67,72,48,66,73,43,60,73,42,59,72,39, -62,74,40,61,72,40,56,66,38,53,63,39,46,58,38,41,54,39, -40,54,40,41,55,39,46,58,39,52,59,36,55,61,33,58,63,35, -56,62,34,52,61,31,51,57,39,53,60,41,51,61,40,51,61,40, -52,60,41,57,62,44,57,62,43,59,65,38,59,66,36,57,63,34, -57,61,38,52,61,41,51,61,42,53,62,37,59,63,35,57,60,40, -51,60,44,47,58,40,49,58,39,53,60,40,55,61,41,55,62,39, -50,61,39,48,61,37,48,61,37,46,60,36,45,55,41,45,50,48, -46,55,37,48,56,36,49,56,37,50,57,33,53,61,39,55,63,34, -54,63,32,49,58,29,49,57,28,53,59,32,52,60,34,51,61,32, -55,64,30,56,63,30,58,63,30,57,64,41,56,64,39,55,63,40, -52,61,38,49,60,34,46,57,40,44,53,37,44,52,37,43,52,40, -39,49,42,39,48,43,45,51,39,44,53,30,43,53,28,43,56,30, -48,56,37,36,52,56,37,50,45,39,52,47,37,51,46,42,53,41, -38,52,41,48,57,36,60,66,39,65,72,45,58,69,51,49,65,57, -38,59,51,43,59,44,75,83,50,112,116,81,145,147,128,161, -166,166,177,179,180,182,183,183,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,186,184,176,185,178,143, -170,171,94,144,158,56,111,123,45,96,84,75,93,63,62,88, -58,64,84,51,77,85,50,81,87,50,75,84,44,70,81,42,71,82, -44,75,84,45,74,81,40,77,85,38,79,90,37,75,88,44,70,84, -54,67,81,55,72,83,46,68,79,48,63,77,49,62,75,46,65,76, -42,68,76,38,61,75,40,56,71,37,57,70,34,62,71,35,62,70, -32,60,68,33,51,64,34,46,61,35,44,59,37,42,56,39,42,54, -42,48,57,40,51,59,37,53,61,33,54,63,30,59,62,28,54,60, -35,47,59,34,48,59,35,49,57,36,49,55,39,48,56,43,50,59, -44,50,59,42,57,63,42,59,61,38,55,58,39,54,56,37,52,56, -37,54,58,36,58,60,36,60,58,38,52,57,38,47,56,34,46,56, -34,46,55,36,49,58,40,51,59,39,48,57,37,49,55,36,48,55, -36,48,57,38,49,55,42,42,51,46,40,53,38,43,53,37,43,53, -35,49,54,32,49,56,39,50,58,36,53,63,36,52,62,34,52,61, -33,53,60,33,53,61,33,53,65,36,53,65,34,54,64,33,60,64, -32,56,61,39,53,61,38,52,60,39,50,58,38,49,58,33,42,56, -37,42,54,34,43,54,35,42,53,37,40,51,41,37,48,41,33,47, -37,41,50,32,46,53,32,47,57,34,51,56,33,32,50,51,38,48, -39,43,50,39,44,50,38,46,52,35,40,56,39,46,58,35,56,63, -37,62,70,43,56,70,49,44,64,52,40,59,46,56,68,50,103, -109,80,145,145,126,170,171,164,179,181,181,184,184,184, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,181,185,182,173,185,176,138,169,167, -81,130,156,50,102,119,71,93,86,67,94,71,65,85,64,72,83, -62,82,90,48,84,92,43,80,91,42,73,86,44,74,84,50,76,84, -48,78,87,38,78,88,43,74,87,51,73,87,49,70,86,42,71,83, -51,68,80,51,65,82,46,63,79,45,61,76,46,63,75,49,62,77, -45,57,71,43,57,70,39,64,73,36,67,74,36,65,73,43,60,72, -40,54,69,37,52,67,40,48,62,39,46,59,38,46,56,48,48,57, -47,51,60,40,52,61,32,59,63,33,62,68,35,57,68,33,54,64, -33,57,63,36,55,60,37,51,59,38,46,57,35,45,56,39,50,57, -44,54,59,46,55,58,57,61,62,37,58,61,37,58,61,35,60,61, -34,63,60,37,61,65,31,56,64,26,53,62,27,52,60,31,50,57, -35,49,57,38,50,58,35,53,58,41,52,57,41,48,56,39,47,56, -37,45,57,32,40,55,30,40,53,30,41,52,35,45,50,45,49,53, -50,45,52,46,43,52,43,43,54,43,46,55,42,49,56,42,49,57, -41,45,58,37,45,59,34,47,60,33,55,62,37,55,62,40,50,60, -43,48,57,44,47,55,45,45,52,43,38,52,46,39,50,36,42,53, -36,42,53,40,43,54,47,42,54,49,36,51,42,38,47,45,42,48, -49,44,51,43,51,54,32,34,52,32,40,52,36,46,55,36,49,55, -29,49,56,31,46,60,29,48,58,31,57,63,34,63,72,38,56,71, -45,44,64,50,45,65,44,76,88,61,131,134,102,164,164,149, -180,180,178,184,184,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -184,185,184,182,185,184,168,181,181,128,157,173,69,136, -141,60,112,101,63,104,80,63,95,73,57,87,62,63,95,46,80, -95,45,85,95,44,80,92,49,65,82,46,69,86,47,82,90,39,84, -87,42,70,84,48,71,86,48,68,85,42,65,80,49,76,80,53,75, -81,47,74,80,47,67,76,47,60,75,48,64,75,45,61,73,45,56, -69,38,60,71,35,65,74,37,70,72,45,72,72,44,66,73,42,61, -72,44,54,69,43,53,67,42,50,60,51,46,56,46,48,57,37,54, -60,32,57,62,32,56,63,31,58,65,33,60,66,37,58,64,38,56, -62,39,54,62,40,50,63,38,46,58,39,42,53,37,40,52,38,39, -49,48,46,58,32,53,59,34,55,59,32,52,61,30,50,59,32,58, -62,28,62,66,30,65,69,35,61,68,38,55,64,39,52,59,40,50, -60,37,48,57,40,47,58,42,46,61,42,49,61,40,49,59,33,47, -60,32,48,58,33,45,54,37,41,48,44,39,49,47,40,50,44,43, -52,44,45,52,43,43,51,39,45,52,39,49,51,38,52,53,37,54, -56,35,54,58,33,54,58,35,48,60,38,47,59,42,45,57,42,42, -56,42,40,51,43,38,49,45,42,48,36,46,49,35,43,48,38,42, -52,46,38,54,49,35,54,44,33,49,46,35,47,47,38,48,40,45, -53,31,46,53,35,40,52,38,40,51,34,44,54,29,45,55,31,55, -57,29,56,56,32,58,58,31,66,69,37,61,67,44,50,60,50,63, -69,53,103,100,79,149,148,123,173,174,163,182,182,181,184, -184,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,184,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,182,185,182,168,183,175,131,169,153,100,134,155, -83,106,139,71,96,105,61,90,69,59,85,70,75,86,63,84,91, -60,84,96,58,71,89,46,67,84,44,78,83,53,86,88,48,74,90, -42,69,86,43,69,84,49,65,82,44,74,77,53,75,81,45,76,83, -42,72,83,41,62,79,41,66,78,42,63,74,50,59,68,52,57,65, -48,64,71,47,70,74,42,74,77,34,71,80,35,67,81,33,60,78, -31,57,72,44,55,68,42,53,68,29,53,64,27,55,62,32,57,60, -40,57,61,43,56,62,36,58,64,34,62,68,40,60,68,39,57,67, -35,52,64,38,52,65,38,47,60,33,44,58,33,42,55,36,42,53, -33,49,54,30,53,57,31,50,60,27,50,60,26,58,60,40,61,62, -46,62,64,49,61,64,49,57,63,49,55,61,51,52,60,44,52,62, -38,47,60,33,43,59,31,46,59,33,48,61,17,48,62,24,50,62, -27,52,64,28,50,61,34,45,59,33,43,56,33,45,56,37,48,56, -41,49,57,42,51,59,43,55,58,46,58,59,50,60,60,53,59,61, -53,57,60,51,48,58,49,47,57,47,45,59,41,42,57,36,41,54, -36,38,49,45,44,51,36,49,55,27,46,54,22,45,57,33,38,54, -47,32,49,52,31,46,51,34,47,39,38,50,31,44,50,38,43,48, -43,37,48,40,39,51,31,45,55,30,46,54,42,56,58,31,58,60, -29,60,63,27,65,68,31,60,68,36,56,69,45,79,86,57,123, -124,75,160,160,129,177,177,170,183,183,182,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,183,185,184,175,182,180,145,166,175,102,143, -155,71,121,117,60,104,79,50,88,69,59,86,55,69,88,50,78, -91,50,83,92,52,77,86,50,70,83,51,74,89,43,81,91,46,77, -86,48,70,83,51,72,81,47,60,80,49,65,80,42,70,81,40,70, -81,39,66,77,42,64,79,41,63,77,51,60,72,54,57,71,51,56, -74,46,60,76,40,67,78,34,71,81,37,72,85,40,65,82,38,57, -74,46,53,72,43,60,73,36,62,71,36,58,67,37,49,65,41,48, -64,41,50,64,37,53,66,35,52,64,34,56,67,37,60,69,39,64, -66,44,57,66,42,54,64,40,51,63,40,47,59,42,48,57,40,48, -58,34,52,61,35,52,63,32,54,63,31,55,59,38,52,56,38,51, -57,39,52,58,40,51,59,42,49,58,44,50,56,40,51,58,36,54, -62,37,54,60,37,53,60,38,54,68,27,53,67,31,54,66,32,54, -66,33,53,64,38,53,62,40,51,61,41,50,59,42,48,55,41,47, -55,39,46,57,40,46,57,41,46,56,42,46,56,44,45,57,44,47, -57,43,48,54,45,44,53,42,45,52,36,46,52,33,45,52,35,42, -47,45,44,49,33,51,52,26,56,54,26,51,53,34,40,49,46,35, -42,49,31,39,47,34,45,38,34,50,30,34,49,33,34,47,38,35, -45,37,42,50,32,48,57,32,44,56,42,55,65,35,54,66,31,54, -68,29,60,72,31,65,75,43,80,83,62,113,104,83,142,142, -102,163,165,137,177,179,172,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,184,185,184,182,185,183,176,184,178,153,175,166, -117,148,152,85,114,135,60,94,99,60,82,85,68,82,74,76, -85,67,80,87,61,80,90,50,71,89,33,70,82,52,79,87,46,81, -91,42,73,89,37,75,85,44,62,81,54,64,79,44,70,79,47,71, -81,50,68,79,42,64,79,47,64,80,46,66,81,47,62,78,47,58, -74,45,58,73,43,66,74,46,72,81,37,70,82,41,66,81,46,61, -79,45,56,74,47,59,69,47,64,72,42,64,75,35,53,71,34,50, -66,40,50,62,43,52,61,47,53,61,50,52,58,49,54,60,48,59, -61,47,54,61,44,53,62,41,51,63,38,48,61,38,48,56,49,48, -57,40,52,59,42,51,59,41,53,59,36,54,60,37,53,61,31,52, -60,29,51,59,31,48,57,33,46,55,35,47,54,34,48,55,32,51, -57,35,52,58,35,53,59,36,50,59,36,48,60,31,49,59,32,48, -57,34,45,55,35,45,51,38,44,52,44,44,51,47,45,50,47,44, -50,43,42,51,39,42,51,40,41,50,43,41,49,46,40,50,46,42, -50,47,45,49,49,42,48,49,41,45,49,42,44,48,43,47,40,43, -51,33,46,52,33,52,52,32,58,55,32,51,54,33,37,48,39,33, -42,43,31,42,31,34,46,36,32,45,40,33,44,45,34,47,35,36, -46,34,44,51,33,47,56,32,43,55,41,56,67,33,55,66,35,56, -66,38,64,74,42,78,87,48,103,110,63,138,136,92,155,154, -123,164,166,146,180,181,174,184,184,184,184,184,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,185,184,178,184,183, -160,172,177,115,148,157,74,123,120,51,96,89,46,88,69,52, -90,61,59,87,54,73,91,50,81,91,40,68,81,51,65,85,40,77, -92,41,80,89,40,75,87,45,63,81,54,62,77,41,67,79,44,69, -78,46,70,79,42,68,78,48,67,78,45,70,79,46,70,75,48,68, -72,48,60,71,45,53,73,40,66,78,32,72,79,40,69,77,45,66, -77,45,62,73,49,58,69,47,57,70,39,62,74,36,65,70,42,60, -66,45,56,63,47,50,60,47,45,57,45,46,59,46,47,58,45,47, -59,39,50,58,41,51,58,39,52,60,37,52,58,38,49,53,46,47, -56,38,49,59,41,50,57,39,56,56,35,50,58,31,52,61,29,58, -64,33,61,64,38,58,59,40,54,57,40,50,57,37,45,60,36,46, -61,37,48,62,37,52,61,39,51,60,39,48,62,34,49,61,35,50, -58,37,49,56,40,47,55,44,44,53,46,41,50,46,40,49,45,39, -50,42,40,53,39,40,52,40,37,49,41,35,49,44,37,50,45,41, -50,47,42,48,47,38,46,47,35,44,46,32,43,43,35,45,37,39, -47,29,43,52,33,42,55,31,41,60,29,36,55,27,36,49,38,32, -42,41,29,44,30,35,47,37,33,44,40,33,42,43,37,45,35,40, -46,34,43,49,31,47,52,30,47,52,41,63,62,34,61,63,36,61, -62,38,77,75,49,106,102,74,134,132,98,152,154,121,158, -163,136,168,170,150,178,178,173,183,183,183,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,185, -184,179,184,181,156,175,164,119,150,155,83,119,125,61,98, -101,51,83,86,58,81,79,70,81,74,83,86,68,75,90,46,66, -84,52,73,85,55,82,90,52,78,93,39,65,84,48,64,78,51,67, -78,48,70,80,43,71,81,42,70,81,46,66,76,49,66,73,51,72, -75,53,72,75,49,64,74,46,52,68,48,62,68,47,69,71,55,69, -74,55,65,77,41,62,73,46,59,72,35,57,69,39,58,66,42,63, -67,39,64,73,35,59,68,37,55,66,40,48,63,38,43,57,38,44, -54,47,43,52,47,47,53,46,49,53,43,51,57,39,54,61,32,51, -61,29,47,58,31,47,57,36,49,55,36,56,57,32,52,59,31,51, -58,33,55,59,38,60,61,43,63,64,41,62,67,31,57,70,11,49, -68,24,45,62,32,46,60,36,51,59,41,51,58,45,47,60,39,48, -58,38,49,57,38,50,57,41,48,57,37,45,56,38,43,54,37,42, -53,37,40,52,40,40,51,44,40,51,42,37,50,38,34,46,41,33, -44,50,37,43,54,37,42,47,33,41,43,33,42,41,32,42,37,32, -42,33,36,44,32,40,49,30,42,53,37,37,51,43,32,46,40,34, -46,37,33,45,35,30,44,30,35,47,35,33,46,38,33,44,43,36, -45,30,41,47,34,43,49,34,47,51,33,48,54,34,60,60,25,59, -63,26,63,69,16,92,97,36,130,132,79,154,154,120,164,166, -145,166,168,151,170,173,159,179,180,174,184,184,183,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,184,178,183,181,159,172,176,120,152, -152,83,128,127,59,102,102,48,87,79,51,86,70,63,86,63, -82,89,47,80,82,57,76,81,55,78,87,49,86,92,42,85,83,56, -69,80,54,65,79,47,71,81,44,76,81,46,72,81,47,68,79,53, -62,74,53,64,76,52,70,79,52,71,76,52,58,70,53,46,70,43, -48,71,47,54,70,48,65,74,38,70,66,46,65,70,36,64,69,42, -60,63,42,59,64,38,58,71,31,63,70,39,61,66,42,54,64,40, -48,61,42,43,55,49,41,52,47,38,53,45,40,54,41,41,55,35, -45,59,28,51,61,27,57,58,35,51,56,38,43,57,36,45,59,29, -51,59,30,52,59,33,51,59,36,47,58,35,49,62,34,57,67,27, -70,69,17,66,62,29,60,58,37,54,56,39,50,55,41,44,55,40, -39,58,33,44,61,37,48,61,40,50,60,42,49,61,39,46,60,40, -45,58,40,46,57,41,46,54,43,45,50,46,41,50,42,41,50,40, -37,48,45,30,45,50,22,46,51,25,43,43,26,42,40,30,42,40, -33,43,38,36,44,36,39,47,35,38,51,30,38,54,36,31,47,38, -30,44,39,33,45,37,33,45,37,36,48,36,35,47,36,31,46,38, -30,44,42,33,50,32,37,48,33,42,49,34,49,51,34,50,55,36, -59,57,22,66,61,27,81,74,28,121,116,65,153,152,115,168, -170,151,176,177,167,177,178,171,179,180,174,180,180,179, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,183,185,183,178, -185,179,161,177,169,131,157,152,93,126,129,64,100,98,56, -86,81,60,77,78,78,79,62,84,87,49,78,84,45,76,83,49,83, -86,48,91,93,39,76,93,34,67,81,44,69,75,56,77,79,54,72, -78,52,69,80,50,67,82,48,65,79,45,68,76,49,77,79,57,66, -83,33,50,76,39,46,68,48,49,63,52,60,64,48,72,70,36,66, -70,34,64,69,37,65,68,39,63,68,34,58,70,34,61,69,35,66, -72,38,57,69,33,50,66,35,48,61,44,46,58,46,39,55,42,41, -55,43,42,54,43,43,52,50,50,55,41,57,57,35,55,61,34,45, -59,33,46,57,40,52,56,47,54,58,46,53,60,46,49,58,45,46, -56,42,51,55,41,68,55,52,66,56,47,64,60,43,60,62,37,57, -64,32,48,62,36,41,59,36,40,57,37,42,55,38,48,56,46,49, -56,51,45,55,53,43,53,52,45,53,51,47,53,47,48,54,42,44, -54,36,44,54,36,41,54,37,35,53,38,24,49,42,25,41,52,25, -39,52,32,43,49,38,47,41,42,50,39,45,53,39,43,55,43,39, -53,46,33,48,45,31,45,44,35,46,46,35,46,48,37,46,45,37, -49,42,33,48,41,33,46,52,33,47,48,35,44,42,42,50,28,50, -56,23,52,56,40,61,60,15,73,73,10,107,105,42,147,147, -106,171,171,152,180,181,176,184,184,182,184,184,183,184, -184,184,184,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,184,179,180,180,150, -164,164,93,129,126,58,105,94,43,91,79,52,89,56,68,92, -46,72,88,47,71,82,48,70,88,44,90,90,38,90,93,38,88,90, -58,72,76,61,64,79,50,67,81,54,66,80,49,67,81,47,69,82, -49,67,77,50,66,76,53,71,85,35,65,76,45,55,66,50,47,63, -52,47,66,44,58,70,30,65,71,33,65,69,38,65,65,37,65,66, -34,60,68,33,61,69,34,63,70,35,63,73,37,57,67,39,54,63, -49,49,62,51,44,60,49,43,56,46,38,54,42,32,53,46,44,52, -37,46,56,30,52,61,33,56,61,38,52,56,42,51,55,47,51,56, -44,54,58,45,55,58,47,53,58,46,52,58,45,48,55,47,48,56, -43,48,60,38,48,61,31,50,64,29,59,59,37,50,58,39,50,56, -41,52,54,42,51,52,45,48,53,50,43,53,52,40,52,52,40,52, -50,41,52,46,42,53,41,42,54,34,41,54,34,40,53,36,42,54, -42,41,51,51,35,42,59,30,42,57,28,42,49,35,46,40,43,50, -40,48,50,39,49,51,44,47,52,49,43,51,51,39,50,51,40,51, -52,39,46,53,39,47,48,41,50,46,39,49,45,32,45,52,32,43, -46,35,44,43,43,51,29,53,60,27,50,57,41,72,58,20,99,91, -33,139,139,96,170,171,152,181,183,178,185,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,184,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,184,163,174,167,95,133,114, -55,101,95,52,79,91,62,77,92,74,84,78,74,84,56,66,81, -57,87,84,55,88,89,45,86,89,49,78,86,52,65,81,45,66,79, -55,66,80,54,66,80,50,69,81,49,69,81,42,70,83,37,69,81, -43,67,78,46,60,72,49,48,65,48,43,58,57,52,59,44,59,63, -41,63,66,41,65,66,38,65,66,32,61,68,43,61,67,44,64,69, -43,61,70,40,58,69,41,56,66,45,48,64,35,44,63,34,46,61, -40,41,58,42,31,53,36,40,45,52,42,50,42,47,54,37,52,57, -34,55,61,34,51,56,42,50,54,43,53,55,43,54,58,44,53,58, -43,52,59,42,50,59,41,49,56,47,50,61,43,48,61,32,46,58, -34,57,55,45,50,57,46,48,54,45,52,54,46,55,56,47,51,59, -38,46,60,38,44,58,40,44,58,43,44,56,48,45,53,54,44,52, -52,44,56,42,44,57,39,44,57,37,44,58,33,41,56,29,34,50, -39,32,47,42,32,44,36,36,43,31,48,51,36,49,53,38,47,55, -38,44,56,35,42,57,34,42,56,35,43,55,30,41,52,38,41,52, -38,39,51,34,32,48,38,34,47,37,36,49,27,46,53,34,53,57, -40,50,59,30,92,83,15,134,129,76,166,166,147,181,182,177, -184,184,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,153,170,160,100,128,123,61,96,105,42,82, -91,50,83,73,65,87,58,74,81,59,70,85,53,79,88,43,90,89, -48,84,85,50,66,86,48,70,78,53,72,76,50,70,79,49,66,80, -46,66,81,43,73,84,40,79,80,44,73,79,47,62,76,49,53,71, -51,48,60,56,39,60,42,46,62,38,54,63,38,58,64,34,65,65, -32,57,64,41,55,67,43,57,68,41,58,66,37,56,63,36,54,62, -40,55,63,34,51,61,33,47,59,38,41,58,42,40,56,42,37,45, -49,36,48,39,38,53,36,43,58,33,51,58,33,51,56,43,46,55, -42,46,54,40,50,55,40,54,56,39,55,56,39,52,56,37,48,52, -41,50,56,38,50,60,32,48,59,36,46,56,42,42,57,44,42,55, -44,42,53,43,45,55,43,43,58,38,44,60,40,44,58,41,43,56, -43,40,51,45,38,47,49,36,46,47,38,50,38,38,51,36,39,52, -34,43,56,32,50,57,31,42,52,42,34,47,42,31,46,36,34,49, -32,39,51,33,41,52,35,42,54,35,43,56,34,41,55,32,41,55, -34,42,57,32,40,54,38,37,50,36,37,51,35,36,49,38,38,47, -36,44,53,29,51,57,36,54,55,36,70,63,34,112,112,40,158, -158,127,180,180,173,184,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,184,184, -184,184,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,179,183, -179,145,163,147,95,129,104,55,103,78,46,87,75,54,81,75, -72,82,64,69,85,51,70,79,57,84,83,49,91,92,41,66,87,36, -70,80,53,75,82,47,75,85,38,69,83,32,63,80,33,68,79,42, -82,83,44,76,84,37,65,80,37,57,76,41,58,71,49,45,65,41, -45,62,43,49,59,46,53,59,44,64,63,40,59,65,44,52,62,39, -52,61,40,56,61,44,56,61,41,52,61,34,53,59,43,54,61,41, -50,61,38,45,60,35,41,58,33,43,54,42,40,55,37,36,53,33, -34,51,31,42,50,41,44,50,46,41,51,43,40,49,40,44,50,39, -51,54,40,56,58,38,55,58,38,53,56,38,52,57,35,48,57,33, -46,58,32,45,57,38,40,55,38,40,53,40,40,52,39,40,53,33, -36,50,40,37,52,40,40,54,39,39,51,37,38,49,38,37,48,40, -35,47,30,35,47,30,38,49,34,38,48,36,38,49,46,46,53,38, -46,55,32,41,53,31,37,51,34,35,51,38,38,49,41,39,50,39, -41,52,39,40,52,38,40,53,38,40,54,36,40,55,34,41,56,33, -37,51,32,37,51,36,39,52,41,45,55,31,50,61,31,56,65,18, -70,75,15,105,102,38,147,149,100,175,177,167,184,184,183, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,184,184,184,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,178,181,178,142, -162,146,97,132,104,66,103,84,54,88,78,57,84,68,68,88, -55,68,82,57,68,79,46,80,89,45,86,92,40,71,81,55,64,79, -49,70,84,41,73,84,32,73,81,31,68,76,37,67,76,41,70,82, -38,71,82,41,67,78,43,62,70,46,56,69,42,52,65,44,50,62, -46,48,60,42,50,60,38,61,65,33,60,65,34,57,64,39,52,60, -41,53,62,40,52,64,36,43,59,49,48,60,45,51,62,42,52,62, -35,54,61,31,51,58,39,49,58,34,47,59,32,46,56,31,49,51, -31,42,50,37,37,49,36,34,50,35,32,49,35,34,50,34,38,51, -32,40,51,31,41,54,36,42,56,38,41,56,37,44,57,36,43,54, -40,42,54,39,40,52,41,38,51,40,41,52,36,41,50,41,40,49, -39,41,49,36,43,50,34,39,46,34,38,46,35,40,53,28,43,53, -35,47,52,37,43,48,35,34,43,40,33,48,33,41,53,27,43,55, -32,40,53,36,37,50,36,37,48,42,35,48,41,37,50,39,40,52, -36,42,55,35,43,57,34,44,57,35,43,56,33,42,55,35,40,55, -41,37,55,51,53,59,27,58,65,31,75,77,23,113,115,52,149, -149,104,174,175,159,184,184,182,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,184,184,184,184,184,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,178,182,178,152, -161,152,111,135,111,80,108,81,67,95,70,63,88,62,69,85, -57,72,86,59,70,83,52,85,89,50,80,89,61,65,82,57,59,75, -49,70,82,50,76,84,49,73,81,48,67,75,45,61,74,45,66,76, -48,68,75,48,68,74,49,60,70,44,55,67,45,54,66,43,51,64, -38,47,60,38,56,62,34,63,68,34,61,68,34,57,67,36,53,65, -36,52,64,38,43,59,43,43,56,40,44,57,38,48,60,39,56,61, -39,54,60,40,52,61,32,50,61,31,49,59,33,57,60,39,53,59, -37,47,57,29,43,56,28,38,54,30,36,53,33,37,52,34,36,52, -33,33,51,35,32,51,38,30,50,39,34,49,40,38,48,42,35,48, -40,34,47,41,31,46,37,35,46,32,39,49,38,39,48,39,39,48, -38,42,50,40,42,50,40,41,51,41,38,52,39,35,50,43,40,51, -41,41,50,36,37,49,35,32,48,32,38,51,35,39,53,40,34,52, -40,35,52,37,42,52,37,36,49,38,33,47,35,38,52,35,42,56, -35,44,58,35,46,57,36,45,57,37,45,58,38,42,57,40,40,56, -43,65,70,29,79,80,28,116,116,60,154,154,114,174,174,159, -183,183,181,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,184,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,184,184,181,183,181, -169,173,166,128,148,117,91,116,70,74,100,57,69,91,58,70, -87,57,72,86,54,77,87,56,75,87,60,71,87,55,67,83,53,63, -77,53,64,77,56,66,79,53,71,81,48,65,77,51,65,75,48,66, -74,45,65,72,46,64,74,47,57,70,44,54,67,41,54,66,39,52, -62,39,50,60,45,54,62,42,62,69,43,60,69,41,55,66,39,52, -65,40,48,61,43,46,58,34,43,56,35,42,56,40,46,57,43,47, -56,43,46,59,36,46,61,32,45,59,31,45,55,44,50,59,39,55, -64,35,56,66,35,51,63,32,48,60,29,48,58,28,44,55,35,39, -53,36,36,51,38,32,50,40,32,48,42,33,46,46,30,45,44,29, -43,42,29,44,37,34,48,32,36,47,35,36,46,30,37,47,28,38, -50,31,39,51,38,39,50,43,32,47,40,28,45,43,32,48,42,38, -51,38,39,52,37,38,50,45,38,50,42,37,50,41,32,51,39,30, -49,42,41,52,34,43,56,37,39,54,36,39,52,34,43,56,32,44, -56,26,46,56,32,47,58,36,49,61,37,48,62,29,56,69,25,81, -87,42,114,114,57,153,154,119,174,175,161,182,182,180,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,182, -183,182,168,174,166,130,149,117,93,122,81,77,102,63,74, -96,59,71,91,53,73,89,53,76,88,55,74,88,51,73,89,53,67, -81,52,63,77,51,62,76,49,60,82,47,63,80,51,63,79,47,64, -76,42,66,73,41,58,71,42,59,68,43,58,67,41,55,64,37,57, -64,40,54,60,42,48,58,37,49,61,37,55,67,42,56,66,40,57, -65,39,50,60,42,48,63,37,46,60,37,43,55,38,38,55,40,39, -55,40,41,55,34,42,57,30,45,58,31,48,54,39,45,55,34,43, -57,32,46,61,34,49,64,35,51,64,33,53,64,33,51,59,38,48, -55,35,44,52,35,41,50,37,38,50,42,36,47,47,33,46,42,35, -45,43,34,45,39,30,46,35,32,47,38,36,48,32,42,51,31,44, -52,32,39,49,35,35,47,40,36,46,38,33,44,38,35,45,38,36, -48,36,40,51,35,38,49,46,38,49,43,39,49,41,37,50,38,33, -49,40,39,51,35,44,55,37,44,55,37,41,54,33,45,58,32,46, -59,28,47,56,31,47,60,36,49,62,35,62,69,32,92,91,48, -122,118,84,152,154,122,174,174,163,182,183,179,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,184,184,180,182,179,166,172,163,140,155,134,100, -121,90,90,112,71,83,105,55,79,99,40,81,95,44,79,93,52, -74,90,53,71,87,50,69,85,47,68,84,48,56,78,57,59,76,57, -59,74,51,62,74,50,69,75,52,62,76,43,59,69,36,58,66,43, -57,63,48,58,65,48,60,65,48,55,65,44,51,63,44,50,61,47, -55,63,52,61,67,48,59,70,36,52,70,26,51,67,26,49,63,29, -42,59,34,40,57,32,42,58,33,43,57,32,44,56,32,50,54,37, -50,59,38,45,58,36,41,55,35,39,53,37,40,52,41,44,52,48, -47,54,46,51,58,39,52,60,38,49,59,34,44,58,28,43,57,27, -41,55,32,43,54,38,41,53,39,35,50,40,28,45,39,29,42,41, -35,43,43,39,46,45,36,45,45,33,44,45,35,45,35,38,49,31, -39,50,33,39,52,35,42,52,42,39,50,42,38,49,41,39,50,42, -38,52,39,35,53,30,39,52,32,42,55,35,45,58,37,44,58,37, -44,58,43,45,55,46,52,61,37,50,67,25,57,77,10,90,104, -37,131,134,78,157,157,126,175,176,163,182,182,180,185, -185,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,183,184,183,182,182,182,181,182,180, -174,177,173,149,159,144,121,136,109,115,124,87,116,110, -66,109,103,64,95,97,61,84,92,58,78,89,55,71,87,50,67, -88,50,61,80,60,59,76,57,57,74,50,55,74,47,57,73,47,61, -75,42,61,76,41,58,69,46,51,62,46,53,66,47,53,66,46,54, -66,44,57,65,47,53,60,48,49,58,47,48,64,42,52,71,34,57, -71,30,57,68,29,55,66,33,53,63,39,47,60,37,44,58,34,43, -57,32,42,56,31,48,55,37,46,58,36,46,59,37,45,60,39,42, -58,41,36,53,41,35,51,44,36,52,41,38,56,34,44,59,35,48, -59,35,54,60,32,52,58,31,45,54,33,43,55,39,43,57,42,39, -55,44,37,49,45,31,45,44,26,41,39,25,41,37,27,42,40,29, -40,41,31,43,32,35,44,27,41,48,32,42,48,34,43,48,41,40, -53,44,39,52,43,38,51,42,39,51,39,49,53,34,50,55,38,49, -60,41,50,60,40,53,60,42,54,57,47,58,57,53,71,69,49,87, -83,52,110,105,54,135,138,83,157,162,126,172,176,161,181, -182,178,184,184,184,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,184,184, -184,184,183,184,184,184,183,183,181,178,180,178,167,172, -166,162,165,153,156,156,116,144,147,89,120,129,63,100, -114,46,84,101,41,77,96,45,71,93,46,65,87,48,63,85,42, -58,79,39,54,75,39,55,72,40,57,68,52,56,67,48,58,70,41, -57,72,34,51,68,29,51,64,40,53,65,44,56,66,45,58,68,43, -54,67,38,46,63,35,45,60,41,52,62,39,58,66,40,57,66,40, -55,63,44,51,64,34,50,63,39,47,61,39,47,60,38,51,59,39, -48,59,43,45,58,40,44,58,37,41,58,34,39,56,36,36,53,39, -33,51,32,34,49,35,36,47,43,40,46,49,49,48,52,51,51,53, -49,57,44,47,59,41,43,58,38,39,56,28,39,54,39,36,53,37, -31,49,34,25,44,33,26,42,36,28,40,38,31,41,36,37,44,40, -43,49,40,44,52,31,45,55,23,41,56,34,42,57,34,42,58,31, -43,60,19,55,66,9,59,72,10,60,76,21,63,78,25,68,82,26, -76,88,29,86,98,41,104,112,46,126,129,70,144,144,101,161, -161,135,173,174,163,181,182,177,183,184,182,185,185,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,184,184,184,184,184, -184,184,184,184,184,184,184,182,182,182,181,183,181,182, -181,176,177,177,166,164,164,140,142,140,98,113,108,64,96, -95,54,86,92,55,73,92,56,72,90,52,69,88,52,62,81,49,61, -75,47,55,68,53,47,69,46,48,70,37,54,75,34,61,74,38,53, -68,43,48,67,44,48,67,42,51,68,40,52,67,37,54,65,40,48, -60,43,47,60,37,47,62,33,49,64,34,48,65,39,58,67,40,56, -67,45,53,64,44,48,61,40,48,60,40,48,61,45,48,60,44,48, -59,41,49,58,39,46,55,40,42,52,43,44,51,38,39,48,39,32, -45,41,27,43,42,25,45,40,26,46,40,31,52,34,39,55,35,44, -55,36,49,58,35,51,51,42,45,52,40,40,53,41,35,50,42,31, -46,42,31,43,43,33,44,40,32,47,41,38,51,39,43,53,32,52, -56,28,50,57,39,49,56,36,49,58,34,54,62,27,68,73,23,85, -86,36,91,91,49,98,97,57,108,107,66,119,119,79,132,133, -99,147,149,113,156,160,128,167,170,150,175,177,167,181, -182,178,183,185,183,184,184,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,184,184,184,184,185,185, -184,184,184,184,185,185,184,184,184,184,185,185,184,185, -185,184,183,183,180,175,175,159,149,151,97,121,128,47, -102,117,36,87,112,38,78,103,28,74,97,29,71,92,44,73,86, -60,66,83,58,56,80,51,52,75,45,54,72,43,61,72,47,60,77, -42,54,76,39,52,73,37,53,71,39,54,68,38,57,69,39,53,66, -37,48,62,37,48,61,38,47,62,38,46,62,39,57,65,36,56,68, -39,55,67,38,53,66,39,52,65,44,51,65,45,51,64,43,52,63, -43,54,61,46,53,62,48,48,60,46,51,58,46,48,60,38,41,57, -34,34,55,33,30,53,31,27,49,34,28,46,39,34,48,37,41,51, -34,45,52,36,53,56,32,49,58,33,40,54,37,33,49,41,30,45, -41,32,46,35,36,52,22,37,56,25,41,58,21,47,62,16,59,67, -18,58,67,39,59,64,49,63,70,55,70,76,55,82,86,51,103, -105,49,111,116,54,123,128,65,140,144,91,153,159,119,166, -168,142,174,176,159,177,179,167,180,181,175,183,184,181, -185,185,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,184,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,182,178,178,165,165,163, -133,159,156,129,158,152,125,150,138,103,119,109,66,85,95, -58,65,94,65,56,97,63,55,96,62,59,92,61,58,83,55,50,79, -49,53,80,42,54,79,42,55,76,42,54,71,41,54,69,41,53,69, -40,48,70,38,46,66,39,46,63,39,46,61,38,47,61,38,51,65, -34,55,63,38,54,62,35,51,60,34,46,63,38,50,64,43,53,63, -42,54,62,43,49,59,41,46,59,42,45,61,42,45,60,42,51,62, -39,52,59,39,51,57,41,49,58,41,48,53,47,45,48,50,40,47, -41,39,51,35,41,53,37,43,58,30,47,59,35,46,56,42,37,49, -43,30,47,43,31,49,37,50,52,29,47,62,34,47,63,28,55,67, -24,66,73,25,66,79,50,59,80,59,63,84,65,75,89,67,96, -100,69,123,120,77,137,138,93,151,154,114,167,167,143,175, -177,163,181,182,173,183,183,180,184,184,182,185,185,183, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,184,185,184,184,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,184, -182,181,181,176,181,181,175,180,180,174,181,180,166,172, -173,128,137,158,64,100,143,39,80,133,39,66,116,40,67, -103,49,72,98,57,63,94,51,60,85,56,57,78,64,57,73,67, -59,71,64,60,72,60,57,70,55,47,66,47,47,63,48,50,64,50, -49,62,44,48,64,33,51,63,36,58,65,40,60,67,41,56,68,37, -47,67,29,45,61,30,47,56,36,50,57,43,48,56,44,43,55,42, -38,53,40,37,52,37,44,53,42,48,52,45,50,53,50,47,53,50, -49,55,43,50,58,36,50,61,38,45,60,39,44,58,39,47,62,38, -50,63,38,53,66,38,48,66,31,38,62,28,38,60,29,62,67,28, -55,71,40,51,68,27,63,77,19,80,90,20,86,104,43,78,100, -61,79,100,73,90,103,77,113,120,75,146,145,104,160,161, -131,171,171,157,179,179,172,183,184,180,185,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,184,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,185,185, -184,185,185,185,185,185,183,184,184,179,182,180,167,174, -178,152,164,169,135,139,150,109,111,125,88,98,112,83,87, -104,74,71,96,74,62,90,80,50,83,76,39,82,68,36,84,61, -40,82,57,44,76,53,48,67,53,45,63,50,43,62,42,48,64,34, -52,62,38,53,62,38,52,63,37,50,66,33,51,67,29,49,65,33, -44,62,39,41,60,43,42,60,46,41,56,44,42,54,44,44,51,42, -44,52,45,42,52,46,40,50,45,38,49,45,39,54,39,43,57,33, -44,59,35,44,58,38,44,58,39,48,59,36,48,60,35,51,62,32, -56,65,33,60,64,36,63,63,40,68,74,33,65,72,45,71,78,42, -89,96,45,109,117,56,121,129,82,117,124,98,110,122,106, -112,125,106,140,145,113,161,166,141,172,176,162,179,180, -175,184,184,181,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,184,183,184,184,180,182, -182,174,175,179,154,159,170,121,146,162,99,125,150,66, -105,144,43,94,138,42,80,130,42,57,113,35,44,99,42,42, -85,63,46,73,80,55,72,68,53,70,55,49,68,45,50,63,52,54, -60,57,57,62,56,58,66,51,52,68,40,52,69,32,51,66,38,46, -68,33,42,66,30,42,63,32,41,58,35,42,55,39,46,54,44,49, -57,41,47,59,37,46,60,33,44,59,33,42,61,31,47,60,38,48, -60,45,46,58,47,44,55,50,47,54,52,48,54,50,48,54,46,52, -58,39,60,65,27,71,78,18,79,91,26,92,107,26,104,120,35, -120,131,54,133,141,80,141,152,93,144,156,105,146,160,116, -147,162,121,165,171,144,174,177,164,181,181,176,183,184, -181,184,184,184,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,182,182,184,177,178,181,168,175,177,157,170,173,136, -156,164,111,144,157,99,127,145,81,107,130,66,96,118,73, -81,100,88,58,83,91,45,84,74,43,87,64,42,86,55,41,79, -60,33,75,60,26,76,54,26,74,46,31,75,37,40,77,34,42,72, -39,44,70,34,47,70,34,49,69,38,48,65,42,51,62,46,54,58, -50,49,60,44,51,63,41,54,65,39,61,64,42,67,66,44,58,62, -44,51,62,47,45,61,49,42,56,50,42,57,53,45,59,53,52,64, -54,62,72,53,82,90,57,104,112,64,118,126,78,132,140,82, -145,150,94,147,153,98,149,158,113,158,165,127,164,168, -139,168,172,149,172,174,158,178,179,169,180,182,177,183, -183,181,184,185,183,185,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,184,184,184,184,184,183,184,185, -183,184,184,178,180,183,171,176,180,163,166,175,141,146, -163,104,131,152,73,123,147,69,106,139,67,88,131,54,81, -126,51,79,122,46,76,118,46,62,109,39,46,101,33,39,88, -44,37,76,61,40,70,65,41,67,57,43,65,52,47,67,52,49,67, -50,51,67,47,54,67,44,61,68,46,55,70,36,56,71,35,57,71, -35,64,69,39,74,75,37,69,77,41,64,79,35,53,75,27,56,74, -44,61,77,62,72,88,63,86,100,63,108,119,73,134,141,98, -150,155,114,157,162,126,162,168,131,165,169,134,165,168, -139,163,169,142,170,173,152,175,177,164,179,179,171,180, -180,175,182,182,180,184,184,182,185,185,183,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,184,184,184,180,180,182,173,175,180,157, -171,175,146,165,171,142,161,171,137,160,167,133,156,165, -122,148,157,107,134,149,87,122,139,75,108,124,73,91,105, -76,81,97,76,79,95,69,78,96,66,76,96,64,73,94,61,72,93, -55,69,93,53,71,96,53,79,102,54,83,105,55,84,104,55,82, -103,55,89,105,52,92,107,59,93,108,54,93,110,52,87,104, -60,95,108,79,110,119,88,130,138,101,152,158,123,165,168, -140,171,174,151,174,176,157,175,176,159,175,177,158,174, -176,159,175,175,162,176,177,164,179,182,173,182,183,178, -183,183,181,183,183,182,184,184,183,185,185,184,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,184, -184,184,184,182,184,184,181,183,184,180,182,184,177,182, -184,174,180,182,167,174,178,154,167,175,139,160,169,123, -148,160,104,142,157,93,141,155,83,137,153,82,134,150,79, -130,147,75,128,150,75,129,149,76,129,148,80,133,151,86, -135,152,88,137,152,86,133,150,88,136,151,91,138,152,95, -141,152,95,142,156,96,141,154,97,141,153,101,150,158,111, -160,167,130,170,174,148,175,179,163,179,181,170,179,180, -170,179,180,171,180,181,172,179,181,171,180,180,172,179, -181,174,182,183,179,183,183,181,184,184,183,184,184,183, -185,185,183,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -184,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -184,182,183,183,180,180,182,172,178,182,165,173,179,159, -174,177,155,173,176,154,170,175,147,168,172,139,163,169, -131,161,169,128,161,169,128,164,171,136,165,170,138,166, -172,140,168,172,142,167,172,143,167,172,145,167,173,146, -168,172,142,166,172,139,166,171,141,168,171,144,172,176, -155,177,178,164,180,181,173,182,182,175,181,182,175,182, -182,176,181,183,177,182,183,178,182,182,179,183,184,179, -183,184,182,184,184,182,184,184,183,184,184,183,185,185, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,184,184,184,184,184, -184,184,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,184,184,182,183,183, -181,183,184,180,182,183,178,181,182,174,179,180,168,176, -179,162,175,178,160,175,179,159,177,179,163,177,180,167, -179,180,169,179,181,169,178,180,169,178,182,168,178,180, -168,176,180,165,175,179,165,177,178,165,177,179,168,180, -181,172,182,183,177,183,183,180,182,184,180,182,183,180, -183,184,181,183,184,180,182,184,182,184,184,182,184,184, -182,184,185,183,184,185,183,185,185,184,185,185,184,185, -185,184,185,185,184,184,185,184,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,184,184,184,184,184,184,184,184, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,185, -185,184,185,185,183,185,185,183,184,185,181,181,183,177, -182,182,174,181,182,172,181,182,173,182,183,177,183,183, -178,182,184,178,182,184,177,182,183,178,182,183,178,182, -183,177,181,182,175,180,181,175,180,182,176,182,182,177, -183,183,180,184,185,182,183,184,182,184,185,182,184,184, -182,183,184,182,183,184,181,183,183,183,184,184,183,185, -185,184,185,185,184,185,185,185,185,185,184,185,185,185, -185,185,185,185,185,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,184,185,185,183,184,184,183,183,183,183,184,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,184,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,184,183,184,182,183,183, -178,182,184,177,182,184,178,183,184,180,184,184,182,184, -185,182,184,184,182,184,184,182,184,184,182,183,184,181, -183,183,180,182,183,179,182,183,179,183,184,179,183,184, -181,184,184,181,185,185,182,184,184,182,183,184,183,183, -184,182,183,183,181,184,184,182,184,184,183,184,184,184, -184,184,184,185,185,184,185,185,185,184,185,184,185,185, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,184, -185,185,183,183,184,182,183,183,182,182,182,184,184,184, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,184,185,185,184,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,182,183,184,180,183, -185,179,183,184,179,183,185,182,184,184,182,184,185,182, -184,184,183,184,184,183,184,185,182,184,184,182,182,184, -179,182,183,179,182,183,179,183,183,178,182,184,179,183, -184,180,183,184,181,184,184,180,182,183,180,182,183,181, -184,184,182,184,184,182,184,184,183,184,185,183,184,185, -184,184,184,184,185,185,184,185,185,184,185,185,184,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,184,184,184, -182,183,183,181,182,182,181,181,181,182,182,182,184,184, -184,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,184,185, -185,184,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,182,183,184,178,183,185,178, -183,184,179,183,185,181,184,184,181,184,185,182,184,184, -183,184,184,183,184,185,182,183,184,181,182,184,179,182, -183,178,182,182,178,182,182,175,180,181,177,182,182,175, -182,183,177,181,183,177,182,182,176,182,183,180,183,183, -181,184,184,182,184,184,182,184,184,183,184,185,183,184, -184,183,183,184,183,184,185,184,185,185,183,185,185,185, -185,185,184,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185}; diff --git a/lib/glut-3.7.6/progs/examples/mjksift.c b/lib/glut-3.7.6/progs/examples/mjksift.c deleted file mode 100644 index 6a3e72689d2dc1a14da335330d85fcafdff94b9c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/mjksift.c +++ /dev/null @@ -1,261 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This program uses 3D texture coordinates to introduce - "sifting" effects to warp a static mesh of textured - geometry. The third texture coordinate encodes a shifting - quantity through the mesh. By updating the texture matrix, - the texture coordinates can be shifted based on this - third texture coordinate. You'll notice the face seems - to have local vortexes scattered over the image that - warp the image. While the texture coordinates look dynamic, - they are indeed quite static (frozen in a display list) and - it is just the texture matrix that is changing to shift - the final 2D texture coordinates. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include - -extern unsigned char mjk_image[]; -extern int mjk_depth; -extern int mjk_height; -extern int mjk_width; - -float tick1 = 0; -float tick2 = 0; -float angle; -float size = 0.4; -int set_timeout = 0; -int visible = 0; -int sifting = 1; -int scaling = 0; -int interval = 100; - -void -animate(int value) -{ - if (visible) { - if (sifting || scaling) { - if (value) { - if (sifting) { - tick1 += 4 * (interval / 100.0); - angle = ((int) tick1) % 360; - } - if (scaling) { - tick2 += 2 * (interval / 100.0); - size = .7 - .5 * sin(tick2 / 20.0); - } - } - glutPostRedisplay(); - set_timeout = 1; - } - } -} - -/* Setup display list with "frozen" 3D texture coordinates. */ -void -generateTexturedSurface(void) -{ - static GLfloat data[8] = - {0, 1, 0, -1}; - int i, j; - -#define COLS 12 -#define ROWS 12 -#define TILE_TEX_W (1.0/COLS) -#define TILE_TEX_H (1.0/ROWS) - - glNewList(1, GL_COMPILE); - glTranslatef(-COLS / 2.0 + .5, -ROWS / 2.0 + .5, 0); - for (j = 0; j < ROWS; j++) { - glBegin(GL_QUAD_STRIP); - for (i = 0; i < COLS; i++) { - glTexCoord3f(i * TILE_TEX_W, j * TILE_TEX_H, data[(i + j) % 4]); - glVertex2f(i - .5, j - .5); - glTexCoord3f(i * TILE_TEX_W, (j + 1) * TILE_TEX_H, data[(i + j + 1) % 4]); - glVertex2f(i - .5, j + .5); - } - glTexCoord3f((i + 1) * TILE_TEX_W, j * TILE_TEX_H, data[(i + j) % 4]); - glVertex2f(i + .5, j - .5); - glTexCoord3f((i + 1) * TILE_TEX_W, (j + 1) * TILE_TEX_H, data[(i + j + 1) % 4]); - glVertex2f(i + .5, j + .5); - glEnd(); - } - glEndList(); -} - -/* Construct an identity matrix except that the third coordinate - can be used to "sift" the X and Y coordinates. */ -void -makeSift(GLfloat m[16], float xsift, float ysift) -{ - m[0 + 4 * 0] = 1; - m[0 + 4 * 1] = 0; - m[0 + 4 * 2] = xsift; - m[0 + 4 * 3] = 0; - - m[1 + 4 * 0] = 0; - m[1 + 4 * 1] = 1; - m[1 + 4 * 2] = ysift; - m[1 + 4 * 3] = 0; - - m[2 + 4 * 0] = 0; - m[2 + 4 * 1] = 0; - m[2 + 4 * 2] = 1; - m[2 + 4 * 3] = 0; - - m[3 + 4 * 0] = 0; - m[3 + 4 * 1] = 0; - m[3 + 4 * 2] = 0; - m[3 + 4 * 3] = 1; -} - -void -redraw(void) -{ - int begin, end, elapsed; - GLfloat matrix[16]; - - if (set_timeout) { - begin = glutGet(GLUT_ELAPSED_TIME); - } - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - - glScalef(size, size, size); - - glMatrixMode(GL_TEXTURE); - makeSift(matrix, 0.02 * cos(tick1 / 40.0), 0.02 * sin(tick1 / 15.0)); - glLoadMatrixf(matrix); - glMatrixMode(GL_MODELVIEW); - - glCallList(1); - - glPopMatrix(); - glutSwapBuffers(); - if (set_timeout) { - set_timeout = 0; - end = glutGet(GLUT_ELAPSED_TIME); - elapsed = end - begin; - if (elapsed > interval) { - glutTimerFunc(0, animate, 1); - } else { - glutTimerFunc(interval - elapsed, animate, 1); - } - } -} - -int width; -int height; -int depth; -unsigned char *bits; - -void -visibility(int state) -{ - if (state == GLUT_VISIBLE) { - visible = 1; - animate(0); - } else { - visible = 0; - } -} - -void -minify_select(int value) -{ - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, value); - gluBuild2DMipmaps(GL_TEXTURE_2D, depth, width, height, - GL_RGB, GL_UNSIGNED_BYTE, bits); - glutPostRedisplay(); -} - -void -rate_select(int value) -{ - interval = value; -} - -void -menu_select(int value) -{ - switch (value) { - case 1: - sifting = !sifting; - if (sifting) - animate(0); - break; - case 2: - scaling = !scaling; - if (scaling) - animate(0); - break; - case 666: - exit(0); - } -} - -int -main(int argc, char **argv) -{ - int minify_menu, rate_menu; - - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("mjksift"); - glutDisplayFunc(redraw); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 70.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - depth = mjk_depth; - width = mjk_width; - height = mjk_height; - bits = mjk_image; - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, depth, width, height, - GL_RGB, GL_UNSIGNED_BYTE, bits); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); - glutVisibilityFunc(visibility); - minify_menu = glutCreateMenu(minify_select); - glutAddMenuEntry("Nearest", GL_NEAREST); - glutAddMenuEntry("Linear", GL_LINEAR); - glutAddMenuEntry("Nearest mipmap nearest", GL_NEAREST_MIPMAP_NEAREST); - glutAddMenuEntry("Linear mipmap nearest", GL_LINEAR_MIPMAP_NEAREST); - glutAddMenuEntry("Nearest mipmap linear", GL_NEAREST_MIPMAP_LINEAR); - glutAddMenuEntry("Linear mipmap linear", GL_LINEAR_MIPMAP_LINEAR); - rate_menu = glutCreateMenu(rate_select); - glutAddMenuEntry(" 2/sec", 500); - glutAddMenuEntry(" 6/sec", 166); - glutAddMenuEntry("10/sec", 100); - glutAddMenuEntry("20/sec", 50); - glutAddMenuEntry("30/sec", 33); - glutAddMenuEntry("60/sec", 16); - glutCreateMenu(menu_select); - glutAddMenuEntry("Toggle sifting", 1); - glutAddMenuEntry("Toggle scaling", 2); - glutAddSubMenu("Minimum frame rate", rate_menu); - glutAddSubMenu("Minify modes", minify_menu); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - menu_select(3); - generateTexturedSurface(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/mjksift.dsp b/lib/glut-3.7.6/progs/examples/mjksift.dsp deleted file mode 100644 index 1e2fe4d0134453e660e9bc2cfdc67d5fe3256f66..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/mjksift.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mjksift" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mjksift - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mjksift.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mjksift.mak" CFG="mjksift - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mjksift - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mjksift - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mjksift - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "mjksift - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "mjksift - Win32 Release" -# Name "mjksift - Win32 Debug" -# Begin Source File - -SOURCE=.\mjkimage.c -# End Source File -# Begin Source File - -SOURCE=.\mjksift.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/mjkwarp.c b/lib/glut-3.7.6/progs/examples/mjkwarp.c deleted file mode 100644 index 06fc11e13a42e8800b9b7769abd43e9f9f1da925..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/mjkwarp.c +++ /dev/null @@ -1,329 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include - -extern unsigned char mjk_image[]; -extern int mjk_depth; -extern int mjk_height; -extern int mjk_width; - -float tick1 = 0; -float tick2 = 0; -float angle; -float size; -int set_timeout = 0; -int visible = 0; -int spinning = 1; -int scaling = 1; -int interval = 100; -#define CUBE 1 -#define SQUARES 2 -#define DRUM 3 -int mode = SQUARES; - -void -animate(int value) -{ - if (visible) { - if (spinning || scaling) { - if (value) { - if (spinning) { - tick1 += 4 * (interval / 100.0); - angle = ((int) tick1) % 360; - } - if (scaling) { - tick2 += 2 * (interval / 100.0); - size = .7 - .5 * sin(tick2 / 20.0); - } - } - glutPostRedisplay(); - set_timeout = 1; - } - } -} - -#define TIMEDELTA(dest, src1, src2) { \ - if(((dest).tv_usec = (src1).tv_usec - (src2).tv_usec) < 0) {\ - (dest).tv_usec += 1000000;\ - (dest).tv_sec = (src1).tv_sec - (src2).tv_sec - 1;\ - } else (dest).tv_sec = (src1).tv_sec - (src2).tv_sec; } - -void -redraw(void) -{ - int begin, end, elapsed; - int i, j; - float amplitude; - - if (set_timeout) { - begin = glutGet(GLUT_ELAPSED_TIME); - } - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - - if (mode != DRUM) { - glScalef(size, size, size); - } - switch (mode) { - case SQUARES: - -#define COLS 6 -#define TILE_TEX_W (1.0/COLS) -#define ROWS 6 -#define TILE_TEX_H (1.0/ROWS) - - glTranslatef(-COLS / 2.0 + .5, -ROWS / 2.0 + .5, 0); - for (i = 0; i < COLS; i++) { - for (j = 0; j < ROWS; j++) { - - glPushMatrix(); - glTranslatef(i, j, 0); - glRotatef(angle, 0, 1, 1); - glBegin(GL_QUADS); - glTexCoord2f(i * TILE_TEX_W, j * TILE_TEX_H); - glVertex2f(-.5, -.5); - glTexCoord2f((i + 1) * TILE_TEX_W, j * TILE_TEX_H); - glVertex2f(.5, -.5); - glTexCoord2f((i + 1) * TILE_TEX_W, (j + 1) * TILE_TEX_H); - glVertex2f(.5, .5); - glTexCoord2f(i * TILE_TEX_W, (j + 1) * TILE_TEX_H); - glVertex2f(-.5, .5); - glEnd(); - glPopMatrix(); - - } - } - break; - case DRUM: - -#undef COLS -#undef TILE_TEX_W -#undef ROWS -#undef TILE_TEX_H -#define COLS 12 -#define TILE_TEX_W (1.0/COLS) -#define ROWS 12 -#define TILE_TEX_H (1.0/ROWS) - - glRotatef(angle, 0, 0, 1); - glTranslatef(-COLS / 2.0 + .5, -ROWS / 2.0 + .5, 0); - amplitude = 0.4 * sin(tick2 / 6.0); - for (i = 0; i < COLS; i++) { - for (j = 0; j < ROWS; j++) { - -#define Z(x,y) (((COLS-(x))*(x) + (ROWS-(y))*(y)) * amplitude) - 28.0 - - glPushMatrix(); - glTranslatef(i, j, 0); - glBegin(GL_QUADS); - glTexCoord2f(i * TILE_TEX_W, j * TILE_TEX_H); - glVertex3f(-.5, -.5, Z(i, j)); - glTexCoord2f((i + 1) * TILE_TEX_W, j * TILE_TEX_H); - glVertex3f(.5, -.5, Z(i + 1, j)); - glTexCoord2f((i + 1) * TILE_TEX_W, (j + 1) * TILE_TEX_H); - glVertex3f(.5, .5, Z(i + 1, j + 1)); - glTexCoord2f(i * TILE_TEX_W, (j + 1) * TILE_TEX_H); - glVertex3f(-.5, .5, Z(i, j + 1)); - glEnd(); - glPopMatrix(); - - } - } - break; - case CUBE: - glRotatef(angle, 0, 1, 0); - glBegin(GL_QUADS); - - /* front */ - glTexCoord2f(0.0, 0.0); - glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(-1.0, 1.0, 1.0); - - /* back */ - glTexCoord2f(0.0, 1.0); - glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(1.0, 1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(1.0, -1.0, -1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(-1.0, -1.0, -1.0); - - /* left */ - glTexCoord2f(0.0, 0.0); - glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(-1.0, 1.0, -1.0); - - /* right */ - glTexCoord2f(0.0, 1.0); - glVertex3f(1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(1.0, -1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(1.0, -1.0, -1.0); - - glEnd(); - } - - glPopMatrix(); - glutSwapBuffers(); - if (set_timeout) { - set_timeout = 0; - end = glutGet(GLUT_ELAPSED_TIME); - elapsed = end - begin; - if (elapsed > interval) { - glutTimerFunc(0, animate, 1); - } else { - glutTimerFunc(interval - elapsed, animate, 1); - } - } -} - -int width; -int height; -int depth; -unsigned char *bits; - -void -visibility(int state) -{ - if (state == GLUT_VISIBLE) { - visible = 1; - animate(0); - } else { - visible = 0; - } -} - -void -minify_select(int value) -{ - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, value); - gluBuild2DMipmaps(GL_TEXTURE_2D, depth, width, height, - GL_RGB, GL_UNSIGNED_BYTE, bits); - glutPostRedisplay(); -} - -void -rate_select(int value) -{ - interval = value; -} - -void -menu_select(int value) -{ - switch (value) { - case 1: - spinning = !spinning; - if (spinning) - animate(0); - break; - case 2: - scaling = !scaling; - if (scaling) - animate(0); - break; - case 3: - mode++; - if (mode > DRUM) - mode = CUBE; - switch (mode) { - case CUBE: - glEnable(GL_CULL_FACE); - glDisable(GL_DEPTH_TEST); - break; - case SQUARES: - glDisable(GL_CULL_FACE); - glDisable(GL_DEPTH_TEST); - break; - case DRUM: - glEnable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - break; - } - glutPostRedisplay(); - break; - case 666: - exit(0); - } -} - -int -main(int argc, char **argv) -{ - int minify_menu, rate_menu; - - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("mjkwarp"); - glutDisplayFunc(redraw); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 70.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - depth = mjk_depth; - width = mjk_width; - height = mjk_height; - bits = mjk_image; - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, depth, width, height, - GL_RGB, GL_UNSIGNED_BYTE, bits); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); - glutVisibilityFunc(visibility); - minify_menu = glutCreateMenu(minify_select); - glutAddMenuEntry("Nearest", GL_NEAREST); - glutAddMenuEntry("Linear", GL_LINEAR); - glutAddMenuEntry("Nearest mipmap nearest", GL_NEAREST_MIPMAP_NEAREST); - glutAddMenuEntry("Linear mipmap nearest", GL_LINEAR_MIPMAP_NEAREST); - glutAddMenuEntry("Nearest mipmap linear", GL_NEAREST_MIPMAP_LINEAR); - glutAddMenuEntry("Linear mipmap linear", GL_LINEAR_MIPMAP_LINEAR); - rate_menu = glutCreateMenu(rate_select); - glutAddMenuEntry(" 2/sec", 500); - glutAddMenuEntry(" 6/sec", 166); - glutAddMenuEntry("10/sec", 100); - glutAddMenuEntry("20/sec", 50); - glutAddMenuEntry("30/sec", 33); - glutAddMenuEntry("60/sec", 16); - glutCreateMenu(menu_select); - glutAddMenuEntry("Toggle spinning", 1); - glutAddMenuEntry("Toggle scaling", 2); - glutAddMenuEntry("Switch mode", 3); - glutAddSubMenu("Minimum frame rate", rate_menu); - glutAddSubMenu("Minify modes", minify_menu); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - menu_select(3); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/mjkwarp.dsp b/lib/glut-3.7.6/progs/examples/mjkwarp.dsp deleted file mode 100644 index f3582a9795829dcc56bed4cd55f32b3356892f5d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/mjkwarp.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mjkwarp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mjkwarp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mjkwarp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mjkwarp.mak" CFG="mjkwarp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mjkwarp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mjkwarp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mjkwarp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "mjkwarp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "mjkwarp - Win32 Release" -# Name "mjkwarp - Win32 Debug" -# Begin Source File - -SOURCE=.\mjkimage.c -# End Source File -# Begin Source File - -SOURCE=.\mjkwarp.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/molehill.c b/lib/glut-3.7.6/progs/examples/molehill.c deleted file mode 100644 index 47c75a613e7d59c9058ecac02daecb1637e33153..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/molehill.c +++ /dev/null @@ -1,153 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1995. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* molehill uses the GLU NURBS routines to draw some nice surfaces. */ - -#include - -GLfloat mat_red_diffuse[] = { 0.7, 0.0, 0.1, 1.0 }; -GLfloat mat_green_diffuse[] = { 0.0, 0.7, 0.1, 1.0 }; -GLfloat mat_blue_diffuse[] = { 0.0, 0.1, 0.7, 1.0 }; -GLfloat mat_yellow_diffuse[] = { 0.7, 0.8, 0.1, 1.0 }; -GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat mat_shininess[] = { 100.0 }; -GLfloat knots[8] = { 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0 }; -GLfloat pts1[4][4][3], pts2[4][4][3]; -GLfloat pts3[4][4][3], pts4[4][4][3]; -GLUnurbsObj *nurb; -int u, v; - -static void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(1); - glFlush(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutCreateWindow("molehill"); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - nurb = gluNewNurbsRenderer(); - gluNurbsProperty(nurb, GLU_SAMPLING_TOLERANCE, 25.0); - gluNurbsProperty(nurb, GLU_DISPLAY_MODE, GLU_FILL); - - /* Build control points for NURBS mole hills. */ - for(u=0; u<4; u++) { - for(v=0; v<4; v++) { - /* Red. */ - pts1[u][v][0] = 2.0*((GLfloat)u); - pts1[u][v][1] = 2.0*((GLfloat)v); - if((u==1 || u == 2) && (v == 1 || v == 2)) - /* Stretch up middle. */ - pts1[u][v][2] = 6.0; - else - pts1[u][v][2] = 0.0; - - /* Green. */ - pts2[u][v][0] = 2.0*((GLfloat)u - 3.0); - pts2[u][v][1] = 2.0*((GLfloat)v - 3.0); - if((u==1 || u == 2) && (v == 1 || v == 2)) - if(u == 1 && v == 1) - /* Pull hard on single middle square. */ - pts2[u][v][2] = 15.0; - else - /* Push down on other middle squares. */ - pts2[u][v][2] = -2.0; - else - pts2[u][v][2] = 0.0; - - /* Blue. */ - pts3[u][v][0] = 2.0*((GLfloat)u - 3.0); - pts3[u][v][1] = 2.0*((GLfloat)v); - if((u==1 || u == 2) && (v == 1 || v == 2)) - if(u == 1 && v == 2) - /* Pull up on single middple square. */ - pts3[u][v][2] = 11.0; - else - /* Pull up slightly on other middle squares. */ - pts3[u][v][2] = 2.0; - else - pts3[u][v][2] = 0.0; - - /* Yellow. */ - pts4[u][v][0] = 2.0*((GLfloat)u); - pts4[u][v][1] = 2.0*((GLfloat)v - 3.0); - if((u==1 || u == 2 || u == 3) && (v == 1 || v == 2)) - if(v == 1) - /* Push down front middle and right squares. */ - pts4[u][v][2] = -2.0; - else - /* Pull up back middle and right squares. */ - pts4[u][v][2] = 5.0; - else - pts4[u][v][2] = 0.0; - } - } - /* Stretch up red's far right corner. */ - pts1[3][3][2] = 6; - /* Pull down green's near left corner a little. */ - pts2[0][0][2] = -2; - /* Turn up meeting of four corners. */ - pts1[0][0][2] = 1; - pts2[3][3][2] = 1; - pts3[3][0][2] = 1; - pts4[0][3][2] = 1; - - glMatrixMode(GL_PROJECTION); - gluPerspective(55.0, 1.0, 2.0, 24.0); - glMatrixMode(GL_MODELVIEW); - glTranslatef(0.0, 0.0, -15.0); - glRotatef(330.0, 1.0, 0.0, 0.0); - - glNewList(1, GL_COMPILE); - /* Render red hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_red_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts1[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - - /* Render green hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_green_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts2[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - - /* Render blue hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_blue_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts3[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - - /* Render yellow hill. */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_yellow_diffuse); - gluBeginSurface(nurb); - gluNurbsSurface(nurb, 8, knots, 8, knots, - 4 * 3, 3, &pts4[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluEndSurface(nurb); - glEndList(); - - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/molehill.dsp b/lib/glut-3.7.6/progs/examples/molehill.dsp deleted file mode 100644 index e4707cf628baf2596602b8763697bdf892d4ac8b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/molehill.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="molehill" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=molehill - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "molehill.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "molehill.mak" CFG="molehill - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "molehill - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "molehill - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "molehill - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "molehill - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "molehill - Win32 Release" -# Name "molehill - Win32 Debug" -# Begin Source File - -SOURCE=.\molehill.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/movelight.c b/lib/glut-3.7.6/progs/examples/movelight.c deleted file mode 100644 index e029ab696edd8674cb9503fcf910769cc5d15a7c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/movelight.c +++ /dev/null @@ -1,289 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/** - * movelight.c - * This program demonstrates when to issue lighting and - * transformation commands to render a model with a light - * which is moved by a modeling transformation (rotate or - * translate). The light position is reset after the modeling - * transformation is called. The eye position does not change. - * - * A sphere is drawn using a grey material characteristic. - * A single light source illuminates the object. - * - * Interaction: pressing the left or middle mouse button - * alters the modeling transformation (x rotation) by 30 degrees. - * The scene is then redrawn with the light in a new position. - */ -#include -#include -#include -#include - -#define TORUS 0 -#define TEAPOT 1 -#define DOD 2 -#define TET 3 -#define ISO 4 -#define QUIT 5 - -static int spin = 0; -static int obj = TORUS; -static int begin; - -void -output(GLfloat x, GLfloat y, char *format,...) -{ - va_list args; - char buffer[200], *p; - - va_start(args, format); - vsprintf(buffer, format, args); - va_end(args); - glPushMatrix(); - glTranslatef(x, y, 0); - for (p = buffer; *p; p++) - glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); - glPopMatrix(); -} - -void -menu_select(int item) -{ - if (item == QUIT) - exit(0); - obj = item; - glutPostRedisplay(); -} - -/* ARGSUSED2 */ -void -movelight(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - begin = x; - } -} - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - spin = (spin + (x - begin)) % 360; - begin = x; - glutPostRedisplay(); -} - -void -myinit(void) -{ - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); -} - -/* Here is where the light position is reset after the modeling - * transformation (glRotated) is called. This places the - * light at a new position in world coordinates. The cube - * represents the position of the light. - */ -void -display(void) -{ - GLfloat position[] = - {0.0, 0.0, 1.5, 1.0}; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glTranslatef(0.0, 0.0, -5.0); - - glPushMatrix(); - glRotated((GLdouble) spin, 0.0, 1.0, 0.0); - glRotated(0.0, 1.0, 0.0, 0.0); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glTranslated(0.0, 0.0, 1.5); - glDisable(GL_LIGHTING); - glColor3f(0.0, 1.0, 1.0); - glutWireCube(0.1); - glEnable(GL_LIGHTING); - glPopMatrix(); - - switch (obj) { - case TORUS: - glutSolidTorus(0.275, 0.85, 20, 20); - break; - case TEAPOT: - glutSolidTeapot(1.0); - break; - case DOD: - glPushMatrix(); - glScalef(.5, .5, .5); - glutSolidDodecahedron(); - glPopMatrix(); - break; - case TET: - glutSolidTetrahedron(); - break; - case ISO: - glutSolidIcosahedron(); - break; - } - - glPopMatrix(); - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, 3000, 0, 3000); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - output(80, 2800, "Welcome to movelight."); - output(80, 2650, "Right mouse button for menu."); - output(80, 400, "Hold down the left mouse button"); - output(80, 250, "and move the mouse horizontally"); - output(80, 100, "to change the light position."); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glPopAttrib(); - glutSwapBuffers(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, (GLfloat) w / (GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); -} - -void -tmotion(int x, int y) -{ - printf("Tablet motion x = %d, y = %d\n", x, y); -} - -void -tbutton(int b, int s, int x, int y) -{ - printf("b = %d, s = %d, x = %d, y = %d\n", b, s, x, y); -} - -void -smotion(int x, int y, int z) -{ - fprintf(stderr, "Spaceball motion %d %d %d\n", x, y, z); -} - -void -rmotion(int x, int y, int z) -{ - fprintf(stderr, "Spaceball rotate %d %d %d\n", x, y, z); -} - -void -sbutton(int button, int state) -{ - fprintf(stderr, "Spaceball button %d is %s\n", - button, state == GLUT_UP ? "up" : "down"); -} - -void -dials(int dial, int value) -{ - fprintf(stderr, "Dial %d is %d\n", dial, value); - spin = value % 360; - glutPostRedisplay(); -} - -void -buttons(int button, int state) -{ - fprintf(stderr, "Button %d is %s\n", button, - state == GLUT_UP ? "up" : "down"); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(500, 500); - glutCreateWindow(argv[0]); - myinit(); - glutMouseFunc(movelight); - glutMotionFunc(motion); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutTabletMotionFunc(tmotion); - glutTabletButtonFunc(tbutton); - glutSpaceballMotionFunc(smotion); - glutSpaceballRotateFunc(rmotion); - glutSpaceballButtonFunc(sbutton); - glutDialsFunc(dials); - glutButtonBoxFunc(buttons); - glutCreateMenu(menu_select); - glutAddMenuEntry("Torus", TORUS); - glutAddMenuEntry("Teapot", TEAPOT); - glutAddMenuEntry("Dodecahedron", DOD); - glutAddMenuEntry("Tetrahedron", TET); - glutAddMenuEntry("Icosahedron", ISO); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/movelight.dsp b/lib/glut-3.7.6/progs/examples/movelight.dsp deleted file mode 100644 index 514fc5434e666d2f9992ab56ee10265f0d27f879..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/movelight.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="movelight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=movelight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "movelight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "movelight.mak" CFG="movelight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "movelight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "movelight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "movelight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "movelight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "movelight - Win32 Release" -# Name "movelight - Win32 Debug" -# Begin Source File - -SOURCE=.\movelight.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/oclip.c b/lib/glut-3.7.6/progs/examples/oclip.c deleted file mode 100644 index ecd5a3cfa155e7a8dc09c672c3780bc0e8965733..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/oclip.c +++ /dev/null @@ -1,207 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/*---------------------------------------------------------------------------- - * - * oclip.c : openGL (motif) example showing how to use arbitrary clipping plane. - * - * Author : Yusuf Attarwala - * SGI - Applications - * Date : Mar 93 - * - * note : the main intent of this program is to demo the arbitrary - * clipping functionality, hence the rendering is kept - * simple (wireframe) and only one clipping plane is used. - * - * press left button to move object - * right button to move clipping plane - * - * - *---------------------------------------------------------------------------*/ -#include -#include - -#include - -/* function declarations */ - -void - drawScene(void), setMatrix(void), animateClipPlane(void), animation(void), - resize(int w, int h), keyboard(unsigned char c, int x, int y); - -/* global variables */ - -float ax, ay, az; /* angles for animation */ -GLUquadricObj *quadObj; /* used in drawscene */ -GLdouble planeEqn[] = -{0.707, 0.707, 0.0, 0.0}; /* initial clipping plane eqn */ - -int count = 0; -int clip_count = 0; - -void -menu(int choice) -{ - switch (choice) { - case 1: - count = 90; - glutIdleFunc(animation); - break; - case 2: - animateClipPlane(); - break; - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - quadObj = gluNewQuadric(); /* this will be used in drawScene - */ - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("Arbitrary clip plane"); - - ax = 10.0; - ay = -10.0; - az = 0.0; - - glutDisplayFunc(drawScene); - glutReshapeFunc(resize); - glutKeyboardFunc(keyboard); - glutCreateMenu(menu); - glutAddMenuEntry("Rotate", 1); - glutAddMenuEntry("Move clip plane", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -void -drawScene(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - gluQuadricDrawStyle(quadObj, GLU_LINE); - glColor3f(1.0, 1.0, 0.0); - glRotatef(ax, 1.0, 0.0, 0.0); - glRotatef(-ay, 0.0, 1.0, 0.0); - - glClipPlane(GL_CLIP_PLANE0, planeEqn); /* define clipping - plane */ - glEnable(GL_CLIP_PLANE0); /* and enable it */ - - gluCylinder(quadObj, 2.0, 5.0, 10.0, 20, 8); /* draw a cone */ - - glDisable(GL_CLIP_PLANE0); - glPopMatrix(); - - glutSwapBuffers(); -} - -void -setMatrix(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-15.0, 15.0, -15.0, 15.0, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void -animation(void) -{ - if (count) { - ax += 5.0; - ay -= 2.0; - az += 5.0; - if (ax >= 360) - ax = 0.0; - if (ay <= -360) - ay = 0.0; - if (az >= 360) - az = 0.0; - glutPostRedisplay(); - count--; - } - if (clip_count) { - static int sign = 1; - - planeEqn[3] += sign * 0.5; - if (planeEqn[3] > 4.0) - sign = -1; - else if (planeEqn[3] < -4.0) - sign = 1; - glutPostRedisplay(); - clip_count--; - } - if (count <= 0 && clip_count <= 0) - glutIdleFunc(NULL); -} - -void -animateClipPlane(void) -{ - clip_count = 5; - glutIdleFunc(animation); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: - exit(0); - break; - default: - break; - } -} - -void -resize(int w, int h) -{ - glViewport(0, 0, w, h); - setMatrix(); -} diff --git a/lib/glut-3.7.6/progs/examples/oclip.dsp b/lib/glut-3.7.6/progs/examples/oclip.dsp deleted file mode 100644 index 98f865a4e8a571eabc631b757127fa4baca0c3f2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/oclip.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="oclip" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=oclip - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "oclip.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "oclip.mak" CFG="oclip - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "oclip - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "oclip - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "oclip - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "oclip - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "oclip - Win32 Release" -# Name "oclip - Win32 Debug" -# Begin Source File - -SOURCE=.\oclip.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/ohidden.c b/lib/glut-3.7.6/progs/examples/ohidden.c deleted file mode 100644 index 4f296f0563a311131e779afe7570ff7ba00594f4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/ohidden.c +++ /dev/null @@ -1,263 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/*---------------------------------------------------------------------------- - * - * ohidden.c : openGL (GLUT) example showing how to use stencils - * to draw outlined polygons. - * - * Author : Yusuf Attarwala - * SGI - Applications - * Date : Jul 93 - * - * Update : Mark Kilgard - * Date : Feb 95 - * - * note : the main intent of this program is to demo the stencil - * plane functionality, hence the rendering is kept - * simple (wireframe). - * - *---------------------------------------------------------------------------*/ -#include -#include -#include - -#include - -static int stencilOn = 1; - -/* function declarations */ - -void - drawScene(void), setMatrix(void), animation(void), resize(int w, int h), - keyboard(unsigned char c, int x, int y), menu(int choice), drawWireframe(int face), - drawFilled(int face); - -/* global variables */ - -float ax, ay, az; /* angles for animation */ - -/* coords of a cube */ -static GLfloat cube[8][3] = -{ { 0.0, 0.0, 0.0}, - { 1.0, 0.0, 0.0}, - { 1.0, 0.0, 1.0}, - { 0.0, 0.0, 1.0}, - { 1.0, 1.0, 0.0}, - { 1.0, 1.0, 1.0}, - { 0.0, 1.0, 1.0}, - { 0.0, 1.0, 0.0}}; - -static int faceIndex[6][4] = -{{0, 1, 2, 3}, - {1, 4, 5, 2}, - {4, 7, 6, 5}, - {7, 0, 3, 6}, - {3, 2, 5, 6}, - {7, 4, 1, 0}}; -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_STENCIL | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("Stenciled hidden surface removal"); - - ax = 10.0; - ay = -10.0; - az = 0.0; - - glutDisplayFunc(drawScene); - glutReshapeFunc(resize); - glutCreateMenu(menu); - glutAddMenuEntry("Motion", 3); - glutAddMenuEntry("Stencil on", 1); - glutAddMenuEntry("Stencil off", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -void -drawWireframe(int face) -{ - int i; - glBegin(GL_LINE_LOOP); - for (i = 0; i < 4; i++) - glVertex3fv((GLfloat *) cube[faceIndex[face][i]]); - glEnd(); -} - -void -drawFilled(int face) -{ - int i; - glBegin(GL_POLYGON); - for (i = 0; i < 4; i++) - glVertex3fv((GLfloat *) cube[faceIndex[face][i]]); - glEnd(); -} - -void -drawScene(void) -{ - - int i; - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glRotatef(ax, 1.0, 0.0, 0.0); - glRotatef(-ay, 0.0, 1.0, 0.0); - - /* all the good stuff follows */ - - if (stencilOn) { - glEnable(GL_STENCIL_TEST); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilMask(1); - glStencilFunc(GL_ALWAYS, 0, 1); - glStencilOp(GL_INVERT, GL_INVERT, GL_INVERT); - } - glColor3f(1.0, 1.0, 0.0); - for (i = 0; i < 6; i++) { - drawWireframe(i); - if (stencilOn) { - glStencilFunc(GL_EQUAL, 0, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - } - glColor3f(0.0, 0.0, 0.0); - drawFilled(i); - - glColor3f(1.0, 1.0, 0.0); - if (stencilOn) { - glStencilFunc(GL_ALWAYS, 0, 1); - glStencilOp(GL_INVERT, GL_INVERT, GL_INVERT); - } - glColor3f(1.0, 1.0, 0.0); - drawWireframe(i); - } - glPopMatrix(); - - if (stencilOn) - glDisable(GL_STENCIL_TEST); - - /* end of good stuff */ - - glutSwapBuffers(); -} - -void -setMatrix(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-2.0, 2.0, -2.0, 2.0, -2.0, 2.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -int count = 0; - -void -animation(void) -{ - /* animate the cone */ - - ax += 5.0; - ay -= 2.0; - az += 5.0; - if (ax >= 360) - ax = 0.0; - if (ay <= -360) - ay = 0.0; - if (az >= 360) - az = 0.0; - glutPostRedisplay(); - count++; - if (count >= 60) - glutIdleFunc(NULL); -} - -void -menu(int choice) -{ - switch (choice) { - case 3: - count = 0; - glutIdleFunc(animation); - break; - case 2: - stencilOn = 0; - glutSetWindowTitle("Stencil Disabled"); - glutPostRedisplay(); - break; - case 1: - stencilOn = 1; - glutSetWindowTitle("Stencil Enabled"); - glutPostRedisplay(); - break; - } -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: - exit(0); - break; - default: - break; - } -} - -void -resize(int w, int h) -{ - glViewport(0, 0, w, h); - setMatrix(); -} diff --git a/lib/glut-3.7.6/progs/examples/ohidden.dsp b/lib/glut-3.7.6/progs/examples/ohidden.dsp deleted file mode 100644 index 6523300a37a6786ae21ba20521c2a4e3b6bc74ca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/ohidden.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ohidden" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ohidden - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ohidden.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ohidden.mak" CFG="ohidden - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ohidden - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ohidden - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ohidden - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "ohidden - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "ohidden - Win32 Release" -# Name "ohidden - Win32 Debug" -# Begin Source File - -SOURCE=.\ohidden.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/olight.c b/lib/glut-3.7.6/progs/examples/olight.c deleted file mode 100644 index 899b7c22c1557fe70d8e14707989a8bc3339cf74..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/olight.c +++ /dev/null @@ -1,241 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/*---------------------------------------------------------------------------- - * - * olight.c : openGL (motif) example showing how to do hardware lighting - * including two_sided lighting. - * - * Author : Yusuf Attarwala - * SGI - Applications - * Date : Mar 93 - * - * press left button for animation - * middle button for two sided lighting (default) - * right button for single sided lighting - * - * - *---------------------------------------------------------------------------*/ -#include -#include -#include - -#include - -/* function declarations */ - -void - drawScene(void), setMatrix(void), initLightAndMaterial(void), - animation(void), resize(int w, int h), menu(int choice), keyboard(unsigned char c, int x, int y); - -/* global variables */ - -float ax, ay, az; /* angles for animation */ -GLUquadricObj *quadObj; /* used in drawscene */ -static float lmodel_twoside[] = -{GL_TRUE}; -static float lmodel_oneside[] = -{GL_FALSE}; - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - quadObj = gluNewQuadric(); /* this will be used in drawScene - */ - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("Two-sided lighting"); - - ax = 10.0; - ay = -10.0; - az = 0.0; - - initLightAndMaterial(); - - glutDisplayFunc(drawScene); - glutReshapeFunc(resize); - glutCreateMenu(menu); - glutAddMenuEntry("Motion", 3); - glutAddMenuEntry("Two-sided lighting", 1); - glutAddMenuEntry("One-sided lighting", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -void -drawScene(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - gluQuadricDrawStyle(quadObj, GLU_FILL); - glColor3f(1.0, 1.0, 0.0); - glRotatef(ax, 1.0, 0.0, 0.0); - glRotatef(-ay, 0.0, 1.0, 0.0); - - gluCylinder(quadObj, 2.0, 5.0, 10.0, 20, 8); /* draw a cone */ - - glPopMatrix(); - - glutSwapBuffers(); -} - -void -setMatrix(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-15.0, 15.0, -15.0, 15.0, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -int count = 0; - -void -animation(void) -{ - ax += 5.0; - ay -= 2.0; - az += 5.0; - if (ax >= 360) - ax = 0.0; - if (ay <= -360) - ay = 0.0; - if (az >= 360) - az = 0.0; - drawScene(); - count++; - if (count >= 60) - glutIdleFunc(NULL); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: - exit(0); - break; - default: - break; - } -} - -void -menu(int choice) -{ - switch (choice) { - case 3: - count = 0; - glutIdleFunc(animation); - break; - case 2: - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_oneside); - glutSetWindowTitle("One-sided lighting"); - glutPostRedisplay(); - break; - case 1: - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glutSetWindowTitle("Two-sided lighting"); - glutPostRedisplay(); - break; - } -} - -void -resize(int w, int h) -{ - glViewport(0, 0, w, h); - setMatrix(); -} - -void -initLightAndMaterial(void) -{ - static float ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float diffuse[] = - {0.5, 1.0, 1.0, 1.0}; - static float position[] = - {90.0, 90.0, 150.0, 0.0}; - - static float front_mat_shininess[] = - {60.0}; - static float front_mat_specular[] = - {0.2, 0.2, 0.2, 1.0}; - static float front_mat_diffuse[] = - {0.5, 0.5, 0.28, 1.0}; - static float back_mat_shininess[] = - {60.0}; - static float back_mat_specular[] = - {0.5, 0.5, 0.2, 1.0}; - static float back_mat_diffuse[] = - {1.0, 0.9, 0.2, 1.0}; - - static float lmodel_ambient[] = - {1.0, 1.0, 1.0, 1.0}; - - setMatrix(); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glMaterialfv(GL_FRONT, GL_SHININESS, front_mat_shininess); - glMaterialfv(GL_FRONT, GL_SPECULAR, front_mat_specular); - glMaterialfv(GL_FRONT, GL_DIFFUSE, front_mat_diffuse); - glMaterialfv(GL_BACK, GL_SHININESS, back_mat_shininess); - glMaterialfv(GL_BACK, GL_SPECULAR, back_mat_specular); - glMaterialfv(GL_BACK, GL_DIFFUSE, back_mat_diffuse); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glShadeModel(GL_SMOOTH); -} diff --git a/lib/glut-3.7.6/progs/examples/olight.dsp b/lib/glut-3.7.6/progs/examples/olight.dsp deleted file mode 100644 index b33e54375a9b2fc63050c9e44f74ccd2c9694368..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/olight.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="olight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=olight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "olight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "olight.mak" CFG="olight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "olight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "olight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "olight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "olight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "olight - Win32 Release" -# Name "olight - Win32 Debug" -# Begin Source File - -SOURCE=.\olight.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/olympic.c b/lib/glut-3.7.6/progs/examples/olympic.c deleted file mode 100644 index e5c75f00884f84139ffe003eca46890a5237cd04..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/olympic.c +++ /dev/null @@ -1,412 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifdef _WIN32 -#define drand48() (((float) rand())/((float) RAND_MAX)) -#define srand48(x) (srand((x))) -#else -extern double drand48(void); -extern void srand48(long seedval); -#endif - -#define XSIZE 100 -#define YSIZE 75 - -#define RINGS 5 -#define BLUERING 0 -#define BLACKRING 1 -#define REDRING 2 -#define YELLOWRING 3 -#define GREENRING 4 - -#define BACKGROUND 8 - -enum { - BLACK = 0, - RED, - GREEN, - YELLOW, - BLUE, - MAGENTA, - CYAN, - WHITE -}; - -typedef short Point[2]; - -GLenum rgb, doubleBuffer, directRender; - -unsigned char rgb_colors[RINGS][3]; -int mapped_colors[RINGS]; -float dests[RINGS][3]; -float offsets[RINGS][3]; -float angs[RINGS]; -float rotAxis[RINGS][3]; -int iters[RINGS]; -GLuint theTorus; - -void -FillTorus(float rc, int numc, float rt, int numt) -{ - int i, j, k; - double s, t; - double x, y, z; - double pi, twopi; - - pi = M_PI; - twopi = 2 * pi; - - for (i = 0; i < numc; i++) { - glBegin(GL_QUAD_STRIP); - for (j = 0; j <= numt; j++) { - for (k = 1; k >= 0; k--) { - s = (i + k) % numc + 0.5; - t = j % numt; - - x = cos(t * twopi / numt) * cos(s * twopi / numc); - y = sin(t * twopi / numt) * cos(s * twopi / numc); - z = sin(s * twopi / numc); - glNormal3f(x, y, z); - - x = (rt + rc * cos(s * twopi / numc)) * cos(t * twopi / numt); - y = (rt + rc * cos(s * twopi / numc)) * sin(t * twopi / numt); - z = rc * sin(s * twopi / numc); - glVertex3f(x, y, z); - } - } - glEnd(); - } -} - -float -Clamp(int iters_left, float t) -{ - - if (iters_left < 3) { - return 0.0; - } - return (iters_left - 2) * t / iters_left; -} - -void -Idle(void) -{ - int i, j; - int more = GL_FALSE; - - for (i = 0; i < RINGS; i++) { - if (iters[i]) { - for (j = 0; j < 3; j++) { - offsets[i][j] = Clamp(iters[i], offsets[i][j]); - } - angs[i] = Clamp(iters[i], angs[i]); - iters[i]--; - more = GL_TRUE; - } - } - if (more) { - glutPostRedisplay(); - } else { - glutIdleFunc(NULL); - } -} - -void -DrawScene(void) -{ - int i; - - glPushMatrix(); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0); - - for (i = 0; i < RINGS; i++) { - if (rgb) { - glColor3ubv(rgb_colors[i]); - } else { - glIndexi(mapped_colors[i]); - } - glPushMatrix(); - glTranslatef(dests[i][0] + offsets[i][0], dests[i][1] + offsets[i][1], - dests[i][2] + offsets[i][2]); - glRotatef(angs[i], rotAxis[i][0], rotAxis[i][1], rotAxis[i][2]); - glCallList(theTorus); - glPopMatrix(); - } - - glPopMatrix(); - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -float -MyRand(void) -{ - return 10.0 * (drand48() - 0.5); -} - -void -ReInit(void) -{ - int i; - float deviation; - - deviation = MyRand() / 2; - deviation = deviation * deviation; - for (i = 0; i < RINGS; i++) { - offsets[i][0] = MyRand(); - offsets[i][1] = MyRand(); - offsets[i][2] = MyRand(); - angs[i] = 260.0 * MyRand(); - rotAxis[i][0] = MyRand(); - rotAxis[i][1] = MyRand(); - rotAxis[i][2] = MyRand(); - iters[i] = (deviation * MyRand() + 60.0); - } -} - -void -Init(void) -{ - int i; - float top_y = 1.0; - float bottom_y = 0.0; - float top_z = 0.15; - float bottom_z = 0.69; - float spacing = 2.5; - static float lmodel_ambient[] = - {0.0, 0.0, 0.0, 0.0}; - static float lmodel_twoside[] = - {GL_FALSE}; - static float lmodel_local[] = - {GL_FALSE}; - static float light0_ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float light0_diffuse[] = - {1.0, 1.0, 1.0, 0.0}; - static float light0_position[] = - {0.8660254, 0.5, 1, 0}; - static float light0_specular[] = - {1.0, 1.0, 1.0, 0.0}; - static float bevel_mat_ambient[] = - {0.0, 0.0, 0.0, 1.0}; - static float bevel_mat_shininess[] = - {40.0}; - static float bevel_mat_specular[] = - {1.0, 1.0, 1.0, 0.0}; - static float bevel_mat_diffuse[] = - {1.0, 0.0, 0.0, 0.0}; - - srand48(0x102342); - ReInit(); - for (i = 0; i < RINGS; i++) { - rgb_colors[i][0] = rgb_colors[i][1] = rgb_colors[i][2] = 0; - } - rgb_colors[BLUERING][2] = 255; - rgb_colors[REDRING][0] = 255; - rgb_colors[GREENRING][1] = 255; - rgb_colors[YELLOWRING][0] = 255; - rgb_colors[YELLOWRING][1] = 255; - mapped_colors[BLUERING] = BLUE; - mapped_colors[REDRING] = RED; - mapped_colors[GREENRING] = GREEN; - mapped_colors[YELLOWRING] = YELLOW; - mapped_colors[BLACKRING] = BLACK; - - dests[BLUERING][0] = -spacing; - dests[BLUERING][1] = top_y; - dests[BLUERING][2] = top_z; - - dests[BLACKRING][0] = 0.0; - dests[BLACKRING][1] = top_y; - dests[BLACKRING][2] = top_z; - - dests[REDRING][0] = spacing; - dests[REDRING][1] = top_y; - dests[REDRING][2] = top_z; - - dests[YELLOWRING][0] = -spacing / 2.0; - dests[YELLOWRING][1] = bottom_y; - dests[YELLOWRING][2] = bottom_z; - - dests[GREENRING][0] = spacing / 2.0; - dests[GREENRING][1] = bottom_y; - dests[GREENRING][2] = bottom_z; - - theTorus = glGenLists(1); - glNewList(theTorus, GL_COMPILE); - FillTorus(0.1, 8, 1.0, 25); - glEndList(); - - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - glEnable(GL_DEPTH_TEST); - glClearDepth(1.0); - - if (rgb) { - glClearColor(0.5, 0.5, 0.5, 0.0); - glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light0_position); - glEnable(GL_LIGHT0); - - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_local); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glEnable(GL_LIGHTING); - - glMaterialfv(GL_FRONT, GL_AMBIENT, bevel_mat_ambient); - glMaterialfv(GL_FRONT, GL_SHININESS, bevel_mat_shininess); - glMaterialfv(GL_FRONT, GL_SPECULAR, bevel_mat_specular); - glMaterialfv(GL_FRONT, GL_DIFFUSE, bevel_mat_diffuse); - - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glShadeModel(GL_SMOOTH); - } else { - glClearIndex(BACKGROUND); - glShadeModel(GL_FLAT); - } - - glMatrixMode(GL_PROJECTION); - gluPerspective(45, 1.33, 0.1, 100.0); - glMatrixMode(GL_MODELVIEW); -} - -void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); -} - -/* ARGSUSED1 */ -void -Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(0); - break; - case ' ': - ReInit(); - glutIdleFunc(Idle); - break; - } -} - -GLenum -Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_TRUE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-ci") == 0) { - rgb = GL_FALSE; - } else if (strcmp(argv[i], "-rgb") == 0) { - rgb = GL_TRUE; - } else if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - glutIdleFunc(Idle); - } else { - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - GLenum type; - - glutInitWindowSize(400, 300); - glutInit(&argc, argv); - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - type = (rgb) ? GLUT_RGB : GLUT_INDEX; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - glutCreateWindow("Olympic"); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(DrawScene); - - glutVisibilityFunc(visible); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/olympic.dsp b/lib/glut-3.7.6/progs/examples/olympic.dsp deleted file mode 100644 index 07e63cc73725f8d455645ea9e715c9a5bc019c2e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/olympic.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="olympic" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=olympic - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "olympic.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "olympic.mak" CFG="olympic - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "olympic - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "olympic - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "olympic - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "olympic - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "olympic - Win32 Release" -# Name "olympic - Win32 Debug" -# Begin Source File - -SOURCE=.\olympic.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/origami.c b/lib/glut-3.7.6/progs/examples/origami.c deleted file mode 100644 index 7da4bc036a60b1397b473e8569694378c70d5a49..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/origami.c +++ /dev/null @@ -1,403 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -/* Uses EXT_polygon_offset extension if available to better - render the fold outlines. */ - -#if GL_EXT_polygon_offset -int polygon_offset; -#endif - -enum { - FLAT, /* completely flat sheet of paper */ - FLAP1, /* left flap being folded in */ - FLAP2, /* right flap being folded int */ - CENTER2, /* right side folded up at center */ - WING2, /* right wing folded down */ - CENTER1, /* left side folded up at center */ - WING1, /* left wing folded down */ - FOLDED /* fully folded paper airplane */ -} States; - -int motion = 1; -int spinning = 1; -int state = FLAT; -int click = 0; -int delay = 0; -int direction; -float flap1_angle = 0; -float flap2_angle = 0; -float center1_angle = 0; -float center2_angle = 0; -float wing1_angle = 0; -float wing2_angle = 0; - -/** - -These correspond to the polygons for the paper sections: - - +----------+----------+ - | /|\ | - | 2 / | \ 3 | - | / | \ | - +------/ | \------+ - | /| | |\ | - | 1 / | | | \ 4 | - | / | | | \ | - | / | | | \ | - | / | 5 | 6 | \ | - |/ | | | \| - + | | | + - | 7 | | | 8 | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - +------+---+---+------+ - -*/ - -typedef GLfloat Point[2]; - -Point poly1[] = -{ - {-1, 0}, - {-1 / 3.0, 2 / 3.0}, - {-1, 2 / 3.0} -}; - -Point poly2[] = -{ - {-1, 1}, - {-1, 2 / 3.0}, - {-1 / 3.0, 2 / 3.0}, - {0, 1} -}; - -Point poly3[] = -{ - {0, 1}, - {1, 1}, - {1, 2 / 3.0}, - {1 / 3.0, 2 / 3.0} -}; - -Point poly4[] = -{ - {1 / 3.0, 2 / 3.0}, - {1, 2 / 3.0}, - {1, 0} -}; - -Point poly5[] = -{ - {-1 / 3.0, 2 / 3.0}, - {0, 1}, - {0, -1.5}, - {-1 / 3.0, -1.5} -}; - -Point poly6[] = -{ - {0, 1}, - {1 / 3.0, 2 / 3.0}, - {1 / 3.0, -1.5}, - {0, -1.5} -}; - -Point poly7[] = -{ - {-1, 0}, - {-1 / 3.0, 2 / 3.0}, - {-1 / 3.0, -1.5}, - {-1, -1.5} -}; - -Point poly8[] = -{ - {1, 0}, - {1 / 3.0, 2 / 3.0}, - {1 / 3.0, -1.5}, - {1, -1.5} -}; - -void -polydlist(int dlist, int num, Point points[]) -{ - int i; - - glNewList(dlist, GL_COMPILE); - glBegin(GL_POLYGON); - for (i = 0; i < num; i++) { - glVertex2fv(&points[i][0]); - } - glEnd(); - glEndList(); -} - -void -idle(void) -{ - if (spinning) - click++; - switch (state) { - case FLAT: - delay++; - if (delay >= 80) { - delay = 0; - state = FLAP1; - glutSetWindowTitle("origami (folding)"); - direction = 1; - } - break; - case FLAP1: - flap1_angle += 2 * direction; - if (flap1_angle >= 180) { - state = FLAP2; - } else if (flap1_angle <= 0) { - state = FLAT; - } - break; - case FLAP2: - flap2_angle += 2 * direction; - if (flap2_angle >= 180) { - state = CENTER2; - } else if (flap2_angle <= 0) { - state = FLAP1; - } - break; - case CENTER2: - center2_angle += 2 * direction; - if (center2_angle >= 84) { - state = WING2; - } else if (center2_angle <= 0) { - state = FLAP2; - } - break; - case WING2: - wing2_angle += 2 * direction; - if (wing2_angle >= 84) { - state = CENTER1; - } else if (wing2_angle <= 0) { - state = CENTER2; - } - break; - case CENTER1: - center1_angle += 2 * direction; - if (center1_angle >= 84) { - state = WING1; - } else if (center1_angle <= 0) { - state = WING2; - } - break; - case WING1: - wing1_angle += 2 * direction; - if (wing1_angle >= 84) { - state = FOLDED; - } else if (wing1_angle <= 0) { - state = CENTER1; - } - break; - case FOLDED: - delay++; - if (delay >= 80) { - delay = 0; - glutSetWindowTitle("origami (unfolding)"); - direction = -1; - state = WING1; - } - break; - } - glutPostRedisplay(); -} - -void -draw_folded_plane(void) -{ - /* *INDENT-OFF* */ - glPushMatrix(); - glRotatef(click, 0, 0, 1); - glRotatef(click / 5.0, 0, 1, 0); - glTranslatef(0, .25, 0); - glPushMatrix(); - glRotatef(center1_angle, 0, 1, 0); - glPushMatrix(); - glTranslatef(-.5, .5, 0); - glRotatef(flap1_angle, 1, 1, 0); - glTranslatef(.5, -.5, 0); - glCallList(2); - glPopMatrix(); - glCallList(5); - - glPushMatrix(); - glTranslatef(-1 / 3.0, 0, 0); - glRotatef(-wing1_angle, 0, 1, 0); - glTranslatef(1 / 3.0, 0, 0); - - glCallList(7); - glPushMatrix(); - glTranslatef(-.5, .5, 0); - glRotatef(flap1_angle, 1, 1, 0); - glTranslatef(.5, -.5, 0); - glCallList(1); - glPopMatrix(); - glPopMatrix(); - glPopMatrix(); - - glPushMatrix(); - glRotatef(-center2_angle, 0, 1, 0); - glPushMatrix(); - glTranslatef(.5, .5, 0); - glRotatef(-flap2_angle, -1, 1, 0); - glTranslatef(-.5, -.5, 0); - glCallList(3); - glPopMatrix(); - glCallList(6); - - glPushMatrix(); - glTranslatef(1 / 3.0, 0, 0); - glRotatef(wing2_angle, 0, 1, 0); - glTranslatef(-1 / 3.0, 0, 0); - - glCallList(8); - glPushMatrix(); - glTranslatef(.5, .5, 0); - glRotatef(-flap2_angle, -1, 1, 0); - glTranslatef(-.5, -.5, 0); - glCallList(4); - glPopMatrix(); - glPopMatrix(); - glPopMatrix(); - glPopMatrix(); - /* *INDENT-ON* */ - -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glColor3ub(67, 205, 128); -#if GL_EXT_polygon_offset - if (polygon_offset) { - glPolygonOffsetEXT(0.5, 0.0); - glEnable(GL_POLYGON_OFFSET_EXT); - } -#endif - draw_folded_plane(); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glColor3ub(255, 255, 255); -#if GL_EXT_polygon_offset - if (polygon_offset) { - glPolygonOffsetEXT(0.0, 0.0); - /* XXX a bug in the unpatched IRIX 5.3 OpenGL posts - GL_INVALID_ENUM when GL_POLYGON_OFFSET_EXT is disabled; - please ignore it. */ - glDisable(GL_POLYGON_OFFSET_EXT); - } else { - glPushMatrix(); - glTranslatef(0, 0, .05); - } -#else - glPushMatrix(); - glTranslatef(0, 0, .05); -#endif - draw_folded_plane(); -#if GL_EXT_polygon_offset - if (!polygon_offset) { - glPopMatrix(); - } -#else - glPopMatrix(); -#endif - glutSwapBuffers(); -} - -void -visible(int state) -{ - if (state == GLUT_VISIBLE) { - if (motion) - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } -} - -void -menu(int value) -{ - switch (value) { - case 1: - direction = -direction; - if (direction > 0) { - glutSetWindowTitle("origami (folding)"); - } else { - glutSetWindowTitle("origami (unfolding)"); - } - break; - case 2: - motion = 1 - motion; - if (motion) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } - break; - case 3: - spinning = 1 - spinning; - break; - case 666: - exit(0); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow("origami"); - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glClearColor(.488, .617, .75, 1.0); - glMatrixMode(GL_PROJECTION); - gluPerspective(40.0, 1.0, 0.1, 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0, 0, 5.5, - 0, 0, 0, - 0, 1, 0); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - glLineWidth(2.0); - polydlist(1, sizeof(poly1) / sizeof(Point), poly1); - polydlist(2, sizeof(poly2) / sizeof(Point), poly2); - polydlist(3, sizeof(poly3) / sizeof(Point), poly3); - polydlist(4, sizeof(poly4) / sizeof(Point), poly4); - polydlist(5, sizeof(poly5) / sizeof(Point), poly5); - polydlist(6, sizeof(poly6) / sizeof(Point), poly6); - polydlist(7, sizeof(poly7) / sizeof(Point), poly7); - polydlist(8, sizeof(poly8) / sizeof(Point), poly8); - glutCreateMenu(menu); - glutAddMenuEntry("Reverse direction", 1); - glutAddMenuEntry("Toggle motion", 2); - glutAddMenuEntry("Toggle spinning", 3); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); -#if GL_EXT_polygon_offset - polygon_offset = glutExtensionSupported("GL_EXT_polygon_offset"); -#endif - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/origami.dsp b/lib/glut-3.7.6/progs/examples/origami.dsp deleted file mode 100644 index d517c453a9d1b4fbf9b3c724ed37ce1911cd7529..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/origami.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="origami" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=origami - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "origami.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "origami.mak" CFG="origami - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "origami - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "origami - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "origami - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "origami - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "origami - Win32 Release" -# Name "origami - Win32 Debug" -# Begin Source File - -SOURCE=.\origami.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/oversphere.c b/lib/glut-3.7.6/progs/examples/oversphere.c deleted file mode 100644 index e186fdec4d0c9fa6deb2842aa21ab406bdcc8029..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/oversphere.c +++ /dev/null @@ -1,210 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -#define MAX_SPHERES 50 - -typedef struct { - GLfloat x, y, z; - int detail; - int material; -} SphereInfo; -/* *INDENT-OFF* */ - -GLfloat lightPos[4] = {2.0, 4.0, 2.0, 1.0}; -GLfloat lightDir[4] = {-2.0, -4.0, -2.0, 1.0}; -GLfloat lightAmb[4] = {0.2, 0.2, 0.2, 1.0}; -GLfloat lightDiff[4] = {0.8, 0.8, 0.8, 1.0}; -GLfloat lightSpec[4] = {0.4, 0.4, 0.4, 1.0}; -GLfloat matColor[3][4] = { - {0.5, 0.0, 0.0, 1.0}, - {0.0, 0.5, 0.0, 1.0}, - {0.0, 0.0, 0.5, 1.0}, -}; -/* *INDENT-ON* */ - -GLdouble modelMatrix[16], projMatrix[16]; -GLint viewport[4]; -int width, height; -int opaque, transparent; -SphereInfo sphereInfo[MAX_SPHERES]; -int spheres = 0; -SphereInfo overlaySphere, oldOverlaySphere; - -void -drawSphere(SphereInfo * sphere) -{ - glPushMatrix(); - glTranslatef(sphere->x, sphere->y, sphere->z); - glMaterialfv(GL_FRONT_AND_BACK, - GL_AMBIENT_AND_DIFFUSE, matColor[sphere->material]); - glutSolidSphere(1.0, sphere->detail, sphere->detail); - glPopMatrix(); -} - -void -display(void) -{ - int i; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - for (i = 0; i < spheres; i++) { - drawSphere(&sphereInfo[i]); - } - glutSwapBuffers(); -} - -void -overlayDisplay(void) -{ - if (glutLayerGet(GLUT_OVERLAY_DAMAGED)) { - /* If damaged, clear the overlay. */ - glClear(GL_COLOR_BUFFER_BIT); - } else { - /* If not damaged, undraw last overlay sphere. */ - glIndexi(transparent); - drawSphere(&oldOverlaySphere); - } - glIndexi(opaque); - drawSphere(&overlaySphere); - /* Single buffered window needs flush. */ - glFlush(); - /* Remember last overaly sphere position for undrawing. */ - oldOverlaySphere = overlaySphere; -} - -void -reshape(int w, int h) -{ - width = w; - height = h; - /* Reshape both layers. */ - glutUseLayer(GLUT_OVERLAY); - glViewport(0, 0, w, h); - glutUseLayer(GLUT_NORMAL); - glViewport(0, 0, w, h); - /* Read back viewport for gluUnProject. */ - glGetIntegerv(GL_VIEWPORT, viewport); -} - -void -mouse(int button, int state, int x, int y) -{ - GLdouble objx, objy, objz; - - gluUnProject(x, height - y, 0.95, - modelMatrix, projMatrix, viewport, - &objx, &objy, &objz); - overlaySphere.x = objx; - overlaySphere.y = objy; - overlaySphere.z = objz; - overlaySphere.material = button; - glutUseLayer(GLUT_OVERLAY); - glutSetColor(opaque, - 2 * matColor[button][0], /* Red. */ - 2 * matColor[button][1], /* Green. */ - 2 * matColor[button][2]); /* Blue. */ - if (state == GLUT_UP) { - glutHideOverlay(); - if (spheres < MAX_SPHERES) { - sphereInfo[spheres] = overlaySphere; - sphereInfo[spheres].detail = 25; /* Fine tesselation. */ - spheres++; - } else { - printf("oversphere: Out of spheres.\n"); - } - glutPostRedisplay(); - } else { - overlaySphere.detail = 10; /* Coarse tesselation. */ - glutShowOverlay(); - glutPostOverlayRedisplay(); - } -} - -void -motion(int x, int y) -{ - GLdouble objx, objy, objz; - - gluUnProject(x, height - y, 0.95, - modelMatrix, projMatrix, viewport, - &objx, &objy, &objz); - overlaySphere.x = objx; - overlaySphere.y = objy; - overlaySphere.z = objz; - glutPostOverlayRedisplay(); -} - -void -setupMatrices(void) -{ - glMatrixMode(GL_PROJECTION); - gluPerspective( /* degrees field of view */ 50.0, - /* aspect ratio */ 1.0, /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt( - 0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(350, 350); - glutInit(&argc, argv); - - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow("Overlay Sphere Positioning Demo"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); /* Solid spheres benefit greatly - from back face culling. */ - setupMatrices(); - /* Read back matrices for use by gluUnProject. */ - glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); - glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); - - /* Set up lighting. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiff); - glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpec); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); - - glutInitDisplayMode(GLUT_INDEX | GLUT_SINGLE); - if (glutLayerGet(GLUT_OVERLAY_POSSIBLE) == 0) { - printf("oversphere: no overlays supported; aborting.\n"); - exit(1); - } - glutEstablishOverlay(); - glutHideOverlay(); - glutOverlayDisplayFunc(overlayDisplay); - - /* Find transparent and opaque index. */ - transparent = glutLayerGet(GLUT_TRANSPARENT_INDEX); - opaque = (transparent + 1) - % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - - /* Draw overlay sphere as an outline. */ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - /* Make sure overlay clears to transparent. */ - glClearIndex(transparent); - /* Set up overlay matrices same as normal plane. */ - setupMatrices(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/examples/oversphere.dsp b/lib/glut-3.7.6/progs/examples/oversphere.dsp deleted file mode 100644 index fbff291e1dcaa2d89dec5227099d590ae09c5cfd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/oversphere.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="oversphere" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=oversphere - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "oversphere.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "oversphere.mak" CFG="oversphere - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "oversphere - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "oversphere - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "oversphere - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "oversphere - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "oversphere - Win32 Release" -# Name "oversphere - Win32 Debug" -# Begin Source File - -SOURCE=.\oversphere.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/reflectdino.c b/lib/glut-3.7.6/progs/examples/reflectdino.c deleted file mode 100644 index 8111a36cbcecab3c95bf98c366a4c41094ad02a1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/reflectdino.c +++ /dev/null @@ -1,405 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Very simple example of how to achieve reflections on a flat - surface using OpenGL blending. The example has a mode using - OpenGL stenciling to avoid drawing the reflection not on the top of the - floor. Initially, stenciling is not used so if you look (by holding - down the left mouse button and moving) at the dinosaur from "below" - the floor, you'll see a bogus dinosaur and appreciate how the basic - technique works. Enable stenciling with the popup menu and the - bogus dinosaur goes away! Also, notice that OpenGL lighting works - correctly with reflections. */ - -/* Check out the comments in the "redraw" routine to see how the - reflection blending and surface stenciling is done. */ - -/* This program is derived from glutdino.c */ - -/* Compile: cc -o reflectdino reflectdino.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE -} displayLists; - -GLfloat angle = 20; /* in degrees */ -GLfloat angle2 = 30; /* in degrees */ -int moving, startx, starty; -int W = 300, H = 300; -int useStencil = 0; /* Initially, allow the artifacts. */ -GLdouble bodyWidth = 3.0; -float jump = 0.0; -/* *INDENT-OFF* */ -GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -GLfloat lightZeroPosition[] = {10.0, 14.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, 1.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -/* *INDENT-ON* */ - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = dataSize / (int) (2 * sizeof(GLfloat)); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygon tesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - /* Calculate a unit normal by dividing by Euclidean - distance. We * could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in * arbitrary - normals for a very slight performance hit. */ - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void -makeDinosaur(void) -{ - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); -} - -void -drawDinosaur(void) -{ - glPushMatrix(); - glTranslatef(0.0, jump, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glPopMatrix(); -} - -void -drawFloor(void) -{ - glDisable(GL_LIGHTING); - glBegin(GL_QUADS); - glVertex3f(-18.0, 0.0, 27.0); - glVertex3f(27.0, 0.0, 27.0); - glVertex3f(27.0, 0.0, -18.0); - glVertex3f(-18.0, 0.0, -18.0); - glEnd(); - glEnable(GL_LIGHTING); -} - -void -redraw(void) -{ - if (useStencil) { - /* Clear; default stencil clears to zero. */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - } else { - /* Not using stencil; just clear color and depth. */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - } - - glPushMatrix(); - /* Perform scene rotations based on user mouse input. */ - glRotatef(angle2, 1.0, 0.0, 0.0); - glRotatef(angle, 0.0, 1.0, 0.0); - - /* Translate the dinosaur to be at (0,0,0). */ - glTranslatef(-8, -8, -bodyWidth / 2); - - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - - if (useStencil) { - - /* We can eliminate the visual "artifact" of seeing the "flipped" - dinosaur underneath the floor by using stencil. The idea is - draw the floor without color or depth update but so that - a stencil value of one is where the floor will be. Later when - rendering the dinosaur reflection, we will only update pixels - with a stencil value of 1 to make sure the reflection only - lives on the floor, not below the floor. */ - - /* Don't update color or depth. */ - glDisable(GL_DEPTH_TEST); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - - /* Draw 1 into the stencil buffer. */ - glEnable(GL_STENCIL_TEST); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glStencilFunc(GL_ALWAYS, 1, 0xffffffff); - - /* Now render floor; floor pixels just get their stencil set to 1. */ - drawFloor(); - - /* Re-enable update of color and depth. */ - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glEnable(GL_DEPTH_TEST); - - /* Now, only render where stencil is set to 1. */ - glStencilFunc(GL_EQUAL, 1, 0xffffffff); /* draw if ==1 */ - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - } - - glPushMatrix(); - - /* The critical reflection step: Reflect dinosaur through the floor - (the Y=0 plane) to make a relection. */ - glScalef(1.0, -1.0, 1.0); - - /* Position lights now in reflected space. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - - /* XXX Ugh, unfortunately the back face culling reverses when we reflect - the dinosaur. Easy solution is just disable back face culling for - rendering the reflection. Also, the normals for lighting get screwed - up by the scale; enabled normalize to ensure normals are still - properly normalized despite the scaling. We could have fixed the - dinosaur rendering code, but this is more expedient. */ - glEnable(GL_NORMALIZE); - glCullFace(GL_FRONT); - - /* Draw the reflected dinosaur. */ - drawDinosaur(); - - /* Disable noramlize again and re-enable back face culling. */ - glDisable(GL_NORMALIZE); - glCullFace(GL_BACK); - - glPopMatrix(); - - /* Restore light positions on returned from reflected space. */ - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - - - if (useStencil) { - /* Don't want to be using stenciling for drawing the actual dinosaur - (not its reflection) and the floor. */ - glDisable(GL_STENCIL_TEST); - } - - /* Back face culling will get used to only draw either the top or the - bottom floor. This let's us get a floor with two distinct - appearances. The top floor surface is reflective and kind of red. - The bottom floor surface is not reflective and blue. */ - - /* Draw "top" of floor. Use blending to blend in reflection. */ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glColor4f(0.7, 0.0, 0.0, 0.3); - drawFloor(); - glDisable(GL_BLEND); - - /* Draw "bottom" of floor in blue. */ - glFrontFace(GL_CW); /* Switch face orientation. */ - glColor4f(0.1, 0.1, 0.7, 1.0); - drawFloor(); - glFrontFace(GL_CCW); - - /* Draw "actual" dinosaur, not its reflection. */ - drawDinosaur(); - - glPopMatrix(); - - glutSwapBuffers(); -} - -/* ARGSUSED2 */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - moving = 1; - startx = x; - starty = y; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - startx); - angle2 = angle2 + (y - starty); - startx = x; - starty = y; - glutPostRedisplay(); - } -} - -GLboolean lightZeroSwitch = GL_TRUE, lightOneSwitch = GL_TRUE; - -void -controlLights(int value) -{ - switch (value) { - case 1: - lightZeroSwitch = !lightZeroSwitch; - if (lightZeroSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case 2: - lightOneSwitch = !lightOneSwitch; - if (lightOneSwitch) { - glEnable(GL_LIGHT1); - } else { - glDisable(GL_LIGHT1); - } - break; - case 3: - useStencil = 1 - useStencil; - break; - } - glutPostRedisplay(); -} - -void -idle(void) -{ - static float time; - - time = glutGet(GLUT_ELAPSED_TIME) / 500.0; - - jump = 3.0 * fabs(sin(time)); - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL); - glutCreateWindow("Leapin' Lizards"); - glutDisplayFunc(redraw); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutVisibilityFunc(visible); - glutCreateMenu(controlLights); - glutAddMenuEntry("Toggle right light", 1); - glutAddMenuEntry("Toggle left light", 2); - glutAddMenuEntry("Toggle stenciling out reflection artifacts", 3); - glutAttachMenu(GLUT_RIGHT_BUTTON); - makeDinosaur(); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 80.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 40.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/reflectdino.dsp b/lib/glut-3.7.6/progs/examples/reflectdino.dsp deleted file mode 100644 index d95c59c2e7b655699872e339c8bd38604b28839d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/reflectdino.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="reflectdino" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=reflectdino - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "reflectdino.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "reflectdino.mak" CFG="reflectdino - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "reflectdino - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "reflectdino - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "reflectdino - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "reflectdino - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "reflectdino - Win32 Release" -# Name "reflectdino - Win32 Debug" -# Begin Source File - -SOURCE=.\reflectdino.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/rendereps.c b/lib/glut-3.7.6/progs/examples/rendereps.c deleted file mode 100644 index 5e91ce9e59da36d5f7a1afd3237d601a3607046f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/rendereps.c +++ /dev/null @@ -1,709 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Example showing how to use OpenGL's feedback mode to capture - transformed vertices and output them as Encapsulated PostScript. - Handles limited hidden surface removal by sorting and does - smooth shading (albeit limited due to PostScript). */ - -/* Compile: cc -o rendereps rendereps.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include -#include - -/* OpenGL's GL_3D_COLOR feedback vertex format. */ -typedef struct _Feedback3Dcolor { - GLfloat x; - GLfloat y; - GLfloat z; - GLfloat red; - GLfloat green; - GLfloat blue; - GLfloat alpha; -} Feedback3Dcolor; - -int blackBackground = 0; /* Initially use a white background. */ -int lighting = 0; /* Initially disable lighting. */ -int polygonMode = 1; /* Initially show wireframe. */ -int object = 1; /* Initially show the torus. */ - -GLfloat angle = 0.0; /* Angle of rotation for object. */ -int moving, begin; /* For interactive object rotation. */ -int size = 1; /* Size of lines and points. */ - -/* How many feedback buffer GLfloats each of the three objects need. */ -int objectComplexity[3] = -{6000, 14000, 380000}; /* Teapot requires ~1.5 megabytes for - its feedback results! */ - -/* render gets called both by "display" (in OpenGL render mode) - and by "outputEPS" (in OpenGL feedback mode). */ -void -render(void) -{ - glPushMatrix(); - glRotatef(angle, 0.0, 1.0, 0.0); - switch (object) { - case 0: - glutSolidSphere(1.0, 10, 10); - break; - case 1: - glutSolidTorus(0.5, 1.0, 15, 15); - break; - case 2: - glutSolidTeapot(1.0); - break; - } - glPopMatrix(); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - render(); - glutSwapBuffers(); -} - -void -updateBackground(void) -{ - if (blackBackground) { - /* Clear to black. */ - glClearColor(0.0, 0.0, 0.0, 1.0); - } else { - /* Clear to white. */ - glClearColor(1.0, 1.0, 1.0, 1.0); - } -} - -void -updateLighting(void) -{ - if (lighting) { - glEnable(GL_LIGHTING); - } else { - glDisable(GL_LIGHTING); - } -} - -void -updatePolygonMode(void) -{ - switch (polygonMode) { - case 0: - glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); - break; - case 1: - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - break; - case 2: - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - } -} - -/* Write contents of one vertex to stdout. */ -void -print3DcolorVertex(GLint size, GLint * count, - GLfloat * buffer) -{ - int i; - - printf(" "); - for (i = 0; i < 7; i++) { - printf("%4.2f ", buffer[size - (*count)]); - *count = *count - 1; - } - printf("\n"); -} - -void -printBuffer(GLint size, GLfloat * buffer) -{ - GLint count; - int token, nvertices; - - count = size; - while (count) { - token = buffer[size - count]; - count--; - switch (token) { - case GL_PASS_THROUGH_TOKEN: - printf("GL_PASS_THROUGH_TOKEN\n"); - printf(" %4.2f\n", buffer[size - count]); - count--; - break; - case GL_POINT_TOKEN: - printf("GL_POINT_TOKEN\n"); - print3DcolorVertex(size, &count, buffer); - break; - case GL_LINE_TOKEN: - printf("GL_LINE_TOKEN\n"); - print3DcolorVertex(size, &count, buffer); - print3DcolorVertex(size, &count, buffer); - break; - case GL_LINE_RESET_TOKEN: - printf("GL_LINE_RESET_TOKEN\n"); - print3DcolorVertex(size, &count, buffer); - print3DcolorVertex(size, &count, buffer); - break; - case GL_POLYGON_TOKEN: - printf("GL_POLYGON_TOKEN\n"); - nvertices = buffer[size - count]; - count--; - for (; nvertices > 0; nvertices--) { - print3DcolorVertex(size, &count, buffer); - } - } - } -} - -GLfloat pointSize; - -static char *gouraudtriangleEPS[] = -{ - "/bd{bind def}bind def /triangle { aload pop setrgbcolor aload pop 5 3", - "roll 4 2 roll 3 2 roll exch moveto lineto lineto closepath fill } bd", - "/computediff1 { 2 copy sub abs threshold ge {pop pop pop true} { exch 2", - "index sub abs threshold ge { pop pop true} { sub abs threshold ge } ifelse", - "} ifelse } bd /computediff3 { 3 copy 0 get 3 1 roll 0 get 3 1 roll 0 get", - "computediff1 {true} { 3 copy 1 get 3 1 roll 1 get 3 1 roll 1 get", - "computediff1 {true} { 3 copy 2 get 3 1 roll 2 get 3 1 roll 2 get", - "computediff1 } ifelse } ifelse } bd /middlecolor { aload pop 4 -1 roll", - "aload pop 4 -1 roll add 2 div 5 1 roll 3 -1 roll add 2 div 3 1 roll add 2", - "div 3 1 roll exch 3 array astore } bd /gouraudtriangle { computediff3 { 4", - "-1 roll aload 7 1 roll 6 -1 roll pop 3 -1 roll pop add 2 div 3 1 roll add", - "2 div exch 3 -1 roll aload 7 1 roll exch pop 4 -1 roll pop add 2 div 3 1", - "roll add 2 div exch 3 -1 roll aload 7 1 roll pop 3 -1 roll pop add 2 div 3", - "1 roll add 2 div exch 7 3 roll 10 -3 roll dup 3 index middlecolor 4 1 roll", - "2 copy middlecolor 4 1 roll 3 copy pop middlecolor 4 1 roll 13 -1 roll", - "aload pop 17 index 6 index 15 index 19 index 6 index 17 index 6 array", - "astore 10 index 10 index 14 index gouraudtriangle 17 index 5 index 17", - "index 19 index 5 index 19 index 6 array astore 10 index 9 index 13 index", - "gouraudtriangle 13 index 16 index 5 index 15 index 18 index 5 index 6", - "array astore 12 index 12 index 9 index gouraudtriangle 17 index 16 index", - "15 index 19 index 18 index 17 index 6 array astore 10 index 12 index 14", - "index gouraudtriangle 18 {pop} repeat } { aload pop 5 3 roll aload pop 7 3", - "roll aload pop 9 3 roll 4 index 6 index 4 index add add 3 div 10 1 roll 7", - "index 5 index 3 index add add 3 div 10 1 roll 6 index 4 index 2 index add", - "add 3 div 10 1 roll 9 {pop} repeat 3 array astore triangle } ifelse } bd", - NULL -}; - -GLfloat * -spewPrimitiveEPS(FILE * file, GLfloat * loc) -{ - int token; - int nvertices, i; - GLfloat red, green, blue; - int smooth; - GLfloat dx, dy, dr, dg, db, absR, absG, absB, colormax; - int steps; - Feedback3Dcolor *vertex; - GLfloat xstep, ystep, rstep, gstep, bstep; - GLfloat xnext, ynext, rnext, gnext, bnext, distance; - - token = *loc; - loc++; - switch (token) { - case GL_LINE_RESET_TOKEN: - case GL_LINE_TOKEN: - vertex = (Feedback3Dcolor *) loc; - - dr = vertex[1].red - vertex[0].red; - dg = vertex[1].green - vertex[0].green; - db = vertex[1].blue - vertex[0].blue; - - if (dr != 0 || dg != 0 || db != 0) { - /* Smooth shaded line. */ - dx = vertex[1].x - vertex[0].x; - dy = vertex[1].y - vertex[0].y; - distance = sqrt(dx * dx + dy * dy); - - absR = fabs(dr); - absG = fabs(dg); - absB = fabs(db); - -#define Max(a,b) (((a)>(b))?(a):(b)) - -#define EPS_SMOOTH_LINE_FACTOR 0.06 /* Lower for better smooth - - lines. */ - - colormax = Max(absR, Max(absG, absB)); - steps = Max(1.0, colormax * distance * EPS_SMOOTH_LINE_FACTOR); - - xstep = dx / steps; - ystep = dy / steps; - - rstep = dr / steps; - gstep = dg / steps; - bstep = db / steps; - - xnext = vertex[0].x; - ynext = vertex[0].y; - rnext = vertex[0].red; - gnext = vertex[0].green; - bnext = vertex[0].blue; - - /* Back up half a step; we want the end points to be - exactly the their endpoint colors. */ - xnext -= xstep / 2.0; - ynext -= ystep / 2.0; - rnext -= rstep / 2.0; - gnext -= gstep / 2.0; - bnext -= bstep / 2.0; - } else { - /* Single color line. */ - steps = 0; - } - - fprintf(file, "%g %g %g setrgbcolor\n", - vertex[0].red, vertex[0].green, vertex[0].blue); - fprintf(file, "%g %g moveto\n", vertex[0].x, vertex[0].y); - - for (i = 0; i < steps; i++) { - xnext += xstep; - ynext += ystep; - rnext += rstep; - gnext += gstep; - bnext += bstep; - fprintf(file, "%g %g lineto stroke\n", xnext, ynext); - fprintf(file, "%g %g %g setrgbcolor\n", rnext, gnext, bnext); - fprintf(file, "%g %g moveto\n", xnext, ynext); - } - fprintf(file, "%g %g lineto stroke\n", vertex[1].x, vertex[1].y); - - loc += 14; /* Each vertex element in the feedback - buffer is 7 GLfloats. */ - - break; - case GL_POLYGON_TOKEN: - nvertices = *loc; - loc++; - - vertex = (Feedback3Dcolor *) loc; - - if (nvertices > 0) { - red = vertex[0].red; - green = vertex[0].green; - blue = vertex[0].blue; - smooth = 0; - for (i = 1; i < nvertices; i++) { - if (red != vertex[i].red || green != vertex[i].green || blue != vertex[i].blue) { - smooth = 1; - break; - } - } - if (smooth) { - /* Smooth shaded polygon; varying colors at vetices. */ - /* Break polygon into "nvertices-2" triangle fans. */ - for (i = 0; i < nvertices - 2; i++) { - fprintf(file, "[%g %g %g %g %g %g]", - vertex[0].x, vertex[i + 1].x, vertex[i + 2].x, - vertex[0].y, vertex[i + 1].y, vertex[i + 2].y); - fprintf(file, " [%g %g %g] [%g %g %g] [%g %g %g] gouraudtriangle\n", - vertex[0].red, vertex[0].green, vertex[0].blue, - vertex[i + 1].red, vertex[i + 1].green, vertex[i + 1].blue, - vertex[i + 2].red, vertex[i + 2].green, vertex[i + 2].blue); - } - } else { - /* Flat shaded polygon; all vertex colors the same. */ - fprintf(file, "newpath\n"); - fprintf(file, "%g %g %g setrgbcolor\n", red, green, blue); - - /* Draw a filled triangle. */ - fprintf(file, "%g %g moveto\n", vertex[0].x, vertex[0].y); - for (i = 1; i < nvertices; i++) { - fprintf(file, "%g %g lineto\n", vertex[i].x, vertex[i].y); - } - fprintf(file, "closepath fill\n\n"); - } - } - loc += nvertices * 7; /* Each vertex element in the - feedback buffer is 7 GLfloats. */ - break; - case GL_POINT_TOKEN: - vertex = (Feedback3Dcolor *) loc; - fprintf(file, "%g %g %g setrgbcolor\n", vertex[0].red, vertex[0].green, vertex[0].blue); - fprintf(file, "%g %g %g 0 360 arc fill\n\n", vertex[0].x, vertex[0].y, pointSize / 2.0); - loc += 7; /* Each vertex element in the feedback - buffer is 7 GLfloats. */ - break; - default: - /* XXX Left as an excersie to the reader. */ - printf("Incomplete implementation. Unexpected token (%d).\n", token); - exit(1); - } - return loc; -} - -void -spewUnsortedFeedback(FILE * file, GLint size, GLfloat * buffer) -{ - GLfloat *loc, *end; - - loc = buffer; - end = buffer + size; - while (loc < end) { - loc = spewPrimitiveEPS(file, loc); - } -} - -typedef struct _DepthIndex { - GLfloat *ptr; - GLfloat depth; -} DepthIndex; - -static int -compare(const void *a, const void *b) -{ - DepthIndex *p1 = (DepthIndex *) a; - DepthIndex *p2 = (DepthIndex *) b; - GLfloat diff = p2->depth - p1->depth; - - if (diff > 0.0) { - return 1; - } else if (diff < 0.0) { - return -1; - } else { - return 0; - } -} - -void -spewSortedFeedback(FILE * file, GLint size, GLfloat * buffer) -{ - int token; - GLfloat *loc, *end; - Feedback3Dcolor *vertex; - GLfloat depthSum; - int nprimitives, item; - DepthIndex *prims; - int nvertices, i; - - end = buffer + size; - - /* Count how many primitives there are. */ - nprimitives = 0; - loc = buffer; - while (loc < end) { - token = *loc; - loc++; - switch (token) { - case GL_LINE_TOKEN: - case GL_LINE_RESET_TOKEN: - loc += 14; - nprimitives++; - break; - case GL_POLYGON_TOKEN: - nvertices = *loc; - loc++; - loc += (7 * nvertices); - nprimitives++; - break; - case GL_POINT_TOKEN: - loc += 7; - nprimitives++; - break; - default: - /* XXX Left as an excersie to the reader. */ - printf("Incomplete implementation. Unexpected token (%d).\n", - token); - exit(1); - } - } - - /* Allocate an array of pointers that will point back at - primitives in the feedback buffer. There will be one - entry per primitive. This array is also where we keep the - primitive's average depth. There is one entry per - primitive in the feedback buffer. */ - prims = (DepthIndex *) malloc(sizeof(DepthIndex) * nprimitives); - - item = 0; - loc = buffer; - while (loc < end) { - prims[item].ptr = loc; /* Save this primitive's location. */ - token = *loc; - loc++; - switch (token) { - case GL_LINE_TOKEN: - case GL_LINE_RESET_TOKEN: - vertex = (Feedback3Dcolor *) loc; - depthSum = vertex[0].z + vertex[1].z; - prims[item].depth = depthSum / 2.0; - loc += 14; - break; - case GL_POLYGON_TOKEN: - nvertices = *loc; - loc++; - vertex = (Feedback3Dcolor *) loc; - depthSum = vertex[0].z; - for (i = 1; i < nvertices; i++) { - depthSum += vertex[i].z; - } - prims[item].depth = depthSum / nvertices; - loc += (7 * nvertices); - break; - case GL_POINT_TOKEN: - vertex = (Feedback3Dcolor *) loc; - prims[item].depth = vertex[0].z; - loc += 7; - break; - default: - /* XXX Left as an excersie to the reader. */ - assert(1); - } - item++; - } - assert(item == nprimitives); - - /* Sort the primitives back to front. */ - qsort(prims, nprimitives, sizeof(DepthIndex), compare); - - /* XXX Understand that sorting by a primitives average depth - doesn't allow us to disambiguate some cases like self - intersecting polygons. Handling these cases would require - breaking up the primitives. That's too involved for this - example. Sorting by depth is good enough for lots of - applications. */ - - /* Emit the Encapsulated PostScript for the primitives in - back to front order. */ - for (item = 0; item < nprimitives; item++) { - (void) spewPrimitiveEPS(file, prims[item].ptr); - } - - free(prims); -} - -#define EPS_GOURAUD_THRESHOLD 0.1 /* Lower for better (slower) - - smooth shading. */ - -void -spewWireFrameEPS(FILE * file, int doSort, GLint size, GLfloat * buffer, char *creator) -{ - GLfloat clearColor[4], viewport[4]; - GLfloat lineWidth; - int i; - - /* Read back a bunch of OpenGL state to help make the EPS - consistent with the OpenGL clear color, line width, point - size, and viewport. */ - glGetFloatv(GL_VIEWPORT, viewport); - glGetFloatv(GL_COLOR_CLEAR_VALUE, clearColor); - glGetFloatv(GL_LINE_WIDTH, &lineWidth); - glGetFloatv(GL_POINT_SIZE, &pointSize); - - /* Emit EPS header. */ - fputs("%!PS-Adobe-2.0 EPSF-2.0\n", file); - /* Notice %% for a single % in the fprintf calls. */ - fprintf(file, "%%%%Creator: %s (using OpenGL feedback)\n", creator); - fprintf(file, "%%%%BoundingBox: %g %g %g %g\n", - viewport[0], viewport[1], viewport[2], viewport[3]); - fputs("%%EndComments\n", file); - fputs("\n", file); - fputs("gsave\n", file); - fputs("\n", file); - - /* Output Frederic Delhoume's "gouraudtriangle" PostScript - fragment. */ - fputs("% the gouraudtriangle PostScript fragement below is free\n", file); - fputs("% written by Frederic Delhoume (delhoume@ilog.fr)\n", file); - fprintf(file, "/threshold %g def\n", EPS_GOURAUD_THRESHOLD); - for (i = 0; gouraudtriangleEPS[i]; i++) { - fprintf(file, "%s\n", gouraudtriangleEPS[i]); - } - - fprintf(file, "\n%g setlinewidth\n", lineWidth); - - /* Clear the background like OpenGL had it. */ - fprintf(file, "%g %g %g setrgbcolor\n", - clearColor[0], clearColor[1], clearColor[2]); - fprintf(file, "%g %g %g %g rectfill\n\n", - viewport[0], viewport[1], viewport[2], viewport[3]); - - if (doSort) { - spewSortedFeedback(file, size, buffer); - } else { - spewUnsortedFeedback(file, size, buffer); - } - - /* Emit EPS trailer. */ - fputs("grestore\n\n", file); - fputs("%Add `showpage' to the end of this file to be able to print to a printer.\n", - file); - - fclose(file); -} - -void -outputEPS(int size, int doSort, char *filename) -{ - GLfloat *feedbackBuffer; - GLint returned; - FILE *file; - - feedbackBuffer = calloc(size, sizeof(GLfloat)); - glFeedbackBuffer(size, GL_3D_COLOR, feedbackBuffer); - (void) glRenderMode(GL_FEEDBACK); - render(); - returned = glRenderMode(GL_RENDER); - if (filename) { - file = fopen(filename, "w"); - if (file) { - spewWireFrameEPS(file, doSort, returned, feedbackBuffer, "rendereps"); - } else { - printf("Could not open %s\n", filename); - } - } else { - /* Helps debugging to be able to see the decode feedback - buffer as text. */ - printBuffer(returned, feedbackBuffer); - } - free(feedbackBuffer); -} - -void -choice(int value) -{ - switch (value) { - case 0: - glutSetCursor(GLUT_CURSOR_WAIT); - outputEPS(objectComplexity[object], 1, "render.eps"); - glutSetCursor(GLUT_CURSOR_INHERIT); - break; - case 1: - glutSetCursor(GLUT_CURSOR_WAIT); - outputEPS(objectComplexity[object], 0, "render.eps"); - glutSetCursor(GLUT_CURSOR_INHERIT); - break; - case 2: - /* Try to start GNU "ghostview" to preview the EPS. */ - system("ghostview render.eps &"); - break; - case 3: - glutSetCursor(GLUT_CURSOR_WAIT); - outputEPS(objectComplexity[object], 0, NULL); - glutSetCursor(GLUT_CURSOR_INHERIT); - break; - case 4: - blackBackground = 1 - blackBackground; - updateBackground(); - glutPostRedisplay(); - break; - case 5: - lighting = 1 - lighting; - updateLighting(); - glutPostRedisplay(); - break; - case 6: - polygonMode = (polygonMode + 1) % 3; - updatePolygonMode(); - glutPostRedisplay(); - break; - case 7: - size = (size % 5) + 1; - glLineWidth(size); - glPointSize(size); - glutPostRedisplay(); - break; - case 8: - object = (object + 1) % 3; - glutPostRedisplay(); - break; - case 666: - exit(0); - break; - } -} - -/* ARGSUSED2 */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - moving = 1; - begin = x; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - begin); - begin = x; - glutPostRedisplay(); - } -} - -GLfloat light_diffuse[] = -{0.0, 1.0, 0.0, 1.0}; /* Green light. */ -GLfloat light_position[] = -{1.0, 1.0, 1.0, 0.0}; - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("rendereps"); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHT0); - - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 22.0, - /* aspect ratio */ 1.0, - /* Z near */ 5.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glTranslatef(0.0, 0.0, -3.0); - - /* Give the object an "interesting" orientation. */ - glRotatef(25, 1.0, 0.0, 0.0); - - glutCreateMenu(choice); - glutAddMenuEntry("Write out Encapsulated PS (sorted)", 0); - glutAddMenuEntry("Write out Encapsulated PS (UNsorted)", 1); - glutAddMenuEntry("Spawn ghostview to view EPS", 2); - glutAddMenuEntry("Display feedback buffer", 3); - glutAddMenuEntry("Toggle black/white background", 4); - glutAddMenuEntry("Toggle lighting", 5); - glutAddMenuEntry("Switch fill mode (line, poly, point)", 6); - glutAddMenuEntry("Switch line/point size", 7); - glutAddMenuEntry("Switch object", 8); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - updateBackground(); - updateLighting(); - updatePolygonMode(); - - glEnable(GL_DEPTH_TEST); - glColor3f(1.0, 0.0, 0.0); /* Geometry should appear red. */ - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/rendereps.dsp b/lib/glut-3.7.6/progs/examples/rendereps.dsp deleted file mode 100644 index afafd6b0215a85e8e920c03f4411267d48921978..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/rendereps.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="rendereps" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=rendereps - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "rendereps.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "rendereps.mak" CFG="rendereps - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "rendereps - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "rendereps - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "rendereps - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "rendereps - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "rendereps - Win32 Release" -# Name "rendereps - Win32 Debug" -# Begin Source File - -SOURCE=.\rendereps.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/resolution.c b/lib/glut-3.7.6/progs/examples/resolution.c deleted file mode 100644 index 79728aa186c2ff91f78a55e013f5953f3ed10ebe..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/resolution.c +++ /dev/null @@ -1,264 +0,0 @@ - -/* resolution.c */ - -/* by Walter Vannini (walterv@jps.net, waltervannini@hotmail.com) */ - -/* Copyright (c) Walter Vannini, 1998. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* This example demonstrates how to use glCopyPixels with glPixelZoom - to zoom up small renderings to fill more pixels. */ - -#include -#include - -void init(void); -void KeyboardFunc(unsigned char key, int x, int y); -void MenuFunc(int value); -void IdleFunc(void); -void ReshapeFunc(int w, int h); -void DisplayFunc(void); - -struct ProgramState -{ - double w; - double h; - double ResolutionX; - double ResolutionY; - int shoulder; - int elbow; - int wrist; - double Rotation; - double RotationIncrement; -}; -struct ProgramState ps; - -void init(void) -{ - glShadeModel (GL_FLAT); - glDisable(GL_DITHER); - glClearColor(0.0, 0.0, 0.0, 1.0); - - ps.Rotation = 0.0; - ps.RotationIncrement = 4.0; - ps.ResolutionX = 1.0; - ps.ResolutionY = 1.0; - ps.shoulder = 0.0; - ps.elbow = 0.0; - ps.wrist = 0.0; -} - -void KeyboardFunc (unsigned char key, int x, int y) -{ - switch (key) - { - case '1': - ps.ResolutionX = 1; - ps.ResolutionY = 1; - glutPostRedisplay(); - break; - case '2': - ps.ResolutionX = 2; - ps.ResolutionY = 2; - glutPostRedisplay(); - break; - case '3': - ps.ResolutionX = 3; - ps.ResolutionY = 3; - glutPostRedisplay(); - break; - case '4': - ps.ResolutionX = 4; - ps.ResolutionY = 4; - glutPostRedisplay(); - break; - case '5': - ps.ResolutionX = 5; - ps.ResolutionY = 5; - glutPostRedisplay(); - break; - case '6': - ps.ResolutionX = 6; - ps.ResolutionY = 6; - glutPostRedisplay(); - break; - case '7': - ps.ResolutionX = 7; - ps.ResolutionY = 7; - glutPostRedisplay(); - break; - case '8': - ps.ResolutionX = 8; - ps.ResolutionY = 8; - glutPostRedisplay(); - break; - case '9': - ps.ResolutionX = 9; - ps.ResolutionY = 9; - glutPostRedisplay(); - break; - case '0': - ps.ResolutionX = 10; - ps.ResolutionY = 10; - glutPostRedisplay(); - break; - case '-': - ps.ResolutionX = 16; - ps.ResolutionY = 16; - glutPostRedisplay(); - break; - case '=': - ps.ResolutionX = 32; - ps.ResolutionY = 32; - glutPostRedisplay(); - break; - case '\\': - ps.ResolutionX = 64; - ps.ResolutionY = 64; - glutPostRedisplay(); - break; - case 'o': - ps.ResolutionX = 1; - ps.ResolutionY = 8; - glutPostRedisplay(); - break; - case 'e': - ps.ResolutionX = 8; - ps.ResolutionY = 1; - glutPostRedisplay(); - break; - case 'q': - case 'Q': - case 27: - exit(0); - break; - default: - break; - } -} - -void MenuFunc(int value) -{ - KeyboardFunc((unsigned char) value, 0, 0); -} - -void IdleFunc(void) -{ - ps.Rotation += ps.RotationIncrement; - ps.shoulder = ps.Rotation; - ps.elbow = ps.Rotation*0.63432; - ps.wrist = ps.Rotation*0.4313543; - glutPostRedisplay(); -} - -void ReshapeFunc (int w, int h) -{ - ps.w =w; - ps.h = h; - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluPerspective(65.0, ps.w/ps.h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef (0.0, 0.0, -5.0); -} - -void DisplayFunc(void) -{ - double ForearmLength= 1.2; - double UpperarmLength =1.0; - double HandLength = 0.5; - glViewport (0.0, 0.0, (GLsizei) (ps.w/ps.ResolutionX), (GLsizei) (ps.h/ps.ResolutionY)); - glMatrixMode(GL_MODELVIEW); - - glClear (GL_COLOR_BUFFER_BIT); - glPushMatrix(); - { - glRotatef (ps.shoulder, 0.0, 0.0, 1.0); - glTranslatef (0.5*UpperarmLength, 0.0, 0.0); - glPushMatrix(); - { - glScalef (UpperarmLength, 0.6, 1.0); - glutWireCube (1.0); - } - glPopMatrix(); - glTranslatef (0.5*UpperarmLength, 0.0, 0.0); - - glRotatef (ps.elbow, 0.0, 0.0, 1.0); - glTranslatef (0.5*ForearmLength, 0.0, 0.0); - glPushMatrix(); - { - glScalef (ForearmLength, 0.4, 1.0); - glutWireCube (1.0); - } - glPopMatrix(); - glTranslatef (0.5*ForearmLength, 0.0, 0.0); - - glRotatef (ps.wrist, 0.0, 0.0, 1.0); - glTranslatef (0.5*HandLength, 0.0, 0.0); - glPushMatrix(); - { - glScalef (HandLength, 0.2, 1.0); - glutWireCube (1.0); - } - glPopMatrix(); - } - glPopMatrix(); - - glPixelZoom(ps.ResolutionX, ps.ResolutionY); - glCopyPixels(0.0,0.0, - (GLsizei) (ps.w/ps.ResolutionX), (GLsizei) (ps.h/ps.ResolutionY), GL_COLOR); - - glutSwapBuffers(); -} - -void -VisibilityFunc(int vis) -{ - if (vis == GLUT_VISIBLE) { - glutIdleFunc(IdleFunc); - } else { - glutIdleFunc(NULL); - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); - ps.h=500; - ps.w=500; - glutInitWindowSize ((int) ps.w, (int) ps.h); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - - init (); - glutVisibilityFunc(VisibilityFunc); - glutDisplayFunc(DisplayFunc); - glutReshapeFunc(ReshapeFunc); - glutKeyboardFunc(KeyboardFunc); - glutCreateMenu(MenuFunc); - glutAddMenuEntry("resolution 1x1", '1'); - glutAddMenuEntry("resolution 2x2", '2'); - glutAddMenuEntry("resolution 3x3", '3'); - glutAddMenuEntry("resolution 4x4", '4'); - glutAddMenuEntry("resolution 5x5", '5'); - glutAddMenuEntry("resolution 6x6", '6'); - glutAddMenuEntry("resolution 7x7", '7'); - glutAddMenuEntry("resolution 8x8", '8'); - glutAddMenuEntry("resolution 9x9", '9'); - glutAddMenuEntry("resolution 10x10", '0'); - glutAddMenuEntry("resolution 16x16", '-'); - glutAddMenuEntry("resolution 32x32", '='); - glutAddMenuEntry("resolution 64x64", '\\'); - glutAddMenuEntry("resolution 1x8", 'o'); - glutAddMenuEntry("resolution 8x1", 'e'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/examples/resolution.dsp b/lib/glut-3.7.6/progs/examples/resolution.dsp deleted file mode 100644 index 022f1d1988e49f7e2f848ffa8be5119225ee299b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/resolution.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="resolution" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=resolution - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "resolution.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "resolution.mak" CFG="resolution - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "resolution - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "resolution - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "resolution - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "resolution - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "resolution - Win32 Release" -# Name "resolution - Win32 Debug" -# Begin Source File - -SOURCE=.\resolution.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/sb2db.c b/lib/glut-3.7.6/progs/examples/sb2db.c deleted file mode 100644 index 2e1589fcae9e11160256c057ac0e0c5ccdef9e8b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/sb2db.c +++ /dev/null @@ -1,297 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -/* sb2db.c - This program demonstrates switching between single buffered - and double buffered windows when using GLUT. Use the pop-up menu to - change the buffering style used. On machine that split the screen's - color resolution in half when double buffering, you should notice better - coloration (less or no dithering) in single buffer mode (but flicker on - redraws, particularly when rotation is toggled on). */ - -/* This program is based on the GLUT scene.c program. */ - -#include -#include - -int sbwin, dbwin; -int angle; - -/* Initialize material property and light source. */ -void -myinit(void) -{ - GLfloat light_ambient[] = - {0.3, 0.3, 0.3, 1.0}; - GLfloat light_diffuse[] = - {6.0, 6.0, 6.0, 1.0}; - GLfloat light_specular[] = - {1.0, 1.0, 1.0, 1.0}; - /* light_position is NOT default value */ - GLfloat light_position[] = - {-1.0, 1.0, 1.0, 0.0}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); -} - -void -display(void) -{ - static GLfloat red[] = - {0.8, 0.0, 0.0, 1.0}; - static GLfloat yellow[] = - {0.8, 0.8, 0.0, 1.0}; - static GLfloat green[] = - {0.0, 0.8, 0.0, 1.0}; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(angle, 1.0, 0.0, 0.0); - glScalef(1.3, 1.3, 1.3); - glRotatef(20.0, 1.0, 0.0, 0.0); - - glPushMatrix(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(90.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, red); - glutSolidTorus(0.275, 0.85, 10, 15); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-0.75, -0.5, 0.0); - glRotatef(270.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, yellow); - glutSolidCone(1.0, 1.0, 40, 40); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.75, 0.0, -1.0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, green); - glutSolidIcosahedron(); - glPopMatrix(); - - glPopMatrix(); - - if (glutGetWindow() == sbwin) { - glFlush(); - } else { - glutSwapBuffers(); - } -} - -/* Used by both windows, this routine setups the OpenGL context's - projection matrix correctly. Note that we call this routine for - both contexts to keep them in sync after reshapes. */ -void -reshapeOpenGLState(int w, int h) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-2.5, 2.5, -2.5 * (GLfloat) h / (GLfloat) w, - 2.5 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); - else - glOrtho(-2.5 * (GLfloat) w / (GLfloat) h, - 2.5 * (GLfloat) w / (GLfloat) h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* When the single buffered (ie, the top window) gets resized, we - need to resize the child double buffered window as well. Hence - the glutReshapeWindow on the child. NOTE: You want a separate - resize callback for the double buffered window to set the viewport - since the window's size won't really be changed until the double buffered - gets its dbReshape callback. Otherwise, you could trick OpenGL intop - clipping based on the old window size. */ -void -sbReshape(int w, int h) -{ - glutSetWindow(sbwin); - glViewport(0, 0, w, h); - reshapeOpenGLState(w, h); - glutSetWindow(dbwin); - glutReshapeWindow(w, h); -} - -void -dbReshape(int w, int h) -{ - glViewport(0, 0, w, h); - reshapeOpenGLState(w, h); -} - -void -rotation(void) -{ - angle += 2; - angle = angle % 360; - glutPostRedisplay(); -} - -int animation = 0; /* Are we doing an animated rotation currently? */ - -void -main_menu(int value) -{ - switch (value) { - case 1: - /* Smart toggle rotation ensures we switch to double buffered when - animating and single buffered when not animating. */ - animation = 1 - animation; /* Toggle. */ - if (animation) { - glutIdleFunc(rotation); - glutSetWindow(sbwin); - glutSetWindowTitle("sb2db - double buffer mode"); - glutSetWindow(dbwin); - glutShowWindow(); /* Show the double buffered window. */ - } else { - glutIdleFunc(NULL); - glutSetWindow(sbwin); - glutSetWindowTitle("sb2db - single buffer mode"); - glutSetWindow(dbwin); - glutHideWindow(); /* Hide the double buffered window. */ - } - break; - case 2: - glutSetWindow(dbwin); - glutHideWindow(); /* Hide the double buffered window. */ - glutSetWindow(sbwin); - glutSetWindowTitle("sb2db - single buffer mode"); - break; - case 3: - glutSetWindow(sbwin); - glutSetWindowTitle("sb2db - double buffer mode"); - glutSetWindow(dbwin); - glutShowWindow(); /* Show the double buffered window. */ - break; - case 4: - animation = 1 - animation; /* Toggle. */ - if (animation) - glutIdleFunc(rotation); - else - glutIdleFunc(NULL); - break; - case 666: - exit(0); - break; - } -} - -/* You have to track the visibility of both the single buffered - and double buffered windows together. */ -void -visibility(int state) -{ - static int sbvis = GLUT_NOT_VISIBLE, dbvis = GLUT_NOT_VISIBLE; - int eithervis; - - if (glutGetWindow() == sbwin) { - sbvis = state; - } else { - dbvis = state; - } - eithervis = (sbvis == GLUT_VISIBLE) || (dbvis == GLUT_VISIBLE); - if (eithervis) { - /* Resume rotating idle callback if we become visible and - animation is enabled. */ - if (animation) { - glutIdleFunc(rotation); - } - } else { - /* Disable animation when both windows are not visible. */ - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(500, 500); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_SINGLE); - - /* The top window is single buffered. */ - sbwin = glutCreateWindow(argv[0]); - glutReshapeFunc(sbReshape); - glutDisplayFunc(display); - glutVisibilityFunc(visibility); - myinit(); - - /* The child window is double buffered. We show this window - when displaying double buffered and hide it to show the - single buffered window. */ - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - dbwin = glutCreateSubWindow(glutGetWindow(), - 0, 0, glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT)); - glutDisplayFunc(display); - glutReshapeFunc(dbReshape); - glutVisibilityFunc(visibility); - - /* Call myinit for both the single buffered window and the - double buffered window. We must mirror the same OpenGL - state in both window's OpenGL contexts. If you make this - program more complicated, remember to keep the window's - context state in sync. */ - myinit(); - - /* Initially hide the double buffered window to start in - single buffered mode. */ - glutHideWindow(); - - glutCreateMenu(main_menu); - glutAddMenuEntry("Smart rotation toggle", 1); - glutAddMenuEntry("Single buffer", 2); - glutAddMenuEntry("Double buffer", 3); - glutAddMenuEntry("Toggle rotation", 4); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutSetWindow(sbwin); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/sb2db.dsp b/lib/glut-3.7.6/progs/examples/sb2db.dsp deleted file mode 100644 index e857f1de9009fbaf0a064d376db03aa2d03da93a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/sb2db.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sb2db" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sb2db - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sb2db.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sb2db.mak" CFG="sb2db - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sb2db - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sb2db - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sb2db - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sb2db - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sb2db - Win32 Release" -# Name "sb2db - Win32 Debug" -# Begin Source File - -SOURCE=.\sb2db.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/scene.c b/lib/glut-3.7.6/progs/examples/scene.c deleted file mode 100644 index 2e5936aeda974ff89d6a31a851b77b7b33a4da8b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/scene.c +++ /dev/null @@ -1,175 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * scene.c - * This program demonstrates the use of the GL lighting model. - * Objects are drawn using a grey material characteristic. - * A single light source illuminates the objects. - */ -#include -#include - -/* Initialize material property and light source. - */ -void -myinit(void) -{ - GLfloat light_ambient[] = - {0.0, 0.0, 0.0, 1.0}; - GLfloat light_diffuse[] = - {1.0, 0.0, 0.0, 1.0}; - GLfloat light_specular[] = - {1.0, 1.0, 1.0, 1.0}; -/* light_position is NOT default value */ - GLfloat light_position[] = - {1.0, 1.0, 1.0, 0.0}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glScalef(1.3, 1.3, 1.3); - glRotatef(20.0, 1.0, 0.0, 0.0); - - glPushMatrix(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(90.0, 1.0, 0.0, 0.0); - glutSolidTorus(0.275, 0.85, 10, 15); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-0.75, -0.5, 0.0); - glRotatef(270.0, 1.0, 0.0, 0.0); - glutSolidTetrahedron(); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.75, 0.0, -1.0); - glutSolidIcosahedron(); - glPopMatrix(); - - glPopMatrix(); - glFlush(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-2.5, 2.5, -2.5 * (GLfloat) h / (GLfloat) w, - 2.5 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); - else - glOrtho(-2.5 * (GLfloat) w / (GLfloat) h, - 2.5 * (GLfloat) w / (GLfloat) h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -void -polygon_mode(int value) -{ - switch (value) { - case 1: - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glDisable(GL_BLEND); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case 2: - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - glColor3f(1.0, 1.0, 1.0); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - break; - } - glutPostRedisplay(); -} - -void -main_menu(int value) -{ - if (value == 666) - exit(0); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int -main(int argc, char **argv) -{ - int submenu; - - glutInit(&argc, argv); - glutInitWindowPosition(500, 500); - glutInitWindowSize(500, 500); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - submenu = glutCreateMenu(polygon_mode); - glutAddMenuEntry("Filled", 1); - glutAddMenuEntry("Outline", 2); - glutCreateMenu(main_menu); - glutAddMenuEntry("Quit", 666); - glutAddSubMenu("Polygon mode", submenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/scene.dsp b/lib/glut-3.7.6/progs/examples/scene.dsp deleted file mode 100644 index 7f3d9b096f06df3665fc6c170576d28ed6469b8a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/scene.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="scene" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=scene - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "scene.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "scene.mak" CFG="scene - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "scene - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "scene - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "scene - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "scene - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "scene - Win32 Release" -# Name "scene - Win32 Debug" -# Begin Source File - -SOURCE=.\scene.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/screendoor.c b/lib/glut-3.7.6/progs/examples/screendoor.c deleted file mode 100644 index 3ab8c9dc0af8bfa4d31a793c7b3430753c1c5452..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/screendoor.c +++ /dev/null @@ -1,371 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* screendoor demonstrates "screen door" transparency using - OpenGL's polygon stipple feature. */ - -#include -#include -#include - -#define TORUS 1 -#define TETRAHEDRON 2 -#define ICOSAHEDRON 3 - -/* Screen door transparency stipple patterns, originally generated by - Tim Hall (tjh@world.std.com) based on the 4x4 dither matrix - described in "Computer Graphics Principles and Practice, 2nd ed." in - the "Halftone Approximation" section (13.1.2). Each 4x4 pattern is - replicated over OpenGL's 32x32 pixel stipple pattern. mjk converted - Tim's patterns to be expressed as GLubytes instead of unsigned ints - to avoid byte ordering problems. */ - -#if 0 /* Comment containing C comments. */ - - Example usage: - - /* Assumes default unpack pixel store settings; see glPixelStore */ - - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stippleMask[0]); /* 0% opaqueness */ - glPolygonStipple(stippleMask[8]); /* 50% opaqueness */ - glPolygonStipple(stippleMask[16]); /* 100% opaqueness */ - -#endif - -const GLubyte stippleMask[17][128] = -{ - /* NOTE: 0% opaqueness is faster to set and probably faster to render with: - glDisable(GL_POLYGON_STIPPLE); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); */ - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - - {0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00}, - - {0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00}, - - {0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00}, - - {0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00}, - - {0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11}, - - {0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11}, - - {0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55}, - - {0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55}, - - {0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xee, 0xee, 0xee, 0xee, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55}, - - {0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xbb, 0xbb, 0xbb, 0xbb, 0x55, 0x55, 0x55, 0x55}, - - {0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55}, - - {0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55}, - - {0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77}, - - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77}, - - /* NOTE: 100% opaqueness is faster to set and probably faster to render with: - glDisable(GL_POLYGON_STIPPLE); */ - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, -}; - -GLfloat angle = 20.0; - -int torusStipple = 4, icoStipple = 8, tetraStipple = 16; - -/* Initialize material property and light source. */ -void -myinit(void) -{ - GLfloat light_ambient[] = - {0.2, 0.2, 0.2, 1.0}; - GLfloat light_diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat light_specular[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat light_position[] = - {1.0, 1.0, 1.0, 0.0}; - - glClearColor(0.49, 0.62, 0.75, 0.0); - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_CULL_FACE); - glEnable(GL_POLYGON_STIPPLE); - - glNewList(TORUS, GL_COMPILE); - glutSolidTorus(0.275, 0.85, 10, 15); - glEndList(); - glNewList(TETRAHEDRON, GL_COMPILE); - glutSolidTetrahedron(); - glEndList(); - glNewList(ICOSAHEDRON, GL_COMPILE); - glutSolidIcosahedron(); - glEndList(); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glScalef(1.3, 1.3, 1.3); - glRotatef(angle, 1.0, 0.0, 0.0); - - glPushMatrix(); - glTranslatef(-0.75, -0.5, 0.0); - glRotatef(270.0, 1.0, 0.0, 0.0); - glPolygonStipple(stippleMask[tetraStipple]); - glCallList(TETRAHEDRON); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-0.75, 0.5, 0.0); - glRotatef(90.0, 1.0, 0.0, 0.0); - glPolygonStipple(stippleMask[torusStipple]); - glCallList(TORUS); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.75, 0.0, -1.0); - glPolygonStipple(stippleMask[icoStipple]); - glCallList(ICOSAHEDRON); - glPopMatrix(); - - glPopMatrix(); - - glutSwapBuffers(); -} - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-2.5, 2.5, -2.5 * (GLfloat) h / (GLfloat) w, - 2.5 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); - else - glOrtho(-2.5 * (GLfloat) w / (GLfloat) h, - 2.5 * (GLfloat) w / (GLfloat) h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -void -torusTransparency(int value) -{ - torusStipple = value; - glutPostRedisplay(); -} - -void -icoTransparency(int value) -{ - icoStipple = value; - glutPostRedisplay(); -} - -void -tetraTransparency(int value) -{ - tetraStipple = value; - glutPostRedisplay(); -} - -void -noop(int value) -{ - switch(value) { - case 1: - angle -= 45; - break; - case 2: - angle += 45; - break; - case 666: - exit(0); - } - glutPostRedisplay(); -} - -void -createTransparencyMenu(void) -{ - char label[20]; - int i; - - for (i = 0; i < 17; i++) { - sprintf(label, "%d%% opaque", i * 100 / 16); - glutAddMenuEntry(label, i); - } -} - -int -main(int argc, char **argv) -{ - int torusMenu, icoMenu, tetraMenu; - - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("screen door transparency"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - myinit(); - - torusMenu = glutCreateMenu(torusTransparency); - createTransparencyMenu(); - icoMenu = glutCreateMenu(icoTransparency); - createTransparencyMenu(); - tetraMenu = glutCreateMenu(tetraTransparency); - createTransparencyMenu(); - - glutCreateMenu(noop); - glutAddSubMenu("Torus", torusMenu); - glutAddSubMenu("Icosahedron", icoMenu); - glutAddSubMenu("Tetrahedron", tetraMenu); - glutAddMenuEntry("Rotate up", 1); - glutAddMenuEntry("Rotate down", 2); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/screendoor.dsp b/lib/glut-3.7.6/progs/examples/screendoor.dsp deleted file mode 100644 index ef9450d917fe34695a357025a16ea0fc7593ab0d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/screendoor.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="screendoor" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=screendoor - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "screendoor.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "screendoor.mak" CFG="screendoor - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "screendoor - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "screendoor - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "screendoor - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "screendoor - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "screendoor - Win32 Release" -# Name "screendoor - Win32 Debug" -# Begin Source File - -SOURCE=.\screendoor.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/scube.c b/lib/glut-3.7.6/progs/examples/scube.c deleted file mode 100644 index 5e2633248a589f0b6e300a8c722a80f0dd7538b5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/scube.c +++ /dev/null @@ -1,703 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -/* - * 1992 David G Yu -- Silicon Graphics Computer Systems - */ - -#include -#include -#include -#include -#include - -static int useRGB = 1; -static int useLighting = 1; -static int useFog = 0; -static int useDB = 1; -static int useLogo = 0; -static int useQuads = 1; - -static int tick = -1; -static int moving = 1; - -#define GREY 0 -#define RED 1 -#define GREEN 2 -#define BLUE 3 -#define CYAN 4 -#define MAGENTA 5 -#define YELLOW 6 -#define BLACK 7 - -static float materialColor[8][4] = -{ - {0.8, 0.8, 0.8, 1.0}, - {0.8, 0.0, 0.0, 1.0}, - {0.0, 0.8, 0.0, 1.0}, - {0.0, 0.0, 0.8, 1.0}, - {0.0, 0.8, 0.8, 1.0}, - {0.8, 0.0, 0.8, 1.0}, - {0.8, 0.8, 0.0, 1.0}, - {0.0, 0.0, 0.0, 0.6}, -}; - -static float lightPos[4] = -{2.0, 4.0, 2.0, 1.0}; -#if 0 -static float lightDir[4] = -{-2.0, -4.0, -2.0, 1.0}; -#endif -static float lightAmb[4] = -{0.2, 0.2, 0.2, 1.0}; -static float lightDiff[4] = -{0.8, 0.8, 0.8, 1.0}; -static float lightSpec[4] = -{0.4, 0.4, 0.4, 1.0}; - -static float groundPlane[4] = -{0.0, 1.0, 0.0, 1.499}; -static float backPlane[4] = -{0.0, 0.0, 1.0, 0.899}; - -static float fogColor[4] = -{0.0, 0.0, 0.0, 0.0}; -static float fogIndex[1] = -{0.0}; - -static unsigned char shadowPattern[128] = -{ - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, /* 50% Grey */ - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55 -}; - -static unsigned char sgiPattern[128] = -{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* SGI Logo */ - 0xff, 0xbd, 0xff, 0x83, 0xff, 0x5a, 0xff, 0xef, - 0xfe, 0xdb, 0x7f, 0xef, 0xfd, 0xdb, 0xbf, 0xef, - 0xfb, 0xdb, 0xdf, 0xef, 0xf7, 0xdb, 0xef, 0xef, - 0xfb, 0xdb, 0xdf, 0xef, 0xfd, 0xdb, 0xbf, 0x83, - 0xce, 0xdb, 0x73, 0xff, 0xb7, 0x5a, 0xed, 0xff, - 0xbb, 0xdb, 0xdd, 0xc7, 0xbd, 0xdb, 0xbd, 0xbb, - 0xbe, 0xbd, 0x7d, 0xbb, 0xbf, 0x7e, 0xfd, 0xb3, - 0xbe, 0xe7, 0x7d, 0xbf, 0xbd, 0xdb, 0xbd, 0xbf, - 0xbb, 0xbd, 0xdd, 0xbb, 0xb7, 0x7e, 0xed, 0xc7, - 0xce, 0xdb, 0x73, 0xff, 0xfd, 0xdb, 0xbf, 0xff, - 0xfb, 0xdb, 0xdf, 0x87, 0xf7, 0xdb, 0xef, 0xfb, - 0xf7, 0xdb, 0xef, 0xfb, 0xfb, 0xdb, 0xdf, 0xfb, - 0xfd, 0xdb, 0xbf, 0xc7, 0xfe, 0xdb, 0x7f, 0xbf, - 0xff, 0x5a, 0xff, 0xbf, 0xff, 0xbd, 0xff, 0xc3, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -static float cube_vertexes[6][4][4] = -{ - { - {-1.0, -1.0, -1.0, 1.0}, - {-1.0, -1.0, 1.0, 1.0}, - {-1.0, 1.0, 1.0, 1.0}, - {-1.0, 1.0, -1.0, 1.0}}, - - { - {1.0, 1.0, 1.0, 1.0}, - {1.0, -1.0, 1.0, 1.0}, - {1.0, -1.0, -1.0, 1.0}, - {1.0, 1.0, -1.0, 1.0}}, - - { - {-1.0, -1.0, -1.0, 1.0}, - {1.0, -1.0, -1.0, 1.0}, - {1.0, -1.0, 1.0, 1.0}, - {-1.0, -1.0, 1.0, 1.0}}, - - { - {1.0, 1.0, 1.0, 1.0}, - {1.0, 1.0, -1.0, 1.0}, - {-1.0, 1.0, -1.0, 1.0}, - {-1.0, 1.0, 1.0, 1.0}}, - - { - {-1.0, -1.0, -1.0, 1.0}, - {-1.0, 1.0, -1.0, 1.0}, - {1.0, 1.0, -1.0, 1.0}, - {1.0, -1.0, -1.0, 1.0}}, - - { - {1.0, 1.0, 1.0, 1.0}, - {-1.0, 1.0, 1.0, 1.0}, - {-1.0, -1.0, 1.0, 1.0}, - {1.0, -1.0, 1.0, 1.0}} -}; - -static float cube_normals[6][4] = -{ - {-1.0, 0.0, 0.0, 0.0}, - {1.0, 0.0, 0.0, 0.0}, - {0.0, -1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0, 0.0}, - {0.0, 0.0, -1.0, 0.0}, - {0.0, 0.0, 1.0, 0.0} -}; - -static void -usage(void) -{ - printf("\n"); - printf("usage: scube [options]\n"); - printf("\n"); - printf(" display a spinning cube and its shadow\n"); - printf("\n"); - printf(" Options:\n"); - printf(" -geometry window size and location\n"); - printf(" -c toggle color index mode\n"); - printf(" -l toggle lighting\n"); - printf(" -f toggle fog\n"); - printf(" -db toggle double buffering\n"); - printf(" -logo toggle sgi logo for the shadow pattern\n"); - printf(" -quads toggle use of GL_QUADS to draw the checkerboard\n"); - printf("\n"); -#ifndef EXIT_FAILURE /* should be defined by ANSI C - */ -#define EXIT_FAILURE 1 -#endif - exit(EXIT_FAILURE); -} - -void -buildColormap(void) -{ - if (useRGB) { - return; - } else { - int mapSize = 1 << glutGet(GLUT_WINDOW_BUFFER_SIZE); - int rampSize = mapSize / 8; - int entry; - int i; - - for (entry = 0; entry < mapSize; ++entry) { - int hue = entry / rampSize; - GLfloat val = (entry % rampSize) * (1.0 / (rampSize - 1)); - GLfloat red, green, blue; - - red = (hue == 0 || hue == 1 || hue == 5 || hue == 6) ? val : 0; - green = (hue == 0 || hue == 2 || hue == 4 || hue == 6) ? val : 0; - blue = (hue == 0 || hue == 3 || hue == 4 || hue == 5) ? val : 0; - - glutSetColor(entry, red, green, blue); - } - - for (i = 0; i < 8; ++i) { - materialColor[i][0] = i * rampSize + 0.2 * (rampSize - 1); - materialColor[i][1] = i * rampSize + 0.8 * (rampSize - 1); - materialColor[i][2] = i * rampSize + 1.0 * (rampSize - 1); - materialColor[i][3] = 0.0; - } - - fogIndex[0] = -0.2 * (rampSize - 1); - } -} - -static void -setColor(int c) -{ - if (useLighting) { - if (useRGB) { - glMaterialfv(GL_FRONT_AND_BACK, - GL_AMBIENT_AND_DIFFUSE, &materialColor[c][0]); - } else { - glMaterialfv(GL_FRONT_AND_BACK, - GL_COLOR_INDEXES, &materialColor[c][0]); - } - } else { - if (useRGB) { - glColor4fv(&materialColor[c][0]); - } else { - glIndexf(materialColor[c][1]); - } - } -} - -static void -drawCube(int color) -{ - int i; - - setColor(color); - - for (i = 0; i < 6; ++i) { - glNormal3fv(&cube_normals[i][0]); - glBegin(GL_POLYGON); - glVertex4fv(&cube_vertexes[i][0][0]); - glVertex4fv(&cube_vertexes[i][1][0]); - glVertex4fv(&cube_vertexes[i][2][0]); - glVertex4fv(&cube_vertexes[i][3][0]); - glEnd(); - } -} - -static void -drawCheck(int w, int h, int evenColor, int oddColor) -{ - static int initialized = 0; - static int usedLighting = 0; - static GLuint checklist = 0; - - if (!initialized || (usedLighting != useLighting)) { - static float square_normal[4] = - {0.0, 0.0, 1.0, 0.0}; - static float square[4][4]; - int i, j; - - if (!checklist) { - checklist = glGenLists(1); - } - glNewList(checklist, GL_COMPILE_AND_EXECUTE); - - if (useQuads) { - glNormal3fv(square_normal); - glBegin(GL_QUADS); - } - for (j = 0; j < h; ++j) { - for (i = 0; i < w; ++i) { - square[0][0] = -1.0 + 2.0 / w * i; - square[0][1] = -1.0 + 2.0 / h * (j + 1); - square[0][2] = 0.0; - square[0][3] = 1.0; - - square[1][0] = -1.0 + 2.0 / w * i; - square[1][1] = -1.0 + 2.0 / h * j; - square[1][2] = 0.0; - square[1][3] = 1.0; - - square[2][0] = -1.0 + 2.0 / w * (i + 1); - square[2][1] = -1.0 + 2.0 / h * j; - square[2][2] = 0.0; - square[2][3] = 1.0; - - square[3][0] = -1.0 + 2.0 / w * (i + 1); - square[3][1] = -1.0 + 2.0 / h * (j + 1); - square[3][2] = 0.0; - square[3][3] = 1.0; - - if ((i & 1) ^ (j & 1)) { - setColor(oddColor); - } else { - setColor(evenColor); - } - - if (!useQuads) { - glBegin(GL_POLYGON); - } - glVertex4fv(&square[0][0]); - glVertex4fv(&square[1][0]); - glVertex4fv(&square[2][0]); - glVertex4fv(&square[3][0]); - if (!useQuads) { - glEnd(); - } - } - } - - if (useQuads) { - glEnd(); - } - glEndList(); - - initialized = 1; - usedLighting = useLighting; - } else { - glCallList(checklist); - } -} - -static void -myShadowMatrix(float ground[4], float light[4]) -{ - float dot; - float shadowMat[4][4]; - - dot = ground[0] * light[0] + - ground[1] * light[1] + - ground[2] * light[2] + - ground[3] * light[3]; - - shadowMat[0][0] = dot - light[0] * ground[0]; - shadowMat[1][0] = 0.0 - light[0] * ground[1]; - shadowMat[2][0] = 0.0 - light[0] * ground[2]; - shadowMat[3][0] = 0.0 - light[0] * ground[3]; - - shadowMat[0][1] = 0.0 - light[1] * ground[0]; - shadowMat[1][1] = dot - light[1] * ground[1]; - shadowMat[2][1] = 0.0 - light[1] * ground[2]; - shadowMat[3][1] = 0.0 - light[1] * ground[3]; - - shadowMat[0][2] = 0.0 - light[2] * ground[0]; - shadowMat[1][2] = 0.0 - light[2] * ground[1]; - shadowMat[2][2] = dot - light[2] * ground[2]; - shadowMat[3][2] = 0.0 - light[2] * ground[3]; - - shadowMat[0][3] = 0.0 - light[3] * ground[0]; - shadowMat[1][3] = 0.0 - light[3] * ground[1]; - shadowMat[2][3] = 0.0 - light[3] * ground[2]; - shadowMat[3][3] = dot - light[3] * ground[3]; - - glMultMatrixf((const GLfloat *) shadowMat); -} - -static char *windowNameRGBDB = "shadow cube (OpenGL RGB DB)"; -static char *windowNameRGB = "shadow cube (OpenGL RGB)"; -static char *windowNameIndexDB = "shadow cube (OpenGL Index DB)"; -static char *windowNameIndex = "shadow cube (OpenGL Index)"; - -void -idle(void) -{ - tick++; - if (tick >= 120) { - tick = 0; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char ch, int x, int y) -{ - switch (ch) { - case 27: /* escape */ - exit(0); - break; - case 'L': - case 'l': - useLighting = !useLighting; - useLighting ? glEnable(GL_LIGHTING) : - glDisable(GL_LIGHTING); - glutPostRedisplay(); - break; - case 'F': - case 'f': - useFog = !useFog; - useFog ? glEnable(GL_FOG) : glDisable(GL_FOG); - glutPostRedisplay(); - break; - case '1': - glFogf(GL_FOG_MODE, GL_LINEAR); - glutPostRedisplay(); - break; - case '2': - glFogf(GL_FOG_MODE, GL_EXP); - glutPostRedisplay(); - break; - case '3': - glFogf(GL_FOG_MODE, GL_EXP2); - glutPostRedisplay(); - break; - case ' ': - if (!moving) { - idle(); - glutPostRedisplay(); - } - } -} - -void -display(void) -{ - GLfloat cubeXform[4][4]; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(0.0, -1.5, 0.0); - glRotatef(-90.0, 1, 0, 0); - glScalef(2.0, 2.0, 2.0); - - drawCheck(6, 6, BLUE, YELLOW); /* draw ground */ - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.0, 0.0, -0.9); - glScalef(2.0, 2.0, 2.0); - - drawCheck(6, 6, BLUE, YELLOW); /* draw back */ - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.0, 0.2, 0.0); - glScalef(0.3, 0.3, 0.3); - glRotatef((360.0 / (30 * 1)) * tick, 1, 0, 0); - glRotatef((360.0 / (30 * 2)) * tick, 0, 1, 0); - glRotatef((360.0 / (30 * 4)) * tick, 0, 0, 1); - glScalef(1.0, 2.0, 1.0); - glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) cubeXform); - - drawCube(RED); /* draw cube */ - glPopMatrix(); - - glDepthMask(GL_FALSE); - if (useRGB) { - glEnable(GL_BLEND); - } else { - glEnable(GL_POLYGON_STIPPLE); - } - if (useFog) { - glDisable(GL_FOG); - } - glPushMatrix(); - myShadowMatrix(groundPlane, lightPos); - glTranslatef(0.0, 0.0, 2.0); - glMultMatrixf((const GLfloat *) cubeXform); - - drawCube(BLACK); /* draw ground shadow */ - glPopMatrix(); - - glPushMatrix(); - myShadowMatrix(backPlane, lightPos); - glTranslatef(0.0, 0.0, 2.0); - glMultMatrixf((const GLfloat *) cubeXform); - - drawCube(BLACK); /* draw back shadow */ - glPopMatrix(); - - glDepthMask(GL_TRUE); - if (useRGB) { - glDisable(GL_BLEND); - } else { - glDisable(GL_POLYGON_STIPPLE); - } - if (useFog) { - glEnable(GL_FOG); - } - if (useDB) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -void -fog_select(int fog) -{ - glFogf(GL_FOG_MODE, fog); - glutPostRedisplay(); -} - -void -menu_select(int mode) -{ - switch (mode) { - case 1: - moving = 1; - glutIdleFunc(idle); - break; - case 2: - moving = 0; - glutIdleFunc(NULL); - break; - case 3: - useFog = !useFog; - useFog ? glEnable(GL_FOG) : glDisable(GL_FOG); - glutPostRedisplay(); - break; - case 4: - useLighting = !useLighting; - useLighting ? glEnable(GL_LIGHTING) : - glDisable(GL_LIGHTING); - glutPostRedisplay(); - break; - case 5: - exit(0); - break; - } -} - -void -visible(int state) -{ - if (state == GLUT_VISIBLE) { - if (moving) - glutIdleFunc(idle); - } else { - if (moving) - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - int width = 350, height = 350; - int i; - char *name; - int fog_menu; - - glutInitWindowSize(width, height); - glutInit(&argc, argv); - /* process commmand line args */ - for (i = 1; i < argc; ++i) { - if (!strcmp("-c", argv[i])) { - useRGB = !useRGB; - } else if (!strcmp("-l", argv[i])) { - useLighting = !useLighting; - } else if (!strcmp("-f", argv[i])) { - useFog = !useFog; - } else if (!strcmp("-db", argv[i])) { - useDB = !useDB; - } else if (!strcmp("-logo", argv[i])) { - useLogo = !useLogo; - } else if (!strcmp("-quads", argv[i])) { - useQuads = !useQuads; - } else { - usage(); - } - } - - /* choose visual */ - if (useRGB) { - if (useDB) { - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - name = windowNameRGBDB; - } else { - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - name = windowNameRGB; - } - } else { - if (useDB) { - glutInitDisplayMode(GLUT_DOUBLE | GLUT_INDEX | GLUT_DEPTH); - name = windowNameIndexDB; - } else { - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX | GLUT_DEPTH); - name = windowNameIndex; - } - } - - glutCreateWindow(name); - - buildColormap(); - - glutKeyboardFunc(keyboard); - glutDisplayFunc(display); - glutVisibilityFunc(visible); - - fog_menu = glutCreateMenu(fog_select); - glutAddMenuEntry("Linear fog", GL_LINEAR); - glutAddMenuEntry("Exp fog", GL_EXP); - glutAddMenuEntry("Exp^2 fog", GL_EXP2); - - glutCreateMenu(menu_select); - glutAddMenuEntry("Start motion", 1); - glutAddMenuEntry("Stop motion", 2); - glutAddMenuEntry("Toggle fog", 3); - glutAddMenuEntry("Toggle lighting", 4); - glutAddSubMenu("Fog type", fog_menu); - glutAddMenuEntry("Quit", 5); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* setup context */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 3.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -2.0); - - glEnable(GL_DEPTH_TEST); - - if (useLighting) { - glEnable(GL_LIGHTING); - } - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiff); - glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpec); -#if 0 - glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, lightDir); - glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 80); - glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 25); -#endif - - glEnable(GL_NORMALIZE); - - if (useFog) { - glEnable(GL_FOG); - } - glFogfv(GL_FOG_COLOR, fogColor); - glFogfv(GL_FOG_INDEX, fogIndex); - glFogf(GL_FOG_MODE, GL_EXP); - glFogf(GL_FOG_DENSITY, 0.5); - glFogf(GL_FOG_START, 1.0); - glFogf(GL_FOG_END, 3.0); - - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - - glShadeModel(GL_SMOOTH); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - if (useLogo) { - glPolygonStipple((const GLubyte *) sgiPattern); - } else { - glPolygonStipple((const GLubyte *) shadowPattern); - } - - glClearColor(0.0, 0.0, 0.0, 1); - glClearIndex(0); - glClearDepth(1); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/scube.dsp b/lib/glut-3.7.6/progs/examples/scube.dsp deleted file mode 100644 index 5e60450e40098b512e7cc6f48e5f27e8271e874d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/scube.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="scube" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=scube - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "scube.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "scube.mak" CFG="scube - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "scube - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "scube - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "scube - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "scube - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "scube - Win32 Release" -# Name "scube - Win32 Debug" -# Begin Source File - -SOURCE=.\scube.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/simple.c b/lib/glut-3.7.6/progs/examples/simple.c deleted file mode 100644 index 58951a358a9f9ec06815934f9f3457342a5752cb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/simple.c +++ /dev/null @@ -1,62 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This program is a response to a question posed by Gil Colgate - about how lengthy a program is required using - OpenGL compared to using Direct3D immediate mode to "draw a - triangle at screen coordinates 0,0, to 200,200 to 20,200, and I - want it to be blue at the top vertex, red at the left vertex, and - green at the right vertex". I'm not sure how long the Direct3D - program is; Gil has used Direct3D and his guess is "about 3000 - lines of code". */ - -/* X compile line: cc -o simple simple.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include - -void -reshape(int w, int h) -{ - /* Because Gil specified "screen coordinates" (presumably with an - upper-left origin), this short bit of code sets up the coordinate - system to correspond to actual window coodrinates. This code - wouldn't be required if you chose a (more typical in 3D) abstract - coordinate system. */ - - glViewport(0, 0, w, h); /* Establish viewing area to cover entire window. */ - glMatrixMode(GL_PROJECTION); /* Start modifying the projection matrix. */ - glLoadIdentity(); /* Reset project matrix. */ - glOrtho(0, w, 0, h, -1, 1); /* Map abstract coords directly to window coords. */ - glScalef(1, -1, 1); /* Invert Y axis so increasing Y goes down. */ - glTranslatef(0, -h, 0); /* Shift origin up to upper-left corner. */ -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_TRIANGLES); - glColor3f(0.0, 0.0, 1.0); /* blue */ - glVertex2i(0, 0); - glColor3f(0.0, 1.0, 0.0); /* green */ - glVertex2i(200, 200); - glColor3f(1.0, 0.0, 0.0); /* red */ - glVertex2i(20, 200); - glEnd(); - glFlush(); /* Single buffered, so needs a flush. */ -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutCreateWindow("single triangle"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/simple.dsp b/lib/glut-3.7.6/progs/examples/simple.dsp deleted file mode 100644 index ed3e0e34c28afa2584ad8da1aea93582ec74be32..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/simple.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="simple" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=simple - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "simple.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "simple.mak" CFG="simple - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "simple - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "simple - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "simple - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "simple - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "simple - Win32 Release" -# Name "simple - Win32 Debug" -# Begin Source File - -SOURCE=.\simple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/sphere.c b/lib/glut-3.7.6/progs/examples/sphere.c deleted file mode 100644 index 1e36639d4f2a316f7bfea4f4ed2ba201f135b1e6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/sphere.c +++ /dev/null @@ -1,302 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Don't take this program too seriously. It is just a hack. */ - -#include -#include -#include -#include -#include - -GLfloat light_diffuse[] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat light_position[] = -{1.0, 1.0, 1.0, 0.0}; -GLUquadricObj *qobj; - -int win1, win2, submenu1, submenu2; - -int list = 1; - -float thetime = 0.0; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - if (glutGetWindow() == win1) { - glCallList(list); /* render sphere display list */ - } else { - glCallList(1); /* render sphere display list */ - } - glutSwapBuffers(); -} - -void -display_win1(void) -{ - glPushMatrix(); - glTranslatef(0.0, 0.0, -1 - 2 * sin(thetime)); - display(); - glPopMatrix(); -} - -void -idle(void) -{ - GLfloat light_position[] = - {1.0, 1.0, 1.0, 0.0}; - - glutSetWindow(win1); - thetime += 0.05; - light_position[1] = 1 + sin(thetime); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - display_win1(); -} - -/* ARGSUSED */ -void -delayed_stop(int value) -{ - glutIdleFunc(NULL); -} - -void -it(int value) -{ - glutDestroyWindow(glutGetWindow()); - printf("menu selection: win=%d, menu=%d\n", glutGetWindow(), glutGetMenu()); - switch (value) { - case 1: - if (list == 1) { - list = 2; - } else { - list = 1; - } - break; - case 2: - exit(0); - break; - case 3: - glutAddMenuEntry("new entry", value + 9); - break; - case 4: - glutChangeToMenuEntry(1, "toggle it for drawing", 1); - glutChangeToMenuEntry(3, "motion done", 3); - glutIdleFunc(idle); - break; - case 5: - glutIdleFunc(NULL); - break; - case 6: - glutTimerFunc(2000, delayed_stop, 0); - break; - default: - printf("value = %d\n", value); - } -} - -void -init(void) -{ - gluQuadricDrawStyle(qobj, GLU_FILL); - glNewList(1, GL_COMPILE); /* create sphere display list */ - gluSphere(qobj, /* radius */ 1.0, /* slices */ 20, /* stacks - - */ 20); - glEndList(); - gluQuadricDrawStyle(qobj, GLU_LINE); - glNewList(2, GL_COMPILE); /* create sphere display list */ - gluSphere(qobj, /* radius */ 1.0, /* slices */ 20, /* stacks - - */ 20); - glEndList(); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glTranslatef(0.0, 0.0, -1.0); -} - -void -menustate(int inuse) -{ - printf("menu is %s\n", inuse ? "INUSE" : "not in use"); - if (!inuse) { - } -} - -void -keyboard(unsigned char key, int x, int y) -{ - if (isprint(key)) { - printf("key: `%c' %d,%d\n", key, x, y); - } else { - printf("key: 0x%x %d,%d\n", key, x, y); - } -} - -void -special(int key, int x, int y) -{ - char *name; - - switch (key) { - case GLUT_KEY_F1: - name = "F1"; - break; - case GLUT_KEY_F2: - name = "F2"; - break; - case GLUT_KEY_F3: - name = "F3"; - break; - case GLUT_KEY_F4: - name = "F4"; - break; - case GLUT_KEY_F5: - name = "F5"; - break; - case GLUT_KEY_F6: - name = "F6"; - break; - case GLUT_KEY_F7: - name = "F7"; - break; - case GLUT_KEY_F8: - name = "F8"; - break; - case GLUT_KEY_F9: - name = "F9"; - break; - case GLUT_KEY_F10: - name = "F11"; - break; - case GLUT_KEY_F11: - name = "F12"; - break; - case GLUT_KEY_LEFT: - name = "Left"; - break; - case GLUT_KEY_UP: - name = "Up"; - break; - case GLUT_KEY_RIGHT: - name = "Right"; - break; - case GLUT_KEY_DOWN: - name = "Down"; - break; - case GLUT_KEY_PAGE_UP: - name = "Page up"; - break; - case GLUT_KEY_PAGE_DOWN: - name = "Page down"; - break; - case GLUT_KEY_HOME: - name = "Home"; - break; - case GLUT_KEY_END: - name = "End"; - break; - case GLUT_KEY_INSERT: - name = "Insert"; - break; - default: - name = "UNKONW"; - break; - } - printf("special: %s %d,%d\n", name, x, y); -} - -void -mouse(int button, int state, int x, int y) -{ - printf("button: %d %s %d,%d\n", button, state == GLUT_UP ? "UP" : "down", x, y); -} - -void -motion(int x, int y) -{ - printf("motion: %d,%d\n", x, y); -} - -void -visible(int status) -{ - printf("visible: %s\n", status == GLUT_VISIBLE ? "YES" : "no"); -} - -void -enter_leave(int state) -{ - printf("enter/leave %d = %s\n", - glutGetWindow(), - state == GLUT_LEFT ? "left" : "entered"); -} - -int -main(int argc, char **argv) -{ - qobj = gluNewQuadric(); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - win1 = glutCreateWindow("sphere"); - glutEntryFunc(enter_leave); - init(); - glutDisplayFunc(display_win1); - glutCreateMenu(it); - glutAddMenuEntry("toggle draw mode", 1); - glutAddMenuEntry("exit", 2); - glutAddMenuEntry("new menu entry", 3); - glutAddMenuEntry("motion", 4); - glutAttachMenu(GLUT_LEFT_BUTTON); - glutCreateMenu(it); - glutAddMenuEntry("yes", 1); - glutAddMenuEntry("no", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - win2 = glutCreateWindow("second window"); - glutEntryFunc(enter_leave); - glutKeyboardFunc(keyboard); - glutSpecialFunc(special); - glutMouseFunc(mouse); -#if 0 - glutMotionFunc(motion); -#endif - glutVisibilityFunc(visible); - init(); - light_diffuse[1] = 1; - light_diffuse[2] = 1; - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glutDisplayFunc(display); - submenu1 = glutCreateMenu(it); - glutAddMenuEntry("submenu a", 666); - glutAddMenuEntry("submenu b", 777); - submenu2 = glutCreateMenu(it); - glutAddMenuEntry("submenu 1", 25); - glutAddMenuEntry("submenu 2", 26); - glutAddSubMenu("submenuXXX", submenu1); - glutCreateMenu(it); - glutAddSubMenu("submenu", submenu2); - glutAddMenuEntry("stop motion", 5); - glutAddMenuEntry("delayed stop motion", 6); - glutAddSubMenu("submenu", submenu2); - glutAttachMenu(GLUT_LEFT_BUTTON); - glutMenuStateFunc(menustate); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/sphere.dsp b/lib/glut-3.7.6/progs/examples/sphere.dsp deleted file mode 100644 index d7359b13901c0dacea8d077a59b941a0acdc12be..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/sphere.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sphere" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sphere - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sphere.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sphere.mak" CFG="sphere - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sphere - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sphere - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sphere - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sphere - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sphere - Win32 Release" -# Name "sphere - Win32 Debug" -# Begin Source File - -SOURCE=.\sphere.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/sphere2.c b/lib/glut-3.7.6/progs/examples/sphere2.c deleted file mode 100644 index 343c697abc8a3fb87042e4b75456623c189d2988..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/sphere2.c +++ /dev/null @@ -1,62 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -GLfloat light_diffuse[] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat light_position[] = -{1.0, 1.0, 1.0, 0.0}; -GLUquadricObj *qobj; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(1); /* render sphere display list */ - glutSwapBuffers(); -} - -void -gfxinit(void) -{ - qobj = gluNewQuadric(); - gluQuadricDrawStyle(qobj, GLU_FILL); - glNewList(1, GL_COMPILE); /* create sphere display list */ - gluSphere(qobj, /* radius */ 1.0, /* slices */ 20, - /* stacks */ 20); - glEndList(); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glTranslatef(0.0, 0.0, -1.0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("sphere"); - glutDisplayFunc(display); - gfxinit(); - glutCreateWindow("a second window"); - glutDisplayFunc(display); - gfxinit(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/sphere2.dsp b/lib/glut-3.7.6/progs/examples/sphere2.dsp deleted file mode 100644 index 5598a0091eecf2362ca701713a1f4ac94e549289..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/sphere2.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sphere2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sphere2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sphere2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sphere2.mak" CFG="sphere2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sphere2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sphere2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sphere2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sphere2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sphere2 - Win32 Release" -# Name "sphere2 - Win32 Debug" -# Begin Source File - -SOURCE=.\sphere2.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/splatlogo.c b/lib/glut-3.7.6/progs/examples/splatlogo.c deleted file mode 100644 index 57dc64134040db8e941bcac367474f5af680ca78..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/splatlogo.c +++ /dev/null @@ -1,226 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -#define MAX_SPLATS 100 - -extern int logo_width; -extern int logo_height; -extern unsigned char logo_image[]; - -typedef struct _SplatInfo { - int x, y; - GLboolean alphaTest; - GLfloat xScale, yScale; - GLfloat scale[3]; - GLfloat bias[3]; -} SplatInfo; - -int winHeight; -int numSplats = 0; -SplatInfo splatConfig; -SplatInfo splatList[MAX_SPLATS]; -SplatInfo splatDefault = { - 0, 0, - GL_TRUE, - 1.0, 1.0, - { 1.0, 1.0, 1.0 }, - { 0.0, 0.0, 0.0 } -}; - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glMatrixMode(GL_MODELVIEW); - winHeight = h; -} - -void -renderSplat(SplatInfo *splat) -{ - glRasterPos2i(splat->x, splat->y); - if(splat->yScale >= 0) - glBitmap(0, 0, 0, 0, 0, -logo_height * splat->yScale, 0); - if(splat->xScale < 0) - glBitmap(0, 0, 0, 0, logo_width * -splat->xScale, 0, 0); - glPixelZoom(splat->xScale, splat->yScale); - glPixelTransferf(GL_RED_SCALE, splat->scale[0]); - glPixelTransferf(GL_GREEN_SCALE, splat->scale[1]); - glPixelTransferf(GL_BLUE_SCALE, splat->scale[2]); - glPixelTransferf(GL_RED_BIAS, splat->bias[0]); - glPixelTransferf(GL_GREEN_BIAS, splat->bias[1]); - glPixelTransferf(GL_BLUE_BIAS, splat->bias[2]); - if (splat->alphaTest) - glEnable(GL_ALPHA_TEST); - else - glDisable(GL_ALPHA_TEST); - glDrawPixels(logo_width, logo_height, GL_RGBA, - GL_UNSIGNED_BYTE, logo_image); -} - -void -display(void) -{ - int i; - - glClear(GL_COLOR_BUFFER_BIT); - for (i = 0; i < numSplats; i++) { - renderSplat(&splatList[i]); - } - glFlush(); -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - if (numSplats < MAX_SPLATS) { - splatConfig.x = x; - splatConfig.y = winHeight - y; - renderSplat(&splatConfig); - splatList[numSplats] = splatConfig; - numSplats++; - } else { - printf("out of splats!\n"); - } - } - } -} - -void -mainSelect(int value) -{ - GLfloat rpos[4]; - GLboolean valid; - - switch(value) { - case 0: - numSplats = 0; - glutPostRedisplay(); - break; - case 1: - splatConfig = splatDefault; - break; - case 2: - splatConfig.xScale *= 1.25; - splatConfig.yScale *= 1.25; - break; - case 3: - splatConfig.xScale *= 0.75; - splatConfig.yScale *= 0.75; - break; - case 4: - splatConfig.xScale *= -1.0; - break; - case 5: - splatConfig.yScale *= -1.0; - break; - case 6: - splatConfig.alphaTest = GL_TRUE; - break; - case 7: - splatConfig.alphaTest = GL_FALSE; - break; - case 411: - glGetFloatv(GL_CURRENT_RASTER_POSITION, rpos); - glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid); - printf("Raster position (%g,%g) is %s\n", - rpos[0], rpos[1], valid ? "valid" : "INVALID"); - break; - case 666: - exit(0); - break; - } -} - -void -scaleBiasSelect(int value) -{ - int color = value >> 4; - int option = value & 0xf; - - switch(option) { - case 1: - splatConfig.bias[color] += 0.25; - break; - case 2: - splatConfig.bias[color] -= 0.25; - break; - case 3: - splatConfig.scale[color] *= 2.0; - break; - case 4: - splatConfig.scale[color] *= 0.75; - break; - } -} - -int -glutScaleBiasMenu(int mask) -{ - int menu; - - menu = glutCreateMenu(scaleBiasSelect); - glutAddMenuEntry("+25% bias", mask | 1); - glutAddMenuEntry("-25% bias", mask | 2); - glutAddMenuEntry("+25% scale", mask | 3); - glutAddMenuEntry("-25% scale", mask | 4); - return menu; -} - -int -main(int argc, char *argv[]) -{ - int mainMenu, redMenu, greenMenu, blueMenu; - - glutInitWindowSize(680, 440); - glutInit(&argc, argv); - splatConfig = splatDefault; - - glutCreateWindow("splatlogo"); - - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glAlphaFunc(GL_GEQUAL, 0.5); - glDisable(GL_ALPHA_TEST); - glEnable(GL_DITHER); - glClearColor(1.0, 1.0, 1.0, 0.0); - - redMenu = glutScaleBiasMenu(0 << 4); - greenMenu = glutScaleBiasMenu(1 << 4); - blueMenu = glutScaleBiasMenu(2 << 4); - - mainMenu = glutCreateMenu(mainSelect); - glutAddMenuEntry("Reset splays", 0); - glutAddMenuEntry("Reset splat config", 1); - glutAddSubMenu("Red control", redMenu); - glutAddSubMenu("Green control", greenMenu); - glutAddSubMenu("Blue control", blueMenu); - glutAddMenuEntry("+25% zoom", 2); - glutAddMenuEntry("-25% zoom", 3); - glutAddMenuEntry("X flip", 4); - glutAddMenuEntry("Y flip", 5); - glutAddMenuEntry("Enable alpha test", 6); - glutAddMenuEntry("Disable alpha test", 7); - glutSetMenu(mainMenu); - glutAddMenuEntry("Query raster position", 411); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* Never reached; make ANSI C happy. */ -} diff --git a/lib/glut-3.7.6/progs/examples/splatlogo.dsp b/lib/glut-3.7.6/progs/examples/splatlogo.dsp deleted file mode 100644 index e2e121bb43d223f3f215c28d162eed61ec3a0554..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/splatlogo.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="splatlogo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=splatlogo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "splatlogo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "splatlogo.mak" CFG="splatlogo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "splatlogo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "splatlogo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "splatlogo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "splatlogo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "splatlogo - Win32 Release" -# Name "splatlogo - Win32 Debug" -# Begin Source File - -SOURCE=.\logo.c -# End Source File -# Begin Source File - -SOURCE=.\splatlogo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/spots.c b/lib/glut-3.7.6/progs/examples/spots.c deleted file mode 100644 index 97a3f04a4aac59cafc68de8480ab71937d357e4c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/spots.c +++ /dev/null @@ -1,350 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define TWO_PI (2*M_PI) - -typedef struct lightRec { - float amb[4]; - float diff[4]; - float spec[4]; - float pos[4]; - float spotDir[3]; - float spotExp; - float spotCutoff; - float atten[3]; - - float trans[3]; - float rot[3]; - float swing[3]; - float arc[3]; - float arcIncr[3]; -} Light; - -static int useSAME_AMB_SPEC = 1; -/* *INDENT-OFF* */ -static float modelAmb[4] = {0.2, 0.2, 0.2, 1.0}; - -static float matAmb[4] = {0.2, 0.2, 0.2, 1.0}; -static float matDiff[4] = {0.8, 0.8, 0.8, 1.0}; -static float matSpec[4] = {0.4, 0.4, 0.4, 1.0}; -static float matEmission[4] = {0.0, 0.0, 0.0, 1.0}; -/* *INDENT-ON* */ - -#define NUM_LIGHTS 3 -static Light spots[] = -{ - { - {0.2, 0.0, 0.0, 1.0}, /* ambient */ - {0.8, 0.0, 0.0, 1.0}, /* diffuse */ - {0.4, 0.0, 0.0, 1.0}, /* specular */ - {0.0, 0.0, 0.0, 1.0}, /* position */ - {0.0, -1.0, 0.0}, /* direction */ - 20.0, - 60.0, /* exponent, cutoff */ - {1.0, 0.0, 0.0}, /* attenuation */ - {0.0, 1.25, 0.0}, /* translation */ - {0.0, 0.0, 0.0}, /* rotation */ - {20.0, 0.0, 40.0}, /* swing */ - {0.0, 0.0, 0.0}, /* arc */ - {TWO_PI / 70.0, 0.0, TWO_PI / 140.0} /* arc increment */ - }, - { - {0.0, 0.2, 0.0, 1.0}, /* ambient */ - {0.0, 0.8, 0.0, 1.0}, /* diffuse */ - {0.0, 0.4, 0.0, 1.0}, /* specular */ - {0.0, 0.0, 0.0, 1.0}, /* position */ - {0.0, -1.0, 0.0}, /* direction */ - 20.0, - 60.0, /* exponent, cutoff */ - {1.0, 0.0, 0.0}, /* attenuation */ - {0.0, 1.25, 0.0}, /* translation */ - {0.0, 0.0, 0.0}, /* rotation */ - {20.0, 0.0, 40.0}, /* swing */ - {0.0, 0.0, 0.0}, /* arc */ - {TWO_PI / 120.0, 0.0, TWO_PI / 60.0} /* arc increment */ - }, - { - {0.0, 0.0, 0.2, 1.0}, /* ambient */ - {0.0, 0.0, 0.8, 1.0}, /* diffuse */ - {0.0, 0.0, 0.4, 1.0}, /* specular */ - {0.0, 0.0, 0.0, 1.0}, /* position */ - {0.0, -1.0, 0.0}, /* direction */ - 20.0, - 60.0, /* exponent, cutoff */ - {1.0, 0.0, 0.0}, /* attenuation */ - {0.0, 1.25, 0.0}, /* translation */ - {0.0, 0.0, 0.0}, /* rotation */ - {20.0, 0.0, 40.0}, /* swing */ - {0.0, 0.0, 0.0}, /* arc */ - {TWO_PI / 50.0, 0.0, TWO_PI / 100.0} /* arc increment */ - } -}; - -static void -usage(char *name) -{ - printf("\n"); - printf("usage: %s [options]\n", name); - printf("\n"); - printf(" Options:\n"); - printf(" -geometry Specify size and position WxH+X+Y\n"); - printf(" -lm Toggle lighting(SPECULAR and AMBIENT are/not same\n"); - printf("\n"); -#ifndef EXIT_FAILURE /* should be defined by ANSI C */ -#define EXIT_FAILURE 1 -#endif - exit(EXIT_FAILURE); -} - -static void -initLights(void) -{ - int k; - - for (k = 0; k < NUM_LIGHTS; ++k) { - int lt = GL_LIGHT0 + k; - Light *light = &spots[k]; - - glEnable(lt); - glLightfv(lt, GL_AMBIENT, light->amb); - glLightfv(lt, GL_DIFFUSE, light->diff); - - if (useSAME_AMB_SPEC) - glLightfv(lt, GL_SPECULAR, light->amb); - else - glLightfv(lt, GL_SPECULAR, light->spec); - - glLightf(lt, GL_SPOT_EXPONENT, light->spotExp); - glLightf(lt, GL_SPOT_CUTOFF, light->spotCutoff); - glLightf(lt, GL_CONSTANT_ATTENUATION, light->atten[0]); - glLightf(lt, GL_LINEAR_ATTENUATION, light->atten[1]); - glLightf(lt, GL_QUADRATIC_ATTENUATION, light->atten[2]); - } -} - -static void -aimLights(void) -{ - int k; - - for (k = 0; k < NUM_LIGHTS; ++k) { - Light *light = &spots[k]; - - light->rot[0] = light->swing[0] * sin(light->arc[0]); - light->arc[0] += light->arcIncr[0]; - if (light->arc[0] > TWO_PI) - light->arc[0] -= TWO_PI; - - light->rot[1] = light->swing[1] * sin(light->arc[1]); - light->arc[1] += light->arcIncr[1]; - if (light->arc[1] > TWO_PI) - light->arc[1] -= TWO_PI; - - light->rot[2] = light->swing[2] * sin(light->arc[2]); - light->arc[2] += light->arcIncr[2]; - if (light->arc[2] > TWO_PI) - light->arc[2] -= TWO_PI; - } -} - -static void -setLights(void) -{ - int k; - - for (k = 0; k < NUM_LIGHTS; ++k) { - int lt = GL_LIGHT0 + k; - Light *light = &spots[k]; - - glPushMatrix(); - glTranslatef(light->trans[0], light->trans[1], light->trans[2]); - glRotatef(light->rot[0], 1, 0, 0); - glRotatef(light->rot[1], 0, 1, 0); - glRotatef(light->rot[2], 0, 0, 1); - glLightfv(lt, GL_POSITION, light->pos); - glLightfv(lt, GL_SPOT_DIRECTION, light->spotDir); - glPopMatrix(); - } -} - -static void -drawLights(void) -{ - int k; - - glDisable(GL_LIGHTING); - for (k = 0; k < NUM_LIGHTS; ++k) { - Light *light = &spots[k]; - - glColor4fv(light->diff); - - glPushMatrix(); - glTranslatef(light->trans[0], light->trans[1], light->trans[2]); - glRotatef(light->rot[0], 1, 0, 0); - glRotatef(light->rot[1], 0, 1, 0); - glRotatef(light->rot[2], 0, 0, 1); - glBegin(GL_LINES); - glVertex3f(light->pos[0], light->pos[1], light->pos[2]); - glVertex3f(light->spotDir[0], light->spotDir[1], light->spotDir[2]); - glEnd(); - glPopMatrix(); - } - glEnable(GL_LIGHTING); -} - -static void -drawPlane(int w, int h) -{ - int i, j; - float dw = 1.0 / w; - float dh = 1.0 / h; - - glNormal3f(0.0, 0.0, 1.0); - for (j = 0; j < h; ++j) { - glBegin(GL_TRIANGLE_STRIP); - for (i = 0; i <= w; ++i) { - glVertex2f(dw * i, dh * (j + 1)); - glVertex2f(dw * i, dh * j); - } - glEnd(); - } -} - -int spin = 0; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glRotatef(spin, 0, 1, 0); - - aimLights(); - setLights(); - - glPushMatrix(); - glRotatef(-90.0, 1, 0, 0); - glScalef(1.9, 1.9, 1.0); - glTranslatef(-0.5, -0.5, 0.0); - drawPlane(16, 16); - glPopMatrix(); - - drawLights(); - glPopMatrix(); - - glutSwapBuffers(); -} - -void -animate(void) -{ - spin += 0.5; - if (spin > 360.0) - spin -= 360.0; - glutPostRedisplay(); -} - -void -visibility(int state) -{ - if (state == GLUT_VISIBLE) { - glutIdleFunc(animate); - } else { - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - /* process commmand line args */ - for (i = 1; i < argc; ++i) { - if (!strcmp("-lm", argv[i])) { - useSAME_AMB_SPEC = !useSAME_AMB_SPEC; - } else { - usage(argv[0]); - } - } - - glutCreateWindow("GLUT spotlight swing"); - glutDisplayFunc(display); - glutVisibilityFunc(visibility); - - glMatrixMode(GL_PROJECTION); - glFrustum(-1, 1, -1, 1, 2, 6); - - glMatrixMode(GL_MODELVIEW); - glTranslatef(0.0, 0.0, -3.0); - glRotatef(45.0, 1, 0, 0); - - glEnable(GL_LIGHTING); - glEnable(GL_NORMALIZE); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, modelAmb); - glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); - glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); - - glMaterialfv(GL_FRONT, GL_AMBIENT, matAmb); - glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiff); - glMaterialfv(GL_FRONT, GL_SPECULAR, matSpec); - glMaterialfv(GL_FRONT, GL_EMISSION, matEmission); - glMaterialf(GL_FRONT, GL_SHININESS, 10.0); - - initLights(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/spots.dsp b/lib/glut-3.7.6/progs/examples/spots.dsp deleted file mode 100644 index b653f28de0bd8cc3197f167c8a3ae631c0013ca7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/spots.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="spots" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=spots - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "spots.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "spots.mak" CFG="spots - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "spots - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "spots - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "spots - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "spots - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "spots - Win32 Release" -# Name "spots - Win32 Debug" -# Begin Source File - -SOURCE=.\spots.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/stars.c b/lib/glut-3.7.6/progs/examples/stars.c deleted file mode 100644 index 91521da3bb726acb957c37bdd1b1dec81e252a70..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stars.c +++ /dev/null @@ -1,387 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include -#include - -extern void *__glutCurrentWindow; - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -enum { - NORMAL = 0, - WEIRD = 1 -}; - -enum { - STREAK = 0, - CIRCLE = 1 -}; - -#define MAXSTARS 400 -#define MAXPOS 10000 -#define MAXWARP 10 -#define MAXANGLES 6000 - -typedef struct _starRec { - GLint type; - float x[2], y[2], z[2]; - float offsetX, offsetY, offsetR, rotation; -} starRec; - -GLenum doubleBuffer; -GLint windW = 300, windH = 300; - -GLenum flag = NORMAL; -GLint starCount = MAXSTARS / 2; -float speed = 1.0; -GLint nitro = 0; -starRec stars[MAXSTARS]; -float sinTable[MAXANGLES]; - -float -Sin(float angle) -{ - return (sinTable[(int) angle % MAXANGLES]); -} - -float -Cos(float angle) -{ - return (sinTable[((int) angle + (MAXANGLES / 4)) % MAXANGLES]); -} - -void -NewStar(GLint n, GLint d) -{ - if (rand() % 4 == 0) { - stars[n].type = CIRCLE; - } else { - stars[n].type = STREAK; - } - stars[n].x[0] = (float) (rand() % MAXPOS - MAXPOS / 2); - stars[n].y[0] = (float) (rand() % MAXPOS - MAXPOS / 2); - stars[n].z[0] = (float) (rand() % MAXPOS + d); - stars[n].x[1] = stars[n].x[0]; - stars[n].y[1] = stars[n].y[0]; - stars[n].z[1] = stars[n].z[0]; - if (rand() % 4 == 0 && flag == WEIRD) { - stars[n].offsetX = (float) (rand() % 100 - 100 / 2); - stars[n].offsetY = (float) (rand() % 100 - 100 / 2); - stars[n].offsetR = (float) (rand() % 25 - 25 / 2); - } else { - stars[n].offsetX = 0.0; - stars[n].offsetY = 0.0; - stars[n].offsetR = 0.0; - } -} - -void -RotatePoint(float *x, float *y, float rotation) -{ - float tmpX, tmpY; - - tmpX = *x * Cos(rotation) - *y * Sin(rotation); - tmpY = *y * Cos(rotation) + *x * Sin(rotation); - *x = tmpX; - *y = tmpY; -} - -void -MoveStars(void) -{ - float offset; - GLint n; - - offset = speed * 60.0; - - for (n = 0; n < starCount; n++) { - stars[n].x[1] = stars[n].x[0]; - stars[n].y[1] = stars[n].y[0]; - stars[n].z[1] = stars[n].z[0]; - stars[n].x[0] += stars[n].offsetX; - stars[n].y[0] += stars[n].offsetY; - stars[n].z[0] -= offset; - stars[n].rotation += stars[n].offsetR; - if (stars[n].rotation >= MAXANGLES) { - stars[n].rotation = 0.0; - } - } -} - -GLenum -StarPoint(GLint n) -{ - float x0, y0; - - x0 = stars[n].x[0] * windW / stars[n].z[0]; - y0 = stars[n].y[0] * windH / stars[n].z[0]; - RotatePoint(&x0, &y0, stars[n].rotation); - x0 += windW / 2.0; - y0 += windH / 2.0; - - if (x0 >= 0.0 && x0 < windW && y0 >= 0.0 && y0 < windH) { - return GL_TRUE; - } else { - return GL_FALSE; - } -} - -void -ShowStar(GLint n) -{ - float x0, y0, x1, y1, width; - GLint i; - - x0 = stars[n].x[0] * windW / stars[n].z[0]; - y0 = stars[n].y[0] * windH / stars[n].z[0]; - RotatePoint(&x0, &y0, stars[n].rotation); - x0 += windW / 2.0; - y0 += windH / 2.0; - - if (x0 >= 0.0 && x0 < windW && y0 >= 0.0 && y0 < windH) { - if (stars[n].type == STREAK) { - x1 = stars[n].x[1] * windW / stars[n].z[1]; - y1 = stars[n].y[1] * windH / stars[n].z[1]; - RotatePoint(&x1, &y1, stars[n].rotation); - x1 += windW / 2.0; - y1 += windH / 2.0; - - glLineWidth(MAXPOS / 100.0 / stars[n].z[0] + 1.0); - glColor3f(1.0, (MAXWARP - speed) / MAXWARP, (MAXWARP - speed) / MAXWARP); - if (fabs(x0 - x1) < 1.0 && fabs(y0 - y1) < 1.0) { - glBegin(GL_POINTS); - glVertex2f(x0, y0); - glEnd(); - } else { - glBegin(GL_LINES); - glVertex2f(x0, y0); - glVertex2f(x1, y1); - glEnd(); - } - } else { - width = MAXPOS / 10.0 / stars[n].z[0] + 1.0; - glColor3f(1.0, 0.0, 0.0); - glBegin(GL_POLYGON); - for (i = 0; i < 8; i++) { - float x = x0 + width * Cos((float) i * MAXANGLES / 8.0); - float y = y0 + width * Sin((float) i * MAXANGLES / 8.0); - glVertex2f(x, y); - }; - glEnd(); - } - } -} - -void -UpdateStars(void) -{ - GLint n; - - glClear(GL_COLOR_BUFFER_BIT); - - for (n = 0; n < starCount; n++) { - if (stars[n].z[0] > speed || (stars[n].z[0] > 0.0 && speed < MAXWARP)) { - if (StarPoint(n) == GL_FALSE) { - NewStar(n, MAXPOS); - } - } else { - NewStar(n, MAXPOS); - } - } -} - -void -ShowStars(void) -{ - GLint n; - - glClear(GL_COLOR_BUFFER_BIT); - - for (n = 0; n < starCount; n++) { - if (stars[n].z[0] > speed || (stars[n].z[0] > 0.0 && speed < MAXWARP)) { - ShowStar(n); - } - } -} - -static void -Init(void) -{ - float angle; - GLint n; - - srand((unsigned int) time(NULL)); - - for (n = 0; n < MAXSTARS; n++) { - NewStar(n, 100); - } - - angle = 0.0; - for (n = 0; n < MAXANGLES; n++) { - sinTable[n] = sin(angle); - angle += M_PI / (MAXANGLES / 2.0); - } - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glDisable(GL_DITHER); -} - -void -Reshape(int width, int height) -{ - windW = width; - windH = height; - - glViewport(0, 0, windW, windH); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-0.5, windW + 0.5, -0.5, windH + 0.5); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -static void -Key(unsigned char key, int x, int y) -{ - switch (key) { - case ' ': - flag = (flag == NORMAL) ? WEIRD : NORMAL; - break; - case 't': - nitro = 1; - break; - case 27: - exit(0); - } -} - -void -Idle(void) -{ - MoveStars(); - UpdateStars(); - if (nitro > 0) { - speed = (float) (nitro / 10) + 1.0; - if (speed > MAXWARP) { - speed = MAXWARP; - } - if (++nitro > MAXWARP * 10) { - nitro = -nitro; - } - } else if (nitro < 0) { - nitro++; - speed = (float) (-nitro / 10) + 1.0; - if (speed > MAXWARP) { - speed = MAXWARP; - } - } - glutPostRedisplay(); -} - -void -Display(void) -{ - ShowStars(); - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -void -Visible(int state) -{ - if (state == GLUT_VISIBLE) { - glutIdleFunc(Idle); - } else { - glutIdleFunc(NULL); - } -} - -static void -Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_TRUE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } - } -} - -int -main(int argc, char **argv) -{ - GLenum type; - - glutInitWindowSize(windW, windH); - glutInit(&argc, argv); - Args(argc, argv); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - glutCreateWindow("Stars"); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutVisibilityFunc(Visible); - glutDisplayFunc(Display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/stars.dsp b/lib/glut-3.7.6/progs/examples/stars.dsp deleted file mode 100644 index 63d16c7136f0b1c23e2da7386471f0a633206a3f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stars.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="stars" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=stars - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "stars.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "stars.mak" CFG="stars - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "stars - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "stars - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "stars - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "stars - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "stars - Win32 Release" -# Name "stars - Win32 Debug" -# Begin Source File - -SOURCE=.\stars.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/stenciltst.c b/lib/glut-3.7.6/progs/examples/stenciltst.c deleted file mode 100644 index 0abbddf960198bf294f361b4790f596144962ddb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stenciltst.c +++ /dev/null @@ -1,147 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include - -GLboolean doubleBuffer; - -/* ARGSUSED1 */ -static void -Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - } -} - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - glStencilFunc(GL_ALWAYS, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - - /* red triangle */ - glColor3ub(200, 0, 0); - glBegin(GL_POLYGON); - glVertex3i(-4, -4, 0); - glVertex3i(4, -4, 0); - glVertex3i(0, 4, 0); - glEnd(); - - glStencilFunc(GL_EQUAL, 1, 1); - glStencilOp(GL_INCR, GL_KEEP, GL_DECR); - - /* green square */ - glColor3ub(0, 200, 0); - glBegin(GL_POLYGON); - glVertex3i(3, 3, 0); - glVertex3i(-3, 3, 0); - glVertex3i(-3, -3, 0); - glVertex3i(3, -3, 0); - glEnd(); - - glStencilFunc(GL_EQUAL, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - /* blue square */ - glColor3ub(0, 0, 200); - glBegin(GL_POLYGON); - glVertex3i(3, 3, 0); - glVertex3i(-3, 3, 0); - glVertex3i(-3, -3, 0); - glVertex3i(3, -3, 0); - glEnd(); - - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -static void -Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_TRUE; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } - } -} - -int -main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - Args(argc, argv); - - type = GLUT_RGB | GLUT_STENCIL; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - glutCreateWindow("Stencil Test"); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearStencil(0); - glStencilMask(1); - glEnable(GL_STENCIL_TEST); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0); - glMatrixMode(GL_MODELVIEW); - - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/stenciltst.dsp b/lib/glut-3.7.6/progs/examples/stenciltst.dsp deleted file mode 100644 index e465419c35543e558821d3864015438102f03d19..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stenciltst.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="stenciltst" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=stenciltst - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "stenciltst.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "stenciltst.mak" CFG="stenciltst - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "stenciltst - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "stenciltst - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "stenciltst - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "stenciltst - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "stenciltst - Win32 Release" -# Name "stenciltst - Win32 Debug" -# Begin Source File - -SOURCE=.\stenciltst.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/stereo.c b/lib/glut-3.7.6/progs/examples/stereo.c deleted file mode 100644 index a6999d185252d1fcadfc9ed3ca5313db1dafeb41..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stereo.c +++ /dev/null @@ -1,33 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -void -display(void) -{ - glDrawBuffer(GL_BACK_LEFT); - glClearColor(1.0, 0.0, 0.0, 1.0); /* red */ - glClear(GL_COLOR_BUFFER_BIT); - glDrawBuffer(GL_BACK_RIGHT); - glClearColor(0.0, 0.0, 1.0, 1.0); /* blue */ - glClear(GL_COLOR_BUFFER_BIT); - glutSwapBuffers(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_STEREO); - glutCreateWindow("stereo example"); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/stereo.dsp b/lib/glut-3.7.6/progs/examples/stereo.dsp deleted file mode 100644 index be196b8b99bbf152b6c94b34cd66b49b3e2c23d0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stereo.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="stereo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=stereo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "stereo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "stereo.mak" CFG="stereo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "stereo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "stereo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "stereo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "stereo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "stereo - Win32 Release" -# Name "stereo - Win32 Debug" -# Begin Source File - -SOURCE=.\stereo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/stroke.c b/lib/glut-3.7.6/progs/examples/stroke.c deleted file mode 100644 index 4a1e7c17a6c922691cad6095140ab466bfb5c326..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stroke.c +++ /dev/null @@ -1,100 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -void *font = GLUT_STROKE_ROMAN; -void *fonts[] = -{GLUT_STROKE_ROMAN, GLUT_STROKE_MONO_ROMAN}; -char defaultMessage[] = "GLUT means OpenGL."; -char *message = defaultMessage; - -int angle = 0; - -void -selectFont(int newfont) -{ - font = fonts[newfont]; - glutPostRedisplay(); -} - -void -selectMessage(int msg) -{ - switch (msg) { - case 1: - message = "abcdefghijklmnop"; - break; - case 2: - message = "ABCDEFGHIJKLMNOP"; - break; - } -} - -void -tick(void) -{ - angle -= 2; - glutPostRedisplay(); -} - -void -display(void) -{ - int len, i; - - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glRotatef(angle, 0.0, 0.0, 1.0); - glTranslatef(-750, 0, 0); - len = (int) strlen(message); - for (i = 0; i < len; i++) { - glutStrokeCharacter(font, message[i]); - } - glPopMatrix(); - glutSwapBuffers(); -} - -int -main(int argc, char **argv) -{ - int i, submenu; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-mono")) { - font = GLUT_STROKE_MONO_ROMAN; - } - } - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize(600, 600); - glutCreateWindow("anti-aliased stroke font"); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 2000, 0, 2000); - glMatrixMode(GL_MODELVIEW); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glLineWidth(3.0); - glTranslatef(1000, 1000, 0); - glClearColor(0.0, 0.0, 0.0, 1.0); - glColor3f(1.0, 1.0, 1.0); - glutDisplayFunc(display); - glutIdleFunc(tick); - submenu = glutCreateMenu(selectMessage); - glutAddMenuEntry("abc", 1); - glutAddMenuEntry("ABC", 2); - glutCreateMenu(selectFont); - glutAddMenuEntry("Roman", 0); - glutAddMenuEntry("Mono Roman", 1); - glutAddSubMenu("Messages", submenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/stroke.dsp b/lib/glut-3.7.6/progs/examples/stroke.dsp deleted file mode 100644 index 97c10adae6fffb225ef0ad6e998aa13dc6882436..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/stroke.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="stroke" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=stroke - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "stroke.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "stroke.mak" CFG="stroke - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "stroke - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "stroke - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "stroke - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "stroke - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "stroke - Win32 Release" -# Name "stroke - Win32 Debug" -# Begin Source File - -SOURCE=.\stroke.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/subwin.c b/lib/glut-3.7.6/progs/examples/subwin.c deleted file mode 100644 index e2e99ebba8d360f6609b83c152277cd58e55742b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/subwin.c +++ /dev/null @@ -1,88 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -#define GAP 10 - -int main_w, w1, w2, w3, w4; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void -vis(int visState) -{ - printf("VIS: win=%d, v=%d\n", glutGetWindow(), visState); -} - -void -reshape(int w, int h) -{ - int width = 50; - int height = 50; - - glViewport(0, 0, w, h); - if (w > 50) { - width = (w - 3 * GAP) / 2; - } else { - width = 10; - } - if (h > 50) { - height = (h - 3 * GAP) / 2; - } else { - height = 10; - } - glutSetWindow(w1); - glutPositionWindow(GAP, GAP); - glutReshapeWindow(width, height); - glutSetWindow(w2); - glutPositionWindow(GAP + width + GAP, GAP); - glutReshapeWindow(width, height); - glutSetWindow(w3); - glutPositionWindow(GAP, GAP + height + GAP); - glutReshapeWindow(width, height); - glutSetWindow(w4); - glutPositionWindow(GAP + width + GAP, GAP + height + GAP); - glutReshapeWindow(width, height); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB); - glutInitWindowSize(210, 210); - main_w = glutCreateWindow("4 subwindows"); - glutDisplayFunc(display); - glutVisibilityFunc(vis); - glutReshapeFunc(reshape); - glClearColor(1.0, 1.0, 1.0, 1.0); - w1 = glutCreateSubWindow(main_w, 10, 10, 90, 90); - glutDisplayFunc(display); - glutVisibilityFunc(vis); - glClearColor(1.0, 0.0, 0.0, 1.0); - w2 = glutCreateSubWindow(main_w, 110, 10, 90, 90); - glutDisplayFunc(display); - glutVisibilityFunc(vis); - glClearColor(0.0, 1.0, 0.0, 1.0); - w3 = glutCreateSubWindow(main_w, 10, 110, 90, 90); - glutDisplayFunc(display); - glutVisibilityFunc(vis); - glClearColor(0.0, 0.0, 1.0, 1.0); - w4 = glutCreateSubWindow(main_w, 110, 110, 90, 90); - glutDisplayFunc(display); - glutVisibilityFunc(vis); - glClearColor(1.0, 1.0, 0.0, 1.0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/subwin.dsp b/lib/glut-3.7.6/progs/examples/subwin.dsp deleted file mode 100644 index e8e5d542f91a1164adb5acb98a3f5b3ddd70a3ae..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/subwin.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="subwin" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=subwin - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "subwin.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "subwin.mak" CFG="subwin - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "subwin - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "subwin - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "subwin - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "subwin - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "subwin - Win32 Release" -# Name "subwin - Win32 Debug" -# Begin Source File - -SOURCE=.\subwin.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/surfgrid.c b/lib/glut-3.7.6/progs/examples/surfgrid.c deleted file mode 100644 index 4b026a792eb52b36fd24eec25ec7aad106cdfa1b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/surfgrid.c +++ /dev/null @@ -1,588 +0,0 @@ -/** - * surfgrid.c - simple test of polygon offset - * - * GLUT distribution version $Revision: 1.8 $ - * - * usage: - * surfgrid [-f] - * - * options: - * -f run on full screen - * - * keys: - * p toggle polygon offset - * F increase polygon offset factor - * f decrease polygon offset factor - * B increase polygon offset bias - * b decrease polygon offset bias - * g toggle grid drawing - * s toggle smooth/flat shading - * n toggle whether to use GL evaluators or GLU nurbs - * u decr number of segments in U direction - * U incr number of segments in U direction - * v decr number of segments in V direction - * V incr number of segments in V direction - * escape quit - */ - -#include -#include -#include -#include -#include - -#define W 600 -#define H 600 - -float z_axis[] = -{0.0, 0.0, 1.0}; - -void -norm(float v[3]) -{ - float r; - - r = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - - v[0] /= r; - v[1] /= r; - v[2] /= r; -} - -void -cross(float v1[3], float v2[3], float result[3]) -{ - result[0] = v1[1] * v2[2] - v1[2] * v2[1]; - result[1] = v1[2] * v2[0] - v1[0] * v2[2]; - result[2] = v1[0] * v2[1] - v1[1] * v2[0]; -} - -float -length(float v[3]) -{ - float r = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - return r; -} - -static int winwidth = W, winheight = H; -GLUnurbsObj *nobj; -GLuint surflist, gridlist; - -int useglunurbs = 0; -int smooth = 1; -GLboolean tracking = GL_FALSE; -int showgrid = 1; -int showsurf = 1; -int fullscreen = 0; -float modelmatrix[16]; -float factor = 0.5; -float bias = 0.002; -int usegments = 4; -int vsegments = 4; - -int spindx, spindy; -int startx, starty; -int curx, cury; -int prevx, prevy; /* to get good deltas using glut */ - -void redraw(void); -void createlists(void); - -/* Control points of the torus in Bezier form. Can be rendered - using OpenGL evaluators. */ -static GLfloat torusbezierpts[] = -{ -/* *INDENT-OFF* */ - 4.0, 0.0, 0.0, 4.0, 2.0, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, - 3.0, 0.0, 1.0, 2.0, 4.0, 0.0, 1.0, 2.0, 8.0, 0.0, 0.0, 4.0, - 8.0, 0.0, 0.0, 4.0, 4.0, 0.0,-1.0, 2.0, 3.0, 0.0,-1.0, 2.0, - 3.0, 0.0,-1.0, 2.0, 2.0, 0.0,-1.0, 2.0, 4.0, 0.0, 0.0, 4.0, - 2.0,-2.0, 0.0, 2.0, 1.0,-1.0, 0.5, 1.0, 1.5,-1.5, 0.5, 1.0, - 1.5,-1.5, 0.5, 1.0, 2.0,-2.0, 0.5, 1.0, 4.0,-4.0, 0.0, 2.0, - 4.0,-4.0, 0.0, 2.0, 2.0,-2.0,-0.5, 1.0, 1.5,-1.5,-0.5, 1.0, - 1.5,-1.5,-0.5, 1.0, 1.0,-1.0,-0.5, 1.0, 2.0,-2.0, 0.0, 2.0, - 0.0,-2.0, 0.0, 2.0, 0.0,-1.0, 0.5, 1.0, 0.0,-1.5, 0.5, 1.0, - 0.0,-1.5, 0.5, 1.0, 0.0,-2.0, 0.5, 1.0, 0.0,-4.0, 0.0, 2.0, - 0.0,-4.0, 0.0, 2.0, 0.0,-2.0,-0.5, 1.0, 0.0,-1.5,-0.5, 1.0, - 0.0,-1.5,-0.5, 1.0, 0.0,-1.0,-0.5, 1.0, 0.0,-2.0, 0.0, 2.0, - 0.0,-2.0, 0.0, 2.0, 0.0,-1.0, 0.5, 1.0, 0.0,-1.5, 0.5, 1.0, - 0.0,-1.5, 0.5, 1.0, 0.0,-2.0, 0.5, 1.0, 0.0,-4.0, 0.0, 2.0, - 0.0,-4.0, 0.0, 2.0, 0.0,-2.0,-0.5, 1.0, 0.0,-1.5,-0.5, 1.0, - 0.0,-1.5,-0.5, 1.0, 0.0,-1.0,-0.5, 1.0, 0.0,-2.0, 0.0, 2.0, - -2.0,-2.0, 0.0, 2.0,-1.0,-1.0, 0.5, 1.0,-1.5,-1.5, 0.5, 1.0, - -1.5,-1.5, 0.5, 1.0,-2.0,-2.0, 0.5, 1.0,-4.0,-4.0, 0.0, 2.0, - -4.0,-4.0, 0.0, 2.0,-2.0,-2.0,-0.5, 1.0,-1.5,-1.5,-0.5, 1.0, - -1.5,-1.5,-0.5, 1.0,-1.0,-1.0,-0.5, 1.0,-2.0,-2.0, 0.0, 2.0, - -4.0, 0.0, 0.0, 4.0,-2.0, 0.0, 1.0, 2.0,-3.0, 0.0, 1.0, 2.0, - -3.0, 0.0, 1.0, 2.0,-4.0, 0.0, 1.0, 2.0,-8.0, 0.0, 0.0, 4.0, - -8.0, 0.0, 0.0, 4.0,-4.0, 0.0,-1.0, 2.0,-3.0, 0.0,-1.0, 2.0, - -3.0, 0.0,-1.0, 2.0,-2.0, 0.0,-1.0, 2.0,-4.0, 0.0, 0.0, 4.0, - -4.0, 0.0, 0.0, 4.0,-2.0, 0.0, 1.0, 2.0,-3.0, 0.0, 1.0, 2.0, - -3.0, 0.0, 1.0, 2.0,-4.0, 0.0, 1.0, 2.0,-8.0, 0.0, 0.0, 4.0, - -8.0, 0.0, 0.0, 4.0,-4.0, 0.0,-1.0, 2.0,-3.0, 0.0,-1.0, 2.0, - -3.0, 0.0,-1.0, 2.0,-2.0, 0.0,-1.0, 2.0,-4.0, 0.0, 0.0, 4.0, - -2.0, 2.0, 0.0, 2.0,-1.0, 1.0, 0.5, 1.0,-1.5, 1.5, 0.5, 1.0, - -1.5, 1.5, 0.5, 1.0,-2.0, 2.0, 0.5, 1.0,-4.0, 4.0, 0.0, 2.0, - -4.0, 4.0, 0.0, 2.0,-2.0, 2.0,-0.5, 1.0,-1.5, 1.5,-0.5, 1.0, - -1.5, 1.5,-0.5, 1.0,-1.0, 1.0,-0.5, 1.0,-2.0, 2.0, 0.0, 2.0, - 0.0, 2.0, 0.0, 2.0, 0.0, 1.0, 0.5, 1.0, 0.0, 1.5, 0.5, 1.0, - 0.0, 1.5, 0.5, 1.0, 0.0, 2.0, 0.5, 1.0, 0.0, 4.0, 0.0, 2.0, - 0.0, 4.0, 0.0, 2.0, 0.0, 2.0,-0.5, 1.0, 0.0, 1.5,-0.5, 1.0, - 0.0, 1.5,-0.5, 1.0, 0.0, 1.0,-0.5, 1.0, 0.0, 2.0, 0.0, 2.0, - 0.0, 2.0, 0.0, 2.0, 0.0, 1.0, 0.5, 1.0, 0.0, 1.5, 0.5, 1.0, - 0.0, 1.5, 0.5, 1.0, 0.0, 2.0, 0.5, 1.0, 0.0, 4.0, 0.0, 2.0, - 0.0, 4.0, 0.0, 2.0, 0.0, 2.0,-0.5, 1.0, 0.0, 1.5,-0.5, 1.0, - 0.0, 1.5,-0.5, 1.0, 0.0, 1.0,-0.5, 1.0, 0.0, 2.0, 0.0, 2.0, - 2.0, 2.0, 0.0, 2.0, 1.0, 1.0, 0.5, 1.0, 1.5, 1.5, 0.5, 1.0, - 1.5, 1.5, 0.5, 1.0, 2.0, 2.0, 0.5, 1.0, 4.0, 4.0, 0.0, 2.0, - 4.0, 4.0, 0.0, 2.0, 2.0, 2.0,-0.5, 1.0, 1.5, 1.5,-0.5, 1.0, - 1.5, 1.5,-0.5, 1.0, 1.0, 1.0,-0.5, 1.0, 2.0, 2.0, 0.0, 2.0, - 4.0, 0.0, 0.0, 4.0, 2.0, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, - 3.0, 0.0, 1.0, 2.0, 4.0, 0.0, 1.0, 2.0, 8.0, 0.0, 0.0, 4.0, - 8.0, 0.0, 0.0, 4.0, 4.0, 0.0,-1.0, 2.0, 3.0, 0.0,-1.0, 2.0, - 3.0, 0.0,-1.0, 2.0, 2.0, 0.0,-1.0, 2.0, 4.0, 0.0, 0.0, 4.0, -/* *INDENT-ON* */ - -}; - -/* Control points of a torus in NURBS form. Can be rendered using - the GLU NURBS routines. */ -static GLfloat torusnurbpts[] = -{ -/* *INDENT-OFF* */ - 4.0, 0.0, 0.0, 4.0, 2.0, 0.0, 1.0, 2.0, 4.0, 0.0, 1.0, 2.0, - 8.0, 0.0, 0.0, 4.0, 4.0, 0.0,-1.0, 2.0, 2.0, 0.0,-1.0, 2.0, - 4.0, 0.0, 0.0, 4.0, 2.0,-2.0, 0.0, 2.0, 1.0,-1.0, 0.5, 1.0, - 2.0,-2.0, 0.5, 1.0, 4.0,-4.0, 0.0, 2.0, 2.0,-2.0,-0.5, 1.0, - 1.0,-1.0,-0.5, 1.0, 2.0,-2.0, 0.0, 2.0,-2.0,-2.0, 0.0, 2.0, - -1.0,-1.0, 0.5, 1.0,-2.0,-2.0, 0.5, 1.0,-4.0,-4.0, 0.0, 2.0, - -2.0,-2.0,-0.5, 1.0,-1.0,-1.0,-0.5, 1.0,-2.0,-2.0, 0.0, 2.0, - -4.0, 0.0, 0.0, 4.0,-2.0, 0.0, 1.0, 2.0,-4.0, 0.0, 1.0, 2.0, - -8.0, 0.0, 0.0, 4.0,-4.0, 0.0,-1.0, 2.0,-2.0, 0.0,-1.0, 2.0, - -4.0, 0.0, 0.0, 4.0,-2.0, 2.0, 0.0, 2.0,-1.0, 1.0, 0.5, 1.0, - -2.0, 2.0, 0.5, 1.0,-4.0, 4.0, 0.0, 2.0,-2.0, 2.0,-0.5, 1.0, - -1.0, 1.0,-0.5, 1.0,-2.0, 2.0, 0.0, 2.0, 2.0, 2.0, 0.0, 2.0, - 1.0, 1.0, 0.5, 1.0, 2.0, 2.0, 0.5, 1.0, 4.0, 4.0, 0.0, 2.0, - 2.0, 2.0,-0.5, 1.0, 1.0, 1.0,-0.5, 1.0, 2.0, 2.0, 0.0, 2.0, - 4.0, 0.0, 0.0, 4.0, 2.0, 0.0, 1.0, 2.0, 4.0, 0.0, 1.0, 2.0, - 8.0, 0.0, 0.0, 4.0, 4.0, 0.0,-1.0, 2.0, 2.0, 0.0,-1.0, 2.0, - 4.0, 0.0, 0.0, 4.0, -/* *INDENT-ON* */ - -}; - -void -move(int x, int y) -{ - prevx = curx; - prevy = cury; - curx = x; - cury = y; - if (curx != startx || cury != starty) { - glutPostRedisplay(); - startx = curx; - starty = cury; - } -} - -void -button(int button, int state, int x, int y) -{ - if (button != GLUT_LEFT_BUTTON) - return; - switch (state) { - case GLUT_DOWN: - prevx = curx = startx = x; - prevy = cury = starty = y; - spindx = 0; - spindy = 0; - tracking = GL_TRUE; - break; - case GLUT_UP: - /* - * If user released the button while moving the mouse, keep - * spinning. - */ - if (x != prevx || y != prevy) { - spindx = x - prevx; - spindy = y - prevy; - } - tracking = GL_FALSE; - break; - } -} - -/* Maintain a square window when resizing */ -void -reshape(int width, int height) -{ - int size; - size = (width < height ? width : height); - glViewport((width - size) / 2, (height - size) / 2, size, size); - glutReshapeWindow(size, size); - glutPostRedisplay(); -} - -void -gridmaterials(void) -{ - static float front_mat_diffuse[] = - {1.0, 1.0, 0.4, 1.0}; - static float front_mat_ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float back_mat_diffuse[] = - {1.0, 0.0, 0.0, 1.0}; - static float back_mat_ambient[] = - {0.1, 0.1, 0.1, 1.0}; - - glMaterialfv(GL_FRONT, GL_DIFFUSE, front_mat_diffuse); - glMaterialfv(GL_FRONT, GL_AMBIENT, front_mat_ambient); - glMaterialfv(GL_BACK, GL_DIFFUSE, back_mat_diffuse); - glMaterialfv(GL_BACK, GL_AMBIENT, back_mat_ambient); -} - -void -surfacematerials(void) -{ - static float front_mat_diffuse[] = - {0.2, 0.7, 0.4, 1.0}; - static float front_mat_ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float back_mat_diffuse[] = - {1.0, 1.0, 0.2, 1.0}; - static float back_mat_ambient[] = - {0.1, 0.1, 0.1, 1.0}; - - glMaterialfv(GL_FRONT, GL_DIFFUSE, front_mat_diffuse); - glMaterialfv(GL_FRONT, GL_AMBIENT, front_mat_ambient); - glMaterialfv(GL_BACK, GL_DIFFUSE, back_mat_diffuse); - glMaterialfv(GL_BACK, GL_AMBIENT, back_mat_ambient); -} - -void -init(void) -{ - static float ambient[] = - {0.0, 0.0, 0.0, 1.0}; - static float diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - static float position[] = - {90.0, 90.0, -150.0, 0.0}; - static float lmodel_ambient[] = - {1.0, 1.0, 1.0, 1.0}; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, 1.0, 2.0, 200.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glGetFloatv(GL_MODELVIEW_MATRIX, modelmatrix); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_AUTO_NORMAL); - glFrontFace(GL_CCW); - - glEnable(GL_MAP2_VERTEX_4); - glClearColor(0.25, 0.25, 0.5, 0.0); - -#if GL_EXT_polygon_offset - glPolygonOffsetEXT(factor, bias); - glEnable(GL_POLYGON_OFFSET_EXT); -#endif - - nobj = gluNewNurbsRenderer(); -#ifdef GLU_VERSION_1_1 /* New GLU 1.1 interface. */ - gluNurbsProperty(nobj, GLU_SAMPLING_METHOD, GLU_DOMAIN_DISTANCE); -#endif - - surflist = glGenLists(1); - gridlist = glGenLists(1); - createlists(); -} - -void -drawmesh(void) -{ - int i, j; - float *p; - - int up2p = 4; - int uorder = 3, vorder = 3; - int nu = 4, nv = 4; - int vp2p = up2p * uorder * nu; - - for (j = 0; j < nv; j++) { - for (i = 0; i < nu; i++) { - p = torusbezierpts + (j * vp2p * vorder) + (i * up2p * uorder); -#if GL_EXT_polygon_offset - glPolygonOffsetEXT(factor, bias); -#endif - glMap2f(GL_MAP2_VERTEX_4, 0.0, 1.0, up2p, 3, 0.0, 1.0, vp2p, 3, - (void *) p); - if (showsurf) { - surfacematerials(); - glEvalMesh2(GL_FILL, 0, usegments, 0, vsegments); - } - if (showgrid) { - gridmaterials(); - glEvalMesh2(GL_LINE, 0, usegments, 0, vsegments); - } - } - } -} - -void -redraw(void) -{ - int dx, dy; - float v[3], rot[3]; - float len, ang; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f(1, 0, 0); - - if (tracking) { - dx = curx - startx; - dy = cury - starty; - } else { - dx = spindx; - dy = spindy; - } - if (dx || dy) { - dy = -dy; - v[0] = dx; - v[1] = dy; - v[2] = 0; - - len = length(v); - ang = -len / 600 * 360; - norm(v); - cross(v, z_axis, rot); - - /* This is certainly not recommended for programs that care - about performance or numerical stability: we concatenate - the rotation onto the current modelview matrix and read - the matrix back, thus saving ourselves from writing our - own matrix manipulation routines. */ - glLoadIdentity(); - glRotatef(ang, rot[0], rot[1], rot[2]); - glMultMatrixf(modelmatrix); - glGetFloatv(GL_MODELVIEW_MATRIX, modelmatrix); - } - glLoadIdentity(); - glTranslatef(0.0, 0.0, -10.0); - glMultMatrixf(modelmatrix); - - if (useglunurbs) { - if (showsurf) - glCallList(surflist); - if (showgrid) - glCallList(gridlist); - } else { - glMapGrid2f(usegments, 0.0, 1.0, vsegments, 0.0, 1.0); - drawmesh(); - } - - glutSwapBuffers(); -} - -static void -usage(void) -{ - printf("usage: surfgrid [-f]\n"); - exit(-1); -} - -/* what to do when a menu item is selected. This function also handles - keystroke events. */ -void -menu(int item) -{ - switch (item) { - case 'p': -#if GL_EXT_polygon_offset - if (glIsEnabled(GL_POLYGON_OFFSET_EXT)) { - glDisable(GL_POLYGON_OFFSET_EXT); - printf("disabling polygon offset\n"); - } else { - glEnable(GL_POLYGON_OFFSET_EXT); - printf("enabling polygon offset\n"); - } -#endif - break; - case 'F': - factor += 0.1; - printf("factor: %8.4f\n", factor); - break; - case 'f': - factor -= 0.1; - printf("factor: %8.4f\n", factor); - break; - case 'B': - bias += 0.0001; - printf("bias: %8.4f\n", bias); - break; - case 'b': - bias -= 0.0001; - printf("bias: %8.4f\n", bias); - break; - case 'g': - showgrid = !showgrid; - break; - case 'n': - useglunurbs = !useglunurbs; - break; - case 's': - smooth = !smooth; - if (smooth) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - break; - case 't': - showsurf = !showsurf; - break; - case 'u': - usegments = (usegments < 2 ? 1 : usegments - 1); - createlists(); - break; - case 'U': - usegments++; - createlists(); - break; - case 'v': - vsegments = (vsegments < 2 ? 1 : vsegments - 1); - createlists(); - break; - case 'V': - vsegments++; - createlists(); - break; - case '\033': /* ESC key: quit */ - exit(0); - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - menu((int) key); -} - -void -animate(void) -{ - if (!tracking && (spindx != 0 || spindy != 0)) - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); /* initialize glut, processing - arguments */ - - for (i = 1; i < argc; i++) { - if (argv[i][0] == '-') { - switch (argv[i][1]) { - case 'f': - fullscreen = 1; - break; - default: - usage(); - break; - } - } else { - usage(); - } - } - - glutInitWindowSize(winwidth, winheight); - glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow("surfgrid"); - - /* create a menu for the right mouse button */ - glutCreateMenu(menu); -#if GL_EXT_polygon_offset - glutAddMenuEntry("p: toggle polygon offset", 'p'); -#endif - glutAddMenuEntry("F: increase factor", 'F'); - glutAddMenuEntry("f: decrease factor", 'f'); - glutAddMenuEntry("B: increase bias", 'B'); - glutAddMenuEntry("b: decrease bias", 'b'); - glutAddMenuEntry("g: toggle grid", 'g'); - glutAddMenuEntry("s: toggle smooth shading", 's'); - glutAddMenuEntry("t: toggle surface", 't'); - glutAddMenuEntry("n: toggle GL evalutators/GLU nurbs", 'n'); - glutAddMenuEntry("u: decrement u segments", 'u'); - glutAddMenuEntry("U: increment u segments", 'U'); - glutAddMenuEntry("v: decrement v segments", 'v'); - glutAddMenuEntry("V: increment v segments", 'V'); - glutAddMenuEntry(": exit program", '\033'); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - /* set callbacks */ - glutKeyboardFunc(key); - glutDisplayFunc(redraw); - glutReshapeFunc(reshape); - glutMouseFunc(button); - glutMotionFunc(move); - glutIdleFunc(animate); - -#if GL_EXT_polygon_offset - if (!glutExtensionSupported("GL_EXT_polygon_offset")) { - printf("Warning: " - "GL_EXT_polygon_offset not supported on this machine... " - "trying anyway\n"); - } -#else - printf("Warning: not compiled with GL_EXT_polygon_offset support.\n"); -#endif - - init(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -float circleknots[] = -{0.0, 0.0, 0.0, 0.25, 0.50, 0.50, 0.75, 1.0, 1.0, 1.0}; - -void -createlists(void) -{ -#ifdef GLU_VERSION_1_1 /* New GLU 1.1 interface. */ - gluNurbsProperty(nobj, GLU_U_STEP, (usegments - 1) * 4); - gluNurbsProperty(nobj, GLU_V_STEP, (vsegments - 1) * 4); - - gluNurbsProperty(nobj, GLU_DISPLAY_MODE, GLU_FILL); -#endif - glNewList(surflist, GL_COMPILE); - surfacematerials(); - gluBeginSurface(nobj); - gluNurbsSurface(nobj, 10, circleknots, 10, circleknots, - 4, 28, torusnurbpts, 3, 3, GL_MAP2_VERTEX_4); - gluEndSurface(nobj); - glEndList(); - - gluNurbsProperty(nobj, GLU_DISPLAY_MODE, GLU_OUTLINE_POLYGON); - glNewList(gridlist, GL_COMPILE); - gridmaterials(); - gluBeginSurface(nobj); - gluNurbsSurface(nobj, 10, circleknots, 10, circleknots, - 4, 28, torusnurbpts, 3, 3, GL_MAP2_VERTEX_4); - gluEndSurface(nobj); - glEndList(); -} diff --git a/lib/glut-3.7.6/progs/examples/surfgrid.dsp b/lib/glut-3.7.6/progs/examples/surfgrid.dsp deleted file mode 100644 index 373f11f171a29696f541c2cefb8cc480100e6e40..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/surfgrid.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="surfgrid" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=surfgrid - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "surfgrid.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "surfgrid.mak" CFG="surfgrid - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "surfgrid - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "surfgrid - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "surfgrid - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "surfgrid - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "surfgrid - Win32 Release" -# Name "surfgrid - Win32 Debug" -# Begin Source File - -SOURCE=.\surfgrid.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/texenv.c b/lib/glut-3.7.6/progs/examples/texenv.c deleted file mode 100644 index 0b811f864934f581431b2832f156f7b807691f21..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/texenv.c +++ /dev/null @@ -1,753 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -/* Demonstrates texture environment modes and internal image formats. - Requires the GL_EXT_texture extension. */ - -#include -#include -#include -#include - -#undef max -#undef min -#define max(a,b) ((a) >= (b) ? (a) : (b)) -#define min(a,b) ((a) <= (b) ? (a) : (b)) -/* *INDENT-OFF* */ -GLfloat lightCheck[4] = {0.7, 0.7, 0.7, 1.0}; -GLfloat darkCheck[4] = {0.3, 0.3, 0.3, 1.0}; - -GLfloat labelColor0[4] = {1.0, 1.0, 1.0, 1.0}; -GLfloat labelColor1[4] = {1.0, 1.0, 0.4, 1.0}; -GLfloat *labelInfoColor = labelColor0; -GLfloat labelLevelColor0[4] = {0.8, 0.8, 0.1, 1.0}; -GLfloat labelLevelColor1[4] = {0.0, 0.0, 0.0, 1.0}; -/* *INDENT-ON* */ - -GLboolean doubleBuffered = GL_FALSE; -GLboolean drawBackground = GL_FALSE; -GLboolean drawBlended = GL_TRUE; -GLboolean drawSmooth = GL_FALSE; -GLboolean drawTextured = GL_TRUE; -GLboolean displayLevelInfo = GL_FALSE; - -int textureWidth = 64; -int textureHeight = 64; - -int winWidth = 580, winHeight = 720; - -struct formatInfo { - GLenum baseFormat; - GLenum internalFormat; - char *name; -}; - -#define NUM_LUMINANCE_FORMATS \ - (sizeof(luminanceFormats) / sizeof(luminanceFormats[0])) -struct formatInfo luminanceFormats[] = -{ - {GL_LUMINANCE, 1, "LUMINANCE"}, -#if GL_EXT_texture - {GL_LUMINANCE, GL_LUMINANCE4_EXT, "LUMINANCE4"}, - {GL_LUMINANCE, GL_LUMINANCE8_EXT, "LUMINANCE8"}, - {GL_LUMINANCE, GL_LUMINANCE12_EXT, "LUMINANCE12"}, - {GL_LUMINANCE, GL_LUMINANCE16_EXT, "LUMINANCE16"}, -#endif -}; - -#define NUM_ALPHA_FORMATS \ - (sizeof(alphaFormats) / sizeof(alphaFormats[0])) -struct formatInfo alphaFormats[] = -{ - {GL_ALPHA, GL_ALPHA, "ALPHA"}, -#if GL_EXT_texture - {GL_ALPHA, GL_ALPHA4_EXT, "ALPHA4"}, - {GL_ALPHA, GL_ALPHA8_EXT, "ALPHA8"}, - {GL_ALPHA, GL_ALPHA12_EXT, "ALPHA12"}, - {GL_ALPHA, GL_ALPHA16_EXT, "ALPHA16"}, -#endif -}; - -#if GL_EXT_texture -#define NUM_INTENSITY_FORMATS \ - (sizeof(intensityFormats) / sizeof(intensityFormats[0])) -struct formatInfo intensityFormats[] = -{ - {GL_INTENSITY_EXT, GL_INTENSITY_EXT, "INTENSITY"}, - {GL_INTENSITY_EXT, GL_INTENSITY4_EXT, "INTENSITY4"}, - {GL_INTENSITY_EXT, GL_INTENSITY8_EXT, "INTENSITY8"}, - {GL_INTENSITY_EXT, GL_INTENSITY12_EXT, "INTENSITY12"}, - {GL_INTENSITY_EXT, GL_INTENSITY16_EXT, "INTENSITY16"}, -}; -#endif - -#define NUM_LUMINANCE_ALPHA_FORMATS \ - (sizeof(luminanceAlphaFormats) / sizeof(luminanceAlphaFormats[0])) -struct formatInfo luminanceAlphaFormats[] = -{ - {GL_LUMINANCE_ALPHA, 2, "LUMINANCE_ALPHA"}, -#if GL_EXT_texture - {GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4_EXT, "LUMINANCE4_ALPHA4"}, - {GL_LUMINANCE_ALPHA, GL_LUMINANCE6_ALPHA2_EXT, "LUMINANCE6_ALPHA2"}, - {GL_LUMINANCE_ALPHA, GL_LUMINANCE8_ALPHA8_EXT, "LUMINANCE8_ALPHA8"}, - {GL_LUMINANCE_ALPHA, GL_LUMINANCE12_ALPHA4_EXT, "LUMINANCE12_ALPHA4"}, - {GL_LUMINANCE_ALPHA, GL_LUMINANCE12_ALPHA12_EXT, "LUMINANCE12_ALPHA12"}, - {GL_LUMINANCE_ALPHA, GL_LUMINANCE16_ALPHA16_EXT, "LUMINANCE16_ALPHA16"}, -#endif -}; - -#define NUM_RGB_FORMATS \ - (sizeof(rgbFormats) / sizeof(rgbFormats[0])) -struct formatInfo rgbFormats[] = -{ - {GL_RGB, 3, "RGB"}, -#if GL_EXT_texture - {GL_RGB, GL_RGB2_EXT, "RGB2"}, - {GL_RGB, GL_RGB4_EXT, "RGB4"}, - {GL_RGB, GL_RGB5_EXT, "RGB5"}, - {GL_RGB, GL_RGB8_EXT, "RGB8"}, - {GL_RGB, GL_RGB10_EXT, "RGB10"}, - {GL_RGB, GL_RGB12_EXT, "RGB12"}, - {GL_RGB, GL_RGB16_EXT, "RGB16"}, -#endif -}; - -#define NUM_RGBA_FORMATS \ - (sizeof(rgbaFormats) / sizeof(rgbaFormats[0])) -struct formatInfo rgbaFormats[] = -{ - {GL_RGBA, 4, "RGBA"}, -#if GL_EXT_texture - {GL_RGBA, GL_RGBA2_EXT, "RGBA2"}, - {GL_RGBA, GL_RGBA4_EXT, "RGBA4"}, - {GL_RGBA, GL_RGBA8_EXT, "RGBA8"}, - {GL_RGBA, GL_RGBA12_EXT, "RGBA12"}, - {GL_RGBA, GL_RGBA16_EXT, "RGBA16"}, - {GL_RGBA, GL_RGB5_A1_EXT, "RGB5_A1"}, - {GL_RGBA, GL_RGB10_A2_EXT, "RGB10_A2"}, -#endif -}; - -struct baseFormatInfo { - struct formatInfo *format; - int current, number; -}; - -#define NUM_BASE_FORMATS \ - (sizeof(baseFormats) / sizeof(baseFormats[0])) -int baseFormat; -struct baseFormatInfo baseFormats[] = -{ - {luminanceFormats, 0, NUM_LUMINANCE_FORMATS}, - {alphaFormats, 0, NUM_ALPHA_FORMATS}, -#if GL_EXT_texture - {intensityFormats, 0, NUM_INTENSITY_FORMATS}, -#endif - {luminanceAlphaFormats, 0, NUM_LUMINANCE_ALPHA_FORMATS}, - {rgbFormats, 0, NUM_RGB_FORMATS}, - {rgbaFormats, 0, NUM_RGBA_FORMATS}, -}; - -#define NUM_ENV_COLORS \ - (sizeof(envColors) / sizeof(envColors[0])) -int envColor; -GLfloat envColors[][4] = -{ - {0.0, 0.0, 0.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {0.0, 0.0, 1.0, 1.0}, - {1.0, 1.0, 1.0, 1.0}, -}; - -struct envModeInfo { - GLenum mode; - char *name; -}; - -#define NUM_ENV_MODES \ - (sizeof(envModes) / sizeof(envModes[0])) -struct envModeInfo envModes[] = -{ -#if GL_EXT_texture - {GL_REPLACE_EXT, "REPLACE"}, -#endif - {GL_MODULATE, "MODULATE"}, - {GL_BLEND, "BLEND"}, - {GL_DECAL, "DECAL"}, -}; - -void -checkErrors(void) -{ - GLenum error; - while ((error = glGetError()) != GL_NO_ERROR) { - fprintf(stderr, "Error: %s\n", (char *) gluErrorString(error)); - } -} - -static void -drawString(char *string, GLfloat x, GLfloat y, GLfloat color[4]) -{ - glColor4fv(color); - glRasterPos2f(x, y); - while (*string) { - glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, *string); - string++; - } -} - -static void -drawStringOutline(char *string, GLfloat x, GLfloat y, - GLfloat color[4], GLfloat outline[4]) -{ - drawString(string, x - 1, y, outline); - drawString(string, x + 1, y, outline); - drawString(string, x, y - 1, outline); - drawString(string, x, y + 1, outline); - drawString(string, x, y, color); -} - -static void -begin2D(int width, int height) -{ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); -} - -static void -end2D(void) -{ - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - -static void -initialize(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.5, 1.5, -1.5, 1.5, -1.5, 1.5); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glShadeModel(GL_FLAT); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 'c': - envColor = ++envColor % (int) NUM_ENV_COLORS; - break; - case 'g': - drawBackground = !drawBackground; - break; - case 'b': - drawBlended = !drawBlended; - break; - case 's': - drawSmooth = !drawSmooth; - break; - case 't': - drawTextured = !drawTextured; - break; - case 'i': - displayLevelInfo = !displayLevelInfo; - break; - case 27: /* Escape key should force exit. */ - exit(0); - break; - default: - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_DOWN: - if (++baseFormat > NUM_BASE_FORMATS - 1) - baseFormat = 0; - break; - case GLUT_KEY_UP: - if (--baseFormat < 0) - baseFormat = NUM_BASE_FORMATS - 1; - break; - case GLUT_KEY_LEFT: - --baseFormats[baseFormat].current; - if (baseFormats[baseFormat].current < 0) - baseFormats[baseFormat].current = - baseFormats[baseFormat].number - 1; - break; - case GLUT_KEY_RIGHT: - ++baseFormats[baseFormat].current; - if (baseFormats[baseFormat].current > baseFormats[baseFormat].number - 1) - baseFormats[baseFormat].current = 0; - break; - default: - break; - } - glutPostRedisplay(); -} - -void -reshape(int w, int h) -{ - winWidth = w; - winHeight = h; - /* No need to call glViewPort here since "draw" calls it! */ -} - -static void -loadTexture(int width, int height, struct formatInfo *format) -{ - int luminanceSize = 0; - int alphaSize = 0; - int rgbSize = 0; - GLenum textureFormat; - GLubyte *texImage, *p; - int elementsPerGroup, elementSize, groupSize, rowSize; - int i, j; - - switch (format->baseFormat) { - case GL_LUMINANCE: -#if GL_EXT_texture - case GL_INTENSITY_EXT: -#endif - luminanceSize = 1; - textureFormat = GL_LUMINANCE; - break; - case GL_ALPHA: - alphaSize = 1; - textureFormat = GL_ALPHA; - break; - case GL_LUMINANCE_ALPHA: - luminanceSize = 1; - alphaSize = 1; - textureFormat = GL_LUMINANCE_ALPHA; - break; - case GL_RGB: - rgbSize = 3; - textureFormat = GL_RGB; - break; - case GL_RGBA: - rgbSize = 3; - alphaSize = 1; - textureFormat = GL_RGBA; - break; - default: - fprintf(stderr, "bad internal format info\n"); - return; - } - - elementsPerGroup = luminanceSize + alphaSize + rgbSize; - elementSize = sizeof(GLubyte); - groupSize = elementsPerGroup * elementSize; - rowSize = width * groupSize; - - if ((texImage = (GLubyte *) malloc(height * rowSize)) == NULL) { - fprintf(stderr, "texture malloc failed\n"); - return; - } - for (i = 0; i < height; ++i) { - p = texImage + i * rowSize; - for (j = 0; j < width; ++j) { - if (luminanceSize > 0) { - /** - ** +-----+-----+ - ** | | | - ** | W | LG | - ** | | | - ** +-----+-----+ - ** | | | - ** | DG | B | - ** | | | - ** +-----+-----+ - **/ - if (i > height / 2) { - if (j < width / 2) { - p[0] = 0xff; - } else { - p[0] = 0xaa; - } - } else { - if (j < width / 2) { - p[0] = 0x55; - } else { - p[0] = 0x00; - } - } - p += elementSize; - } - if (rgbSize > 0) { - /** - ** +-----+-----+ - ** | | | - ** | R | G | - ** | | | - ** +-----+-----+ - ** | | | - ** | Y | B | - ** | | | - ** +-----+-----+ - **/ - if (i > height / 2) { - if (j < width / 2) { - p[0] = 0xff; - p[1] = 0x00; - p[2] = 0x00; - } else { - p[0] = 0x00; - p[1] = 0xff; - p[2] = 0x00; - } - } else { - if (j < width / 2) { - p[0] = 0xff; - p[1] = 0xff; - p[2] = 0x00; - } else { - p[0] = 0x00; - p[1] = 0x00; - p[2] = 0xff; - } - } - p += 3 * elementSize; - } - if (alphaSize > 0) { - /** - ** +-----------+ - ** | W | - ** | +-----+ | - ** | | | | - ** | | B | | - ** | | | | - ** | +-----+ | - ** | | - ** +-----------+ - **/ - int i2 = i - height / 2; - int j2 = j - width / 2; - int h8 = height / 8; - int w8 = width / 8; - if (-h8 <= i2 && i2 <= h8 && -w8 <= j2 && j2 <= w8) { - p[0] = 0x00; - } else if (-2 * h8 <= i2 && i2 <= 2 * h8 && -2 * w8 <= j2 && j2 <= 2 * w8) { - p[0] = 0x55; - } else if (-3 * h8 <= i2 && i2 <= 3 * h8 && -3 * w8 <= j2 && j2 <= 3 * w8) { - p[0] = 0xaa; - } else { - p[0] = 0xff; - } - p += elementSize; - } - } - } - - glTexImage2D(GL_TEXTURE_2D, 0, - format->internalFormat, width, height, 0, - textureFormat, GL_UNSIGNED_BYTE, texImage); - - free(texImage); -} - -static void -drawCheck(int w, int h, GLfloat lightCheck[4], GLfloat darkCheck[4]) -{ - float dw = 2.0 / w; - float dh = 2.0 / h; - int i, j; - - for (i = 0; i < w; ++i) { - GLfloat x0 = -1.0 + i * dw; - GLfloat x1 = x0 + dw; - - glBegin(GL_QUAD_STRIP); - for (j = 0; j <= h; ++j) { - GLfloat y = -1.0 + j * dh; - - if ((i ^ j) & 1) { - glColor4fv(lightCheck); - } else { - glColor4fv(darkCheck); - } - - glVertex2f(x0, y); - glVertex2f(x1, y); - } - glEnd(); - } -} - -static void -drawSample(int x, int y, int w, int h, - struct formatInfo *format, struct envModeInfo *envMode) -{ - glViewport(x, y, w, h); - glScissor(x, y, w, h); - - glClearColor(0.1, 0.1, 0.1, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - begin2D(w, h); - drawString(format->name, 10, h - 15, labelInfoColor); - drawString(envMode->name, 10, 5, labelInfoColor); - end2D(); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, envMode->mode); - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, envColors[envColor]); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - loadTexture(textureWidth, textureHeight, format); - - if (drawBackground) { - drawCheck(15, 15, lightCheck, darkCheck); - } - if (drawBlended) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } - if (drawSmooth) { - glShadeModel(GL_SMOOTH); - } - if (drawTextured) { - glEnable(GL_TEXTURE_2D); - } - glBegin(GL_QUADS); - glColor4f(1.0, 0.0, 0.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex2f(-0.8, -0.8); - glColor4f(0.0, 1.0, 0.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex2f(0.8, -0.8); - glColor4f(0.0, 0.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); - glVertex2f(0.8, 0.8); - glColor4f(1.0, 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex2f(-0.8, 0.8); - glEnd(); - - glDisable(GL_BLEND); - glShadeModel(GL_FLAT); - glDisable(GL_TEXTURE_2D); - - if (displayLevelInfo) { - GLint width, height, border, components; -#if GL_EXT_texture - GLint redSize, greenSize, blueSize, alphaSize; - GLint luminanceSize, intensitySize; -#endif - char buf[255]; - - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_WIDTH, &width); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_HEIGHT, &height); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_BORDER, &border); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_COMPONENTS, &components); -#if GL_EXT_texture - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_RED_SIZE_EXT, &redSize); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_GREEN_SIZE_EXT, &greenSize); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_BLUE_SIZE_EXT, &blueSize); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_ALPHA_SIZE_EXT, &alphaSize); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_LUMINANCE_SIZE_EXT, &luminanceSize); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_INTENSITY_SIZE_EXT, &intensitySize); -#endif - - begin2D(w, h); - sprintf(buf, "dimensions: %d x %d", width, height); - drawStringOutline(buf, 15, h / 2 + 20, labelLevelColor0, labelLevelColor1); - - sprintf(buf, "border: %d", border); - drawStringOutline(buf, 15, h / 2 + 10, labelLevelColor0, labelLevelColor1); - - sprintf(buf, "components: 0x%04X", components); - drawStringOutline(buf, 15, h / 2, labelLevelColor0, labelLevelColor1); - - sprintf(buf, "sizes:"); - drawStringOutline(buf, 15, h / 2 - 10, labelLevelColor0, labelLevelColor1); - -#if GL_EXT_texture - sprintf(buf, " %d/%d/%d/%d/%d/%d", - redSize, greenSize, blueSize, alphaSize, - luminanceSize, intensitySize); - drawStringOutline(buf, 15, h / 2 - 20, labelLevelColor0, labelLevelColor1); -#endif - end2D(); - } -} - -static void -display(void) -{ - int numX = NUM_ENV_MODES, numY = NUM_BASE_FORMATS; - float xBase = (float) winWidth * 0.01; - float xOffset = (winWidth - xBase) / numX; - float xSize = max(xOffset - xBase, 1); - float yBase = (float) winHeight * 0.01; - float yOffset = (winHeight - yBase) / numY; - float ySize = max(yOffset - yBase, 1); - float x, y; - int i, j; - - glViewport(0, 0, winWidth, winHeight); - glDisable(GL_SCISSOR_TEST); - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - glEnable(GL_SCISSOR_TEST); - - x = xBase; - y = (winHeight - 1) - yOffset; - for (i = 0; i < NUM_BASE_FORMATS; ++i) { - struct formatInfo *format; - - if (i == baseFormat) { - labelInfoColor = labelColor1; - } else { - labelInfoColor = labelColor0; - } - - format = &baseFormats[i].format[baseFormats[i].current]; - for (j = 0; j < NUM_ENV_MODES; ++j) { - struct envModeInfo *envMode; - - envMode = &envModes[j]; - drawSample(x, y, xSize, ySize, format, envMode); - x += xOffset; - } - x = xBase; - y -= yOffset; - } - - if (doubleBuffered) { - glutSwapBuffers(); - } else { - glFlush(); - } - - checkErrors(); -} - -static void -usage(char *name) -{ - fprintf(stderr, "\n"); - fprintf(stderr, "usage: %s [ options ]\n", name); - fprintf(stderr, "\n"); - fprintf(stderr, " Tests texture environments and internal formats\n"); - fprintf(stderr, "\n"); - fprintf(stderr, " Options:\n"); - fprintf(stderr, " -sb single buffered\n"); - fprintf(stderr, " -db double buffered\n"); - fprintf(stderr, "\n"); -} - -int -main(int argc, char *argv[]) -{ - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; ++i) { - if (!strcmp("-sb", argv[i])) { - doubleBuffered = GL_FALSE; - } else if (!strcmp("-db", argv[i])) { - doubleBuffered = GL_TRUE; - } else { - usage(argv[0]); - exit(1); - } - } - -#if !GL_EXT_texture - printf("WARNING: client-side OpenGL implementation lacks\n"); - printf(" the GL_EXT_texture extension!\n"); - printf(" Skipping GL_EXT_texture functionality...\n"); -#endif - - if (doubleBuffered) { - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - } else { - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - } - - glutInitWindowSize(winWidth, winHeight); - glutCreateWindow("Texture Environment Test"); - - if (!glutExtensionSupported("GL_EXT_texture")) { - fprintf(stderr, "missing extension: GL_EXT_texture\n"); - exit(1); - } - initialize(); - - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutSpecialFunc(special); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/texenv.dsp b/lib/glut-3.7.6/progs/examples/texenv.dsp deleted file mode 100644 index 04331bc1a8646005c6bbedabbc7e69703dff0a5a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/texenv.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texenv" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texenv - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texenv.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texenv.mak" CFG="texenv - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texenv - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texenv - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texenv - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texenv - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texenv - Win32 Release" -# Name "texenv - Win32 Debug" -# Begin Source File - -SOURCE=.\texenv.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/trackball.c b/lib/glut-3.7.6/progs/examples/trackball.c deleted file mode 100644 index cce919b5ac1fa3e48ab6af59733945f5a489afe7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/trackball.c +++ /dev/null @@ -1,346 +0,0 @@ -#include -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * Trackball code: - * - * Implementation of a virtual trackball. - * Implemented by Gavin Bell, lots of ideas from Thant Tessman and - * the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129. - * - * Vector manip code: - * - * Original code from: - * David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli - * - * Much mucking with by: - * Gavin Bell - */ -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#endif -#include -#include "trackball.h" - -/* - * This size should really be based on the distance from the center of - * rotation to the point on the object underneath the mouse. That - * point would then track the mouse as closely as possible. This is a - * simple example, though, so that is left as an Exercise for the - * Programmer. - */ -#define TRACKBALLSIZE (0.8f) - -/* - * Local function prototypes (not defined in trackball.h) - */ -static float tb_project_to_sphere(float, float, float); -static void normalize_quat(float [4]); - -void -vzero(float *v) -{ - v[0] = 0.0; - v[1] = 0.0; - v[2] = 0.0; -} - -void -vset(float *v, float x, float y, float z) -{ - v[0] = x; - v[1] = y; - v[2] = z; -} - -void -vsub(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] - src2[0]; - dst[1] = src1[1] - src2[1]; - dst[2] = src1[2] - src2[2]; -} - -void -vcopy(const float *v1, float *v2) -{ - register int i; - for (i = 0 ; i < 3 ; i++) - v2[i] = v1[i]; -} - -void -vcross(const float *v1, const float *v2, float *cross) -{ - float temp[3]; - - temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); - vcopy(temp, cross); -} - -float -vlength(const float *v) -{ - return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); -} - -void -vscale(float *v, float div) -{ - v[0] *= div; - v[1] *= div; - v[2] *= div; -} - -void -vnormal(float *v) -{ - vscale(v,1.0/vlength(v)); -} - -float -vdot(const float *v1, const float *v2) -{ - return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; -} - -void -vadd(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] + src2[0]; - dst[1] = src1[1] + src2[1]; - dst[2] = src1[2] + src2[2]; -} - -/* - * Ok, simulate a track-ball. Project the points onto the virtual - * trackball, then figure out the axis of rotation, which is the cross - * product of P1 P2 and O P1 (O is the center of the ball, 0,0,0) - * Note: This is a deformed trackball-- is a trackball in the center, - * but is deformed into a hyperbolic sheet of rotation away from the - * center. This particular function was chosen after trying out - * several variations. - * - * It is assumed that the arguments to this routine are in the range - * (-1.0 ... 1.0) - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y) -{ - float a[3]; /* Axis of rotation */ - float phi; /* how much to rotate about axis */ - float p1[3], p2[3], d[3]; - float t; - - if (p1x == p2x && p1y == p2y) { - /* Zero rotation */ - vzero(q); - q[3] = 1.0; - return; - } - - /* - * First, figure out z-coordinates for projection of P1 and P2 to - * deformed sphere - */ - vset(p1,p1x,p1y,tb_project_to_sphere(TRACKBALLSIZE,p1x,p1y)); - vset(p2,p2x,p2y,tb_project_to_sphere(TRACKBALLSIZE,p2x,p2y)); - - /* - * Now, we want the cross product of P1 and P2 - */ - vcross(p2,p1,a); - - /* - * Figure out how much to rotate around that axis. - */ - vsub(p1,p2,d); - t = vlength(d) / (2.0*TRACKBALLSIZE); - - /* - * Avoid problems with out-of-control values... - */ - if (t > 1.0) t = 1.0; - if (t < -1.0) t = -1.0; - phi = 2.0 * asin(t); - - axis_to_quat(a,phi,q); -} - -/* - * Given an axis and angle, compute quaternion. - */ -void -axis_to_quat(float a[3], float phi, float q[4]) -{ - vnormal(a); - vcopy(a,q); - vscale(q,sin(phi/2.0)); - q[3] = cos(phi/2.0); -} - -/* - * Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet - * if we are away from the center of the sphere. - */ -static float -tb_project_to_sphere(float r, float x, float y) -{ - float d, t, z; - - d = sqrt(x*x + y*y); - if (d < r * 0.70710678118654752440) { /* Inside sphere */ - z = sqrt(r*r - d*d); - } else { /* On hyperbola */ - t = r / 1.41421356237309504880; - z = t*t / d; - } - return z; -} - -/* - * Given two rotations, e1 and e2, expressed as quaternion rotations, - * figure out the equivalent single rotation and stuff it into dest. - * - * This routine also normalizes the result every RENORMCOUNT times it is - * called, to keep error from creeping in. - * - * NOTE: This routine is written so that q1 or q2 may be the same - * as dest (or each other). - */ - -#define RENORMCOUNT 97 - -void -negate_quat(float q[4], float nq[4]) -{ - nq[0] = -q[0]; - nq[1] = -q[1]; - nq[2] = -q[2]; - nq[3] = q[3]; -} - -void -add_quats(float q1[4], float q2[4], float dest[4]) -{ - static int count=0; - float t1[4], t2[4], t3[4]; - float tf[4]; - -#if 0 -printf("q1 = %f %f %f %f\n", q1[0], q1[1], q1[2], q1[3]); -printf("q2 = %f %f %f %f\n", q2[0], q2[1], q2[2], q2[3]); -#endif - - vcopy(q1,t1); - vscale(t1,q2[3]); - - vcopy(q2,t2); - vscale(t2,q1[3]); - - vcross(q2,q1,t3); - vadd(t1,t2,tf); - vadd(t3,tf,tf); - tf[3] = q1[3] * q2[3] - vdot(q1,q2); - -#if 0 -printf("tf = %f %f %f %f\n", tf[0], tf[1], tf[2], tf[3]); -#endif - - dest[0] = tf[0]; - dest[1] = tf[1]; - dest[2] = tf[2]; - dest[3] = tf[3]; - - if (++count > RENORMCOUNT) { - count = 0; - normalize_quat(dest); - } -} - -/* - * Quaternions always obey: a^2 + b^2 + c^2 + d^2 = 1.0 - * If they don't add up to 1.0, dividing by their magnitued will - * renormalize them. - * - * Note: See the following for more information on quaternions: - * - * - Shoemake, K., Animating rotation with quaternion curves, Computer - * Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985. - * - Pletinckx, D., Quaternion calculus as a basic tool in computer - * graphics, The Visual Computer 5, 2-13, 1989. - */ -static void -normalize_quat(float q[4]) -{ - int i; - float mag; - - mag = sqrt(q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); - for (i = 0; i < 4; i++) q[i] /= mag; -} - -/* - * Build a rotation matrix, given a quaternion rotation. - * - */ -void -build_rotmatrix(float m[4][4], float q[4]) -{ - m[0][0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2]); - m[0][1] = 2.0 * (q[0] * q[1] - q[2] * q[3]); - m[0][2] = 2.0 * (q[2] * q[0] + q[1] * q[3]); - m[0][3] = 0.0; - - m[1][0] = 2.0 * (q[0] * q[1] + q[2] * q[3]); - m[1][1]= 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0]); - m[1][2] = 2.0 * (q[1] * q[2] - q[0] * q[3]); - m[1][3] = 0.0; - - m[2][0] = 2.0 * (q[2] * q[0] - q[1] * q[3]); - m[2][1] = 2.0 * (q[1] * q[2] + q[0] * q[3]); - m[2][2] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0]); - m[2][3] = 0.0; - - m[3][0] = 0.0; - m[3][1] = 0.0; - m[3][2] = 0.0; - m[3][3] = 1.0; -} - diff --git a/lib/glut-3.7.6/progs/examples/trackball.h b/lib/glut-3.7.6/progs/examples/trackball.h deleted file mode 100644 index 61a1d8c354cd97ec7705fb0881b2de1ffcc151d3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/trackball.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * trackball.h - * A virtual trackball implementation - * Written by Gavin Bell for Silicon Graphics, November 1988. - */ - -/* - * Pass the x and y coordinates of the last and current positions of - * the mouse, scaled so they are from (-1.0 ... 1.0). - * - * The resulting rotation is returned as a quaternion rotation in the - * first paramater. - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y); - -void -negate_quat(float *q, float *qn); - -/* - * Given two quaternions, add them together to get a third quaternion. - * Adding quaternions to get a compound rotation is analagous to adding - * translations to get a compound translation. When incrementally - * adding rotations, the first argument here should be the new - * rotation, the second and third the total rotation (which will be - * over-written with the resulting new total rotation). - */ -void -add_quats(float *q1, float *q2, float *dest); - -/* - * A useful function, builds a rotation matrix in Matrix based on - * given quaternion. - */ -void -build_rotmatrix(float m[4][4], float q[4]); - -/* - * This function computes a quaternion based on an axis (defined by - * the given vector) and an angle about which to rotate. The angle is - * expressed in radians. The result is put into the third argument. - */ -void -axis_to_quat(float a[3], float phi, float q[4]); - diff --git a/lib/glut-3.7.6/progs/examples/trippy.c b/lib/glut-3.7.6/progs/examples/trippy.c deleted file mode 100644 index 694c4090fc90b66190a968590bf73e9bc942371d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/trippy.c +++ /dev/null @@ -1,471 +0,0 @@ - -/* - * Texture feedback demo - * Simon Green 6/97 - * si@sgi.com - * - * Compile: - * cc -o feedback feedback.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm - * - * Description: - * This is an old effect - it's kind of like pointing a video camera at a TV - * displaying the signal from itself. - * - * It also demonstrates the OpenGL 1.1 glCopyTexImage2D function to copy - * texture data direct from the framebuffer. You'll need a machine with - * reasonably fast texture mapping for it to be fun. - * - * Usage: - * Start it up, hold down the left mouse button and move the mouse up and down - * and left and right slowly. Play with the menus. Enjoy! - * - * Left mouse button - zoom / rotate - * Right mouse button - translate (advanced users only) - * - * Bugs: - * Don't try resizing the window. Don't stare at it for too long. - */ - -#include -#include -#include -#include -#include - -#ifdef GL_VERSION_1_1 - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define MAXSIZE 512 /* Set this to your maximum texture size (square) -*/ -#define TEXT_MESSAGE "OpenGL" - -float ang = 2.0; -float scale = 1.05; -float tx = 0.0, ty = 0.0; - -int oldx, oldy; -int lmb = 0; -int mmb = 0; -int autospin = 0; -float atime = 0.0; - -int smooth = 1; -int seedmode = 0; -float seedsize = 0.1; - -int primtype = GL_LINES; -float primsize = 1.0; -int nprims = 10; - -float r, g, b; -float dr, dg, db; -int randomcolours = 0; - - -/* returns a random floating point number between 0.0 and 1.0 */ -float frand(void) { - return (float) (rand() / 32767.0); -} - -void init_colours(float speed) -{ - r = frand(); g = frand(); b = frand(); - dr = frand() / speed; dg = frand() / speed; db = frand() / speed; -} - -void bounce(float *n, float *dn) -{ - *n += *dn; - if (*n > 1.0) { *n = 1.0; *dn = -*dn; } - if (*n < 0.0) { *n = 0.0; *dn = -*dn; } -} - -/* generate pretty colours by bouncing rgb values up and down */ -void set_colour(void) -{ - if (randomcolours) { - glColor3f(frand(), frand(), frand()); - } else { - bounce(&r, &dr); - bounce(&g, &dg); - bounce(&b, &db); - glColor3f(r, g, b); - } -} - - -/* seed pattern with some random primitives in centre of screen */ -void seed(void) -{ - int i; - - glBegin(primtype); - for(i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=trippy - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "trippy.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "trippy.mak" CFG="trippy - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "trippy - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "trippy - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "trippy - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "trippy - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "trippy - Win32 Release" -# Name "trippy - Win32 Debug" -# Begin Source File - -SOURCE=.\trippy.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/triselect.c b/lib/glut-3.7.6/progs/examples/triselect.c deleted file mode 100644 index c88150adf6e7fc6506c54e487003e6131032ed70..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/triselect.c +++ /dev/null @@ -1,421 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include -#include -#include -#include - -#define MAXOBJS 10000 -#define MAXSELECT 100 -#define MAXFEED 300 -#define SOLID 1 -#define LINE 2 -#define POINT 3 - -GLint windW = 300, windH = 300; - -GLuint selectBuf[MAXSELECT]; -GLfloat feedBuf[MAXFEED]; -GLint vp[4]; -float zRotation = 90.0; -float zoom = 1.0; -GLint objectCount; -GLint numObjects; -struct object { - float v1[2]; - float v2[2]; - float v3[2]; - float color[3]; -} objects[MAXOBJS]; -GLenum linePoly = GL_FALSE; - -static void -InitObjects(GLint num) -{ - GLint i; - float x, y; - - if (num > MAXOBJS) { - num = MAXOBJS; - } - if (num < 1) { - num = 1; - } - objectCount = num; - - srand((unsigned int) time(NULL)); - for (i = 0; i < num; i++) { - x = (rand() % 300) - 150; - y = (rand() % 300) - 150; - - objects[i].v1[0] = x + (rand() % 50) - 25; - objects[i].v2[0] = x + (rand() % 50) - 25; - objects[i].v3[0] = x + (rand() % 50) - 25; - objects[i].v1[1] = y + (rand() % 50) - 25; - objects[i].v2[1] = y + (rand() % 50) - 25; - objects[i].v3[1] = y + (rand() % 50) - 25; - objects[i].color[0] = ((rand() % 100) + 50) / 150.0; - objects[i].color[1] = ((rand() % 100) + 50) / 150.0; - objects[i].color[2] = ((rand() % 100) + 50) / 150.0; - } -} - -static void -Init(void) -{ - numObjects = 10; - InitObjects(numObjects); -} - -static void -Reshape(int width, int height) -{ - windW = width; - windH = height; - glViewport(0, 0, windW, windH); - glGetIntegerv(GL_VIEWPORT, vp); -} - -static void -Render(GLenum mode) -{ - GLint i; - - for (i = 0; i < objectCount; i++) { - if (mode == GL_SELECT) { - glLoadName(i); - } - glColor3fv(objects[i].color); - glBegin(GL_POLYGON); - glVertex2fv(objects[i].v1); - glVertex2fv(objects[i].v2); - glVertex2fv(objects[i].v3); - glEnd(); - } -} - -static GLint -DoSelect(GLint x, GLint y) -{ - GLint hits; - - glSelectBuffer(MAXSELECT, selectBuf); - glRenderMode(GL_SELECT); - glInitNames(); - glPushName(~0); - - glPushMatrix(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPickMatrix(x, windH - y, 4, 4, vp); - gluOrtho2D(-175, 175, -175, 175); - glMatrixMode(GL_MODELVIEW); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glScalef(zoom, zoom, zoom); - glRotatef(zRotation, 0, 0, 1); - - Render(GL_SELECT); - - glPopMatrix(); - - hits = glRenderMode(GL_RENDER); - if (hits <= 0) { - return -1; - } - return selectBuf[(hits - 1) * 4 + 3]; -} - -static void -RecolorTri(GLint h) -{ - objects[h].color[0] = ((rand() % 100) + 50) / 150.0; - objects[h].color[1] = ((rand() % 100) + 50) / 150.0; - objects[h].color[2] = ((rand() % 100) + 50) / 150.0; -} - -static void -DeleteTri(GLint h) -{ - objects[h] = objects[objectCount - 1]; - objectCount--; -} - -static void -GrowTri(GLint h) -{ - float v[2]; - float *oldV; - GLint i; - - v[0] = objects[h].v1[0] + objects[h].v2[0] + objects[h].v3[0]; - v[1] = objects[h].v1[1] + objects[h].v2[1] + objects[h].v3[1]; - v[0] /= 3; - v[1] /= 3; - - for (i = 0; i < 3; i++) { - switch (i) { - case 0: - oldV = objects[h].v1; - break; - case 1: - oldV = objects[h].v2; - break; - case 2: - oldV = objects[h].v3; - break; - } - oldV[0] = 1.5 * (oldV[0] - v[0]) + v[0]; - oldV[1] = 1.5 * (oldV[1] - v[1]) + v[1]; - } -} - -static void -Mouse(int button, int state, int mouseX, int mouseY) -{ - GLint hit; - - if (state == GLUT_DOWN) { - hit = DoSelect((GLint) mouseX, (GLint) mouseY); - if (hit != -1) { - if (button == GLUT_LEFT_BUTTON) { - RecolorTri(hit); - } else if (button == GLUT_MIDDLE_BUTTON) { - GrowTri(hit); - } else if (button == GLUT_RIGHT_BUTTON) { - DeleteTri(hit); - } - glutPostRedisplay(); - } - } -} - -static void -Draw(void) -{ - glPushMatrix(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-175, 175, -175, 175); - glMatrixMode(GL_MODELVIEW); - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - glScalef(zoom, zoom, zoom); - glRotatef(zRotation, 0, 0, 1); - Render(GL_RENDER); - glPopMatrix(); - glutSwapBuffers(); -} - -static void -DumpFeedbackVert(GLint * i, GLint n) -{ - GLint index; - - index = *i; - if (index + 7 > n) { - *i = n; - printf(" ???\n"); - return; - } - printf(" (%g %g %g), color = (%4.2f %4.2f %4.2f)\n", - feedBuf[index], - feedBuf[index + 1], - feedBuf[index + 2], - feedBuf[index + 3], - feedBuf[index + 4], - feedBuf[index + 5]); - index += 7; - *i = index; -} - -static void -DrawFeedback(GLint n) -{ - GLint i; - GLint verts; - - printf("Feedback results (%d floats):\n", n); - for (i = 0; i < n; i++) { - switch ((GLint) feedBuf[i]) { - case GL_POLYGON_TOKEN: - printf("Polygon"); - i++; - if (i < n) { - verts = (GLint) feedBuf[i]; - i++; - printf(": %d vertices", verts); - } else { - verts = 0; - } - printf("\n"); - while (verts) { - DumpFeedbackVert(&i, n); - verts--; - } - i--; - break; - case GL_LINE_TOKEN: - printf("Line:\n"); - i++; - DumpFeedbackVert(&i, n); - DumpFeedbackVert(&i, n); - i--; - break; - case GL_LINE_RESET_TOKEN: - printf("Line Reset:\n"); - i++; - DumpFeedbackVert(&i, n); - DumpFeedbackVert(&i, n); - i--; - break; - default: - printf("%9.2f\n", feedBuf[i]); - break; - } - } - if (i == MAXFEED) { - printf("...\n"); - } - printf("\n"); -} - -static void -DoFeedback(void) -{ - GLint x; - - glFeedbackBuffer(MAXFEED, GL_3D_COLOR, feedBuf); - (void) glRenderMode(GL_FEEDBACK); - - glPushMatrix(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-175, 175, -175, 175); - glMatrixMode(GL_MODELVIEW); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glScalef(zoom, zoom, zoom); - glRotatef(zRotation, 0, 0, 1); - - Render(GL_FEEDBACK); - - glPopMatrix(); - - x = glRenderMode(GL_RENDER); - if (x == -1) { - x = MAXFEED; - } - DrawFeedback((GLint) x); -} - -/* ARGSUSED1 */ -static void -Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 'z': - zoom /= 0.75; - glutPostRedisplay(); - break; - case 'Z': - zoom *= 0.75; - glutPostRedisplay(); - break; - case 'f': - DoFeedback(); - glutPostRedisplay(); - break; - case 'l': - linePoly = !linePoly; - if (linePoly) { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - } - glutPostRedisplay(); - break; - case 27: - exit(0); - } -} - -/* ARGSUSED1 */ -static void -SpecialKey(int key, int x, int y) -{ - - switch (key) { - case GLUT_KEY_LEFT: - zRotation += 0.5; - glutPostRedisplay(); - break; - case GLUT_KEY_RIGHT: - zRotation -= 0.5; - glutPostRedisplay(); - break; - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("Select Test"); - Init(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutMouseFunc(Mouse); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/triselect.dsp b/lib/glut-3.7.6/progs/examples/triselect.dsp deleted file mode 100644 index eb20fdd6851526d871addcc8ae41ca2166067d87..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/triselect.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="triselect" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=triselect - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "triselect.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "triselect.mak" CFG="triselect - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "triselect - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "triselect - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "triselect - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "triselect - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "triselect - Win32 Release" -# Name "triselect - Win32 Debug" -# Begin Source File - -SOURCE=.\triselect.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/examples/zoomdino.c b/lib/glut-3.7.6/progs/examples/zoomdino.c deleted file mode 100644 index f6f5f39a097684fee8a39e9d7c854d0bc87f384e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/zoomdino.c +++ /dev/null @@ -1,464 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* zoomdino demonstrates GLUT 3.0's new overlay support. Both - rubber-banding the display of a help message use the overlays. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include - -typedef enum { - RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE, - LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE, DINOSAUR -} displayLists; - -GLfloat angle = -150; /* in degrees */ -int moving, begin; -int W = 300, H = 300; -GLdouble bodyWidth = 3.0; -int newModel = 1; -/* *INDENT-OFF* */ -GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5}, - {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16}, - {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2}, - {1, 2} }; -GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9}, - {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10}, - {13, 9}, {11, 11}, {9, 11} }; -GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0}, - {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} }; -GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15}, - {9.6, 15.25}, {9, 15.25} }; -GLfloat lightZeroPosition[] = {10.0, 4.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, -2.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0}; -int overlaySupport, red, white, transparent, rubberbanding; -int anchorx, anchory, stretchx, stretchy, pstretchx, pstretchy; -float vx, vy, vx2, vy2, vw, vh; -float wx, wy, wx2, wy2, ww, wh; -int fancy, wasFancy, help, clearHelp; -/* *INDENT-ON* */ - -void -extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize, - GLdouble thickness, GLuint side, GLuint edge, GLuint whole) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble vertex[3], dx, dy, len; - int i; - int count = dataSize / (int) (2 * sizeof(GLfloat)); - - if (tobj == NULL) { - tobj = gluNewTess(); /* create and initialize a GLU - polygontesselation object */ - gluTessCallback(tobj, GLU_BEGIN, glBegin); - gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky - - */ - gluTessCallback(tobj, GLU_END, glEnd); - } - glNewList(side, GL_COMPILE); - glShadeModel(GL_SMOOTH); /* smooth minimizes seeing - tessellation */ - gluBeginPolygon(tobj); - for (i = 0; i < count; i++) { - vertex[0] = data[i][0]; - vertex[1] = data[i][1]; - vertex[2] = 0; - gluTessVertex(tobj, vertex, data[i]); - } - gluEndPolygon(tobj); - glEndList(); - glNewList(edge, GL_COMPILE); - glShadeModel(GL_FLAT); /* flat shade keeps angular hands - from being "smoothed" */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= count; i++) { - /* mod function handles closing the edge */ - glVertex3f(data[i % count][0], data[i % count][1], 0.0); - glVertex3f(data[i % count][0], data[i % count][1], thickness); - - /* Calculate a unit normal by dividing by Euclidean - distance. We could be lazy and use - glEnable(GL_NORMALIZE) so we could pass in arbitrary - normals for a very slight performance hit. */ - - dx = data[(i + 1) % count][1] - data[i % count][1]; - dy = data[i % count][0] - data[(i + 1) % count][0]; - len = sqrt(dx * dx + dy * dy); - glNormal3f(dx / len, dy / len, 0.0); - } - glEnd(); - glEndList(); - glNewList(whole, GL_COMPILE); - glFrontFace(GL_CW); - glCallList(edge); - glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */ - glCallList(side); - glPushMatrix(); - glTranslatef(0.0, 0.0, thickness); - glFrontFace(GL_CCW); - glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */ - glCallList(side); - glPopMatrix(); - glEndList(); -} - -void -makeDinosaur(void) -{ - extrudeSolidFromPolygon(body, sizeof(body), bodyWidth, - BODY_SIDE, BODY_EDGE, BODY_WHOLE); - extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4, - ARM_SIDE, ARM_EDGE, ARM_WHOLE); - extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2, - LEG_SIDE, LEG_EDGE, LEG_WHOLE); - extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2, - EYE_SIDE, EYE_EDGE, EYE_WHOLE); - glNewList(DINOSAUR, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor); - glCallList(BODY_WHOLE); - glPushMatrix(); - glTranslatef(0.0, 0.0, bodyWidth); - glCallList(ARM_WHOLE); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4); - glCallList(ARM_WHOLE); - glTranslatef(0.0, 0.0, -bodyWidth / 4); - glCallList(LEG_WHOLE); - glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1); - glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor); - glCallList(EYE_WHOLE); - glPopMatrix(); - glEndList(); -} - -void -recalcModelView(void) -{ - glPopMatrix(); - glPushMatrix(); - glRotatef(angle, 0.0, 1.0, 0.0); - glTranslatef(-8, -8, -bodyWidth / 2); - newModel = 0; -} - -void -redraw(void) -{ - if (newModel) - recalcModelView(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(DINOSAUR); - glutSwapBuffers(); -} - -void -output(int x, int y, char *string) -{ - int len, i; - - glRasterPos2f(x, y); - len = (int) strlen(string); - for (i = 0; i < len; i++) { - glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, string[i]); - } -} - -char *helpMsg[] = -{ - "Welcome to zoomdino!", - " Left mouse button rotates", - " the dinosaur.", - " Middle mouse button zooms", - " via overlay rubber-banding.", - " Right mouse button shows", - " pop-up menu.", - " To reset view, use \"Reset", - " Projection\".", - "(This message is in the overlays.)", - NULL -}; - -void -redrawOverlay(void) -{ - if (help) { - int i; - - glClear(GL_COLOR_BUFFER_BIT); - glIndexi(white); - for (i = 0; helpMsg[i]; i++) { - output(15, 24 + i * 18, helpMsg[i]); - } - return; - } - if (glutLayerGet(GLUT_OVERLAY_DAMAGED) || clearHelp) { - /* Opps, damage means we need a full clear. */ - glClear(GL_COLOR_BUFFER_BIT); - clearHelp = 0; - wasFancy = 0; - } else { - /* Goody! No damage. Just erase last rubber-band. */ - if (fancy || wasFancy) { - glLineWidth(3.0); - } - glIndexi(transparent); - glBegin(GL_LINE_LOOP); - glVertex2i(anchorx, anchory); - glVertex2i(anchorx, pstretchy); - glVertex2i(pstretchx, pstretchy); - glVertex2i(pstretchx, anchory); - glEnd(); - } - if (wasFancy) { - glLineWidth(1.0); - wasFancy = 0; - } - if (fancy) - glLineWidth(3.0); - glIndexi(red); - glBegin(GL_LINE_LOOP); - glVertex2i(anchorx, anchory); - glVertex2i(anchorx, stretchy); - glVertex2i(stretchx, stretchy); - glVertex2i(stretchx, anchory); - glEnd(); - if (fancy) { - glLineWidth(1.0); - glIndexi(white); - glBegin(GL_LINE_LOOP); - glVertex2i(anchorx, anchory); - glVertex2i(anchorx, stretchy); - glVertex2i(stretchx, stretchy); - glVertex2i(stretchx, anchory); - glEnd(); - } - glFlush(); - - /* Remember last place rubber-banded so the rubber-band can - be erased next redisplay. */ - pstretchx = stretchx; - pstretchy = stretchy; -} - -void -defaultProjection(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - vx = -1.0; - vw = 2.0; - vy = -1.0; - vh = 2.0; - glFrustum(vx, vx + vw, vy, vy + vh, 1.0, 40); - glMatrixMode(GL_MODELVIEW); -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - glutSetCursor(GLUT_CURSOR_LEFT_RIGHT); - moving = 1; - begin = x; - } else if (state == GLUT_UP) { - glutSetCursor(GLUT_CURSOR_INHERIT); - moving = 0; - } - } - if (overlaySupport && button == GLUT_MIDDLE_BUTTON) { - if (state == GLUT_DOWN) { - help = 0; - clearHelp = 1; - rubberbanding = 1; - anchorx = x; - anchory = y; - stretchx = x; - stretchy = y; - glutShowOverlay(); - } else if (state == GLUT_UP) { - rubberbanding = 0; - glutHideOverlay(); - glutUseLayer(GLUT_NORMAL); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - -#undef max -#undef min -#define max(a,b) ((a) > (b) ? (a) : (b)) -#define min(a,b) ((a) < (b) ? (a) : (b)) - - wx = min(anchorx, stretchx); - wy = min(H - anchory, H - stretchy); - wx2 = max(anchorx, stretchx); - wy2 = max(H - anchory, H - stretchy); - ww = wx2 - wx; - wh = wy2 - wy; - if (ww == 0 || wh == 0) { - glutUseLayer(GLUT_NORMAL); - defaultProjection(); - } else { - - vx2 = wx2 / W * vw + vx; - vx = wx / W * vw + vx; - vy2 = wy2 / H * vh + vy; - vy = wy / H * vh + vy; - vw = vx2 - vx; - vh = vy2 - vy; - - glFrustum(vx, vx + vw, vy, vy + vh, 1.0, 40); - } - glutPostRedisplay(); - glMatrixMode(GL_MODELVIEW); - } - } -} - -void -motion(int x, int y) -{ - if (moving) { - angle = angle + (x - begin); - begin = x; - newModel = 1; - glutPostRedisplay(); - } - if (rubberbanding) { - stretchx = x; - stretchy = y; - glutPostOverlayRedisplay(); - } -} - -void -reshape(int w, int h) -{ - if (overlaySupport) { - glutUseLayer(GLUT_OVERLAY); - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glScalef(1, -1, 1); - glTranslatef(0, -h, 0); - glMatrixMode(GL_MODELVIEW); - glutUseLayer(GLUT_NORMAL); - } - glViewport(0, 0, w, h); - W = w; - H = h; -} - -GLboolean lightZeroSwitch = GL_TRUE, lightOneSwitch = GL_TRUE; - -void -controlLights(int value) -{ - glutUseLayer(GLUT_NORMAL); - switch (value) { - case 1: - lightZeroSwitch = !lightZeroSwitch; - if (lightZeroSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case 2: - lightOneSwitch = !lightOneSwitch; - if (lightOneSwitch) { - glEnable(GL_LIGHT1); - } else { - glDisable(GL_LIGHT1); - } - break; - case 3: - defaultProjection(); - break; - case 4: - fancy = 1; - break; - case 5: - fancy = 0; - wasFancy = 1; - break; - case 6: - if (!rubberbanding) - help = 1; - glutShowOverlay(); - glutPostOverlayRedisplay(); - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow("zoomdino"); - glutDisplayFunc(redraw); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(controlLights); - glutAddMenuEntry("Toggle right light", 1); - glutAddMenuEntry("Toggle left light", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - makeDinosaur(); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - defaultProjection(); - gluLookAt(0.0, 0.0, 30.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glPushMatrix(); /* dummy push so we can pop on model - recalc */ - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - overlaySupport = glutLayerGet(GLUT_OVERLAY_POSSIBLE); - if (overlaySupport) { - glutEstablishOverlay(); - glutHideOverlay(); - transparent = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(transparent); - red = (transparent + 1) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - white = (transparent + 2) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - glutSetColor(red, 1.0, 0.0, 0.0); /* Red. */ - glutSetColor(white, 1.0, 1.0, 1.0); /* White. */ - glutOverlayDisplayFunc(redrawOverlay); - glutReshapeFunc(reshape); - glutSetWindowTitle("zoomdino with rubber-banding"); - glutAddMenuEntry("------------------", 0); - glutAddMenuEntry("Reset projection", 3); - glutAddMenuEntry("------------------", 0); - glutAddMenuEntry("Fancy rubber-banding", 4); - glutAddMenuEntry("Simple rubber-banding", 5); - glutAddMenuEntry("------------------", 0); - glutAddMenuEntry("Show help", 6); - } else { - printf("Sorry, no whizzy zoomdino overlay usage!\n"); - } - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/examples/zoomdino.dsp b/lib/glut-3.7.6/progs/examples/zoomdino.dsp deleted file mode 100644 index 8aa16dfacfb0bcc1217f149f6df8ec7d004f4fd3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/examples/zoomdino.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="zoomdino" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=zoomdino - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "zoomdino.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "zoomdino.mak" CFG="zoomdino - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "zoomdino - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "zoomdino - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "zoomdino - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "zoomdino - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "zoomdino - Win32 Release" -# Name "zoomdino - Win32 Debug" -# Begin Source File - -SOURCE=.\zoomdino.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/fortran/example.f b/lib/glut-3.7.6/progs/fortran/example.f deleted file mode 100644 index 27b97d0dd3570ede9ad8ea1ab61e7a10a2722fd3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/fortran/example.f +++ /dev/null @@ -1,114 +0,0 @@ - -C Copyright (c) Mark J. Kilgard, 1994. - -C This program is freely distributable without licensing fees -C and is provided without guarantee or warrantee expressed or -C implied. This program is -not- in the public domain. - -C GLUT Fortran example; touches a reasonable amount of GLUT -C callback functionality. - - subroutine display -#include "GL/fgl.h" - call fglclear(GL_COLOR_BUFFER_BIT) - call fglfinish - end - - subroutine passive(x,y) - integer x,y - print *,'passive motion',x,y - end - - subroutine submenu(value) - integer value - print *,'value is',value - end - - subroutine mainmenu(value) - integer value - print *,'main menu value is',value - end - - subroutine timer(value) - integer value - print *,'timer value',value - end - - subroutine mouse(btn,state,x,y) -#include "GL/fglut.h" - external timer - integer btn,state,x,y - print *,'mouse',btn,state,x,y - call gluttimerfunc(1000,timer,25) - end - - subroutine idle() -#include "GL/fglut.h" - integer count - print *,'idle called' - call glutidlefunc(glutnull) - end - - subroutine keyboard(key,x,y) - external idle - integer key,x,y - print *,'keyboard',key,x,y - call glutidlefunc(idle) - end - - subroutine tablet(x,y) - integer x,y - print *,'tablet motion',x,y - end - - subroutine tbutton(button,state) - integer button,state - print *,'tablet button',button,state - end - - subroutine dials(dial,value) - integer dial,value - print *,'dial movement',dial,value - end - - subroutine box(button,state) - integer button,state - print *,'button box',button,state - end - - program main -#include "GL/fglut.h" - external display - external passive - external submenu - external mainmenu - external mouse - external keyboard - external tablet - external tbutton - external dials - external box - call glutinit - print *,glutcreatewindow('Fortran GLUT program') - call glutdisplayfunc(display) - call glutpassivemotionfunc(passive) - call glutmousefunc(mouse) - call glutkeyboardfunc(keyboard) - call gluttabletmotionfunc(tablet) - call gluttabletbuttonfunc(tbutton) - call glutdialsfunc(dials) - call glutbuttonboxfunc(box) - i = glutcreatemenu(submenu) - call glutaddmenuentry('something', 4) - call glutaddmenuentry('another thing', 5) - j = glutcreatemenu(mainmenu) - call glutaddsubmenu('submenu', i) - call glutaddmenuentry('quit', 666) - call glutattachmenu(2) - print *,'Number of button box buttons:', - 2 glutdeviceget(GLUT_NUM_BUTTON_BOX_BUTTONS) - print *,'Number of dials:',glutdeviceget(GLUT_NUM_DIALS) - print *,'Depth buffer size',glutget(GLUT_WINDOW_DEPTH_SIZE) - call glutmainloop - end - diff --git a/lib/glut-3.7.6/progs/fortran/fbitfont.f b/lib/glut-3.7.6/progs/fortran/fbitfont.f deleted file mode 100644 index 87ca478fea3811967ec1463a99c0b4efb5e7c096..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/fortran/fbitfont.f +++ /dev/null @@ -1,70 +0,0 @@ - -C Copyright (c) Mark J. Kilgard, 1994. - -C This program is freely distributable without licensing fees -C and is provided without guarantee or warrantee expressed or -C implied. This program is -not- in the public domain. - -C GLUT Fortran example demonstrating use of bitmap fonts. - - subroutine output(x,y,s) - real x,y - character s*(*) - character c -#include "GL/fgl.h" -#include "GL/fglut.h" - -C XXX Stroke and font names must be explicitly declared as -C external instead of relying on "GL/fglut.h" because -C the IRIX Fortran compiler does not know to only -C link in used external data symbols. - external GLUT_BITMAP_TIMES_ROMAN_24 - - call fglrasterpos2f(x,y) - lenc = len(s) - do 10, i=1,lenc - c = s(i:i) - call glutbitmapcharacter(GLUT_BITMAP_TIMES_ROMAN_24, - 2 ichar(c)) -10 continue - end - - subroutine display -#include "GL/fgl.h" -#include "GL/fglut.h" - call fglclear(GL_COLOR_BUFFER_BIT) - call output(0.0,24.0, - 2 'This is written in a GLUT bitmap font.') - call output(100.0,100.0,'ABCDEFGabcdefg') - call output(50.0,145.0, - 2 '(positioned in pixels with upper-left origin)') - end - - subroutine reshape(w,h) - integer w, h -#include "GL/fgl.h" -#include "GL/fglu.h" - call fglviewport(0, 0, w, h) - call fglmatrixmode(GL_PROJECTION) - call fglloadidentity - call fgluortho2d(dble(0.0), dble(w), dble(0.0), dble(h)) - call fglscalef(1.0, -1.0, 1.0) - call fgltranslatef(real(0.0), real(-h), real(0.0)) - call fglmatrixmode(GL_MODELVIEW) - end - - program main -#include "GL/fglut.h" - external display - external reshape - integer win - call glutinitdisplaymode(GLUT_RGB + GLUT_SINGLE) - call glutinitwindowsize(500, 150) - call glutinit - win = glutcreatewindow('Fortran GLUT bitmap A') - call fglclearcolor(0.0, 0.0, 0.0, 1.0) - call glutdisplayfunc(display) - call glutreshapefunc(reshape) - call glutmainloop - end - diff --git a/lib/glut-3.7.6/progs/fortran/fscene.f b/lib/glut-3.7.6/progs/fortran/fscene.f deleted file mode 100644 index 69426e196fb1746fde32c7ca7a7365a896091cdf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/fortran/fscene.f +++ /dev/null @@ -1,126 +0,0 @@ - -C Copyright (c) Mark J. Kilgard, 1994. - -C This program is freely distributable without licensing fees -C and is provided without guarantee or warrantee expressed or -C implied. This program is -not- in the public domain. - -C GLUT Fortran program to render simple red scene. - - subroutine display -#include "GL/fgl.h" - call fglclear(GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT) - call fglpushmatrix - call fglscalef(1.3, 1.3, 1.3) - call fglrotatef(20.0, 1.0, 0.0, 0.0) - - call fglpushmatrix - call fgltranslatef(-0.75, 0.5, 0.0) - call fglrotatef(90.0, 1.0, 0.0, 0.0) - call glutsolidtorus(dble(0.275), dble(0.85), 10, 15) - call fglpopmatrix - - call fglpushmatrix - call fgltranslatef(-0.75, -0.5, 0.0) - call fglrotatef(270.0, 1.0, 0.0, 0.0) - call glutsolidtetrahedron - call fglpopmatrix - - call fglpushmatrix - call fgltranslatef(0.75, 0.0, -1.0) - call glutsolidicosahedron - call fglpopmatrix - - call fglpopmatrix - call fglflush - end - - subroutine reshape(w,h) -#include "GL/fgl.h" - integer w,h - real wr,hr - real*8 d - call fglviewport(0, 0, w, h) - call fglmatrixmode(GL_PROJECTION) - call fglloadidentity - wr = w - hr = h - d = 1.0 - if ( w .le. h ) then - call fglortho(dble(-2.5), dble(2.5), - 2 dble(-2.5 * hr/wr), dble(2.5 * hr/wr), - 3 dble(-10.0), dble(10.0)) - else - call fglortho(dble(-2.5 * hr/wr), dble(2.5 * hr/wr), - 2 dble(-2.5), dble(2.5), dble(-10.0), dble(10.0)) - end if - call fglmatrixmode(GL_MODELVIEW) - end - - subroutine submenu(value) -#include "GL/fgl.h" - integer value - if ( value .eq. 1 ) then - call fglenable(GL_DEPTH_TEST) - call fglenable(GL_LIGHTING) - call fgldisable(GL_BLEND) - call fglpolygonmode(GL_FRONT_AND_BACK, GL_FILL) - else - call fgldisable(GL_DEPTH_TEST) - call fgldisable(GL_LIGHTING) - call fglcolor3f(1.0, 1.0, 1.0) - call fglpolygonmode(GL_FRONT_AND_BACK, GL_LINE) - call fglenable(GL_LINE_SMOOTH) - call fglenable(GL_BLEND) - call fglblendfunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) - end if - call glutpostredisplay - end - - subroutine mainmenu(value) - integer value - call exit(1) - end - - subroutine myinit -#include "GL/fgl.h" - real lambient(4), ldiffuse(4), lspecular(4), lposition(4) - data lambient /0.0, 0.0, 0.0, 1.0/ - data ldiffuse /1.0, 0.0, 0.0, 1.0/ - data lspecular /1.0, 1.0, 1.0, 1.0/ - data lposition /1.0, 1.0, 1.0, 0.0/ - - call fgllightfv(GL_LIGHT0, GL_AMBIENT, lambient) - call fgllightfv(GL_LIGHT0, GL_DIFFUSE, ldiffuse) - call fgllightfv(GL_LIGHT0, GL_SPECULAR, lspecular) - call fgllightfv(GL_LIGHT0, GL_POSITION, lposition) - call fglenable(GL_LIGHT0) - call fgldepthfunc(GL_LESS) - call fglenable(GL_DEPTH_TEST) - call fglenable(GL_LIGHTING) - end - - program main -#include "GL/fglut.h" - external display - external reshape - external submenu - external mainmenu - integer win, menu - call glutinitwindowposition(500,500) - call glutinitwindowsize(500,500) - call glutinit - win = glutcreatewindow('Fortran GLUT program') - call myinit - call glutdisplayfunc(display) - call glutreshapefunc(reshape) - i = glutcreatemenu(submenu) - call glutaddmenuentry('Filled', 1) - call glutaddmenuentry('Outline', 2) - menu = glutcreatemenu(mainmenu) - call glutaddsubmenu('Polygon mode', i) - call glutaddmenuentry('Quit', 666) - call glutattachmenu(GLUT_RIGHT_BUTTON) - call glutmainloop - end - diff --git a/lib/glut-3.7.6/progs/fortran/sphere.f b/lib/glut-3.7.6/progs/fortran/sphere.f deleted file mode 100644 index f4cd08fdd43acfbda958fd5ce9f4acadceb0b656..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/fortran/sphere.f +++ /dev/null @@ -1,54 +0,0 @@ - -C Copyright (c) Mark J. Kilgard, 1994. - -C This program is freely distributable without licensing fees -C and is provided without guarantee or warrantee expressed or -C implied. This program is -not- in the public domain. - -C GLUT Fortran program to draw red light sphere. - - subroutine display -#include "GL/fgl.h" - call fglclear(GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT) - call fglcalllist(1) - call glutswapbuffers - end - - subroutine gfxinit -#include "GL/fgl.h" - real diffuse(4),pos(4) - data diffuse /1.0, 0.0, 0.0, 1.0/ - data pos /1.0, 1.0, 1.0, 0.0/ - call fglnewlist(1, GL_COMPILE) - call glutsolidsphere(dble(1.0), 20, 20) - call fglendlist - call fgllightfv(GL_LIGHT0, GL_DIFFUSE, diffuse) - call fgllightfv(GL_LIGHT0, GL_POSITION, pos) - call fglenable(GL_LIGHTING) - call fglenable(GL_LIGHT0) - call fglenable(GL_DEPTH_TEST) - call fglmatrixmode(GL_PROJECTION) - call fgluperspective(dble(40.0), dble(1.0), - 2 dble(1.0), dble(10.0)) - call fglmatrixmode(GL_MODELVIEW) - call fglulookat(dble(0.0), dble(0.0), dble(5.0), - 2 dble(0.0), dble(0.0), dble(0.0), - 3 dble(0.0), dble(1.0), dble(1.0)) - call fgltranslatef(0.0, 0.0, -1.0) - end - - program main -#include "GL/fglut.h" - external display - external reshape - external submenu - external mainmenu - integer win - call glutinit - call glutinitdisplaymode(GLUT_DOUBLE+GLUT_RGB+GLUT_DEPTH) - win = glutcreatewindow('Fortran GLUT sphere') - call gfxinit - call glutdisplayfunc(display) - call glutmainloop - end - diff --git a/lib/glut-3.7.6/progs/gameglut.dsw b/lib/glut-3.7.6/progs/gameglut.dsw deleted file mode 100644 index 23566ed25965bac95e948b994983d6e24677c196..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gameglut.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "asteroids"=".\gameglut\asteroids.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/gameglut/Imakefile b/lib/glut-3.7.6/progs/gameglut/Imakefile deleted file mode 100644 index 3f29847b697ca49cd0297a27e23b02e9db18a8dc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gameglut/Imakefile +++ /dev/null @@ -1,14 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../Glut.cf" - -TARGETS = asteroids - -SRCS = asteroids.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(asteroids) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/gameglut/asteroids.c b/lib/glut-3.7.6/progs/gameglut/asteroids.c deleted file mode 100644 index 28d67ad8f009920aa99146fc891b237e881ea56e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gameglut/asteroids.c +++ /dev/null @@ -1,441 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -void initWindow(void); - -float angle = 0.0; -int left, right; -int leftTime, rightTime; -int thrust, thrustTime; -int joyThrust = 0, joyLeft = 0, joyRight = 0; -float x = 20, y = 20, xv, yv, v; -int shield = 0, joyShield = 0, cursor = 1; -int lastTime; -int paused = 0; -int resuming = 1; -int originalWindow = 0, currentWindow; - -typedef struct { - int inuse; - - float x; - float y; - - float v; - float xv; - float yv; - - int expire; -} Bullet; - -#define MAX_BULLETS 10 - -Bullet bullet[MAX_BULLETS]; - -int -allocBullet(void) -{ - int i; - - for (i=0; i bullet[i].expire) { - bullet[i].inuse = 0; - continue; - } - x = bullet[i].x + bullet[i].xv * delta; - y = bullet[i].y + bullet[i].yv * delta; - x = x / 40.0; - bullet[i].x = (x - floor(x))*40.0; - y = y / 40.0; - bullet[i].y = (y - floor(y))*40.0; - } - } -} - -void -shotBullet(void) -{ - int entry; - - entry = allocBullet(); - if (entry >= 0) { - initBullet(entry, glutGet(GLUT_ELAPSED_TIME)); - } -} - -void -drawBullets(void) -{ - int i; - - glBegin(GL_POINTS); - glColor3f(1.0, 0.0, 1.0); - for (i=0; i 300) { - right = 1; - rightTime = glutGet(GLUT_ELAPSED_TIME); - joyRight = 1; - } else { - /* joyRight helps avoid "joystick in neutral" - from continually stopping rotation. */ - if (joyRight) { - right = 0; - joyRight = 0; - } - } -} - -void -initWindow(void) -{ - glutIgnoreKeyRepeat(1); - - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glutKeyboardFunc(key); - glutKeyboardUpFunc(keyup); - glutSpecialFunc(special); - glutSpecialUpFunc(specialup); - glutJoystickFunc(joystick, 100); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, 40, 0, 40, 0, 40); - glMatrixMode(GL_MODELVIEW); - glPointSize(3.0); - - currentWindow = glutGetWindow(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - - if (argc > 1 && !strcmp(argv[1], "-fullscreen")) { - glutGameModeString("640x480:16@60"); - glutEnterGameMode(); - } else { - originalWindow = glutCreateWindow("asteroids"); - } - - initWindow(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/gameglut/asteroids.dsp b/lib/glut-3.7.6/progs/gameglut/asteroids.dsp deleted file mode 100644 index 857a6aff6d795798b546d3dc607d431ca4be8a3d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gameglut/asteroids.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="asteroids" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=asteroids - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "asteroids.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "asteroids.mak" CFG="asteroids - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "asteroids - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "asteroids - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "asteroids - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "asteroids - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "asteroids - Win32 Release" -# Name "asteroids - Win32 Debug" -# Begin Source File - -SOURCE=.\asteroids.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gameglut/asteroids.dsw b/lib/glut-3.7.6/progs/gameglut/asteroids.dsw deleted file mode 100644 index 26a602704fa7b823bc5faafc449dee066f0e9aca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gameglut/asteroids.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "asteroids"=".\asteroids.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/glc/Imakefile b/lib/glut-3.7.6/progs/glc/Imakefile deleted file mode 100644 index fbef06fc3636ec886d457ce9c641ab8c319edde5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/glc/Imakefile +++ /dev/null @@ -1,14 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -#include "../../Glut.cf" - -TARGETS = glcdemo - -SRCS = glcdemo.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(glcdemo) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/glc/README b/lib/glut-3.7.6/progs/glc/README deleted file mode 100644 index ae3175bb03d3e57892f1aa8140648a0564341201..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/glc/README +++ /dev/null @@ -1,15 +0,0 @@ - -GLC is the OpenGL Character Renderer implementation. GLC is a state -machine that provides OpenGL programs with character rendering services -via an application programming interface (API). The specification for -GLC can be found at: - - http://reality.sgi.com/dunwoody/glcspec.ps - -The GLC library is provided with IRIX 6.2 and beyond on SGI -workstations. - -glcdemo.c is a very simple GLC demo showing off rotating texting. - -- Mark Kilgard - July 22, 1997 diff --git a/lib/glut-3.7.6/progs/glc/glcdemo.c b/lib/glut-3.7.6/progs/glc/glcdemo.c deleted file mode 100644 index 1f4b54d9b1ff6a0c2f9a0b40bd9ac80c7fab5ff7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/glc/glcdemo.c +++ /dev/null @@ -1,111 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int font = 1; -char defaultMessage[] = "GLUT means OpenGL."; -char *message = defaultMessage; - -int angle = 0; - -void -selectFont(int newfont) -{ - font = newfont; - glutPostRedisplay(); -} - -void -selectMessage(int msg) -{ - switch (msg) { - case 1: - message = "abcdefghijklmnop"; - break; - case 2: - message = "ABCDEFGHIJKLMNOP"; - break; - } -} - -void -tick(void) -{ - angle -= 2; - glutPostRedisplay(); -} - -void -display(void) -{ -#if 0 - int len, i; - - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glRotatef(angle, 0.0, 0.0, 1.0); - glTranslatef(-750, 0, 0); - len = (int) strlen(message); - for (i = 0; i < len; i++) { - glutStrokeCharacter(font, message[i]); - } - glPopMatrix(); -#else - glPushMatrix(); - glClear(GL_COLOR_BUFFER_BIT); - glcRotate(angle); - glRasterPos2f(100, 100); - glcFont(font); - glcRenderString(message); - glPopMatrix(); -#endif - glutSwapBuffers(); -} - -int -main(int argc, char **argv) -{ - int submenu; - - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize(600, 600); - glutCreateWindow("GLC font library demo"); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 2000, 0, 2000); - glMatrixMode(GL_MODELVIEW); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glLineWidth(3.0); - glTranslatef(1000, 1000, 0); - glClearColor(0.0, 0.0, 0.0, 1.0); - glColor3f(1.0, 1.0, 1.0); - glutDisplayFunc(display); - glutIdleFunc(tick); - submenu = glutCreateMenu(selectMessage); - glutAddMenuEntry("abc", 1); - glutAddMenuEntry("ABC", 2); - glutCreateMenu(selectFont); - glutAddMenuEntry("Helvetica", 1); - glutAddMenuEntry("Courier", 2); - glutAddMenuEntry("Times", 3); - glutAddSubMenu("Messages", submenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glcContext(glcGenContext()); - glcScale(30, 30); - glcNewFontFromFamily(1, "Helvetica"); - glcNewFontFromFamily(2, "Courier"); - glcNewFontFromFamily(3, "Times"); - glcFont(font); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/gle.dsw b/lib/glut-3.7.6/progs/gle.dsw deleted file mode 100644 index c728a2a0e49ec0a1fd4bc34fa53024661361401e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle.dsw +++ /dev/null @@ -1,365 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\gle\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name candlestick - End Project Dependency - Begin Project Dependency - Project_Dep_Name cone - End Project Dependency - Begin Project Dependency - Project_Dep_Name cylinder - End Project Dependency - Begin Project Dependency - Project_Dep_Name helix - End Project Dependency - Begin Project Dependency - Project_Dep_Name helix2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name helix3 - End Project Dependency - Begin Project Dependency - Project_Dep_Name helix4 - End Project Dependency - Begin Project Dependency - Project_Dep_Name helixtex - End Project Dependency - Begin Project Dependency - Project_Dep_Name horn - End Project Dependency - Begin Project Dependency - Project_Dep_Name joinoffset - End Project Dependency - Begin Project Dependency - Project_Dep_Name martini - End Project Dependency - Begin Project Dependency - Project_Dep_Name screw - End Project Dependency - Begin Project Dependency - Project_Dep_Name taper - End Project Dependency - Begin Project Dependency - Project_Dep_Name texas - End Project Dependency - Begin Project Dependency - Project_Dep_Name transport - End Project Dependency - Begin Project Dependency - Project_Dep_Name twistoid - End Project Dependency - Begin Project Dependency - Project_Dep_Name twoid - End Project Dependency - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "beam"=".\gle\beam.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "candlestick"=".\gle\candlestick.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "cone"=".\gle\cone.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "cylinder"=".\gle\cylinder.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "gle"="..\lib\gle\gle.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "helix"=".\gle\helix.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "helix2"=".\gle\helix2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "helix3"=".\gle\helix3.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "helix4"=".\gle\helix4.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "helixtex"=".\gle\helixtex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "horn"=".\gle\horn.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "joinoffset"=".\gle\joinoffset.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "martini"=".\gle\martini.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "screw"=".\gle\screw.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "taper"=".\gle\taper.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "texas"=".\gle\texas.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "transport"=".\gle\transport.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "twistoid"=".\gle\twistoid.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Project: "twoid"=".\gle\twoid.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gle - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/gle/Imakefile b/lib/glut-3.7.6/progs/gle/Imakefile deleted file mode 100644 index dd0ac0db1155d50dfa50f4a6e46839ae09050f58..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/Imakefile +++ /dev/null @@ -1,62 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../Glut.cf" - -SRCS = beam.c candlestick.c cone.c cylinder.c helix.c helix2.c \ - helix3.c helix4.c helixtex.c horn.c joinoffset.c mainjoin.c \ - mainsimple.c maintex.c screw.c taper.c texas.c texture.c transport.c \ - twistoid.c twoid.c - -TARGETS = \ - beam \ - candlestick \ - cone \ - cylinder \ - helix \ - helix2 \ - helix3 \ - helix4 \ - helixtex \ - horn \ - joincone \ - joinoffset \ - joinstyle \ - martini \ - screw \ - taper \ - texas \ - transport \ - twistoid \ - twoid - -AllTarget($(TARGETS)) - -NormalGleProgramTarget(beam, beam.o mainsimple.o) -SimpleGleProgramTarget(candlestick) -NormalGleProgramTarget(cone, cone.o mainsimple.o) -NormalGleProgramTarget(cylinder, cylinder.o mainsimple.o) -NormalGleProgramTarget(helix, helix.o mainsimple.o) -NormalGleProgramTarget(helix2, helix2.o mainsimple.o) -NormalGleProgramTarget(helix3, helix3.o mainsimple.o) -NormalGleProgramTarget(helix4, helix4.o mainsimple.o) -NormalGleProgramTarget(helixtex, helixtex.o texture.o maintex.o) -NormalGleProgramTarget(horn, horn.o mainsimple.o) -NormalGleProgramTarget(joincone, cone.o mainjoin.o) -NormalGleProgramTarget(joinoffset, joinoffset.o mainjoin.o) -NormalGleProgramTarget(joinstyle, cylinder.o mainjoin.o) -NormalGleProgramTarget(martini, martini.o trackball.o) -NormalGleProgramTarget(screw, screw.o texture.o maintex.o) -NormalGleProgramTarget(taper, taper.o mainsimple.o) -NormalGleProgramTarget(texas, texas.o mainjoin.o) -SimpleGleProgramTarget(transport) -NormalGleProgramTarget(twistoid, twistoid.o texture.o maintex.o) -NormalGleProgramTarget(twoid, twoid.o) - -LinkFile(trackball.c, ../examples/trackball.c) -LinkFile(trackball.h, ../examples/trackball.h) - -trackball.o: trackball.h trackball.c -martini.o: trackball.h martini.c - -DependTarget() diff --git a/lib/glut-3.7.6/progs/gle/README b/lib/glut-3.7.6/progs/gle/README deleted file mode 100644 index 957df4a88ca78db79fd872d11819cb7f230ef935..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/README +++ /dev/null @@ -1,9 +0,0 @@ - -The demos are best seen in order, from the most basic, to the advanced. -Run the "rundemo" script. - -Note that most of the demo's were written using cut & paste, starting -with the simplest demo, cylinder.c. We could have written a fancy demo -package that avoided all of the cut&paste of code, but we felt that this -would only hide what we are trying to show here: the programming API for -the tube & extrusion library. diff --git a/lib/glut-3.7.6/progs/gle/_all.dsp b/lib/glut-3.7.6/progs/gle/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/beam.c b/lib/glut-3.7.6/progs/gle/beam.c deleted file mode 100644 index d97ed92534c6174c99ff922047c8e52c3e24da77..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/beam.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * beam.c - * - * FUNCTION: - * Show how twisting is applied. - * - * HISTORY: - * -- linas Vepstas October 1991 - * -- heavily modified to draw corrugated surface, Feb 1993, Linas - * -- modified to demo twistoid March 1993 - * -- port to glut Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include -#include -#include - -/* =========================================================== */ - -#define NUM_BEAM_PTS 22 -double beam_spine[NUM_BEAM_PTS][3]; -double beam_twists [NUM_BEAM_PTS]; - -#define TSCALE (6.0) - -#define TPTS(x,y,z) { \ - beam_spine[i][0] = TSCALE * (x); \ - beam_spine[i][1] = TSCALE * (y); \ - beam_spine[i][2] = TSCALE * (z); \ - i++; \ -} - -#define TXZERO() { \ - beam_twists[i] = 0.0; \ -} -/* =========================================================== */ - -#define SCALE 0.1 -#define XSECTION(x,y) { \ - double ax, ay, alen; \ - xsection[i][0] = SCALE * (x); \ - xsection[i][1] = SCALE * (y); \ - if (i!=0) { \ - ax = xsection[i][0] - xsection[i-1][0]; \ - ay = xsection[i][1] - xsection[i-1][1]; \ - alen = 1.0 / sqrt (ax*ax + ay*ay); \ - ax *= alen; ay *= alen; \ - xnormal [i-1][0] = - ay; \ - xnormal [i-1][1] = ax; \ - } \ - i++; \ -} - -#define NUM_XSECTION_PTS (12) - -double xsection [NUM_XSECTION_PTS][2]; -double xnormal [NUM_XSECTION_PTS][2]; - -/* =========================================================== */ - -void InitStuff (void) -{ - int i; - - i=0; - while (i<22) { - TXZERO (); - TPTS (-1.1 +((float) i)/10.0, 0.0, 0.0); - } - - i=0; - XSECTION (-6.0, 6.0); - XSECTION (6.0, 6.0); - XSECTION (6.0, 5.0); - XSECTION (1.0, 5.0); - XSECTION (1.0, -5.0); - XSECTION (6.0, -5.0); - XSECTION (6.0, -6.0); - XSECTION (-6.0, -6.0); - XSECTION (-6.0, -5.0); - XSECTION (-1.0, -5.0); - XSECTION (-1.0, 5.0); - XSECTION (-6.0, 5.0); -} - -void TwistBeam (double howmuch) { - - int i; - double z; - for (i=0; i<22; i++) { - z = ((double) (i-14)) / 10.0; - beam_twists[i] = howmuch * exp (-3.0 * z*z); - } -} - -/* =========================================================== */ - -extern float lastx; - -void DrawStuff (void) { - TwistBeam ((double) (lastx -121) / 8.0); - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotated (43.0, 1.0, 0.0, 0.0); - glRotated (43.0, 0.0, 1.0, 0.0); - glScaled (1.8, 1.8, 1.8); - gleTwistExtrusion (NUM_XSECTION_PTS, xsection, xnormal, - NULL, NUM_BEAM_PTS, beam_spine, NULL, beam_twists); - glPopMatrix (); - glutSwapBuffers (); -} -/* ------------------ end of file -------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/beam.dsp b/lib/glut-3.7.6/progs/gle/beam.dsp deleted file mode 100644 index 442e34ebeb953898e348896bedd49813f10f4447..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/beam.dsp +++ /dev/null @@ -1,89 +0,0 @@ -# Microsoft Developer Studio Project File - Name="beam" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=beam - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "beam.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "beam.mak" CFG="beam - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "beam - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "beam - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "beam - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "beam - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "beam - Win32 Release" -# Name "beam - Win32 Debug" -# Begin Source File - -SOURCE=.\beam.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/candlestick.c b/lib/glut-3.7.6/progs/gle/candlestick.c deleted file mode 100644 index 3f77f78575d1a47c27259a0fb2f8030baace1d6a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/candlestick.c +++ /dev/null @@ -1,424 +0,0 @@ - -/* - * candlestick.c - * - * FUNCTION: - * Draws a skewed candlestick shape using the Lathe primitive - * - * HISTORY: - * -- created by Linas Vepstas October 1991 - * -- C++ and OO playing around Linas Vepstas June 1993 - * -- converted to use GLUT -- December 1995, Linas - * - */ - -/* required include files */ -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* =========================================================== */ - -#define SET_RGB(rgb,r,g,b) { \ - rgb[0]=r; rgb[1]=g; rgb[2]=b; \ -} - -typedef struct _material { - - /* public data areas */ - float emission[3]; - float ambient[3]; - float diffuse[3]; - float specular[3]; - float shininess; - -} Material; - -#define SET_EMIS(self,r,g,b) { SET_RGB(self->emission, r,g,b); } -#define SET_AMB(self,r,g,b) { SET_RGB(self->ambient, r,g,b); } -#define SET_DIFF(self,r,g,b) { SET_RGB(self->diffuse, r,g,b); } -#define SET_SPEC(self,r,g,b) { SET_RGB(self->specular, r,g,b); } - -/* =========================================================== */ - -#ifdef NOTNOW -class goPolyline { - public: - int dimension; - int numPoints; - double * pts; - - private: - int nfree; - - public: - goPolyline (); // by default, construct 3D polyline - goPolyline (int); // construct arbitrary dimension polyline - void Print (); - void AddPoint (double x, double y); - void AddNormal (double x, double y); - void MakeFacetNormal (); -}; -#endif /* NOTNOW */ - -typedef double SVec[2]; - -typedef struct contour { - - /* public data areas */ - int numContourPoints; - int numContourNorms; - SVec * pts; - SVec * norms; - double up[3]; - -} Contour; - -#define pfree numContourPoints -#define nfree numContourNorms - -#define NEW_CONTOUR(self) { \ - self -> pts = (SVec *) malloc (100*sizeof (double)); \ - self -> norms = (SVec *) malloc (100*sizeof (double)); \ - self -> pfree = 0; \ - self -> nfree = 0; \ -} - -#define ADD_POINT(self,x,y) { \ - self -> pts[self->pfree][0] = x; \ - self -> pts[self->pfree][1] = y; \ - self->pfree ++; \ -} - -#define ADD_NORMAL(self,x,y) { \ - self -> norms[self->nfree][0] = x; \ - self -> norms[self->nfree][1] = y; \ - self->nfree ++; \ -} - -#define MAKE_NORMAL(self) { \ - float dx, dy, w; \ - dx = self -> pts [self->pfree -1][0]; \ - dx -= self -> pts [self->pfree -2][0]; \ - dy = self -> pts [self->pfree -1][1]; \ - dy -= self -> pts [self->pfree -2][1]; \ - w = 1.0 / sqrt (dx*dx+dy*dy); \ - dx *= w; \ - dy *= w; \ - self -> norms[self->nfree][0] = -dy; \ - self -> norms[self->nfree][1] = dx; \ - self -> nfree ++; \ -} - -/* =========================================================== */ -/* class gleExtrustion */ - -typedef struct _extrusion { - Material *material; /* material description */ - Contour *contour; /* 2D contour */ - - double radius; /* for polycylinder, torus */ - double startRadius; /* spiral starts in x-y plane */ - double drdTheta; /* change in radius per revolution */ - double startZ; /* starting z value */ - double dzdTheta; /* change in Z per revolution */ - double startXform[2][3]; /* starting contour affine xform */ - double dXdTheta[2][3]; /* tangent change xform per revoln */ - double startTheta; /* start angle in x-y plane */ - double sweepTheta; /* degrees to spiral around */ - -} Extrusion; - -#define NEW_EXTRUSION(self) { \ - self -> material = (Material *) malloc (sizeof (Material)); \ - self -> contour = (Contour *) malloc (sizeof (Contour)); \ - NEW_CONTOUR (self->contour); \ -} - - -/* =========================================================== */ -Extrusion *candle = NULL; - -/* =========================================================== */ -float lastx=0; -float lasty=0; - -void draw_candle (void) { - - /* attach the mouse */ - candle->dzdTheta = - 0.015 * (lasty -150.0); - -/* rotational delta sine & cosines from mouse */ -/* disable twist -- confusing to the viewer, hard to explain */ -/* - mouse -> AttachMouseYd (mouse, 0.0004, -0.1, &candle->dXdTheta[0][1]); -*/ - glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT, candle->material->ambient); - glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, candle->material->diffuse); - glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, candle->material->specular); - glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 2.0); - -#ifdef IBM_GL_32 - rotate (-750, 'x'); - rotate (-1050, 'z'); - translate (-0.5, -0.5, -0.5); - - lathe (candle->contour->numContourPoints, - candle->contour->pts, - candle->contour->norms, - candle->contour->up, - candle->startRadius, /* donut radius */ - candle->drdTheta, /* change in donut radius per revolution */ - candle->startZ, /* start z value */ - candle->dzdTheta, /* change in Z per revolution */ - candle->startXform, - candle->dXdTheta, - candle->startTheta, /* start angle */ - candle->sweepTheta); /* sweep angle */ -#endif - - -#define OPENGL_10 -#ifdef OPENGL_10 - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotated (-75.0, 1.0, 0.0, 0.0); - glRotated (-105.0, 0.0, 0.0, 1.0); - - glEnable (GL_LIGHTING); - gleLathe (candle->contour->numContourPoints, - candle->contour->pts, - candle->contour->norms, - candle->contour->up, - candle->startRadius, /* donut radius */ - candle->drdTheta, /* change in donut radius per revolution */ - candle->startZ, /* start z value */ - candle->dzdTheta, /* change in Z per revolution */ - candle->startXform, - candle->dXdTheta, - candle->startTheta, /* start angle */ - candle->sweepTheta); /* sweep angle */ - - glDisable (GL_LIGHTING); - - glPopMatrix (); - glutSwapBuffers (); -#endif -} - -/* =========================================================== */ - -#define SCALE 1.0 -#define PT(x,y) { ADD_POINT (candle->contour, SCALE*x, SCALE*y); } -#define NORM(x,y) { ADD_NORMAL (candle->contour, x, y); } -#define FACET { MAKE_NORMAL (candle->contour); } - -/* =========================================================== */ - -void init_candle (void) -{ - int j; - double theta, dtheta; - int style; - - candle = (Extrusion *) malloc (sizeof (Extrusion)); - NEW_EXTRUSION (candle); - - /* define candle color */ - SET_AMB (candle->material, 0.25, 0.25, 0.25); - SET_DIFF (candle->material, 0.8, 0.6, 0.175); - SET_SPEC (candle->material, 0.45, 0.45, 0.45); - - /* define lathe/spiral parameters */ - candle -> startRadius = 1.5; - candle -> drdTheta = 0.0; - candle -> startZ = 0.0; - candle -> dzdTheta = 0.0; - candle -> startTheta = 0.0; - candle -> sweepTheta = 360.0; - - /* initialize contour up vector */ - candle->contour->up[0] = 1.0; - candle->contour->up[1] = 0.0; - candle->contour->up[2] = 0.0; - - /* define candlestick contour */ - PT (-8.0, 0.0); - PT (-10.0, 0.0); FACET; - PT (-10.0, 2.0); FACET; - PT (-9.6, 2.0); FACET; - PT (-8.0, 0.0); FACET; - PT (-5.8, 0.0); FACET; - PT (-5.2, 0.6); FACET; - PT (-4.6, 0.0); FACET; - PT (-1.5, 0.0); FACET; - - dtheta = M_PI /14.0; - theta = 0.0; - for (j=0; j<14; j++) { - PT ((-1.5*cos(theta)) , (1.5*sin(theta))); - NORM ((-cos(theta)) , sin(theta)); - theta += dtheta; - } - PT (1.5, 0.0); FACET; - PT (4.6, 0.0); FACET; - PT (5.2, 0.6); FACET; - PT (5.8, 0.0); FACET; - PT (7.0, 0.0); FACET; - PT (7.5, 0.2); FACET; - PT (8.0, 0.8); FACET; - PT (8.3, 0.9); FACET; - PT (8.15, 1.8); FACET; - PT (8.8, 2.8); FACET; - PT (9.2, 3.8); FACET; - PT (9.5, 3.8); FACET; - PT (9.56, 3.75); FACET; - PT (9.62, 3.75); FACET; - PT (9.7, 3.8); FACET; - PT (10.0, 3.8); FACET; - PT (10.0, 0.0); FACET; - PT (7.0, 0.0); FACET; - - /* initialize the transofrms */ - candle->startXform[0][0] = 1.0; - candle->startXform[0][1] = 0.0; - candle->startXform[0][2] = 0.0; - candle->startXform[1][0] = 0.0; - candle->startXform[1][1] = 1.0; - candle->startXform[1][2] = 0.0; - - candle->dXdTheta[0][0] = 0.0; - candle->dXdTheta[0][1] = 0.0; - candle->dXdTheta[0][2] = 0.0; - candle->dXdTheta[1][0] = 0.0; - candle->dXdTheta[1][1] = 0.0; - candle->dXdTheta[1][2] = 0.0; - - /* set the initial join style */ - style = gleGetJoinStyle (); - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_PATH_EDGE; - style |= TUBE_NORM_FACET; - gleSetJoinStyle (style); - -} - -/* =========================================================== */ - -/* get notified of mouse motions */ -void MouseMotion (int x, int y) -{ - lastx = x; - lasty = y; - glutPostRedisplay (); -} - -void JoinStyle (int msg) -{ - int style; - /* get the current joint style */ - style = gleGetJoinStyle (); - - /* there are four different join styles, - * and two different normal vector styles */ - switch (msg) { - - case 20: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_FACET; - break; - case 21: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_EDGE; - break; - case 22: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_PATH_EDGE; - style |= TUBE_NORM_FACET; - break; - case 23: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_PATH_EDGE; - style |= TUBE_NORM_EDGE; - break; - - case 99: - exit (0); - - default: - break; - } - gleSetJoinStyle (style); - glutPostRedisplay (); -} - -/* set up a light */ -GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0}; -GLfloat lightOneColor[] = {0.54, 0.54, 0.54, 1.0}; - -GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0}; -GLfloat lightTwoColor[] = {0.54, 0.54, 0.54, 1.0}; - -int -main (int argc, char * argv[]) { - - /* initialize glut */ - glutInit (&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow ("candlestick"); - glutDisplayFunc (draw_candle); - glutMotionFunc (MouseMotion); - - /* create popup menu */ - glutCreateMenu (JoinStyle); - glutAddMenuEntry ("Facet Normal Vectors", 20); - glutAddMenuEntry ("Edge Normal Vectors", 21); - glutAddMenuEntry ("Facet Sweep Normal Vectors", 22); - glutAddMenuEntry ("Edge Sweep Normal Vectors", 23); - glutAddMenuEntry ("------------------", 9999); - glutAddMenuEntry ("Exit", 99); - glutAttachMenu (GLUT_MIDDLE_BUTTON); - - /* initialize GL */ - glClearDepth (1.0); - glEnable (GL_DEPTH_TEST); - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - - glMatrixMode (GL_PROJECTION); - /* roughly, measured in centimeters */ - glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0); - glMatrixMode(GL_MODELVIEW); - - /* initialize lighting */ - glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); - glLightfv (GL_LIGHT0, GL_AMBIENT, lightOneColor); - glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); - glLightfv (GL_LIGHT0, GL_SPECULAR, lightOneColor); - glEnable (GL_LIGHT0); - glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); - glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); - glLightfv (GL_LIGHT1, GL_AMBIENT, lightTwoColor); - glEnable (GL_LIGHT1); - glEnable (GL_LIGHTING); - glEnable (GL_NORMALIZE); - /* glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); */ - /* glEnable (GL_COLOR_MATERIAL); */ - - init_candle (); - - glutMainLoop (); - return 0; /* ANSI C requires main to return int. */ -} - -/* ===================== END OF FILE ================== */ - diff --git a/lib/glut-3.7.6/progs/gle/candlestick.dsp b/lib/glut-3.7.6/progs/gle/candlestick.dsp deleted file mode 100644 index 8609b226286334ce6dbdf6a892a1e0d8a64ffba9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/candlestick.dsp +++ /dev/null @@ -1,89 +0,0 @@ -# Microsoft Developer Studio Project File - Name="candlestick" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=candlestick - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "candlestick.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "candlestick.mak" CFG="candlestick - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "candlestick - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "candlestick - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "candlestick - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "candlestick - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "candlestick - Win32 Release" -# Name "candlestick - Win32 Debug" -# Begin Source File - -SOURCE=.\candlestick.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/cone.c b/lib/glut-3.7.6/progs/gle/cone.c deleted file mode 100644 index dfb6f091a88e044a71310937f262e8a17e4dd660..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/cone.c +++ /dev/null @@ -1,103 +0,0 @@ - -/* - * cone drawing demo - * - * FUNCTION: - * Baisc demo illustrating how to write code to draw - * the most basic cone shape. - * - * HISTORY: - * Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include - -/* the arrays in which we will store out polyline */ -#define NPTS 6 -double radii [NPTS]; -double points [NPTS][3]; -float colors [NPTS][3]; -int idx = 0; - -/* some utilities for filling that array */ -#define PNT(x,y,z) { \ - points[idx][0] = x; \ - points[idx][1] = y; \ - points[idx][2] = z; \ - idx ++; \ -} - -#define COL(r,g,b) { \ - colors[idx][0] = r; \ - colors[idx][1] = g; \ - colors[idx][2] = b; \ -} - -#define RAD(r) { \ - radii[idx] = r; \ -} - -/* - * Initialize a bent shape with three segments. - * The data format is a polyline. - * - * NOTE that neither the first, nor the last segment are drawn. - * The first & last segment serve only to determine that angle - * at which the endcaps are drawn. - */ - -void InitStuff (void) { - - /* initialize the join style here */ - gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); - - RAD (1.0); - COL (0.0, 0.0, 0.0); - PNT (-6.0, 6.0, 0.0); - - RAD (1.0); - COL (0.0, 0.8, 0.3); - PNT (6.0, 6.0, 0.0); - - RAD (3.0); - COL (0.8, 0.3, 0.0); - PNT (6.0, -6.0, 0.0); - - RAD (0.5); - COL (0.2, 0.3, 0.9); - PNT (-6.0, -6.0, 0.0); - - RAD (2.0); - COL (0.2, 0.8, 0.5); - PNT (-6.0, 6.0, 0.0); - - RAD (1.0); - COL (0.0, 0.0, 0.0); - PNT (6.0, 6.0, 0.0); -} - -extern float lastx; -extern float lasty; - -/* draw the polycone shape */ -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (lastx, 0.0, 1.0, 0.0); - glRotatef (lasty, 1.0, 0.0, 0.0); - - /* Phew. FINALLY, Draw the polycone -- */ - glePolyCone (idx, points, colors, radii); - - glPopMatrix (); - - glutSwapBuffers (); -} - -/* --------------------------- end of file ------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/cone.dsp b/lib/glut-3.7.6/progs/gle/cone.dsp deleted file mode 100644 index 8ea8d8fc9a1697da8058810189ebffb9fdf09269..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/cone.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cone" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cone - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cone.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cone.mak" CFG="cone - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cone - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cone - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cone - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cone - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cone - Win32 Release" -# Name "cone - Win32 Debug" -# Begin Source File - -SOURCE=.\cone.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/cylinder.c b/lib/glut-3.7.6/progs/gle/cylinder.c deleted file mode 100644 index 768a31c3468b7c94190a1b1158b3428e6e667175..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/cylinder.c +++ /dev/null @@ -1,92 +0,0 @@ - -/* - * cylinder drawing demo - * - * FUNCTION: - * Basic demo illustrating how to write code to draw - * the most basic cylinder shape. - * - * HISTORY: - * Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include - -/* the arrays in which we will store out polyline */ -#define NPTS 6 -double points [NPTS][3]; -float colors [NPTS][3]; -int idx = 0; - -/* some utilities for filling that array */ -#define PNT(x,y,z) { \ - points[idx][0] = x; \ - points[idx][1] = y; \ - points[idx][2] = z; \ - idx ++; \ -} - -#define COL(r,g,b) { \ - colors[idx][0] = r; \ - colors[idx][1] = g; \ - colors[idx][2] = b; \ -} - -/* - * Initialize a bent shape with three segments. - * The data format is a polyline. - * - * NOTE that neither the first, nor the last segment are drawn. - * The first & last segment serve only to determine that angle - * at which the endcaps are drawn. - */ - -void InitStuff (void) { - - /* initialize the join style here */ - gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); - - COL (0.0, 0.0, 0.0); - PNT (-6.0, 6.0, 0.0); - - COL (0.0, 0.8, 0.3); - PNT (6.0, 6.0, 0.0); - - COL (0.8, 0.3, 0.0); - PNT (6.0, -6.0, 0.0); - - COL (0.2, 0.3, 0.9); - PNT (-6.0, -6.0, 0.0); - - COL (0.2, 0.8, 0.5); - PNT (-6.0, 6.0, 0.0); - - COL (0.0, 0.0, 0.0); - PNT (6.0, 6.0, 0.0); -} - -extern float lastx; -extern float lasty; - -/* draw the cylinder shape */ -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (lastx, 0.0, 1.0, 0.0); - glRotatef (lasty, 1.0, 0.0, 0.0); - - /* Phew. FINALLY, Draw the polycylinder -- */ - glePolyCylinder (NPTS, points, colors, 2.3); - - glPopMatrix (); - - glutSwapBuffers (); -} - -/* ------------------------ end of file ------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/cylinder.dsp b/lib/glut-3.7.6/progs/gle/cylinder.dsp deleted file mode 100644 index ee91ac76d661e5074ac2bc2abd5fd78778a3c913..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/cylinder.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cylinder" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cylinder - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cylinder.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cylinder.mak" CFG="cylinder - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cylinder - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cylinder - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cylinder - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cylinder - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cylinder - Win32 Release" -# Name "cylinder - Win32 Debug" -# Begin Source File - -SOURCE=.\cylinder.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/helix.c b/lib/glut-3.7.6/progs/gle/helix.c deleted file mode 100644 index 6538d4c1bdb60e6bb117c1de54846f7848a2527c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix.c +++ /dev/null @@ -1,48 +0,0 @@ - -/* - * helicoid (gernalized torus) demo - * - * FUNCTION: - * This code provides a very simple example of the helicoid primitive. - * Most of this code is required to set up OpenGL and GLUT, and very - * very little to set up the helix drawer. Don't blink! - * - * HISTORY: - * Written by Linas Vepstas, March 1995 - */ - -/* required include files */ -#include -#include - -/* most recent mouse postion */ -extern float lastx; -extern float lasty; - -void InitStuff (void) { - lastx = 121.0; - lasty = 121.0; -} - -/* draw the helix shape */ -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f (0.6, 0.8, 0.3); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (lastx, 0.0, 1.0, 0.0); - glRotatef (lasty, 1.0, 0.0, 0.0); - - /* Phew. FINALLY, Draw the helix -- */ - gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); - gleHelicoid (1.0, 6.0, 2.0, -3.0, 4.0, 0x0, 0x0, 0.0, 1080.0); - - glPopMatrix (); - - glutSwapBuffers (); -} - -/* ------------------------- end of file ----------------- */ diff --git a/lib/glut-3.7.6/progs/gle/helix.dsp b/lib/glut-3.7.6/progs/gle/helix.dsp deleted file mode 100644 index a073d03c4f41f44865d76f9fe03d0009051c901e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="helix" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=helix - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "helix.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "helix.mak" CFG="helix - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "helix - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "helix - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "helix - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "helix - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "helix - Win32 Release" -# Name "helix - Win32 Debug" -# Begin Source File - -SOURCE=.\helix.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/helix2.c b/lib/glut-3.7.6/progs/gle/helix2.c deleted file mode 100644 index bb3b8a7c729b0238bd7e80bda50c0b44e3de92d1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix2.c +++ /dev/null @@ -1,51 +0,0 @@ - -/* - * helicoid (gernalized torus) demo - * - * FUNCTION: - * This code provides a very simple example of the helicoid primitive. - * Most of this code is required to set up OpenGL and GLUT, and very - * very little to set up the helix drawer. Don't blink! - * - * =======> MOUSE HOOKED UP TO RADIUS, DELTA-RADIUS < ======== - * - * HISTORY: - * Written by Linas Vepstas, March 1995 - */ - -/* required include files */ -#include -#include - -/* most recent mouse postion */ -extern float lastx; -extern float lasty; - -void InitStuff (void) { - lastx = 121.0; - lasty = 121.0; -} - -/* draw the helix shape */ -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f (0.6, 0.3, 0.8); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (220.0, 0.0, 1.0, 0.0); - glRotatef (65.0, 1.0, 0.0, 0.0); - - /* Phew. FINALLY, Draw the helix -- */ - gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); - gleHelicoid (0.01*lastx, - 6.0, (0.01*lasty - 2.0), - -3.0, 4.0, 0x0, 0x0, 0.0, 1080.0); - - glPopMatrix (); - - glutSwapBuffers (); -} -/* ------------------------- end of file ----------------- */ diff --git a/lib/glut-3.7.6/progs/gle/helix2.dsp b/lib/glut-3.7.6/progs/gle/helix2.dsp deleted file mode 100644 index ef6019981a2e12a08c0990888f35ddf8f5762f90..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix2.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="helix2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=helix2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "helix2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "helix2.mak" CFG="helix2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "helix2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "helix2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "helix2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "helix2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "helix2 - Win32 Release" -# Name "helix2 - Win32 Debug" -# Begin Source File - -SOURCE=.\helix2.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/helix3.c b/lib/glut-3.7.6/progs/gle/helix3.c deleted file mode 100644 index 09ec9510d990bd6a6009b33d787126935877350f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix3.c +++ /dev/null @@ -1,50 +0,0 @@ - -/* - * helicoid (gernalized torus) demo - * - * FUNCTION: - * This code provides a very simple example of the helicoid primitive. - * Most of this code is required to set up OpenGL and GLUT, and very - * very little to set up the helix drawer. Don't blink! - * - * =======> MOUSE HOOKED UP TO SWEEP, HEIGHT < ======== - * - * HISTORY: - * Written by Linas Vepstas, March 1995 - */ - -/* required include files */ -#include -#include - -/* most recent mouse postion */ -extern float lastx; -extern float lasty; - -void InitStuff (void) { - lastx = 121.0; - lasty = 121.0; -} - -/* draw the helix shape */ -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f (0.8, 0.3, 0.6); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (220.0, 0.0, 1.0, 0.0); - glRotatef (65.0, 1.0, 0.0, 0.0); - - /* Phew. FINALLY, Draw the helix -- */ - gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); - gleHelicoid (1.0, 6.0, -1.0, - 0.0, (0.02*lasty-2.0), 0x0, 0x0, 0.0, 6.0*lastx); - - glPopMatrix (); - - glutSwapBuffers (); -} -/* ------------------------- end of file ----------------- */ diff --git a/lib/glut-3.7.6/progs/gle/helix3.dsp b/lib/glut-3.7.6/progs/gle/helix3.dsp deleted file mode 100644 index 9409ee5d3bc255a19f41f0037792818eabd70af3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix3.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="helix3" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=helix3 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "helix3.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "helix3.mak" CFG="helix3 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "helix3 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "helix3 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "helix3 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "helix3 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "helix3 - Win32 Release" -# Name "helix3 - Win32 Debug" -# Begin Source File - -SOURCE=.\helix3.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/helix4.c b/lib/glut-3.7.6/progs/gle/helix4.c deleted file mode 100644 index be0e69c492a64a149be7460f6362097b696dad72..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix4.c +++ /dev/null @@ -1,66 +0,0 @@ - -/* - * helicoid (gernalized torus) demo - * - * FUNCTION: - * This code provides a very simple example of the helicoid primitive. - * Most of this code is required to set up OpenGL and GLUT, and very - * very little to set up the helix drawer. Don't blink! - * - * =======> MOUSE HOOKED UP TO AFFINE < ======== - * - * HISTORY: - * Written by Linas Vepstas, March 1995 - */ - -/* required include files */ -#include -#include - -/* most recent mouse postion */ -extern float lastx; -extern float lasty; - -void InitStuff (void) { - lastx = 121.0; - lasty = 121.0; -} - -/* draw the helix shape */ -void DrawStuff (void) { - double affine[2][3]; - double delta_affine[2][3]; - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f (0.7, 0.5, 0.3); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (220.0, 0.0, 1.0, 0.0); - glRotatef (65.0, 1.0, 0.0, 0.0); - - /* Phew. FINALLY, Draw the helix -- */ - affine [0][0] = 1.0/ (0.01*lastx); - affine [1][0] = 0.0; - affine [0][1] = 0.0; - affine [1][1] = 0.01*lastx; - affine [0][2] = 0.0; - affine [1][2] = 0.0; - - delta_affine [0][0] = 0.0; - delta_affine [1][0] = 0.03*lasty; - delta_affine [0][1] = -0.03*lasty; - delta_affine [1][1] = 0.0; - delta_affine [0][2] = 0.0; - delta_affine [1][2] = 0.0; - - gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); - gleHelicoid (1.0, 7.0, -1.0, - -4.0, 6.0, affine, delta_affine, 0.0, 980.0); - - glPopMatrix (); - - glutSwapBuffers (); -} -/* ------------------------- end of file ----------------- */ diff --git a/lib/glut-3.7.6/progs/gle/helix4.dsp b/lib/glut-3.7.6/progs/gle/helix4.dsp deleted file mode 100644 index e9ccfb18f34d627ee60ab32e256d29aedee883ec..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helix4.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="helix4" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=helix4 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "helix4.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "helix4.mak" CFG="helix4 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "helix4 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "helix4 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "helix4 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "helix4 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "helix4 - Win32 Release" -# Name "helix4 - Win32 Debug" -# Begin Source File - -SOURCE=.\helix4.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/helixtex.c b/lib/glut-3.7.6/progs/gle/helixtex.c deleted file mode 100644 index 6f603e18b2c575fa64e4f4b006f865e41dd268c3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helixtex.c +++ /dev/null @@ -1,48 +0,0 @@ - -/* - * helicoid (gernalized torus) demo - * - * FUNCTION: - * This code provides a very simple example of the helicoid primitive. - * - * =======> MOUSE HOOKED UP TO SWEEP, HEIGHT < ======== - * - * HISTORY: - * Written by Linas Vepstas, March 1995 - */ - -/* required include files */ -#include -#include -#include "texture.h" - -/* most recent mouse postion */ -extern float lastx; -extern float lasty; - -void InitStuff (void) {} - -/* draw the helix shape */ -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (220.0, 0.0, 1.0, 0.0); - glRotatef (65.0, 1.0, 0.0, 0.0); - - /* Phew. FINALLY, Draw the helix -- */ - gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP); - gleHelicoid (1.0, 6.0, -1.0, - 0.0, (0.02*lasty-2.0), 0x0, 0x0, 0.0, 6.0*lastx); - - glPopMatrix (); - - glutSwapBuffers (); - - glutReportErrors(); -} - -/* ---------------------- end of file ------------------ */ diff --git a/lib/glut-3.7.6/progs/gle/helixtex.dsp b/lib/glut-3.7.6/progs/gle/helixtex.dsp deleted file mode 100644 index baa7e028d4e1a11b61fde1bf6f2f9284508e2e48..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/helixtex.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="helixtex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=helixtex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "helixtex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "helixtex.mak" CFG="helixtex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "helixtex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "helixtex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "helixtex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "helixtex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "helixtex - Win32 Release" -# Name "helixtex - Win32 Debug" -# Begin Source File - -SOURCE=.\helixtex.c -# End Source File -# Begin Source File - -SOURCE=.\maintex.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# Begin Source File - -SOURCE=.\texture.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/horn.c b/lib/glut-3.7.6/progs/gle/horn.c deleted file mode 100644 index 6ab057bb4a38d48d78137769552e6bcc6ccf3548..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/horn.c +++ /dev/null @@ -1,137 +0,0 @@ - -/* - * hron -- cone drawing demo - * - * FUNCTION: - * Baisc demo illustrating how to write code to draw - * the a slightly fancier "polycone". - * - * HISTORY: - * Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include - -/* the arrays in which we will store out polyline */ -#define NPTS 26 -double radii [NPTS]; -double points [NPTS][3]; -int idx = 0; - -/* some utilities for filling that array */ -#define PNT(x,y,z) { \ - points[idx][0] = x; \ - points[idx][1] = y; \ - points[idx][2] = z; \ - idx ++; \ -} - -#define RAD(r) { \ - radii[idx] = r; \ -} - -/* - * Initialize a bent shape with three segments. - * The data format is a polyline. - * - * NOTE that neither the first, nor the last segment are drawn. - * The first & last segment serve only to determine that angle - * at which the endcaps are drawn. - */ - -void InitStuff (void) { - - /* initialize the join style here */ - gleSetJoinStyle (TUBE_NORM_PATH_EDGE | TUBE_JN_ANGLE ); - - RAD (0.3); - PNT (-4.9, 6.0, 0.0); - - RAD (0.3); - PNT (-4.8, 5.8, 0.0); - - RAD (0.3); - PNT (-3.8, 5.8, 0.0); - - RAD (0.6); - PNT (-3.5, 6.0, 0.0); - - RAD (0.8); - PNT (-3.0, 7.0, 0.0); - - RAD (0.9); - PNT (-2.4, 7.6, 0.0); - - RAD (1.0); - PNT (-1.8, 7.6, 0.0); - - RAD (1.1); - PNT (-1.2, 7.1, 0.0); - - RAD (1.2); - PNT (-0.8, 5.1, 0.0); - - RAD (1.7); - PNT (-0.3, -2.0, 0.0); - - RAD (1.8); - PNT (-0.2, -7.0, 0.0); - - RAD (2.0); - PNT (0.3, -7.8, 0.0); - - RAD (2.1); - PNT (0.8, -8.2, 0.0); - - RAD (2.25); - PNT (1.8, -8.6, 0.0); - - RAD (2.4); - PNT (3.6, -8.6, 0.0); - - RAD (2.5); - PNT (4.5, -8.2, 0.0); - - RAD (2.6); - PNT (4.8, -7.5, 0.0); - - RAD (2.7); - PNT (5.0, -6.0, 0.0); - - RAD (3.2); - PNT (6.4, -2.0, 0.0); - - RAD (4.1); - PNT (6.9, -1.0, 0.0); - - RAD (4.1); - PNT (7.8, 0.5, 0.0); - -} - -extern float lastx; -extern float lasty; - -/* draw the polycone shape */ -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (lastx, 0.0, 1.0, 0.0); - glRotatef (lasty, 1.0, 0.0, 0.0); - glColor3f (0.5, 0.5, 0.2); - - /* Phew. FINALLY, Draw the polycone -- */ - glePolyCone (idx, points, 0x0, radii); - - glPopMatrix (); - - glutSwapBuffers (); -} - -/* --------------------------- end of file ------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/horn.dsp b/lib/glut-3.7.6/progs/gle/horn.dsp deleted file mode 100644 index 067d5b58368faa2d88f553cec367607a9a55a9b1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/horn.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="horn" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=horn - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "horn.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "horn.mak" CFG="horn - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "horn - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "horn - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "horn - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "horn - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "horn - Win32 Release" -# Name "horn - Win32 Debug" -# Begin Source File - -SOURCE=.\horn.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/joinoffset.c b/lib/glut-3.7.6/progs/gle/joinoffset.c deleted file mode 100644 index b834d43963197a6954b0601f7b2f80c7820f18cd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/joinoffset.c +++ /dev/null @@ -1,145 +0,0 @@ - -/* cylinder drawing demo */ -/* this demo demonstrates the various join styles */ - -/* required include files */ -#include -#include - -/* ------------------------------------------------------- */ - -/* the arrays in which we will store the polyline */ -#define NPTS 100 -double points [NPTS][3]; -float colors [NPTS][3]; -int idx = 0; - -/* some utilities for filling that array */ -#define PSCALE 0.5 -#define PNT(x,y,z) { \ - points[idx][0] = PSCALE * x; \ - points[idx][1] = PSCALE * y; \ - points[idx][2] = PSCALE * z; \ - idx ++; \ -} - -#define COL(r,g,b) { \ - colors[idx][0] = r; \ - colors[idx][1] = g; \ - colors[idx][2] = b; \ -} - -/* the arrays in which we will store the contour */ -#define NCONTOUR 100 -double contour_points [NCONTOUR][2]; -int cidx = 0; - -/* some utilities for filling that array */ -#define C_PNT(x,y) { \ - contour_points[cidx][0] = x; \ - contour_points[cidx][1] = y; \ - cidx ++; \ -} - - -/* ------------------------------------------------------- */ -/* - * Initialize a bent shape with three segments. - * The data format is a polyline. - * - * NOTE that neither the first, nor the last segment are drawn. - * The first & last segment serve only to determine that angle - * at which the endcaps are drawn. - */ - -void InitStuff (void) { - - COL (0.0, 0.0, 0.0); - PNT (16.0, 0.0, 0.0); - - COL (0.2, 0.8, 0.5); - PNT (0.0, -16.0, 0.0); - - COL (0.0, 0.8, 0.3); - PNT (-16.0, 0.0, 0.0); - - COL (0.8, 0.3, 0.0); - PNT (0.0, 16.0, 0.0); - - COL (0.2, 0.3, 0.9); - PNT (16.0, 0.0, 0.0); - - COL (0.2, 0.8, 0.5); - PNT (0.0, -16.0, 0.0); - - COL (0.0, 0.0, 0.0); - PNT (-16.0, 0.0, 0.0); - - C_PNT (-0.8, -0.5); - C_PNT (-1.8, 0.0); - C_PNT (-1.2, 0.3); - C_PNT (-0.7, 0.8); - C_PNT (-0.2, 1.3); - C_PNT (0.0, 1.6); - C_PNT (0.2, 1.3); - C_PNT (0.7, 0.8); - C_PNT (1.2, 0.3); - C_PNT (1.8, 0.0); - C_PNT (0.8, -0.5); - - gleSetJoinStyle (TUBE_JN_ANGLE | TUBE_CONTOUR_CLOSED | TUBE_JN_CAP); -} - -double up_vector[3] = {1.0, 0.0, 0.0}; - -extern float lastx; -extern float lasty; - -/* ------------------------------------------------------- */ -/* draw the extrusion */ - -void DrawStuff (void) { - double moved_contour [NCONTOUR][2]; - int style, save_style; - int i; - - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=joinoffset - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "joinoffset.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "joinoffset.mak" CFG="joinoffset - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "joinoffset - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "joinoffset - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "joinoffset - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "joinoffset - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "joinoffset - Win32 Release" -# Name "joinoffset - Win32 Debug" -# Begin Source File - -SOURCE=.\joinoffset.c -# End Source File -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/mainjoin.c b/lib/glut-3.7.6/progs/gle/mainjoin.c deleted file mode 100644 index fa4bfa1a3a88c52e2e4caf7eef97f226de89087e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/mainjoin.c +++ /dev/null @@ -1,135 +0,0 @@ - -/* - * main for exhibiting differnt join styles - * - * FUNCTION: - * This demo demonstrates the various join styles, - * and how they get applied. - * - * HISTORY: - * Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include -#include - -extern void InitStuff (void); -extern void DrawStuff (void); - -float lastx=0; -float lasty=0; - -/* get notified of mouse motions */ -void MouseMotion (int x, int y) -{ - lastx = x; - lasty = y; - glutPostRedisplay (); -} - -void JoinStyle (int msg) -{ - int style; - /* get the current joint style */ - style = gleGetJoinStyle (); - - /* there are four different join styles, - * and two different normal vector styles */ - switch (msg) { - case 0: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_RAW; - break; - case 1: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_ANGLE; - break; - case 2: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_CUT; - break; - case 3: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_ROUND; - break; - - case 20: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_FACET; - break; - case 21: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_EDGE; - break; - - case 99: - exit (0); - - default: - break; - } - gleSetJoinStyle (style); - glutPostRedisplay (); -} - -/* set up a light */ -GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0}; -GLfloat lightOneColor[] = {0.99, 0.99, 0.99, 1.0}; - -GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0}; -GLfloat lightTwoColor[] = {0.99, 0.99, 0.99, 1.0}; - -int -main (int argc, char * argv[]) { - - /* initialize glut */ - glutInit (&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow ("join styles"); - glutDisplayFunc (DrawStuff); - glutMotionFunc (MouseMotion); - - /* create popup menu */ - glutCreateMenu (JoinStyle); - glutAddMenuEntry ("Raw Join Style", 0); - glutAddMenuEntry ("Angle Join Style", 1); - glutAddMenuEntry ("Cut Join Style", 2); - glutAddMenuEntry ("Round Join Style", 3); - glutAddMenuEntry ("------------------", 9999); - glutAddMenuEntry ("Facet Normal Vectors", 20); - glutAddMenuEntry ("Edge Normal Vectors", 21); - glutAddMenuEntry ("------------------", 9999); - glutAddMenuEntry ("Exit", 99); - glutAttachMenu (GLUT_MIDDLE_BUTTON); - - /* initialize GL */ - glClearDepth (1.0); - glEnable (GL_DEPTH_TEST); - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - - glMatrixMode (GL_PROJECTION); - /* roughly, measured in centimeters */ - glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0); - glMatrixMode(GL_MODELVIEW); - - /* initialize lighting */ - glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); - glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); - glEnable (GL_LIGHT0); - glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); - glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); - glEnable (GL_LIGHT1); - glEnable (GL_LIGHTING); - glEnable (GL_NORMALIZE); - glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable (GL_COLOR_MATERIAL); - - InitStuff (); - - glutMainLoop (); - return 0; /* ANSI C requires main to return int. */ -} -/* ------------------ end of file -------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/mainsimple.c b/lib/glut-3.7.6/progs/gle/mainsimple.c deleted file mode 100644 index d047bb71ab1bc7dc83cccc80a7233b65f2801456..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/mainsimple.c +++ /dev/null @@ -1,82 +0,0 @@ - -/* - * FUNCTION: - * very minimal "main()" for GL demos. - * - * HISTORY: - * Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include - -extern void DrawStuff (void); -extern void InitStuff (void); - -float lastx=0; -float lasty=0; - -/* get notified of mouse motions */ -void MouseMotion (int x, int y) -{ - lastx = x; - lasty = y; - glutPostRedisplay (); -} - -/* ARGSUSED */ -void JoinStyle (int msg) -{ - exit (0); -} - -/* set up a light */ -GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0}; -GLfloat lightOneColor[] = {0.99, 0.99, 0.99, 1.0}; - -GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0}; -GLfloat lightTwoColor[] = {0.99, 0.99, 0.99, 1.0}; - -int -main (int argc, char * argv[]) { - - /* initialize glut */ - glutInit (&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow ("basic demo"); - glutDisplayFunc (DrawStuff); - glutMotionFunc (MouseMotion); - - /* create popup menu */ - glutCreateMenu (JoinStyle); - glutAddMenuEntry ("Exit", 99); - glutAttachMenu (GLUT_MIDDLE_BUTTON); - - /* initialize GL */ - glClearDepth (1.0); - glEnable (GL_DEPTH_TEST); - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - - glMatrixMode (GL_PROJECTION); - /* roughly, measured in centimeters */ - glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0); - glMatrixMode(GL_MODELVIEW); - - /* initialize lighting */ - glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); - glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); - glEnable (GL_LIGHT0); - glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); - glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); - glEnable (GL_LIGHT1); - glEnable (GL_LIGHTING); - glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable (GL_COLOR_MATERIAL); - - InitStuff (); - - glutMainLoop (); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/gle/maintex.c b/lib/glut-3.7.6/progs/gle/maintex.c deleted file mode 100644 index 5a9dc495ff1b21282748446f9bb88fb0ae6e6fb5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/maintex.c +++ /dev/null @@ -1,257 +0,0 @@ - -/* - * texture map demo scaffolding - * - * FUNCTION: - * Most of this code is required to set up OpenGL and GLUT - * - * HISTORY: - * Written by Linas Vepstas, March 1995 - */ - -/* required include files */ -#include -#include -#include -#include "texture.h" - -/* most recent mouse postion */ -float lastx = 100.0; -float lasty = 100.0; - -extern void InitStuff (void); -extern void DrawStuff (void); - -/* get notified of mouse motions */ -void MouseMotion (int x, int y) -{ - lastx = x; - lasty = y; - glutPostRedisplay (); -} - -void TextureStyle (int msg) -{ - int mode = 0; - - switch (msg) { - case 301: - glDisable (GL_TEXTURE_2D); - break; - case 302: - glEnable (GL_TEXTURE_2D); - break; - - case 501: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_FLAT; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 502: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_FLAT; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 503: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_CYL; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 504: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_CYL; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 505: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_SPH; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 506: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_SPH; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - - case 507: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_FLAT; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 508: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_MODEL_FLAT; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 509: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_CYL; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 510: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_MODEL_CYL; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 511: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_SPH; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - case 512: - mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_MODEL_SPH; - glMatrixMode (GL_TEXTURE); glLoadIdentity (); - glMatrixMode (GL_MODELVIEW); - gleTextureMode (mode); - break; - - case 701: - current_texture = check_texture; - gluBuild2DMipmaps (GL_TEXTURE_2D, 3, - current_texture -> size, - current_texture -> size, - GL_RGB, GL_UNSIGNED_BYTE, - (void *) (current_texture->pixmap)); - break; - case 702: - current_texture = barberpole_texture; - gluBuild2DMipmaps (GL_TEXTURE_2D, 3, - current_texture -> size, - current_texture -> size, - GL_RGB, GL_UNSIGNED_BYTE, - (void *) (current_texture->pixmap)); - break; - case 703: - current_texture = wild_tooth_texture; - gluBuild2DMipmaps (GL_TEXTURE_2D, 3, - current_texture -> size, - current_texture -> size, - GL_RGB, GL_UNSIGNED_BYTE, - (void *) (current_texture->pixmap)); - break; - case 704: - current_texture = planet_texture; - gluBuild2DMipmaps (GL_TEXTURE_2D, 3, - current_texture -> size, - current_texture -> size, - GL_RGB, GL_UNSIGNED_BYTE, - (void *) (current_texture->pixmap)); - break; - - case 99: - exit (0); - default: - break; - } - glutPostRedisplay(); -} - -/* set up a light */ -GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0}; -GLfloat lightOneColor[] = {0.99, 0.99, 0.99, 1.0}; - -GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0}; -GLfloat lightTwoColor[] = {0.99, 0.99, 0.99, 1.0}; - -int -main (int argc, char * argv[]) { - - /* initialize glut */ - glutInit (&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow ("texture"); - glutDisplayFunc (DrawStuff); - glutMotionFunc (MouseMotion); - - /* create popup menu */ - glutCreateMenu (TextureStyle); - glutAddMenuEntry ("Texture Off", 301); - glutAddMenuEntry ("Texture On", 302); - glutAddMenuEntry ("--------------", 9999); - glutAddMenuEntry ("Vertex Flat", 501); - glutAddMenuEntry ("Normal Flat", 502); - glutAddMenuEntry ("Vertex Cylinder", 503); - glutAddMenuEntry ("Normal Cylinder", 504); - glutAddMenuEntry ("Vertex Sphere", 505); - glutAddMenuEntry ("Normal Sphere", 506); - glutAddMenuEntry ("--------------", 9999); - glutAddMenuEntry ("Model Vertex Flat", 507); - glutAddMenuEntry ("Model Normal Flat", 508); - glutAddMenuEntry ("Model Vertex Cylinder", 509); - glutAddMenuEntry ("Model Normal Cylinder", 510); - glutAddMenuEntry ("Model Vertex Sphere", 511); - glutAddMenuEntry ("Model Normal Sphere", 512); - glutAddMenuEntry ("--------------", 9999); - glutAddMenuEntry ("Check Texture", 701); - glutAddMenuEntry ("Barberpole Texture", 702); - glutAddMenuEntry ("Wild Tooth Texture", 703); - glutAddMenuEntry ("Molten Lava Texture", 704); - glutAddMenuEntry ("--------------", 9999); - glutAddMenuEntry ("Exit", 99); - glutAttachMenu (GLUT_MIDDLE_BUTTON); - - /* initialize GL */ - glClearDepth (1.0); - glEnable (GL_DEPTH_TEST); - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - - glMatrixMode (GL_PROJECTION); - /* roughly, measured in centimeters */ - glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0); - glMatrixMode(GL_MODELVIEW); - - /* initialize lighting */ - glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); - glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); - glEnable (GL_LIGHT0); - glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); - glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); - glEnable (GL_LIGHT1); - glEnable (GL_LIGHTING); - glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable (GL_COLOR_MATERIAL); - glColor3f (0.8, 0.3, 0.6); - - /* initialize and enable texturing */ - setup_textures (); - gluBuild2DMipmaps (GL_TEXTURE_2D, 3, - current_texture -> size, - current_texture -> size, - GL_RGB, GL_UNSIGNED_BYTE, - (void *) (current_texture->pixmap)); - - glMatrixMode (GL_TEXTURE); - glLoadIdentity (); - glScalef (1.0, 0.1, 1.0); - glMatrixMode (GL_MODELVIEW); - - glEnable (GL_TEXTURE_2D); -/* - some stuff to play with .... - glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glEnable (GL_TEXTURE_GEN_S); - glEnable (GL_TEXTURE_GEN_T); -*/ - - gleTextureMode (GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_CYL); - - InitStuff (); - - glutMainLoop (); - return 0; /* ANSI C requires main to return int. */ -} - -/* -------------------- end of file -------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/martini.c b/lib/glut-3.7.6/progs/gle/martini.c deleted file mode 100644 index 9aaa47795b1227b11b6f9fa51b2eb675dde471d1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/martini.c +++ /dev/null @@ -1,250 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* compile: cc -o martini martini.c trackball.c -lgle -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include -#include -#include "trackball.h" - -int spinning = 0, moving = 0; -int beginx, beginy; -int W = 300, H = 300; -float curquat[4]; -float lastquat[4]; -int newModel = 1; -/* *INDENT-OFF* */ -GLfloat lightZeroPosition[] = {10.0, 4.0, 10.0, 1.0}; -GLfloat lightZeroColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */ -GLfloat lightOnePosition[] = {-1.0, -2.0, 1.0, 0.0}; -GLfloat lightOneColor[] = {0.6, 0.3, 0.2, 1.0}; /* red-tinted */ -/* *INDENT-ON* */ - -void -recalcModelView(void) -{ - GLfloat m[4][4]; - - glPopMatrix(); - glPushMatrix(); - build_rotmatrix(m, curquat); - glMultMatrixf(&m[0][0]); - newModel = 0; -} - -/* the arrays in which we will store out polyline */ -#define NPTS 25 -double points[NPTS][3]; -double radii[NPTS]; -int idx = 0; - -#define REV(r, y) { \ - points[idx][0] = 0.0; \ - points[idx][1] = y - 3.0; \ - points[idx][2] = 0.0; \ - radii[idx] = r; \ - idx ++; \ -} - -void -InitStuff(void) -{ - /* Initialize the join style here, no capping. */ - gleSetJoinStyle(TUBE_NORM_EDGE | TUBE_JN_ANGLE); - gleSetNumSlices(30); - REV(0.0, 5.0); - REV(0.0, 4.0); - REV(2.5, 6.1); - REV(2.75, 6.0); - REV(2.75, 5.75); - REV(0.25, 3.75); - REV(0.25, 2.66); - REV(0.4, 2.5); - REV(0.3, 2.2); - REV(0.4, 1.9); - REV(0.25, 1.7); - REV(0.25, 0.6); - REV(0.25, 0.101); - REV(2.0, 0.1); - REV(2.0, 0.0); - REV(0.0, 0.05); - REV(0.0, -1.0); - - /* Capture rendering of martini glass in a display list. */ - glNewList(1, GL_COMPILE); - glFrontFace(GL_CW); - glePolyCone(4, points, NULL, radii); - glFrontFace(GL_CCW); - glePolyCone(15, &points[1], NULL, &radii[1]); - glFrontFace(GL_CW); - glePolyCone(4, &points[13], NULL, &radii[13]); - glEndList(); -} - -void -redraw(void) -{ - if (newModel) - recalcModelView(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - /* Draw the martini glass. */ - glCallList(1); - glutSwapBuffers(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - W = w; - H = h; -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - spinning = 0; - glutIdleFunc(NULL); - moving = 1; - beginx = x; - beginy = y; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - } -} - -void -animate(void) -{ - add_quats(lastquat, curquat, curquat); - newModel = 1; - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - if (moving) { - trackball(lastquat, - (2.0 * beginx - W) / W, - (H - 2.0 * beginy) / H, - (2.0 * x - W) / W, - (H - 2.0 * y) / H - ); - beginx = x; - beginy = y; - spinning = 1; - glutIdleFunc(animate); - } -} - -GLboolean lightZeroSwitch = GL_TRUE, lightOneSwitch = GL_TRUE; - -void -controlLights(int value) -{ - switch (value) { - case 1: - lightZeroSwitch = !lightZeroSwitch; - if (lightZeroSwitch) { - glEnable(GL_LIGHT0); - } else { - glDisable(GL_LIGHT0); - } - break; - case 2: - lightOneSwitch = !lightOneSwitch; - if (lightOneSwitch) { - glEnable(GL_LIGHT1); - } else { - glDisable(GL_LIGHT1); - } - break; -#ifdef GL_MULTISAMPLE_SGIS - case 3: - if (glIsEnabled(GL_MULTISAMPLE_SGIS)) { - glDisable(GL_MULTISAMPLE_SGIS); - } else { - glEnable(GL_MULTISAMPLE_SGIS); - } - break; -#endif - case 4: - glutFullScreen(); - break; - case 5: - exit(0); - break; - } - glutPostRedisplay(); -} - -void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (spinning) - glutIdleFunc(animate); - } else { - if (spinning) - glutIdleFunc(NULL); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - trackball(curquat, 0.0, 0.0, 0.0, 0.0); - glutCreateWindow("martini"); - glutDisplayFunc(redraw); - glutReshapeFunc(myReshape); - glutVisibilityFunc(vis); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutCreateMenu(controlLights); - glutAddMenuEntry("Toggle right light", 1); - glutAddMenuEntry("Toggle left light", 2); - if (glutGet(GLUT_WINDOW_NUM_SAMPLES) > 0) { - glutAddMenuEntry("Toggle multisampling", 3); - glutSetWindowTitle("martini (multisample capable)"); - } - glutAddMenuEntry("Full screen", 4); - glutAddMenuEntry("Quit", 5); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 40.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 15.0, /* eye is at (0,0,15) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - glPushMatrix(); /* dummy push so we can pop on model recalc */ - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); - glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1); - glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05); - glLightfv(GL_LIGHT1, GL_POSITION, lightOnePosition); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightOneColor); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - InitStuff(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/gle/martini.dsp b/lib/glut-3.7.6/progs/gle/martini.dsp deleted file mode 100644 index 9b2ca83acf7a14444be3c4c3e9c4d192bb4fadd0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/martini.dsp +++ /dev/null @@ -1,97 +0,0 @@ -# Microsoft Developer Studio Project File - Name="martini" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=martini - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "martini.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "martini.mak" CFG="martini - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "martini - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "martini - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "martini - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "martini - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "martini - Win32 Release" -# Name "martini - Win32 Debug" -# Begin Source File - -SOURCE=.\martini.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.c -# End Source File -# Begin Source File - -SOURCE=.\trackball.h -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/screw.c b/lib/glut-3.7.6/progs/gle/screw.c deleted file mode 100644 index 649db432ea4e3f6793e7d650a8dd88766f6c0513..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/screw.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * screw.c - * - * FUNCTION: - * Draws a screw shape. - * - * HISTORY: - * -- created by Linas Vepstas October 1991 - * -- heavily modified to draw more texas shapes, Feb 1993, Linas - * -- converted to use GLUT -- December 1995, Linas - * - */ - -/* required include files */ -#include -#include -#include -#include - -/* =========================================================== */ - -#define SCALE 1.3 -#define CONTOUR(x,y) { \ - double ax, ay, alen; \ - contour[i][0] = SCALE * (x); \ - contour[i][1] = SCALE * (y); \ - if (i!=0) { \ - ax = contour[i][0] - contour[i-1][0]; \ - ay = contour[i][1] - contour[i-1][1]; \ - alen = 1.0 / sqrt (ax*ax + ay*ay); \ - ax *= alen; ay *= alen; \ - norms [i-1][0] = ay; \ - norms [i-1][1] = -ax; \ - } \ - i++; \ -} - -#define NUM_PTS (25) - -double contour [NUM_PTS][2]; -double norms [NUM_PTS][2]; - -void init_contour (void) -{ - int i; - - /* outline of extrusion */ - i=0; - CONTOUR (1.0, 1.0); - CONTOUR (1.0, 2.9); - CONTOUR (0.9, 3.0); - CONTOUR (-0.9, 3.0); - CONTOUR (-1.0, 2.9); - - CONTOUR (-1.0, 1.0); - CONTOUR (-2.9, 1.0); - CONTOUR (-3.0, 0.9); - CONTOUR (-3.0, -0.9); - CONTOUR (-2.9, -1.0); - - CONTOUR (-1.0, -1.0); - CONTOUR (-1.0, -2.9); - CONTOUR (-0.9, -3.0); - CONTOUR (0.9, -3.0); - CONTOUR (1.0, -2.9); - - CONTOUR (1.0, -1.0); - CONTOUR (2.9, -1.0); - CONTOUR (3.0, -0.9); - CONTOUR (3.0, 0.9); - CONTOUR (2.9, 1.0); - - CONTOUR (1.0, 1.0); /* repeat so that last normal is computed */ -} - -/* =========================================================== */ - -extern float lastx; -extern float lasty; - -extern void TextureStyle (int msg); - -void InitStuff (void) -{ - int style; - - /* pick model-vertex-cylinder coords for texture mapping */ - TextureStyle (509); - - /* configure the pipeline */ - style = TUBE_JN_CAP; - style |= TUBE_CONTOUR_CLOSED; - style |= TUBE_NORM_FACET; - style |= TUBE_JN_ANGLE; - gleSetJoinStyle (style); - - lastx = 121.0; - lasty = 121.0; - - init_contour(); -} - -/* =========================================================== */ - -void DrawStuff (void) { - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f (0.5, 0.6, 0.6); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotatef (130.0, 0.0, 1.0, 0.0); - glRotatef (65.0, 1.0, 0.0, 0.0); - - /* draw the brand and the handle */ - gleScrew (20, contour, norms, - NULL, -6.0, 9.0, lasty); - - glPopMatrix (); - glutSwapBuffers (); -} - -/* ===================== END OF FILE ================== */ diff --git a/lib/glut-3.7.6/progs/gle/screw.dsp b/lib/glut-3.7.6/progs/gle/screw.dsp deleted file mode 100644 index 932fdee4141515ffd1e93e7c0c7df8c0042eb9fb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/screw.dsp +++ /dev/null @@ -1,97 +0,0 @@ -# Microsoft Developer Studio Project File - Name="screw" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=screw - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "screw.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "screw.mak" CFG="screw - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "screw - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "screw - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "screw - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "screw - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "screw - Win32 Release" -# Name "screw - Win32 Debug" -# Begin Source File - -SOURCE=.\maintex.c -# End Source File -# Begin Source File - -SOURCE=.\screw.c -# End Source File -# Begin Source File - -SOURCE=.\texture.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/taper.c b/lib/glut-3.7.6/progs/gle/taper.c deleted file mode 100644 index 0015d66e42c4dd13279eec87784ca3e362b284db..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/taper.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * taper.c - * - * FUNCTION: - * Draws a tapered screw shape. - * - * HISTORY: - * -- created by Linas Vepstas October 1991 - * -- heavily modified to draw more texas shapes, Feb 1993, Linas - * -- converted to use GLUT -- December 1995, Linas - * - */ - -/* required include files */ -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* =========================================================== */ - -#define SCALE 3.33333 -#define CONTOUR(x,y) { \ - double ax, ay, alen; \ - contour[i][0] = SCALE * (x); \ - contour[i][1] = SCALE * (y); \ - if (i!=0) { \ - ax = contour[i][0] - contour[i-1][0]; \ - ay = contour[i][1] - contour[i-1][1]; \ - alen = 1.0 / sqrt (ax*ax + ay*ay); \ - ax *= alen; ay *= alen; \ - norms [i-1][0] = ay; \ - norms [i-1][1] = -ax; \ - } \ - i++; \ -} - -#define NUM_PTS (25) - -double contour [NUM_PTS][2]; -double norms [NUM_PTS][2]; - -void init_contour (void) -{ - int i; - - /* outline of extrusion */ - i=0; - CONTOUR (1.0, 1.0); - CONTOUR (1.0, 2.9); - CONTOUR (0.9, 3.0); - CONTOUR (-0.9, 3.0); - CONTOUR (-1.0, 2.9); - - CONTOUR (-1.0, 1.0); - CONTOUR (-2.9, 1.0); - CONTOUR (-3.0, 0.9); - CONTOUR (-3.0, -0.9); - CONTOUR (-2.9, -1.0); - - CONTOUR (-1.0, -1.0); - CONTOUR (-1.0, -2.9); - CONTOUR (-0.9, -3.0); - CONTOUR (0.9, -3.0); - CONTOUR (1.0, -2.9); - - CONTOUR (1.0, -1.0); - CONTOUR (2.9, -1.0); - CONTOUR (3.0, -0.9); - CONTOUR (3.0, 0.9); - CONTOUR (2.9, 1.0); - - CONTOUR (1.0, 1.0); /* repeat so that last normal is computed */ -} - -/* =========================================================== */ - -#define PSIZE 40 -double path[PSIZE][3]; -double twist[PSIZE]; -double taper[PSIZE]; - -void init_taper (void) { - int j; - double z, deltaz; - double ang, dang; - - z = -10.0; - deltaz = 0.5; - - ang = 0.0; - dang = 20.0; - for (j=0; j<40; j++) { - path[j][0] = 0x0; - path[j][1] = 0x0; - path[j][2] = z; - - twist[j] = ang; - ang += dang; - - taper[j] = 0.1 * sqrt (9.51*9.51 - z*z); - - z += deltaz; - } - - taper[0] = taper[1]; - taper[39] = taper[38]; - -} - -/* =========================================================== */ - -extern float lastx; -extern float lasty; - -void InitStuff (void) -{ - int style; - - /* configure the pipeline */ - style = TUBE_JN_CAP; - style |= TUBE_CONTOUR_CLOSED; - style |= TUBE_NORM_FACET; - style |= TUBE_JN_ANGLE; - gleSetJoinStyle (style); - - lastx = 121.0; - lasty = 121.0; - - init_contour(); - init_taper(); -} - -/* =========================================================== */ - -void gleTaper (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble taper[], - gleDouble twist[]) -{ - int j; - gleAffine *xforms; - double co, si, angle; - - /* malloc the extrusion array and the twist array */ - xforms = (gleAffine *) malloc (npoints * sizeof(gleAffine)); - - for (j=0; j -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=taper - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "taper.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "taper.mak" CFG="taper - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "taper - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "taper - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "taper - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "taper - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "taper - Win32 Release" -# Name "taper - Win32 Debug" -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# Begin Source File - -SOURCE=.\taper.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/texas.c b/lib/glut-3.7.6/progs/gle/texas.c deleted file mode 100644 index d26a41bf2a23d0a84ebece77d05f6aaccae5a642..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/texas.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * texas.c - * - * FUNCTION: - * Draws a brand in the shape of Texas. Both the handle, and the - * cross-section of the brand are in the shape of Texas. - * - * Note that the contours are specified in clockwise order. - * Thus, enabling backfacing polygon removal will cause the front - * polygons to disappear. - * - * HISTORY: - * -- created by Linas Vepstas October 1991 - * -- heavily modified to draw more texas shapes, Feb 1993, Linas - * -- converted to use GLUT -- December 1995, Linas - * - */ - -/* required include files */ -#include -#include -#include -#include - -/* =========================================================== */ - -#define HNUM 4 -double brand_points[HNUM][3]; -float brand_colors [HNUM][3]; - -#define TSCALE 4.0 - -#define BPTS(x,y,z) { \ - brand_points[i][0] = TSCALE * (x); \ - brand_points[i][1] = TSCALE * (y); \ - brand_points[i][2] = TSCALE * (z); \ - i++; \ -} - -#define BCOLS(r,g,b) { \ - brand_colors[i][0] = (r); \ - brand_colors[i][1] = (g); \ - brand_colors[i][2] = (b); \ - i++; \ -} - -#define NUMPOINTS 18 -double tspine[NUMPOINTS][3]; -float tcolors [NUMPOINTS][3]; - -#define TPTS(x,y) { \ - tspine[i][0] = TSCALE * (x); \ - tspine[i][1] = TSCALE * (y); \ - tspine[i][2] = TSCALE * (0.0); \ - i++; \ -} - -#define TCOLS(r,g,b) { \ - tcolors[i][0] = (r); \ - tcolors[i][1] = (g); \ - tcolors[i][2] = (b); \ - i++; \ -} - -/* =========================================================== */ - -void init_spine (void) -{ - int i; - int ir, ig, ib; - float r, g, b; - - i=0; - TPTS (-1.5, 2.0); /* panhandle */ - TPTS (-0.75, 2.0); - TPTS (-0.75, 1.38); - TPTS (-0.5, 1.25); - TPTS (0.88, 1.12); - TPTS (1.0, 0.62); - TPTS (1.12, 0.1); - TPTS (0.5, -0.5); - TPTS (0.2, -1.12); /* corpus */ - TPTS (0.3, -1.5); /* brownsville */ - TPTS (-0.25, -1.45); - TPTS (-1.06, -0.3); - TPTS (-1.38, -0.3); - TPTS (-1.65, -0.6); - TPTS (-2.5, 0.5); /* midland */ - TPTS (-1.5, 0.5); - TPTS (-1.5, 2.0); /* panhandle */ - TPTS (-0.75, 2.0); - - ir = ig = ib = 0; - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texas - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texas.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texas.mak" CFG="texas - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texas - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texas - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texas - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texas - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texas - Win32 Release" -# Name "texas - Win32 Debug" -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# Begin Source File - -SOURCE=.\texas.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/texture.c b/lib/glut-3.7.6/progs/gle/texture.c deleted file mode 100644 index b22b3e58686b2846fc69cf5d9cc191e9bbb4d3b8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/texture.c +++ /dev/null @@ -1,150 +0,0 @@ - -/* - * texture.c - * - * FUNCTION: - * texture mapping hack - * - * HISTORY: - * Created by Linas Vepstas April 1994 - */ - -#include -#include -#include "texture.h" - -Texture * current_texture = 0x0; - -Texture * planet_texture = 0x0; -Texture * check_texture = 0x0; -Texture * barberpole_texture = 0x0; -Texture * wild_tooth_texture = 0x0; - -/* ======================================================= */ - -#define TEXTURE_SIZE 256 - -Texture * create_planet_texture (void) { - int i, j; - Texture * tex; - unsigned char * pixmap; - - pixmap = (unsigned char *) malloc (TEXTURE_SIZE*TEXTURE_SIZE*3*sizeof (unsigned char)); - - for (i=0; i< TEXTURE_SIZE; i++) { - for (j=0; j< TEXTURE_SIZE; j++) { - - int mi = i - TEXTURE_SIZE/2; - int mj = j - TEXTURE_SIZE/2; - - pixmap [3*TEXTURE_SIZE*i + 3*j] = (100*mi*mi + 40*mj*mj) >> 8; - pixmap [3*TEXTURE_SIZE*i + 3*j + 1] = (10*mi*mi + 4*mj*mj) ; - pixmap [3*TEXTURE_SIZE*i + 3*j + 2] = (1000*mi*mi + 400*mj*mj) >> 16 ; - - } - } - - tex = (Texture *) malloc (sizeof (Texture)); - tex -> size = TEXTURE_SIZE; - tex -> pixmap = pixmap; - - return tex; -} - -/* ======================================================= */ - -Texture * create_check_texture (void) { - int i, j; - Texture * tex; - unsigned char * pixmap; - - pixmap = (unsigned char *) malloc (TEXTURE_SIZE*TEXTURE_SIZE*3*sizeof (unsigned char)); - - for (i=0; i< TEXTURE_SIZE; i++) { - for (j=0; j< TEXTURE_SIZE; j++) { - - pixmap [3*TEXTURE_SIZE*i + 3*j] = - 255 * ( (((i)/32) %2) == (((j)/32) %2)); - pixmap [3*TEXTURE_SIZE*i + 3*j + 1] = - 255 * ( (((i)/32) %2) == (((j)/32) %2)); - pixmap [3*TEXTURE_SIZE*i + 3*j + 2] = - 255 * ( (((i)/32) %2) == (((j)/32) %2)); - } - } - - tex = (Texture *) malloc (sizeof (Texture)); - tex -> size = TEXTURE_SIZE; - tex -> pixmap = pixmap; - - return tex; -} - -/* ======================================================= */ - -Texture * create_barberpole_texture (void) { - int i, j; - Texture * tex; - unsigned char * pixmap; - - pixmap = (unsigned char *) malloc (TEXTURE_SIZE*TEXTURE_SIZE*3*sizeof (unsigned char)); - - for (i=0; i< TEXTURE_SIZE; i++) { - for (j=0; j< TEXTURE_SIZE; j++) { - pixmap [3*TEXTURE_SIZE*i + 3*j] = 255 * (((i+j)/32) %2); - pixmap [3*TEXTURE_SIZE*i + 3*j + 1] = 255 * (((i+j)/32) %2); - pixmap [3*TEXTURE_SIZE*i + 3*j + 2] = 255 * (((i+j)/32) %2); - - } - } - - tex = (Texture *) malloc (sizeof (Texture)); - tex -> size = TEXTURE_SIZE; - tex -> pixmap = pixmap; - - return tex; -} - -/* ======================================================= */ - -Texture * create_wild_tooth_texture (void) { - int i, j; - Texture * tex; - unsigned char * pixmap; - - pixmap = (unsigned char *) malloc (TEXTURE_SIZE*TEXTURE_SIZE*3*sizeof (unsigned char)); - - for (i=0; i< TEXTURE_SIZE; i++) { - for (j=0; j< TEXTURE_SIZE; j++) { - - pixmap [3*TEXTURE_SIZE*i + 3*j] = - 255 * ( (((i+j)/32) %2) == (((i-j)/32) %2)); - pixmap [3*TEXTURE_SIZE*i + 3*j + 1] = - 255 * ( (((i+j)/32) %2) == (((i-j)/32) %2)); - pixmap [3*TEXTURE_SIZE*i + 3*j + 2] = - 255 * ( (((i+j)/32) %2) == (((i-j)/32) %2)); - - } - } - - tex = (Texture *) malloc (sizeof (Texture)); - tex -> size = TEXTURE_SIZE; - tex -> pixmap = pixmap; - - return tex; -} - -/* ======================================================= */ - -void setup_textures (void) { - - planet_texture = create_planet_texture (); - check_texture = create_check_texture (); - barberpole_texture = create_barberpole_texture (); - wild_tooth_texture = create_wild_tooth_texture (); - - current_texture = wild_tooth_texture; - current_texture = check_texture; -} - - -/* ================== END OF FILE ========================= */ diff --git a/lib/glut-3.7.6/progs/gle/texture.h b/lib/glut-3.7.6/progs/gle/texture.h deleted file mode 100644 index 402225d2de7cbfb8fda60759e8af98053627001e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/texture.h +++ /dev/null @@ -1,26 +0,0 @@ - -/* - * texture.h - * - * FUNCTION: - * texture mapping hack - * - * HISTORY: - * Created by Linas Vepstas April 1994 - */ - -typedef struct { - int size; - unsigned char * pixmap; -} Texture; - -extern Texture * current_texture; - -extern Texture * planet_texture; -extern Texture * check_texture; -extern Texture * barberpole_texture; -extern Texture * wild_tooth_texture; - -extern void setup_textures (void); - -/* ================== END OF FILE ========================= */ diff --git a/lib/glut-3.7.6/progs/gle/trackball.c b/lib/glut-3.7.6/progs/gle/trackball.c deleted file mode 100644 index cce919b5ac1fa3e48ab6af59733945f5a489afe7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/trackball.c +++ /dev/null @@ -1,346 +0,0 @@ -#include -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * Trackball code: - * - * Implementation of a virtual trackball. - * Implemented by Gavin Bell, lots of ideas from Thant Tessman and - * the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129. - * - * Vector manip code: - * - * Original code from: - * David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli - * - * Much mucking with by: - * Gavin Bell - */ -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#endif -#include -#include "trackball.h" - -/* - * This size should really be based on the distance from the center of - * rotation to the point on the object underneath the mouse. That - * point would then track the mouse as closely as possible. This is a - * simple example, though, so that is left as an Exercise for the - * Programmer. - */ -#define TRACKBALLSIZE (0.8f) - -/* - * Local function prototypes (not defined in trackball.h) - */ -static float tb_project_to_sphere(float, float, float); -static void normalize_quat(float [4]); - -void -vzero(float *v) -{ - v[0] = 0.0; - v[1] = 0.0; - v[2] = 0.0; -} - -void -vset(float *v, float x, float y, float z) -{ - v[0] = x; - v[1] = y; - v[2] = z; -} - -void -vsub(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] - src2[0]; - dst[1] = src1[1] - src2[1]; - dst[2] = src1[2] - src2[2]; -} - -void -vcopy(const float *v1, float *v2) -{ - register int i; - for (i = 0 ; i < 3 ; i++) - v2[i] = v1[i]; -} - -void -vcross(const float *v1, const float *v2, float *cross) -{ - float temp[3]; - - temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); - vcopy(temp, cross); -} - -float -vlength(const float *v) -{ - return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); -} - -void -vscale(float *v, float div) -{ - v[0] *= div; - v[1] *= div; - v[2] *= div; -} - -void -vnormal(float *v) -{ - vscale(v,1.0/vlength(v)); -} - -float -vdot(const float *v1, const float *v2) -{ - return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; -} - -void -vadd(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] + src2[0]; - dst[1] = src1[1] + src2[1]; - dst[2] = src1[2] + src2[2]; -} - -/* - * Ok, simulate a track-ball. Project the points onto the virtual - * trackball, then figure out the axis of rotation, which is the cross - * product of P1 P2 and O P1 (O is the center of the ball, 0,0,0) - * Note: This is a deformed trackball-- is a trackball in the center, - * but is deformed into a hyperbolic sheet of rotation away from the - * center. This particular function was chosen after trying out - * several variations. - * - * It is assumed that the arguments to this routine are in the range - * (-1.0 ... 1.0) - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y) -{ - float a[3]; /* Axis of rotation */ - float phi; /* how much to rotate about axis */ - float p1[3], p2[3], d[3]; - float t; - - if (p1x == p2x && p1y == p2y) { - /* Zero rotation */ - vzero(q); - q[3] = 1.0; - return; - } - - /* - * First, figure out z-coordinates for projection of P1 and P2 to - * deformed sphere - */ - vset(p1,p1x,p1y,tb_project_to_sphere(TRACKBALLSIZE,p1x,p1y)); - vset(p2,p2x,p2y,tb_project_to_sphere(TRACKBALLSIZE,p2x,p2y)); - - /* - * Now, we want the cross product of P1 and P2 - */ - vcross(p2,p1,a); - - /* - * Figure out how much to rotate around that axis. - */ - vsub(p1,p2,d); - t = vlength(d) / (2.0*TRACKBALLSIZE); - - /* - * Avoid problems with out-of-control values... - */ - if (t > 1.0) t = 1.0; - if (t < -1.0) t = -1.0; - phi = 2.0 * asin(t); - - axis_to_quat(a,phi,q); -} - -/* - * Given an axis and angle, compute quaternion. - */ -void -axis_to_quat(float a[3], float phi, float q[4]) -{ - vnormal(a); - vcopy(a,q); - vscale(q,sin(phi/2.0)); - q[3] = cos(phi/2.0); -} - -/* - * Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet - * if we are away from the center of the sphere. - */ -static float -tb_project_to_sphere(float r, float x, float y) -{ - float d, t, z; - - d = sqrt(x*x + y*y); - if (d < r * 0.70710678118654752440) { /* Inside sphere */ - z = sqrt(r*r - d*d); - } else { /* On hyperbola */ - t = r / 1.41421356237309504880; - z = t*t / d; - } - return z; -} - -/* - * Given two rotations, e1 and e2, expressed as quaternion rotations, - * figure out the equivalent single rotation and stuff it into dest. - * - * This routine also normalizes the result every RENORMCOUNT times it is - * called, to keep error from creeping in. - * - * NOTE: This routine is written so that q1 or q2 may be the same - * as dest (or each other). - */ - -#define RENORMCOUNT 97 - -void -negate_quat(float q[4], float nq[4]) -{ - nq[0] = -q[0]; - nq[1] = -q[1]; - nq[2] = -q[2]; - nq[3] = q[3]; -} - -void -add_quats(float q1[4], float q2[4], float dest[4]) -{ - static int count=0; - float t1[4], t2[4], t3[4]; - float tf[4]; - -#if 0 -printf("q1 = %f %f %f %f\n", q1[0], q1[1], q1[2], q1[3]); -printf("q2 = %f %f %f %f\n", q2[0], q2[1], q2[2], q2[3]); -#endif - - vcopy(q1,t1); - vscale(t1,q2[3]); - - vcopy(q2,t2); - vscale(t2,q1[3]); - - vcross(q2,q1,t3); - vadd(t1,t2,tf); - vadd(t3,tf,tf); - tf[3] = q1[3] * q2[3] - vdot(q1,q2); - -#if 0 -printf("tf = %f %f %f %f\n", tf[0], tf[1], tf[2], tf[3]); -#endif - - dest[0] = tf[0]; - dest[1] = tf[1]; - dest[2] = tf[2]; - dest[3] = tf[3]; - - if (++count > RENORMCOUNT) { - count = 0; - normalize_quat(dest); - } -} - -/* - * Quaternions always obey: a^2 + b^2 + c^2 + d^2 = 1.0 - * If they don't add up to 1.0, dividing by their magnitued will - * renormalize them. - * - * Note: See the following for more information on quaternions: - * - * - Shoemake, K., Animating rotation with quaternion curves, Computer - * Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985. - * - Pletinckx, D., Quaternion calculus as a basic tool in computer - * graphics, The Visual Computer 5, 2-13, 1989. - */ -static void -normalize_quat(float q[4]) -{ - int i; - float mag; - - mag = sqrt(q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); - for (i = 0; i < 4; i++) q[i] /= mag; -} - -/* - * Build a rotation matrix, given a quaternion rotation. - * - */ -void -build_rotmatrix(float m[4][4], float q[4]) -{ - m[0][0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2]); - m[0][1] = 2.0 * (q[0] * q[1] - q[2] * q[3]); - m[0][2] = 2.0 * (q[2] * q[0] + q[1] * q[3]); - m[0][3] = 0.0; - - m[1][0] = 2.0 * (q[0] * q[1] + q[2] * q[3]); - m[1][1]= 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0]); - m[1][2] = 2.0 * (q[1] * q[2] - q[0] * q[3]); - m[1][3] = 0.0; - - m[2][0] = 2.0 * (q[2] * q[0] - q[1] * q[3]); - m[2][1] = 2.0 * (q[1] * q[2] + q[0] * q[3]); - m[2][2] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0]); - m[2][3] = 0.0; - - m[3][0] = 0.0; - m[3][1] = 0.0; - m[3][2] = 0.0; - m[3][3] = 1.0; -} - diff --git a/lib/glut-3.7.6/progs/gle/trackball.h b/lib/glut-3.7.6/progs/gle/trackball.h deleted file mode 100644 index 61a1d8c354cd97ec7705fb0881b2de1ffcc151d3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/trackball.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * trackball.h - * A virtual trackball implementation - * Written by Gavin Bell for Silicon Graphics, November 1988. - */ - -/* - * Pass the x and y coordinates of the last and current positions of - * the mouse, scaled so they are from (-1.0 ... 1.0). - * - * The resulting rotation is returned as a quaternion rotation in the - * first paramater. - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y); - -void -negate_quat(float *q, float *qn); - -/* - * Given two quaternions, add them together to get a third quaternion. - * Adding quaternions to get a compound rotation is analagous to adding - * translations to get a compound translation. When incrementally - * adding rotations, the first argument here should be the new - * rotation, the second and third the total rotation (which will be - * over-written with the resulting new total rotation). - */ -void -add_quats(float *q1, float *q2, float *dest); - -/* - * A useful function, builds a rotation matrix in Matrix based on - * given quaternion. - */ -void -build_rotmatrix(float m[4][4], float q[4]); - -/* - * This function computes a quaternion based on an axis (defined by - * the given vector) and an angle about which to rotate. The angle is - * expressed in radians. The result is put into the third argument. - */ -void -axis_to_quat(float a[3], float phi, float q[4]); - diff --git a/lib/glut-3.7.6/progs/gle/transport.c b/lib/glut-3.7.6/progs/gle/transport.c deleted file mode 100644 index e634add06580cc27c3816707db6469241a6f7f2e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/transport.c +++ /dev/null @@ -1,379 +0,0 @@ -/* - * transport.c - * - * FUNCTION: - * Illustrate principle of shearing vs. parallel transport. - * - * HISTORY: - * -- created by Linas Vepstas October 1991 - * -- C++ and OO playing around Linas Vepstas June 1993 - * -- converted to use GLUT -- December 1995, Linas - * - */ - -/* required include files */ -#include -#include -#include -#include - -/* =========================================================== */ - -#define SET_RGB(rgb,r,g,b) { \ - rgb[0]=r; rgb[1]=g; rgb[2]=b; \ -} - -typedef struct _material { - - /* public data areas */ - float emission[3]; - float ambient[3]; - float diffuse[3]; - float specular[3]; - float shininess; - -} Material; - -#define SET_EMIS(self,r,g,b) { SET_RGB(self->emission, r,g,b); } -#define SET_AMB(self,r,g,b) { SET_RGB(self->ambient, r,g,b); } -#define SET_DIFF(self,r,g,b) { SET_RGB(self->diffuse, r,g,b); } -#define SET_SPEC(self,r,g,b) { SET_RGB(self->specular, r,g,b); } - -/* =========================================================== */ - -#ifdef NOTNOW -class goPolyline { - public: - int dimension; - int numPoints; - double * pts; - - private: - int nfree; - - public: - goPolyline (); // by default, construct 3D polyline - goPolyline (int); // construct arbitrary dimension polyline - void Print (); - void AddPoint (double x, double y); - void AddNormal (double x, double y); - void MakeFacetNormal (); -}; -#endif /* NOTNOW */ - -typedef double SVec[2]; - -typedef struct contour { - - /* public data areas */ - int numContourPoints; - int numContourNorms; - SVec * pts; - SVec * norms; - double up[3]; - -} Contour; - -#define pfree numContourPoints -#define nfree numContourNorms - -#define NEW_CONTOUR(self) { \ - self -> pts = (SVec *) malloc (100*sizeof (double)); \ - self -> norms = (SVec *) malloc (100*sizeof (double)); \ - self -> pfree = 0; \ - self -> nfree = 0; \ -} - -#define ADD_POINT(self,x,y) { \ - self -> pts[self->pfree][0] = x; \ - self -> pts[self->pfree][1] = y; \ - self->pfree ++; \ -} - -#define ADD_NORMAL(self,x,y) { \ - self -> norms[self->nfree][0] = x; \ - self -> norms[self->nfree][1] = y; \ - self->nfree ++; \ -} - -#define MAKE_NORMAL(self) { \ - float dx, dy, w; \ - dx = self -> pts [self->pfree -1][0]; \ - dx -= self -> pts [self->pfree -2][0]; \ - dy = self -> pts [self->pfree -1][1]; \ - dy -= self -> pts [self->pfree -2][1]; \ - w = 1.0 / sqrt (dx*dx+dy*dy); \ - dx *= w; \ - dy *= w; \ - self -> norms[self->nfree][0] = -dy; \ - self -> norms[self->nfree][1] = dx; \ - self -> nfree ++; \ -} - -/* =========================================================== */ -/* class gleExtrustion */ - -typedef struct _extrusion { - Material *material; /* material description */ - Contour *contour; /* 2D contour */ - - double radius; /* for polycylinder, torus */ - double startRadius; /* spiral starts in x-y plane */ - double drdTheta; /* change in radius per revolution */ - double startZ; /* starting z value */ - double dzdTheta; /* change in Z per revolution */ - double startXform[2][3]; /* starting contour affine xform */ - double dXdTheta[2][3]; /* tangent change xform per revoln */ - double startTheta; /* start angle in x-y plane */ - double sweepTheta; /* degrees to spiral around */ - -} Extrusion; - -#define NEW_EXTRUSION(self) { \ - self -> material = (Material *) malloc (sizeof (Material)); \ - self -> contour = (Contour *) malloc (sizeof (Contour)); \ - NEW_CONTOUR (self->contour); \ -} - - -/* =========================================================== */ -Extrusion *arrow = NULL; - -/* =========================================================== */ -float lastx=0; -float lasty=0; - -void draw_arrow (void) { - - /* attach the mouse */ - arrow->sweepTheta = 180.0 + 0.13* lastx; - arrow->dzdTheta = 0.03 * (lasty+10.0); - - glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT, arrow->material->ambient); - glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, arrow->material->diffuse); - glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, arrow->material->specular); - glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 2.0); - -#ifdef IBM_GL_32 - rotate (-750, 'x'); - rotate (-100, 'z'); - - /* first, draw with the routine that uses a local coordinate - * system with torsion */ - translate (-0.5, -0.5, 3.2); - - lathe (arrow->contour->numContourPoints, - arrow->contour->pts, - arrow->contour->norms, - arrow->contour->up, - arrow->startRadius, /* donut radius */ - arrow->drdTheta, /* change in donut radius per revolution */ - arrow->startZ, /* start z value */ - arrow->dzdTheta, /* change in Z per revolution */ - NULL, - NULL, - arrow->startTheta, /* start angle */ - arrow->sweepTheta); /* sweep angle */ - - draw_axes (); - - /* next, draw with a routine that uses parallel transport */ - translate (0.0, 0.0, -5.4); - lmbind (MATERIAL, 88); - cpack (0x339999); - spiral (arrow->contour->numContourPoints, - arrow->contour->pts, - arrow->contour->norms, - arrow->contour->up, - arrow->startRadius, /* donut radius */ - arrow->drdTheta, /* change in donut radius per revolution */ - arrow->startZ, /* start z value */ - arrow->dzdTheta, /* change in Z per revolution */ - NULL, - NULL, - arrow->startTheta, /* start angle */ - arrow->sweepTheta); /* sweep angle */ - -#endif - -#define OPENGL_10 -#ifdef OPENGL_10 - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotated (-75.0, 1.0, 0.0, 0.0); - glRotated (-10.0, 0.0, 0.0, 1.0); - - /* first, draw with the routine that uses a local coordinate - * system with torsion */ - glTranslated (-0.5, -0.5, 4.2); - - gleLathe (arrow->contour->numContourPoints, - arrow->contour->pts, - arrow->contour->norms, - arrow->contour->up, - arrow->startRadius, /* donut radius */ - arrow->drdTheta, /* change in donut radius per revolution */ - arrow->startZ, /* start z value */ - arrow->dzdTheta, /* change in Z per revolution */ - NULL, - NULL, - arrow->startTheta, /* start angle */ - arrow->sweepTheta); /* sweep angle */ - - /* next, draw with a routine that uses parallel transport */ - glTranslated (0.0, 0.0, -8.4); -/* - lmbind (MATERIAL, 88); - cpack (0x339999); -*/ - gleSpiral (arrow->contour->numContourPoints, - arrow->contour->pts, - arrow->contour->norms, - arrow->contour->up, - arrow->startRadius, /* donut radius */ - arrow->drdTheta, /* change in donut radius per revolution */ - arrow->startZ, /* start z value */ - arrow->dzdTheta, /* change in Z per revolution */ - NULL, - NULL, - arrow->startTheta, /* start angle */ - arrow->sweepTheta); /* sweep angle */ - - glPopMatrix (); - glutSwapBuffers (); -#endif -} - -/* =========================================================== */ - -#define SCALE 1.80 -#define PT(x,y) { ADD_POINT (arrow->contour, SCALE*x, SCALE*y); } -#define NORM(x,y) { ADD_NORMAL (arrow->contour, x, y); } -#define FACET { MAKE_NORMAL (arrow->contour); } - -/* =========================================================== */ - -void init_arrow (void) -{ - int style; - - arrow = (Extrusion *) malloc (sizeof (Extrusion)); - NEW_EXTRUSION (arrow); - - /* define color of arrow */ - SET_AMB (arrow->material, 0.15, 0.15, 0.15); - SET_DIFF (arrow->material, 0.15, 0.55, 0.55); - SET_SPEC (arrow->material, 0.4, 0.4, 0.4); - - /* define lathe/spiral parameters */ - arrow -> startRadius = 7.3; - arrow -> drdTheta = 0.0; - arrow -> startZ = 0.0; - arrow -> dzdTheta = 0.0; - arrow -> startTheta = 0.0; - arrow -> sweepTheta = 90.0; - - /* define arrow contour */ - PT (-1.0, -2.0); - PT (-1.0, 0.0); FACET; - PT (-2.0, 0.0); FACET; - PT (0.0, 2.0); FACET; - PT (2.0, 0.0); FACET; - PT (1.0, 0.0); FACET; - PT (1.0, -2.0); FACET; - - /* define contour up vector */ - arrow->contour->up[0] = 0.0; - arrow->contour->up[1] = 0.0; - arrow->contour->up[2] = 1.0; - - /* set the initial join style */ - style = 0x0; - style |= TUBE_JN_CAP; - style |= TUBE_NORM_PATH_EDGE; - style |= TUBE_NORM_FACET; - style |= TUBE_CONTOUR_CLOSED; - gleSetJoinStyle (style); - -} - -/* =========================================================== */ - -/* get notified of mouse motions */ -void MouseMotion (int x, int y) -{ - lastx = x; - lasty = y; - glutPostRedisplay (); -} - -/* ARGSUSED */ -void JoinStyle (int msg) -{ - exit (0); -} - -/* set up a light */ -GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0}; -GLfloat lightOneColor[] = {0.54, 0.54, 0.54, 1.0}; - -GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0}; -GLfloat lightTwoColor[] = {0.54, 0.54, 0.54, 1.0}; - -GLfloat lightThreePosition[] = {40.0, 40, -100.0, 0.0}; -GLfloat lightThreeColor[] = {0.54, 0.54, 0.54, 1.0}; - -int -main (int argc, char * argv[]) { - - /* initialize glut */ - glutInit (&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow ("transport"); - glutDisplayFunc (draw_arrow); - glutMotionFunc (MouseMotion); - - /* create popup menu */ - glutCreateMenu (JoinStyle); - glutAddMenuEntry ("Exit", 99); - glutAttachMenu (GLUT_MIDDLE_BUTTON); - - /* initialize GL */ - glClearDepth (1.0); - glEnable (GL_DEPTH_TEST); - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - - glMatrixMode (GL_PROJECTION); - /* roughly, measured in centimeters */ - glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0); - glMatrixMode(GL_MODELVIEW); - - /* initialize lighting */ - glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); - glLightfv (GL_LIGHT0, GL_AMBIENT, lightOneColor); - glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); - glLightfv (GL_LIGHT0, GL_SPECULAR, lightOneColor); - glEnable (GL_LIGHT0); - glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); - glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); - glLightfv (GL_LIGHT1, GL_AMBIENT, lightTwoColor); - glEnable (GL_LIGHT1); - glLightfv (GL_LIGHT2, GL_POSITION, lightThreePosition); - glLightfv (GL_LIGHT2, GL_DIFFUSE, lightThreeColor); - glLightfv (GL_LIGHT2, GL_AMBIENT, lightThreeColor); - glEnable (GL_LIGHT2); - glEnable (GL_LIGHTING); - glEnable (GL_NORMALIZE); - /* glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); */ - /* glEnable (GL_COLOR_MATERIAL); */ - - init_arrow (); - - glutMainLoop (); - return 0; /* ANSI C requires main to return int. */ -} -/* ================== END OF FILE ================== */ diff --git a/lib/glut-3.7.6/progs/gle/transport.dsp b/lib/glut-3.7.6/progs/gle/transport.dsp deleted file mode 100644 index 3508e7aa0418492a45174d199fc5082b34ef666f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/transport.dsp +++ /dev/null @@ -1,89 +0,0 @@ -# Microsoft Developer Studio Project File - Name="transport" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=transport - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "transport.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "transport.mak" CFG="transport - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "transport - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "transport - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "transport - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "transport - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "transport - Win32 Release" -# Name "transport - Win32 Debug" -# Begin Source File - -SOURCE=.\transport.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/twistoid.c b/lib/glut-3.7.6/progs/gle/twistoid.c deleted file mode 100644 index 154ceaa9639e999b07b7dad87dbdaf986db40045..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/twistoid.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - * twistoid.c - * - * FUNCTION: - * Show extrusion of open contours. Also, show how torsion is applied. - * - * HISTORY: - * -- linas Vepstas October 1991 - * -- heavily modified to draw corrugated surface, Feb 1993, Linas - * -- modified to demo twistoid March 1993 - * -- port to glut Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -extern float lastx; -extern float lasty; - -#define OPENGL_10 -/* =========================================================== */ - -#define NUM_TOID1_PTS 5 -double toid1_points[NUM_TOID1_PTS][3]; -float toid1_colors [NUM_TOID1_PTS][3]; -double toid1_twists [NUM_TOID1_PTS]; - -#define TSCALE (6.0) - -#define TPTS(x,y) { \ - toid1_points[i][0] = TSCALE * (x); \ - toid1_points[i][1] = TSCALE * (y); \ - toid1_points[i][2] = TSCALE * (0.0); \ - i++; \ -} - -#define TCOLS(r,g,b) { \ - toid1_colors[i][0] = (r); \ - toid1_colors[i][1] = (g); \ - toid1_colors[i][2] = (b); \ - i++; \ -} - -#define TXZERO() { \ - toid1_twists[i] = 0.0; \ - i++; \ -} - -void init_toid1_line (void) -{ - int i; - - i=0; - TPTS (-1.1, 0.0); - TPTS (-1.0, 0.0); - TPTS (0.0, 0.0); - TPTS (1.0, 0.0); - TPTS (1.1, 0.0); - - i=0; - TCOLS (0.8, 0.8, 0.5); - TCOLS (0.8, 0.4, 0.5); - TCOLS (0.8, 0.8, 0.3); - TCOLS (0.4, 0.4, 0.5); - TCOLS (0.8, 0.8, 0.5); - - i=0; - TXZERO (); - TXZERO (); - TXZERO (); - TXZERO (); - TXZERO (); -} - -/* =========================================================== */ - -#define SCALE 0.6 -#define TWIST(x,y) { \ - double ax, ay, alen; \ - twistation[i][0] = SCALE * (x); \ - twistation[i][1] = SCALE * (y); \ - if (i!=0) { \ - ax = twistation[i][0] - twistation[i-1][0]; \ - ay = twistation[i][1] - twistation[i-1][1]; \ - alen = 1.0 / sqrt (ax*ax + ay*ay); \ - ax *= alen; ay *= alen; \ - twist_normal [i-1][0] = - ay; \ - twist_normal [i-1][1] = ax; \ - } \ - i++; \ -} - -#define NUM_TWIS_PTS (20) - -double twistation [NUM_TWIS_PTS][2]; -double twist_normal [NUM_TWIS_PTS][2]; - -void init_tripples (void) -{ - int i; - double angle; - double co, si; - - /* outline of extrusion */ - i=0; - /* first, draw a semi-curcular "hump" */ - while (i< 11) { - angle = M_PI * ((double) i) / 10.0; - co = cos (angle); - si = sin (angle); - TWIST ((-7.0 -3.0*co), 1.8*si); - } - - /* now, a zig-zag corrugation */ - while (i< NUM_TWIS_PTS) { - TWIST ((-10.0 +(double) i), 0.0); - TWIST ((-9.5 +(double) i), 1.0); - } -} - - -/* =========================================================== */ - -#define V3F(x,y,z) { \ - float vvv[3]; \ - vvv[0] = x; vvv[1] = y; vvv[2] = z; v3f (vvv); \ -} - -#define N3F(x,y,z) { \ - float nnn[3]; \ - nnn[0] = x; nnn[1] = y; nnn[2] = z; n3f (nnn); \ -} - -/* =========================================================== */ - -void DrawStuff (void) { - int i; - - toid1_twists[2] = (lastx-121.0) / 8.0; - - i=3; -/* - TPTS (1.0, lasty /400.0); - TPTS (1.1, 1.1 * lasty / 400.0); -*/ - TPTS (1.0, -(lasty-121.0) /200.0); - TPTS (1.1, -1.1 * (lasty-121.0) / 200.0); - -#ifdef IBM_GL_32 - rotate (230, 'x'); - rotate (230, 'y'); - scale (1.8, 1.8, 1.8); - - if (mono_color) { - RGBcolor (178, 178, 204); - twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal, - NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists); - } else { - twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal, - NULL, NUM_TOID1_PTS, toid1_points, toid1_colors, toid1_twists); - } -#endif - -#ifdef OPENGL_10 - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotated (43.0, 1.0, 0.0, 0.0); - glRotated (43.0, 0.0, 1.0, 0.0); - glScaled (1.8, 1.8, 1.8); - gleTwistExtrusion (NUM_TWIS_PTS, twistation, twist_normal, - NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists); - glPopMatrix (); - glutSwapBuffers (); -#endif - -} - -/* =========================================================== */ - -void InitStuff (void) { - int js; - - init_toid1_line (); - init_tripples (); - -#ifdef IBM_GL_32 - js = getjoinstyle (); - js &= ~TUBE_CONTOUR_CLOSED; - setjoinstyle (js); -#endif - -#ifdef OPENGL_10 - js = gleGetJoinStyle (); - js &= ~TUBE_CONTOUR_CLOSED; - gleSetJoinStyle (js); -#endif - -} - -/* ------------------ end of file -------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/twistoid.dsp b/lib/glut-3.7.6/progs/gle/twistoid.dsp deleted file mode 100644 index 41d71e9b499594e09c010eada177bc64b99617e5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/twistoid.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="twistoid" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=twistoid - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "twistoid.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "twistoid.mak" CFG="twistoid - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "twistoid - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "twistoid - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "twistoid - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "twistoid - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "twistoid - Win32 Release" -# Name "twistoid - Win32 Debug" -# Begin Source File - -SOURCE=.\mainsimple.c -# End Source File -# Begin Source File - -SOURCE=.\twistoid.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/gle/twoid.c b/lib/glut-3.7.6/progs/gle/twoid.c deleted file mode 100644 index 9ba66935755d214be254ad8ce9e2e8e06c83f3bf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/twoid.c +++ /dev/null @@ -1,329 +0,0 @@ -/* - * twistoid.c - * - * FUNCTION: - * Show extrusion of open contours. Also, show how torsion is applied. - * - * HISTORY: - * -- linas Vepstas October 1991 - * -- heavily modified to draw corrugated surface, Feb 1993, Linas - * -- modified to demo twistoid March 1993 - * -- port to glut Linas Vepstas March 1995 - */ - -/* required include files */ -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -static int mx = 121; -static int my = 121; - -#define OPENGL_10 -/* =========================================================== */ - -#define NUM_TOID1_PTS 5 -double toid1_points[NUM_TOID1_PTS][3]; -float toid1_colors [NUM_TOID1_PTS][3]; -double toid1_twists [NUM_TOID1_PTS]; - -#define TSCALE (6.0) - -#define TPTS(x,y) { \ - toid1_points[i][0] = TSCALE * (x); \ - toid1_points[i][1] = TSCALE * (y); \ - toid1_points[i][2] = TSCALE * (0.0); \ - i++; \ -} - -#define TCOLS(r,g,b) { \ - toid1_colors[i][0] = (r); \ - toid1_colors[i][1] = (g); \ - toid1_colors[i][2] = (b); \ - i++; \ -} - -#define TXZERO() { \ - toid1_twists[i] = 0.0; \ - i++; \ -} - -void init_toid1_line (void) -{ - int i; - - i=0; - TPTS (-1.1, 0.0); - TPTS (-1.0, 0.0); - TPTS (0.0, 0.0); - TPTS (1.0, 0.0); - TPTS (1.1, 0.0); - - i=0; - TCOLS (0.8, 0.8, 0.5); - TCOLS (0.8, 0.4, 0.5); - TCOLS (0.8, 0.8, 0.3); - TCOLS (0.4, 0.4, 0.5); - TCOLS (0.8, 0.8, 0.5); - - i=0; - TXZERO (); - TXZERO (); - TXZERO (); - TXZERO (); - TXZERO (); -} - -/* =========================================================== */ - -#define SCALE 0.6 -#define TWIST(x,y) { \ - double ax, ay, alen; \ - twistation[i][0] = SCALE * (x); \ - twistation[i][1] = SCALE * (y); \ - if (i!=0) { \ - ax = twistation[i][0] - twistation[i-1][0]; \ - ay = twistation[i][1] - twistation[i-1][1]; \ - alen = 1.0 / sqrt (ax*ax + ay*ay); \ - ax *= alen; ay *= alen; \ - twist_normal [i-1][0] = - ay; \ - twist_normal [i-1][1] = ax; \ - } \ - i++; \ -} - -#define NUM_TWIS_PTS (20) - -double twistation [NUM_TWIS_PTS][2]; -double twist_normal [NUM_TWIS_PTS][2]; - -void init_tripples (void) -{ - int i; - double angle; - double co, si; - - /* outline of extrusion */ - i=0; - /* first, draw a semi-curcular "hump" */ - while (i< 11) { - angle = M_PI * ((double) i) / 10.0; - co = cos (angle); - si = sin (angle); - TWIST ((-7.0 -3.0*co), 1.8*si); - } - - /* now, a zig-zag corrugation */ - while (i< NUM_TWIS_PTS) { - TWIST ((-10.0 +(double) i), 0.0); - TWIST ((-9.5 +(double) i), 1.0); - } -} - - -/* =========================================================== */ - -#define V3F(x,y,z) { \ - float vvv[3]; \ - vvv[0] = x; vvv[1] = y; vvv[2] = z; v3f (vvv); \ -} - -#define N3F(x,y,z) { \ - float nnn[3]; \ - nnn[0] = x; nnn[1] = y; nnn[2] = z; n3f (nnn); \ -} - -/* =========================================================== */ - -void draw_twist (void) { - int i; - - toid1_twists[2] = (double) (mx-121) / 8.0; - - i=3; -/* - TPTS (1.0, ((double)my) /400.0); - TPTS (1.1, 1.1 * ((double)my) / 400.0); -*/ - TPTS (1.0, -((double)(my-121)) /200.0); - TPTS (1.1, -1.1 * ((double)(my-121)) / 200.0); - -#ifdef IBM_GL_32 - rotate (230, 'x'); - rotate (230, 'y'); - scale (1.8, 1.8, 1.8); - - if (mono_color) { - RGBcolor (178, 178, 204); - twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal, - NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists); - } else { - twist_extrusion (NUM_TWIS_PTS, twistation, twist_normal, - NULL, NUM_TOID1_PTS, toid1_points, toid1_colors, toid1_twists); - } -#endif - -#ifdef OPENGL_10 - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - glTranslatef (0.0, 0.0, -80.0); - glRotated (43.0, 1.0, 0.0, 0.0); - glRotated (43.0, 0.0, 1.0, 0.0); - glScaled (1.8, 1.8, 1.8); - gleTwistExtrusion (NUM_TWIS_PTS, twistation, twist_normal, - NULL, NUM_TOID1_PTS, toid1_points, NULL, toid1_twists); - glPopMatrix (); - glutSwapBuffers (); -#endif - -} - -/* =========================================================== */ - -void init_twist (void) -{ - int js; - - init_toid1_line (); - init_tripples (); - -#ifdef IBM_GL_32 - js = getjoinstyle (); - js &= ~TUBE_CONTOUR_CLOSED; - setjoinstyle (js); -#endif - -#ifdef OPENGL_10 - js = gleGetJoinStyle (); - js &= ~TUBE_CONTOUR_CLOSED; - gleSetJoinStyle (js); -#endif - -} - -/* get notified of mouse motions */ -void MouseMotion (int x, int y) -{ - mx = x; - my = y; - glutPostRedisplay (); -} - -void JoinStyle (int msg) -{ - int style; - /* get the current joint style */ - style = gleGetJoinStyle (); - - /* there are four different join styles, - * and two different normal vector styles */ - switch (msg) { - case 0: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_RAW; - break; - case 1: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_ANGLE; - break; - case 2: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_CUT; - break; - case 3: - style &= ~TUBE_JN_MASK; - style |= TUBE_JN_ROUND; - break; - - case 20: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_FACET; - break; - case 21: - style &= ~TUBE_NORM_MASK; - style |= TUBE_NORM_EDGE; - break; - - case 99: - exit (0); - - default: - break; - } - gleSetJoinStyle (style); - glutPostRedisplay (); -} - -/* set up a light */ -GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0}; -GLfloat lightOneColor[] = {0.89, 0.89, 0.89, 1.0}; - -GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0}; -GLfloat lightTwoColor[] = {0.89, 0.89, 0.89, 1.0}; - -GLfloat material[] = {0.93, 0.79, 0.93, 1.0}; - -int -main (int argc, char * argv[]) { - - /* initialize glut */ - glutInit (&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow ("twistoid"); - glutDisplayFunc (draw_twist); - glutMotionFunc (MouseMotion); - - /* create popup menu */ - glutCreateMenu (JoinStyle); - glutAddMenuEntry ("Raw Join Style", 0); - glutAddMenuEntry ("Angle Join Style", 1); - glutAddMenuEntry ("Cut Join Style", 2); - glutAddMenuEntry ("Round Join Style", 3); - glutAddMenuEntry ("------------------", 9999); - glutAddMenuEntry ("Facet Normal Vectors", 20); - glutAddMenuEntry ("Edge Normal Vectors", 21); - glutAddMenuEntry ("------------------", 9999); - glutAddMenuEntry ("Exit", 99); - glutAttachMenu (GLUT_MIDDLE_BUTTON); - - /* initialize GL */ - glClearDepth (1.0); - glEnable (GL_DEPTH_TEST); - glClearColor (0.2, 0.2, 0.2, 0.0); - glShadeModel (GL_SMOOTH); - - glMatrixMode (GL_PROJECTION); - /* roughly, measured in centimeters */ - glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0); - glMatrixMode(GL_MODELVIEW); - - /* initialize lighting */ - glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, material); - glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT, material); - glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); - glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); - glLightfv (GL_LIGHT0, GL_SPECULAR, lightOneColor); - glEnable (GL_LIGHT0); - glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); - glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); - glEnable (GL_LIGHT1); - glEnable (GL_LIGHTING); -/* - glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable (GL_COLOR_MATERIAL); -*/ - - init_twist (); - - glutMainLoop (); - return 0; /* ANSI C requires main to return int. */ -} -/* ------------------ end of file -------------------- */ diff --git a/lib/glut-3.7.6/progs/gle/twoid.dsp b/lib/glut-3.7.6/progs/gle/twoid.dsp deleted file mode 100644 index de687771ffb2eaa01de61d36d639302f09812ea3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/gle/twoid.dsp +++ /dev/null @@ -1,89 +0,0 @@ -# Microsoft Developer Studio Project File - Name="twoid" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=twoid - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "twoid.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "twoid.mak" CFG="twoid - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "twoid - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "twoid - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "twoid - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../include/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "twoid - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include/" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "twoid - Win32 Release" -# Name "twoid - Win32 Debug" -# Begin Source File - -SOURCE=.\twoid.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/inventor/Imakefile b/lib/glut-3.7.6/progs/inventor/Imakefile deleted file mode 100644 index 7d6e946f14eacc31d938c5a8e7bae91fdceebe72..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/inventor/Imakefile +++ /dev/null @@ -1,22 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../Glut.cf" - -#undef CCsuf -#define CCsuf c++ - -TARGETS = glutduck globe - -DEPEND_DEFINES = $(CXXEXTRA_INCLUDES) - -SRCS = glutduck.c++ - -AllTarget($(TARGETS)) - -SimpleGlutInventorProgramTarget(glutduck) -SimpleGlutInventorProgramTarget(globe) - -NormalCplusplusObjectRule() - -DependTarget() diff --git a/lib/glut-3.7.6/progs/inventor/duck.iv b/lib/glut-3.7.6/progs/inventor/duck.iv deleted file mode 100644 index 09e984acbce2cf6bc4b81c0c57e48fde66034ab3..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/inventor/duck.iv and /dev/null differ diff --git a/lib/glut-3.7.6/progs/inventor/globe.c++ b/lib/glut-3.7.6/progs/inventor/globe.c++ deleted file mode 100644 index 293ee9121ad38d68ce4a37f4a3288187479bbf03..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/inventor/globe.c++ +++ /dev/null @@ -1,240 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -int W = 300, H = 300; -int spinning = 0; -GLubyte *image = NULL; -SoSeparator *root; -SoRotationXYZ *globeSpin; -float angle = 0.0; -int moving = 0; -int begin; - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - W = w; - H = h; - if (image) - free(image); - image = (GLubyte *) malloc(W * H * 3); -} - -void -renderScene(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - SbViewportRegion myViewport(W, H); - SoGLRenderAction myRenderAction(myViewport); - myRenderAction.apply(root); -} - -void -redraw(void) -{ - renderScene(); - glutSwapBuffers(); -} - -void -globeScene(void) -{ - root = new SoSeparator; - root->ref(); - - // Add a camera and light - SoPerspectiveCamera *myCamera = new SoPerspectiveCamera; - myCamera->position.setValue(0., 0., 2.2); - myCamera->heightAngle = M_PI/2.5; - myCamera->nearDistance = 0.5; - myCamera->farDistance = 10.0; - root->addChild(myCamera); - root->addChild(new SoDirectionalLight); - - SoRotationXYZ *globalRotXYZ = new SoRotationXYZ; - globalRotXYZ->axis = SoRotationXYZ::X; - globalRotXYZ->angle = M_PI/9; - root->addChild(globalRotXYZ); - - // Set up the globe transformations - globeSpin = new SoRotationXYZ; - root->addChild(globeSpin); - globeSpin->angle = angle; - globeSpin->axis = SoRotationXYZ::Y; // rotate about Y axis - - // Add the globe, a sphere with a texture map. - // Put it within a separator. - SoSeparator *sphereSep = new SoSeparator; - SoTexture2 *myTexture2 = new SoTexture2; - SoComplexity *sphereComplexity = new SoComplexity; - sphereComplexity->value = 0.55; - root->addChild(sphereSep); - sphereSep->addChild(myTexture2); - sphereSep->addChild(sphereComplexity); - sphereSep->addChild(new SoSphere); - myTexture2->filename = "globe.rgb"; -} - -void -updateModels(void) -{ - globeSpin->angle = angle; - glutPostRedisplay(); -} - -void -animate(void) -{ - angle += 0.1; - updateModels(); -} - -void -setAnimation(int enable) -{ - if(enable) { - spinning = 1; - glutIdleFunc(animate); - } else { - spinning = 0; - glutIdleFunc(NULL); - glutPostRedisplay(); - } -} - -/* ARGSUSED */ -void -keyboard(unsigned char ch, int x, int y) -{ - if(ch == ' ') { - setAnimation(0); - animate(); - } -} - -void -menuSelect(int item) -{ - switch(item) { - case 1: - animate(); - break; - case 2: - if(!spinning) { - setAnimation(1); - } else { - setAnimation(0); - } - break; - } -} - -void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (spinning) - glutIdleFunc(animate); - } else { - if (spinning) - glutIdleFunc(NULL); - } -} - -/* ARGSUSED */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - setAnimation(0); - moving = 1; - begin = x; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - glutPostRedisplay(); - } -} - -/* ARGSUSED */ -void -motion(int x, int y) -{ - if (moving) { - angle = angle + .01 * (x - begin); - begin = x; - updateModels(); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - - SoDB::init(); - globeScene(); - - glutInitWindowSize(W, H); - glutCreateWindow("As the world turns"); - glutDisplayFunc(redraw); - glutReshapeFunc(reshape); - glutCreateMenu(menuSelect); - glutAddMenuEntry("Step", 1); - glutAddMenuEntry("Toggle spinning", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc(keyboard); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutVisibilityFunc(vis); - - /* Enable depth testing for Open Inventor. */ - glEnable(GL_DEPTH_TEST); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/inventor/globe.rgb b/lib/glut-3.7.6/progs/inventor/globe.rgb deleted file mode 100644 index 4209ea65ac24bd7b5f598d34d0203edc5c446c99..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/inventor/globe.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/inventor/glutduck.c++ b/lib/glut-3.7.6/progs/inventor/glutduck.c++ deleted file mode 100644 index 305d3a5a58f1422834594501437a0a1f031ef78d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/inventor/glutduck.c++ +++ /dev/null @@ -1,290 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* - * Copyright (c) 1991-94 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the name of Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE - * POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* Based on an example from the Inventor Mentor chapter 13, example 5. */ - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -int W = 300, H = 300; -int spinning = 0; -GLubyte *image = NULL; -SoSeparator *root; -SoRotationXYZ *duckRotXYZ; -float angle = 0.0; -int moving = 0; -int begin; - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - W = w; - H = h; - if (image) - free(image); - image = (GLubyte *) malloc(W * H * 3); -} - -void -renderScene(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - SbViewportRegion myViewport(W, H); - SoGLRenderAction myRenderAction(myViewport); - myRenderAction.apply(root); -} - -void -redraw(void) -{ - renderScene(); - glutSwapBuffers(); -} - -int -duckScene(void) -{ - root = new SoSeparator; - root->ref(); - - // Add a camera and light - SoPerspectiveCamera *myCamera = new SoPerspectiveCamera; - myCamera->position.setValue(0., -4., 8.0); - myCamera->heightAngle = M_PI/2.5; - myCamera->nearDistance = 1.0; - myCamera->farDistance = 15.0; - root->addChild(myCamera); - root->addChild(new SoDirectionalLight); - - // Rotate scene slightly to get better view - SoRotationXYZ *globalRotXYZ = new SoRotationXYZ; - globalRotXYZ->axis = SoRotationXYZ::X; - globalRotXYZ->angle = M_PI/9; - root->addChild(globalRotXYZ); - - // Pond group - SoSeparator *pond = new SoSeparator; - root->addChild(pond); - SoMaterial *cylMaterial = new SoMaterial; - cylMaterial->diffuseColor.setValue(0., 0.3, 0.8); - pond->addChild(cylMaterial); - SoTranslation *cylTranslation = new SoTranslation; - cylTranslation->translation.setValue(0., -6.725, 0.); - pond->addChild(cylTranslation); - SoCylinder *myCylinder = new SoCylinder; - myCylinder->radius.setValue(4.0); - myCylinder->height.setValue(0.5); - pond->addChild(myCylinder); - - // Duck group - SoSeparator *duck = new SoSeparator; - root->addChild(duck); - - // Read the duck object from a file and add to the group - SoInput myInput; - if (!myInput.openFile("duck.iv")) { - if (!myInput.openFile("/usr/share/src/Inventor/examples/data/duck.iv")) { - return 1; - } - } - SoSeparator *duckObject = SoDB::readAll(&myInput); - if (duckObject == NULL) return 1; - - // Set up the duck transformations - duckRotXYZ = new SoRotationXYZ; - duck->addChild(duckRotXYZ); - duckRotXYZ->angle = angle; - duckRotXYZ->axis = SoRotationXYZ::Y; // rotate about Y axis - SoTransform *initialTransform = new SoTransform; - initialTransform->translation.setValue(0., 0., 3.); - initialTransform->scaleFactor.setValue(6., 6., 6.); - duck->addChild(initialTransform); - duck->addChild(duckObject); - - return 0; -} - -void -updateModels(void) -{ - duckRotXYZ->angle = angle; - glutPostRedisplay(); -} - -void -animate(void) -{ - angle += 0.1; - updateModels(); -} - -void -setAnimation(int enable) -{ - if(enable) { - spinning = 1; - glutIdleFunc(animate); - } else { - spinning = 0; - glutIdleFunc(NULL); - glutPostRedisplay(); - } -} - -/* ARGSUSED */ -void -keyboard(unsigned char ch, int x, int y) -{ - if(ch == ' ') { - setAnimation(0); - animate(); - } -} - -void -menuSelect(int item) -{ - switch(item) { - case 1: - animate(); - break; - case 2: - if(!spinning) { - setAnimation(1); - } else { - setAnimation(0); - } - break; -#ifdef GL_MULTISAMPLE_SGIS - case 3: - if(glIsEnabled(GL_MULTISAMPLE_SGIS)) { - glDisable(GL_MULTISAMPLE_SGIS); - } else { - glEnable(GL_MULTISAMPLE_SGIS); - } - glutPostRedisplay(); - break; -#endif - } -} - -void -vis(int visible) -{ - if (visible == GLUT_VISIBLE) { - if (spinning) - glutIdleFunc(animate); - } else { - if (spinning) - glutIdleFunc(NULL); - } -} - -/* ARGSUSED */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - setAnimation(0); - moving = 1; - begin = x; - } - if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - moving = 0; - glutPostRedisplay(); - } -} - -/* ARGSUSED */ -void -motion(int x, int y) -{ - if (moving) { - angle = angle + .01 * (x - begin); - begin = x; - updateModels(); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); - - SoDB::init(); - - if(duckScene()) { - fprintf(stderr, "couldn't read IV file\n"); - exit(1); - } - glutInitWindowSize(W, H); - glutCreateWindow("GLUT Inventor Duck Pond"); - glutDisplayFunc(redraw); - glutReshapeFunc(reshape); - glutCreateMenu(menuSelect); - glutAddMenuEntry("Step", 1); - glutAddMenuEntry("Toggle animation", 2); - if(glutGet(GLUT_WINDOW_NUM_SAMPLES) > 0) { - glutAddMenuEntry("Toggle multisampling", 3); - } - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc(keyboard); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutVisibilityFunc(vis); - glEnable(GL_DEPTH_TEST); - glClearColor(0.132, 0.542, 0.132, 1.0); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos.dsw b/lib/glut-3.7.6/progs/mesademos.dsw deleted file mode 100644 index 73bf3ad35d869854af118b1b966a77e18fa25e83..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos.dsw +++ /dev/null @@ -1,194 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\mesademos\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name bounce - End Project Dependency - Begin Project Dependency - Project_Dep_Name gamma - End Project Dependency - Begin Project Dependency - Project_Dep_Name gears - End Project Dependency - Begin Project Dependency - Project_Dep_Name isosurf - End Project Dependency - Begin Project Dependency - Project_Dep_Name offset - End Project Dependency - Begin Project Dependency - Project_Dep_Name reflect - End Project Dependency - Begin Project Dependency - Project_Dep_Name spin - End Project Dependency - Begin Project Dependency - Project_Dep_Name tess_demo - End Project Dependency - Begin Project Dependency - Project_Dep_Name texobj - End Project Dependency - Begin Project Dependency - Project_Dep_Name trdemo - End Project Dependency - Begin Project Dependency - Project_Dep_Name winpos - End Project Dependency -}}} - -############################################################################### - -Project: "bounce"=".\mesademos\bounce.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "gamma"=".\mesademos\gamma.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "gears"=".\mesademos\gears.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "isosurf"=".\mesademos\isosurf.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "offset"=".\mesademos\offset.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "reflect"=".\mesademos\reflect.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "spin"=".\mesademos\spin.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tess_demo"=".\mesademos\tess_demo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texobj"=".\mesademos\texobj.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "trdemo"=".\mesademos\trdemo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "winpos"=".\mesademos\winpos.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/mesademos/Imakefile b/lib/glut-3.7.6/progs/mesademos/Imakefile deleted file mode 100644 index 55741acc63beb8c9d787ba439aa343f805d85d4d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/Imakefile +++ /dev/null @@ -1,26 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -#include "../../Glut.cf" - -TARGETS = bounce gamma gears isosurf offset reflect spin tess_demo \ - texobj winpos trdemo - -SRCS = bounce.c gamma.c gears.c isosurf.c offset.c reflect.c spin.c \ - tess_demo.c texobj.c winpos.c trdemo.c tr.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(bounce) -SimpleGlutProgramTarget(gamma) -SimpleGlutProgramTarget(gears) -SimpleGlutProgramTarget(isosurf) -SimpleGlutProgramTarget(offset) -NormalGlutProgramTarget(reflect,reflect.o image.o) -SimpleGlutProgramTarget(spin) -SimpleGlutProgramTarget(tess_demo) -SimpleGlutProgramTarget(texobj) -NormalGlutProgramTarget(trdemo,trdemo.o tr.o) -SimpleGlutProgramTarget(winpos) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/mesademos/README b/lib/glut-3.7.6/progs/mesademos/README deleted file mode 100644 index 12603f3829e9d2712146d7d694cd992185463787..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/README +++ /dev/null @@ -1,21 +0,0 @@ - -The source code in this directory is derived from a set of demos found -in the Mesa 2.0 source code distribution. The original Mesa demos -were written to use Xlib, aux, or tk; the versions in this directory -have been converted to use GLUT. - -Some of the programs from the Mesa 2.0 demos directory are not -included here because they demonstrated features specific to Mesa. To -avoid any possible confusion, the Mesa 2.0 demo source files NOT -reproduced here are fdraw.f, ftest.c, glxdemo.c, glxpixmap.c, test0.c, -vgears.c, vindex.c, vtest.c, and xdemo.c - -Many thanks to Brian Paul and the various contributors to the Mesa -library. - -NOTE to SGI users: IRIX includes a system command called -/usr/sbin/gamma so you may need to run "./gamma" to run the gamma -demo in this directory. - -- Mark Kilgard - November 7, 1996 diff --git a/lib/glut-3.7.6/progs/mesademos/_all.dsp b/lib/glut-3.7.6/progs/mesademos/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/bounce.c b/lib/glut-3.7.6/progs/mesademos/bounce.c deleted file mode 100644 index d5d7ee250feb9e7987b034cb04829a48387988b0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/bounce.c +++ /dev/null @@ -1,204 +0,0 @@ -/* bounce.c */ - -/* - * Bouncing ball demo. - * - * This program is in the public domain - * - * Brian Paul - */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -#include -#include -#include - -#define COS(X) cos( (X) * 3.14159/180.0 ) -#define SIN(X) sin( (X) * 3.14159/180.0 ) - -#define RED 1 -#define WHITE 2 -#define CYAN 3 - -GLuint Ball; -GLenum Mode; -GLfloat Zrot = 0.0, Zstep = 6.0; -GLfloat Xpos = 0.0, Ypos = 1.0; -GLfloat Xvel = 0.2, Yvel = 0.0; -GLfloat Xmin = -4.0, Xmax = 4.0; -GLfloat Ymin = -3.8, Ymax = 4.0; -GLfloat G = -0.1; - -static GLuint -make_ball(void) -{ - GLuint list; - GLfloat a, b; - GLfloat da = 18.0, db = 18.0; - GLfloat radius = 1.0; - GLuint color; - GLfloat x, y, z; - - list = glGenLists(1); - - glNewList(list, GL_COMPILE); - - color = 0; - for (a = -90.0; a + da <= 90.0; a += da) { - - glBegin(GL_QUAD_STRIP); - for (b = 0.0; b <= 360.0; b += db) { - - if (color) { - glIndexi(RED); - } else { - glIndexi(WHITE); - } - - x = COS(b) * COS(a); - y = SIN(b) * COS(a); - z = SIN(a); - glVertex3f(x, y, z); - - x = radius * COS(b) * COS(a + da); - y = radius * SIN(b) * COS(a + da); - z = radius * SIN(a + da); - glVertex3f(x, y, z); - - color = 1 - color; - } - glEnd(); - - } - - glEndList(); - - return list; -} - -static void -reshape(int width, int height) -{ - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-6.0, 6.0, -6.0, 6.0, -6.0, 6.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: /* Escape */ - exit(0); - } -} - -static void -draw(void) -{ - GLint i; - - glClear(GL_COLOR_BUFFER_BIT); - - glIndexi(CYAN); - glBegin(GL_LINES); - for (i = -5; i <= 5; i++) { - glVertex2i(i, -5); - glVertex2i(i, 5); - } - for (i = -5; i <= 5; i++) { - glVertex2i(-5, i); - glVertex2i(5, i); - } - for (i = -5; i <= 5; i++) { - glVertex2i(i, -5); - glVertex2f(i * 1.15, -5.9); - } - glVertex2f(-5.3, -5.35); - glVertex2f(5.3, -5.35); - glVertex2f(-5.75, -5.9); - glVertex2f(5.75, -5.9); - glEnd(); - - glPushMatrix(); - glTranslatef(Xpos, Ypos, 0.0); - glScalef(2.0, 2.0, 2.0); - glRotatef(8.0, 0.0, 0.0, 1.0); - glRotatef(90.0, 1.0, 0.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - - glCallList(Ball); - - glPopMatrix(); - - glFlush(); - glutSwapBuffers(); -} - -static void -idle(void) -{ - static float vel0 = -100.0; - - Zrot += Zstep; - - Xpos += Xvel; - if (Xpos >= Xmax) { - Xpos = Xmax; - Xvel = -Xvel; - Zstep = -Zstep; - } - if (Xpos <= Xmin) { - Xpos = Xmin; - Xvel = -Xvel; - Zstep = -Zstep; - } - Ypos += Yvel; - Yvel += G; - if (Ypos < Ymin) { - Ypos = Ymin; - if (vel0 == -100.0) - vel0 = fabs(Yvel); - Yvel = vel0; - } - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_INDEX | GLUT_DOUBLE); - - glutCreateWindow("Bounce"); - Ball = make_ball(); - glCullFace(GL_BACK); - glEnable(GL_CULL_FACE); - glDisable(GL_DITHER); - glShadeModel(GL_FLAT); - - glutDisplayFunc(draw); - glutReshapeFunc(reshape); - glutVisibilityFunc(visible); - glutKeyboardFunc(key); - - glutSetColor(RED, 1.0, 0.0, 0.0); - glutSetColor(WHITE, 1.0, 1.0, 1.0); - glutSetColor(CYAN, 0.0, 1.0, 1.0); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/bounce.dsp b/lib/glut-3.7.6/progs/mesademos/bounce.dsp deleted file mode 100644 index 902840e5fbbc0e650b4f90f3578db8d4895fe18a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/bounce.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bounce" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bounce - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bounce.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bounce.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bounce - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bounce - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bounce - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bounce - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bounce - Win32 Release" -# Name "bounce - Win32 Debug" -# Begin Source File - -SOURCE=.\bounce.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/brick.rgb b/lib/glut-3.7.6/progs/mesademos/brick.rgb deleted file mode 100644 index c5756ca8d2a890ad1180c79b2319106d197df084..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/mesademos/brick.rgb and /dev/null differ diff --git a/lib/glut-3.7.6/progs/mesademos/gamma.c b/lib/glut-3.7.6/progs/mesademos/gamma.c deleted file mode 100644 index 5d32e08162a8eca7744a8e22d302ff1957898e46..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/gamma.c +++ /dev/null @@ -1,166 +0,0 @@ -/* gamma.c */ - -/* Draw test patterns to help determine correct gamma value for a display. - When the intensities in the top row nearly match the intensities in - the bottom row you've found the right gamma value. - - For more info about gamma correction see: - http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html - - This program is in the public domain - - Brian Paul 19 Oct 1995 */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -#include -#include -#include -#include - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -static void -key_esc(unsigned char key, int x, int y) -{ - if(key == 27) exit(0); /* Exit on Escape */ -} - -static GLubyte p25[] = -{ - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, -}; - -static GLubyte p50[] = -{ - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, - 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, -}; - -static GLubyte p75[] = -{ - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, -}; - -static void -display(void) -{ - - glClear(GL_COLOR_BUFFER_BIT); - -/** DITHERED ROW **/ - - /* solid black */ - - /* 25% white */ - glEnable(GL_POLYGON_STIPPLE); - glColor3f(1.0, 1.0, 1.0); - glPolygonStipple(p25); - glRectf(-0.6, 1.0, -0.2, 0.01); - - /* 50% white */ - glPolygonStipple(p50); - glRectf(-0.2, 1.0, 0.2, 0.01); - - /* 75% white */ - glPolygonStipple(p75); - glRectf(0.2, 1.0, 0.6, 0.01); - - /* 100% white */ - glDisable(GL_POLYGON_STIPPLE); - glRectf(0.6, 1.0, 1.0, 0.01); - -/*** GRAY ROW ***/ - - /* solid black */ - - /* 25% white */ - glColor3f(0.25, 0.25, 0.25); - glRectf(-0.6, -0.01, -0.2, -1.0); - - /* 50% white */ - glColor3f(0.5, 0.5, 0.5); - glRectf(-0.2, -0.01, 0.2, -1.0); - - /* 75% white */ - glColor3f(0.75, 0.75, 0.75); - glRectf(0.2, -0.01, 0.6, -1.0); - - /* 100% white */ - glColor3f(1.0, 1.0, 1.0); - glRectf(0.6, -0.01, 1.0, -1.0); - - glFlush(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - - glutInitWindowPosition(50, 50); - glutInitWindowSize(400, 200); - - glutCreateWindow("gamma test patterns"); - glutReshapeFunc(Reshape); - glutDisplayFunc(display); - glutKeyboardFunc(key_esc); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/gamma.dsp b/lib/glut-3.7.6/progs/mesademos/gamma.dsp deleted file mode 100644 index 7bf989238ed21b3147f74fae0a8b258aaf6f7b82..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/gamma.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gamma" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gamma - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gamma.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gamma.mak" CFG="gamma - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gamma - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gamma - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gamma - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gamma - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gamma - Win32 Release" -# Name "gamma - Win32 Debug" -# Begin Source File - -SOURCE=.\gamma.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/gears.c b/lib/glut-3.7.6/progs/mesademos/gears.c deleted file mode 100644 index 418703383df90d8167b4e53cb55716fe2d7db9be..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/gears.c +++ /dev/null @@ -1,330 +0,0 @@ -/* gears.c */ - -/* - * 3-D gear wheels. This program is in the public domain. - * - * Brian Paul - */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -#include -#include -#include - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - -/** - - Draw a gear wheel. You'll probably want to call this function when - building a display list since we do a lot of trig here. - - Input: inner_radius - radius of hole at center - outer_radius - radius at center of teeth - width - width of gear - teeth - number of teeth - tooth_depth - depth of tooth - - **/ - -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); - -} - -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; - -static GLuint limit; -static GLuint count = 1; - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); - - glutSwapBuffers(); - - count++; - if (count == limit) { - exit(0); - } -} - -static void -idle(void) -{ - angle += 2.0; - glutPostRedisplay(); -} - -/* change view angle, exit upon ESC */ -/* ARGSUSED1 */ -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 'z': - view_rotz += 5.0; - break; - case 'Z': - view_rotz -= 5.0; - break; - case 27: /* Escape */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - -/* change view angle */ -/* ARGSUSED1 */ -static void -special(int k, int x, int y) -{ - switch (k) { - case GLUT_KEY_UP: - view_rotx += 5.0; - break; - case GLUT_KEY_DOWN: - view_rotx -= 5.0; - break; - case GLUT_KEY_LEFT: - view_roty += 5.0; - break; - case GLUT_KEY_RIGHT: - view_roty -= 5.0; - break; - default: - return; - } - glutPostRedisplay(); -} - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat h = (GLfloat) height / (GLfloat) width; - - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - -static void -init(void) -{ - static GLfloat pos[4] = - {5.0, 5.0, 10.0, 0.0}; - static GLfloat red[4] = - {0.8, 0.1, 0.0, 1.0}; - static GLfloat green[4] = - {0.0, 0.8, 0.2, 1.0}; - static GLfloat blue[4] = - {0.2, 0.2, 1.0, 1.0}; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - if (argc > 1) { - /* do 'n' frames then exit */ - limit = atoi(argv[1]) + 1; - } else { - limit = 0; - } - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - - glutCreateWindow("Gears"); - init(); - - glutDisplayFunc(draw); - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutVisibilityFunc(visible); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/gears.dsp b/lib/glut-3.7.6/progs/mesademos/gears.dsp deleted file mode 100644 index 1fa4c54ca1f32010c97380b63889f62503b19fd3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/gears.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gears" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gears - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gears.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gears.mak" CFG="gears - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gears - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gears - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gears - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gears - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gears - Win32 Release" -# Name "gears - Win32 Debug" -# Begin Source File - -SOURCE=.\gears.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/image.c b/lib/glut-3.7.6/progs/mesademos/image.c deleted file mode 100644 index 78c46d5fea8f46f06e41adacfb8e44166ebae3ab..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/image.c +++ /dev/null @@ -1,220 +0,0 @@ -/* Lifted from libtk/image.c */ - -/* This code lets your read in SGI .rgb files. */ - -#include -#include -#include -#include "image.h" - -#ifndef SEEK_SET -# define SEEK_SET 0 -#endif - - -/******************************************************************************/ - -typedef unsigned int GLuint; /* Should be 32-bit value. */ -typedef int GLint; /* Should be 32-bit value. */ - -typedef struct _rawImageRec { - unsigned short imagic; - unsigned short type; - unsigned short dim; - unsigned short sizeX, sizeY, sizeZ; - unsigned long min, max; - unsigned long wasteBytes; - char name[80]; - unsigned long colorMap; - FILE *file; - unsigned char *tmp, *tmpR, *tmpG, *tmpB; - unsigned long rleEnd; - GLuint *rowStart; - GLint *rowSize; -} rawImageRec; - -/******************************************************************************/ - -static void ConvertShort(unsigned short *array, unsigned int length) -{ - unsigned short b1, b2; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - *array++ = (b1 << 8) | (b2); - } -} - -static void ConvertUint(GLuint *array, unsigned int length) -{ - unsigned int b1, b2, b3, b4; - unsigned char *ptr; - - ptr = (unsigned char *)array; - while (length--) { - b1 = *ptr++; - b2 = *ptr++; - b3 = *ptr++; - b4 = *ptr++; - *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4); - } -} - -static rawImageRec *RawImageOpen(char *fileName) -{ - union { - int testWord; - char testByte[4]; - } endianTest; - rawImageRec *raw; - int swapFlag; - int x; - - endianTest.testWord = 1; - if (endianTest.testByte[0] == 1) { - swapFlag = 1; - } else { - swapFlag = 0; - } - - raw = (rawImageRec *)malloc(sizeof(rawImageRec)); - if (raw == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - if ((raw->file = fopen(fileName, "rb")) == NULL) { - perror(fileName); - exit(1); - } - - fread(raw, 1, 12, raw->file); - - if (swapFlag) { - ConvertShort(&raw->imagic, 6); - } - - raw->tmp = (unsigned char *)malloc(raw->sizeX*256); - raw->tmpR = (unsigned char *)malloc(raw->sizeX*256); - raw->tmpG = (unsigned char *)malloc(raw->sizeX*256); - raw->tmpB = (unsigned char *)malloc(raw->sizeX*256); - if (raw->tmp == NULL || raw->tmpR == NULL || raw->tmpG == NULL || - raw->tmpB == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - - if ((raw->type & 0xFF00) == 0x0100) { - x = raw->sizeY * raw->sizeZ * (int) sizeof(GLuint); - raw->rowStart = (GLuint *)malloc(x); - raw->rowSize = (GLint *)malloc(x); - if (raw->rowStart == NULL || raw->rowSize == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - raw->rleEnd = 512 + (2 * x); - fseek(raw->file, 512, SEEK_SET); - fread(raw->rowStart, 1, x, raw->file); - fread(raw->rowSize, 1, x, raw->file); - if (swapFlag) { - ConvertUint(raw->rowStart, - (unsigned int) (x/sizeof(GLuint))); - ConvertUint((GLuint *)raw->rowSize, - (unsigned int) (x/sizeof(GLint))); - } - } - return raw; -} - -static void RawImageClose(rawImageRec *raw) -{ - - fclose(raw->file); - free(raw->tmp); - free(raw->tmpR); - free(raw->tmpG); - free(raw->tmpB); - free(raw); -} - -static void RawImageGetRow(rawImageRec *raw, unsigned char *buf, int y, int z) -{ - unsigned char *iPtr, *oPtr, pixel; - int count; - - if ((raw->type & 0xFF00) == 0x0100) { - fseek(raw->file, (long) raw->rowStart[y+z*raw->sizeY], SEEK_SET); - fread(raw->tmp, 1, (unsigned int)raw->rowSize[y+z*raw->sizeY], - raw->file); - - iPtr = raw->tmp; - oPtr = buf; - for (;;) { - pixel = *iPtr++; - count = (int)(pixel & 0x7F); - if (!count) { - return; - } - if (pixel & 0x80) { - while (count--) { - *oPtr++ = *iPtr++; - } - } else { - pixel = *iPtr++; - while (count--) { - *oPtr++ = pixel; - } - } - } - } else { - fseek(raw->file, 512+(y*raw->sizeX)+(z*raw->sizeX*raw->sizeY), - SEEK_SET); - fread(buf, 1, raw->sizeX, raw->file); - } -} - -static void RawImageGetData(rawImageRec *raw, RGBImageRec *final) -{ - unsigned char *ptr; - int i, j; - - final->data = (unsigned char *)malloc((raw->sizeX+1)*(raw->sizeY+1)*4); - if (final->data == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - - ptr = final->data; - for (i = 0; i < (int)(raw->sizeY); i++) { - RawImageGetRow(raw, raw->tmpR, i, 0); - RawImageGetRow(raw, raw->tmpG, i, 1); - RawImageGetRow(raw, raw->tmpB, i, 2); - for (j = 0; j < (int)(raw->sizeX); j++) { - *ptr++ = *(raw->tmpR + j); - *ptr++ = *(raw->tmpG + j); - *ptr++ = *(raw->tmpB + j); - } - } -} - -RGBImageRec *RGBImageLoad(char *fileName) -{ - rawImageRec *raw; - RGBImageRec *final; - - raw = RawImageOpen(fileName); - final = (RGBImageRec *)malloc(sizeof(RGBImageRec)); - if (final == NULL) { - fprintf(stderr, "Out of memory!\n"); - exit(1); - } - final->sizeX = raw->sizeX; - final->sizeY = raw->sizeY; - RawImageGetData(raw, final); - RawImageClose(raw); - return final; -} - -/******************************************************************************/ diff --git a/lib/glut-3.7.6/progs/mesademos/image.h b/lib/glut-3.7.6/progs/mesademos/image.h deleted file mode 100644 index 797c625fc8246a9a97fd7c6980736bd493156e46..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/image.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Lifted from include/gltk.h */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** RGB Image Structure -*/ - -typedef struct _RGBImageRec { - int sizeX, sizeY; - unsigned char *data; -} RGBImageRec; - -extern RGBImageRec *RGBImageLoad(char *); - -#ifdef __cplusplus -} -#endif diff --git a/lib/glut-3.7.6/progs/mesademos/isosurf.c b/lib/glut-3.7.6/progs/mesademos/isosurf.c deleted file mode 100644 index a693ba4b2d363cbccbfdd4b717312be892948faa..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/isosurf.c +++ /dev/null @@ -1,316 +0,0 @@ -/* isosurf.c */ - -/* Mesa 2.0 version - - Display an isosurface of 3-D wind speed volume. Use arrow keys to - rotate, S toggles smooth shading, L toggles lighting - - Brian Paul */ - -/* Conversion to GLUT and OpenGL 1.1 by Mark J. Kilgard */ - -#include -#include -#include -#include -#include - -#ifndef GL_VERSION_1_1 -/* OpenGL 1.1 not supported so emulate OpenGL 1.1 - vertex arrays with the EXT_vertex_array extension. */ -#define GL_VERTEX_ARRAY GL_VERTEX_ARRAY_EXT -#define GL_NORMAL_ARRAY GL_NORMAL_ARRAY_EXT -#define glDrawArrays(a,b,c) glDrawArraysEXT(a,b,c) -#define glVertexPointer(a,b,c,d) glVertexPointerEXT(a,b,c,numverts,d) -#define glNormalPointer(a,b,c) glNormalPointerEXT(a,b,numverts,c) -#endif - -GLboolean speed_test = GL_FALSE; -GLboolean use_vertex_arrays = GL_FALSE; - -GLboolean doubleBuffer = GL_TRUE; - -GLboolean smooth = GL_TRUE; -GLboolean lighting = GL_TRUE; - -#define MAXVERTS 10000 - -static GLfloat verts[MAXVERTS][3]; -static GLfloat norms[MAXVERTS][3]; -static GLint numverts; - -static GLfloat xrot; -static GLfloat yrot; - -static void -read_surface(char *filename) -{ - FILE *f; - - f = fopen(filename, "r"); - if (!f) { - printf("couldn't read %s\n", filename); - exit(1); - } - numverts = 0; - while (!feof(f) && numverts < MAXVERTS) { - fscanf(f, "%f %f %f %f %f %f", - &verts[numverts][0], &verts[numverts][1], &verts[numverts][2], - &norms[numverts][0], &norms[numverts][1], &norms[numverts][2]); - numverts++; - } - numverts--; - - printf("%d vertices, %d triangles\n", numverts, numverts - 2); - fclose(f); -} - -static void -draw_surface(void) -{ - int i; - -#if defined(GL_EXT_vertex_array) || defined(GL_VERSION_1_1) - if (use_vertex_arrays) { - glDrawArrays(GL_TRIANGLE_STRIP, 0, numverts); - } else { -#endif - glBegin(GL_TRIANGLE_STRIP); - for (i = 0; i < numverts; i++) { - glNormal3fv(norms[i]); - glVertex3fv(verts[i]); - } - glEnd(); -#if defined(GL_EXT_vertex_array) || defined(GL_VERSION_1_1) - } -#endif -} - -static void -draw1(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glRotatef(yrot, 0.0, 1.0, 0.0); - glRotatef(xrot, 1.0, 0.0, 0.0); - - draw_surface(); - - glPopMatrix(); - - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -static void -draw(void) -{ - if (speed_test) { - for (xrot = 0.0; xrot <= 360.0; xrot += 10.0) { - draw1(); - } - exit(0); - } else { - draw1(); - } -} - -static void -InitMaterials(void) -{ - static float ambient[] = - {0.1, 0.1, 0.1, 1.0}; - static float diffuse[] = - {0.5, 1.0, 1.0, 1.0}; - static float position0[] = - {0.0, 0.0, 20.0, 0.0}; - static float position1[] = - {0.0, 0.0, -20.0, 0.0}; - static float front_mat_shininess[] = - {60.0}; - static float front_mat_specular[] = - {0.2, 0.2, 0.2, 1.0}; - static float front_mat_diffuse[] = - {0.5, 0.28, 0.38, 1.0}; - static float lmodel_ambient[] = - {1.0, 1.0, 1.0, 1.0}; - static float lmodel_twoside[] = - {GL_FALSE}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position0); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT1, GL_POSITION, position1); - glEnable(GL_LIGHT1); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glEnable(GL_LIGHTING); - - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse); -} - -static void -Init(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - - glShadeModel(GL_SMOOTH); - glEnable(GL_DEPTH_TEST); - - InitMaterials(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5, 25); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -6.0); - -#if defined(GL_EXT_vertex_array) || defined(GL_VERSION_1_1) - if (use_vertex_arrays) { - glVertexPointer(3, GL_FLOAT, 0, verts); - glNormalPointer(GL_FLOAT, 0, norms); - glEnable(GL_VERTEX_ARRAY); - glEnable(GL_NORMAL_ARRAY); - } -#endif -} - -/* ARGSUSED1 */ -static void -Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: /* Escape */ - exit(0); - break; - case 'S': - case 's': - smooth = !smooth; - if (smooth) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - break; - case 'L': - case 'l': - lighting = !lighting; - if (lighting) { - glEnable(GL_LIGHTING); - } else { - glDisable(GL_LIGHTING); - } - break; - default: - return; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -static void -Special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - yrot -= 15.0; - break; - case GLUT_KEY_RIGHT: - yrot += 15.0; - break; - case GLUT_KEY_UP: - xrot += 15.0; - break; - case GLUT_KEY_DOWN: - xrot -= 15.0; - break; - default: - return; - } - glutPostRedisplay(); -} - -static GLboolean -Args(int argc, char **argv) -{ - GLint i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else if (strcmp(argv[i], "-speed") == 0) { - speed_test = GL_TRUE; - doubleBuffer = GL_TRUE; - } else if (strcmp(argv[i], "-va") == 0) { - use_vertex_arrays = GL_TRUE; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - - return GL_TRUE; -} - -int -supportsOneDotOne(void) -{ - const GLubyte *version; - int major, minor; - - version = glGetString(GL_VERSION); - if (sscanf(version, "%d.%d", &major, &minor) == 2) - return major > 1 || minor >= 1; - return 0; /* OpenGL version string malformed! */ -} - -int -main(int argc, char **argv) -{ - int type; - - glutInitWindowSize(400, 400); - glutInit(&argc, argv); - read_surface("isosurf.dat"); - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - type = GLUT_DEPTH; - type |= GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - glutCreateWindow("Isosurface"); - - /* Make sure server supports the vertex array extension */ - if (glutExtensionSupported("GL_EXT_vertex_array")) { - use_vertex_arrays = GL_FALSE; - } - if (supportsOneDotOne()) { - /* Always use vertex arrays if OpenGL 1.1 is supported! */ - use_vertex_arrays = GL_TRUE; - } - Init(); - - glutDisplayFunc(draw); - glutKeyboardFunc(Key); - glutSpecialFunc(Special); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/isosurf.dat b/lib/glut-3.7.6/progs/mesademos/isosurf.dat deleted file mode 100644 index e6dfc8437440f76944eaea131583d8d35e5de5c9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/isosurf.dat +++ /dev/null @@ -1,7179 +0,0 @@ --1.000000 0.050200 0.254800 0.280000 0.504000 0.808000 --1.000000 0.061400 0.243900 0.248000 0.608000 0.744000 --0.973900 0.050200 0.243900 0.312000 0.448000 0.832000 --1.000000 0.100400 0.207000 0.040000 0.608000 0.784000 --0.950000 0.050200 0.232900 0.312000 0.424000 0.840000 --0.950000 0.100400 0.204500 0.176000 0.504000 0.840000 --0.900000 0.050200 0.202100 0.368000 0.256000 0.888000 --0.900000 0.100400 0.184100 0.296000 0.408000 0.856000 --0.865600 0.050200 0.182900 0.480000 0.256000 0.832000 --0.897500 0.100400 0.182900 0.392000 0.408000 0.816000 --0.850000 0.050200 0.170400 0.488000 0.296000 0.816000 --0.850000 0.100400 0.150400 0.488000 0.512000 0.696000 --0.800000 0.050200 0.139800 0.504000 0.392000 0.760000 --0.820700 0.100400 0.121900 0.496000 0.488000 0.704000 --0.800000 0.077200 0.121900 0.512000 0.416000 0.744000 --0.800000 0.100400 0.105500 0.480000 0.456000 0.736000 --0.781300 0.050200 0.121900 0.536000 0.400000 0.736000 --0.750000 0.100400 0.065100 0.488000 0.448000 0.736000 --0.750000 0.050200 0.097600 0.464000 0.408000 0.776000 --0.744800 0.100400 0.060900 0.496000 0.456000 0.728000 --0.700000 0.050200 0.061900 0.536000 0.368000 0.752000 --0.700000 0.051600 0.060900 0.528000 0.416000 0.728000 --0.699000 0.050200 0.060900 0.608000 0.360000 0.696000 --0.700000 0.100400 0.019100 0.504000 0.504000 0.688000 --0.650000 0.050200 0.008200 0.568000 0.384000 0.720000 --0.680200 0.100400 0.000000 0.600000 0.440000 0.656000 --0.650000 0.063100 0.000000 0.592000 0.392000 0.696000 --0.650000 0.100400 -0.043200 0.600000 0.608000 0.496000 --0.641800 0.050200 0.000000 0.616000 0.400000 0.664000 --0.638000 0.100400 -0.060900 0.672000 0.632000 0.368000 --0.600000 0.050200 -0.054100 0.640000 0.448000 0.616000 --0.600000 0.057600 -0.060900 0.728000 0.536000 0.408000 --0.594700 0.050200 -0.060900 0.744000 0.504000 0.416000 --0.600000 0.050200 -0.083400 0.800000 0.528000 -0.248000 --0.573200 0.000000 -0.060900 0.920000 0.296000 -0.248000 --0.600000 0.000000 -0.117700 0.848000 0.200000 -0.488000 --0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000 --0.600000 -0.008200 -0.121900 0.848000 0.208000 -0.472000 --0.586600 -0.050200 -0.121900 0.872000 0.224000 -0.424000 --0.600000 -0.050200 -0.162700 0.904000 0.232000 -0.344000 --0.578300 -0.100400 -0.121900 0.848000 0.312000 -0.424000 --0.600000 -0.077900 -0.182900 0.856000 0.208000 -0.464000 --0.594100 -0.100400 -0.182900 0.816000 0.296000 -0.480000 --0.600000 -0.100400 -0.193800 0.776000 0.296000 -0.544000 --0.561800 -0.150600 -0.182900 0.544000 0.784000 -0.280000 --0.600000 -0.150600 -0.229400 0.416000 0.744000 -0.512000 --0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000 --0.600000 -0.160400 -0.243900 0.432000 0.688000 -0.576000 --0.550000 -0.172700 -0.243900 0.008000 0.856000 -0.512000 --0.600000 -0.200800 -0.299500 0.000000 0.872000 -0.480000 --0.550000 -0.200800 -0.303600 -0.040000 0.880000 -0.464000 --0.600000 -0.203400 -0.304800 0.008000 0.768000 -0.632000 --0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000 --0.600000 -0.251000 -0.360600 -0.120000 0.624000 -0.760000 --0.550000 -0.245600 -0.365800 -0.104000 0.680000 -0.720000 --0.576800 -0.251000 -0.365800 -0.136000 0.624000 -0.760000 --0.550000 -0.251000 -0.371400 -0.120000 0.616000 -0.768000 --0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000 --0.550000 -0.301200 -0.401000 0.000000 0.424000 -0.904000 --0.600000 -0.301200 -0.399100 0.008000 0.480000 -0.872000 --0.550000 -0.349500 -0.426800 0.056000 0.416000 -0.904000 --0.600000 -0.340300 -0.426800 0.032000 0.512000 -0.848000 --0.600000 -0.301200 -0.399100 0.008000 0.480000 -0.872000 --0.650000 -0.337200 -0.426800 0.016000 0.520000 -0.848000 --0.650000 -0.301200 -0.398600 0.000000 0.528000 -0.840000 --0.700000 -0.338200 -0.426800 -0.192000 0.592000 -0.776000 --0.700000 -0.301200 -0.401600 0.016000 0.504000 -0.856000 --0.736800 -0.351500 -0.426800 -0.240000 0.480000 -0.832000 --0.750000 -0.301200 -0.392900 -0.104000 0.352000 -0.928000 --0.750000 -0.351500 -0.422100 -0.312000 0.448000 -0.824000 --0.800000 -0.301200 -0.380800 -0.264000 0.104000 -0.952000 --0.800000 -0.351500 -0.388300 -0.664000 -0.152000 -0.728000 --0.826000 -0.301200 -0.365800 -0.648000 -0.448000 -0.600000 --0.812200 -0.351500 -0.365800 -0.856000 -0.296000 -0.408000 --0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000 --0.821000 -0.351500 -0.304800 -0.824000 -0.504000 0.232000 --0.850000 -0.306900 -0.304800 -0.768000 -0.624000 0.072000 --0.807300 -0.351500 -0.243900 -0.864000 -0.472000 0.152000 --0.850000 -0.301200 -0.293400 -0.744000 -0.560000 0.336000 --0.834700 -0.301200 -0.243900 -0.840000 -0.504000 0.184000 --0.850000 -0.276800 -0.243900 -0.792000 -0.552000 0.248000 --0.831100 -0.301200 -0.182900 -0.848000 -0.520000 0.016000 --0.850000 -0.271300 -0.182900 -0.816000 -0.568000 0.032000 --0.832400 -0.301200 -0.121900 -0.840000 -0.528000 0.048000 --0.850000 -0.274400 -0.121900 -0.816000 -0.568000 0.008000 --0.826600 -0.301200 -0.060900 -0.824000 -0.544000 0.120000 --0.850000 -0.265600 -0.060900 -0.808000 -0.568000 0.104000 --0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000 --0.850000 -0.254700 0.000000 -0.800000 -0.568000 0.168000 --0.805900 -0.301200 0.060900 -0.800000 -0.536000 0.232000 --0.850000 -0.251000 0.014600 -0.800000 -0.560000 0.176000 --0.838400 -0.251000 0.060900 -0.808000 -0.528000 0.248000 --0.850000 -0.233200 0.060900 -0.816000 -0.512000 0.248000 --0.819200 -0.251000 0.121900 -0.760000 -0.496000 0.400000 --0.850000 -0.203500 0.121900 -0.792000 -0.528000 0.288000 --0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000 --0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000 --0.800000 -0.206500 0.182900 -0.304000 -0.264000 0.912000 --0.803100 -0.200800 0.182900 -0.456000 -0.168000 0.864000 --0.800000 -0.200800 0.184500 -0.256000 -0.128000 0.952000 --0.836800 -0.150600 0.182900 -0.304000 -0.304000 0.896000 --0.800000 -0.150600 0.189500 -0.240000 -0.056000 0.960000 --0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000 --0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000 --0.850000 -0.100400 0.192600 -0.136000 -0.312000 0.936000 --0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000 --0.850000 -0.050200 0.193400 0.200000 0.072000 0.968000 --0.809300 -0.050200 0.182900 0.232000 0.160000 0.952000 --0.850000 0.000000 0.186200 0.256000 0.144000 0.952000 --0.839600 0.000000 0.182900 0.264000 0.152000 0.944000 --0.850000 0.016800 0.182900 0.328000 0.184000 0.920000 --0.800000 0.000000 0.163200 0.400000 0.288000 0.864000 --0.850000 0.050200 0.170400 0.488000 0.296000 0.816000 --0.800000 0.050200 0.139800 0.504000 0.392000 0.760000 --0.800000 0.000000 0.163200 0.400000 0.288000 0.864000 --0.781300 0.050200 0.121900 0.536000 0.400000 0.736000 --0.750000 0.000000 0.129400 0.496000 0.360000 0.776000 --0.750000 0.012900 0.121900 0.496000 0.384000 0.768000 --0.740500 0.000000 0.121900 0.504000 0.352000 0.784000 --0.750000 0.050200 0.097600 0.464000 0.408000 0.776000 --0.700000 0.000000 0.089700 0.584000 0.336000 0.736000 --0.700000 0.050200 0.061900 0.536000 0.368000 0.752000 --0.666100 0.000000 0.060900 0.560000 0.376000 0.728000 --0.699000 0.050200 0.060900 0.608000 0.360000 0.696000 --0.650000 0.000000 0.045200 0.576000 0.400000 0.704000 --0.650000 0.050200 0.008200 0.568000 0.384000 0.720000 --0.609800 0.000000 0.000000 0.696000 0.384000 0.592000 --0.641800 0.050200 0.000000 0.616000 0.400000 0.664000 --0.600000 0.000000 -0.017800 0.736000 0.384000 0.544000 --0.600000 0.050200 -0.054100 0.640000 0.448000 0.616000 --0.573200 0.000000 -0.060900 0.920000 0.296000 -0.248000 --0.594700 0.050200 -0.060900 0.744000 0.504000 0.416000 --0.594700 0.050200 -0.060900 0.744000 0.504000 0.416000 --1.000000 0.050200 0.254800 0.280000 0.504000 0.808000 --1.000000 0.050200 0.254800 0.280000 0.504000 0.808000 --1.000000 0.000000 0.260200 0.424000 -0.312000 0.840000 --0.973900 0.050200 0.243900 0.312000 0.448000 0.832000 --0.976100 0.000000 0.243900 0.464000 -0.432000 0.768000 --0.950000 0.050200 0.232900 0.312000 0.424000 0.840000 --0.950000 0.000000 0.224500 0.344000 -0.144000 0.920000 --0.900000 0.050200 0.202100 0.368000 0.256000 0.888000 --0.900000 0.000000 0.204000 0.296000 0.088000 0.944000 --0.865600 0.050200 0.182900 0.480000 0.256000 0.832000 --0.850000 0.000000 0.186200 0.256000 0.144000 0.952000 --0.850000 0.016800 0.182900 0.328000 0.184000 0.920000 --0.865600 0.050200 0.182900 0.480000 0.256000 0.832000 --0.850000 0.050200 0.170400 0.488000 0.296000 0.816000 --0.850000 0.050200 0.170400 0.488000 0.296000 0.816000 --1.000000 0.000000 0.260200 0.424000 -0.312000 0.840000 --1.000000 0.000000 0.260200 0.424000 -0.312000 0.840000 --0.976100 0.000000 0.243900 0.464000 -0.432000 0.768000 --1.000000 -0.016700 0.243900 0.424000 -0.608000 0.656000 --0.950000 0.000000 0.224500 0.344000 -0.144000 0.920000 --1.000000 -0.050200 0.185900 -0.256000 -0.768000 0.576000 --0.950000 -0.050200 0.212200 0.160000 -0.384000 0.904000 --1.000000 -0.052000 0.182900 -0.336000 -0.760000 0.544000 --0.950000 -0.074300 0.182900 -0.344000 -0.776000 0.520000 --1.000000 -0.075600 0.121900 -0.328000 -0.896000 0.264000 --0.950000 -0.095300 0.121900 -0.400000 -0.864000 0.280000 --1.000000 -0.090800 0.060900 -0.320000 -0.912000 0.248000 --0.950000 -0.100400 0.101700 -0.400000 -0.872000 0.264000 --0.973400 -0.100400 0.060900 -0.344000 -0.904000 0.240000 --0.950000 -0.110600 0.060900 -0.432000 -0.856000 0.248000 --1.000000 -0.100400 0.014600 -0.304000 -0.920000 0.208000 --0.950000 -0.123700 0.000000 -0.488000 -0.840000 0.216000 --1.000000 -0.103100 0.000000 -0.304000 -0.920000 0.208000 --0.950000 -0.136200 -0.060900 -0.528000 -0.832000 0.152000 --1.000000 -0.112800 -0.060900 -0.376000 -0.912000 0.144000 --0.950000 -0.144800 -0.121900 -0.536000 -0.832000 0.120000 --1.000000 -0.120900 -0.121900 -0.400000 -0.904000 0.136000 --0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000 --1.000000 -0.129600 -0.182900 -0.400000 -0.904000 0.136000 --0.952800 -0.150600 -0.182900 -0.568000 -0.808000 0.136000 --1.000000 -0.135800 -0.243900 -0.400000 -0.904000 0.096000 --0.966700 -0.150600 -0.243900 -0.472000 -0.864000 0.152000 --1.000000 -0.142300 -0.304800 -0.328000 -0.456000 -0.824000 --0.989000 -0.150600 -0.304800 -0.440000 -0.624000 -0.640000 --1.000000 -0.100400 -0.332000 -0.256000 -0.392000 -0.880000 --0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000 --0.950000 -0.100400 -0.349400 -0.088000 -0.160000 -0.976000 --0.900000 -0.150600 -0.338300 -0.216000 -0.104000 -0.968000 --0.900000 -0.100400 -0.346700 0.112000 -0.048000 -0.984000 --0.850000 -0.150600 -0.349400 0.072000 0.056000 -0.992000 --0.850000 -0.100400 -0.332400 0.280000 0.112000 -0.952000 --0.800000 -0.150600 -0.340500 0.312000 0.288000 -0.896000 --0.800000 -0.100400 -0.313000 0.368000 0.216000 -0.896000 --0.750000 -0.150600 -0.317800 0.416000 0.384000 -0.816000 --0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000 --0.750000 -0.129200 -0.304800 0.392000 0.376000 -0.832000 --0.750000 -0.100400 -0.291100 0.336000 0.256000 -0.896000 --0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000 --0.700000 -0.100400 -0.274700 0.392000 0.112000 -0.904000 --0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000 --0.650000 -0.100400 -0.251900 0.448000 0.224000 -0.856000 --0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000 --0.638400 -0.100400 -0.243900 0.560000 0.160000 -0.808000 --0.612700 -0.150600 -0.243900 0.496000 0.576000 -0.640000 --0.600000 -0.100400 -0.193800 0.776000 0.296000 -0.544000 --0.600000 -0.150600 -0.229400 0.416000 0.744000 -0.512000 --0.612700 -0.150600 -0.243900 0.496000 0.576000 -0.640000 --0.600000 -0.160400 -0.243900 0.432000 0.688000 -0.576000 --0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000 --0.600000 -0.200800 -0.299500 0.000000 0.872000 -0.480000 --0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000 --0.600000 -0.203400 -0.304800 0.008000 0.768000 -0.632000 --0.650000 -0.201600 -0.304800 0.104000 0.688000 -0.704000 --0.600000 -0.251000 -0.360600 -0.120000 0.624000 -0.760000 --0.650000 -0.251000 -0.354800 0.152000 0.632000 -0.752000 --0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000 --0.650000 -0.261300 -0.365800 0.088000 0.568000 -0.808000 --0.600000 -0.301200 -0.399100 0.008000 0.480000 -0.872000 --0.650000 -0.301200 -0.398600 0.000000 0.528000 -0.840000 --0.650000 -0.261300 -0.365800 0.088000 0.568000 -0.808000 --0.700000 -0.301200 -0.401600 0.016000 0.504000 -0.856000 --0.700000 -0.252100 -0.365800 0.096000 0.552000 -0.824000 --0.750000 -0.301200 -0.392900 -0.104000 0.352000 -0.928000 --0.707800 -0.251000 -0.365800 0.064000 0.432000 -0.896000 --0.750000 -0.251000 -0.369800 0.056000 0.280000 -0.952000 --0.750000 -0.240500 -0.365800 0.056000 0.272000 -0.952000 --0.800000 -0.251000 -0.370300 -0.064000 0.200000 -0.976000 --0.800000 -0.234100 -0.365800 -0.112000 0.264000 -0.952000 --0.828000 -0.251000 -0.365800 -0.248000 0.216000 -0.936000 --0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000 --0.850000 -0.251000 -0.359600 -0.320000 0.248000 -0.912000 --0.850000 -0.200800 -0.351200 -0.168000 0.112000 -0.976000 --0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000 --0.900000 -0.200800 -0.331500 -0.576000 -0.328000 -0.736000 --0.900000 -0.236500 -0.304800 -0.680000 -0.456000 -0.560000 --0.931500 -0.200800 -0.304800 -0.648000 -0.520000 -0.544000 --0.900000 -0.212400 -0.243900 -0.672000 -0.712000 0.176000 --0.914100 -0.200800 -0.243900 -0.664000 -0.728000 0.128000 --0.900000 -0.206900 -0.182900 -0.648000 -0.752000 0.056000 --0.907400 -0.200800 -0.182900 -0.688000 -0.712000 0.072000 --0.900000 -0.204500 -0.121900 -0.688000 -0.712000 0.104000 --0.903800 -0.200800 -0.121900 -0.696000 -0.704000 0.120000 --0.900000 -0.200800 -0.096200 -0.752000 -0.632000 0.128000 --0.943100 -0.150600 -0.121900 -0.672000 -0.720000 0.120000 --0.900000 -0.192500 -0.060900 -0.856000 -0.488000 0.144000 --0.932400 -0.150600 -0.060900 -0.688000 -0.696000 0.176000 --0.900000 -0.169600 0.000000 -0.800000 -0.552000 0.224000 --0.915700 -0.150600 0.000000 -0.696000 -0.672000 0.232000 --0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000 --0.950000 -0.123700 0.000000 -0.488000 -0.840000 0.216000 --0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000 --0.950000 -0.110600 0.060900 -0.432000 -0.856000 0.248000 --0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000 --0.950000 -0.100400 0.101700 -0.400000 -0.872000 0.264000 --0.939400 -0.100400 0.121900 -0.456000 -0.816000 0.336000 --0.950000 -0.095300 0.121900 -0.400000 -0.864000 0.280000 --0.900000 -0.100400 0.174900 -0.400000 -0.624000 0.656000 --0.950000 -0.074300 0.182900 -0.344000 -0.776000 0.520000 --0.900000 -0.094400 0.182900 -0.312000 -0.608000 0.720000 --0.950000 -0.050200 0.212200 0.160000 -0.384000 0.904000 --0.900000 -0.050200 0.208600 0.200000 -0.168000 0.960000 --0.950000 0.000000 0.224500 0.344000 -0.144000 0.920000 --0.900000 0.000000 0.204000 0.296000 0.088000 0.944000 --0.900000 -0.050200 0.208600 0.200000 -0.168000 0.960000 --0.850000 0.000000 0.186200 0.256000 0.144000 0.952000 --0.850000 -0.050200 0.193400 0.200000 0.072000 0.968000 --0.900000 -0.050200 0.208600 0.200000 -0.168000 0.960000 --0.850000 -0.100400 0.192600 -0.136000 -0.312000 0.936000 --0.900000 -0.094400 0.182900 -0.312000 -0.608000 0.720000 --0.886800 -0.100400 0.182900 -0.288000 -0.576000 0.752000 --0.900000 -0.100400 0.174900 -0.400000 -0.624000 0.656000 --0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000 --0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000 --0.850000 -0.150600 0.175600 -0.632000 -0.392000 0.664000 --0.878400 -0.150600 0.121900 -0.736000 -0.560000 0.368000 --0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000 --0.851500 -0.200800 0.121900 -0.832000 -0.360000 0.408000 --0.850000 -0.203500 0.121900 -0.792000 -0.528000 0.288000 --0.869300 -0.200800 0.060900 -0.824000 -0.496000 0.248000 --0.850000 -0.233200 0.060900 -0.816000 -0.512000 0.248000 --0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000 --0.850000 -0.251000 0.014600 -0.800000 -0.560000 0.176000 --0.852600 -0.251000 0.000000 -0.800000 -0.568000 0.168000 --0.850000 -0.254700 0.000000 -0.800000 -0.568000 0.168000 --0.860100 -0.251000 -0.060900 -0.808000 -0.568000 0.112000 --0.850000 -0.265600 -0.060900 -0.808000 -0.568000 0.104000 --0.866600 -0.251000 -0.121900 -0.808000 -0.576000 0.072000 --0.850000 -0.274400 -0.121900 -0.816000 -0.568000 0.008000 --0.864200 -0.251000 -0.182900 -0.800000 -0.592000 0.000000 --0.850000 -0.271300 -0.182900 -0.816000 -0.568000 0.032000 --0.869200 -0.251000 -0.243900 -0.768000 -0.600000 0.200000 --0.850000 -0.276800 -0.243900 -0.792000 -0.552000 0.248000 --0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000 --0.850000 -0.301200 -0.293400 -0.744000 -0.560000 0.336000 --0.854400 -0.301200 -0.304800 -0.776000 -0.608000 0.112000 --0.850000 -0.306900 -0.304800 -0.768000 -0.624000 0.072000 --0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000 --0.854400 -0.301200 -0.304800 -0.776000 -0.608000 0.112000 --0.850000 -0.251000 -0.359600 -0.320000 0.248000 -0.912000 --0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000 --0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000 --1.000000 0.100400 0.207000 0.040000 0.608000 0.784000 --1.000000 0.100400 0.207000 0.040000 0.608000 0.784000 --0.950000 0.100400 0.204500 0.176000 0.504000 0.840000 --1.000000 0.136100 0.182900 0.152000 0.600000 0.776000 --0.950000 0.127100 0.182900 0.248000 0.536000 0.800000 --1.000000 0.150600 0.170300 0.208000 0.568000 0.792000 --0.950000 0.150600 0.154300 0.208000 0.640000 0.736000 --1.000000 0.192500 0.121900 0.192000 0.664000 0.720000 --0.950000 0.178500 0.121900 0.272000 0.648000 0.704000 --1.000000 0.200800 0.112700 0.192000 0.656000 0.720000 --0.950000 0.200800 0.096100 0.208000 0.672000 0.704000 --1.000000 0.241600 0.060900 0.248000 0.768000 0.584000 --0.950000 0.226300 0.060900 0.264000 0.760000 0.584000 --1.000000 0.251000 0.045400 0.264000 0.768000 0.568000 --0.950000 0.251000 0.016800 0.288000 0.808000 0.504000 --1.000000 0.274600 0.000000 0.264000 0.848000 0.448000 --0.950000 0.258900 0.000000 0.296000 0.848000 0.432000 --1.000000 0.294800 -0.060900 0.312000 0.944000 0.080000 --0.950000 0.277400 -0.060900 0.336000 0.928000 0.080000 --1.000000 0.286500 -0.121900 0.328000 0.872000 -0.344000 --0.950000 0.267200 -0.121900 0.344000 0.864000 -0.336000 --1.000000 0.256900 -0.182900 0.288000 0.752000 -0.584000 --0.950000 0.251000 -0.157200 0.320000 0.808000 -0.480000 --0.985000 0.251000 -0.182900 0.288000 0.752000 -0.576000 --0.950000 0.237800 -0.182900 0.296000 0.760000 -0.568000 --1.000000 0.251000 -0.191500 0.280000 0.728000 -0.616000 --0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000 --1.000000 0.207900 -0.243900 0.232000 0.640000 -0.728000 --0.980800 0.200800 -0.243900 0.232000 0.632000 -0.736000 --1.000000 0.200800 -0.251300 0.232000 0.624000 -0.736000 --0.950000 0.189400 -0.243900 0.264000 0.616000 -0.728000 --1.000000 0.150600 -0.296000 0.168000 0.544000 -0.816000 --0.950000 0.150600 -0.281200 0.240000 0.600000 -0.752000 --1.000000 0.137800 -0.304800 0.104000 0.472000 -0.872000 --0.950000 0.126000 -0.304800 0.168000 0.528000 -0.824000 --1.000000 0.100400 -0.326700 0.072000 0.384000 -0.912000 --0.950000 0.100400 -0.325900 0.192000 0.384000 -0.896000 --1.000000 0.050200 -0.349300 0.080000 0.216000 -0.968000 --0.950000 0.050200 -0.340200 0.184000 0.072000 -0.976000 --1.000000 0.000000 -0.357700 0.216000 -0.064000 -0.968000 --0.950000 0.000000 -0.337100 0.184000 -0.088000 -0.976000 --1.000000 -0.050200 -0.339100 0.152000 -0.176000 -0.968000 --0.950000 -0.050200 -0.337400 0.088000 0.008000 -0.992000 --1.000000 -0.100400 -0.332000 -0.256000 -0.392000 -0.880000 --0.950000 -0.100400 -0.349400 -0.088000 -0.160000 -0.976000 --0.950000 -0.050200 -0.337400 0.088000 0.008000 -0.992000 --0.900000 -0.100400 -0.346700 0.112000 -0.048000 -0.984000 --0.900000 -0.050200 -0.330000 0.160000 0.128000 -0.976000 --0.850000 -0.100400 -0.332400 0.280000 0.112000 -0.952000 --0.850000 -0.050200 -0.323400 0.248000 0.176000 -0.944000 --0.800000 -0.100400 -0.313000 0.368000 0.216000 -0.896000 --0.808200 -0.050200 -0.304800 0.280000 0.136000 -0.944000 --0.800000 -0.066700 -0.304800 0.296000 0.144000 -0.936000 --0.800000 -0.050200 -0.302200 0.264000 0.120000 -0.952000 --0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000 --0.750000 -0.050200 -0.287100 0.288000 0.040000 -0.952000 --0.750000 -0.100400 -0.291100 0.336000 0.256000 -0.896000 --0.700000 -0.050200 -0.272000 0.360000 0.104000 -0.920000 --0.700000 -0.100400 -0.274700 0.392000 0.112000 -0.904000 --0.650000 -0.050200 -0.249300 0.496000 0.208000 -0.840000 --0.650000 -0.100400 -0.251900 0.448000 0.224000 -0.856000 --0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000 --0.638400 -0.100400 -0.243900 0.560000 0.160000 -0.808000 --0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000 --0.600000 -0.100400 -0.193800 0.776000 0.296000 -0.544000 --0.600000 -0.077900 -0.182900 0.856000 0.208000 -0.464000 --0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000 --0.600000 -0.050200 -0.162700 0.904000 0.232000 -0.344000 --0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000 --0.600000 -0.008200 -0.121900 0.848000 0.208000 -0.472000 --0.601900 0.000000 -0.121900 0.848000 0.208000 -0.472000 --0.600000 0.000000 -0.117700 0.848000 0.200000 -0.488000 --0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000 --0.600000 0.050200 -0.083400 0.800000 0.528000 -0.248000 --0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000 --0.600000 0.057600 -0.060900 0.728000 0.536000 0.408000 --0.650000 0.100400 -0.098000 0.720000 0.624000 -0.288000 --0.638000 0.100400 -0.060900 0.672000 0.632000 0.368000 --0.650000 0.112000 -0.060900 0.672000 0.704000 0.200000 --0.650000 0.100400 -0.043200 0.600000 0.608000 0.496000 --0.689800 0.150600 -0.060900 0.640000 0.736000 0.192000 --0.680200 0.100400 0.000000 0.600000 0.440000 0.656000 --0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000 --0.700000 0.121800 0.000000 0.536000 0.544000 0.632000 --0.734000 0.150600 0.000000 0.496000 0.640000 0.576000 --0.700000 0.100400 0.019100 0.504000 0.504000 0.688000 --0.750000 0.150600 0.014500 0.472000 0.624000 0.608000 --0.744800 0.100400 0.060900 0.496000 0.456000 0.728000 --0.750000 0.106000 0.060900 0.496000 0.464000 0.728000 --0.750000 0.100400 0.065100 0.488000 0.448000 0.736000 --0.796300 0.150600 0.060900 0.512000 0.584000 0.616000 --0.800000 0.100400 0.105500 0.480000 0.456000 0.736000 --0.800000 0.150600 0.064100 0.424000 0.560000 0.704000 --0.820700 0.100400 0.121900 0.496000 0.488000 0.704000 --0.850000 0.150600 0.098600 0.360000 0.600000 0.704000 --0.850000 0.127100 0.121900 0.424000 0.560000 0.704000 --0.892900 0.150600 0.121900 0.360000 0.624000 0.680000 --0.850000 0.100400 0.150400 0.488000 0.512000 0.696000 --0.900000 0.150600 0.126400 0.344000 0.632000 0.688000 --0.897500 0.100400 0.182900 0.392000 0.408000 0.816000 --0.900000 0.101900 0.182900 0.304000 0.552000 0.768000 --0.900000 0.100400 0.184100 0.296000 0.408000 0.856000 --0.950000 0.127100 0.182900 0.248000 0.536000 0.800000 --0.950000 0.100400 0.204500 0.176000 0.504000 0.840000 --0.950000 0.100400 0.204500 0.176000 0.504000 0.840000 --0.886800 -0.100400 0.182900 -0.288000 -0.576000 0.752000 --0.886800 -0.100400 0.182900 -0.288000 -0.576000 0.752000 --0.850000 -0.100400 0.192600 -0.136000 -0.312000 0.936000 --0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000 --0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000 --0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000 --0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000 --0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000 --0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000 --0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000 --0.750000 -0.100400 0.174700 0.320000 0.192000 0.920000 --0.750000 -0.050200 0.155100 0.464000 0.288000 0.832000 --0.700000 -0.100400 0.138900 0.488000 0.288000 0.816000 --0.708600 -0.050200 0.121900 0.496000 0.344000 0.784000 --0.700000 -0.062200 0.121900 0.504000 0.344000 0.784000 --0.700000 -0.050200 0.115300 0.496000 0.344000 0.792000 --0.677900 -0.100400 0.121900 0.528000 0.328000 0.776000 --0.650000 -0.050200 0.076400 0.576000 0.320000 0.744000 --0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000 --0.635700 -0.050200 0.060900 0.640000 0.304000 0.696000 --0.612900 -0.100400 0.060900 0.624000 0.376000 0.672000 --0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000 --0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000 --0.584800 -0.050200 0.000000 0.744000 0.336000 0.568000 --0.565600 -0.100400 0.000000 0.744000 0.440000 0.496000 --0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000 --0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000 --0.550000 -0.066800 -0.060900 0.944000 0.320000 -0.008000 --0.533200 -0.100400 -0.060900 0.712000 0.696000 -0.024000 --0.550000 -0.100400 -0.079500 0.552000 0.552000 -0.616000 --0.500000 -0.119500 -0.060900 -0.160000 0.976000 0.112000 --0.550000 -0.145600 -0.121900 0.512000 0.792000 -0.312000 --0.500000 -0.144400 -0.121900 -0.376000 0.880000 -0.280000 --0.550000 -0.150600 -0.142400 0.376000 0.896000 -0.200000 --0.500000 -0.150600 -0.154000 -0.424000 0.880000 -0.160000 --0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000 --0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000 --0.550000 -0.172700 -0.243900 0.008000 0.856000 -0.512000 --0.500000 -0.169200 -0.243900 -0.328000 0.880000 -0.312000 --0.550000 -0.200800 -0.303600 -0.040000 0.880000 -0.464000 --0.500000 -0.196700 -0.304800 -0.120000 0.848000 -0.504000 --0.544700 -0.200800 -0.304800 -0.080000 0.824000 -0.552000 --0.500000 -0.200800 -0.313000 -0.112000 0.824000 -0.544000 --0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000 --0.500000 -0.238600 -0.365800 -0.072000 0.656000 -0.744000 --0.550000 -0.245600 -0.365800 -0.104000 0.680000 -0.720000 --0.500000 -0.251000 -0.377000 -0.032000 0.528000 -0.840000 --0.550000 -0.251000 -0.371400 -0.120000 0.616000 -0.768000 --0.500000 -0.301200 -0.402500 0.040000 0.344000 -0.936000 --0.550000 -0.301200 -0.401000 0.000000 0.424000 -0.904000 --0.500000 -0.351500 -0.423900 0.056000 0.504000 -0.856000 --0.550000 -0.349500 -0.426800 0.056000 0.416000 -0.904000 --0.538500 -0.351500 -0.426800 0.048000 0.480000 -0.872000 --0.500000 -0.351500 -0.423900 0.056000 0.504000 -0.856000 --0.500000 -0.355300 -0.426800 0.056000 0.520000 -0.848000 --0.450000 -0.351500 -0.418600 0.080000 0.512000 -0.848000 --0.450000 -0.362400 -0.426800 0.064000 0.520000 -0.848000 --0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000 --0.400000 -0.368700 -0.426800 0.024000 0.560000 -0.824000 --0.350000 -0.351500 -0.416300 -0.176000 0.600000 -0.768000 --0.350000 -0.360100 -0.426800 -0.128000 0.680000 -0.712000 --0.319100 -0.351500 -0.426800 -0.216000 0.568000 -0.784000 --0.350000 -0.351500 -0.416300 -0.176000 0.600000 -0.768000 --0.300000 -0.341100 -0.426800 -0.128000 0.536000 -0.832000 --0.350000 -0.301200 -0.377400 0.232000 0.208000 -0.944000 --0.300000 -0.301200 -0.369600 0.320000 0.544000 -0.768000 --0.350000 -0.251000 -0.367200 0.240000 0.168000 -0.952000 --0.300000 -0.296900 -0.365800 0.296000 0.528000 -0.784000 --0.345700 -0.251000 -0.365800 0.320000 0.336000 -0.880000 --0.300000 -0.251000 -0.348000 0.192000 0.248000 -0.944000 --0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000 --0.300000 -0.200800 -0.340600 0.016000 0.280000 -0.952000 --0.350000 -0.200800 -0.339000 0.200000 0.416000 -0.880000 --0.300000 -0.150600 -0.319300 -0.256000 0.480000 -0.832000 --0.350000 -0.159400 -0.304800 -0.248000 0.528000 -0.808000 --0.331500 -0.150600 -0.304800 -0.256000 0.464000 -0.840000 --0.350000 -0.150600 -0.298700 -0.264000 0.464000 -0.840000 --0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000 --0.350000 -0.100400 -0.248500 -0.576000 0.440000 -0.680000 --0.300000 -0.100400 -0.298100 -0.480000 0.288000 -0.824000 --0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000 --0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000 --0.321700 -0.050200 -0.243900 -0.656000 0.344000 -0.656000 --0.300000 0.000000 -0.248500 -0.656000 0.560000 -0.488000 --0.301700 0.000000 -0.243900 -0.744000 0.392000 -0.536000 --0.300000 0.001800 -0.243900 -0.496000 0.680000 -0.520000 --0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000 --0.300000 0.050200 -0.185100 -0.648000 0.560000 -0.504000 --0.301000 0.050200 -0.182900 -0.704000 0.472000 -0.512000 --0.300000 0.052000 -0.182900 -0.664000 0.464000 -0.568000 --0.335400 0.050200 -0.121900 -0.752000 0.472000 -0.456000 --0.300000 0.100400 -0.141500 -0.560000 0.512000 -0.640000 --0.317300 0.100400 -0.121900 -0.712000 0.264000 -0.640000 --0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000 --0.350000 0.100400 -0.076700 -0.736000 0.256000 -0.616000 --0.300000 0.150600 -0.105900 -0.768000 0.536000 -0.320000 --0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000 --0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000 --0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000 --0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000 --0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000 --0.300000 0.112500 0.000000 -0.064000 0.472000 0.872000 --0.300000 0.100400 0.006400 -0.200000 0.408000 0.880000 --0.250000 0.104200 0.000000 0.144000 0.480000 0.856000 --0.250000 0.100400 0.002600 0.144000 0.496000 0.848000 --0.238500 0.100400 0.000000 0.152000 0.496000 0.848000 --0.250000 0.050200 0.048300 0.000000 0.552000 0.832000 --0.200000 0.089800 0.000000 0.216000 0.544000 0.800000 --0.200000 0.050200 0.037800 0.512000 0.448000 0.720000 --0.163800 0.050200 0.000000 0.704000 0.216000 0.664000 --0.200000 0.020500 0.060900 0.664000 0.440000 0.600000 --0.150800 0.000000 0.000000 0.744000 0.072000 0.656000 --0.190300 0.000000 0.060900 0.816000 0.200000 0.536000 --0.152800 -0.050200 0.000000 0.848000 0.032000 0.520000 --0.193200 -0.050200 0.060900 0.808000 0.008000 0.584000 --0.150600 -0.100400 0.000000 0.800000 0.040000 0.592000 --0.190200 -0.100400 0.060900 0.752000 -0.248000 0.600000 --0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000 --0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000 --0.150000 -0.150600 0.010200 0.376000 0.208000 0.896000 --0.200000 -0.150600 0.042600 0.640000 -0.096000 0.752000 --0.150000 -0.200800 0.013600 0.104000 0.200000 0.968000 --0.200000 -0.200800 0.045500 0.568000 -0.152000 0.808000 --0.150000 -0.251000 0.002400 -0.056000 -0.176000 0.976000 --0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000 --0.150000 -0.301200 0.010200 -0.304000 -0.280000 0.904000 --0.200000 -0.279600 0.000000 -0.016000 -0.496000 0.864000 --0.169100 -0.301200 0.000000 -0.376000 -0.392000 0.832000 --0.200000 -0.301200 -0.017500 -0.064000 -0.432000 0.896000 --0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000 --0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000 --0.150000 -0.351500 -0.001100 -0.192000 -0.352000 0.912000 --0.200000 -0.401700 -0.023400 -0.056000 -0.008000 0.992000 --0.150000 -0.401700 -0.019000 0.408000 -0.232000 0.880000 --0.200000 -0.451900 -0.018000 0.376000 -0.112000 0.912000 --0.150000 -0.451900 -0.041900 0.560000 -0.440000 0.696000 --0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000 --0.150000 -0.470000 -0.060900 0.568000 -0.552000 0.600000 --0.181900 -0.502100 -0.060900 0.504000 -0.680000 0.520000 --0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000 --0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000 --0.150000 -0.505100 -0.121900 0.584000 -0.768000 0.240000 --0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000 --0.150000 -0.510100 -0.182900 0.616000 -0.760000 0.168000 --0.200000 -0.549300 -0.182900 0.504000 -0.784000 0.344000 --0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000 --0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000 --0.172800 -0.552300 -0.243900 0.592000 -0.568000 0.560000 --0.200000 -0.579600 -0.243900 0.568000 -0.648000 0.496000 --0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000 --0.200000 -0.602500 -0.268600 0.488000 -0.432000 0.752000 --0.150000 -0.602500 -0.302600 0.392000 -0.240000 0.880000 --0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000 --0.150000 -0.609400 -0.304800 0.840000 -0.512000 0.152000 --0.171500 -0.652700 -0.304800 0.576000 -0.304000 0.752000 --0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000 --0.200000 -0.652700 -0.326500 0.488000 -0.272000 -0.824000 --0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000 --0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000 --0.229500 -0.602500 -0.365800 0.408000 -0.240000 -0.872000 --0.250000 -0.639500 -0.365800 0.216000 -0.224000 -0.944000 --0.250000 -0.602500 -0.376000 0.360000 -0.328000 -0.872000 --0.282800 -0.652700 -0.365800 0.080000 -0.160000 -0.976000 --0.300000 -0.602500 -0.397300 -0.248000 -0.488000 -0.832000 --0.300000 -0.652700 -0.367500 0.064000 -0.112000 -0.984000 --0.328400 -0.602500 -0.365800 -0.832000 -0.248000 -0.488000 --0.350000 -0.652700 -0.376000 0.560000 0.160000 -0.808000 --0.350000 -0.629600 -0.365800 0.056000 0.640000 -0.760000 --0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000 --0.357100 -0.602500 -0.365800 0.904000 0.256000 -0.312000 --0.400000 -0.621700 -0.426800 0.392000 -0.856000 -0.304000 --0.370300 -0.602500 -0.426800 0.624000 -0.760000 -0.160000 --0.357100 -0.602500 -0.365800 0.904000 0.256000 -0.312000 --0.350000 -0.582100 -0.426800 0.344000 -0.808000 -0.456000 --0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000 --0.300000 -0.582000 -0.426800 0.336000 -0.608000 -0.712000 --0.328400 -0.602500 -0.365800 -0.832000 -0.248000 -0.488000 --0.300000 -0.602500 -0.397300 -0.248000 -0.488000 -0.832000 --0.300000 -0.582000 -0.426800 0.336000 -0.608000 -0.712000 --0.250000 -0.602500 -0.376000 0.360000 -0.328000 -0.872000 --0.275900 -0.552300 -0.426800 0.528000 -0.480000 -0.696000 --0.250000 -0.552300 -0.402600 0.504000 -0.312000 -0.792000 --0.250000 -0.526200 -0.426800 0.576000 -0.448000 -0.672000 --0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000 --0.235700 -0.502100 -0.426800 0.696000 -0.464000 -0.536000 --0.200000 -0.502100 -0.370700 0.184000 -0.352000 -0.912000 --0.200000 -0.459900 -0.426800 0.560000 -0.592000 -0.576000 --0.150000 -0.502100 -0.367300 0.088000 -0.320000 -0.936000 --0.191200 -0.451900 -0.426800 0.664000 -0.480000 -0.560000 --0.150000 -0.451900 -0.368100 0.456000 -0.056000 -0.880000 --0.194300 -0.401700 -0.426800 0.792000 0.416000 -0.432000 --0.150000 -0.417500 -0.365800 0.544000 0.056000 -0.832000 --0.151700 -0.401700 -0.365800 0.568000 0.104000 -0.808000 --0.150000 -0.401700 -0.364300 0.552000 0.080000 -0.824000 --0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000 --0.150000 -0.351500 -0.350300 0.512000 0.192000 -0.832000 --0.200000 -0.351500 -0.343300 0.312000 0.640000 -0.696000 --0.150000 -0.301200 -0.318500 -0.024000 0.504000 -0.856000 --0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000 --0.150000 -0.286300 -0.304800 -0.184000 0.480000 -0.848000 --0.200000 -0.251000 -0.307600 0.408000 0.096000 -0.904000 --0.195100 -0.251000 -0.304800 0.376000 0.112000 -0.912000 --0.200000 -0.200800 -0.306700 0.368000 -0.184000 -0.904000 --0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000 --0.200000 -0.150600 -0.333300 0.216000 -0.272000 -0.936000 --0.150000 -0.159100 -0.304800 0.152000 -0.400000 -0.896000 --0.150000 -0.150600 -0.309500 -0.032000 -0.400000 -0.912000 --0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000 --0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000 --0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000 --0.050000 -0.150600 -0.332400 0.016000 -0.080000 -0.992000 --0.050000 -0.200800 -0.320900 -0.056000 0.280000 -0.952000 -0.000000 -0.150600 -0.318000 0.160000 0.016000 -0.984000 -0.000000 -0.200800 -0.332000 -0.296000 0.528000 -0.784000 -0.050000 -0.150600 -0.318000 0.352000 0.312000 -0.872000 -0.050000 -0.200800 -0.360800 -0.016000 0.576000 -0.808000 -0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000 -0.100000 -0.200800 -0.352600 0.240000 0.528000 -0.800000 -0.100000 -0.151600 -0.304800 -0.176000 0.536000 -0.816000 -0.150000 -0.200800 -0.325200 0.160000 0.176000 -0.968000 -0.101900 -0.150600 -0.304800 -0.296000 0.368000 -0.872000 -0.150000 -0.150600 -0.323600 -0.232000 0.464000 -0.848000 -0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000 -0.150000 -0.100400 -0.322200 0.000000 0.224000 -0.968000 -0.150000 -0.064700 -0.304800 -0.200000 0.328000 -0.912000 -0.185500 -0.100400 -0.304800 0.296000 0.104000 -0.944000 -0.150000 -0.050200 -0.298400 -0.176000 0.328000 -0.920000 -0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000 -0.188500 -0.050200 -0.304800 -0.128000 0.184000 -0.968000 -0.200000 -0.061600 -0.304800 0.000000 -0.144000 -0.984000 -0.200000 -0.050200 -0.307000 0.000000 0.192000 -0.976000 -0.211400 -0.050200 -0.304800 0.152000 0.184000 -0.968000 -0.200000 -0.045300 -0.304800 -0.008000 0.344000 -0.936000 -0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000 -0.200000 0.000000 -0.277300 0.080000 0.528000 -0.840000 -0.250000 0.000000 -0.271900 -0.336000 0.528000 -0.776000 -0.200000 0.025700 -0.243900 0.016000 0.752000 -0.648000 -0.250000 0.018500 -0.243900 -0.144000 0.856000 -0.480000 -0.200000 0.019700 -0.182900 0.160000 0.648000 0.736000 -0.250000 0.002800 -0.182900 0.128000 0.640000 0.752000 -0.200000 0.000000 -0.161400 0.032000 0.656000 0.752000 -0.250000 0.000000 -0.180400 0.176000 0.568000 0.792000 -0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000 -0.250000 -0.050200 -0.132500 0.192000 0.528000 0.816000 -0.222300 -0.050200 -0.121900 0.200000 0.432000 0.872000 -0.250000 -0.068700 -0.121900 0.096000 0.400000 0.904000 -0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000 -0.250000 -0.100400 -0.106800 0.080000 0.336000 0.936000 -0.200000 -0.100400 -0.095800 0.064000 0.272000 0.952000 -0.250000 -0.150600 -0.087200 0.040000 0.104000 0.992000 -0.200000 -0.150600 -0.099300 0.040000 0.104000 0.992000 -0.250000 -0.200800 -0.084100 0.120000 -0.168000 0.976000 -0.200000 -0.200800 -0.086600 0.112000 -0.336000 0.928000 -0.250000 -0.237200 -0.121900 0.048000 -0.656000 0.744000 -0.200000 -0.240500 -0.121900 0.152000 -0.656000 0.728000 -0.250000 -0.251000 -0.140300 -0.072000 -0.512000 0.848000 -0.200000 -0.251000 -0.134700 0.128000 -0.784000 0.600000 -0.250000 -0.301200 -0.149400 -0.376000 -0.584000 0.712000 -0.200000 -0.290700 -0.182900 -0.520000 -0.680000 0.512000 -0.211500 -0.301200 -0.182900 -0.568000 -0.672000 0.464000 -0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000 -0.250000 -0.319600 -0.182900 -0.280000 -0.832000 0.472000 -0.200000 -0.319700 -0.243900 -0.624000 -0.696000 0.328000 -0.250000 -0.343100 -0.243900 -0.320000 -0.920000 0.208000 -0.200000 -0.340400 -0.304800 -0.480000 -0.448000 -0.744000 -0.250000 -0.348300 -0.304800 -0.128000 -0.736000 -0.656000 -0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000 -0.250000 -0.313600 -0.365800 -0.336000 -0.640000 -0.680000 -0.236200 -0.301200 -0.365800 -0.608000 -0.320000 -0.712000 -0.250000 -0.301200 -0.379400 -0.536000 -0.264000 -0.792000 -0.250000 -0.271800 -0.365800 -0.320000 0.360000 -0.872000 -0.300000 -0.301200 -0.372900 0.128000 -0.472000 -0.864000 -0.300000 -0.284400 -0.365800 0.136000 0.360000 -0.920000 -0.333500 -0.301200 -0.365800 0.208000 -0.080000 -0.968000 -0.300000 -0.251000 -0.347800 0.304000 0.384000 -0.864000 -0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000 -0.350000 -0.251000 -0.329500 0.536000 0.472000 -0.688000 -0.400000 -0.301200 -0.307300 0.704000 0.496000 -0.496000 -0.366700 -0.251000 -0.304800 0.704000 0.488000 -0.496000 -0.400000 -0.299100 -0.304800 0.736000 0.472000 -0.472000 -0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000 -0.400000 -0.252300 -0.243900 0.744000 0.488000 -0.440000 -0.398900 -0.251000 -0.182900 0.896000 -0.160000 0.400000 -0.400000 -0.252800 -0.182900 0.760000 0.464000 0.440000 -0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000 -0.400000 -0.301200 -0.149800 0.528000 0.376000 0.752000 -0.350000 -0.260400 -0.121900 0.448000 -0.472000 0.752000 -0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000 -0.328900 -0.251000 -0.121900 -0.264000 -0.304000 0.912000 -0.300000 -0.301200 -0.149800 -0.024000 -0.480000 0.872000 -0.300000 -0.251000 -0.132800 -0.224000 -0.464000 0.856000 -0.250000 -0.301200 -0.149400 -0.376000 -0.584000 0.712000 -0.250000 -0.251000 -0.140300 -0.072000 -0.512000 0.848000 -0.300000 -0.251000 -0.132800 -0.224000 -0.464000 0.856000 -0.250000 -0.237200 -0.121900 0.048000 -0.656000 0.744000 -0.300000 -0.234400 -0.121900 0.104000 -0.472000 0.872000 -0.250000 -0.200800 -0.084100 0.120000 -0.168000 0.976000 -0.300000 -0.200800 -0.101500 0.424000 -0.216000 0.872000 -0.250000 -0.150600 -0.087200 0.040000 0.104000 0.992000 -0.300000 -0.150600 -0.090800 0.240000 -0.024000 0.968000 -0.250000 -0.100400 -0.106800 0.080000 0.336000 0.936000 -0.300000 -0.100400 -0.098900 -0.360000 0.344000 0.856000 -0.250000 -0.068700 -0.121900 0.096000 0.400000 0.904000 -0.300000 -0.060700 -0.121900 -0.512000 0.456000 0.720000 -0.250000 -0.050200 -0.132500 0.192000 0.528000 0.816000 -0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000 -0.250000 0.000000 -0.180400 0.176000 0.568000 0.792000 -0.300000 0.000000 -0.166100 -0.488000 0.464000 0.728000 -0.250000 0.002800 -0.182900 0.128000 0.640000 0.752000 -0.300000 0.018000 -0.182900 -0.296000 0.768000 0.552000 -0.250000 0.018500 -0.243900 -0.144000 0.856000 -0.480000 -0.300000 0.032100 -0.243900 -0.576000 0.680000 -0.432000 -0.250000 0.000000 -0.271900 -0.336000 0.528000 -0.776000 -0.300000 0.000000 -0.302400 -0.544000 0.608000 -0.568000 -0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000 -0.300000 -0.003100 -0.304800 -0.376000 0.424000 -0.816000 -0.266500 -0.050200 -0.304800 -0.280000 0.064000 -0.952000 -0.300000 -0.050200 -0.319900 -0.536000 0.224000 -0.808000 -0.278900 -0.100400 -0.304800 -0.176000 0.256000 -0.944000 -0.300000 -0.100400 -0.310000 -0.248000 0.072000 -0.960000 -0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000 -0.300000 -0.150600 -0.312600 0.312000 -0.200000 -0.920000 -0.250000 -0.150600 -0.317700 0.024000 0.336000 -0.936000 -0.300000 -0.200800 -0.324200 0.480000 0.248000 -0.832000 -0.250000 -0.200800 -0.343100 0.104000 0.232000 -0.960000 -0.300000 -0.251000 -0.347800 0.304000 0.384000 -0.864000 -0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000 -0.300000 -0.284400 -0.365800 0.136000 0.360000 -0.920000 -0.250000 -0.271800 -0.365800 -0.320000 0.360000 -0.872000 -0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000 -0.236200 -0.301200 -0.365800 -0.608000 -0.320000 -0.712000 -0.200000 -0.251000 -0.346500 -0.184000 0.088000 -0.976000 -0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000 -0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000 -0.170700 -0.301200 -0.304800 -0.520000 -0.608000 -0.592000 -0.150000 -0.287400 -0.304800 0.000000 -0.712000 -0.688000 -0.176900 -0.301200 -0.243900 -0.504000 -0.800000 0.304000 -0.150000 -0.287700 -0.243900 -0.208000 -0.968000 0.064000 -0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000 -0.150000 -0.278000 -0.182900 -0.064000 -0.936000 0.328000 -0.200000 -0.290700 -0.182900 -0.520000 -0.680000 0.512000 -0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000 -0.200000 -0.251000 -0.134700 0.128000 -0.784000 0.600000 -0.161400 -0.251000 -0.121900 0.152000 -0.792000 0.576000 -0.200000 -0.240500 -0.121900 0.152000 -0.656000 0.728000 -0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000 -0.200000 -0.200800 -0.086600 0.112000 -0.336000 0.928000 -0.150000 -0.200800 -0.071800 0.312000 -0.208000 0.920000 -0.200000 -0.150600 -0.099300 0.040000 0.104000 0.992000 -0.150000 -0.150600 -0.071000 0.136000 0.176000 0.968000 -0.200000 -0.100400 -0.095800 0.064000 0.272000 0.952000 -0.150000 -0.100400 -0.080500 0.184000 0.336000 0.920000 -0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000 -0.150000 -0.050200 -0.113700 0.032000 0.448000 0.888000 -0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000 -0.150000 -0.036300 -0.121900 0.008000 0.488000 0.864000 -0.200000 0.000000 -0.161400 0.032000 0.656000 0.752000 -0.150000 0.000000 -0.166100 -0.096000 0.688000 0.712000 -0.200000 0.019700 -0.182900 0.160000 0.648000 0.736000 -0.150000 0.016800 -0.182900 -0.152000 0.840000 0.520000 -0.200000 0.025700 -0.243900 0.016000 0.752000 -0.648000 -0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000 -0.200000 0.000000 -0.277300 0.080000 0.528000 -0.840000 -0.150000 0.000000 -0.257100 -0.208000 0.552000 -0.800000 -0.200000 -0.045300 -0.304800 -0.008000 0.344000 -0.936000 -0.150000 -0.050200 -0.298400 -0.176000 0.328000 -0.920000 -0.188500 -0.050200 -0.304800 -0.128000 0.184000 -0.968000 -0.200000 -0.045300 -0.304800 -0.008000 0.344000 -0.936000 -0.200000 -0.050200 -0.307000 0.000000 0.192000 -0.976000 -0.200000 -0.050200 -0.307000 0.000000 0.192000 -0.976000 --0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000 --0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000 --0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000 --0.800000 -0.150600 0.189500 -0.240000 -0.056000 0.960000 --0.750000 -0.136500 0.182900 0.216000 0.112000 0.968000 --0.750000 -0.150600 0.184600 0.192000 0.080000 0.976000 --0.743500 -0.150600 0.182900 0.192000 0.096000 0.968000 --0.750000 -0.200800 0.187200 0.064000 -0.048000 0.992000 --0.703900 -0.200800 0.182900 0.128000 0.064000 0.984000 --0.750000 -0.251000 0.186100 -0.160000 -0.136000 0.976000 --0.700000 -0.208700 0.182900 0.176000 0.120000 0.968000 --0.700000 -0.251000 0.184700 0.008000 -0.024000 0.992000 --0.650000 -0.249200 0.182900 0.176000 0.464000 0.864000 --0.650000 -0.251000 0.183700 0.152000 0.272000 0.944000 --0.638500 -0.251000 0.182900 0.072000 0.424000 0.896000 --0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000 --0.600000 -0.260000 0.182900 0.056000 0.320000 0.944000 --0.600000 -0.301200 0.196400 -0.152000 0.176000 0.968000 --0.550000 -0.264400 0.182900 -0.072000 0.456000 0.880000 --0.550000 -0.301200 0.200100 -0.040000 0.312000 0.944000 --0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000 --0.500000 -0.301200 0.199600 -0.128000 0.216000 0.960000 --0.500000 -0.251000 0.185100 -0.112000 0.632000 0.760000 --0.450000 -0.301200 0.203900 0.032000 0.168000 0.984000 --0.450000 -0.251000 0.195400 -0.152000 0.392000 0.904000 --0.400000 -0.301200 0.211000 0.416000 0.000000 0.904000 --0.400000 -0.251000 0.203200 0.024000 0.208000 0.976000 --0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000 --0.350000 -0.251000 0.206900 0.584000 -0.272000 0.760000 --0.350000 -0.276800 0.182900 0.600000 -0.432000 0.664000 --0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000 --0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000 --0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000 --0.327200 -0.301200 0.121900 0.792000 -0.368000 0.472000 --0.300000 -0.256400 0.121900 0.624000 -0.624000 0.456000 --0.300000 -0.301200 0.065200 0.504000 -0.568000 0.640000 --0.294600 -0.251000 0.121900 0.616000 -0.600000 0.488000 --0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000 --0.250000 -0.251000 0.071500 0.528000 -0.408000 0.736000 --0.250000 -0.262800 0.060900 0.496000 -0.520000 0.688000 --0.236900 -0.251000 0.060900 0.464000 -0.480000 0.728000 --0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000 --0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000 --0.235900 -0.301200 0.000000 0.272000 -0.568000 0.768000 --0.200000 -0.279600 0.000000 -0.016000 -0.496000 0.864000 --0.200000 -0.301200 -0.017500 -0.064000 -0.432000 0.896000 --0.235900 -0.301200 0.000000 0.272000 -0.568000 0.768000 --0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000 --0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000 --0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000 --0.300000 -0.343500 0.000000 0.832000 -0.408000 0.360000 --0.300000 -0.351500 -0.012600 0.872000 -0.352000 0.320000 --0.303300 -0.351500 0.000000 0.888000 -0.344000 0.288000 --0.300000 -0.401700 -0.045100 0.792000 -0.248000 0.544000 --0.319500 -0.401700 0.000000 0.536000 -0.584000 0.592000 --0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000 --0.350000 -0.427600 0.000000 0.560000 -0.752000 0.336000 --0.338500 -0.451900 -0.060900 0.112000 -0.632000 0.760000 --0.350000 -0.451900 -0.058800 0.248000 -0.624000 0.728000 --0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000 --0.400000 -0.451900 -0.009600 0.744000 -0.536000 0.376000 --0.380200 -0.502100 -0.060900 0.648000 -0.616000 0.432000 --0.400000 -0.502100 -0.024700 0.848000 -0.224000 0.464000 --0.400000 -0.527700 -0.060900 0.080000 -0.768000 0.624000 --0.450000 -0.502100 -0.045100 0.560000 -0.696000 0.432000 --0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000 --0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000 --0.478800 -0.552300 -0.060900 0.704000 -0.592000 0.376000 --0.500000 -0.548400 0.000000 0.368000 -0.816000 0.432000 --0.500000 -0.552300 -0.009400 0.352000 -0.840000 0.400000 --0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000 --0.500000 -0.570000 -0.060900 0.480000 -0.800000 0.328000 --0.550000 -0.565800 0.000000 0.224000 -0.872000 0.424000 --0.550000 -0.588500 -0.060900 0.224000 -0.888000 0.384000 --0.600000 -0.566300 0.000000 -0.184000 -0.816000 0.544000 --0.600000 -0.601900 -0.060900 -0.072000 -0.808000 0.568000 --0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000 --0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000 --0.650000 -0.552300 -0.012600 -0.496000 -0.592000 0.624000 --0.685200 -0.552300 -0.060900 -0.696000 -0.384000 0.592000 --0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000 --0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000 --0.674300 -0.502100 0.000000 -0.656000 -0.632000 0.384000 --0.700000 -0.502100 -0.057900 -0.752000 -0.512000 0.400000 --0.700000 -0.478200 0.000000 -0.704000 -0.632000 0.312000 --0.701200 -0.502100 -0.060900 -0.816000 -0.416000 0.392000 --0.719800 -0.451900 0.000000 -0.816000 -0.520000 0.240000 --0.735400 -0.451900 -0.060900 -0.768000 -0.512000 0.360000 --0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000 --0.750000 -0.426100 -0.060900 -0.864000 -0.448000 0.200000 --0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000 --0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000 --0.782800 -0.351500 0.000000 -0.816000 -0.536000 0.208000 --0.794800 -0.351500 -0.060900 -0.816000 -0.552000 0.144000 --0.800000 -0.327900 0.000000 -0.800000 -0.560000 0.176000 --0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000 --0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000 --0.826600 -0.301200 -0.060900 -0.824000 -0.544000 0.120000 --0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000 --0.832400 -0.301200 -0.121900 -0.840000 -0.528000 0.048000 --0.800000 -0.351500 -0.101400 -0.840000 -0.528000 0.104000 --0.802000 -0.351500 -0.121900 -0.840000 -0.520000 0.096000 --0.800000 -0.354700 -0.121900 -0.848000 -0.512000 0.080000 --0.802200 -0.351500 -0.182900 -0.872000 -0.480000 0.016000 --0.800000 -0.355500 -0.182900 -0.872000 -0.472000 0.032000 --0.807300 -0.351500 -0.243900 -0.864000 -0.472000 0.152000 --0.800000 -0.365300 -0.243900 -0.880000 -0.440000 0.160000 --0.821000 -0.351500 -0.304800 -0.824000 -0.504000 0.232000 --0.800000 -0.395700 -0.304800 -0.920000 -0.376000 0.000000 --0.812200 -0.351500 -0.365800 -0.856000 -0.296000 -0.408000 --0.800000 -0.388500 -0.365800 -0.864000 -0.288000 -0.400000 --0.800000 -0.351500 -0.388300 -0.664000 -0.152000 -0.728000 --0.796500 -0.401700 -0.365800 -0.952000 -0.168000 -0.232000 --0.750000 -0.351500 -0.422100 -0.312000 0.448000 -0.824000 --0.777800 -0.401700 -0.426800 -0.928000 0.040000 -0.360000 --0.750000 -0.359700 -0.426800 -0.368000 0.408000 -0.832000 --0.750000 -0.351500 -0.422100 -0.312000 0.448000 -0.824000 --0.736800 -0.351500 -0.426800 -0.240000 0.480000 -0.832000 --0.736800 -0.351500 -0.426800 -0.240000 0.480000 -0.832000 --0.750000 -0.150600 0.184600 0.192000 0.080000 0.976000 --0.750000 -0.150600 0.184600 0.192000 0.080000 0.976000 --0.800000 -0.150600 0.189500 -0.240000 -0.056000 0.960000 --0.750000 -0.200800 0.187200 0.064000 -0.048000 0.992000 --0.800000 -0.200800 0.184500 -0.256000 -0.128000 0.952000 --0.750000 -0.251000 0.186100 -0.160000 -0.136000 0.976000 --0.800000 -0.206500 0.182900 -0.304000 -0.264000 0.912000 --0.762000 -0.251000 0.182900 -0.256000 -0.192000 0.936000 --0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000 --0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000 --0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000 --0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000 --0.783300 -0.301200 0.121900 -0.688000 -0.568000 0.440000 --0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000 --0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000 --0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000 --0.800000 -0.310100 0.060900 -0.800000 -0.544000 0.224000 --0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000 --0.800000 -0.327900 0.000000 -0.800000 -0.560000 0.176000 --0.782800 -0.351500 0.000000 -0.816000 -0.536000 0.208000 --0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000 --0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000 --0.750000 -0.377100 0.060900 -0.760000 -0.552000 0.320000 --0.750000 -0.401700 0.004100 -0.816000 -0.520000 0.232000 --0.731300 -0.401700 0.060900 -0.784000 -0.496000 0.344000 --0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000 --0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000 --0.719800 -0.451900 0.000000 -0.816000 -0.520000 0.240000 --0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000 --0.700000 -0.478200 0.000000 -0.704000 -0.632000 0.312000 --0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000 --0.674300 -0.502100 0.000000 -0.656000 -0.632000 0.384000 --0.650000 -0.502100 0.048300 -0.536000 -0.712000 0.440000 --0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000 --0.640700 -0.502100 0.060900 -0.496000 -0.728000 0.456000 --0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000 --0.600000 -0.531600 0.060900 -0.448000 -0.736000 0.496000 --0.600000 -0.552300 0.023900 -0.224000 -0.776000 0.584000 --0.550000 -0.532000 0.060900 0.080000 -0.776000 0.624000 --0.550000 -0.552300 0.031000 0.256000 -0.800000 0.528000 --0.500000 -0.517700 0.060900 0.632000 -0.632000 0.440000 --0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000 --0.500000 -0.548400 0.000000 0.368000 -0.816000 0.432000 --0.500000 -0.517700 0.060900 0.632000 -0.632000 0.440000 --0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000 --0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000 --0.450000 -0.489500 0.000000 0.584000 -0.760000 0.264000 --0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000 --0.403800 -0.451900 0.000000 0.744000 -0.560000 0.352000 --0.425300 -0.451900 0.060900 0.696000 -0.640000 0.304000 --0.400000 -0.447100 0.000000 0.720000 -0.584000 0.344000 --0.400000 -0.423000 0.060900 0.616000 -0.696000 0.360000 --0.350000 -0.427600 0.000000 0.560000 -0.752000 0.336000 --0.350000 -0.406300 0.060900 0.592000 -0.728000 0.320000 --0.319500 -0.401700 0.000000 0.536000 -0.584000 0.592000 --0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000 --0.303300 -0.351500 0.000000 0.888000 -0.344000 0.288000 --0.319700 -0.351500 0.060900 0.864000 -0.376000 0.328000 --0.300000 -0.343500 0.000000 0.832000 -0.408000 0.360000 --0.300000 -0.305300 0.060900 0.512000 -0.568000 0.632000 --0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000 --0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000 --0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000 --0.250000 -0.262800 0.060900 0.496000 -0.520000 0.688000 --0.250000 -0.262800 0.060900 0.496000 -0.520000 0.688000 --0.762000 -0.251000 0.182900 -0.256000 -0.192000 0.936000 --0.762000 -0.251000 0.182900 -0.256000 -0.192000 0.936000 --0.750000 -0.251000 0.186100 -0.160000 -0.136000 0.976000 --0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000 --0.700000 -0.251000 0.184700 0.008000 -0.024000 0.992000 --0.700000 -0.272200 0.182900 -0.072000 -0.128000 0.984000 --0.650000 -0.251000 0.183700 0.152000 0.272000 0.944000 --0.671000 -0.301200 0.182900 -0.120000 -0.104000 0.984000 --0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000 --0.663400 -0.351500 0.182900 -0.304000 -0.080000 0.944000 --0.650000 -0.351500 0.187800 -0.272000 -0.048000 0.952000 --0.650000 -0.385200 0.182900 -0.496000 -0.152000 0.848000 --0.600000 -0.351500 0.201700 -0.216000 0.016000 0.968000 --0.644900 -0.401700 0.182900 -0.528000 -0.240000 0.808000 --0.600000 -0.401700 0.205900 -0.320000 -0.144000 0.928000 --0.600000 -0.446800 0.182900 -0.240000 -0.464000 0.848000 --0.550000 -0.401700 0.218500 0.000000 -0.272000 0.960000 --0.583500 -0.451900 0.182900 -0.128000 -0.544000 0.824000 --0.550000 -0.451900 0.188900 -0.024000 -0.624000 0.776000 --0.550000 -0.456500 0.182900 0.056000 -0.736000 0.672000 --0.523100 -0.451900 0.182900 0.136000 -0.648000 0.744000 --0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000 --0.500000 -0.451900 0.177400 0.160000 -0.648000 0.736000 --0.500000 -0.486900 0.121900 0.296000 -0.800000 0.504000 --0.450000 -0.451900 0.126400 0.752000 -0.472000 0.448000 --0.450000 -0.453600 0.121900 0.584000 -0.744000 0.288000 --0.447800 -0.451900 0.121900 0.672000 -0.648000 0.344000 --0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000 --0.425300 -0.451900 0.060900 0.696000 -0.640000 0.304000 --0.447800 -0.451900 0.121900 0.672000 -0.648000 0.344000 --0.400000 -0.423000 0.060900 0.616000 -0.696000 0.360000 --0.404400 -0.401700 0.121900 0.648000 -0.656000 0.368000 --0.400000 -0.401700 0.111300 0.640000 -0.680000 0.336000 --0.400000 -0.397400 0.121900 0.632000 -0.672000 0.368000 --0.350000 -0.401700 0.073400 0.632000 -0.688000 0.344000 --0.350000 -0.369000 0.121900 0.736000 -0.464000 0.480000 --0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000 --0.341600 -0.351500 0.121900 0.808000 -0.352000 0.456000 --0.319700 -0.351500 0.060900 0.864000 -0.376000 0.328000 --0.327200 -0.301200 0.121900 0.792000 -0.368000 0.472000 --0.300000 -0.305300 0.060900 0.512000 -0.568000 0.632000 --0.300000 -0.301200 0.065200 0.504000 -0.568000 0.640000 --0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000 --0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000 --0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000 --0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000 --0.650000 -0.351500 0.187800 -0.272000 -0.048000 0.952000 --0.600000 -0.301200 0.196400 -0.152000 0.176000 0.968000 --0.600000 -0.351500 0.201700 -0.216000 0.016000 0.968000 --0.550000 -0.301200 0.200100 -0.040000 0.312000 0.944000 --0.550000 -0.351500 0.211500 0.000000 0.128000 0.984000 --0.500000 -0.301200 0.199600 -0.128000 0.216000 0.960000 --0.500000 -0.351500 0.209200 0.072000 0.104000 0.984000 --0.450000 -0.301200 0.203900 0.032000 0.168000 0.984000 --0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000 --0.400000 -0.301200 0.211000 0.416000 0.000000 0.904000 --0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000 --0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000 --0.389000 -0.351500 0.182900 0.544000 -0.632000 0.536000 --0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000 --0.350000 -0.351500 0.138600 0.680000 -0.440000 0.568000 --0.327200 -0.301200 0.121900 0.792000 -0.368000 0.472000 --0.341600 -0.351500 0.121900 0.808000 -0.352000 0.456000 --0.350000 -0.351500 0.138600 0.680000 -0.440000 0.568000 --0.350000 -0.369000 0.121900 0.736000 -0.464000 0.480000 --0.389000 -0.351500 0.182900 0.544000 -0.632000 0.536000 --0.400000 -0.397400 0.121900 0.632000 -0.672000 0.368000 --0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000 --0.404400 -0.401700 0.121900 0.648000 -0.656000 0.368000 --0.445800 -0.401700 0.182900 0.648000 -0.488000 0.568000 --0.447800 -0.451900 0.121900 0.672000 -0.648000 0.344000 --0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000 --0.450000 -0.451900 0.126400 0.752000 -0.472000 0.448000 --0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000 --0.500000 -0.451900 0.177400 0.160000 -0.648000 0.736000 --0.523100 -0.451900 0.182900 0.136000 -0.648000 0.744000 --0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000 --0.550000 -0.451900 0.188900 -0.024000 -0.624000 0.776000 --0.500000 -0.401700 0.210500 0.208000 -0.296000 0.928000 --0.550000 -0.401700 0.218500 0.000000 -0.272000 0.960000 --0.500000 -0.351500 0.209200 0.072000 0.104000 0.984000 --0.550000 -0.351500 0.211500 0.000000 0.128000 0.984000 --0.550000 -0.401700 0.218500 0.000000 -0.272000 0.960000 --0.600000 -0.351500 0.201700 -0.216000 0.016000 0.968000 --0.600000 -0.401700 0.205900 -0.320000 -0.144000 0.928000 --0.600000 -0.401700 0.205900 -0.320000 -0.144000 0.928000 --0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000 --0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000 --0.500000 -0.249000 0.182900 -0.112000 0.656000 0.744000 --0.500000 -0.251000 0.185100 -0.112000 0.632000 0.760000 --0.450000 -0.233700 0.182900 -0.216000 0.472000 0.848000 --0.450000 -0.251000 0.195400 -0.152000 0.392000 0.904000 --0.400000 -0.206800 0.182900 -0.168000 0.424000 0.880000 --0.400000 -0.251000 0.203200 0.024000 0.208000 0.976000 --0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000 --0.350000 -0.251000 0.206900 0.584000 -0.272000 0.760000 --0.350000 -0.200800 0.190300 -0.112000 0.384000 0.912000 --0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000 --0.300000 -0.200800 0.189700 0.744000 -0.432000 0.496000 --0.300000 -0.205800 0.182900 0.768000 -0.472000 0.416000 --0.296900 -0.200800 0.182900 0.792000 -0.440000 0.408000 --0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000 --0.278100 -0.200800 0.121900 0.816000 -0.432000 0.368000 --0.294600 -0.251000 0.121900 0.616000 -0.600000 0.488000 --0.250000 -0.200800 0.078600 0.664000 -0.312000 0.672000 --0.250000 -0.251000 0.071500 0.528000 -0.408000 0.736000 --0.222100 -0.200800 0.060900 0.488000 -0.184000 0.848000 --0.236900 -0.251000 0.060900 0.464000 -0.480000 0.728000 --0.200000 -0.200800 0.045500 0.568000 -0.152000 0.808000 --0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000 --0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000 --0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000 --0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000 --0.500000 -0.351500 0.209200 0.072000 0.104000 0.984000 --0.450000 -0.401700 0.188700 0.656000 -0.464000 0.584000 --0.500000 -0.401700 0.210500 0.208000 -0.296000 0.928000 --0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000 --0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000 --0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000 --0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000 --0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000 --0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000 --0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000 --0.445800 -0.401700 0.182900 0.648000 -0.488000 0.568000 --0.450000 -0.401700 0.188700 0.656000 -0.464000 0.584000 --0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000 --0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000 --0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000 --0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000 --0.350000 -0.189600 0.182900 -0.288000 0.472000 0.824000 --0.350000 -0.200800 0.190300 -0.112000 0.384000 0.912000 --0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000 --0.300000 -0.200800 0.189700 0.744000 -0.432000 0.496000 --0.300000 -0.150600 0.190700 0.000000 0.520000 0.848000 --0.296900 -0.200800 0.182900 0.792000 -0.440000 0.408000 --0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000 --0.278100 -0.200800 0.121900 0.816000 -0.432000 0.368000 --0.252800 -0.150600 0.121900 0.720000 -0.296000 0.616000 --0.250000 -0.200800 0.078600 0.664000 -0.312000 0.672000 --0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000 --0.222100 -0.200800 0.060900 0.488000 -0.184000 0.848000 --0.212600 -0.150600 0.060900 0.712000 -0.216000 0.664000 --0.200000 -0.200800 0.045500 0.568000 -0.152000 0.808000 --0.200000 -0.150600 0.042600 0.640000 -0.096000 0.752000 --0.212600 -0.150600 0.060900 0.712000 -0.216000 0.664000 --0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000 --0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000 --0.200000 -0.100400 0.076800 0.784000 -0.136000 0.600000 --0.250000 -0.144000 0.121900 0.720000 -0.312000 0.608000 --0.230200 -0.100400 0.121900 0.776000 -0.176000 0.600000 --0.250000 -0.100400 0.155000 0.480000 0.160000 0.856000 --0.247100 -0.050200 0.121900 0.488000 0.512000 0.696000 --0.250000 -0.050200 0.123600 0.200000 0.440000 0.864000 --0.250000 -0.048000 0.121900 0.272000 0.640000 0.704000 --0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000 --0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000 --0.300000 -0.050200 0.104800 -0.312000 0.512000 0.792000 --0.300000 0.000000 0.088800 -0.240000 0.432000 0.864000 --0.350000 -0.050200 0.083200 -0.416000 0.344000 0.832000 --0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000 --0.350000 -0.001900 0.060900 -0.656000 0.280000 0.688000 --0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000 --0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000 --0.373100 0.000000 0.000000 -0.880000 0.240000 0.392000 --0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000 --0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000 --0.400000 -0.050200 -0.003200 -0.712000 0.672000 0.168000 --0.400000 -0.037800 -0.060900 -0.728000 0.664000 0.152000 --0.406900 -0.050200 -0.060900 -0.848000 0.520000 0.000000 --0.400000 -0.050200 -0.118700 -0.832000 0.528000 -0.160000 --0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000 --0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000 --0.450000 -0.100400 -0.065100 -0.512000 0.824000 -0.200000 --0.434900 -0.100400 -0.121900 -0.608000 0.744000 -0.256000 --0.450000 -0.111500 -0.121900 -0.376000 0.896000 -0.224000 --0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000 --0.450000 -0.128500 -0.182900 -0.504000 0.800000 -0.296000 --0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000 --0.450000 -0.150600 -0.239400 -0.408000 0.792000 -0.448000 --0.400000 -0.131400 -0.243900 -0.384000 0.744000 -0.536000 --0.444500 -0.150600 -0.243900 -0.312000 0.784000 -0.528000 --0.400000 -0.150600 -0.272200 -0.312000 0.624000 -0.704000 --0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000 --0.400000 -0.174400 -0.304800 -0.224000 0.736000 -0.632000 --0.450000 -0.186700 -0.304800 -0.216000 0.808000 -0.528000 --0.400000 -0.200800 -0.333600 -0.064000 0.568000 -0.816000 --0.450000 -0.200800 -0.327900 -0.112000 0.704000 -0.696000 --0.400000 -0.239300 -0.365800 0.048000 0.512000 -0.848000 --0.450000 -0.235000 -0.365800 -0.016000 0.592000 -0.800000 --0.400000 -0.251000 -0.373300 0.080000 0.400000 -0.904000 --0.450000 -0.251000 -0.376500 0.032000 0.432000 -0.896000 --0.400000 -0.301200 -0.390900 0.144000 0.296000 -0.936000 --0.450000 -0.301200 -0.399100 0.080000 0.320000 -0.936000 --0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000 --0.450000 -0.351500 -0.418600 0.080000 0.512000 -0.848000 --0.450000 -0.301200 -0.399100 0.080000 0.320000 -0.936000 --0.500000 -0.351500 -0.423900 0.056000 0.504000 -0.856000 --0.500000 -0.301200 -0.402500 0.040000 0.344000 -0.936000 --0.450000 -0.301200 -0.399100 0.080000 0.320000 -0.936000 --0.500000 -0.251000 -0.377000 -0.032000 0.528000 -0.840000 --0.450000 -0.251000 -0.376500 0.032000 0.432000 -0.896000 --0.500000 -0.238600 -0.365800 -0.072000 0.656000 -0.744000 --0.450000 -0.235000 -0.365800 -0.016000 0.592000 -0.800000 --0.500000 -0.200800 -0.313000 -0.112000 0.824000 -0.544000 --0.450000 -0.200800 -0.327900 -0.112000 0.704000 -0.696000 --0.500000 -0.196700 -0.304800 -0.120000 0.848000 -0.504000 --0.450000 -0.186700 -0.304800 -0.216000 0.808000 -0.528000 --0.500000 -0.169200 -0.243900 -0.328000 0.880000 -0.312000 --0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000 --0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000 --0.450000 -0.150600 -0.239400 -0.408000 0.792000 -0.448000 --0.491700 -0.150600 -0.182900 -0.448000 0.848000 -0.264000 --0.450000 -0.128500 -0.182900 -0.504000 0.800000 -0.296000 --0.500000 -0.150600 -0.154000 -0.424000 0.880000 -0.160000 --0.450000 -0.111500 -0.121900 -0.376000 0.896000 -0.224000 --0.500000 -0.144400 -0.121900 -0.376000 0.880000 -0.280000 --0.450000 -0.100400 -0.065100 -0.512000 0.824000 -0.200000 --0.500000 -0.119500 -0.060900 -0.160000 0.976000 0.112000 --0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000 --0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000 --0.450000 -0.100400 -0.057100 -0.400000 0.872000 0.264000 --0.450000 -0.112700 0.000000 -0.520000 0.784000 0.320000 --0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000 --0.450000 -0.136300 0.060900 -0.512000 0.720000 0.448000 --0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000 --0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000 --0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000 --0.414900 -0.150600 0.121900 -0.424000 0.616000 0.648000 --0.400000 -0.140400 0.121900 -0.448000 0.624000 0.632000 --0.400000 -0.150600 0.133500 -0.392000 0.600000 0.688000 --0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000 --0.350000 -0.150600 0.151300 -0.584000 0.352000 0.720000 --0.350000 -0.100400 0.123500 -0.608000 0.328000 0.712000 --0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000 --0.300000 -0.100400 0.149000 -0.304000 0.432000 0.840000 --0.300000 -0.142200 0.182900 0.000000 0.616000 0.776000 --0.250000 -0.100400 0.155000 0.480000 0.160000 0.856000 --0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000 --0.250000 -0.144000 0.121900 0.720000 -0.312000 0.608000 --0.252800 -0.150600 0.121900 0.720000 -0.296000 0.616000 --0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000 --0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000 --0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000 --0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000 --0.389000 -0.351500 0.182900 0.544000 -0.632000 0.536000 --0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000 --0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000 --0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000 --0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000 --0.300000 -0.142200 0.182900 0.000000 0.616000 0.776000 --0.300000 -0.150600 0.190700 0.000000 0.520000 0.848000 --0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000 --0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000 -0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000 -0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000 -0.600000 0.327100 0.182900 -0.144000 0.552000 0.816000 -0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000 -0.650000 0.311500 0.182900 0.424000 0.496000 0.752000 -0.650000 0.301200 0.190400 0.408000 0.464000 0.776000 -0.660200 0.301200 0.182900 0.480000 0.488000 0.720000 -0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000 -0.700000 0.263400 0.182900 0.512000 0.536000 0.664000 -0.700000 0.251000 0.193900 0.488000 0.504000 0.704000 -0.711700 0.251000 0.182900 0.560000 0.528000 0.624000 -0.700000 0.200800 0.226400 0.328000 0.432000 0.832000 -0.750000 0.208300 0.182900 0.448000 0.624000 0.632000 -0.750000 0.200800 0.191100 0.424000 0.552000 0.712000 -0.761100 0.200800 0.182900 0.432000 0.472000 0.760000 -0.750000 0.150600 0.201100 0.320000 0.240000 0.912000 -0.797300 0.150600 0.182900 0.336000 0.288000 0.888000 -0.750000 0.100400 0.207000 0.032000 -0.192000 0.976000 -0.800000 0.148000 0.182900 0.424000 0.336000 0.832000 -0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000 -0.850000 0.129700 0.182900 0.408000 0.752000 0.504000 -0.850000 0.100400 0.222500 0.440000 0.584000 0.672000 -0.891700 0.100400 0.182900 0.576000 0.688000 0.424000 -0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000 -0.900000 0.093100 0.182900 0.568000 0.672000 0.464000 -0.900000 0.050200 0.226800 0.488000 0.496000 0.712000 -0.940200 0.050200 0.182900 0.624000 0.528000 0.568000 -0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000 -0.950000 0.037400 0.182900 0.520000 0.504000 0.680000 -0.950000 0.000000 0.206500 0.400000 0.008000 0.912000 -1.000000 0.004900 0.182900 0.336000 0.520000 0.776000 -1.000000 0.000000 0.186800 0.376000 0.128000 0.912000 -0.950000 0.000000 0.206500 0.400000 0.008000 0.912000 -1.000000 -0.012000 0.182900 0.384000 -0.248000 0.880000 -0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000 -0.975800 -0.050200 0.182900 0.464000 -0.232000 0.848000 -0.950000 -0.100400 0.196500 0.208000 -0.704000 0.672000 -0.959000 -0.100400 0.182900 0.616000 -0.584000 0.520000 -0.950000 -0.108800 0.182900 0.232000 -0.768000 0.584000 -1.000000 -0.100400 0.134700 0.432000 -0.528000 0.720000 -0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000 -1.000000 -0.126300 0.121900 0.016000 -0.480000 0.872000 -0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000 -1.000000 -0.150600 0.101600 -0.080000 -0.576000 0.808000 -0.950000 -0.158100 0.060900 -0.608000 -0.760000 0.200000 -1.000000 -0.176100 0.060900 -0.688000 -0.632000 0.336000 -0.950000 -0.168100 0.000000 -0.640000 -0.744000 0.184000 -1.000000 -0.200800 0.012500 -0.656000 -0.696000 0.264000 -0.995800 -0.200800 0.000000 -0.648000 -0.704000 0.264000 -1.000000 -0.204500 0.000000 -0.624000 -0.728000 0.256000 -0.973000 -0.200800 -0.060900 -0.584000 -0.760000 0.264000 -1.000000 -0.224100 -0.060900 -0.616000 -0.728000 0.280000 -0.950500 -0.200800 -0.121900 -0.632000 -0.744000 0.192000 -1.000000 -0.243600 -0.121900 -0.640000 -0.736000 0.184000 -0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000 -1.000000 -0.251000 -0.154300 -0.728000 -0.648000 0.200000 -0.950000 -0.211700 -0.182900 -0.704000 -0.680000 0.176000 -0.993400 -0.251000 -0.182900 -0.736000 -0.640000 0.200000 -0.950000 -0.224400 -0.243900 -0.688000 -0.640000 0.328000 -0.978600 -0.251000 -0.243900 -0.696000 -0.616000 0.352000 -0.950000 -0.251000 -0.295200 -0.640000 -0.496000 0.576000 -1.000000 -0.277900 -0.243900 -0.712000 -0.592000 0.360000 -0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000 -1.000000 -0.301200 -0.291200 -0.640000 -0.488000 0.576000 -0.989600 -0.301200 -0.304800 -0.816000 -0.560000 0.128000 -1.000000 -0.316200 -0.304800 -0.800000 -0.552000 0.224000 -1.000000 -0.301200 -0.328200 -0.784000 -0.440000 -0.424000 -0.989600 -0.301200 -0.304800 -0.816000 -0.560000 0.128000 -1.000000 -0.251000 -0.355700 -0.816000 -0.248000 -0.504000 -0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000 -0.950000 -0.251000 -0.328200 -0.712000 -0.568000 -0.392000 -0.942100 -0.251000 -0.304800 -0.752000 -0.552000 0.344000 -0.950000 -0.200800 -0.357000 -0.272000 -0.104000 -0.952000 -0.911900 -0.200800 -0.304800 -0.864000 -0.480000 -0.128000 -0.950000 -0.150600 -0.345500 -0.032000 0.064000 -0.992000 -0.900000 -0.181100 -0.304800 -0.768000 -0.440000 -0.448000 -0.900000 -0.150600 -0.332000 -0.672000 -0.328000 -0.656000 -0.883200 -0.150600 -0.304800 -0.864000 -0.368000 -0.320000 -0.900000 -0.100400 -0.341700 -0.464000 -0.104000 -0.872000 -0.869700 -0.100400 -0.304800 -0.880000 -0.248000 -0.400000 -0.900000 -0.050200 -0.348300 -0.256000 0.192000 -0.944000 -0.867300 -0.050200 -0.304800 -0.784000 -0.136000 -0.600000 -0.900000 0.000000 -0.329500 -0.080000 0.648000 -0.744000 -0.877300 0.000000 -0.304800 -0.592000 0.480000 -0.632000 -0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000 -0.850000 0.000000 -0.279000 -0.536000 0.488000 -0.680000 -0.900000 0.050200 -0.268900 0.208000 0.672000 -0.696000 -0.850000 0.042400 -0.243900 -0.408000 0.528000 -0.736000 -0.858900 0.050200 -0.243900 -0.424000 0.568000 -0.696000 -0.850000 0.050200 -0.237100 -0.376000 0.576000 -0.720000 -0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000 -0.850000 0.100400 -0.218500 0.128000 0.592000 -0.784000 -0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000 -0.850000 0.127100 -0.182900 0.192000 0.744000 -0.632000 -0.900000 0.111100 -0.182900 0.552000 0.712000 -0.416000 -0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000 -0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000 -0.859300 0.150600 -0.121900 0.456000 0.840000 -0.272000 -0.900000 0.143500 -0.060900 0.528000 0.808000 -0.240000 -0.888500 0.150600 -0.060900 0.504000 0.856000 -0.040000 -0.900000 0.131100 0.000000 0.480000 0.848000 0.192000 -0.867700 0.150600 0.000000 0.552000 0.816000 0.152000 -0.900000 0.118900 0.060900 0.472000 0.856000 0.184000 -0.855400 0.150600 0.060900 0.680000 0.720000 0.072000 -0.900000 0.107300 0.121900 0.512000 0.832000 0.184000 -0.850900 0.150600 0.121900 0.704000 0.704000 0.080000 -0.900000 0.100400 0.165200 0.584000 0.744000 0.296000 -0.850000 0.150600 0.126500 0.640000 0.560000 0.512000 -0.891700 0.100400 0.182900 0.576000 0.688000 0.424000 -0.850000 0.129700 0.182900 0.408000 0.752000 0.504000 -0.850000 0.150600 0.126500 0.640000 0.560000 0.512000 -0.800000 0.148000 0.182900 0.424000 0.336000 0.832000 -0.800000 0.150600 0.181400 0.520000 0.336000 0.776000 -0.797300 0.150600 0.182900 0.336000 0.288000 0.888000 -0.800000 0.190400 0.121900 0.624000 0.752000 0.168000 -0.761100 0.200800 0.182900 0.432000 0.472000 0.760000 -0.788900 0.200800 0.121900 0.632000 0.744000 0.184000 -0.750000 0.208300 0.182900 0.448000 0.624000 0.632000 -0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000 -0.711700 0.251000 0.182900 0.560000 0.528000 0.624000 -0.736800 0.251000 0.121900 0.752000 0.632000 0.144000 -0.700000 0.263400 0.182900 0.512000 0.536000 0.664000 -0.700000 0.297800 0.121900 0.728000 0.680000 -0.032000 -0.660200 0.301200 0.182900 0.480000 0.488000 0.720000 -0.696500 0.301200 0.121900 0.712000 0.672000 0.168000 -0.650000 0.311500 0.182900 0.424000 0.496000 0.752000 -0.653800 0.351500 0.121900 0.656000 0.616000 0.424000 -0.650000 0.351500 0.128300 0.616000 0.616000 0.480000 -0.650000 0.355500 0.121900 0.632000 0.632000 0.432000 -0.600000 0.351500 0.157200 -0.376000 0.584000 0.704000 -0.600000 0.382600 0.121900 0.272000 0.776000 0.560000 -0.566500 0.351500 0.121900 -0.632000 0.576000 0.496000 -0.600000 0.401700 0.085900 0.096000 0.928000 0.336000 -0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000 -0.584600 0.401700 0.060900 -0.416000 0.872000 0.248000 -0.550000 0.359900 0.060900 -0.592000 0.640000 0.480000 -0.568400 0.401700 0.000000 -0.472000 0.832000 -0.264000 -0.550000 0.388900 0.000000 -0.392000 0.856000 0.320000 -0.600000 0.401700 -0.057700 0.168000 0.920000 -0.344000 -0.550000 0.398000 -0.060900 0.000000 0.968000 -0.216000 -0.600000 0.400600 -0.060900 -0.072000 0.912000 -0.384000 -0.550000 0.362300 -0.121900 0.400000 0.656000 -0.632000 -0.600000 0.351500 -0.101600 0.448000 0.496000 -0.736000 -0.566700 0.351500 -0.121900 0.448000 0.536000 -0.704000 -0.600000 0.310600 -0.121900 0.480000 0.424000 -0.760000 -0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000 -0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000 -0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000 -0.600000 0.256700 -0.182900 0.328000 0.496000 -0.792000 -0.550000 0.283200 -0.182900 0.320000 0.472000 -0.816000 -0.600000 0.251000 -0.187000 0.320000 0.456000 -0.816000 -0.550000 0.251000 -0.199600 0.176000 0.288000 -0.936000 -0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000 -0.550000 0.200800 -0.211100 0.016000 0.048000 -0.992000 -0.600000 0.150600 -0.225200 0.008000 0.128000 -0.984000 -0.550000 0.150600 -0.215400 -0.144000 0.080000 -0.984000 -0.600000 0.100400 -0.237100 -0.096000 0.168000 -0.976000 -0.550000 0.100400 -0.212600 -0.200000 0.352000 -0.904000 -0.600000 0.076600 -0.243900 -0.096000 0.360000 -0.920000 -0.550000 0.067800 -0.243900 0.024000 0.672000 -0.728000 -0.600000 0.050200 -0.251100 0.248000 0.344000 -0.896000 -0.550000 0.050200 -0.258400 0.160000 0.632000 -0.752000 -0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000 -0.550000 0.015600 -0.304800 0.472000 0.712000 -0.512000 -0.578400 0.000000 -0.304800 0.536000 0.480000 -0.688000 -0.550000 0.000000 -0.335900 0.576000 0.464000 -0.664000 -0.587300 -0.050200 -0.304800 0.688000 0.056000 -0.712000 -0.550000 -0.050200 -0.345500 0.192000 -0.560000 -0.792000 -0.550000 -0.083700 -0.304800 0.088000 -0.736000 -0.664000 -0.500000 -0.050200 -0.339600 -0.136000 -0.672000 -0.720000 -0.500000 -0.082600 -0.304800 0.216000 -0.680000 -0.688000 -0.450000 -0.050200 -0.325200 -0.120000 -0.568000 -0.808000 -0.475800 -0.100400 -0.304800 0.512000 -0.104000 -0.848000 -0.450000 -0.100400 -0.322200 0.392000 -0.360000 -0.840000 -0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000 -0.450000 -0.150600 -0.321300 -0.008000 0.120000 -0.992000 -0.500000 -0.150600 -0.319100 0.336000 0.504000 -0.792000 -0.450000 -0.200800 -0.331300 -0.472000 -0.400000 -0.776000 -0.500000 -0.200800 -0.334200 -0.376000 -0.448000 -0.800000 -0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000 -0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000 -0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000 -0.500000 -0.251000 -0.264200 -0.272000 -0.744000 -0.600000 -0.459300 -0.251000 -0.243900 -0.280000 -0.864000 -0.400000 -0.500000 -0.282700 -0.243900 -0.568000 -0.592000 -0.560000 -0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000 -0.500000 -0.288400 -0.182900 -0.520000 -0.656000 0.528000 -0.450000 -0.255300 -0.182900 -0.208000 -0.656000 0.712000 -0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000 -0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000 -0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000 -0.450000 -0.227100 -0.121900 -0.296000 -0.712000 0.624000 -0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000 -0.450000 -0.200800 -0.072200 -0.256000 -0.536000 0.800000 -0.491400 -0.200800 -0.060900 -0.168000 -0.584000 0.784000 -0.450000 -0.150600 -0.064700 -0.192000 0.128000 0.968000 -0.463100 -0.150600 -0.060900 -0.168000 0.352000 0.912000 -0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000 -0.500000 -0.139000 -0.060900 0.080000 0.536000 0.832000 -0.500000 -0.100400 -0.086800 -0.048000 0.256000 0.960000 -0.530700 -0.150600 -0.060900 0.208000 0.504000 0.832000 -0.550000 -0.100400 -0.076900 0.056000 0.056000 0.992000 -0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000 -0.600000 -0.100400 -0.077400 0.584000 0.048000 0.800000 -0.600000 -0.150600 -0.093600 0.304000 0.568000 0.752000 -0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000 -0.650000 -0.150600 -0.116200 0.720000 0.480000 0.488000 -0.650000 -0.146100 -0.121900 0.720000 0.504000 0.464000 -0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000 -0.650000 -0.117900 -0.182900 0.792000 0.600000 0.024000 -0.675300 -0.150600 -0.182900 0.768000 0.552000 0.296000 -0.650000 -0.120200 -0.243900 0.704000 0.520000 -0.472000 -0.674200 -0.150600 -0.243900 0.696000 0.600000 -0.384000 -0.650000 -0.150600 -0.274900 0.544000 0.464000 -0.688000 -0.700000 -0.175300 -0.243900 0.752000 0.600000 -0.240000 -0.650000 -0.200800 -0.297000 0.088000 0.616000 -0.776000 -0.700000 -0.200800 -0.294000 0.576000 0.608000 -0.536000 -0.650000 -0.208600 -0.304800 0.024000 0.680000 -0.728000 -0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000 -0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000 -0.700000 -0.251000 -0.357800 0.296000 0.496000 -0.808000 -0.678000 -0.251000 -0.365800 0.264000 0.520000 -0.808000 -0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000 -0.650000 -0.267900 -0.365800 0.280000 -0.440000 -0.848000 -0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000 -0.600000 -0.288400 -0.365800 -0.376000 -0.712000 -0.584000 -0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000 -0.573000 -0.251000 -0.365800 -0.696000 0.544000 -0.464000 -0.567500 -0.301200 -0.304800 -0.696000 0.400000 -0.584000 -0.550000 -0.251000 -0.326800 -0.648000 -0.504000 -0.560000 -0.550000 -0.272400 -0.304800 -0.680000 -0.440000 -0.576000 -0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000 -0.550000 -0.301200 -0.279200 -0.712000 0.120000 -0.680000 -0.500000 -0.251000 -0.264200 -0.272000 -0.744000 -0.600000 -0.513800 -0.301200 -0.243900 -0.728000 0.592000 -0.328000 -0.500000 -0.282700 -0.243900 -0.568000 -0.592000 -0.560000 -0.511800 -0.301200 -0.182900 -0.912000 0.352000 0.176000 -0.500000 -0.288400 -0.182900 -0.520000 -0.656000 0.528000 -0.550000 -0.301200 -0.123600 -0.624000 -0.440000 0.632000 -0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000 -0.550000 -0.300100 -0.121900 -0.624000 -0.616000 0.472000 -0.501100 -0.251000 -0.121900 -0.552000 -0.624000 0.544000 -0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000 -0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000 -0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000 -0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000 -0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000 -0.500000 -0.200800 -0.058700 -0.200000 -0.576000 0.784000 -0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000 -0.500000 -0.150600 -0.051600 0.024000 0.352000 0.928000 -0.530700 -0.150600 -0.060900 0.208000 0.504000 0.832000 -0.500000 -0.139000 -0.060900 0.080000 0.536000 0.832000 -0.500000 -0.150600 -0.051600 0.024000 0.352000 0.928000 -0.463100 -0.150600 -0.060900 -0.168000 0.352000 0.912000 -0.500000 -0.200800 -0.058700 -0.200000 -0.576000 0.784000 -0.491400 -0.200800 -0.060900 -0.168000 -0.584000 0.784000 -0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000 -0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000 -0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000 -0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000 -0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000 -0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000 -0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000 -0.550000 0.251000 0.125100 -0.872000 -0.184000 0.440000 -0.550000 0.301200 0.149100 -0.896000 -0.096000 0.416000 -0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000 -0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000 -0.533200 0.251000 0.060900 -0.856000 0.032000 0.512000 -0.526500 0.301200 0.060900 -0.896000 0.008000 0.432000 -0.500800 0.251000 0.000000 -0.792000 -0.016000 0.608000 -0.500000 0.301200 0.002700 -0.768000 -0.080000 0.624000 -0.500000 0.266900 0.000000 -0.760000 -0.040000 0.640000 -0.497900 0.301200 0.000000 -0.728000 -0.144000 0.664000 -0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000 -0.450000 0.301200 -0.039700 -0.448000 -0.256000 0.848000 -0.450000 0.251000 -0.039600 -0.400000 -0.080000 0.904000 -0.400000 0.301200 -0.051900 -0.168000 -0.472000 0.856000 -0.400000 0.251000 -0.058700 -0.328000 -0.176000 0.920000 -0.353900 0.301200 -0.060900 -0.128000 -0.544000 0.824000 -0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000 -0.350000 0.301200 -0.062100 -0.176000 -0.704000 0.680000 -0.350000 0.251000 -0.088400 -0.448000 -0.320000 0.824000 -0.300000 0.301200 -0.077400 -0.160000 -0.712000 0.680000 -0.300000 0.251000 -0.114600 -0.168000 -0.536000 0.824000 -0.250000 0.301200 -0.083600 -0.096000 -0.744000 0.648000 -0.271900 0.251000 -0.121900 -0.240000 -0.760000 0.592000 -0.250000 0.256500 -0.121900 -0.200000 -0.800000 0.552000 -0.300000 0.251000 -0.156100 -0.368000 -0.808000 -0.448000 -0.250000 0.284000 -0.182900 -0.096000 -0.256000 -0.952000 -0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000 -0.250000 0.301200 -0.184400 -0.080000 -0.056000 -0.992000 -0.300000 0.301200 -0.184400 -0.064000 -0.072000 -0.992000 -0.250000 0.351500 -0.189100 -0.160000 0.168000 -0.968000 -0.300000 0.351500 -0.193900 -0.008000 0.064000 -0.992000 -0.250000 0.370000 -0.182900 -0.184000 0.304000 -0.928000 -0.300000 0.379400 -0.182900 -0.016000 0.272000 -0.960000 -0.250000 0.401700 -0.172700 -0.016000 0.288000 -0.952000 -0.300000 0.401700 -0.174800 0.040000 0.368000 -0.920000 -0.250000 0.451900 -0.137900 0.128000 0.536000 -0.824000 -0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000 -0.250000 0.466900 -0.121900 0.232000 0.968000 0.016000 -0.300000 0.458100 -0.121900 0.224000 0.952000 -0.176000 -0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000 -0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000 -0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000 -0.300000 0.430700 -0.060900 0.128000 0.808000 0.568000 -0.250000 0.401700 -0.026800 -0.216000 0.176000 0.952000 -0.300000 0.401700 -0.022200 0.096000 0.472000 0.864000 -0.250000 0.351500 -0.020200 -0.488000 -0.416000 0.760000 -0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000 -0.250000 0.317900 -0.060900 -0.432000 -0.680000 0.584000 -0.300000 0.310700 -0.060900 -0.072000 -0.760000 0.640000 -0.250000 0.301200 -0.083600 -0.096000 -0.744000 0.648000 -0.300000 0.301200 -0.077400 -0.160000 -0.712000 0.680000 -0.300000 0.310700 -0.060900 -0.072000 -0.760000 0.640000 -0.350000 0.301200 -0.062100 -0.176000 -0.704000 0.680000 -0.350000 0.302200 -0.060900 -0.144000 -0.624000 0.760000 -0.353900 0.301200 -0.060900 -0.128000 -0.544000 0.824000 -0.350000 0.351500 -0.021800 0.032000 -0.048000 0.992000 -0.400000 0.301200 -0.051900 -0.168000 -0.472000 0.856000 -0.400000 0.351500 -0.018700 -0.136000 -0.208000 0.960000 -0.450000 0.301200 -0.039700 -0.448000 -0.256000 0.848000 -0.450000 0.351500 -0.003200 -0.296000 0.344000 0.888000 -0.497900 0.301200 0.000000 -0.728000 -0.144000 0.664000 -0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000 -0.500000 0.301200 0.002700 -0.768000 -0.080000 0.624000 -0.500000 0.351500 0.029100 -0.680000 0.048000 0.728000 -0.526500 0.301200 0.060900 -0.896000 0.008000 0.432000 -0.540600 0.351500 0.060900 -0.584000 0.632000 0.496000 -0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000 -0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000 -0.550000 0.331800 0.121900 -0.696000 0.536000 0.456000 -0.566500 0.351500 0.121900 -0.632000 0.576000 0.496000 -0.550000 0.301200 0.149100 -0.896000 -0.096000 0.416000 -0.600000 0.351500 0.157200 -0.376000 0.584000 0.704000 -0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000 -0.600000 0.327100 0.182900 -0.144000 0.552000 0.816000 -0.600000 0.351500 0.157200 -0.376000 0.584000 0.704000 -0.650000 0.311500 0.182900 0.424000 0.496000 0.752000 -0.650000 0.351500 0.128300 0.616000 0.616000 0.480000 -0.650000 0.351500 0.128300 0.616000 0.616000 0.480000 -0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000 -0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000 -0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000 -0.600000 0.211800 0.182900 -0.672000 -0.280000 0.672000 -0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000 -0.604600 0.200800 0.182900 -0.672000 -0.288000 0.664000 -0.650000 0.200800 0.219700 -0.496000 -0.256000 0.824000 -0.641000 0.150600 0.182900 -0.528000 -0.464000 0.696000 -0.650000 0.150600 0.191100 -0.504000 -0.472000 0.720000 -0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000 -0.700000 0.150600 0.220800 -0.264000 -0.416000 0.864000 -0.685300 0.100400 0.182900 -0.504000 -0.560000 0.648000 -0.700000 0.100400 0.197200 -0.456000 -0.560000 0.680000 -0.700000 0.088000 0.182900 -0.464000 -0.608000 0.640000 -0.750000 0.100400 0.207000 0.032000 -0.192000 0.976000 -0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000 -0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000 -0.762700 0.050200 0.182900 -0.512000 -0.672000 0.520000 -0.800000 0.050200 0.211000 -0.336000 -0.552000 0.752000 -0.800000 0.035400 0.182900 -0.432000 -0.808000 0.384000 -0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000 -0.846600 0.000000 0.182900 -0.736000 -0.616000 0.264000 -0.850000 0.000000 0.194300 -0.704000 -0.640000 0.296000 -0.850000 -0.004200 0.182900 -0.720000 -0.616000 0.288000 -0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000 -0.880500 -0.050200 0.182900 -0.744000 -0.528000 0.384000 -0.900000 -0.050200 0.230400 -0.448000 -0.568000 0.680000 -0.900000 -0.076800 0.182900 -0.504000 -0.624000 0.592000 -0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000 -0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000 -0.950000 -0.100400 0.196500 0.208000 -0.704000 0.672000 -0.950000 -0.108800 0.182900 0.232000 -0.768000 0.584000 -0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000 -0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000 -0.900000 -0.100400 0.145900 -0.608000 -0.728000 0.304000 -0.900000 -0.107100 0.121900 -0.584000 -0.768000 0.240000 -0.892500 -0.100400 0.121900 -0.688000 -0.680000 0.240000 -0.900000 -0.117100 0.060900 -0.656000 -0.736000 0.136000 -0.881900 -0.100400 0.060900 -0.752000 -0.632000 0.152000 -0.900000 -0.125700 0.000000 -0.664000 -0.728000 0.136000 -0.873300 -0.100400 0.000000 -0.752000 -0.632000 0.120000 -0.900000 -0.135500 -0.060900 -0.672000 -0.712000 0.168000 -0.865600 -0.100400 -0.060900 -0.776000 -0.616000 0.120000 -0.900000 -0.148200 -0.121900 -0.664000 -0.728000 0.088000 -0.858300 -0.100400 -0.121900 -0.792000 -0.600000 0.056000 -0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000 -0.858100 -0.100400 -0.182900 -0.824000 -0.552000 0.000000 -0.895100 -0.150600 -0.182900 -0.744000 -0.648000 0.104000 -0.860900 -0.100400 -0.243900 -0.856000 -0.496000 -0.072000 -0.890800 -0.150600 -0.243900 -0.848000 -0.512000 0.064000 -0.869700 -0.100400 -0.304800 -0.880000 -0.248000 -0.400000 -0.883200 -0.150600 -0.304800 -0.864000 -0.368000 -0.320000 -0.890800 -0.150600 -0.243900 -0.848000 -0.512000 0.064000 -0.900000 -0.181100 -0.304800 -0.768000 -0.440000 -0.448000 -0.900000 -0.163000 -0.243900 -0.816000 -0.552000 0.128000 -0.911900 -0.200800 -0.304800 -0.864000 -0.480000 -0.128000 -0.928800 -0.200800 -0.243900 -0.736000 -0.616000 0.240000 -0.942100 -0.251000 -0.304800 -0.752000 -0.552000 0.344000 -0.950000 -0.224400 -0.243900 -0.688000 -0.640000 0.328000 -0.950000 -0.251000 -0.295200 -0.640000 -0.496000 0.576000 -0.942100 -0.251000 -0.304800 -0.752000 -0.552000 0.344000 -0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000 -0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000 -0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000 -0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000 -0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000 -0.650000 0.301200 0.190400 0.408000 0.464000 0.776000 -0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000 -0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000 -0.700000 0.251000 0.193900 0.488000 0.504000 0.704000 -0.700000 0.251000 0.193900 0.488000 0.504000 0.704000 -0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000 -0.700000 0.200800 0.226400 0.328000 0.432000 0.832000 -0.650000 0.200800 0.219700 -0.496000 -0.256000 0.824000 -0.700000 0.150600 0.220800 -0.264000 -0.416000 0.864000 -0.650000 0.150600 0.191100 -0.504000 -0.472000 0.720000 -0.650000 0.150600 0.191100 -0.504000 -0.472000 0.720000 -0.750000 0.200800 0.191100 0.424000 0.552000 0.712000 -0.750000 0.200800 0.191100 0.424000 0.552000 0.712000 -0.700000 0.200800 0.226400 0.328000 0.432000 0.832000 -0.750000 0.150600 0.201100 0.320000 0.240000 0.912000 -0.700000 0.150600 0.220800 -0.264000 -0.416000 0.864000 -0.750000 0.100400 0.207000 0.032000 -0.192000 0.976000 -0.700000 0.100400 0.197200 -0.456000 -0.560000 0.680000 -0.700000 0.100400 0.197200 -0.456000 -0.560000 0.680000 -0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000 -0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000 -0.800000 0.050200 0.211000 -0.336000 -0.552000 0.752000 -0.850000 0.100400 0.222500 0.440000 0.584000 0.672000 -0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000 -0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000 -0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000 -0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000 -0.850000 0.000000 0.194300 -0.704000 -0.640000 0.296000 -0.900000 0.050200 0.226800 0.488000 0.496000 0.712000 -0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000 -0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000 -0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000 -0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000 -0.900000 -0.050200 0.230400 -0.448000 -0.568000 0.680000 -0.950000 0.000000 0.206500 0.400000 0.008000 0.912000 -0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000 -0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000 --0.950000 0.150600 0.154300 0.208000 0.640000 0.736000 --0.950000 0.150600 0.154300 0.208000 0.640000 0.736000 --0.900000 0.150600 0.126400 0.344000 0.632000 0.688000 --0.950000 0.178500 0.121900 0.272000 0.648000 0.704000 --0.900000 0.154600 0.121900 0.352000 0.624000 0.688000 --0.950000 0.200800 0.096100 0.208000 0.672000 0.704000 --0.900000 0.200800 0.074800 0.296000 0.712000 0.624000 --0.950000 0.226300 0.060900 0.264000 0.760000 0.584000 --0.900000 0.210300 0.060900 0.312000 0.744000 0.576000 --0.950000 0.251000 0.016800 0.288000 0.808000 0.504000 --0.900000 0.240500 0.000000 0.368000 0.840000 0.376000 --0.928700 0.251000 0.000000 0.312000 0.848000 0.408000 --0.900000 0.251000 -0.035000 0.384000 0.864000 0.312000 --0.950000 0.258900 0.000000 0.296000 0.848000 0.432000 --0.900000 0.258900 -0.060900 0.400000 0.896000 0.144000 --0.950000 0.277400 -0.060900 0.336000 0.928000 0.080000 --0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000 --0.950000 0.267200 -0.121900 0.344000 0.864000 -0.336000 --0.910500 0.251000 -0.121900 0.344000 0.880000 -0.304000 --0.950000 0.251000 -0.157200 0.320000 0.808000 -0.480000 --0.900000 0.246900 -0.121900 0.360000 0.872000 -0.304000 --0.950000 0.237800 -0.182900 0.296000 0.760000 -0.568000 --0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000 --0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000 --0.900000 0.200800 -0.201400 0.352000 0.680000 -0.640000 --0.950000 0.189400 -0.243900 0.264000 0.616000 -0.728000 --0.900000 0.162400 -0.243900 0.336000 0.616000 -0.704000 --0.950000 0.150600 -0.281200 0.240000 0.600000 -0.752000 --0.900000 0.150600 -0.256300 0.328000 0.616000 -0.704000 --0.950000 0.126000 -0.304800 0.168000 0.528000 -0.824000 --0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000 --0.950000 0.100400 -0.325900 0.192000 0.384000 -0.896000 --0.900000 0.100400 -0.308600 0.312000 0.536000 -0.776000 --0.950000 0.050200 -0.340200 0.184000 0.072000 -0.976000 --0.900000 0.050200 -0.331200 0.320000 0.232000 -0.912000 --0.950000 0.000000 -0.337100 0.184000 -0.088000 -0.976000 --0.900000 0.000000 -0.328400 0.216000 0.000000 -0.968000 --0.950000 -0.050200 -0.337400 0.088000 0.008000 -0.992000 --0.900000 -0.050200 -0.330000 0.160000 0.128000 -0.976000 --0.900000 0.000000 -0.328400 0.216000 0.000000 -0.968000 --0.850000 -0.050200 -0.323400 0.248000 0.176000 -0.944000 --0.850000 0.000000 -0.313800 0.264000 0.064000 -0.960000 --0.808200 -0.050200 -0.304800 0.280000 0.136000 -0.944000 --0.823600 0.000000 -0.304800 0.296000 0.080000 -0.944000 --0.800000 -0.050200 -0.302200 0.264000 0.120000 -0.952000 --0.800000 0.000000 -0.298500 0.248000 0.080000 -0.960000 --0.750000 -0.050200 -0.287100 0.288000 0.040000 -0.952000 --0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000 --0.700000 -0.050200 -0.272000 0.360000 0.104000 -0.920000 --0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000 --0.650000 -0.050200 -0.249300 0.496000 0.208000 -0.840000 --0.669700 0.000000 -0.243900 0.480000 0.312000 -0.808000 --0.650000 -0.035200 -0.243900 0.544000 0.264000 -0.792000 --0.650000 0.000000 -0.224600 0.632000 0.368000 -0.672000 --0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000 --0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000 --0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000 --0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000 --0.950000 0.127100 0.182900 0.248000 0.536000 0.800000 --0.950000 0.127100 0.182900 0.248000 0.536000 0.800000 --0.950000 0.150600 0.154300 0.208000 0.640000 0.736000 --0.900000 0.101900 0.182900 0.304000 0.552000 0.768000 --0.900000 0.150600 0.126400 0.344000 0.632000 0.688000 --0.900000 0.150600 0.126400 0.344000 0.632000 0.688000 --0.939400 -0.100400 0.121900 -0.456000 -0.816000 0.336000 --0.939400 -0.100400 0.121900 -0.456000 -0.816000 0.336000 --0.900000 -0.100400 0.174900 -0.400000 -0.624000 0.656000 --0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000 --0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000 --0.900000 0.150600 0.126400 0.344000 0.632000 0.688000 --0.900000 0.150600 0.126400 0.344000 0.632000 0.688000 --0.900000 0.154600 0.121900 0.352000 0.624000 0.688000 --0.892900 0.150600 0.121900 0.360000 0.624000 0.680000 --0.900000 0.200800 0.074800 0.296000 0.712000 0.624000 --0.850000 0.150600 0.098600 0.360000 0.600000 0.704000 --0.879600 0.200800 0.060900 0.352000 0.712000 0.600000 --0.850000 0.184100 0.060900 0.376000 0.632000 0.664000 --0.850000 0.200800 0.035600 0.384000 0.744000 0.536000 --0.800000 0.153700 0.060900 0.432000 0.632000 0.632000 --0.811000 0.200800 0.000000 0.408000 0.816000 0.392000 --0.800000 0.195100 0.000000 0.456000 0.768000 0.432000 --0.800000 0.200800 -0.016800 0.416000 0.840000 0.336000 --0.750000 0.162200 0.000000 0.464000 0.672000 0.560000 --0.768900 0.200800 -0.060900 0.424000 0.888000 0.160000 --0.750000 0.191300 -0.060900 0.496000 0.856000 0.072000 --0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000 --0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000 --0.800000 0.198900 -0.121900 0.384000 0.872000 -0.288000 --0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000 --0.800000 0.163000 -0.182900 0.392000 0.688000 -0.600000 --0.779100 0.150600 -0.182900 0.400000 0.664000 -0.616000 --0.800000 0.150600 -0.199200 0.384000 0.648000 -0.648000 --0.750000 0.132600 -0.182900 0.408000 0.656000 -0.624000 --0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000 --0.750000 0.100400 -0.222000 0.432000 0.576000 -0.680000 --0.785800 0.100400 -0.243900 0.360000 0.584000 -0.720000 --0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000 --0.800000 0.100400 -0.252800 0.360000 0.584000 -0.720000 --0.750000 0.050200 -0.267100 0.368000 0.432000 -0.816000 --0.800000 0.050200 -0.288900 0.352000 0.360000 -0.856000 --0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000 --0.800000 0.000000 -0.298500 0.248000 0.080000 -0.960000 --0.800000 0.050200 -0.288900 0.352000 0.360000 -0.856000 --0.823600 0.000000 -0.304800 0.296000 0.080000 -0.944000 --0.836500 0.050200 -0.304800 0.336000 0.344000 -0.872000 --0.850000 0.000000 -0.313800 0.264000 0.064000 -0.960000 --0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000 --0.900000 0.000000 -0.328400 0.216000 0.000000 -0.968000 --0.900000 0.050200 -0.331200 0.320000 0.232000 -0.912000 --0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000 --0.900000 0.100400 -0.308600 0.312000 0.536000 -0.776000 --0.850000 0.061400 -0.304800 0.336000 0.392000 -0.848000 --0.892300 0.100400 -0.304800 0.320000 0.536000 -0.776000 --0.850000 0.100400 -0.281200 0.344000 0.488000 -0.792000 --0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000 --0.850000 0.135500 -0.243900 0.320000 0.608000 -0.712000 --0.900000 0.150600 -0.256300 0.328000 0.616000 -0.704000 --0.878700 0.150600 -0.243900 0.328000 0.616000 -0.704000 --0.900000 0.162400 -0.243900 0.336000 0.616000 -0.704000 --0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000 --0.900000 0.200800 -0.201400 0.352000 0.680000 -0.640000 --0.850000 0.188600 -0.182900 0.360000 0.712000 -0.592000 --0.874200 0.200800 -0.182900 0.360000 0.712000 -0.584000 --0.850000 0.200800 -0.163600 0.360000 0.768000 -0.512000 --0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000 --0.850000 0.222300 -0.121900 0.408000 0.856000 -0.296000 --0.900000 0.246900 -0.121900 0.360000 0.872000 -0.304000 --0.850000 0.235300 -0.060900 0.408000 0.904000 0.008000 --0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000 --0.884300 0.251000 -0.060900 0.432000 0.880000 0.144000 --0.900000 0.258900 -0.060900 0.400000 0.896000 0.144000 --0.900000 0.251000 -0.035000 0.384000 0.864000 0.312000 --0.884300 0.251000 -0.060900 0.432000 0.880000 0.144000 --0.900000 0.240500 0.000000 0.368000 0.840000 0.376000 --0.850000 0.235300 -0.060900 0.408000 0.904000 0.008000 --0.850000 0.219100 0.000000 0.368000 0.824000 0.424000 --0.800000 0.214400 -0.060900 0.400000 0.896000 0.176000 --0.811000 0.200800 0.000000 0.408000 0.816000 0.392000 --0.800000 0.200800 -0.016800 0.416000 0.840000 0.336000 --0.800000 0.214400 -0.060900 0.400000 0.896000 0.176000 --0.768900 0.200800 -0.060900 0.424000 0.888000 0.160000 --0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000 --0.800000 0.214400 -0.060900 0.400000 0.896000 0.176000 --0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000 --0.850000 0.235300 -0.060900 0.408000 0.904000 0.008000 --0.850000 0.222300 -0.121900 0.408000 0.856000 -0.296000 --0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000 --0.850000 0.200800 -0.163600 0.360000 0.768000 -0.512000 --0.800000 0.198900 -0.121900 0.384000 0.872000 -0.288000 --0.850000 0.188600 -0.182900 0.360000 0.712000 -0.592000 --0.800000 0.163000 -0.182900 0.392000 0.688000 -0.600000 --0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000 --0.800000 0.150600 -0.199200 0.384000 0.648000 -0.648000 --0.850000 0.135500 -0.243900 0.320000 0.608000 -0.712000 --0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000 --0.850000 0.100400 -0.281200 0.344000 0.488000 -0.792000 --0.800000 0.100400 -0.252800 0.360000 0.584000 -0.720000 --0.850000 0.061400 -0.304800 0.336000 0.392000 -0.848000 --0.800000 0.050200 -0.288900 0.352000 0.360000 -0.856000 --0.836500 0.050200 -0.304800 0.336000 0.344000 -0.872000 --0.850000 0.061400 -0.304800 0.336000 0.392000 -0.848000 --0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000 --0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000 --0.850000 0.127100 0.121900 0.424000 0.560000 0.704000 --0.850000 0.127100 0.121900 0.424000 0.560000 0.704000 --0.820700 0.100400 0.121900 0.496000 0.488000 0.704000 --0.850000 0.100400 0.150400 0.488000 0.512000 0.696000 --0.850000 0.100400 0.150400 0.488000 0.512000 0.696000 --0.839600 0.000000 0.182900 0.264000 0.152000 0.944000 --0.839600 0.000000 0.182900 0.264000 0.152000 0.944000 --0.809300 -0.050200 0.182900 0.232000 0.160000 0.952000 --0.800000 0.000000 0.163200 0.400000 0.288000 0.864000 --0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000 --0.750000 0.000000 0.129400 0.496000 0.360000 0.776000 --0.750000 -0.050200 0.155100 0.464000 0.288000 0.832000 --0.740500 0.000000 0.121900 0.504000 0.352000 0.784000 --0.708600 -0.050200 0.121900 0.496000 0.344000 0.784000 --0.700000 0.000000 0.089700 0.584000 0.336000 0.736000 --0.700000 -0.050200 0.115300 0.496000 0.344000 0.792000 --0.666100 0.000000 0.060900 0.560000 0.376000 0.728000 --0.650000 -0.050200 0.076400 0.576000 0.320000 0.744000 --0.650000 -0.023500 0.060900 0.576000 0.360000 0.720000 --0.635700 -0.050200 0.060900 0.640000 0.304000 0.696000 --0.650000 0.000000 0.045200 0.576000 0.400000 0.704000 --0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000 --0.609800 0.000000 0.000000 0.696000 0.384000 0.592000 --0.600000 -0.018300 0.000000 0.712000 0.368000 0.584000 --0.600000 0.000000 -0.017800 0.736000 0.384000 0.544000 --0.584800 -0.050200 0.000000 0.744000 0.336000 0.568000 --0.573200 0.000000 -0.060900 0.920000 0.296000 -0.248000 --0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000 --0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000 --0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000 --0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000 --0.809300 -0.050200 0.182900 0.232000 0.160000 0.952000 --0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000 --0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000 --0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000 --0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000 --0.836800 -0.150600 0.182900 -0.304000 -0.304000 0.896000 --0.850000 -0.150600 0.175600 -0.632000 -0.392000 0.664000 --0.803100 -0.200800 0.182900 -0.456000 -0.168000 0.864000 --0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000 --0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000 --0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000 --0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000 --0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000 --0.819200 -0.251000 0.121900 -0.760000 -0.496000 0.400000 --0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000 --0.838400 -0.251000 0.060900 -0.808000 -0.528000 0.248000 --0.805900 -0.301200 0.060900 -0.800000 -0.536000 0.232000 --0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000 --0.800000 -0.310100 0.060900 -0.800000 -0.544000 0.224000 --0.805900 -0.301200 0.060900 -0.800000 -0.536000 0.232000 --0.800000 -0.327900 0.000000 -0.800000 -0.560000 0.176000 --0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000 --0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000 --0.800000 0.077200 0.121900 0.512000 0.416000 0.744000 --0.800000 0.077200 0.121900 0.512000 0.416000 0.744000 --0.781300 0.050200 0.121900 0.536000 0.400000 0.736000 --0.800000 0.050200 0.139800 0.504000 0.392000 0.760000 --0.800000 0.050200 0.139800 0.504000 0.392000 0.760000 --0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000 --0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000 --0.750000 -0.100400 0.174700 0.320000 0.192000 0.920000 --0.750000 -0.136500 0.182900 0.216000 0.112000 0.968000 --0.700000 -0.100400 0.138900 0.488000 0.288000 0.816000 --0.743500 -0.150600 0.182900 0.192000 0.096000 0.968000 --0.700000 -0.150600 0.164200 0.408000 0.248000 0.872000 --0.703900 -0.200800 0.182900 0.128000 0.064000 0.984000 --0.700000 -0.200800 0.182200 0.152000 0.072000 0.984000 --0.700000 -0.208700 0.182900 0.176000 0.120000 0.968000 --0.650000 -0.200800 0.153500 0.376000 0.280000 0.872000 --0.650000 -0.249200 0.182900 0.176000 0.464000 0.864000 --0.600000 -0.200800 0.130000 0.152000 0.560000 0.808000 --0.638500 -0.251000 0.182900 0.072000 0.424000 0.896000 --0.600000 -0.251000 0.177800 0.080000 0.520000 0.840000 --0.600000 -0.260000 0.182900 0.056000 0.320000 0.944000 --0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000 --0.550000 -0.264400 0.182900 -0.072000 0.456000 0.880000 --0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000 --0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000 --0.500000 -0.249000 0.182900 -0.112000 0.656000 0.744000 --0.550000 -0.202900 0.121900 0.032000 0.728000 0.680000 --0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000 --0.536800 -0.200800 0.121900 -0.104000 0.736000 0.664000 --0.500000 -0.196200 0.121900 -0.112000 0.784000 0.600000 --0.550000 -0.200800 0.118700 0.032000 0.784000 0.608000 --0.500000 -0.166600 0.060900 -0.304000 0.832000 0.448000 --0.550000 -0.166800 0.060900 0.264000 0.816000 0.504000 --0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000 --0.550000 -0.150600 0.029600 0.504000 0.688000 0.512000 --0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000 --0.550000 -0.125000 0.000000 0.608000 0.616000 0.488000 --0.500000 -0.119500 -0.060900 -0.160000 0.976000 0.112000 --0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000 --0.533200 -0.100400 -0.060900 0.712000 0.696000 -0.024000 --0.533200 -0.100400 -0.060900 0.712000 0.696000 -0.024000 --0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000 --0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000 --0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000 --0.700000 -0.272200 0.182900 -0.072000 -0.128000 0.984000 --0.700000 -0.301200 0.175400 -0.248000 -0.280000 0.920000 --0.671000 -0.301200 0.182900 -0.120000 -0.104000 0.984000 --0.700000 -0.351500 0.155000 -0.664000 -0.344000 0.656000 --0.663400 -0.351500 0.182900 -0.304000 -0.080000 0.944000 --0.700000 -0.401700 0.124500 -0.664000 -0.408000 0.616000 --0.650000 -0.385200 0.182900 -0.496000 -0.152000 0.848000 --0.650000 -0.401700 0.178700 -0.552000 -0.344000 0.752000 --0.644900 -0.401700 0.182900 -0.528000 -0.240000 0.808000 --0.650000 -0.451900 0.140100 -0.528000 -0.568000 0.624000 --0.600000 -0.446800 0.182900 -0.240000 -0.464000 0.848000 --0.600000 -0.451900 0.179400 -0.216000 -0.496000 0.832000 --0.583500 -0.451900 0.182900 -0.128000 -0.544000 0.824000 --0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000 --0.550000 -0.456500 0.182900 0.056000 -0.736000 0.672000 --0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000 --0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000 --0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000 --0.600000 -0.502100 0.110700 -0.280000 -0.792000 0.528000 --0.550000 -0.532000 0.060900 0.080000 -0.776000 0.624000 --0.600000 -0.531600 0.060900 -0.448000 -0.736000 0.496000 --0.600000 -0.502100 0.110700 -0.280000 -0.792000 0.528000 --0.640700 -0.502100 0.060900 -0.496000 -0.728000 0.456000 --0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000 --0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000 --0.650000 -0.463300 0.121900 -0.512000 -0.696000 0.496000 --0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000 --0.664200 -0.451900 0.121900 -0.552000 -0.696000 0.448000 --0.700000 -0.451900 0.063700 -0.672000 -0.600000 0.424000 --0.700000 -0.404000 0.121900 -0.624000 -0.536000 0.560000 --0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000 --0.701700 -0.401700 0.121900 -0.704000 -0.408000 0.568000 --0.731300 -0.401700 0.060900 -0.784000 -0.496000 0.344000 --0.739400 -0.351500 0.121900 -0.528000 -0.576000 0.616000 --0.750000 -0.377100 0.060900 -0.760000 -0.552000 0.320000 --0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000 --0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000 --0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000 --0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000 --0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000 --0.700000 -0.301200 0.175400 -0.248000 -0.280000 0.920000 --0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000 --0.700000 -0.351500 0.155000 -0.664000 -0.344000 0.656000 --0.739400 -0.351500 0.121900 -0.528000 -0.576000 0.616000 --0.700000 -0.401700 0.124500 -0.664000 -0.408000 0.616000 --0.701700 -0.401700 0.121900 -0.704000 -0.408000 0.568000 --0.700000 -0.404000 0.121900 -0.624000 -0.536000 0.560000 --0.700000 -0.401700 0.124500 -0.664000 -0.408000 0.616000 --0.664200 -0.451900 0.121900 -0.552000 -0.696000 0.448000 --0.650000 -0.401700 0.178700 -0.552000 -0.344000 0.752000 --0.650000 -0.451900 0.140100 -0.528000 -0.568000 0.624000 --0.664200 -0.451900 0.121900 -0.552000 -0.696000 0.448000 --0.650000 -0.463300 0.121900 -0.512000 -0.696000 0.496000 --0.650000 -0.451900 0.140100 -0.528000 -0.568000 0.624000 --0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000 --0.600000 -0.451900 0.179400 -0.216000 -0.496000 0.832000 --0.600000 -0.451900 0.179400 -0.216000 -0.496000 0.832000 --0.700000 -0.062200 0.121900 0.504000 0.344000 0.784000 --0.700000 -0.062200 0.121900 0.504000 0.344000 0.784000 --0.677900 -0.100400 0.121900 0.528000 0.328000 0.776000 --0.700000 -0.100400 0.138900 0.488000 0.288000 0.816000 --0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000 --0.700000 -0.150600 0.164200 0.408000 0.248000 0.872000 --0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000 --0.700000 -0.200800 0.182200 0.152000 0.072000 0.984000 --0.650000 -0.200800 0.153500 0.376000 0.280000 0.872000 --0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000 --0.600000 -0.200800 0.130000 0.152000 0.560000 0.808000 --0.642900 -0.150600 0.121900 0.408000 0.352000 0.832000 --0.600000 -0.190600 0.121900 0.296000 0.496000 0.808000 --0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000 --0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000 --0.575700 -0.150600 0.060900 0.384000 0.664000 0.632000 --0.550000 -0.200800 0.118700 0.032000 0.784000 0.608000 --0.550000 -0.166800 0.060900 0.264000 0.816000 0.504000 --0.575700 -0.150600 0.060900 0.384000 0.664000 0.632000 --0.550000 -0.150600 0.029600 0.504000 0.688000 0.512000 --0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000 --0.550000 -0.125000 0.000000 0.608000 0.616000 0.488000 --0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000 --0.565600 -0.100400 0.000000 0.744000 0.440000 0.496000 --0.550000 -0.125000 0.000000 0.608000 0.616000 0.488000 --0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000 --0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000 --0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000 --0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000 --0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000 --0.642900 -0.150600 0.121900 0.408000 0.352000 0.832000 --0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000 --0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000 --0.612900 -0.100400 0.060900 0.624000 0.376000 0.672000 --0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000 --0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000 --0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000 --0.600000 -0.190600 0.121900 0.296000 0.496000 0.808000 --0.600000 -0.190600 0.121900 0.296000 0.496000 0.808000 --0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000 --0.600000 -0.200800 0.130000 0.152000 0.560000 0.808000 --0.550000 -0.202900 0.121900 0.032000 0.728000 0.680000 --0.600000 -0.251000 0.177800 0.080000 0.520000 0.840000 --0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000 --0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000 --0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000 --0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000 --0.450000 -0.200800 0.150000 -0.304000 0.608000 0.720000 --0.500000 -0.196200 0.121900 -0.112000 0.784000 0.600000 --0.450000 -0.173700 0.121900 -0.368000 0.648000 0.656000 --0.500000 -0.166600 0.060900 -0.304000 0.832000 0.448000 --0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000 --0.472400 -0.150600 0.060900 -0.464000 0.768000 0.416000 --0.450000 -0.136300 0.060900 -0.512000 0.720000 0.448000 --0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000 --0.450000 -0.112700 0.000000 -0.520000 0.784000 0.320000 --0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000 --0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000 --0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000 --0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000 --0.500000 -0.249000 0.182900 -0.112000 0.656000 0.744000 --0.450000 -0.200800 0.150000 -0.304000 0.608000 0.720000 --0.450000 -0.233700 0.182900 -0.216000 0.472000 0.848000 --0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000 --0.400000 -0.206800 0.182900 -0.168000 0.424000 0.880000 --0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000 --0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000 --0.350000 -0.189600 0.182900 -0.288000 0.472000 0.824000 --0.400000 -0.150600 0.133500 -0.392000 0.600000 0.688000 --0.350000 -0.150600 0.151300 -0.584000 0.352000 0.720000 --0.350000 -0.189600 0.182900 -0.288000 0.472000 0.824000 --0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000 --0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000 --0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000 --0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000 --0.450000 -0.200800 0.150000 -0.304000 0.608000 0.720000 --0.400000 -0.150600 0.133500 -0.392000 0.600000 0.688000 --0.450000 -0.173700 0.121900 -0.368000 0.648000 0.656000 --0.414900 -0.150600 0.121900 -0.424000 0.616000 0.648000 --0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000 --0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000 --0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000 --0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000 --0.350000 -0.097900 0.121900 -0.560000 0.424000 0.704000 --0.350000 -0.100400 0.123500 -0.608000 0.328000 0.712000 --0.300000 -0.066800 0.121900 -0.280000 0.584000 0.752000 --0.300000 -0.100400 0.149000 -0.304000 0.432000 0.840000 --0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000 --0.250000 -0.100400 0.155000 0.480000 0.160000 0.856000 --0.250000 -0.050200 0.123600 0.200000 0.440000 0.864000 --0.250000 -0.050200 0.123600 0.200000 0.440000 0.864000 --0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000 --0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000 --0.350000 -0.276800 0.182900 0.600000 -0.432000 0.664000 --0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000 --0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000 --0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000 --0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000 --0.300000 -0.205800 0.182900 0.768000 -0.472000 0.416000 --0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000 --0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000 --0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000 --0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000 --0.294600 -0.251000 0.121900 0.616000 -0.600000 0.488000 --0.300000 -0.256400 0.121900 0.624000 -0.624000 0.456000 --0.300000 -0.256400 0.121900 0.624000 -0.624000 0.456000 -0.550000 0.331800 0.121900 -0.696000 0.536000 0.456000 -0.550000 0.331800 0.121900 -0.696000 0.536000 0.456000 -0.550000 0.301200 0.149100 -0.896000 -0.096000 0.416000 -0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000 -0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000 -0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000 -0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000 -0.550000 0.251000 0.125100 -0.872000 -0.184000 0.440000 -0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000 -0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000 -0.567500 0.200800 0.121900 -0.784000 -0.344000 0.504000 -0.600000 0.211800 0.182900 -0.672000 -0.280000 0.672000 -0.600000 0.200800 0.176700 -0.712000 -0.296000 0.624000 -0.604600 0.200800 0.182900 -0.672000 -0.288000 0.664000 -0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000 -0.641000 0.150600 0.182900 -0.528000 -0.464000 0.696000 -0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000 -0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000 -0.627900 0.100400 0.121900 -0.608000 -0.608000 0.504000 -0.650000 0.100400 0.150000 -0.536000 -0.592000 0.592000 -0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000 -0.685300 0.100400 0.182900 -0.504000 -0.560000 0.648000 -0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000 -0.700000 0.088000 0.182900 -0.464000 -0.608000 0.640000 -0.700000 0.050200 0.131500 -0.112000 -0.824000 0.544000 -0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000 -0.744700 0.050200 0.121900 0.096000 -0.864000 0.480000 -0.750000 0.050900 0.121900 0.096000 -0.792000 0.600000 -0.750000 0.050200 0.120200 -0.160000 -0.904000 0.376000 -0.751700 0.050200 0.121900 -0.392000 -0.816000 0.416000 -0.750000 0.031700 0.060900 -0.136000 -0.928000 0.336000 -0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000 -0.798100 0.000000 0.060900 -0.504000 -0.792000 0.312000 -0.800000 0.000000 0.064400 -0.576000 -0.736000 0.344000 -0.800000 -0.001000 0.060900 -0.584000 -0.776000 0.216000 -0.829700 0.000000 0.121900 -0.704000 -0.616000 0.344000 -0.843600 -0.050200 0.060900 -0.704000 -0.672000 0.184000 -0.850000 -0.029600 0.121900 -0.840000 -0.432000 0.312000 -0.850000 -0.050200 0.089500 -0.768000 -0.592000 0.216000 -0.857500 -0.050200 0.121900 -0.848000 -0.448000 0.272000 -0.850000 -0.056700 0.060900 -0.720000 -0.664000 0.176000 -0.892500 -0.100400 0.121900 -0.688000 -0.680000 0.240000 -0.881900 -0.100400 0.060900 -0.752000 -0.632000 0.152000 -0.850000 -0.056700 0.060900 -0.720000 -0.664000 0.176000 -0.873300 -0.100400 0.000000 -0.752000 -0.632000 0.120000 -0.850000 -0.068700 0.000000 -0.752000 -0.640000 0.136000 -0.865600 -0.100400 -0.060900 -0.776000 -0.616000 0.120000 -0.850000 -0.079400 -0.060900 -0.768000 -0.616000 0.120000 -0.858300 -0.100400 -0.121900 -0.792000 -0.600000 0.056000 -0.850000 -0.088400 -0.121900 -0.808000 -0.584000 0.016000 -0.858100 -0.100400 -0.182900 -0.824000 -0.552000 0.000000 -0.850000 -0.086900 -0.182900 -0.848000 -0.512000 -0.048000 -0.860900 -0.100400 -0.243900 -0.856000 -0.496000 -0.072000 -0.850000 -0.077200 -0.243900 -0.824000 -0.432000 -0.344000 -0.869700 -0.100400 -0.304800 -0.880000 -0.248000 -0.400000 -0.850000 -0.050200 -0.276700 -0.784000 -0.280000 -0.544000 -0.867300 -0.050200 -0.304800 -0.784000 -0.136000 -0.600000 -0.850000 0.000000 -0.279000 -0.536000 0.488000 -0.680000 -0.877300 0.000000 -0.304800 -0.592000 0.480000 -0.632000 -0.877300 0.000000 -0.304800 -0.592000 0.480000 -0.632000 -0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000 -0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000 -0.600000 0.200800 0.176700 -0.712000 -0.296000 0.624000 -0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000 -0.567500 0.200800 0.121900 -0.784000 -0.344000 0.504000 -0.560700 0.150600 0.060900 -0.704000 -0.368000 0.592000 -0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000 -0.550000 0.174700 0.060900 -0.744000 -0.320000 0.576000 -0.538800 0.200800 0.060900 -0.824000 -0.216000 0.520000 -0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000 -0.500000 0.200800 0.008600 -0.576000 -0.176000 0.792000 -0.510200 0.150600 0.000000 -0.752000 -0.384000 0.520000 -0.500000 0.181600 0.000000 -0.600000 -0.304000 0.728000 -0.500000 0.150600 -0.020200 -0.704000 -0.472000 0.520000 -0.488800 0.200800 0.000000 -0.512000 0.024000 0.856000 -0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000 -0.450000 0.200800 -0.035500 -0.536000 -0.264000 0.792000 -0.450000 0.163500 -0.060900 -0.600000 -0.504000 0.608000 -0.416500 0.200800 -0.060900 -0.560000 -0.352000 0.744000 -0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000 -0.400000 0.200800 -0.077800 -0.600000 -0.432000 0.664000 -0.401900 0.150600 -0.121900 -0.864000 -0.496000 -0.024000 -0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000 -0.407800 0.150600 -0.182900 -0.544000 -0.240000 -0.800000 -0.400000 0.155900 -0.182900 -0.216000 -0.144000 -0.960000 -0.450000 0.150600 -0.187200 -0.088000 0.168000 -0.976000 -0.400000 0.200800 -0.189400 -0.152000 -0.072000 -0.984000 -0.450000 0.200800 -0.192400 -0.128000 -0.040000 -0.984000 -0.400000 0.251000 -0.186400 -0.152000 0.040000 -0.984000 -0.450000 0.251000 -0.188200 -0.104000 0.040000 -0.992000 -0.400000 0.301200 -0.184200 -0.016000 -0.016000 -0.992000 -0.450000 0.301200 -0.186200 0.000000 -0.016000 -0.992000 -0.400000 0.351500 -0.194500 0.000000 0.072000 -0.992000 -0.450000 0.351500 -0.196000 0.120000 0.128000 -0.976000 -0.400000 0.377300 -0.182900 0.016000 0.320000 -0.944000 -0.450000 0.373800 -0.182900 0.104000 0.432000 -0.888000 -0.400000 0.401700 -0.171200 0.088000 0.472000 -0.872000 -0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000 -0.400000 0.432800 -0.121900 0.160000 0.904000 -0.384000 -0.450000 0.422200 -0.121900 0.368000 0.832000 -0.392000 -0.400000 0.419800 -0.060900 0.080000 0.848000 0.520000 -0.450000 0.414500 -0.060900 0.192000 0.928000 0.304000 -0.400000 0.401700 -0.034800 -0.040000 0.584000 0.808000 -0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000 -0.400000 0.351500 -0.018700 -0.136000 -0.208000 0.960000 -0.450000 0.351500 -0.003200 -0.296000 0.344000 0.888000 -0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000 -0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000 -0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000 -0.500000 0.369100 0.000000 -0.184000 0.800000 0.552000 -0.517100 0.401700 -0.060900 0.080000 0.968000 0.224000 -0.550000 0.388900 0.000000 -0.392000 0.856000 0.320000 -0.550000 0.398000 -0.060900 0.000000 0.968000 -0.216000 -0.517100 0.401700 -0.060900 0.080000 0.968000 0.224000 -0.550000 0.362300 -0.121900 0.400000 0.656000 -0.632000 -0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000 -0.500000 0.393600 -0.121900 0.504000 0.744000 -0.432000 -0.488600 0.401700 -0.121900 0.504000 0.776000 -0.368000 -0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000 -0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000 -0.450000 0.373800 -0.182900 0.104000 0.432000 -0.888000 -0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000 -0.450000 0.351500 -0.196000 0.120000 0.128000 -0.976000 -0.500000 0.351500 -0.187300 0.416000 0.568000 -0.696000 -0.450000 0.301200 -0.186200 0.000000 -0.016000 -0.992000 -0.500000 0.301200 -0.193500 0.168000 0.072000 -0.976000 -0.450000 0.251000 -0.188200 -0.104000 0.040000 -0.992000 -0.500000 0.251000 -0.199400 0.072000 0.096000 -0.984000 -0.450000 0.200800 -0.192400 -0.128000 -0.040000 -0.984000 -0.500000 0.200800 -0.200200 -0.104000 -0.048000 -0.992000 -0.450000 0.150600 -0.187200 -0.088000 0.168000 -0.976000 -0.500000 0.150600 -0.194400 -0.208000 0.240000 -0.944000 -0.450000 0.100400 -0.233000 -0.008000 0.816000 -0.568000 -0.500000 0.100400 -0.210700 0.048000 0.704000 -0.704000 -0.450000 0.095300 -0.243900 -0.008000 0.856000 -0.512000 -0.500000 0.082500 -0.243900 0.216000 0.832000 -0.504000 -0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000 -0.500000 0.050200 -0.303800 0.264000 0.816000 -0.504000 -0.496000 0.050200 -0.304800 0.104000 0.800000 -0.576000 -0.500000 0.049600 -0.304800 0.264000 0.736000 -0.616000 -0.450000 0.050200 -0.314200 0.064000 0.744000 -0.656000 -0.500000 0.014000 -0.365800 0.216000 0.784000 -0.568000 -0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000 -0.500000 0.000000 -0.393700 0.528000 0.072000 -0.840000 -0.450000 0.000000 -0.377000 -0.360000 0.400000 -0.840000 -0.500000 -0.027200 -0.365800 0.264000 -0.576000 -0.768000 -0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000 -0.500000 -0.050200 -0.339600 -0.136000 -0.672000 -0.720000 -0.450000 -0.050200 -0.325200 -0.120000 -0.568000 -0.808000 -0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000 -0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000 -0.431500 0.000000 -0.365800 -0.424000 0.312000 -0.840000 -0.400000 0.000000 -0.343200 -0.216000 0.592000 -0.768000 -0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000 -0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000 -0.450000 0.050200 -0.314200 0.064000 0.744000 -0.656000 -0.419200 0.050200 -0.304800 -0.224000 0.736000 -0.632000 -0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000 -0.400000 0.050200 -0.294000 -0.352000 0.672000 -0.640000 -0.450000 0.095300 -0.243900 -0.008000 0.856000 -0.512000 -0.400000 0.083700 -0.243900 -0.328000 0.768000 -0.536000 -0.450000 0.100400 -0.233000 -0.008000 0.816000 -0.568000 -0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000 -0.450000 0.150600 -0.187200 -0.088000 0.168000 -0.976000 -0.400000 0.146600 -0.182900 -0.440000 0.464000 -0.760000 -0.407800 0.150600 -0.182900 -0.544000 -0.240000 -0.800000 -0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000 -0.401900 0.150600 -0.121900 -0.864000 -0.496000 -0.024000 -0.415000 0.100400 -0.121900 -0.640000 0.192000 0.736000 -0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000 -0.450000 0.100400 -0.090700 -0.384000 -0.320000 0.856000 -0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000 -0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000 -0.500000 0.107000 -0.060900 -0.608000 -0.480000 0.616000 -0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000 -0.500000 0.150600 -0.020200 -0.704000 -0.472000 0.520000 -0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000 -0.510200 0.150600 0.000000 -0.752000 -0.384000 0.520000 -0.550000 0.104000 0.000000 -0.664000 -0.568000 0.464000 -0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000 -0.553100 0.100400 0.000000 -0.664000 -0.576000 0.464000 -0.560700 0.150600 0.060900 -0.704000 -0.368000 0.592000 -0.593200 0.100400 0.060900 -0.640000 -0.584000 0.496000 -0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000 -0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000 -0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000 -0.627900 0.100400 0.121900 -0.608000 -0.608000 0.504000 -0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000 -0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000 -0.600000 0.093600 0.060900 -0.624000 -0.616000 0.464000 -0.650000 0.050200 0.073400 -0.576000 -0.624000 0.512000 -0.641200 0.050200 0.060900 -0.600000 -0.608000 0.512000 -0.650000 0.041800 0.060900 -0.568000 -0.648000 0.504000 -0.602900 0.050200 0.000000 -0.576000 -0.704000 0.400000 -0.650000 0.013100 0.000000 -0.448000 -0.792000 0.392000 -0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000 -0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000 -0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000 -0.650000 -0.010200 -0.060900 0.168000 -0.784000 0.592000 -0.600000 -0.012300 -0.060900 0.104000 -0.576000 0.800000 -0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000 -0.600000 -0.050200 -0.088500 0.448000 -0.400000 0.792000 -0.638000 -0.050200 -0.121900 0.800000 -0.536000 0.256000 -0.600000 -0.100400 -0.077400 0.584000 0.048000 0.800000 -0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000 -0.638000 -0.050200 -0.121900 0.800000 -0.536000 0.256000 -0.638900 -0.100400 -0.182900 0.920000 0.368000 0.072000 -0.649100 -0.050200 -0.182900 0.816000 -0.544000 0.144000 -0.637300 -0.100400 -0.243900 0.848000 0.016000 -0.520000 -0.637200 -0.050200 -0.243900 0.840000 -0.080000 -0.528000 -0.604900 -0.100400 -0.304800 0.744000 -0.360000 -0.552000 -0.600000 -0.050200 -0.286000 0.712000 0.144000 -0.680000 -0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000 -0.587300 -0.050200 -0.304800 0.688000 0.056000 -0.712000 -0.589400 -0.100400 -0.304800 -0.440000 -0.424000 -0.784000 -0.550000 -0.083700 -0.304800 0.088000 -0.736000 -0.664000 -0.550000 -0.100400 -0.280800 -0.008000 -0.528000 -0.840000 -0.500000 -0.082600 -0.304800 0.216000 -0.680000 -0.688000 -0.500000 -0.100400 -0.277800 0.560000 -0.104000 -0.816000 -0.475800 -0.100400 -0.304800 0.512000 -0.104000 -0.848000 -0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000 -0.500000 -0.100400 -0.277800 0.560000 -0.104000 -0.816000 -0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000 -0.550000 -0.100400 -0.280800 -0.008000 -0.528000 -0.840000 -0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000 -0.589400 -0.100400 -0.304800 -0.440000 -0.424000 -0.784000 -0.600000 -0.150600 -0.265200 0.248000 0.032000 -0.960000 -0.600000 -0.105700 -0.304800 0.312000 -0.728000 -0.600000 -0.650000 -0.150600 -0.274900 0.544000 0.464000 -0.688000 -0.604900 -0.100400 -0.304800 0.744000 -0.360000 -0.552000 -0.650000 -0.120200 -0.243900 0.704000 0.520000 -0.472000 -0.637300 -0.100400 -0.243900 0.848000 0.016000 -0.520000 -0.650000 -0.117900 -0.182900 0.792000 0.600000 0.024000 -0.638900 -0.100400 -0.182900 0.920000 0.368000 0.072000 -0.650000 -0.146100 -0.121900 0.720000 0.504000 0.464000 -0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000 -0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000 -0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000 -0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000 -0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000 -0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000 -0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000 -0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000 -0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000 -0.685300 0.100400 0.182900 -0.504000 -0.560000 0.648000 -0.650000 0.100400 0.150000 -0.536000 -0.592000 0.592000 -0.650000 0.100400 0.150000 -0.536000 -0.592000 0.592000 -0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000 -0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000 -0.700000 0.050200 0.131500 -0.112000 -0.824000 0.544000 -0.700000 0.046100 0.121900 -0.152000 -0.904000 0.376000 -0.744700 0.050200 0.121900 0.096000 -0.864000 0.480000 -0.700000 0.026800 0.060900 -0.288000 -0.896000 0.328000 -0.750000 0.050200 0.120200 -0.160000 -0.904000 0.376000 -0.750000 0.031700 0.060900 -0.136000 -0.928000 0.336000 -0.700000 0.026800 0.060900 -0.288000 -0.896000 0.328000 -0.750000 0.013300 0.000000 -0.240000 -0.936000 0.240000 -0.700000 0.012000 0.000000 -0.032000 -0.960000 0.272000 -0.750000 0.001600 -0.060900 -0.416000 -0.904000 -0.016000 -0.700000 0.001400 -0.060900 0.088000 -0.968000 0.192000 -0.750000 0.004300 -0.121900 -0.408000 -0.880000 -0.216000 -0.700000 0.000400 -0.121900 0.224000 -0.968000 0.032000 -0.750000 0.019900 -0.182900 -0.176000 -0.792000 -0.576000 -0.700000 0.009000 -0.182900 0.456000 -0.744000 -0.472000 -0.750000 0.050200 -0.223600 -0.168000 -0.552000 -0.808000 -0.700000 0.050200 -0.225700 0.368000 -0.368000 -0.848000 -0.750000 0.100400 -0.218500 0.200000 0.232000 -0.944000 -0.700000 0.100400 -0.234000 0.272000 0.000000 -0.960000 -0.750000 0.150600 -0.191500 0.256000 0.656000 -0.704000 -0.700000 0.150600 -0.210500 0.296000 0.424000 -0.848000 -0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000 -0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000 -0.750000 0.186400 -0.121900 0.504000 0.648000 -0.560000 -0.700000 0.200800 -0.171600 0.480000 0.608000 -0.616000 -0.734900 0.200800 -0.121900 0.552000 0.608000 -0.552000 -0.700000 0.229200 -0.121900 0.528000 0.656000 -0.528000 -0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000 -0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000 -0.750000 0.228900 -0.060900 0.576000 0.696000 -0.416000 -0.725300 0.251000 -0.060900 0.696000 0.648000 -0.288000 -0.750000 0.219200 0.000000 0.672000 0.728000 0.080000 -0.721000 0.251000 0.000000 0.784000 0.608000 -0.040000 -0.750000 0.222200 0.060900 0.704000 0.696000 -0.080000 -0.727500 0.251000 0.060900 0.792000 0.584000 -0.112000 -0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000 -0.736800 0.251000 0.121900 0.752000 0.632000 0.144000 -0.727500 0.251000 0.060900 0.792000 0.584000 -0.112000 -0.700000 0.297800 0.121900 0.728000 0.680000 -0.032000 -0.700000 0.290800 0.060900 0.800000 0.576000 -0.104000 -0.696500 0.301200 0.121900 0.712000 0.672000 0.168000 -0.692400 0.301200 0.060900 0.752000 0.648000 -0.056000 -0.653800 0.351500 0.121900 0.656000 0.616000 0.424000 -0.663900 0.351500 0.060900 0.768000 0.624000 0.096000 -0.650000 0.355500 0.121900 0.632000 0.632000 0.432000 -0.650000 0.370100 0.060900 0.776000 0.624000 0.048000 -0.600000 0.382600 0.121900 0.272000 0.776000 0.560000 -0.612200 0.401700 0.060900 0.488000 0.832000 0.224000 -0.600000 0.401700 0.085900 0.096000 0.928000 0.336000 -0.600000 0.407100 0.060900 0.120000 0.968000 0.184000 -0.584600 0.401700 0.060900 -0.416000 0.872000 0.248000 -0.600000 0.410900 0.000000 0.104000 0.992000 -0.032000 -0.568400 0.401700 0.000000 -0.472000 0.832000 -0.264000 -0.600000 0.401700 -0.057700 0.168000 0.920000 -0.344000 -0.600000 0.410900 0.000000 0.104000 0.992000 -0.032000 -0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000 -0.600000 0.407100 0.060900 0.120000 0.968000 0.184000 -0.612200 0.401700 0.060900 0.488000 0.832000 0.224000 -0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000 -0.650000 0.370100 0.060900 0.776000 0.624000 0.048000 -0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000 -0.663900 0.351500 0.060900 0.768000 0.624000 0.096000 -0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000 -0.692400 0.301200 0.060900 0.752000 0.648000 -0.056000 -0.685300 0.301200 0.000000 0.832000 0.536000 -0.104000 -0.700000 0.290800 0.060900 0.800000 0.576000 -0.104000 -0.700000 0.279600 0.000000 0.792000 0.600000 -0.048000 -0.727500 0.251000 0.060900 0.792000 0.584000 -0.112000 -0.721000 0.251000 0.000000 0.784000 0.608000 -0.040000 -0.700000 0.279600 0.000000 0.792000 0.600000 -0.048000 -0.725300 0.251000 -0.060900 0.696000 0.648000 -0.288000 -0.700000 0.278700 -0.060900 0.648000 0.584000 -0.472000 -0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000 -0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000 -0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000 -0.650000 0.301200 -0.100800 0.528000 0.504000 -0.672000 -0.650000 0.278000 -0.121900 0.448000 0.624000 -0.624000 -0.608400 0.301200 -0.121900 0.448000 0.488000 -0.744000 -0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000 -0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000 -0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000 -0.600000 0.256700 -0.182900 0.328000 0.496000 -0.792000 -0.600000 0.251000 -0.187000 0.320000 0.456000 -0.816000 -0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000 -0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000 -0.650000 0.227800 -0.182900 0.368000 0.576000 -0.720000 -0.650000 0.200800 -0.204000 0.272000 0.408000 -0.864000 -0.687200 0.200800 -0.182900 0.432000 0.544000 -0.712000 -0.650000 0.150600 -0.219600 0.200000 0.280000 -0.928000 -0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000 -0.700000 0.150600 -0.210500 0.296000 0.424000 -0.848000 -0.650000 0.150600 -0.219600 0.200000 0.280000 -0.928000 -0.700000 0.100400 -0.234000 0.272000 0.000000 -0.960000 -0.650000 0.100400 -0.241400 0.232000 0.064000 -0.968000 -0.700000 0.050200 -0.225700 0.368000 -0.368000 -0.848000 -0.650000 0.067400 -0.243900 0.208000 0.056000 -0.968000 -0.653800 0.050200 -0.243900 0.232000 0.032000 -0.968000 -0.650000 0.050200 -0.244900 0.216000 0.040000 -0.968000 -0.653800 0.000000 -0.243900 0.576000 -0.112000 -0.808000 -0.650000 0.000000 -0.248500 0.680000 -0.160000 -0.712000 -0.650000 -0.016900 -0.243900 0.704000 -0.184000 -0.672000 -0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000 -0.637200 -0.050200 -0.243900 0.840000 -0.080000 -0.528000 -0.600000 -0.050200 -0.286000 0.712000 0.144000 -0.680000 -0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000 -0.587300 -0.050200 -0.304800 0.688000 0.056000 -0.712000 -0.578400 0.000000 -0.304800 0.536000 0.480000 -0.688000 -0.578400 0.000000 -0.304800 0.536000 0.480000 -0.688000 -0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000 -0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000 -0.750000 0.050900 0.121900 0.096000 -0.792000 0.600000 -0.762700 0.050200 0.182900 -0.512000 -0.672000 0.520000 -0.751700 0.050200 0.121900 -0.392000 -0.816000 0.416000 -0.800000 0.035400 0.182900 -0.432000 -0.808000 0.384000 -0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000 -0.846600 0.000000 0.182900 -0.736000 -0.616000 0.264000 -0.829700 0.000000 0.121900 -0.704000 -0.616000 0.344000 -0.850000 -0.004200 0.182900 -0.720000 -0.616000 0.288000 -0.850000 -0.029600 0.121900 -0.840000 -0.432000 0.312000 -0.880500 -0.050200 0.182900 -0.744000 -0.528000 0.384000 -0.857500 -0.050200 0.121900 -0.848000 -0.448000 0.272000 -0.900000 -0.076800 0.182900 -0.504000 -0.624000 0.592000 -0.892500 -0.100400 0.121900 -0.688000 -0.680000 0.240000 -0.900000 -0.100400 0.145900 -0.608000 -0.728000 0.304000 -0.900000 -0.076800 0.182900 -0.504000 -0.624000 0.592000 -0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000 -0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000 -0.800000 0.150600 0.181400 0.520000 0.336000 0.776000 -0.800000 0.150600 0.181400 0.520000 0.336000 0.776000 -0.850000 0.150600 0.126500 0.640000 0.560000 0.512000 -0.800000 0.190400 0.121900 0.624000 0.752000 0.168000 -0.850000 0.151600 0.121900 0.680000 0.720000 0.080000 -0.800000 0.182100 0.060900 0.560000 0.824000 -0.024000 -0.850000 0.154700 0.060900 0.576000 0.800000 0.096000 -0.800000 0.184600 0.000000 0.464000 0.872000 0.120000 -0.850000 0.161100 0.000000 0.480000 0.856000 0.160000 -0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000 -0.850000 0.171300 -0.060900 0.448000 0.864000 -0.216000 -0.800000 0.164900 -0.121900 0.312000 0.800000 -0.504000 -0.850000 0.155600 -0.121900 0.432000 0.856000 -0.272000 -0.800000 0.150600 -0.164100 0.256000 0.800000 -0.528000 -0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000 -0.800000 0.138600 -0.182900 0.232000 0.712000 -0.656000 -0.850000 0.127100 -0.182900 0.192000 0.744000 -0.632000 -0.800000 0.100400 -0.216300 0.104000 0.416000 -0.896000 -0.850000 0.100400 -0.218500 0.128000 0.592000 -0.784000 -0.800000 0.050200 -0.233400 -0.176000 0.416000 -0.880000 -0.850000 0.050200 -0.237100 -0.376000 0.576000 -0.720000 -0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000 -0.850000 0.042400 -0.243900 -0.408000 0.528000 -0.736000 -0.819700 0.000000 -0.243900 -0.752000 -0.192000 -0.616000 -0.850000 0.000000 -0.279000 -0.536000 0.488000 -0.680000 -0.835300 -0.050200 -0.243900 -0.840000 -0.416000 -0.336000 -0.850000 -0.050200 -0.276700 -0.784000 -0.280000 -0.544000 -0.850000 -0.077200 -0.243900 -0.824000 -0.432000 -0.344000 -0.835300 -0.050200 -0.243900 -0.840000 -0.416000 -0.336000 -0.850000 -0.086900 -0.182900 -0.848000 -0.512000 -0.048000 -0.822900 -0.050200 -0.182900 -0.792000 -0.592000 -0.088000 -0.850000 -0.088400 -0.121900 -0.808000 -0.584000 0.016000 -0.818400 -0.050200 -0.121900 -0.760000 -0.640000 0.016000 -0.850000 -0.079400 -0.060900 -0.768000 -0.616000 0.120000 -0.823600 -0.050200 -0.060900 -0.736000 -0.664000 0.112000 -0.850000 -0.068700 0.000000 -0.752000 -0.640000 0.136000 -0.832800 -0.050200 0.000000 -0.728000 -0.656000 0.144000 -0.850000 -0.056700 0.060900 -0.720000 -0.664000 0.176000 -0.843600 -0.050200 0.060900 -0.704000 -0.672000 0.184000 -0.850000 -0.050200 0.089500 -0.768000 -0.592000 0.216000 -0.850000 -0.050200 0.089500 -0.768000 -0.592000 0.216000 -0.850000 0.150600 0.126500 0.640000 0.560000 0.512000 -0.850000 0.150600 0.126500 0.640000 0.560000 0.512000 -0.850000 0.151600 0.121900 0.680000 0.720000 0.080000 -0.850900 0.150600 0.121900 0.704000 0.704000 0.080000 -0.850000 0.154700 0.060900 0.576000 0.800000 0.096000 -0.855400 0.150600 0.060900 0.680000 0.720000 0.072000 -0.850000 0.161100 0.000000 0.480000 0.856000 0.160000 -0.867700 0.150600 0.000000 0.552000 0.816000 0.152000 -0.850000 0.171300 -0.060900 0.448000 0.864000 -0.216000 -0.888500 0.150600 -0.060900 0.504000 0.856000 -0.040000 -0.850000 0.155600 -0.121900 0.432000 0.856000 -0.272000 -0.859300 0.150600 -0.121900 0.456000 0.840000 -0.272000 -0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000 -0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000 -0.891700 0.100400 0.182900 0.576000 0.688000 0.424000 -0.891700 0.100400 0.182900 0.576000 0.688000 0.424000 -0.900000 0.100400 0.165200 0.584000 0.744000 0.296000 -0.900000 0.093100 0.182900 0.568000 0.672000 0.464000 -0.911800 0.100400 0.121900 0.528000 0.800000 0.264000 -0.940200 0.050200 0.182900 0.624000 0.528000 0.568000 -0.950000 0.069700 0.121900 0.360000 0.840000 0.384000 -0.950000 0.050200 0.169400 0.600000 0.560000 0.560000 -1.000000 0.053600 0.121900 0.280000 0.872000 0.392000 -1.000000 0.050200 0.131000 0.336000 0.784000 0.512000 -0.950000 0.050200 0.169400 0.600000 0.560000 0.560000 -1.000000 0.004900 0.182900 0.336000 0.520000 0.776000 -0.950000 0.037400 0.182900 0.520000 0.504000 0.680000 -0.950000 0.050200 0.169400 0.600000 0.560000 0.560000 -0.940200 0.050200 0.182900 0.624000 0.528000 0.568000 -0.940200 0.050200 0.182900 0.624000 0.528000 0.568000 -0.900000 0.100400 0.165200 0.584000 0.744000 0.296000 -0.900000 0.100400 0.165200 0.584000 0.744000 0.296000 -0.900000 0.107300 0.121900 0.512000 0.832000 0.184000 -0.911800 0.100400 0.121900 0.528000 0.800000 0.264000 -0.900000 0.118900 0.060900 0.472000 0.856000 0.184000 -0.936800 0.100400 0.060900 0.456000 0.872000 0.168000 -0.900000 0.131100 0.000000 0.480000 0.848000 0.192000 -0.950000 0.100400 0.012800 0.496000 0.848000 0.136000 -0.950000 0.102000 0.000000 0.472000 0.864000 0.120000 -0.952900 0.100400 0.000000 0.504000 0.848000 0.120000 -0.950000 0.106300 -0.060900 0.576000 0.776000 -0.240000 -0.957800 0.100400 -0.060900 0.544000 0.824000 -0.120000 -0.950000 0.100400 -0.078300 0.560000 0.768000 -0.304000 -1.000000 0.074600 -0.060900 0.496000 0.816000 -0.280000 -0.950000 0.086300 -0.121900 0.544000 0.784000 -0.280000 -1.000000 0.056100 -0.121900 0.488000 0.808000 -0.304000 -0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000 -1.000000 0.050200 -0.141200 0.512000 0.792000 -0.320000 -0.978000 0.050200 -0.182900 0.512000 0.768000 -0.376000 -1.000000 0.035800 -0.182900 0.504000 0.768000 -0.376000 -0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000 -1.000000 0.004200 -0.243900 0.464000 0.680000 -0.552000 -0.950000 0.037500 -0.243900 0.432000 0.688000 -0.576000 -1.000000 0.000000 -0.249700 0.512000 0.464000 -0.720000 -0.950000 0.000000 -0.291100 0.424000 0.536000 -0.720000 -1.000000 -0.050200 -0.288900 0.520000 0.432000 -0.728000 -0.950000 -0.016600 -0.304800 0.448000 0.520000 -0.720000 -0.981700 -0.050200 -0.304800 0.528000 0.432000 -0.720000 -0.950000 -0.050200 -0.338500 0.440000 0.400000 -0.800000 -1.000000 -0.073100 -0.304800 0.536000 0.424000 -0.720000 -0.950000 -0.100400 -0.351000 0.336000 0.064000 -0.936000 -1.000000 -0.100400 -0.325200 0.488000 0.344000 -0.792000 -0.950000 -0.150600 -0.345500 -0.032000 0.064000 -0.992000 -1.000000 -0.150600 -0.335800 0.136000 0.136000 -0.976000 -0.950000 -0.200800 -0.357000 -0.272000 -0.104000 -0.952000 -1.000000 -0.200800 -0.338800 0.136000 -0.384000 -0.904000 -0.950000 -0.251000 -0.328200 -0.712000 -0.568000 -0.392000 -1.000000 -0.251000 -0.355700 -0.816000 -0.248000 -0.504000 -1.000000 -0.251000 -0.355700 -0.816000 -0.248000 -0.504000 -1.000000 -0.012000 0.182900 0.384000 -0.248000 0.880000 -1.000000 -0.012000 0.182900 0.384000 -0.248000 0.880000 -1.000000 -0.050200 0.168100 0.416000 -0.344000 0.832000 -0.975800 -0.050200 0.182900 0.464000 -0.232000 0.848000 -1.000000 -0.100400 0.134700 0.432000 -0.528000 0.720000 -0.959000 -0.100400 0.182900 0.616000 -0.584000 0.520000 -0.959000 -0.100400 0.182900 0.616000 -0.584000 0.520000 --0.900000 0.200800 0.074800 0.296000 0.712000 0.624000 --0.900000 0.200800 0.074800 0.296000 0.712000 0.624000 --0.900000 0.210300 0.060900 0.312000 0.744000 0.576000 --0.879600 0.200800 0.060900 0.352000 0.712000 0.600000 --0.900000 0.240500 0.000000 0.368000 0.840000 0.376000 --0.850000 0.200800 0.035600 0.384000 0.744000 0.536000 --0.850000 0.219100 0.000000 0.368000 0.824000 0.424000 --0.811000 0.200800 0.000000 0.408000 0.816000 0.392000 --0.811000 0.200800 0.000000 0.408000 0.816000 0.392000 --0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000 --0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000 --0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000 --0.878400 -0.150600 0.121900 -0.736000 -0.560000 0.368000 --0.899200 -0.150600 0.060900 -0.816000 -0.504000 0.256000 --0.851500 -0.200800 0.121900 -0.832000 -0.360000 0.408000 --0.869300 -0.200800 0.060900 -0.824000 -0.496000 0.248000 --0.899200 -0.150600 0.060900 -0.816000 -0.504000 0.256000 --0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000 --0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000 --0.900000 -0.169600 0.000000 -0.800000 -0.552000 0.224000 --0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000 --0.900000 -0.192500 -0.060900 -0.856000 -0.488000 0.144000 --0.895700 -0.200800 -0.060900 -0.864000 -0.480000 0.136000 --0.900000 -0.200800 -0.096200 -0.752000 -0.632000 0.128000 --0.860100 -0.251000 -0.060900 -0.808000 -0.568000 0.112000 --0.900000 -0.204500 -0.121900 -0.688000 -0.712000 0.104000 --0.866600 -0.251000 -0.121900 -0.808000 -0.576000 0.072000 --0.900000 -0.206900 -0.182900 -0.648000 -0.752000 0.056000 --0.864200 -0.251000 -0.182900 -0.800000 -0.592000 0.000000 --0.900000 -0.212400 -0.243900 -0.672000 -0.712000 0.176000 --0.869200 -0.251000 -0.243900 -0.768000 -0.600000 0.200000 --0.900000 -0.236500 -0.304800 -0.680000 -0.456000 -0.560000 --0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000 --0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000 --0.850000 0.184100 0.060900 0.376000 0.632000 0.664000 --0.850000 0.184100 0.060900 0.376000 0.632000 0.664000 --0.850000 0.150600 0.098600 0.360000 0.600000 0.704000 --0.800000 0.153700 0.060900 0.432000 0.632000 0.632000 --0.800000 0.150600 0.064100 0.424000 0.560000 0.704000 --0.796300 0.150600 0.060900 0.512000 0.584000 0.616000 --0.800000 0.153700 0.060900 0.432000 0.632000 0.632000 --0.750000 0.150600 0.014500 0.472000 0.624000 0.608000 --0.800000 0.195100 0.000000 0.456000 0.768000 0.432000 --0.750000 0.162200 0.000000 0.464000 0.672000 0.560000 --0.750000 0.150600 0.014500 0.472000 0.624000 0.608000 --0.734000 0.150600 0.000000 0.496000 0.640000 0.576000 --0.750000 0.162200 0.000000 0.464000 0.672000 0.560000 --0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000 --0.750000 0.191300 -0.060900 0.496000 0.856000 0.072000 --0.700000 0.159000 -0.060900 0.600000 0.776000 0.184000 --0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000 --0.700000 0.150600 -0.089800 0.592000 0.744000 -0.280000 --0.715000 0.150600 -0.121900 0.512000 0.744000 -0.408000 --0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000 --0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000 --0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000 --0.750000 0.132600 -0.182900 0.408000 0.656000 -0.624000 --0.700900 0.100400 -0.182900 0.440000 0.608000 -0.648000 --0.750000 0.100400 -0.222000 0.432000 0.576000 -0.680000 --0.700000 0.099700 -0.182900 0.504000 0.560000 -0.640000 --0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000 --0.700000 0.050200 -0.235800 0.504000 0.432000 -0.744000 --0.711800 0.050200 -0.243900 0.416000 0.432000 -0.792000 --0.700000 0.037400 -0.243900 0.440000 0.392000 -0.800000 --0.750000 0.050200 -0.267100 0.368000 0.432000 -0.816000 --0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000 --0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000 --0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000 --0.750000 0.012900 0.121900 0.496000 0.384000 0.768000 --0.750000 0.012900 0.121900 0.496000 0.384000 0.768000 --0.781300 0.050200 0.121900 0.536000 0.400000 0.736000 --0.750000 0.050200 0.097600 0.464000 0.408000 0.776000 --0.750000 0.050200 0.097600 0.464000 0.408000 0.776000 --0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000 --0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000 --0.783300 -0.301200 0.121900 -0.688000 -0.568000 0.440000 --0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000 --0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000 --0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000 --0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000 --0.739400 -0.351500 0.121900 -0.528000 -0.576000 0.616000 --0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000 --0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000 --0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000 --0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000 --0.700000 -0.451900 0.063700 -0.672000 -0.600000 0.424000 --0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000 --0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000 --0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000 --0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000 --0.677900 -0.100400 0.121900 0.528000 0.328000 0.776000 --0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000 --0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000 --0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000 --0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000 --0.575700 -0.150600 0.060900 0.384000 0.664000 0.632000 --0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000 --0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000 --0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000 --0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000 --0.550000 -0.200800 0.118700 0.032000 0.784000 0.608000 --0.550000 -0.202900 0.121900 0.032000 0.728000 0.680000 --0.536800 -0.200800 0.121900 -0.104000 0.736000 0.664000 --0.536800 -0.200800 0.121900 -0.104000 0.736000 0.664000 --0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000 --0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000 --0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000 --0.500000 -0.486900 0.121900 0.296000 -0.800000 0.504000 --0.500000 -0.502100 0.088800 0.616000 -0.688000 0.376000 --0.450000 -0.453600 0.121900 0.584000 -0.744000 0.288000 --0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000 --0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000 --0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000 --0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000 --0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000 --0.550000 -0.532000 0.060900 0.080000 -0.776000 0.624000 --0.500000 -0.502100 0.088800 0.616000 -0.688000 0.376000 --0.500000 -0.517700 0.060900 0.632000 -0.632000 0.440000 --0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000 --0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000 --0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000 --0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000 --0.400000 -0.090100 0.060900 -0.696000 0.400000 0.584000 --0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000 --0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000 --0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000 --0.350000 -0.050200 0.083200 -0.416000 0.344000 0.832000 --0.350000 -0.097900 0.121900 -0.560000 0.424000 0.704000 --0.300000 -0.050200 0.104800 -0.312000 0.512000 0.792000 --0.300000 -0.066800 0.121900 -0.280000 0.584000 0.752000 --0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000 --0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000 --0.350000 -0.001900 0.060900 -0.656000 0.280000 0.688000 --0.350000 -0.001900 0.060900 -0.656000 0.280000 0.688000 --0.350000 -0.050200 0.083200 -0.416000 0.344000 0.832000 --0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000 --0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000 --0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000 --0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000 --0.400000 -0.140400 0.121900 -0.448000 0.624000 0.632000 --0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000 --0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000 --0.400000 -0.401700 0.111300 0.640000 -0.680000 0.336000 --0.400000 -0.401700 0.111300 0.640000 -0.680000 0.336000 --0.400000 -0.423000 0.060900 0.616000 -0.696000 0.360000 --0.350000 -0.401700 0.073400 0.632000 -0.688000 0.344000 --0.350000 -0.406300 0.060900 0.592000 -0.728000 0.320000 --0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000 --0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000 --0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000 --0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000 --0.300000 0.027200 0.060900 -0.160000 0.552000 0.808000 --0.300000 0.000000 0.088800 -0.240000 0.432000 0.864000 --0.250000 0.033500 0.060900 0.056000 0.528000 0.840000 --0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000 --0.200000 0.020500 0.060900 0.664000 0.440000 0.600000 --0.200000 0.000000 0.081400 0.696000 0.336000 0.624000 --0.190300 0.000000 0.060900 0.816000 0.200000 0.536000 --0.200000 -0.050200 0.072600 0.688000 0.360000 0.624000 --0.193200 -0.050200 0.060900 0.808000 0.008000 0.584000 --0.200000 -0.100400 0.076800 0.784000 -0.136000 0.600000 --0.190200 -0.100400 0.060900 0.752000 -0.248000 0.600000 --0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000 --0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000 --0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000 --0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000 --0.200000 0.000000 0.081400 0.696000 0.336000 0.624000 --0.250000 -0.048000 0.121900 0.272000 0.640000 0.704000 --0.200000 -0.050200 0.072600 0.688000 0.360000 0.624000 --0.247100 -0.050200 0.121900 0.488000 0.512000 0.696000 --0.200000 -0.100400 0.076800 0.784000 -0.136000 0.600000 --0.230200 -0.100400 0.121900 0.776000 -0.176000 0.600000 --0.230200 -0.100400 0.121900 0.776000 -0.176000 0.600000 -0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000 -0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000 -0.540600 0.351500 0.060900 -0.584000 0.632000 0.496000 -0.550000 0.359900 0.060900 -0.592000 0.640000 0.480000 -0.500000 0.351500 0.029100 -0.680000 0.048000 0.728000 -0.550000 0.388900 0.000000 -0.392000 0.856000 0.320000 -0.500000 0.369100 0.000000 -0.184000 0.800000 0.552000 -0.500000 0.351500 0.029100 -0.680000 0.048000 0.728000 -0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000 -0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000 -0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000 -0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000 -0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000 -0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000 -0.538800 0.200800 0.060900 -0.824000 -0.216000 0.520000 -0.533200 0.251000 0.060900 -0.856000 0.032000 0.512000 -0.500000 0.200800 0.008600 -0.576000 -0.176000 0.792000 -0.500800 0.251000 0.000000 -0.792000 -0.016000 0.608000 -0.500000 0.245700 0.000000 -0.568000 0.120000 0.808000 -0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000 -0.488800 0.200800 0.000000 -0.512000 0.024000 0.856000 -0.450000 0.251000 -0.039600 -0.400000 -0.080000 0.904000 -0.450000 0.200800 -0.035500 -0.536000 -0.264000 0.792000 -0.400000 0.251000 -0.058700 -0.328000 -0.176000 0.920000 -0.416500 0.200800 -0.060900 -0.560000 -0.352000 0.744000 -0.400000 0.242400 -0.060900 -0.352000 -0.192000 0.904000 -0.400000 0.200800 -0.077800 -0.600000 -0.432000 0.664000 -0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000 -0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000 -0.350000 0.251000 -0.088400 -0.448000 -0.320000 0.824000 -0.350000 0.218900 -0.121900 -0.504000 -0.816000 0.264000 -0.300000 0.251000 -0.114600 -0.168000 -0.536000 0.824000 -0.300000 0.236900 -0.121900 -0.304000 -0.688000 0.640000 -0.271900 0.251000 -0.121900 -0.240000 -0.760000 0.592000 -0.300000 0.251000 -0.156100 -0.368000 -0.808000 -0.448000 -0.300000 0.236900 -0.121900 -0.304000 -0.688000 0.640000 -0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000 -0.350000 0.218900 -0.121900 -0.504000 -0.816000 0.264000 -0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000 -0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000 -0.380800 0.200800 -0.182900 -0.440000 -0.264000 -0.856000 -0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000 -0.400000 0.155900 -0.182900 -0.216000 -0.144000 -0.960000 -0.380800 0.200800 -0.182900 -0.440000 -0.264000 -0.856000 -0.400000 0.200800 -0.189400 -0.152000 -0.072000 -0.984000 -0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000 -0.400000 0.251000 -0.186400 -0.152000 0.040000 -0.984000 -0.350000 0.251000 -0.187300 -0.168000 -0.184000 -0.960000 -0.400000 0.301200 -0.184200 -0.016000 -0.016000 -0.992000 -0.350000 0.301200 -0.184400 -0.056000 0.000000 -0.992000 -0.400000 0.351500 -0.194500 0.000000 0.072000 -0.992000 -0.350000 0.351500 -0.192800 0.000000 0.056000 -0.992000 -0.400000 0.377300 -0.182900 0.016000 0.320000 -0.944000 -0.350000 0.377400 -0.182900 0.000000 0.280000 -0.952000 -0.400000 0.401700 -0.171200 0.088000 0.472000 -0.872000 -0.350000 0.401700 -0.174600 0.056000 0.440000 -0.888000 -0.400000 0.432800 -0.121900 0.160000 0.904000 -0.384000 -0.350000 0.445000 -0.121900 0.208000 0.960000 -0.152000 -0.400000 0.419800 -0.060900 0.080000 0.848000 0.520000 -0.350000 0.424300 -0.060900 0.120000 0.824000 0.544000 -0.400000 0.401700 -0.034800 -0.040000 0.584000 0.808000 -0.350000 0.401700 -0.031000 0.032000 0.488000 0.864000 -0.400000 0.351500 -0.018700 -0.136000 -0.208000 0.960000 -0.350000 0.351500 -0.021800 0.032000 -0.048000 0.992000 -0.350000 0.401700 -0.031000 0.032000 0.488000 0.864000 -0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000 -0.300000 0.401700 -0.022200 0.096000 0.472000 0.864000 -0.350000 0.401700 -0.031000 0.032000 0.488000 0.864000 -0.300000 0.430700 -0.060900 0.128000 0.808000 0.568000 -0.350000 0.424300 -0.060900 0.120000 0.824000 0.544000 -0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000 -0.350000 0.445000 -0.121900 0.208000 0.960000 -0.152000 -0.323400 0.451900 -0.121900 0.248000 0.944000 -0.200000 -0.350000 0.401700 -0.174600 0.056000 0.440000 -0.888000 -0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000 -0.300000 0.401700 -0.174800 0.040000 0.368000 -0.920000 -0.350000 0.401700 -0.174600 0.056000 0.440000 -0.888000 -0.300000 0.379400 -0.182900 -0.016000 0.272000 -0.960000 -0.350000 0.377400 -0.182900 0.000000 0.280000 -0.952000 -0.300000 0.351500 -0.193900 -0.008000 0.064000 -0.992000 -0.350000 0.351500 -0.192800 0.000000 0.056000 -0.992000 -0.300000 0.301200 -0.184400 -0.064000 -0.072000 -0.992000 -0.350000 0.301200 -0.184400 -0.056000 0.000000 -0.992000 -0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000 -0.350000 0.251000 -0.187300 -0.168000 -0.184000 -0.960000 -0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000 -0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000 -0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000 -0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000 -0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000 -0.567500 0.200800 0.121900 -0.784000 -0.344000 0.504000 -0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000 -0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000 -0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000 -0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000 -0.600000 0.093600 0.060900 -0.624000 -0.616000 0.464000 -0.593200 0.100400 0.060900 -0.640000 -0.584000 0.496000 -0.600000 0.053300 0.000000 -0.472000 -0.712000 0.512000 -0.553100 0.100400 0.000000 -0.664000 -0.576000 0.464000 -0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000 -0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000 -0.550000 0.050200 -0.037800 -0.320000 -0.688000 0.640000 -0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000 -0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000 -0.500000 0.067400 -0.060900 -0.592000 0.120000 0.792000 -0.495100 0.050200 -0.060900 -0.456000 0.136000 0.872000 -0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000 -0.450000 0.050200 -0.077000 -0.360000 0.120000 0.920000 -0.450000 0.100400 -0.090700 -0.384000 -0.320000 0.856000 -0.400000 0.050200 -0.114800 -0.552000 0.256000 0.784000 -0.415000 0.100400 -0.121900 -0.640000 0.192000 0.736000 -0.400000 0.072600 -0.121900 -0.632000 0.256000 0.720000 -0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000 -0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000 -0.381500 0.100400 -0.182900 -0.896000 0.440000 -0.008000 -0.357200 0.050200 -0.182900 -0.736000 0.640000 0.184000 -0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000 -0.351400 0.050200 -0.243900 -0.480000 0.768000 -0.416000 -0.400000 0.083700 -0.243900 -0.328000 0.768000 -0.536000 -0.400000 0.050200 -0.294000 -0.352000 0.672000 -0.640000 -0.351400 0.050200 -0.243900 -0.480000 0.768000 -0.416000 -0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000 -0.350000 0.049300 -0.243900 -0.512000 0.784000 -0.320000 -0.350000 0.024300 -0.304800 -0.456000 0.784000 -0.408000 -0.300000 0.032100 -0.243900 -0.576000 0.680000 -0.432000 -0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000 -0.300000 0.000000 -0.302400 -0.544000 0.608000 -0.568000 -0.300000 -0.003100 -0.304800 -0.376000 0.424000 -0.816000 -0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000 -0.300000 -0.050200 -0.319900 -0.536000 0.224000 -0.808000 -0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000 -0.342100 -0.050200 -0.365800 -0.640000 -0.104000 -0.752000 -0.350000 -0.037900 -0.365800 -0.440000 0.432000 -0.776000 -0.350000 -0.050200 -0.374000 -0.496000 -0.096000 -0.856000 -0.383500 -0.050200 -0.365800 0.200000 -0.288000 -0.928000 -0.350000 -0.059800 -0.365800 -0.280000 -0.560000 -0.768000 -0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000 -0.350000 -0.100400 -0.331300 -0.432000 -0.520000 -0.728000 -0.400000 -0.100400 -0.340000 -0.040000 -0.360000 -0.928000 -0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000 -0.400000 -0.150600 -0.318400 -0.432000 -0.416000 -0.792000 -0.380400 -0.150600 -0.304800 -0.424000 -0.456000 -0.776000 -0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000 -0.350000 -0.150600 -0.283600 -0.064000 -0.424000 -0.896000 -0.400000 -0.200800 -0.276700 0.448000 -0.472000 -0.752000 -0.350000 -0.200800 -0.271400 0.216000 0.224000 -0.944000 -0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000 -0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000 -0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000 -0.366700 -0.251000 -0.304800 0.704000 0.488000 -0.496000 -0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000 -0.350000 -0.251000 -0.329500 0.536000 0.472000 -0.688000 -0.320800 -0.200800 -0.304800 0.496000 0.328000 -0.800000 -0.300000 -0.251000 -0.347800 0.304000 0.384000 -0.864000 -0.300000 -0.200800 -0.324200 0.480000 0.248000 -0.832000 -0.320800 -0.200800 -0.304800 0.496000 0.328000 -0.800000 -0.300000 -0.150600 -0.312600 0.312000 -0.200000 -0.920000 -0.313400 -0.150600 -0.304800 0.400000 -0.360000 -0.840000 -0.300000 -0.100400 -0.310000 -0.248000 0.072000 -0.960000 -0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000 -0.350000 -0.100400 -0.331300 -0.432000 -0.520000 -0.728000 -0.300000 -0.100400 -0.310000 -0.248000 0.072000 -0.960000 -0.350000 -0.059800 -0.365800 -0.280000 -0.560000 -0.768000 -0.300000 -0.050200 -0.319900 -0.536000 0.224000 -0.808000 -0.342100 -0.050200 -0.365800 -0.640000 -0.104000 -0.752000 -0.350000 -0.059800 -0.365800 -0.280000 -0.560000 -0.768000 -0.350000 -0.050200 -0.374000 -0.496000 -0.096000 -0.856000 -0.350000 -0.050200 -0.374000 -0.496000 -0.096000 -0.856000 -0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000 -0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000 -0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000 -0.650000 0.050200 0.073400 -0.576000 -0.624000 0.512000 -0.700000 0.046100 0.121900 -0.152000 -0.904000 0.376000 -0.650000 0.041800 0.060900 -0.568000 -0.648000 0.504000 -0.700000 0.026800 0.060900 -0.288000 -0.896000 0.328000 -0.650000 0.013100 0.000000 -0.448000 -0.792000 0.392000 -0.700000 0.012000 0.000000 -0.032000 -0.960000 0.272000 -0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000 -0.700000 0.001400 -0.060900 0.088000 -0.968000 0.192000 -0.686800 0.000000 -0.060900 0.208000 -0.960000 0.144000 -0.700000 0.000400 -0.121900 0.224000 -0.968000 0.032000 -0.698200 0.000000 -0.121900 0.296000 -0.952000 0.032000 -0.700000 0.009000 -0.182900 0.456000 -0.744000 -0.472000 -0.687300 0.000000 -0.182900 0.648000 -0.600000 -0.456000 -0.700000 0.050200 -0.225700 0.368000 -0.368000 -0.848000 -0.653800 0.000000 -0.243900 0.576000 -0.112000 -0.808000 -0.653800 0.050200 -0.243900 0.232000 0.032000 -0.968000 -0.653800 0.050200 -0.243900 0.232000 0.032000 -0.968000 -0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000 -0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000 -0.788900 0.200800 0.121900 0.632000 0.744000 0.184000 -0.750000 0.222200 0.060900 0.704000 0.696000 -0.080000 -0.772600 0.200800 0.060900 0.648000 0.736000 -0.136000 -0.750000 0.219200 0.000000 0.672000 0.728000 0.080000 -0.770200 0.200800 0.000000 0.616000 0.776000 0.056000 -0.750000 0.228900 -0.060900 0.576000 0.696000 -0.416000 -0.787300 0.200800 -0.060900 0.520000 0.824000 -0.184000 -0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000 -0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000 -0.750000 0.186400 -0.121900 0.504000 0.648000 -0.560000 -0.800000 0.164900 -0.121900 0.312000 0.800000 -0.504000 -0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000 -0.800000 0.150600 -0.164100 0.256000 0.800000 -0.528000 -0.769100 0.150600 -0.182900 0.248000 0.704000 -0.648000 -0.800000 0.138600 -0.182900 0.232000 0.712000 -0.656000 -0.750000 0.150600 -0.191500 0.256000 0.656000 -0.704000 -0.800000 0.100400 -0.216300 0.104000 0.416000 -0.896000 -0.750000 0.100400 -0.218500 0.200000 0.232000 -0.944000 -0.800000 0.050200 -0.233400 -0.176000 0.416000 -0.880000 -0.750000 0.050200 -0.223600 -0.168000 -0.552000 -0.808000 -0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000 -0.750000 0.019900 -0.182900 -0.176000 -0.792000 -0.576000 -0.776700 0.000000 -0.182900 -0.576000 -0.728000 -0.360000 -0.750000 0.004300 -0.121900 -0.408000 -0.880000 -0.216000 -0.756600 0.000000 -0.121900 -0.496000 -0.856000 -0.080000 -0.750000 0.001600 -0.060900 -0.416000 -0.904000 -0.016000 -0.753100 0.000000 -0.060900 -0.472000 -0.872000 0.000000 -0.750000 0.013300 0.000000 -0.240000 -0.936000 0.240000 -0.772100 0.000000 0.000000 -0.504000 -0.832000 0.224000 -0.750000 0.031700 0.060900 -0.136000 -0.928000 0.336000 -0.798100 0.000000 0.060900 -0.504000 -0.792000 0.312000 -0.772100 0.000000 0.000000 -0.504000 -0.832000 0.224000 -0.800000 -0.001000 0.060900 -0.584000 -0.776000 0.216000 -0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000 -0.843600 -0.050200 0.060900 -0.704000 -0.672000 0.184000 -0.832800 -0.050200 0.000000 -0.728000 -0.656000 0.144000 -0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000 -0.823600 -0.050200 -0.060900 -0.736000 -0.664000 0.112000 -0.800000 -0.024700 -0.060900 -0.616000 -0.776000 0.088000 -0.818400 -0.050200 -0.121900 -0.760000 -0.640000 0.016000 -0.800000 -0.027900 -0.121900 -0.664000 -0.736000 -0.072000 -0.822900 -0.050200 -0.182900 -0.792000 -0.592000 -0.088000 -0.800000 -0.017800 -0.182900 -0.616000 -0.680000 -0.376000 -0.835300 -0.050200 -0.243900 -0.840000 -0.416000 -0.336000 -0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000 -0.819700 0.000000 -0.243900 -0.752000 -0.192000 -0.616000 -0.819700 0.000000 -0.243900 -0.752000 -0.192000 -0.616000 -0.788900 0.200800 0.121900 0.632000 0.744000 0.184000 -0.788900 0.200800 0.121900 0.632000 0.744000 0.184000 -0.800000 0.190400 0.121900 0.624000 0.752000 0.168000 -0.772600 0.200800 0.060900 0.648000 0.736000 -0.136000 -0.800000 0.182100 0.060900 0.560000 0.824000 -0.024000 -0.770200 0.200800 0.000000 0.616000 0.776000 0.056000 -0.800000 0.184600 0.000000 0.464000 0.872000 0.120000 -0.787300 0.200800 -0.060900 0.520000 0.824000 -0.184000 -0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000 -0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000 -0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000 -0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000 -0.829700 0.000000 0.121900 -0.704000 -0.616000 0.344000 -0.800000 0.000000 0.064400 -0.576000 -0.736000 0.344000 -0.800000 0.000000 0.064400 -0.576000 -0.736000 0.344000 -0.911800 0.100400 0.121900 0.528000 0.800000 0.264000 -0.911800 0.100400 0.121900 0.528000 0.800000 0.264000 -0.950000 0.069700 0.121900 0.360000 0.840000 0.384000 -0.936800 0.100400 0.060900 0.456000 0.872000 0.168000 -0.950000 0.091300 0.060900 0.600000 0.776000 0.176000 -0.950000 0.100400 0.012800 0.496000 0.848000 0.136000 -1.000000 0.068400 0.060900 0.464000 0.872000 0.104000 -0.952900 0.100400 0.000000 0.504000 0.848000 0.120000 -1.000000 0.075000 0.000000 0.472000 0.872000 0.072000 -0.957800 0.100400 -0.060900 0.544000 0.824000 -0.120000 -1.000000 0.074600 -0.060900 0.496000 0.816000 -0.280000 -1.000000 0.074600 -0.060900 0.496000 0.816000 -0.280000 -0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000 -0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000 -0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000 -0.900000 -0.107100 0.121900 -0.584000 -0.768000 0.240000 -0.942000 -0.150600 0.060900 -0.704000 -0.672000 0.200000 -0.900000 -0.117100 0.060900 -0.656000 -0.736000 0.136000 -0.931300 -0.150600 0.000000 -0.640000 -0.744000 0.144000 -0.900000 -0.125700 0.000000 -0.664000 -0.728000 0.136000 -0.917800 -0.150600 -0.060900 -0.640000 -0.736000 0.184000 -0.900000 -0.135500 -0.060900 -0.672000 -0.712000 0.168000 -0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000 -0.900000 -0.148200 -0.121900 -0.664000 -0.728000 0.088000 -0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000 -0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000 -0.900000 -0.155900 -0.182900 -0.744000 -0.648000 0.112000 -0.950000 -0.200400 -0.121900 -0.720000 -0.672000 0.136000 -0.939100 -0.200800 -0.182900 -0.712000 -0.672000 0.160000 -0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000 -0.950000 -0.211700 -0.182900 -0.704000 -0.680000 0.176000 -0.939100 -0.200800 -0.182900 -0.712000 -0.672000 0.160000 -0.950000 -0.224400 -0.243900 -0.688000 -0.640000 0.328000 -0.928800 -0.200800 -0.243900 -0.736000 -0.616000 0.240000 -0.939100 -0.200800 -0.182900 -0.712000 -0.672000 0.160000 -0.900000 -0.163000 -0.243900 -0.816000 -0.552000 0.128000 -0.900000 -0.155900 -0.182900 -0.744000 -0.648000 0.112000 -0.890800 -0.150600 -0.243900 -0.848000 -0.512000 0.064000 -0.895100 -0.150600 -0.182900 -0.744000 -0.648000 0.104000 -0.900000 -0.155900 -0.182900 -0.744000 -0.648000 0.112000 -0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000 -0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000 -0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000 -0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000 -0.950000 -0.158100 0.060900 -0.608000 -0.760000 0.200000 -0.942000 -0.150600 0.060900 -0.704000 -0.672000 0.200000 -0.950000 -0.168100 0.000000 -0.640000 -0.744000 0.184000 -0.931300 -0.150600 0.000000 -0.640000 -0.744000 0.144000 -0.950000 -0.183700 -0.060900 -0.632000 -0.728000 0.232000 -0.917800 -0.150600 -0.060900 -0.640000 -0.736000 0.184000 -0.950000 -0.200400 -0.121900 -0.720000 -0.672000 0.136000 -0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000 -0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000 -1.000000 0.053600 0.121900 0.280000 0.872000 0.392000 -1.000000 0.053600 0.121900 0.280000 0.872000 0.392000 -0.950000 0.069700 0.121900 0.360000 0.840000 0.384000 -1.000000 0.068400 0.060900 0.464000 0.872000 0.104000 -0.950000 0.091300 0.060900 0.600000 0.776000 0.176000 -0.950000 0.091300 0.060900 0.600000 0.776000 0.176000 --1.000000 -0.090800 0.060900 -0.320000 -0.912000 0.248000 --1.000000 -0.090800 0.060900 -0.320000 -0.912000 0.248000 --0.973400 -0.100400 0.060900 -0.344000 -0.904000 0.240000 --1.000000 -0.100400 0.014600 -0.304000 -0.920000 0.208000 --1.000000 -0.100400 0.014600 -0.304000 -0.920000 0.208000 --0.950000 0.258900 0.000000 0.296000 0.848000 0.432000 --0.950000 0.258900 0.000000 0.296000 0.848000 0.432000 --0.928700 0.251000 0.000000 0.312000 0.848000 0.408000 --0.950000 0.251000 0.016800 0.288000 0.808000 0.504000 --0.950000 0.251000 0.016800 0.288000 0.808000 0.504000 --0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000 --0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000 --0.899200 -0.150600 0.060900 -0.816000 -0.504000 0.256000 --0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000 --0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000 --0.750000 0.106000 0.060900 0.496000 0.464000 0.728000 --0.750000 0.106000 0.060900 0.496000 0.464000 0.728000 --0.796300 0.150600 0.060900 0.512000 0.584000 0.616000 --0.750000 0.150600 0.014500 0.472000 0.624000 0.608000 --0.750000 0.150600 0.014500 0.472000 0.624000 0.608000 --0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000 --0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000 --0.750000 -0.401700 0.004100 -0.816000 -0.520000 0.232000 --0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000 --0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000 --0.700000 0.051600 0.060900 0.528000 0.416000 0.728000 --0.700000 0.051600 0.060900 0.528000 0.416000 0.728000 --0.744800 0.100400 0.060900 0.496000 0.456000 0.728000 --0.700000 0.100400 0.019100 0.504000 0.504000 0.688000 --0.700000 0.100400 0.019100 0.504000 0.504000 0.688000 --0.700000 0.121800 0.000000 0.536000 0.544000 0.632000 --0.700000 0.121800 0.000000 0.536000 0.544000 0.632000 --0.680200 0.100400 0.000000 0.600000 0.440000 0.656000 --0.700000 0.100400 0.019100 0.504000 0.504000 0.688000 --0.700000 0.100400 0.019100 0.504000 0.504000 0.688000 --0.650000 -0.023500 0.060900 0.576000 0.360000 0.720000 --0.650000 -0.023500 0.060900 0.576000 0.360000 0.720000 --0.666100 0.000000 0.060900 0.560000 0.376000 0.728000 --0.650000 0.000000 0.045200 0.576000 0.400000 0.704000 --0.650000 0.000000 0.045200 0.576000 0.400000 0.704000 --0.650000 0.063100 0.000000 0.592000 0.392000 0.696000 --0.650000 0.063100 0.000000 0.592000 0.392000 0.696000 --0.641800 0.050200 0.000000 0.616000 0.400000 0.664000 --0.650000 0.050200 0.008200 0.568000 0.384000 0.720000 --0.650000 0.050200 0.008200 0.568000 0.384000 0.720000 --0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000 --0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000 --0.640700 -0.502100 0.060900 -0.496000 -0.728000 0.456000 --0.650000 -0.502100 0.048300 -0.536000 -0.712000 0.440000 --0.650000 -0.502100 0.048300 -0.536000 -0.712000 0.440000 --0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000 --0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000 --0.600000 -0.552300 0.023900 -0.224000 -0.776000 0.584000 --0.600000 -0.566300 0.000000 -0.184000 -0.816000 0.544000 --0.550000 -0.552300 0.031000 0.256000 -0.800000 0.528000 --0.550000 -0.565800 0.000000 0.224000 -0.872000 0.424000 --0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000 --0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000 --0.600000 -0.018300 0.000000 0.712000 0.368000 0.584000 --0.600000 -0.018300 0.000000 0.712000 0.368000 0.584000 --0.584800 -0.050200 0.000000 0.744000 0.336000 0.568000 --0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000 --0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000 --0.472400 -0.150600 0.060900 -0.464000 0.768000 0.416000 --0.472400 -0.150600 0.060900 -0.464000 0.768000 0.416000 --0.500000 -0.166600 0.060900 -0.304000 0.832000 0.448000 --0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000 --0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000 --0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000 --0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000 --0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000 --0.400000 -0.050900 0.000000 -0.776000 0.576000 0.224000 --0.400000 -0.090100 0.060900 -0.696000 0.400000 0.584000 --0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000 --0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000 --0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000 --0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000 --0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000 --0.350000 0.077100 0.000000 -0.776000 0.256000 0.568000 --0.350000 0.050200 0.010900 -0.568000 0.448000 0.680000 --0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000 --0.300000 0.050200 0.038600 -0.224000 0.544000 0.800000 --0.300000 0.100400 0.006400 -0.200000 0.408000 0.880000 --0.250000 0.050200 0.048300 0.000000 0.552000 0.832000 --0.250000 0.100400 0.002600 0.144000 0.496000 0.848000 --0.250000 0.100400 0.002600 0.144000 0.496000 0.848000 --0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000 --0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000 --0.350000 0.050200 0.010900 -0.568000 0.448000 0.680000 --0.373100 0.000000 0.000000 -0.880000 0.240000 0.392000 --0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000 --0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000 --0.358600 0.050200 -0.060900 -0.920000 0.168000 -0.328000 --0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000 --0.350000 0.050200 -0.078800 -0.832000 0.272000 -0.472000 --0.350000 0.031200 -0.121900 -0.744000 0.552000 -0.352000 --0.335400 0.050200 -0.121900 -0.752000 0.472000 -0.456000 --0.350000 0.000000 -0.171400 -0.688000 0.416000 -0.584000 --0.301000 0.050200 -0.182900 -0.704000 0.472000 -0.512000 --0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000 --0.350000 0.000000 -0.171400 -0.688000 0.416000 -0.584000 --0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000 --0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000 --0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000 --0.399400 -0.050200 -0.121900 -0.760000 0.504000 -0.392000 --0.400000 -0.096400 -0.182900 -0.664000 0.552000 -0.496000 --0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000 --0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000 --0.434900 -0.100400 -0.121900 -0.608000 0.744000 -0.256000 --0.434900 -0.100400 -0.121900 -0.608000 0.744000 -0.256000 --0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000 --0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000 --0.350000 0.050200 0.010900 -0.568000 0.448000 0.680000 --0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000 --0.300000 0.050200 0.038600 -0.224000 0.544000 0.800000 --0.300000 0.027200 0.060900 -0.160000 0.552000 0.808000 --0.250000 0.050200 0.048300 0.000000 0.552000 0.832000 --0.250000 0.033500 0.060900 0.056000 0.528000 0.840000 --0.200000 0.050200 0.037800 0.512000 0.448000 0.720000 --0.200000 0.020500 0.060900 0.664000 0.440000 0.600000 --0.200000 0.020500 0.060900 0.664000 0.440000 0.600000 --0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000 --0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000 --0.200000 0.408700 0.000000 -0.112000 0.496000 0.856000 --0.200000 0.401700 0.005100 -0.168000 0.288000 0.936000 --0.185900 0.401700 0.000000 0.264000 0.248000 0.928000 --0.200000 0.384800 0.000000 -0.112000 -0.232000 0.960000 --0.150000 0.401700 -0.011900 0.240000 0.256000 0.928000 --0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000 --0.150000 0.351500 -0.029900 0.096000 -0.168000 0.976000 --0.200000 0.301200 -0.022600 0.056000 -0.176000 0.976000 --0.150000 0.301200 -0.033800 0.040000 -0.024000 0.992000 --0.200000 0.251000 -0.048300 -0.120000 -0.296000 0.944000 --0.150000 0.251000 -0.027500 -0.136000 -0.104000 0.984000 --0.200000 0.206100 -0.060900 -0.448000 -0.184000 0.872000 --0.150000 0.200800 -0.027500 -0.320000 -0.168000 0.928000 --0.198000 0.200800 -0.060900 -0.464000 0.288000 0.832000 --0.150000 0.150600 -0.037800 0.256000 -0.016000 0.960000 --0.200000 0.199100 -0.060900 -0.320000 0.504000 0.792000 --0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000 --0.250000 0.177000 -0.060900 -0.096000 0.568000 0.808000 --0.250000 0.150600 -0.042200 0.008000 0.568000 0.816000 --0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000 --0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000 --0.300000 0.200800 -0.040500 0.440000 0.208000 0.864000 --0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000 --0.350000 0.200800 -0.003200 -0.528000 -0.104000 0.832000 --0.350000 0.153200 -0.060900 -0.608000 -0.784000 0.016000 --0.368900 0.200800 -0.060900 -0.952000 0.040000 -0.280000 --0.350000 0.200800 -0.076700 -0.368000 -0.104000 -0.920000 --0.356100 0.251000 -0.060900 -0.936000 0.104000 -0.312000 --0.350000 0.251000 -0.067500 -0.624000 0.048000 -0.768000 --0.353500 0.301200 -0.060900 -0.872000 0.080000 -0.464000 --0.350000 0.301200 -0.064600 -0.624000 0.064000 -0.768000 --0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000 --0.300000 0.301200 -0.089300 -0.344000 0.056000 -0.936000 --0.344500 0.351500 -0.060900 -0.776000 0.288000 0.552000 --0.300000 0.351500 -0.083400 -0.432000 0.176000 -0.880000 --0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000 --0.300000 0.401700 -0.066400 -0.448000 0.440000 -0.768000 --0.300000 0.408800 -0.060900 -0.664000 0.712000 -0.184000 --0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000 --0.250000 0.447500 -0.060900 -0.512000 0.744000 0.408000 --0.208300 0.401700 -0.121900 -0.432000 0.432000 -0.784000 --0.242600 0.451900 -0.060900 -0.440000 0.728000 0.512000 --0.200000 0.409200 -0.121900 -0.400000 0.464000 -0.776000 --0.200000 0.451900 -0.081300 -0.400000 0.504000 -0.752000 --0.152100 0.451900 -0.121900 -0.424000 0.536000 -0.720000 --0.200000 0.477600 -0.060900 -0.544000 0.808000 -0.208000 --0.150000 0.453400 -0.121900 -0.320000 0.624000 -0.704000 --0.150000 0.501300 -0.060900 -0.376000 0.880000 -0.280000 --0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000 --0.146800 0.502100 -0.060900 -0.272000 0.960000 0.016000 --0.100000 0.502100 -0.081300 -0.184000 0.840000 -0.488000 --0.100000 0.517800 -0.060900 -0.120000 0.976000 0.136000 --0.050000 0.502100 -0.117100 -0.040000 0.912000 -0.392000 --0.050000 0.515300 -0.060900 0.432000 0.792000 0.408000 --0.033200 0.502100 -0.060900 0.616000 0.496000 0.600000 --0.050000 0.502100 -0.046900 0.400000 0.496000 0.760000 --0.023600 0.451900 -0.060900 0.376000 0.152000 0.904000 --0.050000 0.451900 -0.049700 0.432000 0.024000 0.896000 --0.005200 0.401700 -0.060900 0.264000 0.168000 0.944000 --0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000 -0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000 --0.050000 0.351500 -0.043600 0.248000 0.032000 0.960000 -0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000 --0.050000 0.301200 -0.044600 0.440000 -0.008000 0.896000 -0.000000 0.334500 -0.060900 0.312000 -0.368000 0.864000 --0.027600 0.301200 -0.060900 0.456000 -0.208000 0.856000 -0.000000 0.301200 -0.076500 0.296000 -0.272000 0.904000 --0.035000 0.251000 -0.060900 0.512000 -0.448000 0.728000 -0.000000 0.251000 -0.086600 0.344000 -0.360000 0.864000 --0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000 -0.000000 0.211400 -0.121900 0.496000 -0.712000 0.480000 --0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000 --0.012800 0.200800 -0.121900 0.688000 -0.616000 0.376000 --0.050000 0.170300 -0.121900 0.584000 -0.576000 0.560000 -0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000 --0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000 -0.000000 0.195100 -0.182900 0.504000 -0.656000 -0.544000 --0.033200 0.150600 -0.182900 0.832000 -0.552000 -0.016000 -0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000 --0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000 --0.050000 0.200800 -0.204500 0.304000 -0.328000 -0.888000 --0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000 --0.100000 0.200800 -0.221500 0.056000 0.392000 -0.912000 --0.100000 0.164100 -0.243900 -0.032000 0.432000 -0.896000 --0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000 --0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000 --0.150000 0.150600 -0.235500 -0.296000 0.536000 -0.784000 --0.150000 0.141700 -0.243900 -0.352000 0.528000 -0.768000 --0.200000 0.150600 -0.197300 -0.488000 0.464000 -0.728000 --0.198500 0.100400 -0.243900 -0.376000 0.480000 -0.784000 --0.200000 0.100400 -0.242800 -0.520000 0.512000 -0.672000 --0.200000 0.099300 -0.243900 -0.456000 0.488000 -0.736000 --0.249100 0.100400 -0.182900 -0.576000 0.496000 -0.640000 --0.250000 0.055800 -0.243900 -0.560000 0.648000 -0.504000 --0.250000 0.099600 -0.182900 -0.488000 0.616000 -0.608000 --0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000 --0.300000 0.052000 -0.182900 -0.664000 0.464000 -0.568000 --0.300000 0.050200 -0.185100 -0.648000 0.560000 -0.504000 --0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000 --0.300000 0.001800 -0.243900 -0.496000 0.680000 -0.520000 --0.250000 0.050200 -0.254100 -0.584000 0.656000 -0.464000 --0.300000 0.000000 -0.248500 -0.656000 0.560000 -0.488000 --0.250000 0.000000 -0.286200 -0.320000 0.712000 -0.616000 --0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000 --0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000 --0.266700 -0.050200 -0.304800 -0.504000 0.288000 -0.808000 --0.250000 -0.050200 -0.318700 -0.440000 0.320000 -0.832000 --0.288100 -0.100400 -0.304800 -0.408000 0.240000 -0.872000 --0.250000 -0.100400 -0.327300 -0.384000 0.152000 -0.904000 --0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000 --0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000 --0.300000 -0.150600 -0.319300 -0.256000 0.480000 -0.832000 --0.250000 -0.200800 -0.333200 0.168000 0.080000 -0.976000 --0.300000 -0.200800 -0.340600 0.016000 0.280000 -0.952000 --0.250000 -0.251000 -0.337900 0.384000 0.112000 -0.912000 --0.300000 -0.251000 -0.348000 0.192000 0.248000 -0.944000 --0.250000 -0.301200 -0.349000 0.296000 0.272000 -0.912000 --0.300000 -0.296900 -0.365800 0.296000 0.528000 -0.784000 --0.291400 -0.301200 -0.365800 0.272000 0.504000 -0.808000 --0.300000 -0.301200 -0.369600 0.320000 0.544000 -0.768000 --0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000 --0.300000 -0.341100 -0.426800 -0.128000 0.536000 -0.832000 --0.250000 -0.351500 -0.379700 0.552000 0.712000 -0.416000 --0.273100 -0.351500 -0.426800 0.480000 0.752000 -0.440000 --0.250000 -0.368100 -0.426800 0.504000 0.792000 -0.336000 --0.250000 -0.351500 -0.379700 0.552000 0.712000 -0.416000 --0.200000 -0.393200 -0.426800 0.696000 0.632000 -0.328000 --0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000 --0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000 --0.200000 -0.351500 -0.343300 0.312000 0.640000 -0.696000 --0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000 --0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000 --0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000 --0.250000 -0.301200 -0.349000 0.296000 0.272000 -0.912000 --0.291400 -0.301200 -0.365800 0.272000 0.504000 -0.808000 --0.291400 -0.301200 -0.365800 0.272000 0.504000 -0.808000 --0.200000 0.401700 0.005100 -0.168000 0.288000 0.936000 --0.200000 0.401700 0.005100 -0.168000 0.288000 0.936000 --0.200000 0.384800 0.000000 -0.112000 -0.232000 0.960000 --0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000 --0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000 --0.250000 0.401700 -0.023000 -0.400000 -0.016000 0.912000 --0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000 --0.300000 0.401700 -0.053800 -0.512000 0.520000 0.672000 --0.300000 0.351500 -0.024700 -0.384000 0.216000 0.896000 --0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000 --0.344500 0.351500 -0.060900 -0.776000 0.288000 0.552000 --0.300000 0.351500 -0.024700 -0.384000 0.216000 0.896000 --0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000 --0.300000 0.301200 -0.020200 -0.184000 0.032000 0.976000 --0.350000 0.301200 -0.051600 -0.832000 0.120000 0.528000 --0.300000 0.251000 -0.020200 0.208000 -0.160000 0.960000 --0.350000 0.251000 -0.040500 -0.808000 0.200000 0.544000 --0.300000 0.200800 -0.040500 0.440000 0.208000 0.864000 --0.350000 0.200800 -0.003200 -0.528000 -0.104000 0.832000 --0.350000 0.251000 -0.040500 -0.808000 0.200000 0.544000 --0.368900 0.200800 -0.060900 -0.952000 0.040000 -0.280000 --0.356100 0.251000 -0.060900 -0.936000 0.104000 -0.312000 --0.350000 0.251000 -0.040500 -0.808000 0.200000 0.544000 --0.353500 0.301200 -0.060900 -0.872000 0.080000 -0.464000 --0.350000 0.301200 -0.051600 -0.832000 0.120000 0.528000 --0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000 --0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000 --0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000 --0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000 --0.235900 -0.301200 0.000000 0.272000 -0.568000 0.768000 --0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000 --0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000 --0.169100 -0.301200 0.000000 -0.376000 -0.392000 0.832000 --0.169100 -0.301200 0.000000 -0.376000 -0.392000 0.832000 --0.150000 -0.301200 0.010200 -0.304000 -0.280000 0.904000 --0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000 --0.100000 -0.301200 0.037800 -0.016000 -0.152000 0.984000 --0.100000 -0.344900 0.000000 0.072000 -0.528000 0.840000 --0.050000 -0.301200 0.029100 0.312000 -0.280000 0.904000 --0.050000 -0.329200 0.000000 0.264000 -0.624000 0.720000 --0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000 --0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000 -0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000 --0.029100 -0.351500 -0.060900 0.584000 -0.680000 0.424000 -0.000000 -0.326800 -0.060900 0.344000 -0.824000 0.432000 -0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000 -0.032200 -0.301200 -0.060900 0.552000 -0.696000 0.448000 -0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000 -0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000 -0.050000 -0.321600 -0.121900 0.584000 -0.712000 0.376000 -0.074000 -0.301200 -0.121900 0.536000 -0.792000 0.264000 -0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000 -0.088900 -0.301200 -0.182900 0.488000 -0.864000 0.072000 -0.050000 -0.327900 -0.243900 0.480000 -0.872000 0.000000 -0.091700 -0.301200 -0.243900 0.488000 -0.864000 -0.008000 -0.050000 -0.326800 -0.304800 0.424000 -0.880000 -0.184000 -0.085600 -0.301200 -0.304800 0.544000 -0.768000 -0.320000 -0.050000 -0.303000 -0.365800 0.400000 -0.792000 -0.448000 -0.052200 -0.301200 -0.365800 0.552000 -0.720000 -0.416000 -0.050000 -0.301200 -0.369000 0.376000 -0.768000 -0.512000 -0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000 -0.050000 -0.251000 -0.406500 0.232000 -0.312000 -0.912000 -0.100000 -0.251000 -0.380100 0.472000 -0.384000 -0.784000 -0.050000 -0.206300 -0.365800 -0.112000 0.608000 -0.776000 -0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000 -0.050000 -0.200800 -0.360800 -0.016000 0.576000 -0.808000 -0.100000 -0.200800 -0.352600 0.240000 0.528000 -0.800000 -0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000 -0.150000 -0.200800 -0.325200 0.160000 0.176000 -0.968000 -0.118000 -0.251000 -0.365800 0.536000 -0.224000 -0.808000 -0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000 -0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000 -0.150000 -0.287400 -0.304800 0.000000 -0.712000 -0.688000 -0.100000 -0.292600 -0.304800 0.432000 -0.840000 -0.304000 -0.150000 -0.287700 -0.243900 -0.208000 -0.968000 0.064000 -0.100000 -0.296900 -0.243900 0.408000 -0.912000 0.000000 -0.150000 -0.278000 -0.182900 -0.064000 -0.936000 0.328000 -0.100000 -0.295100 -0.182900 0.440000 -0.880000 0.144000 -0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000 -0.100000 -0.284500 -0.121900 0.464000 -0.744000 0.472000 -0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000 -0.100000 -0.256900 -0.060900 0.456000 -0.800000 0.368000 -0.110300 -0.251000 -0.060900 0.504000 -0.760000 0.392000 -0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000 -0.130700 -0.200800 -0.060900 0.504000 0.008000 0.856000 -0.100000 -0.200800 -0.044900 0.416000 0.232000 0.872000 -0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000 -0.050000 -0.200800 -0.016400 0.232000 0.648000 0.720000 -0.076800 -0.150600 -0.060900 0.208000 0.432000 0.872000 -0.050000 -0.150600 -0.053500 0.160000 0.448000 0.872000 -0.050000 -0.140200 -0.060900 0.152000 0.504000 0.848000 -0.000000 -0.150600 -0.047300 0.168000 0.600000 0.768000 -0.000000 -0.136800 -0.060900 0.088000 0.520000 0.840000 --0.050000 -0.150600 -0.033100 0.152000 0.512000 0.840000 --0.050000 -0.119400 -0.060900 0.168000 0.528000 0.824000 --0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000 --0.100000 -0.105500 -0.060900 0.480000 0.464000 0.736000 --0.129500 -0.150600 0.000000 0.416000 0.264000 0.864000 --0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000 --0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000 --0.150000 -0.100400 -0.001300 0.848000 0.032000 0.520000 --0.150600 -0.100400 0.000000 0.800000 0.040000 0.592000 --0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000 --0.152800 -0.050200 0.000000 0.848000 0.032000 0.520000 --0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000 --0.150800 0.000000 0.000000 0.744000 0.072000 0.656000 --0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000 --0.163800 0.050200 0.000000 0.704000 0.216000 0.664000 --0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000 --0.200000 0.089800 0.000000 0.216000 0.544000 0.800000 --0.200000 0.100400 -0.008800 0.176000 0.488000 0.848000 --0.238500 0.100400 0.000000 0.152000 0.496000 0.848000 --0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000 --0.250000 0.104200 0.000000 0.144000 0.480000 0.856000 --0.250000 0.150600 -0.042200 0.008000 0.568000 0.816000 --0.300000 0.112500 0.000000 -0.064000 0.472000 0.872000 --0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000 --0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000 --0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000 --0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000 --0.129500 -0.150600 0.000000 0.416000 0.264000 0.864000 --0.150000 -0.150600 0.010200 0.376000 0.208000 0.896000 --0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000 --0.150000 -0.200800 0.013600 0.104000 0.200000 0.968000 --0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000 --0.150000 -0.251000 0.002400 -0.056000 -0.176000 0.976000 --0.100000 -0.251000 0.029400 -0.128000 0.120000 0.976000 --0.150000 -0.301200 0.010200 -0.304000 -0.280000 0.904000 --0.100000 -0.301200 0.037800 -0.016000 -0.152000 0.984000 --0.100000 -0.251000 0.029400 -0.128000 0.120000 0.976000 --0.050000 -0.301200 0.029100 0.312000 -0.280000 0.904000 --0.050000 -0.251000 0.040700 0.136000 0.064000 0.984000 --0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000 -0.000000 -0.251000 0.031300 0.424000 -0.232000 0.872000 -0.000000 -0.299000 0.000000 0.440000 -0.464000 0.760000 -0.050000 -0.251000 0.003400 0.512000 0.320000 0.792000 -0.050000 -0.253500 0.000000 0.448000 -0.608000 0.648000 -0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000 -0.050000 -0.286400 -0.060900 0.528000 -0.720000 0.440000 -0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000 -0.100000 -0.256900 -0.060900 0.456000 -0.800000 0.368000 -0.050000 -0.286400 -0.060900 0.528000 -0.720000 0.440000 -0.100000 -0.284500 -0.121900 0.464000 -0.744000 0.472000 -0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000 -0.074000 -0.301200 -0.121900 0.536000 -0.792000 0.264000 -0.100000 -0.284500 -0.121900 0.464000 -0.744000 0.472000 -0.088900 -0.301200 -0.182900 0.488000 -0.864000 0.072000 -0.100000 -0.295100 -0.182900 0.440000 -0.880000 0.144000 -0.091700 -0.301200 -0.243900 0.488000 -0.864000 -0.008000 -0.100000 -0.296900 -0.243900 0.408000 -0.912000 0.000000 -0.085600 -0.301200 -0.304800 0.544000 -0.768000 -0.320000 -0.100000 -0.292600 -0.304800 0.432000 -0.840000 -0.304000 -0.052200 -0.301200 -0.365800 0.552000 -0.720000 -0.416000 -0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000 -0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000 --0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000 --0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000 --0.050000 -0.200800 0.008600 0.032000 0.536000 0.840000 --0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000 --0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000 --0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000 --0.050000 -0.150600 -0.033100 0.152000 0.512000 0.840000 --0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000 -0.000000 -0.150600 -0.047300 0.168000 0.600000 0.768000 -0.000000 -0.198800 0.000000 0.160000 0.688000 0.704000 -0.050000 -0.150600 -0.053500 0.160000 0.448000 0.872000 -0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000 -0.050000 -0.200800 -0.016400 0.232000 0.648000 0.720000 -0.050000 -0.244100 0.000000 0.488000 0.320000 0.800000 -0.100000 -0.200800 -0.044900 0.416000 0.232000 0.872000 -0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000 -0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000 -0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000 --0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000 --0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000 --0.100000 -0.251000 0.029400 -0.128000 0.120000 0.976000 --0.050000 -0.200800 0.008600 0.032000 0.536000 0.840000 --0.050000 -0.251000 0.040700 0.136000 0.064000 0.984000 -0.000000 -0.200800 0.002300 0.160000 0.560000 0.808000 -0.000000 -0.251000 0.031300 0.424000 -0.232000 0.872000 -0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000 -0.050000 -0.251000 0.003400 0.512000 0.320000 0.792000 -0.050000 -0.244100 0.000000 0.488000 0.320000 0.800000 -0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000 -0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000 --0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000 --0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000 --0.050000 -0.200800 0.008600 0.032000 0.536000 0.840000 -0.000000 -0.198800 0.000000 0.160000 0.688000 0.704000 -0.000000 -0.200800 0.002300 0.160000 0.560000 0.808000 -0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000 -0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000 -0.500000 0.245700 0.000000 -0.568000 0.120000 0.808000 -0.500000 0.245700 0.000000 -0.568000 0.120000 0.808000 -0.500000 0.200800 0.008600 -0.576000 -0.176000 0.792000 -0.488800 0.200800 0.000000 -0.512000 0.024000 0.856000 -0.500000 0.181600 0.000000 -0.600000 -0.304000 0.728000 -0.500000 0.181600 0.000000 -0.600000 -0.304000 0.728000 -0.550000 0.174700 0.060900 -0.744000 -0.320000 0.576000 -0.550000 0.174700 0.060900 -0.744000 -0.320000 0.576000 -0.560700 0.150600 0.060900 -0.704000 -0.368000 0.592000 -0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000 -0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000 -0.641200 0.050200 0.060900 -0.600000 -0.608000 0.512000 -0.641200 0.050200 0.060900 -0.600000 -0.608000 0.512000 -0.600000 0.093600 0.060900 -0.624000 -0.616000 0.464000 -0.602900 0.050200 0.000000 -0.576000 -0.704000 0.400000 -0.600000 0.053300 0.000000 -0.472000 -0.712000 0.512000 -0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000 -0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000 --0.915700 -0.150600 0.000000 -0.696000 -0.672000 0.232000 --0.915700 -0.150600 0.000000 -0.696000 -0.672000 0.232000 --0.950000 -0.123700 0.000000 -0.488000 -0.840000 0.216000 --0.932400 -0.150600 -0.060900 -0.688000 -0.696000 0.176000 --0.950000 -0.136200 -0.060900 -0.528000 -0.832000 0.152000 --0.943100 -0.150600 -0.121900 -0.672000 -0.720000 0.120000 --0.950000 -0.144800 -0.121900 -0.536000 -0.832000 0.120000 --0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000 --0.943100 -0.150600 -0.121900 -0.672000 -0.720000 0.120000 --0.950000 -0.152700 -0.182900 -0.600000 -0.784000 0.144000 --0.903800 -0.200800 -0.121900 -0.696000 -0.704000 0.120000 --0.907400 -0.200800 -0.182900 -0.688000 -0.712000 0.072000 --0.950000 -0.152700 -0.182900 -0.600000 -0.784000 0.144000 --0.914100 -0.200800 -0.243900 -0.664000 -0.728000 0.128000 --0.950000 -0.161800 -0.243900 -0.584000 -0.784000 0.176000 --0.931500 -0.200800 -0.304800 -0.648000 -0.520000 -0.544000 --0.950000 -0.180000 -0.304800 -0.552000 -0.600000 -0.568000 --0.900000 -0.200800 -0.331500 -0.576000 -0.328000 -0.736000 --0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000 --0.900000 -0.150600 -0.338300 -0.216000 -0.104000 -0.968000 --0.900000 -0.200800 -0.331500 -0.576000 -0.328000 -0.736000 --0.850000 -0.150600 -0.349400 0.072000 0.056000 -0.992000 --0.850000 -0.200800 -0.351200 -0.168000 0.112000 -0.976000 --0.800000 -0.150600 -0.340500 0.312000 0.288000 -0.896000 --0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000 --0.750000 -0.150600 -0.317800 0.416000 0.384000 -0.816000 --0.750000 -0.200800 -0.348300 0.272000 0.384000 -0.872000 --0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000 --0.700000 -0.200800 -0.326900 0.208000 0.528000 -0.816000 --0.700000 -0.175200 -0.304800 0.352000 0.528000 -0.768000 --0.651700 -0.200800 -0.304800 0.320000 0.544000 -0.768000 --0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000 --0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000 --0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000 --0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000 --0.895700 -0.200800 -0.060900 -0.864000 -0.480000 0.136000 --0.895700 -0.200800 -0.060900 -0.864000 -0.480000 0.136000 --0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000 --0.860100 -0.251000 -0.060900 -0.808000 -0.568000 0.112000 --0.852600 -0.251000 0.000000 -0.800000 -0.568000 0.168000 --0.852600 -0.251000 0.000000 -0.800000 -0.568000 0.168000 --0.700000 -0.502100 -0.057900 -0.752000 -0.512000 0.400000 --0.700000 -0.502100 -0.057900 -0.752000 -0.512000 0.400000 --0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000 --0.701200 -0.502100 -0.060900 -0.816000 -0.416000 0.392000 --0.700000 -0.552300 -0.082500 -0.736000 -0.280000 0.608000 --0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000 --0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000 --0.750000 -0.549900 -0.121900 0.080000 0.648000 0.752000 --0.800000 -0.552300 -0.095900 0.424000 0.264000 0.864000 --0.800000 -0.539500 -0.121900 0.176000 0.680000 0.704000 --0.850000 -0.552300 -0.082300 -0.704000 -0.480000 0.504000 --0.850000 -0.519700 -0.121900 0.200000 0.624000 0.752000 --0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000 --0.850000 -0.502100 -0.144600 0.400000 0.776000 0.480000 --0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000 --0.878700 -0.502100 -0.121900 0.408000 0.368000 0.832000 --0.900000 -0.502100 -0.104000 -0.752000 0.000000 0.656000 --0.900000 -0.492700 -0.121900 -0.520000 0.712000 0.448000 --0.906100 -0.502100 -0.121900 -0.920000 0.072000 0.376000 --0.900000 -0.462200 -0.182900 0.320000 0.888000 0.304000 --0.925200 -0.502100 -0.182900 -0.976000 -0.008000 0.208000 --0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000 --0.929300 -0.502100 -0.243900 -0.992000 0.064000 -0.008000 --0.921000 -0.451900 -0.243900 -0.184000 0.968000 0.160000 --0.920600 -0.502100 -0.304800 -0.888000 -0.288000 -0.344000 --0.912200 -0.451900 -0.304800 -0.496000 0.720000 -0.464000 --0.900000 -0.502100 -0.352600 -0.672000 0.128000 -0.720000 --0.900000 -0.451900 -0.318500 0.104000 0.872000 -0.464000 --0.864000 -0.502100 -0.365800 -0.304000 0.480000 -0.816000 --0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000 --0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000 --0.850000 -0.473200 -0.304800 0.272000 0.896000 -0.336000 --0.800000 -0.496400 -0.365800 -0.664000 0.416000 -0.608000 --0.800000 -0.473000 -0.304800 -0.736000 0.648000 -0.168000 --0.786000 -0.451900 -0.365800 -0.872000 0.080000 -0.472000 --0.787800 -0.451900 -0.304800 -0.984000 0.136000 -0.040000 --0.796500 -0.401700 -0.365800 -0.952000 -0.168000 -0.232000 --0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000 --0.800000 -0.388500 -0.365800 -0.864000 -0.288000 -0.400000 --0.800000 -0.395700 -0.304800 -0.920000 -0.376000 0.000000 --0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000 --0.800000 -0.365300 -0.243900 -0.880000 -0.440000 0.160000 --0.781800 -0.401700 -0.243900 -0.912000 -0.336000 0.208000 --0.800000 -0.355500 -0.182900 -0.872000 -0.472000 0.032000 --0.775200 -0.401700 -0.182900 -0.904000 -0.400000 0.120000 --0.800000 -0.354700 -0.121900 -0.848000 -0.512000 0.080000 --0.771000 -0.401700 -0.121900 -0.872000 -0.456000 0.128000 --0.800000 -0.351500 -0.101400 -0.840000 -0.528000 0.104000 --0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000 --0.794800 -0.351500 -0.060900 -0.816000 -0.552000 0.144000 --0.800000 -0.351500 -0.101400 -0.840000 -0.528000 0.104000 --0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000 --0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000 --0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000 --0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000 --0.700000 0.159000 -0.060900 0.600000 0.776000 0.184000 --0.689800 0.150600 -0.060900 0.640000 0.736000 0.192000 --0.700000 0.150600 -0.089800 0.592000 0.744000 -0.280000 --0.650000 0.112000 -0.060900 0.672000 0.704000 0.200000 --0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000 --0.650000 0.100400 -0.098000 0.720000 0.624000 -0.288000 --0.657700 0.100400 -0.121900 0.728000 0.576000 -0.360000 --0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000 --0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000 --0.650000 0.050200 -0.178200 0.664000 0.544000 -0.504000 --0.700000 0.099700 -0.182900 0.504000 0.560000 -0.640000 --0.652800 0.050200 -0.182900 0.592000 0.536000 -0.592000 --0.700000 0.050200 -0.235800 0.504000 0.432000 -0.744000 --0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000 --0.700000 0.037400 -0.243900 0.440000 0.392000 -0.800000 --0.650000 0.000000 -0.224600 0.632000 0.368000 -0.672000 --0.669700 0.000000 -0.243900 0.480000 0.312000 -0.808000 --0.700000 0.037400 -0.243900 0.440000 0.392000 -0.800000 --0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000 --0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000 --0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000 --0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000 --0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000 --0.650000 -0.552300 -0.012600 -0.496000 -0.592000 0.624000 --0.650000 -0.552300 -0.012600 -0.496000 -0.592000 0.624000 --0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000 --0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000 --0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000 --0.450000 -0.100400 -0.057100 -0.400000 0.872000 0.264000 --0.406900 -0.050200 -0.060900 -0.848000 0.520000 0.000000 --0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000 --0.400000 -0.050200 -0.003200 -0.712000 0.672000 0.168000 --0.400000 -0.050900 0.000000 -0.776000 0.576000 0.224000 --0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000 --0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000 --0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000 --0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000 --0.450000 -0.489500 0.000000 0.584000 -0.760000 0.264000 --0.450000 -0.502100 -0.045100 0.560000 -0.696000 0.432000 --0.403800 -0.451900 0.000000 0.744000 -0.560000 0.352000 --0.400000 -0.502100 -0.024700 0.848000 -0.224000 0.464000 --0.400000 -0.451900 -0.009600 0.744000 -0.536000 0.376000 --0.403800 -0.451900 0.000000 0.744000 -0.560000 0.352000 --0.400000 -0.447100 0.000000 0.720000 -0.584000 0.344000 --0.400000 -0.451900 -0.009600 0.744000 -0.536000 0.376000 --0.350000 -0.427600 0.000000 0.560000 -0.752000 0.336000 --0.350000 -0.451900 -0.058800 0.248000 -0.624000 0.728000 --0.350000 -0.451900 -0.058800 0.248000 -0.624000 0.728000 --0.500000 -0.552300 -0.009400 0.352000 -0.840000 0.400000 --0.500000 -0.552300 -0.009400 0.352000 -0.840000 0.400000 --0.478800 -0.552300 -0.060900 0.704000 -0.592000 0.376000 --0.500000 -0.570000 -0.060900 0.480000 -0.800000 0.328000 --0.452200 -0.552300 -0.121900 0.864000 0.184000 0.464000 --0.500000 -0.589900 -0.121900 0.408000 -0.832000 0.352000 --0.450000 -0.552300 -0.127200 0.616000 -0.144000 0.768000 --0.500000 -0.602500 -0.155300 0.000000 -0.920000 0.376000 --0.450000 -0.558900 -0.121900 0.808000 0.320000 0.488000 --0.474100 -0.602500 -0.121900 -0.520000 -0.712000 0.456000 --0.450000 -0.602500 -0.084100 -0.232000 -0.736000 0.624000 --0.450000 -0.612400 -0.121900 0.032000 -0.944000 0.312000 --0.410500 -0.602500 -0.121900 0.456000 -0.632000 0.616000 --0.450000 -0.629600 -0.182900 -0.344000 -0.872000 0.320000 --0.400000 -0.602500 -0.131300 0.560000 -0.576000 0.584000 --0.400000 -0.651500 -0.182900 -0.552000 -0.472000 0.672000 --0.386500 -0.602500 -0.182900 0.376000 -0.032000 0.920000 --0.400000 -0.652700 -0.184800 -0.640000 -0.536000 0.536000 --0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000 --0.396000 -0.652700 -0.182900 -0.176000 0.000000 0.984000 --0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000 --0.350700 -0.703000 -0.182900 -0.792000 -0.176000 0.576000 --0.350000 -0.703000 -0.180700 -0.616000 -0.504000 0.592000 --0.350000 -0.704300 -0.182900 -0.112000 -0.808000 0.576000 --0.300000 -0.703000 -0.173800 0.616000 -0.544000 0.552000 --0.300000 -0.708000 -0.182900 0.360000 -0.768000 0.520000 --0.293800 -0.703000 -0.182900 0.608000 -0.624000 0.488000 --0.300000 -0.736500 -0.243900 0.320000 -0.832000 0.440000 --0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000 --0.300000 -0.753200 -0.286100 0.088000 -0.928000 0.352000 --0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000 --0.281500 -0.753200 -0.304800 0.312000 -0.920000 -0.216000 --0.250000 -0.737300 -0.304800 0.568000 -0.808000 -0.112000 --0.300000 -0.753200 -0.317300 0.136000 -0.840000 -0.512000 --0.250000 -0.703000 -0.346500 0.432000 -0.280000 -0.848000 --0.300000 -0.703000 -0.365100 0.056000 -0.232000 -0.968000 --0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000 --0.300000 -0.687100 -0.365800 0.104000 -0.048000 -0.992000 --0.282800 -0.652700 -0.365800 0.080000 -0.160000 -0.976000 --0.300000 -0.652700 -0.367500 0.064000 -0.112000 -0.984000 --0.300000 -0.687100 -0.365800 0.104000 -0.048000 -0.992000 --0.350000 -0.652700 -0.376000 0.560000 0.160000 -0.808000 --0.350000 -0.679200 -0.365800 -0.072000 -0.176000 -0.976000 --0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000 --0.400000 -0.653700 -0.365800 -0.176000 -0.888000 -0.416000 --0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000 --0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000 --0.450000 -0.652700 -0.319500 -0.256000 -0.952000 -0.136000 --0.450000 -0.654300 -0.304800 -0.272000 -0.952000 0.040000 --0.455200 -0.652700 -0.304800 -0.280000 -0.952000 0.040000 --0.450000 -0.652700 -0.293400 -0.288000 -0.936000 0.160000 --0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000 --0.450000 -0.644000 -0.243900 -0.352000 -0.912000 0.200000 --0.500000 -0.625200 -0.243900 -0.096000 -0.960000 0.240000 --0.450000 -0.629600 -0.182900 -0.344000 -0.872000 0.320000 --0.500000 -0.610400 -0.182900 -0.136000 -0.936000 0.304000 --0.450000 -0.612400 -0.121900 0.032000 -0.944000 0.312000 --0.500000 -0.602500 -0.155300 0.000000 -0.920000 0.376000 --0.474100 -0.602500 -0.121900 -0.520000 -0.712000 0.456000 --0.474100 -0.602500 -0.121900 -0.520000 -0.712000 0.456000 --0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000 --0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000 --0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000 --0.361800 0.100400 -0.060900 -0.920000 0.112000 -0.352000 --0.350000 0.077100 0.000000 -0.776000 0.256000 0.568000 --0.358600 0.050200 -0.060900 -0.920000 0.168000 -0.328000 --0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000 --0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000 --0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000 --0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000 --0.300000 0.408800 -0.060900 -0.664000 0.712000 -0.184000 --0.300000 0.401700 -0.053800 -0.512000 0.520000 0.672000 --0.250000 0.447500 -0.060900 -0.512000 0.744000 0.408000 --0.250000 0.401700 -0.023000 -0.400000 -0.016000 0.912000 --0.242600 0.451900 -0.060900 -0.440000 0.728000 0.512000 --0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000 --0.200000 0.451900 -0.034900 -0.360000 0.584000 0.720000 --0.200000 0.408700 0.000000 -0.112000 0.496000 0.856000 --0.150000 0.451900 -0.004000 -0.136000 0.584000 0.792000 --0.185900 0.401700 0.000000 0.264000 0.248000 0.928000 --0.150000 0.401700 -0.011900 0.240000 0.256000 0.928000 --0.150000 0.451900 -0.004000 -0.136000 0.584000 0.792000 --0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000 --0.100000 0.451900 -0.019200 0.136000 0.056000 0.984000 --0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000 --0.050000 0.451900 -0.049700 0.432000 0.024000 0.896000 --0.100000 0.451900 -0.019200 0.136000 0.056000 0.984000 --0.050000 0.502100 -0.046900 0.400000 0.496000 0.760000 --0.100000 0.502100 -0.041900 -0.080000 0.528000 0.840000 --0.050000 0.515300 -0.060900 0.432000 0.792000 0.408000 --0.100000 0.517800 -0.060900 -0.120000 0.976000 0.136000 --0.100000 0.502100 -0.041900 -0.080000 0.528000 0.840000 --0.146800 0.502100 -0.060900 -0.272000 0.960000 0.016000 --0.100000 0.451900 -0.019200 0.136000 0.056000 0.984000 --0.150000 0.501300 -0.060900 -0.376000 0.880000 -0.280000 --0.150000 0.451900 -0.004000 -0.136000 0.584000 0.792000 --0.200000 0.477600 -0.060900 -0.544000 0.808000 -0.208000 --0.200000 0.451900 -0.034900 -0.360000 0.584000 0.720000 --0.242600 0.451900 -0.060900 -0.440000 0.728000 0.512000 --0.200000 0.477600 -0.060900 -0.544000 0.808000 -0.208000 --0.200000 0.451900 -0.081300 -0.400000 0.504000 -0.752000 --0.200000 0.451900 -0.081300 -0.400000 0.504000 -0.752000 --0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000 --0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000 --0.350000 0.077100 0.000000 -0.776000 0.256000 0.568000 --0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000 --0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000 --0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000 --0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000 --0.300000 0.351500 -0.024700 -0.384000 0.216000 0.896000 --0.250000 0.301200 -0.005700 0.112000 -0.104000 0.984000 --0.300000 0.301200 -0.020200 -0.184000 0.032000 0.976000 --0.250000 0.251000 -0.029400 0.176000 -0.456000 0.864000 --0.300000 0.251000 -0.020200 0.208000 -0.160000 0.960000 --0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000 --0.300000 0.200800 -0.040500 0.440000 0.208000 0.864000 --0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000 --0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000 --0.250000 0.200800 -0.094600 -0.184000 -0.064000 0.976000 --0.200000 0.206100 -0.060900 -0.448000 -0.184000 0.872000 --0.200000 0.200800 -0.062300 -0.304000 0.376000 0.864000 --0.198000 0.200800 -0.060900 -0.464000 0.288000 0.832000 --0.200000 0.199100 -0.060900 -0.320000 0.504000 0.792000 --0.200000 0.200800 -0.062300 -0.304000 0.376000 0.864000 --0.250000 0.177000 -0.060900 -0.096000 0.568000 0.808000 --0.250000 0.200800 -0.094600 -0.184000 -0.064000 0.976000 --0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000 --0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000 --0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000 --0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000 --0.300000 -0.351500 -0.012600 0.872000 -0.352000 0.320000 --0.250000 -0.401700 -0.058800 -0.096000 -0.136000 0.984000 --0.300000 -0.401700 -0.045100 0.792000 -0.248000 0.544000 --0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000 --0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000 --0.287100 -0.451900 -0.060900 -0.448000 -0.328000 0.824000 --0.300000 -0.451900 -0.070300 -0.328000 -0.392000 0.856000 --0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000 --0.300000 -0.502100 -0.097100 -0.592000 -0.576000 0.560000 --0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000 --0.300000 -0.516400 -0.121900 -0.256000 -0.872000 0.400000 --0.250000 -0.552300 -0.101500 -0.080000 -0.904000 0.400000 --0.260200 -0.552300 -0.121900 -0.560000 -0.752000 0.336000 --0.250000 -0.559400 -0.121900 -0.088000 -0.912000 0.384000 --0.285200 -0.552300 -0.182900 -0.616000 -0.680000 0.384000 --0.250000 -0.581300 -0.182900 -0.104000 -0.888000 0.440000 --0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000 --0.250000 -0.602500 -0.226600 0.288000 -0.512000 0.800000 --0.300000 -0.594300 -0.243900 -0.424000 -0.464000 0.768000 --0.286800 -0.602500 -0.243900 -0.320000 0.232000 0.912000 --0.300000 -0.602500 -0.250000 -0.408000 0.368000 0.824000 --0.300000 -0.607200 -0.243900 -0.248000 0.672000 0.688000 --0.344900 -0.602500 -0.304800 -0.744000 0.664000 -0.032000 --0.350000 -0.630200 -0.243900 -0.144000 0.776000 0.600000 --0.350000 -0.605300 -0.304800 0.248000 0.960000 -0.032000 --0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000 --0.351600 -0.602500 -0.304800 0.944000 0.304000 0.024000 --0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000 --0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000 --0.350000 -0.552300 -0.283400 -0.096000 -0.680000 0.720000 --0.344900 -0.602500 -0.304800 -0.744000 0.664000 -0.032000 --0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000 --0.300000 -0.602500 -0.250000 -0.408000 0.368000 0.824000 --0.300000 -0.594300 -0.243900 -0.424000 -0.464000 0.768000 --0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000 --0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000 --0.350000 -0.535600 -0.243900 0.360000 -0.840000 0.384000 --0.300000 -0.538300 -0.182900 -0.584000 -0.696000 0.408000 --0.350000 -0.518400 -0.182900 -0.088000 -0.928000 0.360000 --0.300000 -0.516400 -0.121900 -0.256000 -0.872000 0.400000 --0.350000 -0.503000 -0.121900 0.232000 -0.880000 0.400000 --0.300000 -0.502100 -0.097100 -0.592000 -0.576000 0.560000 --0.350000 -0.502100 -0.119400 0.240000 -0.864000 0.424000 --0.300000 -0.451900 -0.070300 -0.328000 -0.392000 0.856000 --0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000 --0.338500 -0.451900 -0.060900 0.112000 -0.632000 0.760000 --0.300000 -0.451900 -0.070300 -0.328000 -0.392000 0.856000 --0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000 --0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000 --0.287100 -0.451900 -0.060900 -0.448000 -0.328000 0.824000 --0.287100 -0.451900 -0.060900 -0.448000 -0.328000 0.824000 --0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000 --0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000 --0.250000 -0.502100 -0.016400 -0.320000 -0.344000 0.872000 --0.200000 -0.451900 -0.018000 0.376000 -0.112000 0.912000 --0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000 --0.250000 -0.502100 -0.016400 -0.320000 -0.344000 0.872000 --0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000 --0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000 --0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000 --0.250000 -0.552300 -0.101500 -0.080000 -0.904000 0.400000 --0.235800 -0.552300 -0.121900 0.448000 -0.816000 0.336000 --0.250000 -0.559400 -0.121900 -0.088000 -0.912000 0.384000 --0.204600 -0.552300 -0.182900 0.504000 -0.776000 0.360000 --0.250000 -0.581300 -0.182900 -0.104000 -0.888000 0.440000 --0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000 --0.250000 -0.602500 -0.226600 0.288000 -0.512000 0.800000 --0.200000 -0.579600 -0.243900 0.568000 -0.648000 0.496000 --0.233200 -0.602500 -0.243900 0.608000 -0.320000 0.720000 --0.200000 -0.602500 -0.268600 0.488000 -0.432000 0.752000 --0.241600 -0.652700 -0.243900 0.680000 -0.216000 0.688000 --0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000 --0.250000 -0.679700 -0.243900 0.728000 -0.208000 0.640000 --0.200000 -0.693500 -0.304800 0.872000 -0.464000 -0.120000 --0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000 --0.204300 -0.703000 -0.304800 0.856000 -0.496000 -0.088000 --0.250000 -0.737300 -0.304800 0.568000 -0.808000 -0.112000 --0.250000 -0.703000 -0.346500 0.432000 -0.280000 -0.848000 --0.204300 -0.703000 -0.304800 0.856000 -0.496000 -0.088000 --0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000 --0.200000 -0.693500 -0.304800 0.872000 -0.464000 -0.120000 --0.200000 -0.652700 -0.326500 0.488000 -0.272000 -0.824000 --0.171500 -0.652700 -0.304800 0.576000 -0.304000 0.752000 --0.200000 -0.693500 -0.304800 0.872000 -0.464000 -0.120000 --0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000 --0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000 --0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000 --0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000 --0.250000 -0.502100 -0.016400 -0.320000 -0.344000 0.872000 --0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000 --0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000 --0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000 --0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000 --0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000 --0.200000 0.301200 -0.022600 0.056000 -0.176000 0.976000 --0.250000 0.301200 -0.005700 0.112000 -0.104000 0.984000 --0.200000 0.251000 -0.048300 -0.120000 -0.296000 0.944000 --0.250000 0.251000 -0.029400 0.176000 -0.456000 0.864000 --0.200000 0.206100 -0.060900 -0.448000 -0.184000 0.872000 --0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000 --0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000 --0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000 --0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000 --0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000 --0.200000 -0.401700 -0.023400 -0.056000 -0.008000 0.992000 --0.250000 -0.401700 -0.058800 -0.096000 -0.136000 0.984000 --0.200000 -0.451900 -0.018000 0.376000 -0.112000 0.912000 --0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000 --0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000 --0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000 --0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000 --0.200000 0.100400 -0.008800 0.176000 0.488000 0.848000 --0.150000 0.150600 -0.037800 0.256000 -0.016000 0.960000 --0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000 --0.114400 0.150600 -0.060900 0.520000 -0.344000 0.776000 --0.122500 0.100400 -0.060900 0.768000 -0.048000 0.624000 --0.100000 0.150600 -0.075000 0.592000 -0.416000 0.688000 --0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000 --0.067900 0.150600 -0.121900 0.736000 -0.432000 0.504000 --0.089100 0.100400 -0.121900 0.816000 -0.232000 0.520000 --0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000 --0.053800 0.100400 -0.182900 0.984000 -0.072000 0.112000 --0.050000 0.116900 -0.182900 0.944000 -0.304000 0.048000 --0.051400 0.100400 -0.243900 0.776000 0.216000 -0.576000 --0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000 --0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000 --0.051400 0.100400 -0.243900 0.776000 0.216000 -0.576000 --0.100000 0.150600 -0.251000 -0.024000 0.408000 -0.904000 --0.100000 0.100400 -0.276400 0.032000 0.376000 -0.920000 --0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000 --0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000 --0.150000 0.141700 -0.243900 -0.352000 0.528000 -0.768000 --0.198500 0.100400 -0.243900 -0.376000 0.480000 -0.784000 --0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000 --0.200000 0.099300 -0.243900 -0.456000 0.488000 -0.736000 --0.150000 0.050200 -0.299600 -0.080000 0.408000 -0.904000 --0.200000 0.050200 -0.277000 -0.312000 0.416000 -0.848000 --0.150000 0.040500 -0.304800 -0.136000 0.416000 -0.896000 --0.200000 0.008900 -0.304800 -0.304000 0.456000 -0.832000 --0.150000 0.000000 -0.322200 0.064000 0.240000 -0.968000 --0.200000 0.000000 -0.310700 -0.288000 0.424000 -0.848000 --0.150000 -0.050200 -0.328000 0.128000 0.064000 -0.984000 --0.200000 -0.050200 -0.330400 -0.144000 0.264000 -0.944000 --0.150000 -0.100400 -0.338700 0.056000 -0.088000 -0.992000 --0.200000 -0.100400 -0.330100 -0.024000 -0.008000 -0.992000 --0.150000 -0.150600 -0.309500 -0.032000 -0.400000 -0.912000 --0.200000 -0.150600 -0.333300 0.216000 -0.272000 -0.936000 --0.200000 -0.100400 -0.330100 -0.024000 -0.008000 -0.992000 --0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000 --0.250000 -0.100400 -0.327300 -0.384000 0.152000 -0.904000 --0.200000 -0.100400 -0.330100 -0.024000 -0.008000 -0.992000 --0.250000 -0.050200 -0.318700 -0.440000 0.320000 -0.832000 --0.200000 -0.050200 -0.330400 -0.144000 0.264000 -0.944000 --0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000 --0.200000 0.000000 -0.310700 -0.288000 0.424000 -0.848000 --0.213400 0.000000 -0.304800 -0.304000 0.448000 -0.832000 --0.200000 0.008900 -0.304800 -0.304000 0.456000 -0.832000 --0.250000 0.000000 -0.286200 -0.320000 0.712000 -0.616000 --0.200000 0.050200 -0.277000 -0.312000 0.416000 -0.848000 --0.250000 0.050200 -0.254100 -0.584000 0.656000 -0.464000 --0.200000 0.099300 -0.243900 -0.456000 0.488000 -0.736000 --0.250000 0.055800 -0.243900 -0.560000 0.648000 -0.504000 --0.250000 0.050200 -0.254100 -0.584000 0.656000 -0.464000 --0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000 --0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000 --0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000 --0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000 --0.181900 -0.502100 -0.060900 0.504000 -0.680000 0.520000 --0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000 --0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000 --0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000 --0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000 --0.150000 0.401700 -0.011900 0.240000 0.256000 0.928000 --0.100000 0.351500 -0.035500 0.120000 0.000000 0.992000 --0.150000 0.351500 -0.029900 0.096000 -0.168000 0.976000 --0.100000 0.301200 -0.032000 0.168000 0.008000 0.984000 --0.150000 0.301200 -0.033800 0.040000 -0.024000 0.992000 --0.100000 0.251000 -0.029400 0.344000 -0.104000 0.928000 --0.150000 0.251000 -0.027500 -0.136000 -0.104000 0.984000 --0.100000 0.200800 -0.041900 0.456000 -0.304000 0.832000 --0.150000 0.200800 -0.027500 -0.320000 -0.168000 0.928000 --0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000 --0.150000 0.150600 -0.037800 0.256000 -0.016000 0.960000 --0.114400 0.150600 -0.060900 0.520000 -0.344000 0.776000 --0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000 --0.100000 0.150600 -0.075000 0.592000 -0.416000 0.688000 --0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000 --0.067900 0.150600 -0.121900 0.736000 -0.432000 0.504000 --0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000 --0.050000 0.170300 -0.121900 0.584000 -0.576000 0.560000 --0.067900 0.150600 -0.121900 0.736000 -0.432000 0.504000 --0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000 --0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000 --0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000 --0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000 --0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000 --0.122500 0.100400 -0.060900 0.768000 -0.048000 0.624000 --0.123500 0.050200 -0.060900 0.888000 -0.104000 0.440000 --0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000 --0.100700 0.050200 -0.121900 0.856000 0.048000 0.504000 --0.100000 0.054100 -0.121900 0.816000 -0.176000 0.544000 --0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000 --0.089100 0.100400 -0.121900 0.816000 -0.232000 0.520000 --0.051100 0.050200 -0.182900 0.712000 0.184000 0.664000 --0.053800 0.100400 -0.182900 0.984000 -0.072000 0.112000 --0.050000 0.050200 -0.189300 0.800000 0.488000 0.336000 --0.051400 0.100400 -0.243900 0.776000 0.216000 -0.576000 --0.050000 0.095100 -0.243900 0.808000 0.256000 -0.520000 --0.100000 0.100400 -0.276400 0.032000 0.376000 -0.920000 --0.050000 0.050200 -0.257500 0.608000 0.208000 -0.760000 --0.100000 0.050200 -0.292200 0.304000 0.312000 -0.896000 --0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000 --0.100000 0.022400 -0.304800 0.184000 0.304000 -0.928000 --0.077600 0.000000 -0.304800 0.248000 0.344000 -0.896000 --0.100000 0.000000 -0.309600 0.168000 0.152000 -0.968000 --0.050000 -0.015100 -0.304800 0.280000 0.536000 -0.784000 --0.100000 -0.050200 -0.318600 0.080000 0.144000 -0.984000 --0.050000 -0.050200 -0.321000 0.120000 0.280000 -0.944000 --0.100000 -0.100400 -0.323700 -0.040000 -0.152000 -0.984000 --0.050000 -0.100400 -0.342800 0.056000 -0.032000 -0.992000 --0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000 --0.050000 -0.150600 -0.332400 0.016000 -0.080000 -0.992000 --0.050000 -0.100400 -0.342800 0.056000 -0.032000 -0.992000 -0.000000 -0.150600 -0.318000 0.160000 0.016000 -0.984000 -0.000000 -0.100400 -0.336000 0.328000 -0.184000 -0.920000 -0.050000 -0.150600 -0.318000 0.352000 0.312000 -0.872000 -0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000 -0.050000 -0.119800 -0.304800 0.416000 0.264000 -0.864000 -0.050000 -0.100400 -0.298100 0.360000 0.248000 -0.896000 -0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000 -0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000 -0.100000 -0.150600 -0.303900 -0.176000 0.088000 -0.976000 -0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000 -0.101900 -0.150600 -0.304800 -0.296000 0.368000 -0.872000 -0.100000 -0.150600 -0.303900 -0.176000 0.088000 -0.976000 -0.100000 -0.151600 -0.304800 -0.176000 0.536000 -0.816000 -0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000 -0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000 --0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000 --0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000 --0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000 --0.123500 0.050200 -0.060900 0.888000 -0.104000 0.440000 --0.120900 0.000000 -0.060900 0.800000 0.080000 0.592000 --0.100700 0.050200 -0.121900 0.856000 0.048000 0.504000 --0.100000 0.000000 -0.110200 0.808000 0.176000 0.552000 --0.100000 0.044900 -0.121900 0.816000 0.112000 0.552000 --0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000 --0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000 --0.050000 0.000000 -0.158900 0.584000 0.336000 0.728000 --0.051100 0.050200 -0.182900 0.712000 0.184000 0.664000 --0.050000 0.047900 -0.182900 0.488000 0.480000 0.720000 --0.050000 0.050200 -0.189300 0.800000 0.488000 0.336000 -0.000000 0.039200 -0.182900 0.256000 0.544000 0.792000 -0.000000 0.050200 -0.198900 0.168000 0.840000 0.504000 -0.050000 0.005700 -0.182900 0.312000 0.584000 0.744000 -0.046000 0.050200 -0.243900 0.728000 0.480000 -0.472000 -0.050000 0.042300 -0.243900 0.688000 0.376000 -0.616000 -0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000 -0.050000 0.000000 -0.258500 0.448000 0.256000 -0.848000 -0.000000 0.000000 -0.289100 0.520000 0.272000 -0.800000 -0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000 -0.000000 -0.038700 -0.304800 0.368000 0.192000 -0.904000 -0.004800 -0.050200 -0.304800 0.368000 0.176000 -0.904000 -0.000000 -0.050200 -0.306900 0.320000 0.152000 -0.928000 -0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000 -0.000000 -0.100400 -0.336000 0.328000 -0.184000 -0.920000 -0.000000 -0.050200 -0.306900 0.320000 0.152000 -0.928000 --0.050000 -0.100400 -0.342800 0.056000 -0.032000 -0.992000 --0.050000 -0.050200 -0.321000 0.120000 0.280000 -0.944000 -0.000000 -0.050200 -0.306900 0.320000 0.152000 -0.928000 --0.050000 -0.015100 -0.304800 0.280000 0.536000 -0.784000 -0.000000 -0.038700 -0.304800 0.368000 0.192000 -0.904000 --0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000 -0.000000 0.000000 -0.289100 0.520000 0.272000 -0.800000 --0.050000 0.050200 -0.257500 0.608000 0.208000 -0.760000 -0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000 --0.050000 0.095100 -0.243900 0.808000 0.256000 -0.520000 -0.000000 0.087200 -0.243900 0.456000 0.816000 -0.344000 --0.050000 0.050200 -0.189300 0.800000 0.488000 0.336000 -0.000000 0.050200 -0.198900 0.168000 0.840000 0.504000 -0.000000 0.087200 -0.243900 0.456000 0.816000 -0.344000 -0.046000 0.050200 -0.243900 0.728000 0.480000 -0.472000 -0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000 -0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000 --0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000 --0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000 --0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000 --0.120900 0.000000 -0.060900 0.800000 0.080000 0.592000 --0.114700 -0.050200 -0.060900 0.632000 0.112000 0.760000 --0.100000 0.000000 -0.110200 0.808000 0.176000 0.552000 --0.100000 -0.050200 -0.077100 0.584000 0.232000 0.768000 --0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000 --0.050000 -0.050200 -0.098600 0.240000 0.488000 0.832000 --0.050000 -0.024600 -0.121900 0.296000 0.656000 0.688000 -0.000000 -0.050200 -0.114000 0.064000 0.408000 0.904000 -0.000000 -0.035500 -0.121900 0.072000 0.496000 0.856000 -0.050000 -0.050200 -0.115700 0.016000 0.416000 0.904000 -0.050000 -0.038600 -0.121900 0.000000 0.528000 0.840000 -0.100000 -0.050200 -0.113200 -0.016000 0.464000 0.880000 -0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000 -0.150000 -0.050200 -0.113700 0.032000 0.448000 0.888000 -0.150000 -0.036300 -0.121900 0.008000 0.488000 0.864000 -0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000 -0.150000 0.000000 -0.166100 -0.096000 0.688000 0.712000 -0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000 -0.150000 0.016800 -0.182900 -0.152000 0.840000 0.520000 -0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000 -0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000 -0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000 -0.113100 0.000000 -0.243900 -0.392000 0.768000 -0.496000 -0.100000 -0.005500 -0.243900 -0.184000 0.760000 -0.616000 -0.150000 0.000000 -0.257100 -0.208000 0.552000 -0.800000 -0.100000 -0.050200 -0.272200 -0.136000 0.384000 -0.904000 -0.150000 -0.050200 -0.298400 -0.176000 0.328000 -0.920000 -0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000 -0.150000 -0.064700 -0.304800 -0.200000 0.328000 -0.912000 -0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000 -0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000 --0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000 --0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000 --0.150000 -0.100400 -0.001300 0.848000 0.032000 0.520000 --0.114700 -0.050200 -0.060900 0.632000 0.112000 0.760000 --0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000 --0.100000 -0.050200 -0.077100 0.584000 0.232000 0.768000 --0.100000 -0.100400 -0.064700 0.496000 0.416000 0.752000 --0.050000 -0.050200 -0.098600 0.240000 0.488000 0.832000 --0.050000 -0.100400 -0.073900 0.136000 0.480000 0.864000 -0.000000 -0.050200 -0.114000 0.064000 0.408000 0.904000 -0.000000 -0.100400 -0.085100 0.096000 0.456000 0.880000 -0.050000 -0.050200 -0.115700 0.016000 0.416000 0.904000 -0.050000 -0.100400 -0.083400 0.000000 0.440000 0.888000 -0.100000 -0.050200 -0.113200 -0.016000 0.464000 0.880000 -0.100000 -0.100400 -0.084200 0.032000 0.360000 0.928000 -0.150000 -0.050200 -0.113700 0.032000 0.448000 0.888000 -0.150000 -0.100400 -0.080500 0.184000 0.336000 0.920000 -0.100000 -0.100400 -0.084200 0.032000 0.360000 0.928000 -0.150000 -0.150600 -0.071000 0.136000 0.176000 0.968000 -0.100000 -0.150600 -0.068400 0.184000 0.416000 0.888000 -0.150000 -0.200800 -0.071800 0.312000 -0.208000 0.920000 -0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000 -0.130700 -0.200800 -0.060900 0.504000 0.008000 0.856000 -0.150000 -0.200800 -0.071800 0.312000 -0.208000 0.920000 -0.110300 -0.251000 -0.060900 0.504000 -0.760000 0.392000 -0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000 -0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000 --0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000 --0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000 --0.129500 -0.150600 0.000000 0.416000 0.264000 0.864000 --0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000 --0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000 --0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000 --0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000 --0.150000 -0.351500 -0.001100 -0.192000 -0.352000 0.912000 --0.100000 -0.344900 0.000000 0.072000 -0.528000 0.840000 --0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000 --0.050000 -0.329200 0.000000 0.264000 -0.624000 0.720000 --0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000 --0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000 --0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000 --0.100000 -0.401700 -0.044900 0.592000 -0.496000 0.624000 --0.087700 -0.401700 -0.060900 0.608000 -0.600000 0.504000 --0.100000 -0.415900 -0.060900 0.680000 -0.544000 0.480000 --0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000 --0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000 --0.098000 -0.451900 -0.121900 0.712000 -0.680000 0.120000 --0.100000 -0.453500 -0.121900 0.600000 -0.776000 0.168000 --0.098100 -0.451900 -0.182900 0.736000 -0.672000 0.032000 --0.100000 -0.453800 -0.182900 0.696000 -0.712000 0.024000 --0.094700 -0.451900 -0.243900 0.784000 -0.568000 0.216000 --0.100000 -0.458900 -0.243900 0.744000 -0.632000 0.192000 --0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000 --0.100000 -0.502100 -0.283200 0.616000 -0.376000 0.680000 --0.074100 -0.502100 -0.304800 0.864000 -0.480000 0.112000 --0.100000 -0.549700 -0.304800 0.696000 -0.392000 0.592000 --0.100000 -0.502100 -0.325200 0.520000 -0.368000 -0.760000 --0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000 --0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000 --0.150000 -0.552300 -0.337600 0.424000 -0.304000 -0.840000 --0.150000 -0.505900 -0.365800 0.272000 -0.320000 -0.904000 --0.196100 -0.552300 -0.365800 0.320000 -0.272000 -0.904000 --0.150000 -0.502100 -0.367300 0.088000 -0.320000 -0.936000 --0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000 --0.200000 -0.502100 -0.370700 0.184000 -0.352000 -0.912000 --0.200000 -0.502100 -0.370700 0.184000 -0.352000 -0.912000 --0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000 --0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000 --0.150000 -0.351500 -0.001100 -0.192000 -0.352000 0.912000 --0.100000 -0.401700 -0.044900 0.592000 -0.496000 0.624000 --0.150000 -0.401700 -0.019000 0.408000 -0.232000 0.880000 --0.100000 -0.415900 -0.060900 0.680000 -0.544000 0.480000 --0.150000 -0.451900 -0.041900 0.560000 -0.440000 0.696000 --0.133200 -0.451900 -0.060900 0.584000 -0.656000 0.464000 --0.150000 -0.470000 -0.060900 0.568000 -0.552000 0.600000 --0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000 --0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000 --0.100000 -0.453500 -0.121900 0.600000 -0.776000 0.168000 --0.146100 -0.502100 -0.121900 0.616000 -0.744000 0.232000 --0.100000 -0.453800 -0.182900 0.696000 -0.712000 0.024000 --0.141200 -0.502100 -0.182900 0.696000 -0.688000 0.184000 --0.100000 -0.458900 -0.243900 0.744000 -0.632000 0.192000 --0.125700 -0.502100 -0.243900 0.664000 -0.408000 0.624000 --0.100000 -0.502100 -0.283200 0.616000 -0.376000 0.680000 --0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000 --0.100000 -0.549700 -0.304800 0.696000 -0.392000 0.592000 --0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000 --0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000 --0.150000 -0.602500 -0.302600 0.392000 -0.240000 0.880000 --0.145700 -0.602500 -0.304800 0.824000 -0.528000 0.192000 --0.150000 -0.609400 -0.304800 0.840000 -0.512000 0.152000 --0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000 --0.145700 -0.602500 -0.304800 0.824000 -0.528000 0.192000 --0.150000 -0.552300 -0.337600 0.424000 -0.304000 -0.840000 --0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000 --0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000 --0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000 --0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000 --0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000 --0.050000 0.351500 -0.043600 0.248000 0.032000 0.960000 --0.100000 0.351500 -0.035500 0.120000 0.000000 0.992000 --0.050000 0.301200 -0.044600 0.440000 -0.008000 0.896000 --0.100000 0.301200 -0.032000 0.168000 0.008000 0.984000 --0.050000 0.251000 -0.047300 0.528000 -0.360000 0.760000 --0.100000 0.251000 -0.029400 0.344000 -0.104000 0.928000 --0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000 --0.100000 0.200800 -0.041900 0.456000 -0.304000 0.832000 --0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000 --0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000 --0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000 --0.027600 0.301200 -0.060900 0.456000 -0.208000 0.856000 --0.027600 0.301200 -0.060900 0.456000 -0.208000 0.856000 --0.050000 0.301200 -0.044600 0.440000 -0.008000 0.896000 --0.035000 0.251000 -0.060900 0.512000 -0.448000 0.728000 --0.050000 0.251000 -0.047300 0.528000 -0.360000 0.760000 --0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000 --0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000 --0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000 --0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000 -0.000000 -0.299000 0.000000 0.440000 -0.464000 0.760000 -0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000 -0.050000 -0.253500 0.000000 0.448000 -0.608000 0.648000 -0.032200 -0.301200 -0.060900 0.552000 -0.696000 0.448000 -0.050000 -0.286400 -0.060900 0.528000 -0.720000 0.440000 -0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000 -0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000 --0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000 --0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000 --0.029100 -0.351500 -0.060900 0.584000 -0.680000 0.424000 --0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000 -0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000 --0.050000 -0.398200 -0.121900 0.592000 -0.704000 0.368000 -0.000000 -0.356400 -0.121900 0.560000 -0.728000 0.384000 --0.050000 -0.389600 -0.182900 0.656000 -0.736000 -0.128000 -0.000000 -0.353400 -0.182900 0.520000 -0.832000 -0.160000 --0.050000 -0.380500 -0.243900 0.664000 -0.736000 -0.104000 -0.000000 -0.351500 -0.193300 0.504000 -0.832000 -0.176000 --0.013800 -0.351500 -0.243900 0.552000 -0.808000 -0.168000 -0.000000 -0.343100 -0.243900 0.464000 -0.864000 -0.160000 --0.026900 -0.351500 -0.304800 0.608000 -0.688000 -0.384000 -0.000000 -0.336000 -0.304800 0.392000 -0.872000 -0.264000 --0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000 -0.000000 -0.316900 -0.365800 0.224000 -0.832000 -0.496000 --0.050000 -0.309800 -0.365800 -0.336000 -0.416000 -0.840000 -0.000000 -0.301200 -0.413400 -0.392000 -0.192000 -0.896000 --0.050000 -0.301200 -0.370400 -0.392000 -0.264000 -0.872000 -0.000000 -0.251000 -0.386300 -0.352000 0.496000 -0.792000 --0.050000 -0.266900 -0.365800 -0.288000 0.088000 -0.944000 --0.044700 -0.251000 -0.365800 -0.216000 0.376000 -0.896000 --0.050000 -0.251000 -0.364300 -0.216000 0.352000 -0.904000 -0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000 --0.050000 -0.200800 -0.320900 -0.056000 0.280000 -0.952000 -0.000000 -0.200800 -0.332000 -0.296000 0.528000 -0.784000 -0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000 -0.050000 -0.200800 -0.360800 -0.016000 0.576000 -0.808000 -0.050000 -0.206300 -0.365800 -0.112000 0.608000 -0.776000 -0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000 -0.050000 -0.251000 -0.406500 0.232000 -0.312000 -0.912000 -0.000000 -0.251000 -0.386300 -0.352000 0.496000 -0.792000 -0.050000 -0.301200 -0.369000 0.376000 -0.768000 -0.512000 -0.000000 -0.301200 -0.413400 -0.392000 -0.192000 -0.896000 -0.050000 -0.303000 -0.365800 0.400000 -0.792000 -0.448000 -0.000000 -0.316900 -0.365800 0.224000 -0.832000 -0.496000 -0.050000 -0.326800 -0.304800 0.424000 -0.880000 -0.184000 -0.000000 -0.336000 -0.304800 0.392000 -0.872000 -0.264000 -0.050000 -0.327900 -0.243900 0.480000 -0.872000 0.000000 -0.000000 -0.343100 -0.243900 0.464000 -0.864000 -0.160000 -0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000 -0.000000 -0.351500 -0.193300 0.504000 -0.832000 -0.176000 -0.003100 -0.351500 -0.182900 0.504000 -0.840000 -0.160000 -0.000000 -0.353400 -0.182900 0.520000 -0.832000 -0.160000 -0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000 -0.000000 -0.356400 -0.121900 0.560000 -0.728000 0.384000 -0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000 -0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000 -0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000 -0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000 -0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000 -0.042100 0.351500 -0.060900 0.160000 -0.080000 0.976000 -0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000 -0.050000 0.351500 -0.062500 0.000000 -0.264000 0.960000 -0.050000 0.401700 -0.062500 -0.008000 0.136000 0.984000 -0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000 -0.100000 0.401700 -0.066700 -0.048000 0.000000 0.992000 -0.100000 0.368600 -0.060900 0.104000 0.120000 0.984000 -0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000 -0.111400 0.351500 -0.060900 0.184000 -0.224000 0.952000 -0.150000 0.351500 -0.070300 -0.056000 -0.480000 0.872000 -0.100000 0.345700 -0.060900 0.056000 -0.392000 0.912000 -0.150000 0.301200 -0.094700 0.096000 -0.408000 0.904000 -0.100000 0.301200 -0.081200 0.144000 -0.392000 0.904000 -0.150000 0.253300 -0.121900 0.144000 -0.672000 0.712000 -0.100000 0.251000 -0.119300 0.048000 -0.664000 0.736000 -0.134200 0.251000 -0.121900 0.072000 -0.752000 0.648000 -0.100000 0.248700 -0.121900 0.064000 -0.824000 0.552000 -0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000 -0.100000 0.246100 -0.182900 0.136000 -0.488000 -0.856000 -0.150000 0.224100 -0.182900 0.056000 -0.672000 -0.728000 -0.100000 0.251000 -0.185300 0.160000 -0.296000 -0.936000 -0.150000 0.251000 -0.192500 0.112000 0.024000 -0.992000 -0.100000 0.301200 -0.188500 0.112000 0.128000 -0.984000 -0.150000 0.284700 -0.182900 0.352000 0.368000 -0.856000 -0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000 -0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000 -0.150000 0.301200 -0.172900 0.456000 0.432000 -0.768000 -0.134200 0.251000 -0.121900 0.072000 -0.752000 0.648000 -0.150000 0.253300 -0.121900 0.144000 -0.672000 0.712000 -0.150000 0.301200 -0.172900 0.456000 0.432000 -0.768000 -0.200000 0.269500 -0.121900 -0.008000 -0.896000 0.432000 -0.200000 0.301200 -0.179700 -0.152000 -0.352000 -0.920000 -0.250000 0.256500 -0.121900 -0.200000 -0.800000 0.552000 -0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000 -0.250000 0.284000 -0.182900 -0.096000 -0.256000 -0.952000 -0.250000 0.301200 -0.184400 -0.080000 -0.056000 -0.992000 -0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000 -0.250000 0.351500 -0.189100 -0.160000 0.168000 -0.968000 -0.226900 0.351500 -0.182900 -0.224000 0.192000 -0.952000 -0.250000 0.370000 -0.182900 -0.184000 0.304000 -0.928000 -0.200000 0.351500 -0.169700 -0.320000 0.304000 -0.888000 -0.250000 0.401700 -0.172700 -0.016000 0.288000 -0.952000 -0.200000 0.401700 -0.169400 -0.056000 0.168000 -0.976000 -0.250000 0.451900 -0.137900 0.128000 0.536000 -0.824000 -0.200000 0.451900 -0.151000 0.136000 0.400000 -0.896000 -0.250000 0.466900 -0.121900 0.232000 0.968000 0.016000 -0.200000 0.484800 -0.121900 0.312000 0.872000 0.360000 -0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000 -0.200000 0.453000 -0.060900 0.112000 0.728000 0.672000 -0.203100 0.451900 -0.060900 0.264000 0.672000 0.680000 -0.200000 0.451900 -0.059700 0.136000 0.632000 0.760000 -0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000 -0.200000 0.401700 -0.033800 -0.352000 0.000000 0.928000 -0.250000 0.401700 -0.026800 -0.216000 0.176000 0.952000 -0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000 -0.250000 0.351500 -0.020200 -0.488000 -0.416000 0.760000 -0.201200 0.351500 -0.060900 -0.488000 -0.576000 0.648000 -0.250000 0.317900 -0.060900 -0.432000 -0.680000 0.584000 -0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000 -0.250000 0.301200 -0.083600 -0.096000 -0.744000 0.648000 -0.200000 0.301200 -0.098800 -0.120000 -0.584000 0.800000 -0.250000 0.256500 -0.121900 -0.200000 -0.800000 0.552000 -0.200000 0.269500 -0.121900 -0.008000 -0.896000 0.432000 -0.200000 0.301200 -0.098800 -0.120000 -0.584000 0.800000 -0.150000 0.253300 -0.121900 0.144000 -0.672000 0.712000 -0.150000 0.301200 -0.094700 0.096000 -0.408000 0.904000 -0.200000 0.301200 -0.098800 -0.120000 -0.584000 0.800000 -0.150000 0.351500 -0.070300 -0.056000 -0.480000 0.872000 -0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000 -0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000 -0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000 -0.151400 0.401700 -0.060900 -0.480000 -0.416000 0.760000 -0.200000 0.401700 -0.033800 -0.352000 0.000000 0.928000 -0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000 -0.200000 0.451900 -0.059700 0.136000 0.632000 0.760000 -0.150000 0.451900 -0.057100 -0.080000 0.496000 0.856000 -0.200000 0.453000 -0.060900 0.112000 0.728000 0.672000 -0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000 -0.200000 0.484800 -0.121900 0.312000 0.872000 0.360000 -0.150000 0.502100 -0.119700 0.016000 0.656000 0.752000 -0.153400 0.502100 -0.121900 0.448000 0.824000 -0.336000 -0.150000 0.503100 -0.121900 0.272000 0.456000 -0.840000 -0.150000 0.502100 -0.123200 0.032000 0.424000 -0.896000 -0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000 -0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000 -0.100000 0.494400 -0.121900 -0.184000 0.952000 -0.216000 -0.100000 0.451900 -0.146900 -0.088000 0.224000 -0.968000 -0.050000 0.485400 -0.121900 -0.032000 0.904000 -0.408000 -0.050000 0.451900 -0.139600 -0.080000 0.232000 -0.960000 -0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000 -0.000000 0.451900 -0.135500 0.000000 0.160000 -0.984000 --0.050000 0.500300 -0.121900 -0.104000 0.896000 -0.424000 --0.050000 0.451900 -0.137500 0.040000 0.112000 -0.992000 --0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000 --0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000 --0.150000 0.453400 -0.121900 -0.320000 0.624000 -0.704000 --0.150000 0.451900 -0.123200 -0.344000 0.512000 -0.784000 --0.152100 0.451900 -0.121900 -0.424000 0.536000 -0.720000 --0.150000 0.401700 -0.148200 -0.240000 0.400000 -0.872000 --0.200000 0.409200 -0.121900 -0.400000 0.464000 -0.776000 --0.200000 0.401700 -0.127400 -0.400000 0.440000 -0.800000 --0.208300 0.401700 -0.121900 -0.432000 0.432000 -0.784000 --0.200000 0.351500 -0.146000 -0.416000 0.224000 -0.872000 --0.233300 0.351500 -0.121900 -0.616000 0.184000 -0.752000 --0.200000 0.301200 -0.154100 -0.392000 0.112000 -0.904000 --0.245300 0.301200 -0.121900 -0.680000 0.120000 -0.720000 --0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000 --0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000 --0.250000 0.251000 -0.124000 -0.376000 0.088000 -0.920000 --0.254200 0.251000 -0.121900 -0.384000 0.088000 -0.912000 --0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000 --0.263400 0.200800 -0.121900 -0.480000 0.216000 -0.840000 --0.250000 0.150600 -0.154100 -0.464000 0.344000 -0.808000 --0.295300 0.150600 -0.121900 -0.728000 0.520000 -0.432000 --0.250000 0.100400 -0.182000 -0.504000 0.488000 -0.704000 --0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000 --0.300000 0.100400 -0.141500 -0.560000 0.512000 -0.640000 --0.250000 0.100400 -0.182000 -0.504000 0.488000 -0.704000 --0.300000 0.052000 -0.182900 -0.664000 0.464000 -0.568000 --0.250000 0.099600 -0.182900 -0.488000 0.616000 -0.608000 --0.250000 0.100400 -0.182000 -0.504000 0.488000 -0.704000 --0.249100 0.100400 -0.182900 -0.576000 0.496000 -0.640000 --0.250000 0.150600 -0.154100 -0.464000 0.344000 -0.808000 --0.216700 0.150600 -0.182900 -0.560000 0.376000 -0.728000 --0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000 --0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000 --0.200000 0.200800 -0.161600 -0.480000 0.384000 -0.776000 --0.173800 0.200800 -0.182900 -0.480000 0.344000 -0.800000 --0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000 --0.153800 0.251000 -0.182900 -0.312000 0.176000 -0.928000 --0.200000 0.301200 -0.154100 -0.392000 0.112000 -0.904000 --0.150000 0.257900 -0.182900 -0.288000 0.168000 -0.936000 --0.150000 0.301200 -0.169700 -0.080000 0.248000 -0.960000 --0.100000 0.273500 -0.182900 -0.112000 0.208000 -0.968000 --0.100000 0.301200 -0.172200 -0.168000 0.416000 -0.888000 --0.058500 0.301200 -0.182900 -0.128000 0.320000 -0.936000 --0.100000 0.351500 -0.158200 0.008000 0.264000 -0.960000 --0.050000 0.304700 -0.182900 -0.120000 0.336000 -0.928000 --0.050000 0.351500 -0.155800 -0.048000 0.328000 -0.936000 -0.000000 0.313300 -0.182900 -0.064000 0.304000 -0.944000 -0.000000 0.351500 -0.164900 -0.080000 0.368000 -0.920000 -0.050000 0.327400 -0.182900 -0.016000 0.344000 -0.936000 -0.050000 0.351500 -0.166400 0.000000 0.392000 -0.912000 -0.100000 0.320500 -0.182900 0.096000 0.312000 -0.936000 -0.100000 0.351500 -0.169000 0.056000 0.272000 -0.952000 -0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000 -0.150000 0.351500 -0.160600 0.144000 0.128000 -0.976000 -0.150000 0.301200 -0.172900 0.456000 0.432000 -0.768000 -0.200000 0.351500 -0.169700 -0.320000 0.304000 -0.888000 -0.200000 0.301200 -0.179700 -0.152000 -0.352000 -0.920000 -0.226900 0.351500 -0.182900 -0.224000 0.192000 -0.952000 -0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000 -0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000 -0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000 -0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000 -0.042100 0.351500 -0.060900 0.160000 -0.080000 0.976000 -0.000000 0.334500 -0.060900 0.312000 -0.368000 0.864000 -0.050000 0.351500 -0.062500 0.000000 -0.264000 0.960000 -0.000000 0.301200 -0.076500 0.296000 -0.272000 0.904000 -0.050000 0.301200 -0.074400 0.160000 -0.248000 0.952000 -0.000000 0.251000 -0.086600 0.344000 -0.360000 0.864000 -0.050000 0.251000 -0.100200 0.224000 -0.464000 0.848000 -0.000000 0.211400 -0.121900 0.496000 -0.712000 0.480000 -0.050000 0.230600 -0.121900 0.312000 -0.824000 0.464000 -0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000 -0.050000 0.219300 -0.182900 0.280000 -0.632000 -0.712000 -0.008500 0.200800 -0.182900 0.416000 -0.688000 -0.584000 -0.050000 0.251000 -0.200200 0.040000 -0.232000 -0.968000 -0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000 -0.000000 0.251000 -0.201400 0.024000 -0.152000 -0.984000 --0.050000 0.200800 -0.204500 0.304000 -0.328000 -0.888000 --0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000 --0.100000 0.200800 -0.221500 0.056000 0.392000 -0.912000 --0.100000 0.251000 -0.188700 -0.192000 0.256000 -0.944000 --0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000 --0.150000 0.251000 -0.184400 -0.280000 0.168000 -0.936000 --0.173800 0.200800 -0.182900 -0.480000 0.344000 -0.800000 --0.153800 0.251000 -0.182900 -0.312000 0.176000 -0.928000 --0.150000 0.251000 -0.184400 -0.280000 0.168000 -0.936000 --0.150000 0.257900 -0.182900 -0.288000 0.168000 -0.936000 --0.100000 0.251000 -0.188700 -0.192000 0.256000 -0.944000 --0.100000 0.273500 -0.182900 -0.112000 0.208000 -0.968000 --0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000 --0.058500 0.301200 -0.182900 -0.128000 0.320000 -0.936000 --0.050000 0.301200 -0.184300 -0.112000 0.296000 -0.944000 --0.050000 0.304700 -0.182900 -0.120000 0.336000 -0.928000 -0.000000 0.301200 -0.186500 -0.056000 0.232000 -0.968000 -0.000000 0.313300 -0.182900 -0.064000 0.304000 -0.944000 -0.050000 0.301200 -0.192400 0.024000 0.192000 -0.976000 -0.050000 0.327400 -0.182900 -0.016000 0.344000 -0.936000 -0.100000 0.301200 -0.188500 0.112000 0.128000 -0.984000 -0.100000 0.320500 -0.182900 0.096000 0.312000 -0.936000 -0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000 -0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000 -0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000 -0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000 -0.032200 -0.301200 -0.060900 0.552000 -0.696000 0.448000 -0.000000 -0.326800 -0.060900 0.344000 -0.824000 0.432000 -0.000000 -0.326800 -0.060900 0.344000 -0.824000 0.432000 -0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000 -0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000 -0.100000 0.368600 -0.060900 0.104000 0.120000 0.984000 -0.100000 0.351500 -0.058100 0.120000 -0.240000 0.960000 -0.111400 0.351500 -0.060900 0.184000 -0.224000 0.952000 -0.100000 0.345700 -0.060900 0.056000 -0.392000 0.912000 -0.100000 0.351500 -0.058100 0.120000 -0.240000 0.960000 -0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000 -0.100000 0.345700 -0.060900 0.056000 -0.392000 0.912000 -0.050000 0.351500 -0.062500 0.000000 -0.264000 0.960000 -0.100000 0.301200 -0.081200 0.144000 -0.392000 0.904000 -0.050000 0.301200 -0.074400 0.160000 -0.248000 0.952000 -0.100000 0.251000 -0.119300 0.048000 -0.664000 0.736000 -0.050000 0.251000 -0.100200 0.224000 -0.464000 0.848000 -0.100000 0.248700 -0.121900 0.064000 -0.824000 0.552000 -0.050000 0.230600 -0.121900 0.312000 -0.824000 0.464000 -0.100000 0.246100 -0.182900 0.136000 -0.488000 -0.856000 -0.050000 0.219300 -0.182900 0.280000 -0.632000 -0.712000 -0.100000 0.251000 -0.185300 0.160000 -0.296000 -0.936000 -0.050000 0.251000 -0.200200 0.040000 -0.232000 -0.968000 -0.100000 0.301200 -0.188500 0.112000 0.128000 -0.984000 -0.050000 0.301200 -0.192400 0.024000 0.192000 -0.976000 -0.050000 0.251000 -0.200200 0.040000 -0.232000 -0.968000 -0.000000 0.301200 -0.186500 -0.056000 0.232000 -0.968000 -0.000000 0.251000 -0.201400 0.024000 -0.152000 -0.984000 --0.050000 0.301200 -0.184300 -0.112000 0.296000 -0.944000 --0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000 --0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000 -0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000 -0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000 -0.150000 0.451900 -0.057100 -0.080000 0.496000 0.856000 -0.121900 0.451900 -0.060900 -0.112000 0.472000 0.872000 -0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000 -0.100000 0.451900 -0.066700 -0.192000 0.072000 0.976000 -0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000 -0.100000 0.401700 -0.066700 -0.048000 0.000000 0.992000 -0.100000 0.451900 -0.066700 -0.192000 0.072000 0.976000 -0.050000 0.401700 -0.062500 -0.008000 0.136000 0.984000 -0.050000 0.451900 -0.077800 0.016000 0.408000 0.912000 -0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000 -0.000000 0.451900 -0.081100 0.280000 0.456000 0.832000 --0.005200 0.401700 -0.060900 0.264000 0.168000 0.944000 --0.023600 0.451900 -0.060900 0.376000 0.152000 0.904000 -0.000000 0.451900 -0.081100 0.280000 0.456000 0.832000 --0.033200 0.502100 -0.060900 0.616000 0.496000 0.600000 -0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000 --0.050000 0.502100 -0.117100 -0.040000 0.912000 -0.392000 --0.050000 0.500300 -0.121900 -0.104000 0.896000 -0.424000 --0.100000 0.502100 -0.081300 -0.184000 0.840000 -0.488000 --0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000 --0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000 -0.350000 0.302200 -0.060900 -0.144000 -0.624000 0.760000 -0.350000 0.302200 -0.060900 -0.144000 -0.624000 0.760000 -0.300000 0.310700 -0.060900 -0.072000 -0.760000 0.640000 -0.350000 0.351500 -0.021800 0.032000 -0.048000 0.992000 -0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000 -0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000 -0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000 -0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000 -0.400000 0.251000 -0.058700 -0.328000 -0.176000 0.920000 -0.400000 0.242400 -0.060900 -0.352000 -0.192000 0.904000 -0.400000 0.242400 -0.060900 -0.352000 -0.192000 0.904000 -0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000 -0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000 -0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000 -0.450000 0.414500 -0.060900 0.192000 0.928000 0.304000 -0.500000 0.403100 -0.060900 0.112000 0.944000 0.280000 -0.450000 0.422200 -0.121900 0.368000 0.832000 -0.392000 -0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000 -0.488600 0.401700 -0.121900 0.504000 0.776000 -0.368000 -0.450000 0.422200 -0.121900 0.368000 0.832000 -0.392000 -0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000 -0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000 -0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000 -0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000 -0.500000 0.150600 -0.020200 -0.704000 -0.472000 0.520000 -0.500000 0.107000 -0.060900 -0.608000 -0.480000 0.616000 -0.500000 0.107000 -0.060900 -0.608000 -0.480000 0.616000 -0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000 -0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000 -0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000 -0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000 -0.495100 0.050200 -0.060900 -0.456000 0.136000 0.872000 -0.450000 0.000000 -0.073300 -0.344000 -0.088000 0.928000 -0.450000 0.050200 -0.077000 -0.360000 0.120000 0.920000 -0.400000 0.000000 -0.102200 -0.272000 0.176000 0.936000 -0.400000 0.050200 -0.114800 -0.552000 0.256000 0.784000 -0.351500 0.000000 -0.121900 -0.376000 0.528000 0.752000 -0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000 -0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000 -0.357200 0.050200 -0.182900 -0.736000 0.640000 0.184000 -0.350000 0.043300 -0.182900 -0.488000 0.704000 0.504000 -0.351400 0.050200 -0.243900 -0.480000 0.768000 -0.416000 -0.350000 0.049300 -0.243900 -0.512000 0.784000 -0.320000 -0.350000 0.043300 -0.182900 -0.488000 0.704000 0.504000 -0.300000 0.032100 -0.243900 -0.576000 0.680000 -0.432000 -0.300000 0.018000 -0.182900 -0.296000 0.768000 0.552000 -0.350000 0.043300 -0.182900 -0.488000 0.704000 0.504000 -0.300000 0.000000 -0.166100 -0.488000 0.464000 0.728000 -0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000 -0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000 -0.350000 -0.001200 -0.121900 -0.472000 0.472000 0.736000 -0.307700 -0.050200 -0.121900 -0.592000 0.464000 0.648000 -0.350000 -0.050200 -0.093300 -0.312000 0.392000 0.856000 -0.300000 -0.060700 -0.121900 -0.512000 0.456000 0.720000 -0.350000 -0.100400 -0.081200 -0.280000 0.032000 0.952000 -0.300000 -0.100400 -0.098900 -0.360000 0.344000 0.856000 -0.350000 -0.150600 -0.101500 0.088000 -0.352000 0.928000 -0.300000 -0.150600 -0.090800 0.240000 -0.024000 0.968000 -0.350000 -0.182300 -0.121900 -0.032000 -0.520000 0.848000 -0.300000 -0.200800 -0.101500 0.424000 -0.216000 0.872000 -0.329200 -0.200800 -0.121900 0.376000 -0.264000 0.880000 -0.300000 -0.234400 -0.121900 0.104000 -0.472000 0.872000 -0.350000 -0.200800 -0.137500 0.248000 -0.232000 0.936000 -0.300000 -0.251000 -0.132800 -0.224000 -0.464000 0.856000 -0.350000 -0.234100 -0.121900 0.384000 0.224000 0.888000 -0.328900 -0.251000 -0.121900 -0.264000 -0.304000 0.912000 -0.350000 -0.251000 -0.114600 0.576000 -0.200000 0.784000 -0.350000 -0.260400 -0.121900 0.448000 -0.472000 0.752000 -0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000 -0.350000 -0.251000 -0.114600 0.576000 -0.200000 0.784000 -0.350000 -0.234100 -0.121900 0.384000 0.224000 0.888000 -0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000 -0.350000 -0.200800 -0.137500 0.248000 -0.232000 0.936000 -0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000 -0.391400 -0.200800 -0.121900 -0.176000 -0.648000 0.736000 -0.400000 -0.200800 -0.119100 -0.200000 -0.688000 0.688000 -0.350000 -0.182300 -0.121900 -0.032000 -0.520000 0.848000 -0.400000 -0.150600 -0.068400 -0.344000 -0.312000 0.880000 -0.350000 -0.150600 -0.101500 0.088000 -0.352000 0.928000 -0.400000 -0.100400 -0.080400 -0.024000 0.176000 0.976000 -0.350000 -0.100400 -0.081200 -0.280000 0.032000 0.952000 -0.400000 -0.050200 -0.089900 -0.128000 0.176000 0.968000 -0.350000 -0.050200 -0.093300 -0.312000 0.392000 0.856000 -0.400000 0.000000 -0.102200 -0.272000 0.176000 0.936000 -0.350000 -0.001200 -0.121900 -0.472000 0.472000 0.736000 -0.351500 0.000000 -0.121900 -0.376000 0.528000 0.752000 -0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000 -0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000 -0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000 -0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000 -0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000 -0.500000 -0.026100 -0.060900 -0.336000 -0.328000 0.872000 -0.550000 0.000000 -0.046900 0.008000 -0.120000 0.992000 -0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000 -0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000 -0.600000 -0.012300 -0.060900 0.104000 -0.576000 0.800000 -0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000 -0.600000 -0.050200 -0.088500 0.448000 -0.400000 0.792000 -0.550000 -0.050200 -0.061500 -0.064000 -0.152000 0.984000 -0.600000 -0.100400 -0.077400 0.584000 0.048000 0.800000 -0.550000 -0.100400 -0.076900 0.056000 0.056000 0.992000 -0.550000 -0.050200 -0.061500 -0.064000 -0.152000 0.984000 -0.500000 -0.100400 -0.086800 -0.048000 0.256000 0.960000 -0.500000 -0.050200 -0.068900 -0.136000 -0.144000 0.976000 -0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000 -0.450000 -0.050200 -0.086300 -0.128000 -0.040000 0.984000 -0.400000 -0.100400 -0.080400 -0.024000 0.176000 0.976000 -0.400000 -0.050200 -0.089900 -0.128000 0.176000 0.968000 -0.450000 -0.050200 -0.086300 -0.128000 -0.040000 0.984000 -0.400000 0.000000 -0.102200 -0.272000 0.176000 0.936000 -0.450000 0.000000 -0.073300 -0.344000 -0.088000 0.928000 -0.450000 -0.050200 -0.086300 -0.128000 -0.040000 0.984000 -0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000 -0.500000 -0.050200 -0.068900 -0.136000 -0.144000 0.976000 -0.500000 -0.026100 -0.060900 -0.336000 -0.328000 0.872000 -0.550000 -0.050200 -0.061500 -0.064000 -0.152000 0.984000 -0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000 -0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000 -0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000 -0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000 -0.500000 0.403100 -0.060900 0.112000 0.944000 0.280000 -0.517100 0.401700 -0.060900 0.080000 0.968000 0.224000 -0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000 -0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000 -0.500000 0.266900 0.000000 -0.760000 -0.040000 0.640000 -0.500000 0.266900 0.000000 -0.760000 -0.040000 0.640000 -0.500800 0.251000 0.000000 -0.792000 -0.016000 0.608000 -0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000 -0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000 -0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000 -0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000 -0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000 -0.550000 0.050200 -0.037800 -0.320000 -0.688000 0.640000 -0.550000 0.000000 -0.046900 0.008000 -0.120000 0.992000 -0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000 -0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000 -0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000 -0.550000 0.104000 0.000000 -0.664000 -0.568000 0.464000 -0.550000 0.104000 0.000000 -0.664000 -0.568000 0.464000 -0.553100 0.100400 0.000000 -0.664000 -0.576000 0.464000 -0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000 -0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000 -0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000 -0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000 -0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000 -0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000 -0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000 -0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000 -0.600000 -0.150600 -0.093600 0.304000 0.568000 0.752000 -0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000 -0.650000 -0.150600 -0.116200 0.720000 0.480000 0.488000 -0.608400 -0.200800 -0.060900 0.360000 0.488000 0.792000 -0.650000 -0.200800 -0.092600 0.656000 0.384000 0.640000 -0.650000 -0.242600 -0.060900 0.392000 0.384000 0.824000 -0.677400 -0.200800 -0.121900 0.528000 0.512000 0.672000 -0.657600 -0.251000 -0.060900 0.456000 -0.072000 0.880000 -0.700000 -0.217500 -0.121900 0.616000 0.552000 0.544000 -0.700000 -0.251000 -0.086700 0.608000 0.464000 0.632000 -0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000 -0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000 -0.750000 -0.297400 -0.121900 0.656000 0.584000 0.464000 -0.750000 -0.301200 -0.116500 0.704000 0.400000 0.568000 -0.752700 -0.301200 -0.121900 0.792000 0.344000 0.488000 -0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000 -0.775700 -0.351500 -0.121900 0.600000 0.328000 0.720000 -0.750000 -0.401700 -0.115900 -0.264000 -0.344000 0.896000 -0.800000 -0.391100 -0.121900 0.384000 0.416000 0.816000 -0.800000 -0.401700 -0.115500 0.392000 0.184000 0.896000 -0.810500 -0.401700 -0.121900 0.456000 0.104000 0.872000 -0.800000 -0.418600 -0.121900 0.304000 -0.320000 0.888000 -0.850000 -0.401700 -0.151500 0.608000 0.552000 0.560000 -0.800000 -0.451900 -0.135400 0.168000 -0.384000 0.904000 -0.850000 -0.451900 -0.123600 0.328000 0.296000 0.888000 -0.800000 -0.502100 -0.171200 -0.360000 -0.648000 0.664000 -0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000 -0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000 -0.850000 -0.533300 -0.182900 -0.416000 -0.736000 0.528000 -0.800000 -0.519900 -0.243900 -0.400000 -0.904000 -0.112000 -0.850000 -0.540400 -0.243900 -0.360000 -0.768000 -0.512000 -0.800000 -0.502100 -0.293400 -0.120000 -0.840000 -0.520000 -0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000 -0.832800 -0.502100 -0.304800 -0.104000 -0.544000 -0.824000 -0.850000 -0.502100 -0.307100 0.032000 -0.240000 -0.968000 -0.850000 -0.490600 -0.304800 0.216000 0.112000 -0.968000 -0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000 -0.850000 -0.451900 -0.293100 0.448000 0.248000 -0.848000 -0.900000 -0.502100 -0.284600 -0.008000 -0.096000 -0.992000 -0.900000 -0.451900 -0.272400 0.368000 0.408000 -0.824000 -0.950000 -0.502100 -0.277800 0.272000 0.288000 -0.912000 -0.950000 -0.451900 -0.300000 0.488000 0.464000 -0.728000 -1.000000 -0.502100 -0.271100 0.392000 0.584000 -0.696000 -0.980700 -0.451900 -0.243900 0.752000 0.648000 0.032000 -1.000000 -0.475100 -0.243900 0.736000 0.608000 -0.280000 -0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000 -1.000000 -0.502100 -0.189300 0.760000 0.568000 0.296000 -0.950000 -0.463500 -0.182900 0.464000 0.672000 0.568000 -0.998000 -0.502100 -0.182900 0.528000 0.664000 0.520000 -0.950000 -0.502100 -0.136000 -0.296000 0.400000 0.864000 -1.000000 -0.503200 -0.182900 0.400000 0.704000 0.576000 -0.950000 -0.531200 -0.121900 -0.376000 0.368000 0.840000 -1.000000 -0.544400 -0.121900 0.360000 0.712000 0.592000 -0.950000 -0.552300 -0.115100 -0.432000 -0.368000 0.816000 -1.000000 -0.552300 -0.111000 0.040000 -0.024000 0.992000 -0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000 -1.000000 -0.602500 -0.115100 -0.504000 -0.464000 0.712000 -0.992300 -0.602500 -0.121900 -0.520000 -0.480000 0.696000 -1.000000 -0.611000 -0.121900 -0.528000 -0.480000 0.696000 -0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000 -1.000000 -0.652700 -0.168000 -0.488000 -0.568000 0.656000 -0.950000 -0.619400 -0.182900 -0.632000 -0.592000 0.480000 -0.983200 -0.652700 -0.182900 -0.528000 -0.608000 0.584000 -0.950000 -0.619400 -0.243900 -0.600000 -0.584000 -0.536000 -0.979500 -0.652700 -0.243900 -0.672000 -0.664000 -0.304000 -0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000 -1.000000 -0.652700 -0.268800 -0.592000 -0.512000 -0.608000 -0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000 -1.000000 -0.614600 -0.304800 -0.488000 -0.376000 -0.776000 -1.000000 -0.602500 -0.311200 -0.448000 -0.336000 -0.816000 -0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000 -1.000000 -0.552300 -0.319800 -0.248000 0.216000 -0.936000 -0.953900 -0.552300 -0.304800 -0.328000 0.312000 -0.888000 -1.000000 -0.525900 -0.304800 -0.248000 0.496000 -0.824000 -0.950000 -0.552300 -0.303200 -0.304000 0.392000 -0.864000 -1.000000 -0.502100 -0.271100 0.392000 0.584000 -0.696000 -0.950000 -0.502100 -0.277800 0.272000 0.288000 -0.912000 -0.950000 -0.552300 -0.303200 -0.304000 0.392000 -0.864000 -0.900000 -0.502100 -0.284600 -0.008000 -0.096000 -0.992000 -0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000 -0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000 -0.868400 -0.552300 -0.243900 -0.552000 -0.760000 -0.328000 -0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000 -0.850000 -0.540400 -0.243900 -0.360000 -0.768000 -0.512000 -0.868400 -0.552300 -0.243900 -0.552000 -0.760000 -0.328000 -0.850000 -0.533300 -0.182900 -0.416000 -0.736000 0.528000 -0.876500 -0.552300 -0.182900 -0.528000 -0.672000 0.504000 -0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000 -0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000 -0.900000 -0.502100 -0.123800 -0.168000 -0.208000 0.960000 -0.940600 -0.552300 -0.121900 -0.512000 -0.272000 0.808000 -0.950000 -0.502100 -0.136000 -0.296000 0.400000 0.864000 -0.950000 -0.531200 -0.121900 -0.376000 0.368000 0.840000 -0.940600 -0.552300 -0.121900 -0.512000 -0.272000 0.808000 -0.950000 -0.552300 -0.115100 -0.432000 -0.368000 0.816000 -0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000 -0.940600 -0.552300 -0.121900 -0.512000 -0.272000 0.808000 -0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000 -0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000 -0.935000 -0.602500 -0.182900 -0.552000 -0.552000 0.608000 -0.900000 -0.573700 -0.182900 -0.608000 -0.704000 0.344000 -0.933200 -0.602500 -0.243900 -0.584000 -0.624000 -0.512000 -0.900000 -0.578300 -0.243900 -0.552000 -0.704000 -0.440000 -0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000 -0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000 -0.950000 -0.552300 -0.303200 -0.304000 0.392000 -0.864000 -0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000 -0.953900 -0.552300 -0.304800 -0.328000 0.312000 -0.888000 -0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000 -0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000 -0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000 -0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000 -0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000 -0.562800 -0.251000 -0.060900 -0.368000 -0.568000 0.720000 -0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000 -0.600000 -0.251000 -0.042400 -0.104000 -0.208000 0.968000 -0.608400 -0.200800 -0.060900 0.360000 0.488000 0.792000 -0.650000 -0.251000 -0.056300 0.424000 -0.024000 0.896000 -0.650000 -0.242600 -0.060900 0.392000 0.384000 0.824000 -0.657600 -0.251000 -0.060900 0.456000 -0.072000 0.880000 -0.650000 -0.251000 -0.056300 0.424000 -0.024000 0.896000 -0.650000 -0.258100 -0.060900 0.392000 -0.456000 0.792000 -0.600000 -0.251000 -0.042400 -0.104000 -0.208000 0.968000 -0.600000 -0.272000 -0.060900 -0.264000 -0.632000 0.720000 -0.562800 -0.251000 -0.060900 -0.368000 -0.568000 0.720000 -0.600000 -0.301200 -0.098800 -0.176000 -0.576000 0.792000 -0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000 -0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000 -0.550000 -0.300100 -0.121900 -0.624000 -0.616000 0.472000 -0.550000 -0.301200 -0.123600 -0.624000 -0.440000 0.632000 -0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000 -0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000 -0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000 -0.558500 -0.351500 -0.121900 0.208000 -0.648000 0.728000 -0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000 -0.550000 -0.353000 -0.121900 -0.032000 -0.832000 0.536000 -0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000 -0.550000 -0.389500 -0.182900 -0.304000 -0.784000 0.528000 -0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000 -0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000 -0.600000 -0.414700 -0.243900 -0.184000 -0.936000 0.272000 -0.550000 -0.409700 -0.243900 -0.144000 -0.944000 0.272000 -0.600000 -0.422100 -0.304800 -0.120000 -0.768000 -0.616000 -0.550000 -0.415900 -0.304800 -0.192000 -0.848000 -0.480000 -0.600000 -0.401700 -0.327900 -0.024000 -0.544000 -0.832000 -0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000 -0.600000 -0.351500 -0.337900 0.040000 -0.080000 -0.992000 -0.550000 -0.351500 -0.364500 0.120000 -0.104000 -0.984000 -0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000 -0.550000 -0.316300 -0.304800 -0.472000 0.688000 -0.536000 -0.567500 -0.301200 -0.304800 -0.696000 0.400000 -0.584000 -0.550000 -0.301200 -0.279200 -0.712000 0.120000 -0.680000 -0.550000 -0.272400 -0.304800 -0.680000 -0.440000 -0.576000 -0.550000 -0.272400 -0.304800 -0.680000 -0.440000 -0.576000 -0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000 -0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000 -0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000 -0.600000 0.401700 -0.057700 0.168000 0.920000 -0.344000 -0.650000 0.351500 -0.057700 0.800000 0.552000 -0.208000 -0.600000 0.400600 -0.060900 -0.072000 0.912000 -0.384000 -0.648900 0.351500 -0.060900 0.576000 0.600000 -0.544000 -0.600000 0.351500 -0.101600 0.448000 0.496000 -0.736000 -0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000 -0.600000 0.310600 -0.121900 0.480000 0.424000 -0.760000 -0.650000 0.301200 -0.100800 0.528000 0.504000 -0.672000 -0.608400 0.301200 -0.121900 0.448000 0.488000 -0.744000 -0.600000 0.310600 -0.121900 0.480000 0.424000 -0.760000 -0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000 -0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000 -0.648900 0.351500 -0.060900 0.576000 0.600000 -0.544000 -0.648900 0.351500 -0.060900 0.576000 0.600000 -0.544000 -0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000 -0.650000 0.351500 -0.057700 0.800000 0.552000 -0.208000 -0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000 -0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000 -0.685300 0.301200 0.000000 0.832000 0.536000 -0.104000 -0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000 -0.700000 0.279600 0.000000 0.792000 0.600000 -0.048000 -0.700000 0.278700 -0.060900 0.648000 0.584000 -0.472000 -0.700000 0.278700 -0.060900 0.648000 0.584000 -0.472000 -0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000 -0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000 -0.608400 -0.200800 -0.060900 0.360000 0.488000 0.792000 -0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000 -0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000 -0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000 -0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000 -0.650000 0.351500 -0.057700 0.800000 0.552000 -0.208000 -0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000 -0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000 -0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000 -0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000 -0.686800 0.000000 -0.060900 0.208000 -0.960000 0.144000 -0.650000 -0.010200 -0.060900 0.168000 -0.784000 0.592000 -0.698200 0.000000 -0.121900 0.296000 -0.952000 0.032000 -0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000 -0.687300 0.000000 -0.182900 0.648000 -0.600000 -0.456000 -0.650000 -0.048900 -0.182900 0.792000 -0.584000 0.152000 -0.653800 0.000000 -0.243900 0.576000 -0.112000 -0.808000 -0.650000 -0.016900 -0.243900 0.704000 -0.184000 -0.672000 -0.650000 -0.048900 -0.182900 0.792000 -0.584000 0.152000 -0.637200 -0.050200 -0.243900 0.840000 -0.080000 -0.528000 -0.649100 -0.050200 -0.182900 0.816000 -0.544000 0.144000 -0.650000 -0.048900 -0.182900 0.792000 -0.584000 0.152000 -0.638000 -0.050200 -0.121900 0.800000 -0.536000 0.256000 -0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000 -0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000 -0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000 -0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000 -0.772100 0.000000 0.000000 -0.504000 -0.832000 0.224000 -0.800000 -0.024700 -0.060900 -0.616000 -0.776000 0.088000 -0.753100 0.000000 -0.060900 -0.472000 -0.872000 0.000000 -0.800000 -0.027900 -0.121900 -0.664000 -0.736000 -0.072000 -0.756600 0.000000 -0.121900 -0.496000 -0.856000 -0.080000 -0.800000 -0.017800 -0.182900 -0.616000 -0.680000 -0.376000 -0.776700 0.000000 -0.182900 -0.576000 -0.728000 -0.360000 -0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000 -0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000 -0.900000 0.131100 0.000000 0.480000 0.848000 0.192000 -0.900000 0.131100 0.000000 0.480000 0.848000 0.192000 -0.950000 0.102000 0.000000 0.472000 0.864000 0.120000 -0.900000 0.143500 -0.060900 0.528000 0.808000 -0.240000 -0.950000 0.106300 -0.060900 0.576000 0.776000 -0.240000 -0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000 -0.950000 0.100400 -0.078300 0.560000 0.768000 -0.304000 -0.931600 0.100400 -0.121900 0.600000 0.744000 -0.272000 -0.950000 0.086300 -0.121900 0.544000 0.784000 -0.280000 -0.912000 0.100400 -0.182900 0.600000 0.704000 -0.360000 -0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000 -0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000 -0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000 -0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000 -0.929600 0.050200 -0.243900 0.432000 0.672000 -0.584000 -0.900000 0.050200 -0.268900 0.208000 0.672000 -0.696000 -0.950000 0.037500 -0.243900 0.432000 0.688000 -0.576000 -0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000 -0.950000 0.000000 -0.291100 0.424000 0.536000 -0.720000 -0.927400 0.000000 -0.304800 0.400000 0.560000 -0.720000 -0.950000 -0.016600 -0.304800 0.448000 0.520000 -0.720000 -0.900000 0.000000 -0.329500 -0.080000 0.648000 -0.744000 -0.950000 -0.050200 -0.338500 0.440000 0.400000 -0.800000 -0.900000 -0.050200 -0.348300 -0.256000 0.192000 -0.944000 -0.950000 -0.100400 -0.351000 0.336000 0.064000 -0.936000 -0.900000 -0.100400 -0.341700 -0.464000 -0.104000 -0.872000 -0.950000 -0.150600 -0.345500 -0.032000 0.064000 -0.992000 -0.900000 -0.150600 -0.332000 -0.672000 -0.328000 -0.656000 -0.900000 -0.150600 -0.332000 -0.672000 -0.328000 -0.656000 -0.995800 -0.200800 0.000000 -0.648000 -0.704000 0.264000 -0.995800 -0.200800 0.000000 -0.648000 -0.704000 0.264000 -0.950000 -0.168100 0.000000 -0.640000 -0.744000 0.184000 -0.973000 -0.200800 -0.060900 -0.584000 -0.760000 0.264000 -0.950000 -0.183700 -0.060900 -0.632000 -0.728000 0.232000 -0.950500 -0.200800 -0.121900 -0.632000 -0.744000 0.192000 -0.950000 -0.200400 -0.121900 -0.720000 -0.672000 0.136000 -0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000 -0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000 --0.910500 0.251000 -0.121900 0.344000 0.880000 -0.304000 --0.910500 0.251000 -0.121900 0.344000 0.880000 -0.304000 --0.900000 0.246900 -0.121900 0.360000 0.872000 -0.304000 --0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000 --0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000 --0.900000 -0.502100 -0.104000 -0.752000 0.000000 0.656000 --0.900000 -0.502100 -0.104000 -0.752000 0.000000 0.656000 --0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000 --0.906100 -0.502100 -0.121900 -0.920000 0.072000 0.376000 --0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000 --0.925200 -0.502100 -0.182900 -0.976000 -0.008000 0.208000 --0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000 --0.929300 -0.502100 -0.243900 -0.992000 0.064000 -0.008000 --0.900000 -0.539600 -0.304800 -0.720000 -0.488000 -0.480000 --0.920600 -0.502100 -0.304800 -0.888000 -0.288000 -0.344000 --0.900000 -0.502100 -0.352600 -0.672000 0.128000 -0.720000 --0.900000 -0.539600 -0.304800 -0.720000 -0.488000 -0.480000 --0.864000 -0.502100 -0.365800 -0.304000 0.480000 -0.816000 --0.891900 -0.552300 -0.304800 -0.800000 -0.568000 -0.136000 --0.860100 -0.552300 -0.365800 -0.680000 -0.432000 -0.584000 --0.850000 -0.602000 -0.304800 -0.640000 -0.736000 -0.184000 --0.850000 -0.564700 -0.365800 -0.608000 -0.528000 -0.584000 --0.849200 -0.602500 -0.304800 -0.536000 -0.720000 -0.432000 --0.806700 -0.602500 -0.365800 -0.520000 -0.656000 -0.536000 --0.800000 -0.636000 -0.304800 -0.536000 -0.792000 -0.272000 --0.800000 -0.607700 -0.365800 -0.488000 -0.640000 -0.584000 --0.750000 -0.652200 -0.304800 -0.040000 -0.952000 -0.288000 --0.750000 -0.628000 -0.365800 -0.232000 -0.808000 -0.528000 --0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000 --0.700000 -0.639000 -0.365800 -0.040000 -0.920000 -0.376000 --0.700000 -0.652700 -0.309000 0.024000 -0.952000 -0.296000 --0.650000 -0.641900 -0.365800 -0.024000 -0.952000 -0.280000 --0.688500 -0.652700 -0.304800 0.080000 -0.992000 -0.064000 --0.650000 -0.650400 -0.304800 0.048000 -0.992000 0.096000 --0.700000 -0.652700 -0.298900 0.056000 -0.976000 0.184000 --0.650000 -0.641500 -0.243900 0.040000 -0.976000 0.168000 --0.700000 -0.645500 -0.243900 -0.008000 -0.984000 0.160000 --0.650000 -0.630900 -0.182900 0.008000 -0.968000 0.232000 --0.700000 -0.633400 -0.182900 -0.064000 -0.960000 0.248000 --0.650000 -0.615500 -0.121900 -0.008000 -0.952000 0.304000 --0.700000 -0.614700 -0.121900 -0.136000 -0.888000 0.424000 --0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000 --0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000 --0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000 --0.700000 -0.552300 -0.082500 -0.736000 -0.280000 0.608000 --0.685200 -0.552300 -0.060900 -0.696000 -0.384000 0.592000 --0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000 --0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000 --0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000 --0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000 --0.850000 -0.552300 -0.082300 -0.704000 -0.480000 0.504000 --0.850000 -0.569100 -0.121900 -0.488000 -0.776000 0.384000 --0.800000 -0.552300 -0.095900 0.424000 0.264000 0.864000 --0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000 --0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000 --0.764000 -0.602500 -0.121900 -0.176000 -0.816000 0.544000 --0.750000 -0.602500 -0.116200 -0.176000 -0.808000 0.544000 --0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000 --0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000 --0.700000 -0.614700 -0.121900 -0.136000 -0.888000 0.424000 --0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000 --0.700000 -0.633400 -0.182900 -0.064000 -0.960000 0.248000 --0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000 --0.700000 -0.645500 -0.243900 -0.008000 -0.984000 0.160000 --0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000 --0.700000 -0.652700 -0.298900 0.056000 -0.976000 0.184000 --0.750000 -0.652200 -0.304800 -0.040000 -0.952000 -0.288000 --0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000 --0.700000 -0.652700 -0.298900 0.056000 -0.976000 0.184000 --0.700000 -0.653800 -0.304800 0.056000 -0.992000 -0.080000 --0.688500 -0.652700 -0.304800 0.080000 -0.992000 -0.064000 --0.700000 -0.652700 -0.309000 0.024000 -0.952000 -0.296000 --0.700000 -0.653800 -0.304800 0.056000 -0.992000 -0.080000 --0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000 --0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000 --0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000 --0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000 --0.800000 0.198900 -0.121900 0.384000 0.872000 -0.288000 --0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000 --0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000 --0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000 --0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000 --0.771000 -0.401700 -0.121900 -0.872000 -0.456000 0.128000 --0.750000 -0.426100 -0.060900 -0.864000 -0.448000 0.200000 --0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000 --0.735400 -0.451900 -0.060900 -0.768000 -0.512000 0.360000 --0.748200 -0.451900 -0.121900 -0.880000 -0.440000 0.160000 --0.701200 -0.502100 -0.060900 -0.816000 -0.416000 0.392000 --0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000 --0.748200 -0.451900 -0.121900 -0.880000 -0.440000 0.160000 --0.749300 -0.502100 -0.182900 -0.920000 -0.232000 0.288000 --0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000 --0.750000 -0.499500 -0.182900 -0.936000 -0.200000 0.264000 --0.757600 -0.451900 -0.182900 -0.952000 -0.232000 0.184000 --0.750000 -0.502100 -0.184800 -0.496000 0.696000 0.496000 --0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000 --0.800000 -0.502100 -0.227500 0.432000 0.824000 0.352000 --0.800000 -0.496000 -0.243900 0.424000 0.840000 0.320000 --0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000 --0.850000 -0.480800 -0.243900 0.376000 0.912000 0.152000 --0.850000 -0.490700 -0.182900 0.328000 0.896000 0.288000 --0.896800 -0.451900 -0.243900 0.600000 0.776000 0.136000 --0.900000 -0.462200 -0.182900 0.320000 0.888000 0.304000 --0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000 --0.896800 -0.451900 -0.243900 0.600000 0.776000 0.136000 --0.900000 -0.449600 -0.243900 0.496000 0.856000 0.136000 --0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000 --0.900000 -0.446300 -0.304800 0.160000 0.912000 -0.360000 --0.900000 -0.451900 -0.318500 0.104000 0.872000 -0.464000 --0.912200 -0.451900 -0.304800 -0.496000 0.720000 -0.464000 --0.900000 -0.446300 -0.304800 0.160000 0.912000 -0.360000 --0.921000 -0.451900 -0.243900 -0.184000 0.968000 0.160000 --0.900000 -0.449600 -0.243900 0.496000 0.856000 0.136000 --0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000 --0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000 --0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000 --0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000 --0.750000 -0.602500 -0.116200 -0.176000 -0.808000 0.544000 --0.700000 -0.552300 -0.082500 -0.736000 -0.280000 0.608000 --0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000 --0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000 --0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000 --0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000 --0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000 --0.600000 -0.601900 -0.060900 -0.072000 -0.808000 0.568000 --0.600000 -0.602500 -0.062100 -0.056000 -0.816000 0.560000 --0.550000 -0.588500 -0.060900 0.224000 -0.888000 0.384000 --0.550000 -0.602500 -0.100200 0.256000 -0.912000 0.288000 --0.500000 -0.570000 -0.060900 0.480000 -0.800000 0.328000 --0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000 --0.500000 -0.589900 -0.121900 0.408000 -0.832000 0.352000 --0.500000 -0.602500 -0.155300 0.000000 -0.920000 0.376000 --0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000 --0.500000 -0.610400 -0.182900 -0.136000 -0.936000 0.304000 --0.550000 -0.606400 -0.121900 0.192000 -0.952000 0.216000 --0.550000 -0.618800 -0.182900 0.168000 -0.944000 0.272000 --0.600000 -0.616000 -0.121900 0.080000 -0.960000 0.256000 --0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000 --0.650000 -0.615500 -0.121900 -0.008000 -0.952000 0.304000 --0.650000 -0.630900 -0.182900 0.008000 -0.968000 0.232000 --0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000 --0.650000 -0.641500 -0.243900 0.040000 -0.976000 0.168000 --0.600000 -0.640700 -0.243900 0.080000 -0.976000 0.192000 --0.650000 -0.650400 -0.304800 0.048000 -0.992000 0.096000 --0.600000 -0.650800 -0.304800 0.064000 -0.992000 0.000000 --0.650000 -0.641900 -0.365800 -0.024000 -0.952000 -0.280000 --0.600000 -0.645500 -0.365800 0.016000 -0.968000 -0.216000 --0.650000 -0.621300 -0.426800 -0.080000 -0.904000 -0.400000 --0.600000 -0.630300 -0.426800 -0.072000 -0.944000 -0.312000 --0.600000 -0.645500 -0.365800 0.016000 -0.968000 -0.216000 --0.550000 -0.626200 -0.426800 0.144000 -0.960000 -0.232000 --0.550000 -0.637200 -0.365800 0.152000 -0.968000 -0.168000 --0.500000 -0.621400 -0.426800 0.072000 -0.968000 -0.232000 --0.500000 -0.633000 -0.365800 -0.088000 -0.968000 -0.200000 --0.450000 -0.629300 -0.426800 -0.048000 -0.904000 -0.416000 --0.450000 -0.645700 -0.365800 -0.144000 -0.904000 -0.392000 --0.400000 -0.621700 -0.426800 0.392000 -0.856000 -0.304000 --0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000 --0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000 --0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000 --0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000 --0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000 --0.650000 -0.615500 -0.121900 -0.008000 -0.952000 0.304000 --0.600000 -0.602500 -0.062100 -0.056000 -0.816000 0.560000 --0.600000 -0.616000 -0.121900 0.080000 -0.960000 0.256000 --0.550000 -0.602500 -0.100200 0.256000 -0.912000 0.288000 --0.550000 -0.606400 -0.121900 0.192000 -0.952000 0.216000 --0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000 --0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000 --0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000 --0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000 --0.586600 -0.050200 -0.121900 0.872000 0.224000 -0.424000 --0.550000 -0.066800 -0.060900 0.944000 0.320000 -0.008000 --0.578300 -0.100400 -0.121900 0.848000 0.312000 -0.424000 --0.550000 -0.100400 -0.079500 0.552000 0.552000 -0.616000 --0.550000 -0.145600 -0.121900 0.512000 0.792000 -0.312000 --0.578300 -0.100400 -0.121900 0.848000 0.312000 -0.424000 --0.550000 -0.150600 -0.142400 0.376000 0.896000 -0.200000 --0.594100 -0.100400 -0.182900 0.816000 0.296000 -0.480000 --0.561800 -0.150600 -0.182900 0.544000 0.784000 -0.280000 --0.550000 -0.150600 -0.142400 0.376000 0.896000 -0.200000 --0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000 --0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000 --0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000 --0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000 --0.450000 -0.100400 -0.065100 -0.512000 0.824000 -0.200000 --0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000 --0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000 --0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000 --0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000 --0.478800 -0.552300 -0.060900 0.704000 -0.592000 0.376000 --0.450000 -0.549200 -0.121900 -0.080000 -0.800000 0.584000 --0.452200 -0.552300 -0.121900 0.864000 0.184000 0.464000 --0.450000 -0.552300 -0.127200 0.616000 -0.144000 0.768000 --0.450000 -0.549200 -0.121900 -0.080000 -0.800000 0.584000 --0.440600 -0.552300 -0.121900 -0.264000 -0.768000 0.568000 --0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000 --0.400000 -0.552300 -0.100200 0.624000 -0.512000 0.584000 --0.400000 -0.527700 -0.060900 0.080000 -0.768000 0.624000 --0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000 --0.380200 -0.502100 -0.060900 0.648000 -0.616000 0.432000 --0.350000 -0.503000 -0.121900 0.232000 -0.880000 0.400000 --0.350000 -0.502100 -0.119400 0.240000 -0.864000 0.424000 --0.380200 -0.502100 -0.060900 0.648000 -0.616000 0.432000 --0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000 --0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000 --0.450000 -0.602500 -0.084100 -0.232000 -0.736000 0.624000 --0.450000 -0.602500 -0.084100 -0.232000 -0.736000 0.624000 --0.450000 -0.558900 -0.121900 0.808000 0.320000 0.488000 --0.410500 -0.602500 -0.121900 0.456000 -0.632000 0.616000 --0.450000 -0.552300 -0.127200 0.616000 -0.144000 0.768000 --0.400000 -0.602500 -0.131300 0.560000 -0.576000 0.584000 --0.440600 -0.552300 -0.121900 -0.264000 -0.768000 0.568000 --0.400000 -0.588000 -0.121900 0.672000 -0.144000 0.720000 --0.400000 -0.552300 -0.100200 0.624000 -0.512000 0.584000 --0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000 --0.400000 -0.588000 -0.121900 0.672000 -0.144000 0.720000 --0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000 --0.400000 -0.602500 -0.131300 0.560000 -0.576000 0.584000 --0.386500 -0.602500 -0.182900 0.376000 -0.032000 0.920000 --0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000 --0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000 --0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000 --0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000 --0.350000 -0.535600 -0.243900 0.360000 -0.840000 0.384000 --0.350000 -0.518400 -0.182900 -0.088000 -0.928000 0.360000 --0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000 --0.350000 -0.503000 -0.121900 0.232000 -0.880000 0.400000 --0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000 --0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000 --0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000 --0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000 --0.361800 0.100400 -0.060900 -0.920000 0.112000 -0.352000 --0.350000 0.100400 -0.076700 -0.736000 0.256000 -0.616000 --0.358600 0.050200 -0.060900 -0.920000 0.168000 -0.328000 --0.350000 0.050200 -0.078800 -0.832000 0.272000 -0.472000 --0.350000 0.100400 -0.076700 -0.736000 0.256000 -0.616000 --0.335400 0.050200 -0.121900 -0.752000 0.472000 -0.456000 --0.317300 0.100400 -0.121900 -0.712000 0.264000 -0.640000 --0.317300 0.100400 -0.121900 -0.712000 0.264000 -0.640000 --0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000 --0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000 --0.400000 -0.037800 -0.060900 -0.728000 0.664000 0.152000 --0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000 --0.400000 -0.050200 -0.118700 -0.832000 0.528000 -0.160000 --0.399400 -0.050200 -0.121900 -0.760000 0.504000 -0.392000 --0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000 --0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000 --0.350000 0.301200 -0.064600 -0.624000 0.064000 -0.768000 --0.350000 0.301200 -0.064600 -0.624000 0.064000 -0.768000 --0.300000 0.301200 -0.089300 -0.344000 0.056000 -0.936000 --0.350000 0.251000 -0.067500 -0.624000 0.048000 -0.768000 --0.300000 0.251000 -0.090000 -0.368000 0.088000 -0.920000 --0.350000 0.200800 -0.076700 -0.368000 -0.104000 -0.920000 --0.300000 0.200800 -0.077300 -0.504000 0.240000 -0.824000 --0.350000 0.153200 -0.060900 -0.608000 -0.784000 0.016000 --0.300000 0.150600 -0.105900 -0.768000 0.536000 -0.320000 --0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000 --0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000 --0.300000 0.401700 -0.066400 -0.448000 0.440000 -0.768000 --0.300000 0.401700 -0.066400 -0.448000 0.440000 -0.768000 --0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000 --0.300000 0.351500 -0.083400 -0.432000 0.176000 -0.880000 --0.250000 0.351500 -0.107800 -0.464000 0.176000 -0.864000 --0.300000 0.301200 -0.089300 -0.344000 0.056000 -0.936000 --0.250000 0.301200 -0.116200 -0.672000 0.120000 -0.720000 --0.300000 0.251000 -0.090000 -0.368000 0.088000 -0.920000 --0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000 --0.254200 0.251000 -0.121900 -0.384000 0.088000 -0.912000 --0.300000 0.251000 -0.090000 -0.368000 0.088000 -0.920000 --0.263400 0.200800 -0.121900 -0.480000 0.216000 -0.840000 --0.300000 0.200800 -0.077300 -0.504000 0.240000 -0.824000 --0.295300 0.150600 -0.121900 -0.728000 0.520000 -0.432000 --0.300000 0.150600 -0.105900 -0.768000 0.536000 -0.320000 --0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000 --0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000 --0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000 --0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000 --0.208300 0.401700 -0.121900 -0.432000 0.432000 -0.784000 --0.250000 0.351500 -0.107800 -0.464000 0.176000 -0.864000 --0.233300 0.351500 -0.121900 -0.616000 0.184000 -0.752000 --0.250000 0.301200 -0.116200 -0.672000 0.120000 -0.720000 --0.245300 0.301200 -0.121900 -0.680000 0.120000 -0.720000 --0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000 --0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000 --0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000 --0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000 --0.100000 -0.100400 -0.064700 0.496000 0.416000 0.752000 --0.100000 -0.105500 -0.060900 0.480000 0.464000 0.736000 --0.050000 -0.100400 -0.073900 0.136000 0.480000 0.864000 --0.050000 -0.119400 -0.060900 0.168000 0.528000 0.824000 -0.000000 -0.100400 -0.085100 0.096000 0.456000 0.880000 -0.000000 -0.136800 -0.060900 0.088000 0.520000 0.840000 -0.050000 -0.100400 -0.083400 0.000000 0.440000 0.888000 -0.050000 -0.140200 -0.060900 0.152000 0.504000 0.848000 -0.100000 -0.100400 -0.084200 0.032000 0.360000 0.928000 -0.076800 -0.150600 -0.060900 0.208000 0.432000 0.872000 -0.100000 -0.150600 -0.068400 0.184000 0.416000 0.888000 -0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000 -0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000 --0.133200 -0.451900 -0.060900 0.584000 -0.656000 0.464000 --0.133200 -0.451900 -0.060900 0.584000 -0.656000 0.464000 --0.100000 -0.415900 -0.060900 0.680000 -0.544000 0.480000 --0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000 --0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000 --0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000 --0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000 --0.146100 -0.502100 -0.121900 0.616000 -0.744000 0.232000 --0.150000 -0.505100 -0.121900 0.584000 -0.768000 0.240000 --0.141200 -0.502100 -0.182900 0.696000 -0.688000 0.184000 --0.150000 -0.510100 -0.182900 0.616000 -0.760000 0.168000 --0.125700 -0.502100 -0.243900 0.664000 -0.408000 0.624000 --0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000 --0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000 --0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000 --0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000 --0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000 --0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000 --0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000 --0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000 --0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000 --0.089100 0.100400 -0.121900 0.816000 -0.232000 0.520000 --0.100000 0.054100 -0.121900 0.816000 -0.176000 0.544000 --0.100000 0.054100 -0.121900 0.816000 -0.176000 0.544000 --0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000 --0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000 --0.087700 -0.401700 -0.060900 0.608000 -0.600000 0.504000 --0.050000 -0.398200 -0.121900 0.592000 -0.704000 0.368000 --0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000 --0.050000 -0.389600 -0.182900 0.656000 -0.736000 -0.128000 --0.061900 -0.401700 -0.182900 0.744000 -0.648000 -0.120000 --0.050000 -0.380500 -0.243900 0.664000 -0.736000 -0.104000 --0.071000 -0.401700 -0.243900 0.856000 -0.496000 -0.072000 --0.050000 -0.374600 -0.304800 0.584000 -0.672000 -0.448000 --0.073900 -0.401700 -0.304800 0.784000 -0.304000 -0.528000 --0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000 --0.100000 -0.401700 -0.330800 0.576000 -0.152000 -0.792000 --0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000 --0.150000 -0.401700 -0.364300 0.552000 0.080000 -0.824000 --0.150000 -0.351500 -0.350300 0.512000 0.192000 -0.832000 --0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000 --0.150000 -0.301200 -0.318500 -0.024000 0.504000 -0.856000 --0.100000 -0.301200 -0.349000 -0.368000 0.264000 -0.888000 --0.150000 -0.286300 -0.304800 -0.184000 0.480000 -0.848000 --0.100000 -0.251000 -0.333700 -0.512000 0.248000 -0.816000 --0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000 --0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000 --0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000 --0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000 --0.150000 -0.200800 -0.284500 0.024000 -0.216000 -0.968000 --0.150000 -0.251000 -0.289400 -0.264000 0.272000 -0.920000 --0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000 --0.195100 -0.251000 -0.304800 0.376000 0.112000 -0.912000 --0.150000 -0.251000 -0.289400 -0.264000 0.272000 -0.920000 --0.150000 -0.286300 -0.304800 -0.184000 0.480000 -0.848000 --0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000 --0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000 -0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000 -0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000 --0.005200 0.401700 -0.060900 0.264000 0.168000 0.944000 -0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000 -0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000 -0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000 -0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000 -0.000000 0.451900 -0.081100 0.280000 0.456000 0.832000 -0.050000 0.485400 -0.121900 -0.032000 0.904000 -0.408000 -0.050000 0.451900 -0.077800 0.016000 0.408000 0.912000 -0.100000 0.494400 -0.121900 -0.184000 0.952000 -0.216000 -0.100000 0.451900 -0.066700 -0.192000 0.072000 0.976000 -0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000 -0.121900 0.451900 -0.060900 -0.112000 0.472000 0.872000 -0.150000 0.502100 -0.119700 0.016000 0.656000 0.752000 -0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000 -0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000 -0.150000 0.503100 -0.121900 0.272000 0.456000 -0.840000 -0.150000 0.503100 -0.121900 0.272000 0.456000 -0.840000 -0.150000 0.502100 -0.119700 0.016000 0.656000 0.752000 -0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000 -0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000 -0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000 -0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000 -0.151400 0.401700 -0.060900 -0.480000 -0.416000 0.760000 -0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000 -0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000 -0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000 -0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000 -0.161400 -0.251000 -0.121900 0.152000 -0.792000 0.576000 -0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000 -0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000 -0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000 -0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000 -0.203100 0.451900 -0.060900 0.264000 0.672000 0.680000 -0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000 -0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000 -0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000 -0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000 -0.201200 0.351500 -0.060900 -0.488000 -0.576000 0.648000 -0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000 -0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000 -0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000 -0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000 -0.222300 -0.050200 -0.121900 0.200000 0.432000 0.872000 -0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000 -0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000 -0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000 -0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000 -0.300000 0.458100 -0.121900 0.224000 0.952000 -0.176000 -0.323400 0.451900 -0.121900 0.248000 0.944000 -0.200000 -0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000 -0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000 -0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000 -0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000 -0.400000 0.200800 -0.077800 -0.600000 -0.432000 0.664000 -0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000 -0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000 -0.400000 0.072600 -0.121900 -0.632000 0.256000 0.720000 -0.400000 0.072600 -0.121900 -0.632000 0.256000 0.720000 -0.400000 0.050200 -0.114800 -0.552000 0.256000 0.784000 -0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000 -0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000 -0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000 -0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000 -0.400000 -0.100400 -0.080400 -0.024000 0.176000 0.976000 -0.450000 -0.150600 -0.064700 -0.192000 0.128000 0.968000 -0.400000 -0.150600 -0.068400 -0.344000 -0.312000 0.880000 -0.450000 -0.200800 -0.072200 -0.256000 -0.536000 0.800000 -0.400000 -0.200800 -0.119100 -0.200000 -0.688000 0.688000 -0.450000 -0.227100 -0.121900 -0.296000 -0.712000 0.624000 -0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000 -0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000 -0.400000 -0.249800 -0.182900 0.472000 -0.752000 0.448000 -0.415700 -0.251000 -0.182900 -0.088000 -0.872000 0.480000 -0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000 -0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000 -0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000 -0.459300 -0.251000 -0.243900 -0.280000 -0.864000 -0.400000 -0.459300 -0.251000 -0.243900 -0.280000 -0.864000 -0.400000 -0.450000 0.163500 -0.060900 -0.600000 -0.504000 0.608000 -0.450000 0.163500 -0.060900 -0.600000 -0.504000 0.608000 -0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000 -0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000 -0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000 -0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000 -0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000 -0.500000 0.067400 -0.060900 -0.592000 0.120000 0.792000 -0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000 -0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000 -0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000 -0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000 -0.530700 -0.150600 -0.060900 0.208000 0.504000 0.832000 -0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000 -0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000 -0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000 -0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000 -0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000 -0.550000 -0.351500 -0.118900 -0.368000 0.056000 0.920000 -0.558500 -0.351500 -0.121900 0.208000 -0.648000 0.728000 -0.550000 -0.353000 -0.121900 -0.032000 -0.832000 0.536000 -0.550000 -0.351500 -0.118900 -0.368000 0.056000 0.920000 -0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000 -0.550000 -0.353000 -0.121900 -0.032000 -0.832000 0.536000 -0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000 -0.550000 -0.389500 -0.182900 -0.304000 -0.784000 0.528000 -0.500000 -0.372900 -0.182900 -0.184000 -0.776000 0.592000 -0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000 -0.500000 -0.400600 -0.243900 0.024000 -0.920000 0.384000 -0.503900 -0.401700 -0.243900 -0.232000 -0.936000 0.256000 -0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000 -0.502600 -0.401700 -0.304800 -0.320000 -0.840000 -0.416000 -0.500000 -0.351500 -0.354900 -0.384000 -0.472000 -0.784000 -0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000 -0.550000 -0.351500 -0.364500 0.120000 -0.104000 -0.984000 -0.500000 -0.351500 -0.354900 -0.384000 -0.472000 -0.784000 -0.550000 -0.316300 -0.304800 -0.472000 0.688000 -0.536000 -0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000 -0.550000 -0.301200 -0.279200 -0.712000 0.120000 -0.680000 -0.500000 -0.310500 -0.243900 -0.600000 0.776000 -0.152000 -0.513800 -0.301200 -0.243900 -0.728000 0.592000 -0.328000 -0.500000 -0.316400 -0.182900 -0.704000 0.472000 0.520000 -0.511800 -0.301200 -0.182900 -0.912000 0.352000 0.176000 -0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000 -0.550000 -0.301200 -0.123600 -0.624000 -0.440000 0.632000 -0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000 -0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000 -0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000 -0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000 -0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000 -0.562800 -0.251000 -0.060900 -0.368000 -0.568000 0.720000 -0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000 -0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000 -0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000 -0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000 -0.600000 -0.301200 -0.098800 -0.176000 -0.576000 0.792000 -0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000 -0.650000 -0.301200 -0.100200 0.264000 -0.568000 0.768000 -0.650000 -0.327200 -0.121900 -0.280000 -0.536000 0.792000 -0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000 -0.679500 -0.351500 -0.121900 -0.424000 -0.464000 0.768000 -0.700000 -0.351500 -0.108700 -0.352000 -0.464000 0.808000 -0.700000 -0.372000 -0.121900 -0.360000 -0.440000 0.816000 -0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000 -0.737900 -0.401700 -0.121900 -0.352000 -0.448000 0.816000 -0.750000 -0.401700 -0.115900 -0.264000 -0.344000 0.896000 -0.750000 -0.411100 -0.121900 -0.304000 -0.456000 0.824000 -0.800000 -0.401700 -0.115500 0.392000 0.184000 0.896000 -0.800000 -0.418600 -0.121900 0.304000 -0.320000 0.888000 -0.750000 -0.411100 -0.121900 -0.304000 -0.456000 0.824000 -0.800000 -0.451900 -0.135400 0.168000 -0.384000 0.904000 -0.750000 -0.451900 -0.153800 -0.384000 -0.528000 0.752000 -0.800000 -0.502100 -0.171200 -0.360000 -0.648000 0.664000 -0.750000 -0.479900 -0.182900 -0.456000 -0.632000 0.616000 -0.783200 -0.502100 -0.182900 -0.448000 -0.720000 0.512000 -0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000 -0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000 -0.750000 -0.505200 -0.243900 -0.480000 -0.856000 0.152000 -0.800000 -0.519900 -0.243900 -0.400000 -0.904000 -0.112000 -0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000 -0.800000 -0.502100 -0.293400 -0.120000 -0.840000 -0.520000 -0.750000 -0.487000 -0.304800 -0.104000 -0.744000 -0.656000 -0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000 -0.750000 -0.451900 -0.330900 0.152000 -0.080000 -0.984000 -0.800000 -0.451900 -0.330300 0.328000 0.200000 -0.920000 -0.750000 -0.401700 -0.321600 0.336000 0.000000 -0.936000 -0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000 -0.779200 -0.401700 -0.304800 0.400000 0.336000 -0.848000 -0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000 -0.754800 -0.351500 -0.304800 0.424000 0.136000 -0.888000 -0.800000 -0.351500 -0.277300 0.568000 0.408000 -0.704000 -0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000 -0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000 -0.750000 -0.301200 -0.299800 0.512000 0.144000 -0.840000 -0.780500 -0.301200 -0.243900 0.848000 0.504000 -0.128000 -0.750000 -0.251000 -0.256700 0.824000 0.520000 -0.208000 -0.752500 -0.251000 -0.243900 0.840000 0.528000 -0.096000 -0.750000 -0.247000 -0.243900 0.832000 0.536000 -0.096000 -0.750000 -0.251000 -0.218200 0.840000 0.520000 0.096000 -0.717800 -0.200800 -0.243900 0.824000 0.560000 -0.064000 -0.746300 -0.251000 -0.182900 0.848000 0.496000 0.152000 -0.713600 -0.200800 -0.182900 0.824000 0.512000 0.224000 -0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000 -0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000 -0.700000 -0.217500 -0.121900 0.616000 0.552000 0.544000 -0.677400 -0.200800 -0.121900 0.528000 0.512000 0.672000 -0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000 -0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000 -0.700000 -0.178500 -0.182900 0.792000 0.568000 0.200000 -0.675300 -0.150600 -0.182900 0.768000 0.552000 0.296000 -0.700000 -0.175300 -0.243900 0.752000 0.600000 -0.240000 -0.674200 -0.150600 -0.243900 0.696000 0.600000 -0.384000 -0.674200 -0.150600 -0.243900 0.696000 0.600000 -0.384000 -0.600000 -0.272000 -0.060900 -0.264000 -0.632000 0.720000 -0.600000 -0.272000 -0.060900 -0.264000 -0.632000 0.720000 -0.600000 -0.301200 -0.098800 -0.176000 -0.576000 0.792000 -0.650000 -0.258100 -0.060900 0.392000 -0.456000 0.792000 -0.650000 -0.301200 -0.100200 0.264000 -0.568000 0.768000 -0.657600 -0.251000 -0.060900 0.456000 -0.072000 0.880000 -0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000 -0.700000 -0.251000 -0.086700 0.608000 0.464000 0.632000 -0.700000 -0.251000 -0.086700 0.608000 0.464000 0.632000 -0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000 -0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000 -0.650000 0.301200 -0.100800 0.528000 0.504000 -0.672000 -0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000 -0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000 -0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000 -0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000 -0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000 -0.700000 0.229200 -0.121900 0.528000 0.656000 -0.528000 -0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000 -0.700000 0.200800 -0.171600 0.480000 0.608000 -0.616000 -0.650000 0.227800 -0.182900 0.368000 0.576000 -0.720000 -0.687200 0.200800 -0.182900 0.432000 0.544000 -0.712000 -0.700000 0.200800 -0.171600 0.480000 0.608000 -0.616000 -0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000 -0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000 -0.650000 -0.200800 -0.092600 0.656000 0.384000 0.640000 -0.650000 -0.200800 -0.092600 0.656000 0.384000 0.640000 -0.650000 -0.150600 -0.116200 0.720000 0.480000 0.488000 -0.677400 -0.200800 -0.121900 0.528000 0.512000 0.672000 -0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000 -0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000 -0.734900 0.200800 -0.121900 0.552000 0.608000 -0.552000 -0.734900 0.200800 -0.121900 0.552000 0.608000 -0.552000 -0.750000 0.186400 -0.121900 0.504000 0.648000 -0.560000 -0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000 -0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000 -0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000 -0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000 -0.700000 -0.351500 -0.108700 -0.352000 -0.464000 0.808000 -0.750000 -0.301200 -0.116500 0.704000 0.400000 0.568000 -0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000 -0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000 --0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000 --0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000 --0.950000 -0.152700 -0.182900 -0.600000 -0.784000 0.144000 --0.952800 -0.150600 -0.182900 -0.568000 -0.808000 0.136000 --0.950000 -0.161800 -0.243900 -0.584000 -0.784000 0.176000 --0.966700 -0.150600 -0.243900 -0.472000 -0.864000 0.152000 --0.950000 -0.180000 -0.304800 -0.552000 -0.600000 -0.568000 --0.989000 -0.150600 -0.304800 -0.440000 -0.624000 -0.640000 --0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000 --0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000 --0.900000 -0.492700 -0.121900 -0.520000 0.712000 0.448000 --0.900000 -0.492700 -0.121900 -0.520000 0.712000 0.448000 --0.900000 -0.462200 -0.182900 0.320000 0.888000 0.304000 --0.878700 -0.502100 -0.121900 0.408000 0.368000 0.832000 --0.850000 -0.490700 -0.182900 0.328000 0.896000 0.288000 --0.850000 -0.502100 -0.144600 0.400000 0.776000 0.480000 --0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000 --0.850000 -0.519700 -0.121900 0.200000 0.624000 0.752000 --0.800000 -0.513200 -0.182900 -0.080000 0.880000 0.456000 --0.800000 -0.539500 -0.121900 0.176000 0.680000 0.704000 --0.750000 -0.503000 -0.182900 -0.200000 0.848000 0.472000 --0.750000 -0.549900 -0.121900 0.080000 0.648000 0.752000 --0.749300 -0.502100 -0.182900 -0.920000 -0.232000 0.288000 --0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000 --0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000 --0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000 --0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000 --0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000 --0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000 --0.892400 -0.552300 -0.182900 -0.760000 -0.624000 0.176000 --0.850000 -0.569100 -0.121900 -0.488000 -0.776000 0.384000 --0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000 --0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000 --0.832500 -0.602500 -0.182900 -0.576000 -0.768000 0.272000 --0.800000 -0.602500 -0.136500 -0.416000 -0.648000 0.632000 --0.800000 -0.620600 -0.182900 -0.312000 -0.880000 0.336000 --0.764000 -0.602500 -0.121900 -0.176000 -0.816000 0.544000 --0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000 --0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000 --0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000 --0.802000 -0.351500 -0.121900 -0.840000 -0.520000 0.096000 --0.802000 -0.351500 -0.121900 -0.840000 -0.520000 0.096000 --0.832400 -0.301200 -0.121900 -0.840000 -0.528000 0.048000 --0.802200 -0.351500 -0.182900 -0.872000 -0.480000 0.016000 --0.831100 -0.301200 -0.182900 -0.848000 -0.520000 0.016000 --0.807300 -0.351500 -0.243900 -0.864000 -0.472000 0.152000 --0.834700 -0.301200 -0.243900 -0.840000 -0.504000 0.184000 --0.834700 -0.301200 -0.243900 -0.840000 -0.504000 0.184000 --0.779100 0.150600 -0.182900 0.400000 0.664000 -0.616000 --0.779100 0.150600 -0.182900 0.400000 0.664000 -0.616000 --0.750000 0.132600 -0.182900 0.408000 0.656000 -0.624000 --0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000 --0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000 --0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000 --0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000 --0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000 --0.771000 -0.401700 -0.121900 -0.872000 -0.456000 0.128000 --0.757600 -0.451900 -0.182900 -0.952000 -0.232000 0.184000 --0.775200 -0.401700 -0.182900 -0.904000 -0.400000 0.120000 --0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000 --0.781800 -0.401700 -0.243900 -0.912000 -0.336000 0.208000 --0.787800 -0.451900 -0.304800 -0.984000 0.136000 -0.040000 --0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000 --0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000 --0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000 --0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000 --0.764000 -0.602500 -0.121900 -0.176000 -0.816000 0.544000 --0.800000 -0.602500 -0.136500 -0.416000 -0.648000 0.632000 --0.800000 -0.602500 -0.136500 -0.416000 -0.648000 0.632000 --0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000 --0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000 --0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000 --0.715000 0.150600 -0.121900 0.512000 0.744000 -0.408000 --0.715000 0.150600 -0.121900 0.512000 0.744000 -0.408000 --0.700900 0.100400 -0.182900 0.440000 0.608000 -0.648000 --0.700900 0.100400 -0.182900 0.440000 0.608000 -0.648000 --0.700000 0.099700 -0.182900 0.504000 0.560000 -0.640000 --0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000 --0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000 --0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000 --0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000 --0.748200 -0.451900 -0.121900 -0.880000 -0.440000 0.160000 --0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000 --0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000 --0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000 --0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000 --0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000 --0.657700 0.100400 -0.121900 0.728000 0.576000 -0.360000 --0.657700 0.100400 -0.121900 0.728000 0.576000 -0.360000 --0.652800 0.050200 -0.182900 0.592000 0.536000 -0.592000 --0.652800 0.050200 -0.182900 0.592000 0.536000 -0.592000 --0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000 --0.650000 0.050200 -0.178200 0.664000 0.544000 -0.504000 --0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000 --0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000 --0.601900 0.000000 -0.121900 0.848000 0.208000 -0.472000 --0.601900 0.000000 -0.121900 0.848000 0.208000 -0.472000 --0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000 --0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000 --0.650000 0.050200 -0.178200 0.664000 0.544000 -0.504000 --0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000 --0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000 --0.491700 -0.150600 -0.182900 -0.448000 0.848000 -0.264000 --0.491700 -0.150600 -0.182900 -0.448000 0.848000 -0.264000 --0.500000 -0.150600 -0.154000 -0.424000 0.880000 -0.160000 --0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000 --0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000 --0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000 --0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000 --0.350000 0.000000 -0.171400 -0.688000 0.416000 -0.584000 --0.350000 0.031200 -0.121900 -0.744000 0.552000 -0.352000 --0.350000 0.031200 -0.121900 -0.744000 0.552000 -0.352000 --0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000 --0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000 --0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000 --0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000 --0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000 --0.350000 -0.630200 -0.243900 -0.144000 0.776000 0.600000 --0.300000 -0.607200 -0.243900 -0.248000 0.672000 0.688000 --0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000 --0.286800 -0.602500 -0.243900 -0.320000 0.232000 0.912000 --0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000 --0.250000 -0.602500 -0.226600 0.288000 -0.512000 0.800000 --0.250000 -0.652700 -0.232900 0.624000 0.072000 0.768000 --0.233200 -0.602500 -0.243900 0.608000 -0.320000 0.720000 --0.241600 -0.652700 -0.243900 0.680000 -0.216000 0.688000 --0.250000 -0.652700 -0.232900 0.624000 0.072000 0.768000 --0.250000 -0.679700 -0.243900 0.728000 -0.208000 0.640000 --0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000 --0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000 --0.293800 -0.703000 -0.182900 0.608000 -0.624000 0.488000 --0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000 --0.300000 -0.703000 -0.173800 0.616000 -0.544000 0.552000 --0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000 --0.350000 -0.703000 -0.180700 -0.616000 -0.504000 0.592000 --0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000 --0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000 --0.260200 -0.552300 -0.121900 -0.560000 -0.752000 0.336000 --0.260200 -0.552300 -0.121900 -0.560000 -0.752000 0.336000 --0.300000 -0.516400 -0.121900 -0.256000 -0.872000 0.400000 --0.285200 -0.552300 -0.182900 -0.616000 -0.680000 0.384000 --0.300000 -0.538300 -0.182900 -0.584000 -0.696000 0.408000 --0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000 --0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000 --0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000 --0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000 --0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000 --0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000 --0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000 --0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000 --0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000 --0.250000 0.251000 -0.124000 -0.376000 0.088000 -0.920000 --0.200000 0.200800 -0.161600 -0.480000 0.384000 -0.776000 --0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000 --0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000 --0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000 --0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000 --0.235800 -0.552300 -0.121900 0.448000 -0.816000 0.336000 --0.200000 -0.549300 -0.182900 0.504000 -0.784000 0.344000 --0.204600 -0.552300 -0.182900 0.504000 -0.776000 0.360000 --0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000 --0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000 --0.200000 0.401700 -0.127400 -0.400000 0.440000 -0.800000 --0.200000 0.401700 -0.127400 -0.400000 0.440000 -0.800000 --0.150000 0.401700 -0.148200 -0.240000 0.400000 -0.872000 --0.200000 0.351500 -0.146000 -0.416000 0.224000 -0.872000 --0.150000 0.351500 -0.156300 -0.024000 0.152000 -0.984000 --0.200000 0.301200 -0.154100 -0.392000 0.112000 -0.904000 --0.150000 0.301200 -0.169700 -0.080000 0.248000 -0.960000 --0.150000 0.351500 -0.156300 -0.024000 0.152000 -0.984000 --0.100000 0.301200 -0.172200 -0.168000 0.416000 -0.888000 --0.100000 0.351500 -0.158200 0.008000 0.264000 -0.960000 --0.150000 0.351500 -0.156300 -0.024000 0.152000 -0.984000 --0.100000 0.401700 -0.143600 0.056000 0.120000 -0.984000 --0.150000 0.401700 -0.148200 -0.240000 0.400000 -0.872000 --0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000 --0.150000 0.451900 -0.123200 -0.344000 0.512000 -0.784000 --0.150000 0.451900 -0.123200 -0.344000 0.512000 -0.784000 --0.100000 0.044900 -0.121900 0.816000 0.112000 0.552000 --0.100000 0.044900 -0.121900 0.816000 0.112000 0.552000 --0.100700 0.050200 -0.121900 0.856000 0.048000 0.504000 --0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000 --0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000 --0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000 --0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000 --0.050000 0.451900 -0.137500 0.040000 0.112000 -0.992000 --0.100000 0.401700 -0.143600 0.056000 0.120000 -0.984000 --0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000 --0.100000 0.351500 -0.158200 0.008000 0.264000 -0.960000 --0.050000 0.351500 -0.155800 -0.048000 0.328000 -0.936000 --0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000 -0.000000 0.351500 -0.164900 -0.080000 0.368000 -0.920000 -0.000000 0.401700 -0.144600 -0.056000 0.192000 -0.976000 -0.050000 0.351500 -0.166400 0.000000 0.392000 -0.912000 -0.050000 0.401700 -0.150400 -0.088000 0.216000 -0.968000 -0.100000 0.351500 -0.169000 0.056000 0.272000 -0.952000 -0.100000 0.401700 -0.152800 -0.048000 0.168000 -0.984000 -0.150000 0.351500 -0.160600 0.144000 0.128000 -0.976000 -0.150000 0.401700 -0.154900 -0.096000 0.088000 -0.984000 -0.200000 0.351500 -0.169700 -0.320000 0.304000 -0.888000 -0.200000 0.401700 -0.169400 -0.056000 0.168000 -0.976000 -0.150000 0.401700 -0.154900 -0.096000 0.088000 -0.984000 -0.200000 0.451900 -0.151000 0.136000 0.400000 -0.896000 -0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000 -0.200000 0.484800 -0.121900 0.312000 0.872000 0.360000 -0.150000 0.502100 -0.123200 0.032000 0.424000 -0.896000 -0.153400 0.502100 -0.121900 0.448000 0.824000 -0.336000 -0.153400 0.502100 -0.121900 0.448000 0.824000 -0.336000 --0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000 --0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000 --0.050000 0.000000 -0.158900 0.584000 0.336000 0.728000 --0.050000 -0.024600 -0.121900 0.296000 0.656000 0.688000 -0.000000 0.000000 -0.165000 0.096000 0.640000 0.752000 -0.000000 -0.035500 -0.121900 0.072000 0.496000 0.856000 -0.050000 0.000000 -0.179700 0.216000 0.504000 0.832000 -0.050000 -0.038600 -0.121900 0.000000 0.528000 0.840000 -0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000 -0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000 -0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000 --0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000 --0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000 --0.098000 -0.451900 -0.121900 0.712000 -0.680000 0.120000 --0.061900 -0.401700 -0.182900 0.744000 -0.648000 -0.120000 --0.098100 -0.451900 -0.182900 0.736000 -0.672000 0.032000 --0.071000 -0.401700 -0.243900 0.856000 -0.496000 -0.072000 --0.094700 -0.451900 -0.243900 0.784000 -0.568000 0.216000 --0.073900 -0.401700 -0.304800 0.784000 -0.304000 -0.528000 --0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000 --0.100000 -0.401700 -0.330800 0.576000 -0.152000 -0.792000 --0.100000 -0.451900 -0.336100 0.496000 -0.048000 -0.856000 --0.150000 -0.401700 -0.364300 0.552000 0.080000 -0.824000 --0.145700 -0.451900 -0.365800 0.464000 0.040000 -0.880000 --0.150000 -0.417500 -0.365800 0.544000 0.056000 -0.832000 --0.150000 -0.451900 -0.368100 0.456000 -0.056000 -0.880000 --0.145700 -0.451900 -0.365800 0.464000 0.040000 -0.880000 --0.150000 -0.502100 -0.367300 0.088000 -0.320000 -0.936000 --0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000 --0.150000 -0.505900 -0.365800 0.272000 -0.320000 -0.904000 --0.150000 -0.505900 -0.365800 0.272000 -0.320000 -0.904000 --0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000 --0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000 --0.050000 0.451900 -0.137500 0.040000 0.112000 -0.992000 -0.000000 0.401700 -0.144600 -0.056000 0.192000 -0.976000 -0.000000 0.451900 -0.135500 0.000000 0.160000 -0.984000 -0.050000 0.401700 -0.150400 -0.088000 0.216000 -0.968000 -0.050000 0.451900 -0.139600 -0.080000 0.232000 -0.960000 -0.100000 0.401700 -0.152800 -0.048000 0.168000 -0.984000 -0.100000 0.451900 -0.146900 -0.088000 0.224000 -0.968000 -0.150000 0.401700 -0.154900 -0.096000 0.088000 -0.984000 -0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000 -0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000 --0.012800 0.200800 -0.121900 0.688000 -0.616000 0.376000 --0.012800 0.200800 -0.121900 0.688000 -0.616000 0.376000 -0.000000 0.211400 -0.121900 0.496000 -0.712000 0.480000 -0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000 -0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000 --0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000 --0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000 --0.033200 0.150600 -0.182900 0.832000 -0.552000 -0.016000 --0.050000 0.116900 -0.182900 0.944000 -0.304000 0.048000 --0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000 --0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000 --0.050000 0.047900 -0.182900 0.488000 0.480000 0.720000 --0.050000 0.047900 -0.182900 0.488000 0.480000 0.720000 --0.050000 0.000000 -0.158900 0.584000 0.336000 0.728000 -0.000000 0.039200 -0.182900 0.256000 0.544000 0.792000 -0.000000 0.000000 -0.165000 0.096000 0.640000 0.752000 -0.050000 0.005700 -0.182900 0.312000 0.584000 0.744000 -0.050000 0.000000 -0.179700 0.216000 0.504000 0.832000 -0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000 -0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000 -0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000 -0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000 -0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000 -0.008500 0.200800 -0.182900 0.416000 -0.688000 -0.584000 -0.000000 0.195100 -0.182900 0.504000 -0.656000 -0.544000 -0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000 -0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000 -0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000 -0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000 -0.003100 -0.351500 -0.182900 0.504000 -0.840000 -0.160000 -0.050000 -0.321600 -0.121900 0.584000 -0.712000 0.376000 -0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000 -0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000 -0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000 -0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000 -0.150000 0.284700 -0.182900 0.352000 0.368000 -0.856000 -0.194700 0.251000 -0.182900 0.496000 -0.104000 -0.856000 -0.150000 0.251000 -0.192500 0.112000 0.024000 -0.992000 -0.150000 0.224100 -0.182900 0.056000 -0.672000 -0.728000 -0.194700 0.251000 -0.182900 0.496000 -0.104000 -0.856000 -0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000 -0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000 -0.211500 -0.301200 -0.182900 -0.568000 -0.672000 0.464000 -0.211500 -0.301200 -0.182900 -0.568000 -0.672000 0.464000 -0.250000 -0.301200 -0.149400 -0.376000 -0.584000 0.712000 -0.250000 -0.319600 -0.182900 -0.280000 -0.832000 0.472000 -0.300000 -0.301200 -0.149800 -0.024000 -0.480000 0.872000 -0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000 -0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000 -0.331500 -0.351500 -0.182900 -0.432000 -0.576000 0.688000 -0.350000 -0.351500 -0.171100 -0.312000 -0.512000 0.792000 -0.350000 -0.366900 -0.182900 -0.368000 -0.552000 0.736000 -0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000 -0.400000 -0.370500 -0.182900 -0.008000 -0.616000 0.776000 -0.450000 -0.351500 -0.174300 0.040000 0.080000 0.992000 -0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000 -0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000 -0.500000 -0.372900 -0.182900 -0.184000 -0.776000 0.592000 -0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000 -0.500000 -0.400600 -0.243900 0.024000 -0.920000 0.384000 -0.450000 -0.401700 -0.212100 0.240000 -0.816000 0.520000 -0.496800 -0.401700 -0.243900 0.256000 -0.880000 0.376000 -0.450000 -0.418500 -0.243900 -0.152000 -0.896000 0.400000 -0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000 -0.450000 -0.411100 -0.304800 -0.144000 -0.808000 -0.560000 -0.450000 -0.401700 -0.316200 -0.184000 -0.360000 -0.904000 -0.428900 -0.401700 -0.304800 -0.392000 -0.464000 -0.784000 -0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000 -0.400000 -0.401700 -0.257800 0.112000 -0.952000 -0.280000 -0.450000 -0.351500 -0.290700 -0.176000 0.632000 -0.744000 -0.400000 -0.388800 -0.304800 0.392000 -0.800000 -0.448000 -0.437100 -0.351500 -0.304800 0.688000 0.472000 -0.536000 -0.400000 -0.351500 -0.338800 0.360000 -0.568000 -0.728000 -0.401200 -0.301200 -0.304800 0.744000 0.488000 -0.440000 -0.400000 -0.301200 -0.307300 0.704000 0.496000 -0.496000 -0.400000 -0.299100 -0.304800 0.736000 0.472000 -0.472000 -0.401200 -0.301200 -0.304800 0.744000 0.488000 -0.440000 -0.400000 -0.252300 -0.243900 0.744000 0.488000 -0.440000 -0.429200 -0.301200 -0.243900 0.816000 0.544000 -0.176000 -0.400000 -0.252800 -0.182900 0.760000 0.464000 0.440000 -0.427100 -0.301200 -0.182900 0.776000 0.464000 0.416000 -0.400000 -0.301200 -0.149800 0.528000 0.376000 0.752000 -0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000 -0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000 -0.450000 -0.351500 -0.174300 0.040000 0.080000 0.992000 -0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000 -0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000 -0.500000 -0.316400 -0.182900 -0.704000 0.472000 0.520000 -0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000 -0.500000 -0.310500 -0.243900 -0.600000 0.776000 -0.152000 -0.450000 -0.327300 -0.243900 -0.064000 0.864000 -0.488000 -0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000 -0.450000 -0.351500 -0.290700 -0.176000 0.632000 -0.744000 -0.458900 -0.351500 -0.304800 -0.472000 0.360000 -0.792000 -0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000 -0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000 -0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000 -0.500000 -0.400600 -0.243900 0.024000 -0.920000 0.384000 -0.496800 -0.401700 -0.243900 0.256000 -0.880000 0.376000 -0.496800 -0.401700 -0.243900 0.256000 -0.880000 0.376000 -0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000 -0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000 -0.300000 0.218000 -0.182900 0.768000 0.424000 -0.464000 -0.300000 0.200800 -0.174500 0.536000 -0.360000 0.752000 -0.306800 0.200800 -0.182900 0.752000 -0.400000 -0.512000 -0.300000 0.193900 -0.182900 0.520000 -0.696000 -0.480000 -0.300000 0.200800 -0.185900 0.256000 -0.192000 -0.944000 -0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000 -0.300000 0.218000 -0.182900 0.768000 0.424000 -0.464000 -0.300000 0.200800 -0.185900 0.256000 -0.192000 -0.944000 -0.306800 0.200800 -0.182900 0.752000 -0.400000 -0.512000 -0.306800 0.200800 -0.182900 0.752000 -0.400000 -0.512000 -0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000 -0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000 -0.300000 0.200800 -0.174500 0.536000 -0.360000 0.752000 -0.300000 0.193900 -0.182900 0.520000 -0.696000 -0.480000 -0.300000 0.193900 -0.182900 0.520000 -0.696000 -0.480000 -0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000 -0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000 -0.300000 0.251000 -0.156100 -0.368000 -0.808000 -0.448000 -0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000 -0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000 -0.307700 -0.050200 -0.121900 -0.592000 0.464000 0.648000 -0.307700 -0.050200 -0.121900 -0.592000 0.464000 0.648000 -0.300000 -0.060700 -0.121900 -0.512000 0.456000 0.720000 -0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000 -0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000 -0.329200 -0.200800 -0.121900 0.376000 -0.264000 0.880000 -0.329200 -0.200800 -0.121900 0.376000 -0.264000 0.880000 -0.350000 -0.182300 -0.121900 -0.032000 -0.520000 0.848000 -0.350000 -0.200800 -0.137500 0.248000 -0.232000 0.936000 -0.391400 -0.200800 -0.121900 -0.176000 -0.648000 0.736000 -0.391400 -0.200800 -0.121900 -0.176000 -0.648000 0.736000 -0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000 -0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000 -0.381500 0.100400 -0.182900 -0.896000 0.440000 -0.008000 -0.400000 0.146600 -0.182900 -0.440000 0.464000 -0.760000 -0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000 -0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000 -0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000 -0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000 -0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000 -0.400000 -0.249800 -0.182900 0.472000 -0.752000 0.448000 -0.398900 -0.251000 -0.182900 0.896000 -0.160000 0.400000 -0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000 -0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000 -0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000 -0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000 -0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000 -0.350000 -0.351500 -0.171100 -0.312000 -0.512000 0.792000 -0.400000 -0.301200 -0.149800 0.528000 0.376000 0.752000 -0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000 -0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000 -0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000 -0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000 -0.450000 -0.255300 -0.182900 -0.208000 -0.656000 0.712000 -0.415700 -0.251000 -0.182900 -0.088000 -0.872000 0.480000 -0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000 -0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000 -0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000 -0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000 -0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000 -0.500000 0.393600 -0.121900 0.504000 0.744000 -0.432000 -0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000 -0.550000 0.362300 -0.121900 0.400000 0.656000 -0.632000 -0.566700 0.351500 -0.121900 0.448000 0.536000 -0.704000 -0.566700 0.351500 -0.121900 0.448000 0.536000 -0.704000 -0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000 -0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000 -0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000 -0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000 -0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000 -0.500000 0.351500 -0.187300 0.416000 0.568000 -0.696000 -0.500000 0.301200 -0.193500 0.168000 0.072000 -0.976000 -0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000 -0.500000 0.251000 -0.199400 0.072000 0.096000 -0.984000 -0.550000 0.283200 -0.182900 0.320000 0.472000 -0.816000 -0.550000 0.251000 -0.199600 0.176000 0.288000 -0.936000 -0.500000 0.251000 -0.199400 0.072000 0.096000 -0.984000 -0.550000 0.200800 -0.211100 0.016000 0.048000 -0.992000 -0.500000 0.200800 -0.200200 -0.104000 -0.048000 -0.992000 -0.550000 0.150600 -0.215400 -0.144000 0.080000 -0.984000 -0.500000 0.150600 -0.194400 -0.208000 0.240000 -0.944000 -0.550000 0.100400 -0.212600 -0.200000 0.352000 -0.904000 -0.500000 0.100400 -0.210700 0.048000 0.704000 -0.704000 -0.550000 0.067800 -0.243900 0.024000 0.672000 -0.728000 -0.500000 0.082500 -0.243900 0.216000 0.832000 -0.504000 -0.550000 0.050200 -0.258400 0.160000 0.632000 -0.752000 -0.500000 0.050200 -0.303800 0.264000 0.816000 -0.504000 -0.550000 0.015600 -0.304800 0.472000 0.712000 -0.512000 -0.500000 0.049600 -0.304800 0.264000 0.736000 -0.616000 -0.550000 0.000000 -0.335900 0.576000 0.464000 -0.664000 -0.500000 0.014000 -0.365800 0.216000 0.784000 -0.568000 -0.524100 0.000000 -0.365800 0.648000 0.312000 -0.688000 -0.500000 0.000000 -0.393700 0.528000 0.072000 -0.840000 -0.500000 -0.027200 -0.365800 0.264000 -0.576000 -0.768000 -0.524100 0.000000 -0.365800 0.648000 0.312000 -0.688000 -0.500000 -0.050200 -0.339600 -0.136000 -0.672000 -0.720000 -0.550000 0.000000 -0.335900 0.576000 0.464000 -0.664000 -0.550000 -0.050200 -0.345500 0.192000 -0.560000 -0.792000 -0.550000 -0.050200 -0.345500 0.192000 -0.560000 -0.792000 -0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000 -0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000 -0.550000 0.283200 -0.182900 0.320000 0.472000 -0.816000 -0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000 -0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000 -0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000 -0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000 -0.501100 -0.251000 -0.121900 -0.552000 -0.624000 0.544000 -0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000 -0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000 -0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000 -0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000 -0.650000 0.227800 -0.182900 0.368000 0.576000 -0.720000 -0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000 -0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000 -0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000 -0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000 -0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000 -0.650000 -0.327200 -0.121900 -0.280000 -0.536000 0.792000 -0.650000 -0.351500 -0.143500 -0.280000 -0.536000 0.784000 -0.679500 -0.351500 -0.121900 -0.424000 -0.464000 0.768000 -0.650000 -0.401700 -0.175000 -0.240000 -0.688000 0.680000 -0.700000 -0.372000 -0.121900 -0.360000 -0.440000 0.816000 -0.700000 -0.401700 -0.145100 -0.400000 -0.504000 0.752000 -0.737900 -0.401700 -0.121900 -0.352000 -0.448000 0.816000 -0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000 -0.750000 -0.411100 -0.121900 -0.304000 -0.456000 0.824000 -0.719600 -0.451900 -0.182900 -0.568000 -0.640000 0.512000 -0.750000 -0.451900 -0.153800 -0.384000 -0.528000 0.752000 -0.750000 -0.479900 -0.182900 -0.456000 -0.632000 0.616000 -0.719600 -0.451900 -0.182900 -0.568000 -0.640000 0.512000 -0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000 -0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000 -0.744200 -0.502100 -0.243900 -0.480000 -0.864000 0.128000 -0.700000 -0.472400 -0.243900 -0.560000 -0.816000 -0.016000 -0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000 -0.700000 -0.481300 -0.304800 -0.240000 -0.712000 -0.656000 -0.750000 -0.487000 -0.304800 -0.104000 -0.744000 -0.656000 -0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000 -0.750000 -0.451900 -0.330900 0.152000 -0.080000 -0.984000 -0.700000 -0.401700 -0.334100 0.120000 -0.128000 -0.976000 -0.750000 -0.401700 -0.321600 0.336000 0.000000 -0.936000 -0.700000 -0.351500 -0.333900 0.344000 -0.040000 -0.936000 -0.750000 -0.351500 -0.307800 0.512000 0.128000 -0.840000 -0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000 -0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000 -0.744500 -0.301200 -0.304800 0.640000 0.104000 -0.760000 -0.750000 -0.301200 -0.299800 0.512000 0.144000 -0.840000 -0.728900 -0.251000 -0.304800 0.720000 0.440000 -0.528000 -0.750000 -0.251000 -0.256700 0.824000 0.520000 -0.208000 -0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000 -0.750000 -0.247000 -0.243900 0.832000 0.536000 -0.096000 -0.700000 -0.200800 -0.294000 0.576000 0.608000 -0.536000 -0.717800 -0.200800 -0.243900 0.824000 0.560000 -0.064000 -0.700000 -0.175300 -0.243900 0.752000 0.600000 -0.240000 -0.713600 -0.200800 -0.182900 0.824000 0.512000 0.224000 -0.700000 -0.178500 -0.182900 0.792000 0.568000 0.200000 -0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000 -0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000 -0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000 -0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000 -0.650000 -0.351500 -0.143500 -0.280000 -0.536000 0.784000 -0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000 -0.650000 -0.401700 -0.175000 -0.240000 -0.688000 0.680000 -0.628900 -0.401700 -0.182900 -0.216000 -0.760000 0.608000 -0.650000 -0.407700 -0.182900 -0.272000 -0.728000 0.624000 -0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000 -0.650000 -0.436800 -0.243900 -0.416000 -0.848000 0.320000 -0.600000 -0.414700 -0.243900 -0.184000 -0.936000 0.272000 -0.650000 -0.449600 -0.304800 -0.280000 -0.432000 -0.848000 -0.600000 -0.422100 -0.304800 -0.120000 -0.768000 -0.616000 -0.650000 -0.401700 -0.330300 -0.240000 -0.360000 -0.896000 -0.600000 -0.401700 -0.327900 -0.024000 -0.544000 -0.832000 -0.650000 -0.351500 -0.332000 0.016000 -0.144000 -0.984000 -0.600000 -0.351500 -0.337900 0.040000 -0.080000 -0.992000 -0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000 -0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000 -0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000 -0.650000 0.278000 -0.121900 0.448000 0.624000 -0.624000 -0.650000 0.278000 -0.121900 0.448000 0.624000 -0.624000 -0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000 -0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000 -0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000 -0.700000 -0.401700 -0.145100 -0.400000 -0.504000 0.752000 -0.700000 -0.401700 -0.145100 -0.400000 -0.504000 0.752000 -0.650000 -0.401700 -0.175000 -0.240000 -0.688000 0.680000 -0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000 -0.650000 -0.407700 -0.182900 -0.272000 -0.728000 0.624000 -0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000 -0.650000 -0.436800 -0.243900 -0.416000 -0.848000 0.320000 -0.673600 -0.451900 -0.243900 -0.480000 -0.752000 0.448000 -0.650000 -0.449600 -0.304800 -0.280000 -0.432000 -0.848000 -0.653100 -0.451900 -0.304800 -0.336000 -0.480000 -0.800000 -0.650000 -0.401700 -0.330300 -0.240000 -0.360000 -0.896000 -0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000 -0.700000 -0.401700 -0.334100 0.120000 -0.128000 -0.976000 -0.650000 -0.401700 -0.330300 -0.240000 -0.360000 -0.896000 -0.700000 -0.351500 -0.333900 0.344000 -0.040000 -0.936000 -0.650000 -0.351500 -0.332000 0.016000 -0.144000 -0.984000 -0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000 -0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000 -0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000 -0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000 -0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000 -0.750000 -0.297400 -0.121900 0.656000 0.584000 0.464000 -0.746300 -0.251000 -0.182900 0.848000 0.496000 0.152000 -0.750000 -0.257500 -0.182900 0.856000 0.488000 0.120000 -0.750000 -0.251000 -0.218200 0.840000 0.520000 0.096000 -0.777000 -0.301200 -0.182900 0.784000 0.536000 0.304000 -0.752500 -0.251000 -0.243900 0.840000 0.528000 -0.096000 -0.780500 -0.301200 -0.243900 0.848000 0.504000 -0.128000 -0.777000 -0.301200 -0.182900 0.784000 0.536000 0.304000 -0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000 -0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000 -0.829500 -0.351500 -0.243900 0.648000 0.640000 -0.400000 -0.821300 -0.351500 -0.182900 0.624000 0.648000 0.416000 -0.850000 -0.375700 -0.243900 0.544000 0.616000 -0.552000 -0.850000 -0.381900 -0.182900 0.632000 0.696000 0.328000 -0.890600 -0.401700 -0.243900 0.576000 0.616000 -0.528000 -0.872200 -0.401700 -0.182900 0.632000 0.640000 0.416000 -0.900000 -0.412700 -0.243900 0.520000 0.640000 -0.552000 -0.900000 -0.433800 -0.182900 0.512000 0.688000 0.504000 -0.950000 -0.433400 -0.243900 0.528000 0.832000 0.152000 -0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000 -0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000 -0.950000 -0.463500 -0.182900 0.464000 0.672000 0.568000 -0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000 -0.950000 -0.502100 -0.136000 -0.296000 0.400000 0.864000 -0.900000 -0.451900 -0.156900 0.400000 0.632000 0.656000 -0.900000 -0.502100 -0.123800 -0.168000 -0.208000 0.960000 -0.850000 -0.451900 -0.123600 0.328000 0.296000 0.888000 -0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000 -0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000 -0.750000 -0.257500 -0.182900 0.856000 0.488000 0.120000 -0.750000 -0.257500 -0.182900 0.856000 0.488000 0.120000 -0.750000 -0.297400 -0.121900 0.656000 0.584000 0.464000 -0.777000 -0.301200 -0.182900 0.784000 0.536000 0.304000 -0.752700 -0.301200 -0.121900 0.792000 0.344000 0.488000 -0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000 -0.775700 -0.351500 -0.121900 0.600000 0.328000 0.720000 -0.800000 -0.351500 -0.149400 0.664000 0.512000 0.528000 -0.800000 -0.391100 -0.121900 0.384000 0.416000 0.816000 -0.821300 -0.351500 -0.182900 0.624000 0.648000 0.416000 -0.810500 -0.401700 -0.121900 0.456000 0.104000 0.872000 -0.850000 -0.381900 -0.182900 0.632000 0.696000 0.328000 -0.850000 -0.401700 -0.151500 0.608000 0.552000 0.560000 -0.872200 -0.401700 -0.182900 0.632000 0.640000 0.416000 -0.850000 -0.451900 -0.123600 0.328000 0.296000 0.888000 -0.900000 -0.433800 -0.182900 0.512000 0.688000 0.504000 -0.900000 -0.451900 -0.156900 0.400000 0.632000 0.656000 -0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000 -0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000 -0.783200 -0.502100 -0.182900 -0.448000 -0.720000 0.512000 -0.783200 -0.502100 -0.182900 -0.448000 -0.720000 0.512000 -0.800000 -0.502100 -0.171200 -0.360000 -0.648000 0.664000 -0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000 -0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000 -0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000 -0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000 -0.821300 -0.351500 -0.182900 0.624000 0.648000 0.416000 -0.800000 -0.351500 -0.149400 0.664000 0.512000 0.528000 -0.800000 -0.351500 -0.149400 0.664000 0.512000 0.528000 -0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000 -0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000 -0.900000 -0.573700 -0.182900 -0.608000 -0.704000 0.344000 -0.876500 -0.552300 -0.182900 -0.528000 -0.672000 0.504000 -0.900000 -0.578300 -0.243900 -0.552000 -0.704000 -0.440000 -0.868400 -0.552300 -0.243900 -0.552000 -0.760000 -0.328000 -0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000 -0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000 -0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000 -0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000 -0.931600 0.100400 -0.121900 0.600000 0.744000 -0.272000 -0.900000 0.111100 -0.182900 0.552000 0.712000 -0.416000 -0.912000 0.100400 -0.182900 0.600000 0.704000 -0.360000 -0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000 -0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000 -0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000 -0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000 -0.950000 -0.619400 -0.182900 -0.632000 -0.592000 0.480000 -0.935000 -0.602500 -0.182900 -0.552000 -0.552000 0.608000 -0.950000 -0.619400 -0.243900 -0.600000 -0.584000 -0.536000 -0.933200 -0.602500 -0.243900 -0.584000 -0.624000 -0.512000 -0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000 -0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000 -1.000000 -0.251000 -0.154300 -0.728000 -0.648000 0.200000 -1.000000 -0.251000 -0.154300 -0.728000 -0.648000 0.200000 -1.000000 -0.258900 -0.182900 -0.752000 -0.616000 0.208000 -0.993400 -0.251000 -0.182900 -0.736000 -0.640000 0.200000 -1.000000 -0.277900 -0.243900 -0.712000 -0.592000 0.360000 -0.978600 -0.251000 -0.243900 -0.696000 -0.616000 0.352000 -0.978600 -0.251000 -0.243900 -0.696000 -0.616000 0.352000 -0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000 -0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000 -0.992300 -0.602500 -0.121900 -0.520000 -0.480000 0.696000 -0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000 -0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000 -1.000000 -0.652700 -0.168000 -0.488000 -0.568000 0.656000 -1.000000 -0.652700 -0.168000 -0.488000 -0.568000 0.656000 -1.000000 -0.666200 -0.182900 -0.536000 -0.632000 0.544000 -0.983200 -0.652700 -0.182900 -0.528000 -0.608000 0.584000 -1.000000 -0.673300 -0.243900 -0.656000 -0.656000 -0.368000 -0.979500 -0.652700 -0.243900 -0.672000 -0.664000 -0.304000 -1.000000 -0.652700 -0.268800 -0.592000 -0.512000 -0.608000 -1.000000 -0.652700 -0.268800 -0.592000 -0.512000 -0.608000 --1.000000 0.256900 -0.182900 0.288000 0.752000 -0.584000 --1.000000 0.256900 -0.182900 0.288000 0.752000 -0.584000 --1.000000 0.251000 -0.191500 0.280000 0.728000 -0.616000 --0.985000 0.251000 -0.182900 0.288000 0.752000 -0.576000 --0.985000 0.251000 -0.182900 0.288000 0.752000 -0.576000 --0.980800 0.200800 -0.243900 0.232000 0.632000 -0.736000 --0.980800 0.200800 -0.243900 0.232000 0.632000 -0.736000 --0.950000 0.189400 -0.243900 0.264000 0.616000 -0.728000 --0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000 --0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000 --0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000 --0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000 --0.900000 0.200800 -0.201400 0.352000 0.680000 -0.640000 --0.874200 0.200800 -0.182900 0.360000 0.712000 -0.584000 --0.874200 0.200800 -0.182900 0.360000 0.712000 -0.584000 --0.878700 0.150600 -0.243900 0.328000 0.616000 -0.704000 --0.878700 0.150600 -0.243900 0.328000 0.616000 -0.704000 --0.850000 0.135500 -0.243900 0.320000 0.608000 -0.712000 --0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000 --0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000 --0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000 --0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000 --0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000 --0.892400 -0.552300 -0.182900 -0.760000 -0.624000 0.176000 --0.899500 -0.552300 -0.243900 -0.800000 -0.592000 -0.072000 --0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000 --0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000 --0.850000 -0.602500 -0.238600 -0.616000 -0.752000 0.216000 --0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000 --0.832500 -0.602500 -0.182900 -0.576000 -0.768000 0.272000 --0.800000 -0.632800 -0.243900 -0.432000 -0.896000 0.072000 --0.800000 -0.620600 -0.182900 -0.312000 -0.880000 0.336000 --0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000 --0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000 --0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000 --0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000 --0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000 --0.800000 -0.502100 -0.227500 0.432000 0.824000 0.352000 --0.800000 -0.513200 -0.182900 -0.080000 0.880000 0.456000 --0.750000 -0.502100 -0.184800 -0.496000 0.696000 0.496000 --0.750000 -0.503000 -0.182900 -0.200000 0.848000 0.472000 --0.749300 -0.502100 -0.182900 -0.920000 -0.232000 0.288000 --0.750000 -0.502100 -0.184800 -0.496000 0.696000 0.496000 --0.750000 -0.499500 -0.182900 -0.936000 -0.200000 0.264000 --0.750000 -0.499500 -0.182900 -0.936000 -0.200000 0.264000 --0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000 --0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000 --0.832500 -0.602500 -0.182900 -0.576000 -0.768000 0.272000 --0.850000 -0.602500 -0.238600 -0.616000 -0.752000 0.216000 --0.850000 -0.602500 -0.238600 -0.616000 -0.752000 0.216000 --0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000 --0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000 --0.650000 0.000000 -0.224600 0.632000 0.368000 -0.672000 --0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000 --0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000 --0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000 --0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000 --0.600000 -0.640700 -0.243900 0.080000 -0.976000 0.192000 --0.550000 -0.618800 -0.182900 0.168000 -0.944000 0.272000 --0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000 --0.500000 -0.610400 -0.182900 -0.136000 -0.936000 0.304000 --0.500000 -0.625200 -0.243900 -0.096000 -0.960000 0.240000 --0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000 --0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000 --0.550000 -0.639800 -0.304800 0.152000 -0.984000 0.000000 --0.500000 -0.633000 -0.365800 -0.088000 -0.968000 -0.200000 --0.550000 -0.637200 -0.365800 0.152000 -0.968000 -0.168000 --0.550000 -0.639800 -0.304800 0.152000 -0.984000 0.000000 --0.600000 -0.645500 -0.365800 0.016000 -0.968000 -0.216000 --0.600000 -0.650800 -0.304800 0.064000 -0.992000 0.000000 --0.550000 -0.639800 -0.304800 0.152000 -0.984000 0.000000 --0.600000 -0.640700 -0.243900 0.080000 -0.976000 0.192000 --0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000 --0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000 --0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000 --0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000 --0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000 --0.400000 -0.096400 -0.182900 -0.664000 0.552000 -0.496000 --0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000 --0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000 --0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000 --0.350000 -0.050200 -0.209400 -0.696000 0.392000 -0.584000 --0.321700 -0.050200 -0.243900 -0.656000 0.344000 -0.656000 --0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000 --0.301700 0.000000 -0.243900 -0.744000 0.392000 -0.536000 --0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000 --0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000 --0.444500 -0.150600 -0.243900 -0.312000 0.784000 -0.528000 --0.444500 -0.150600 -0.243900 -0.312000 0.784000 -0.528000 --0.450000 -0.150600 -0.239400 -0.408000 0.792000 -0.448000 --0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000 --0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000 --0.400000 -0.651500 -0.182900 -0.552000 -0.472000 0.672000 --0.400000 -0.651500 -0.182900 -0.552000 -0.472000 0.672000 --0.400000 -0.652700 -0.184800 -0.640000 -0.536000 0.536000 --0.450000 -0.629600 -0.182900 -0.344000 -0.872000 0.320000 --0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000 --0.450000 -0.644000 -0.243900 -0.352000 -0.912000 0.200000 --0.450000 -0.652700 -0.293400 -0.288000 -0.936000 0.160000 --0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000 --0.450000 -0.654300 -0.304800 -0.272000 -0.952000 0.040000 --0.400000 -0.663600 -0.243900 -0.504000 -0.840000 0.160000 --0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000 --0.363900 -0.703000 -0.243900 -0.784000 -0.584000 0.176000 --0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000 --0.350000 -0.730400 -0.243900 -0.544000 -0.776000 0.296000 --0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000 --0.300000 -0.736500 -0.243900 0.320000 -0.832000 0.440000 --0.330700 -0.753200 -0.304800 -0.192000 -0.968000 -0.112000 --0.300000 -0.753200 -0.286100 0.088000 -0.928000 0.352000 --0.300000 -0.758500 -0.304800 0.104000 -0.976000 -0.144000 --0.281500 -0.753200 -0.304800 0.312000 -0.920000 -0.216000 --0.300000 -0.753200 -0.317300 0.136000 -0.840000 -0.512000 --0.300000 -0.758500 -0.304800 0.104000 -0.976000 -0.144000 --0.330700 -0.753200 -0.304800 -0.192000 -0.968000 -0.112000 --0.300000 -0.753200 -0.317300 0.136000 -0.840000 -0.512000 --0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000 --0.300000 -0.703000 -0.365100 0.056000 -0.232000 -0.968000 --0.350000 -0.703000 -0.357000 -0.336000 -0.496000 -0.792000 --0.300000 -0.687100 -0.365800 0.104000 -0.048000 -0.992000 --0.350000 -0.679200 -0.365800 -0.072000 -0.176000 -0.976000 --0.350000 -0.703000 -0.357000 -0.336000 -0.496000 -0.792000 --0.400000 -0.653700 -0.365800 -0.176000 -0.888000 -0.416000 --0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000 --0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000 --0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000 --0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000 --0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000 --0.400000 -0.652700 -0.184800 -0.640000 -0.536000 0.536000 --0.400000 -0.663600 -0.243900 -0.504000 -0.840000 0.160000 --0.396000 -0.652700 -0.182900 -0.176000 0.000000 0.984000 --0.363900 -0.703000 -0.243900 -0.784000 -0.584000 0.176000 --0.350700 -0.703000 -0.182900 -0.792000 -0.176000 0.576000 --0.350000 -0.730400 -0.243900 -0.544000 -0.776000 0.296000 --0.350000 -0.704300 -0.182900 -0.112000 -0.808000 0.576000 --0.300000 -0.736500 -0.243900 0.320000 -0.832000 0.440000 --0.300000 -0.708000 -0.182900 0.360000 -0.768000 0.520000 --0.300000 -0.708000 -0.182900 0.360000 -0.768000 0.520000 --0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000 --0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000 --0.350000 -0.050200 -0.209400 -0.696000 0.392000 -0.584000 --0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000 --0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000 --0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000 --0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000 --0.400000 -0.131400 -0.243900 -0.384000 0.744000 -0.536000 --0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000 --0.400000 -0.150600 -0.272200 -0.312000 0.624000 -0.704000 --0.350000 -0.100400 -0.248500 -0.576000 0.440000 -0.680000 --0.350000 -0.150600 -0.298700 -0.264000 0.464000 -0.840000 --0.400000 -0.150600 -0.272200 -0.312000 0.624000 -0.704000 --0.350000 -0.159400 -0.304800 -0.248000 0.528000 -0.808000 --0.400000 -0.174400 -0.304800 -0.224000 0.736000 -0.632000 --0.350000 -0.200800 -0.339000 0.200000 0.416000 -0.880000 --0.400000 -0.200800 -0.333600 -0.064000 0.568000 -0.816000 --0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000 --0.400000 -0.239300 -0.365800 0.048000 0.512000 -0.848000 --0.350000 -0.251000 -0.367200 0.240000 0.168000 -0.952000 --0.400000 -0.251000 -0.373300 0.080000 0.400000 -0.904000 --0.350000 -0.301200 -0.377400 0.232000 0.208000 -0.944000 --0.400000 -0.301200 -0.390900 0.144000 0.296000 -0.936000 --0.350000 -0.351500 -0.416300 -0.176000 0.600000 -0.768000 --0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000 --0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000 --0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000 --0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000 --0.386500 -0.602500 -0.182900 0.376000 -0.032000 0.920000 --0.350000 -0.630200 -0.243900 -0.144000 0.776000 0.600000 --0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000 --0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000 --0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000 --0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000 --0.216700 0.150600 -0.182900 -0.560000 0.376000 -0.728000 --0.200000 0.150600 -0.197300 -0.488000 0.464000 -0.728000 --0.249100 0.100400 -0.182900 -0.576000 0.496000 -0.640000 --0.200000 0.100400 -0.242800 -0.520000 0.512000 -0.672000 --0.200000 0.100400 -0.242800 -0.520000 0.512000 -0.672000 --0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000 --0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000 --0.200000 0.150600 -0.197300 -0.488000 0.464000 -0.728000 --0.173800 0.200800 -0.182900 -0.480000 0.344000 -0.800000 --0.150000 0.150600 -0.235500 -0.296000 0.536000 -0.784000 --0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000 --0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000 -0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000 -0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000 -0.050000 0.005700 -0.182900 0.312000 0.584000 0.744000 -0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000 -0.050000 0.042300 -0.243900 0.688000 0.376000 -0.616000 -0.078000 0.000000 -0.243900 0.336000 0.616000 -0.696000 -0.050000 0.000000 -0.258500 0.448000 0.256000 -0.848000 -0.100000 -0.005500 -0.243900 -0.184000 0.760000 -0.616000 -0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000 -0.100000 -0.050200 -0.272200 -0.136000 0.384000 -0.904000 -0.050000 -0.100400 -0.298100 0.360000 0.248000 -0.896000 -0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000 -0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000 -0.078000 0.000000 -0.243900 0.336000 0.616000 -0.696000 -0.078000 0.000000 -0.243900 0.336000 0.616000 -0.696000 -0.100000 -0.005500 -0.243900 -0.184000 0.760000 -0.616000 -0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000 -0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000 -0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000 -0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000 -0.200000 -0.319700 -0.243900 -0.624000 -0.696000 0.328000 -0.176900 -0.301200 -0.243900 -0.504000 -0.800000 0.304000 -0.200000 -0.340400 -0.304800 -0.480000 -0.448000 -0.744000 -0.170700 -0.301200 -0.304800 -0.520000 -0.608000 -0.592000 -0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000 -0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000 -0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000 -0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000 -0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000 -0.250000 -0.319600 -0.182900 -0.280000 -0.832000 0.472000 -0.277600 -0.351500 -0.243900 -0.264000 -0.888000 0.352000 -0.250000 -0.343100 -0.243900 -0.320000 -0.920000 0.208000 -0.271900 -0.351500 -0.304800 -0.112000 -0.784000 -0.608000 -0.250000 -0.348300 -0.304800 -0.128000 -0.736000 -0.656000 -0.300000 -0.351500 -0.310200 -0.192000 -0.728000 -0.648000 -0.250000 -0.313600 -0.365800 -0.336000 -0.640000 -0.680000 -0.300000 -0.308000 -0.365800 0.080000 -0.656000 -0.744000 -0.250000 -0.301200 -0.379400 -0.536000 -0.264000 -0.792000 -0.300000 -0.301200 -0.372900 0.128000 -0.472000 -0.864000 -0.300000 -0.308000 -0.365800 0.080000 -0.656000 -0.744000 -0.333500 -0.301200 -0.365800 0.208000 -0.080000 -0.968000 -0.300000 -0.351500 -0.310200 -0.192000 -0.728000 -0.648000 -0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000 -0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000 -0.350000 -0.334300 -0.365800 -0.304000 0.096000 -0.944000 -0.350000 -0.351500 -0.368100 -0.440000 0.096000 -0.888000 -0.355700 -0.351500 -0.365800 0.360000 -0.072000 -0.928000 -0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000 -0.400000 -0.351500 -0.338800 0.360000 -0.568000 -0.728000 -0.350000 -0.401700 -0.317400 -0.608000 -0.560000 -0.544000 -0.400000 -0.388800 -0.304800 0.392000 -0.800000 -0.448000 -0.376800 -0.401700 -0.304800 0.336000 -0.848000 -0.392000 -0.400000 -0.401700 -0.257800 0.112000 -0.952000 -0.280000 -0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000 -0.400000 -0.404800 -0.243900 0.016000 -0.968000 0.240000 -0.350000 -0.409600 -0.243900 -0.632000 -0.696000 0.320000 -0.400000 -0.401700 -0.239700 -0.184000 -0.720000 0.656000 -0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000 -0.400000 -0.370500 -0.182900 -0.008000 -0.616000 0.776000 -0.350000 -0.366900 -0.182900 -0.368000 -0.552000 0.736000 -0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000 -0.331500 -0.351500 -0.182900 -0.432000 -0.576000 0.688000 -0.343800 -0.401700 -0.243900 -0.728000 -0.584000 0.344000 -0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000 -0.300000 -0.357600 -0.243900 -0.288000 -0.920000 0.248000 -0.277600 -0.351500 -0.243900 -0.264000 -0.888000 0.352000 -0.300000 -0.355300 -0.304800 -0.272000 -0.752000 -0.592000 -0.271900 -0.351500 -0.304800 -0.112000 -0.784000 -0.608000 -0.300000 -0.351500 -0.310200 -0.192000 -0.728000 -0.648000 -0.300000 -0.355300 -0.304800 -0.272000 -0.752000 -0.592000 -0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000 -0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000 -0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000 -0.350000 -0.401700 -0.317400 -0.608000 -0.560000 -0.544000 -0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000 -0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000 -0.343800 -0.401700 -0.243900 -0.728000 -0.584000 0.344000 -0.350000 -0.409600 -0.243900 -0.632000 -0.696000 0.320000 -0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000 -0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000 -0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000 -0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000 -0.331500 -0.351500 -0.182900 -0.432000 -0.576000 0.688000 -0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000 -0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000 -0.427100 -0.301200 -0.182900 0.776000 0.464000 0.416000 -0.427100 -0.301200 -0.182900 0.776000 0.464000 0.416000 -0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000 -0.429200 -0.301200 -0.243900 0.816000 0.544000 -0.176000 -0.450000 -0.327300 -0.243900 -0.064000 0.864000 -0.488000 -0.401200 -0.301200 -0.304800 0.744000 0.488000 -0.440000 -0.450000 -0.351500 -0.290700 -0.176000 0.632000 -0.744000 -0.437100 -0.351500 -0.304800 0.688000 0.472000 -0.536000 -0.437100 -0.351500 -0.304800 0.688000 0.472000 -0.536000 -0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000 -0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000 -0.400000 -0.370500 -0.182900 -0.008000 -0.616000 0.776000 -0.450000 -0.401700 -0.212100 0.240000 -0.816000 0.520000 -0.400000 -0.401700 -0.239700 -0.184000 -0.720000 0.656000 -0.450000 -0.418500 -0.243900 -0.152000 -0.896000 0.400000 -0.400000 -0.404800 -0.243900 0.016000 -0.968000 0.240000 -0.450000 -0.411100 -0.304800 -0.144000 -0.808000 -0.560000 -0.400000 -0.401700 -0.257800 0.112000 -0.952000 -0.280000 -0.428900 -0.401700 -0.304800 -0.392000 -0.464000 -0.784000 -0.428900 -0.401700 -0.304800 -0.392000 -0.464000 -0.784000 -0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000 -0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000 -0.500000 0.351500 -0.187300 0.416000 0.568000 -0.696000 -0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000 -0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000 -0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000 -0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000 -0.550000 -0.409700 -0.243900 -0.144000 -0.944000 0.272000 -0.503900 -0.401700 -0.243900 -0.232000 -0.936000 0.256000 -0.550000 -0.415900 -0.304800 -0.192000 -0.848000 -0.480000 -0.502600 -0.401700 -0.304800 -0.320000 -0.840000 -0.416000 -0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000 -0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000 -0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000 -0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000 -0.650000 0.200800 -0.204000 0.272000 0.408000 -0.864000 -0.600000 0.150600 -0.225200 0.008000 0.128000 -0.984000 -0.650000 0.150600 -0.219600 0.200000 0.280000 -0.928000 -0.600000 0.100400 -0.237100 -0.096000 0.168000 -0.976000 -0.650000 0.100400 -0.241400 0.232000 0.064000 -0.968000 -0.600000 0.076600 -0.243900 -0.096000 0.360000 -0.920000 -0.650000 0.067400 -0.243900 0.208000 0.056000 -0.968000 -0.600000 0.050200 -0.251100 0.248000 0.344000 -0.896000 -0.650000 0.050200 -0.244900 0.216000 0.040000 -0.968000 -0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000 -0.650000 0.000000 -0.248500 0.680000 -0.160000 -0.712000 -0.650000 0.000000 -0.248500 0.680000 -0.160000 -0.712000 -0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000 -0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000 -0.628900 -0.401700 -0.182900 -0.216000 -0.760000 0.608000 -0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000 -0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000 -0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000 -0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000 -0.700000 -0.472400 -0.243900 -0.560000 -0.816000 -0.016000 -0.673600 -0.451900 -0.243900 -0.480000 -0.752000 0.448000 -0.700000 -0.481300 -0.304800 -0.240000 -0.712000 -0.656000 -0.653100 -0.451900 -0.304800 -0.336000 -0.480000 -0.800000 -0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000 -0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000 -0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000 -0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000 -0.719600 -0.451900 -0.182900 -0.568000 -0.640000 0.512000 -0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000 -0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000 -0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000 -0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000 -0.750000 -0.505200 -0.243900 -0.480000 -0.856000 0.152000 -0.744200 -0.502100 -0.243900 -0.480000 -0.864000 0.128000 -0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000 -0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000 -0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000 -0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000 -0.750000 0.150600 -0.191500 0.256000 0.656000 -0.704000 -0.769100 0.150600 -0.182900 0.248000 0.704000 -0.648000 -0.769100 0.150600 -0.182900 0.248000 0.704000 -0.648000 -0.929600 0.050200 -0.243900 0.432000 0.672000 -0.584000 -0.929600 0.050200 -0.243900 0.432000 0.672000 -0.584000 -0.950000 0.037500 -0.243900 0.432000 0.688000 -0.576000 -0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000 -0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000 -0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000 -0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000 -0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000 -0.978000 0.050200 -0.182900 0.512000 0.768000 -0.376000 -0.978000 0.050200 -0.182900 0.512000 0.768000 -0.376000 -0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000 -0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000 -0.950000 -0.433400 -0.243900 0.528000 0.832000 0.152000 -0.980700 -0.451900 -0.243900 0.752000 0.648000 0.032000 -0.950000 -0.451900 -0.300000 0.488000 0.464000 -0.728000 -0.950000 -0.433400 -0.243900 0.528000 0.832000 0.152000 -0.900000 -0.451900 -0.272400 0.368000 0.408000 -0.824000 -0.900000 -0.412700 -0.243900 0.520000 0.640000 -0.552000 -0.850000 -0.451900 -0.293100 0.448000 0.248000 -0.848000 -0.890600 -0.401700 -0.243900 0.576000 0.616000 -0.528000 -0.850000 -0.401700 -0.268600 0.504000 0.432000 -0.744000 -0.850000 -0.375700 -0.243900 0.544000 0.616000 -0.552000 -0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000 -0.829500 -0.351500 -0.243900 0.648000 0.640000 -0.400000 -0.800000 -0.351500 -0.277300 0.568000 0.408000 -0.704000 -0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000 -0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000 -1.000000 -0.503200 -0.182900 0.400000 0.704000 0.576000 -1.000000 -0.503200 -0.182900 0.400000 0.704000 0.576000 -0.998000 -0.502100 -0.182900 0.528000 0.664000 0.520000 -1.000000 -0.502100 -0.189300 0.760000 0.568000 0.296000 -1.000000 -0.502100 -0.189300 0.760000 0.568000 0.296000 --0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000 --0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000 --0.896800 -0.451900 -0.243900 0.600000 0.776000 0.136000 --0.850000 -0.473200 -0.304800 0.272000 0.896000 -0.336000 --0.850000 -0.480800 -0.243900 0.376000 0.912000 0.152000 --0.800000 -0.473000 -0.304800 -0.736000 0.648000 -0.168000 --0.800000 -0.496000 -0.243900 0.424000 0.840000 0.320000 --0.787800 -0.451900 -0.304800 -0.984000 0.136000 -0.040000 --0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000 --0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000 --0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000 --0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000 --0.900000 -0.539600 -0.304800 -0.720000 -0.488000 -0.480000 --0.899500 -0.552300 -0.243900 -0.800000 -0.592000 -0.072000 --0.891900 -0.552300 -0.304800 -0.800000 -0.568000 -0.136000 --0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000 --0.850000 -0.602000 -0.304800 -0.640000 -0.736000 -0.184000 --0.850000 -0.602500 -0.285600 -0.672000 -0.728000 -0.024000 --0.849200 -0.602500 -0.304800 -0.536000 -0.720000 -0.432000 --0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000 --0.800000 -0.636000 -0.304800 -0.536000 -0.792000 -0.272000 --0.800000 -0.632800 -0.243900 -0.432000 -0.896000 0.072000 --0.750000 -0.652200 -0.304800 -0.040000 -0.952000 -0.288000 --0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000 --0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000 --0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000 --0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000 --0.850000 -0.602500 -0.285600 -0.672000 -0.728000 -0.024000 --0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000 --0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000 --0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000 --0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000 --0.800000 0.100400 -0.252800 0.360000 0.584000 -0.720000 --0.785800 0.100400 -0.243900 0.360000 0.584000 -0.720000 --0.785800 0.100400 -0.243900 0.360000 0.584000 -0.720000 --0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000 --0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000 --0.750000 0.050200 -0.267100 0.368000 0.432000 -0.816000 --0.711800 0.050200 -0.243900 0.416000 0.432000 -0.792000 --0.711800 0.050200 -0.243900 0.416000 0.432000 -0.792000 --0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000 --0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000 --0.700000 -0.175200 -0.304800 0.352000 0.528000 -0.768000 --0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000 --0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000 --0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000 --0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000 --0.651700 -0.200800 -0.304800 0.320000 0.544000 -0.768000 --0.650000 -0.201600 -0.304800 0.104000 0.688000 -0.704000 --0.700000 -0.200800 -0.326900 0.208000 0.528000 -0.816000 --0.650000 -0.251000 -0.354800 0.152000 0.632000 -0.752000 --0.700000 -0.251000 -0.364900 0.104000 0.560000 -0.816000 --0.650000 -0.261300 -0.365800 0.088000 0.568000 -0.808000 --0.700000 -0.252100 -0.365800 0.096000 0.552000 -0.824000 --0.700000 -0.251000 -0.364900 0.104000 0.560000 -0.816000 --0.707800 -0.251000 -0.365800 0.064000 0.432000 -0.896000 --0.700000 -0.200800 -0.326900 0.208000 0.528000 -0.816000 --0.750000 -0.240500 -0.365800 0.056000 0.272000 -0.952000 --0.750000 -0.200800 -0.348300 0.272000 0.384000 -0.872000 --0.800000 -0.234100 -0.365800 -0.112000 0.264000 -0.952000 --0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000 --0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000 --0.650000 -0.035200 -0.243900 0.544000 0.264000 -0.792000 --0.650000 -0.035200 -0.243900 0.544000 0.264000 -0.792000 --0.650000 -0.050200 -0.249300 0.496000 0.208000 -0.840000 --0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000 --0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000 --0.544700 -0.200800 -0.304800 -0.080000 0.824000 -0.552000 --0.544700 -0.200800 -0.304800 -0.080000 0.824000 -0.552000 --0.550000 -0.200800 -0.303600 -0.040000 0.880000 -0.464000 --0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000 --0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000 --0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000 --0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000 --0.350000 -0.100400 -0.248500 -0.576000 0.440000 -0.680000 --0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000 --0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000 --0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000 --0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000 --0.350000 -0.535600 -0.243900 0.360000 -0.840000 0.384000 --0.350000 -0.552300 -0.283400 -0.096000 -0.680000 0.720000 --0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000 --0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000 --0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000 --0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000 --0.266700 -0.050200 -0.304800 -0.504000 0.288000 -0.808000 --0.300000 -0.100400 -0.298100 -0.480000 0.288000 -0.824000 --0.288100 -0.100400 -0.304800 -0.408000 0.240000 -0.872000 --0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000 --0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000 --0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000 --0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000 --0.250000 -0.679700 -0.243900 0.728000 -0.208000 0.640000 --0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000 --0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000 --0.213400 0.000000 -0.304800 -0.304000 0.448000 -0.832000 --0.213400 0.000000 -0.304800 -0.304000 0.448000 -0.832000 --0.250000 0.000000 -0.286200 -0.320000 0.712000 -0.616000 --0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000 --0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000 --0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000 --0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000 --0.150000 -0.200800 -0.284500 0.024000 -0.216000 -0.968000 --0.150000 -0.159100 -0.304800 0.152000 -0.400000 -0.896000 --0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000 --0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000 --0.172800 -0.552300 -0.243900 0.592000 -0.568000 0.560000 --0.172800 -0.552300 -0.243900 0.592000 -0.568000 0.560000 --0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000 --0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000 --0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000 --0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000 --0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000 --0.100000 0.150600 -0.251000 -0.024000 0.408000 -0.904000 --0.100000 0.164100 -0.243900 -0.032000 0.432000 -0.896000 --0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000 --0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000 --0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000 --0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000 --0.100000 0.100400 -0.276400 0.032000 0.376000 -0.920000 --0.150000 0.050200 -0.299600 -0.080000 0.408000 -0.904000 --0.100000 0.050200 -0.292200 0.304000 0.312000 -0.896000 --0.150000 0.040500 -0.304800 -0.136000 0.416000 -0.896000 --0.100000 0.022400 -0.304800 0.184000 0.304000 -0.928000 --0.150000 0.000000 -0.322200 0.064000 0.240000 -0.968000 --0.100000 0.000000 -0.309600 0.168000 0.152000 -0.968000 --0.150000 -0.050200 -0.328000 0.128000 0.064000 -0.984000 --0.100000 -0.050200 -0.318600 0.080000 0.144000 -0.984000 --0.150000 -0.100400 -0.338700 0.056000 -0.088000 -0.992000 --0.100000 -0.100400 -0.323700 -0.040000 -0.152000 -0.984000 --0.150000 -0.150600 -0.309500 -0.032000 -0.400000 -0.912000 --0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000 --0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000 --0.077600 0.000000 -0.304800 0.248000 0.344000 -0.896000 --0.077600 0.000000 -0.304800 0.248000 0.344000 -0.896000 --0.050000 -0.015100 -0.304800 0.280000 0.536000 -0.784000 --0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000 --0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000 --0.013800 -0.351500 -0.243900 0.552000 -0.808000 -0.168000 --0.013800 -0.351500 -0.243900 0.552000 -0.808000 -0.168000 --0.050000 -0.380500 -0.243900 0.664000 -0.736000 -0.104000 --0.026900 -0.351500 -0.304800 0.608000 -0.688000 -0.384000 --0.050000 -0.374600 -0.304800 0.584000 -0.672000 -0.448000 --0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000 --0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000 -0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000 -0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000 -0.004800 -0.050200 -0.304800 0.368000 0.176000 -0.904000 -0.050000 -0.100400 -0.298100 0.360000 0.248000 -0.896000 -0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000 -0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000 -0.113100 0.000000 -0.243900 -0.392000 0.768000 -0.496000 -0.113100 0.000000 -0.243900 -0.392000 0.768000 -0.496000 -0.150000 0.000000 -0.257100 -0.208000 0.552000 -0.800000 -0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000 -0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000 -0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000 -0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000 -0.185500 -0.100400 -0.304800 0.296000 0.104000 -0.944000 -0.200000 -0.139100 -0.304800 0.208000 0.104000 -0.968000 -0.150000 -0.100400 -0.322200 0.000000 0.224000 -0.968000 -0.200000 -0.150600 -0.306400 0.192000 0.112000 -0.968000 -0.150000 -0.150600 -0.323600 -0.232000 0.464000 -0.848000 -0.200000 -0.200800 -0.335700 -0.120000 0.200000 -0.968000 -0.150000 -0.200800 -0.325200 0.160000 0.176000 -0.968000 -0.200000 -0.251000 -0.346500 -0.184000 0.088000 -0.976000 -0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000 -0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000 -0.211400 -0.050200 -0.304800 0.152000 0.184000 -0.968000 -0.211400 -0.050200 -0.304800 0.152000 0.184000 -0.968000 -0.200000 -0.061600 -0.304800 0.000000 -0.144000 -0.984000 -0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000 -0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000 -0.250000 -0.100400 -0.298400 -0.088000 0.216000 -0.968000 -0.200000 -0.139100 -0.304800 0.208000 0.104000 -0.968000 -0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000 -0.200000 -0.150600 -0.306400 0.192000 0.112000 -0.968000 -0.250000 -0.150600 -0.317700 0.024000 0.336000 -0.936000 -0.200000 -0.200800 -0.335700 -0.120000 0.200000 -0.968000 -0.250000 -0.200800 -0.343100 0.104000 0.232000 -0.960000 -0.200000 -0.251000 -0.346500 -0.184000 0.088000 -0.976000 -0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000 -0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000 -0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000 -0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000 -0.266500 -0.050200 -0.304800 -0.280000 0.064000 -0.952000 -0.250000 -0.100400 -0.298400 -0.088000 0.216000 -0.968000 -0.278900 -0.100400 -0.304800 -0.176000 0.256000 -0.944000 -0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000 -0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000 -0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000 -0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000 -0.313400 -0.150600 -0.304800 0.400000 -0.360000 -0.840000 -0.350000 -0.150600 -0.283600 -0.064000 -0.424000 -0.896000 -0.320800 -0.200800 -0.304800 0.496000 0.328000 -0.800000 -0.350000 -0.200800 -0.271400 0.216000 0.224000 -0.944000 -0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000 -0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000 -0.300000 -0.357600 -0.243900 -0.288000 -0.920000 0.248000 -0.300000 -0.357600 -0.243900 -0.288000 -0.920000 0.248000 -0.343800 -0.401700 -0.243900 -0.728000 -0.584000 0.344000 -0.300000 -0.355300 -0.304800 -0.272000 -0.752000 -0.592000 -0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000 -0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000 -0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000 -0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000 -0.350000 -0.150600 -0.283600 -0.064000 -0.424000 -0.896000 -0.380400 -0.150600 -0.304800 -0.424000 -0.456000 -0.776000 -0.380400 -0.150600 -0.304800 -0.424000 -0.456000 -0.776000 -0.419200 0.050200 -0.304800 -0.224000 0.736000 -0.632000 -0.419200 0.050200 -0.304800 -0.224000 0.736000 -0.632000 -0.400000 0.050200 -0.294000 -0.352000 0.672000 -0.640000 -0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000 -0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000 -0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000 -0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000 -0.400000 -0.200800 -0.276700 0.448000 -0.472000 -0.752000 -0.424400 -0.200800 -0.304800 -0.552000 -0.520000 -0.648000 -0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000 -0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000 -0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000 -0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000 -0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000 -0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000 -0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000 -0.550000 -0.162200 -0.304800 0.376000 0.720000 -0.576000 -0.500000 -0.150600 -0.319100 0.336000 0.504000 -0.792000 -0.550000 -0.194000 -0.365800 0.224000 0.896000 -0.368000 -0.500000 -0.200800 -0.334200 -0.376000 -0.448000 -0.800000 -0.535800 -0.200800 -0.365800 -0.736000 0.208000 -0.632000 -0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000 -0.550000 -0.216200 -0.365800 -0.080000 -0.576000 -0.808000 -0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000 -0.550000 -0.251000 -0.326800 -0.648000 -0.504000 -0.560000 -0.550000 -0.216200 -0.365800 -0.080000 -0.576000 -0.808000 -0.573000 -0.251000 -0.365800 -0.696000 0.544000 -0.464000 -0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000 -0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000 -0.594200 -0.200800 -0.304800 0.544000 0.576000 -0.600000 -0.600000 -0.206100 -0.304800 0.488000 0.616000 -0.608000 -0.600000 -0.200800 -0.298700 0.448000 0.592000 -0.656000 -0.650000 -0.208600 -0.304800 0.024000 0.680000 -0.728000 -0.650000 -0.200800 -0.297000 0.088000 0.616000 -0.776000 -0.600000 -0.200800 -0.298700 0.448000 0.592000 -0.656000 -0.650000 -0.150600 -0.274900 0.544000 0.464000 -0.688000 -0.600000 -0.150600 -0.265200 0.248000 0.032000 -0.960000 -0.600000 -0.200800 -0.298700 0.448000 0.592000 -0.656000 -0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000 -0.594200 -0.200800 -0.304800 0.544000 0.576000 -0.600000 -0.550000 -0.162200 -0.304800 0.376000 0.720000 -0.576000 -0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000 -0.550000 -0.194000 -0.365800 0.224000 0.896000 -0.368000 -0.550000 -0.200800 -0.388300 0.280000 0.584000 -0.752000 -0.535800 -0.200800 -0.365800 -0.736000 0.208000 -0.632000 -0.550000 -0.216200 -0.365800 -0.080000 -0.576000 -0.808000 -0.550000 -0.200800 -0.388300 0.280000 0.584000 -0.752000 -0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000 -0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000 -0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000 -0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000 -0.500000 -0.251000 -0.264200 -0.272000 -0.744000 -0.600000 -0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000 -0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000 -0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000 -0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000 -0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000 -0.850000 -0.401700 -0.268600 0.504000 0.432000 -0.744000 -0.837100 -0.451900 -0.304800 0.528000 0.264000 -0.800000 -0.850000 -0.451900 -0.293100 0.448000 0.248000 -0.848000 -0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000 -0.850000 -0.490600 -0.304800 0.216000 0.112000 -0.968000 -0.800000 -0.502100 -0.293400 -0.120000 -0.840000 -0.520000 -0.832800 -0.502100 -0.304800 -0.104000 -0.544000 -0.824000 -0.832800 -0.502100 -0.304800 -0.104000 -0.544000 -0.824000 -0.858900 0.050200 -0.243900 -0.424000 0.568000 -0.696000 -0.858900 0.050200 -0.243900 -0.424000 0.568000 -0.696000 -0.900000 0.050200 -0.268900 0.208000 0.672000 -0.696000 -0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000 -0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000 -0.981700 -0.050200 -0.304800 0.528000 0.432000 -0.720000 -0.981700 -0.050200 -0.304800 0.528000 0.432000 -0.720000 -1.000000 -0.073100 -0.304800 0.536000 0.424000 -0.720000 -1.000000 -0.050200 -0.288900 0.520000 0.432000 -0.728000 -1.000000 -0.050200 -0.288900 0.520000 0.432000 -0.728000 --0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000 --0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000 --0.900000 0.100400 -0.308600 0.312000 0.536000 -0.776000 --0.892300 0.100400 -0.304800 0.320000 0.536000 -0.776000 --0.892300 0.100400 -0.304800 0.320000 0.536000 -0.776000 --0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000 --0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000 --0.850000 -0.251000 -0.359600 -0.320000 0.248000 -0.912000 --0.826000 -0.301200 -0.365800 -0.648000 -0.448000 -0.600000 --0.828000 -0.251000 -0.365800 -0.248000 0.216000 -0.936000 --0.800000 -0.301200 -0.380800 -0.264000 0.104000 -0.952000 --0.800000 -0.251000 -0.370300 -0.064000 0.200000 -0.976000 --0.750000 -0.301200 -0.392900 -0.104000 0.352000 -0.928000 --0.750000 -0.251000 -0.369800 0.056000 0.280000 -0.952000 --0.750000 -0.251000 -0.369800 0.056000 0.280000 -0.952000 --0.800000 -0.066700 -0.304800 0.296000 0.144000 -0.936000 --0.800000 -0.066700 -0.304800 0.296000 0.144000 -0.936000 --0.800000 -0.100400 -0.313000 0.368000 0.216000 -0.896000 --0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000 --0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000 --0.750000 -0.129200 -0.304800 0.392000 0.376000 -0.832000 --0.750000 -0.129200 -0.304800 0.392000 0.376000 -0.832000 --0.750000 -0.150600 -0.317800 0.416000 0.384000 -0.816000 --0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000 --0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000 --0.576800 -0.251000 -0.365800 -0.136000 0.624000 -0.760000 --0.576800 -0.251000 -0.365800 -0.136000 0.624000 -0.760000 --0.600000 -0.251000 -0.360600 -0.120000 0.624000 -0.760000 --0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000 --0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000 --0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000 --0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000 --0.455200 -0.652700 -0.304800 -0.280000 -0.952000 0.040000 --0.500000 -0.633000 -0.365800 -0.088000 -0.968000 -0.200000 --0.450000 -0.652700 -0.319500 -0.256000 -0.952000 -0.136000 --0.450000 -0.645700 -0.365800 -0.144000 -0.904000 -0.392000 --0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000 --0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000 --0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000 --0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000 --0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000 --0.357100 -0.602500 -0.365800 0.904000 0.256000 -0.312000 --0.351600 -0.602500 -0.304800 0.944000 0.304000 0.024000 --0.350000 -0.629600 -0.365800 0.056000 0.640000 -0.760000 --0.350000 -0.605300 -0.304800 0.248000 0.960000 -0.032000 --0.328400 -0.602500 -0.365800 -0.832000 -0.248000 -0.488000 --0.344900 -0.602500 -0.304800 -0.744000 0.664000 -0.032000 --0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000 --0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000 --0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000 --0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000 --0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000 --0.350000 -0.703000 -0.357000 -0.336000 -0.496000 -0.792000 --0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000 --0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000 --0.331500 -0.150600 -0.304800 -0.256000 0.464000 -0.840000 --0.331500 -0.150600 -0.304800 -0.256000 0.464000 -0.840000 --0.300000 -0.150600 -0.319300 -0.256000 0.480000 -0.832000 --0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000 --0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000 --0.250000 -0.639500 -0.365800 0.216000 -0.224000 -0.944000 --0.250000 -0.639500 -0.365800 0.216000 -0.224000 -0.944000 --0.282800 -0.652700 -0.365800 0.080000 -0.160000 -0.976000 --0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000 --0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000 --0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000 --0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000 --0.200000 -0.150600 -0.333300 0.216000 -0.272000 -0.936000 --0.250000 -0.200800 -0.333200 0.168000 0.080000 -0.976000 --0.200000 -0.200800 -0.306700 0.368000 -0.184000 -0.904000 --0.250000 -0.251000 -0.337900 0.384000 0.112000 -0.912000 --0.200000 -0.251000 -0.307600 0.408000 0.096000 -0.904000 --0.250000 -0.301200 -0.349000 0.296000 0.272000 -0.912000 --0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000 --0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000 --0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000 --0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000 --0.200000 -0.558000 -0.365800 0.448000 -0.240000 -0.856000 --0.229500 -0.602500 -0.365800 0.408000 -0.240000 -0.872000 --0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000 --0.250000 -0.602500 -0.376000 0.360000 -0.328000 -0.872000 --0.250000 -0.552300 -0.402600 0.504000 -0.312000 -0.792000 --0.250000 -0.552300 -0.402600 0.504000 -0.312000 -0.792000 --0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000 --0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000 --0.150000 -0.552300 -0.337600 0.424000 -0.304000 -0.840000 --0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000 --0.196100 -0.552300 -0.365800 0.320000 -0.272000 -0.904000 --0.200000 -0.558000 -0.365800 0.448000 -0.240000 -0.856000 --0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000 --0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000 --0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000 --0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000 --0.145700 -0.451900 -0.365800 0.464000 0.040000 -0.880000 --0.100000 -0.502100 -0.325200 0.520000 -0.368000 -0.760000 --0.100000 -0.451900 -0.336100 0.496000 -0.048000 -0.856000 --0.074100 -0.502100 -0.304800 0.864000 -0.480000 0.112000 --0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000 --0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000 --0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000 --0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000 --0.050000 -0.200800 -0.320900 -0.056000 0.280000 -0.952000 --0.100000 -0.251000 -0.333700 -0.512000 0.248000 -0.816000 --0.050000 -0.251000 -0.364300 -0.216000 0.352000 -0.904000 --0.100000 -0.301200 -0.349000 -0.368000 0.264000 -0.888000 --0.050000 -0.266900 -0.365800 -0.288000 0.088000 -0.944000 --0.058500 -0.301200 -0.365800 -0.384000 -0.288000 -0.872000 --0.050000 -0.301200 -0.370400 -0.392000 -0.264000 -0.872000 --0.050000 -0.309800 -0.365800 -0.336000 -0.416000 -0.840000 --0.058500 -0.301200 -0.365800 -0.384000 -0.288000 -0.872000 --0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000 --0.100000 -0.301200 -0.349000 -0.368000 0.264000 -0.888000 --0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000 --0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000 -0.050000 -0.119800 -0.304800 0.416000 0.264000 -0.864000 -0.050000 -0.119800 -0.304800 0.416000 0.264000 -0.864000 -0.050000 -0.150600 -0.318000 0.352000 0.312000 -0.872000 -0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000 -0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000 -0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000 -0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000 -0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000 -0.350000 0.024300 -0.304800 -0.456000 0.784000 -0.408000 -0.400000 0.000000 -0.343200 -0.216000 0.592000 -0.768000 -0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000 -0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000 -0.383500 -0.050200 -0.365800 0.200000 -0.288000 -0.928000 -0.383500 -0.050200 -0.365800 0.200000 -0.288000 -0.928000 -0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000 -0.350000 -0.037900 -0.365800 -0.440000 0.432000 -0.776000 -0.400000 0.000000 -0.343200 -0.216000 0.592000 -0.768000 -0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000 -0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000 -0.355700 -0.351500 -0.365800 0.360000 -0.072000 -0.928000 -0.355700 -0.351500 -0.365800 0.360000 -0.072000 -0.928000 -0.400000 -0.351500 -0.338800 0.360000 -0.568000 -0.728000 -0.350000 -0.334300 -0.365800 -0.304000 0.096000 -0.944000 -0.400000 -0.301200 -0.307300 0.704000 0.496000 -0.496000 -0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000 -0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000 -0.376800 -0.401700 -0.304800 0.336000 -0.848000 -0.392000 -0.376800 -0.401700 -0.304800 0.336000 -0.848000 -0.392000 -0.350000 -0.401700 -0.317400 -0.608000 -0.560000 -0.544000 -0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000 -0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000 -0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000 -0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000 -0.450000 -0.050200 -0.325200 -0.120000 -0.568000 -0.808000 -0.400000 -0.100400 -0.340000 -0.040000 -0.360000 -0.928000 -0.450000 -0.100400 -0.322200 0.392000 -0.360000 -0.840000 -0.400000 -0.150600 -0.318400 -0.432000 -0.416000 -0.792000 -0.450000 -0.150600 -0.321300 -0.008000 0.120000 -0.992000 -0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000 -0.450000 -0.200800 -0.331300 -0.472000 -0.400000 -0.776000 -0.424400 -0.200800 -0.304800 -0.552000 -0.520000 -0.648000 -0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000 -0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000 -0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000 -0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000 -0.450000 0.050200 -0.314200 0.064000 0.744000 -0.656000 -0.496000 0.050200 -0.304800 0.104000 0.800000 -0.576000 -0.496000 0.050200 -0.304800 0.104000 0.800000 -0.576000 -0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000 -0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000 -0.458900 -0.351500 -0.304800 -0.472000 0.360000 -0.792000 -0.500000 -0.351500 -0.354900 -0.384000 -0.472000 -0.784000 -0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000 -0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000 -0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000 -0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000 -0.450000 -0.401700 -0.316200 -0.184000 -0.360000 -0.904000 -0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000 -0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000 -0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000 -0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000 -0.500000 -0.150600 -0.319100 0.336000 0.504000 -0.792000 -0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000 -0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000 -0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000 -0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000 -0.589400 -0.100400 -0.304800 -0.440000 -0.424000 -0.784000 -0.600000 -0.100400 -0.312700 0.376000 -0.472000 -0.792000 -0.600000 -0.105700 -0.304800 0.312000 -0.728000 -0.600000 -0.604900 -0.100400 -0.304800 0.744000 -0.360000 -0.552000 -0.600000 -0.100400 -0.312700 0.376000 -0.472000 -0.792000 -0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000 -0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000 -0.600000 -0.206100 -0.304800 0.488000 0.616000 -0.608000 -0.600000 -0.206100 -0.304800 0.488000 0.616000 -0.608000 -0.650000 -0.208600 -0.304800 0.024000 0.680000 -0.728000 -0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000 -0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000 -0.600000 -0.249700 -0.426800 -0.344000 0.872000 -0.328000 -0.650000 -0.251000 -0.378600 0.328000 0.752000 -0.560000 -0.604800 -0.251000 -0.426800 0.544000 0.248000 -0.792000 -0.650000 -0.267900 -0.365800 0.280000 -0.440000 -0.848000 -0.600000 -0.252700 -0.426800 -0.416000 -0.736000 -0.520000 -0.600000 -0.288400 -0.365800 -0.376000 -0.712000 -0.584000 -0.598300 -0.251000 -0.426800 -0.848000 0.144000 -0.496000 -0.573000 -0.251000 -0.365800 -0.696000 0.544000 -0.464000 -0.600000 -0.249700 -0.426800 -0.344000 0.872000 -0.328000 -0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000 -0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000 -0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000 -0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000 -0.700000 -0.251000 -0.357800 0.296000 0.496000 -0.808000 -0.728900 -0.251000 -0.304800 0.720000 0.440000 -0.528000 -0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000 -0.744500 -0.301200 -0.304800 0.640000 0.104000 -0.760000 -0.744500 -0.301200 -0.304800 0.640000 0.104000 -0.760000 -0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000 -0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000 -0.750000 -0.351500 -0.307800 0.512000 0.128000 -0.840000 -0.754800 -0.351500 -0.304800 0.424000 0.136000 -0.888000 -0.750000 -0.401700 -0.321600 0.336000 0.000000 -0.936000 -0.779200 -0.401700 -0.304800 0.400000 0.336000 -0.848000 -0.779200 -0.401700 -0.304800 0.400000 0.336000 -0.848000 -0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000 -0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000 -0.800000 -0.451900 -0.330300 0.328000 0.200000 -0.920000 -0.837100 -0.451900 -0.304800 0.528000 0.264000 -0.800000 -0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000 -0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000 -0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000 -0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000 -0.850000 -0.502100 -0.307100 0.032000 -0.240000 -0.968000 -0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000 -0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000 -0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000 -0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000 -0.900000 0.000000 -0.329500 -0.080000 0.648000 -0.744000 -0.927400 0.000000 -0.304800 0.400000 0.560000 -0.720000 -0.927400 0.000000 -0.304800 0.400000 0.560000 -0.720000 --0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000 --0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000 --0.864000 -0.502100 -0.365800 -0.304000 0.480000 -0.816000 --0.850000 -0.502100 -0.370900 -0.184000 0.560000 -0.800000 --0.860100 -0.552300 -0.365800 -0.680000 -0.432000 -0.584000 --0.850000 -0.552300 -0.378600 -0.568000 -0.344000 -0.736000 --0.850000 -0.564700 -0.365800 -0.608000 -0.528000 -0.584000 --0.800000 -0.552300 -0.401000 -0.552000 -0.288000 -0.776000 --0.806700 -0.602500 -0.365800 -0.520000 -0.656000 -0.536000 --0.800000 -0.602500 -0.372400 -0.488000 -0.592000 -0.624000 --0.800000 -0.607700 -0.365800 -0.488000 -0.640000 -0.584000 --0.750000 -0.602500 -0.401000 -0.336000 -0.696000 -0.624000 --0.750000 -0.628000 -0.365800 -0.232000 -0.808000 -0.528000 --0.714100 -0.602500 -0.426800 -0.368000 -0.680000 -0.624000 --0.700000 -0.639000 -0.365800 -0.040000 -0.920000 -0.376000 --0.700000 -0.609100 -0.426800 -0.336000 -0.744000 -0.568000 --0.650000 -0.641900 -0.365800 -0.024000 -0.952000 -0.280000 --0.650000 -0.621300 -0.426800 -0.080000 -0.904000 -0.400000 --0.650000 -0.621300 -0.426800 -0.080000 -0.904000 -0.400000 --0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000 --0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000 --0.800000 -0.496400 -0.365800 -0.664000 0.416000 -0.608000 --0.850000 -0.502100 -0.370900 -0.184000 0.560000 -0.800000 --0.800000 -0.502100 -0.369300 -0.768000 0.256000 -0.576000 --0.850000 -0.552300 -0.378600 -0.568000 -0.344000 -0.736000 --0.800000 -0.552300 -0.401000 -0.552000 -0.288000 -0.776000 --0.800000 -0.502100 -0.369300 -0.768000 0.256000 -0.576000 --0.750000 -0.552300 -0.422100 -0.552000 -0.096000 -0.824000 --0.750000 -0.502100 -0.424900 -0.848000 -0.112000 -0.512000 --0.744500 -0.552300 -0.426800 -0.560000 -0.080000 -0.816000 --0.748800 -0.502100 -0.426800 -0.584000 -0.048000 -0.800000 --0.750000 -0.502100 -0.424900 -0.848000 -0.112000 -0.512000 --0.750000 -0.498100 -0.426800 -0.864000 -0.184000 -0.448000 --0.800000 -0.502100 -0.369300 -0.768000 0.256000 -0.576000 --0.764100 -0.451900 -0.426800 -0.880000 -0.256000 -0.384000 --0.800000 -0.496400 -0.365800 -0.664000 0.416000 -0.608000 --0.786000 -0.451900 -0.365800 -0.872000 0.080000 -0.472000 --0.764100 -0.451900 -0.426800 -0.880000 -0.256000 -0.384000 --0.796500 -0.401700 -0.365800 -0.952000 -0.168000 -0.232000 --0.777800 -0.401700 -0.426800 -0.928000 0.040000 -0.360000 --0.777800 -0.401700 -0.426800 -0.928000 0.040000 -0.360000 --0.800000 -0.602500 -0.372400 -0.488000 -0.592000 -0.624000 --0.800000 -0.602500 -0.372400 -0.488000 -0.592000 -0.624000 --0.800000 -0.552300 -0.401000 -0.552000 -0.288000 -0.776000 --0.750000 -0.602500 -0.401000 -0.336000 -0.696000 -0.624000 --0.750000 -0.552300 -0.422100 -0.552000 -0.096000 -0.824000 --0.714100 -0.602500 -0.426800 -0.368000 -0.680000 -0.624000 --0.744500 -0.552300 -0.426800 -0.560000 -0.080000 -0.816000 --0.744500 -0.552300 -0.426800 -0.560000 -0.080000 -0.816000 --0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000 --0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000 --0.350000 -0.251000 -0.367200 0.240000 0.168000 -0.952000 --0.345700 -0.251000 -0.365800 0.320000 0.336000 -0.880000 --0.345700 -0.251000 -0.365800 0.320000 0.336000 -0.880000 --0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000 --0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000 --0.250000 -0.351500 -0.379700 0.552000 0.712000 -0.416000 --0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000 --0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000 --0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000 --0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000 --0.200000 -0.393200 -0.426800 0.696000 0.632000 -0.328000 --0.151700 -0.401700 -0.365800 0.568000 0.104000 -0.808000 --0.194300 -0.401700 -0.426800 0.792000 0.416000 -0.432000 --0.194300 -0.401700 -0.426800 0.792000 0.416000 -0.432000 --0.044700 -0.251000 -0.365800 -0.216000 0.376000 -0.896000 --0.044700 -0.251000 -0.365800 -0.216000 0.376000 -0.896000 -0.000000 -0.251000 -0.386300 -0.352000 0.496000 -0.792000 -0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000 -0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000 -0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000 -0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000 -0.100000 -0.251000 -0.380100 0.472000 -0.384000 -0.784000 -0.118000 -0.251000 -0.365800 0.536000 -0.224000 -0.808000 -0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000 -0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000 -0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000 -0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000 -0.350000 -0.351500 -0.368100 -0.440000 0.096000 -0.888000 -0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000 -0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000 -0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000 -0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000 -0.431500 0.000000 -0.365800 -0.424000 0.312000 -0.840000 -0.450000 0.000000 -0.377000 -0.360000 0.400000 -0.840000 -0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000 -0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000 -0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000 -0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000 -0.650000 -0.251000 -0.378600 0.328000 0.752000 -0.560000 -0.678000 -0.251000 -0.365800 0.264000 0.520000 -0.808000 -0.650000 -0.267900 -0.365800 0.280000 -0.440000 -0.848000 diff --git a/lib/glut-3.7.6/progs/mesademos/isosurf.dsp b/lib/glut-3.7.6/progs/mesademos/isosurf.dsp deleted file mode 100644 index 3e9b73d6c5f4e9aedb11303d9112418502a389c2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/isosurf.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="isosurf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=isosurf - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "isosurf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "isosurf.mak" CFG="isosurf - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "isosurf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "isosurf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "isosurf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "isosurf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "isosurf - Win32 Release" -# Name "isosurf - Win32 Debug" -# Begin Source File - -SOURCE=.\isosurf.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/offset.c b/lib/glut-3.7.6/progs/mesademos/offset.c deleted file mode 100644 index f7a8af45f09c7f3974a8344fb980dc2da5dccfc1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/offset.c +++ /dev/null @@ -1,299 +0,0 @@ -/**************************************************************************** -Copyright 1995 by Silicon Graphics Incorporated, Mountain View, California. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Silicon Graphics not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -****************************************************************************/ - -/** - * Derived from code written by Kurt Akeley, November 1992 - * - * Uses PolygonOffset to draw hidden-line images. PolygonOffset - * shifts the z values of polygons an amount that is - * proportional to their slope in screen z. This keeps - * the lines, which are drawn without displacement, from - * interacting with their respective polygons, and - * thus eliminates line dropouts. - * - * The left image shows an ordinary antialiased wireframe image. - * The center image shows an antialiased hidden-line image without - * PolygonOffset. - * The right image shows an antialiased hidden-line image using - * PolygonOffset to reduce artifacts. - * - * Drag with a mouse button pressed to rotate the models. - * Press the escape key to exit. - */ - -/* - * Modified for OpenGL 1.1 glPolygonOffset() conventions - */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -#include -#include -#include -#include - -#ifndef EXIT_FAILURE -#define EXIT_FAILURE 1 -#endif -#ifndef EXIT_SUCCESS -#define EXIT_SUCCESS 0 -#endif - -#define MAXQUAD 6 - -typedef float Vertex[3]; - -typedef Vertex Quad[4]; - -/* data to define the six faces of a unit cube */ -Quad quads[MAXQUAD] = -{ - { 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0 }, - { 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1 }, - { 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1 }, - { 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1 }, - { 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0 }, - { 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0 } -}; -static int deltax = 90, deltay = 40; -static int prevx, prevy; - -#define WIREFRAME 0 -#define HIDDEN_LINE 1 - -static void error(const char *prog, const char *msg); -static void cubes(int mx, int my, int mode); -static void fill(Quad quad); -static void outline(Quad quad); -static void draw_hidden(Quad quad, int mode); -static void draw_scene(void); - -static int dimension = 3; - -#define MODE_11 0 /* OpenGL 1.1 */ -#define MODE_EXT 1 /* Polygon offset extension */ -#define MODE_NONE 2 /* No polygon offset support */ -static int version; - -int -supportsOneDotOne(void) -{ - const char *version; - int major, minor; - - version = (char *) glGetString(GL_VERSION); - if (sscanf(version, "%d.%d", &major, &minor) == 2) - return major >= 1 && minor >= 1; - return 0; /* OpenGL version string malformed! */ -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - - glutCreateWindow("offset"); - glutDisplayFunc(draw_scene); - -#ifdef GL_VERSION_1_1 - if (supportsOneDotOne()) { - glPolygonOffset(2.0, 1); - version = MODE_11; - } else -#endif - { -#ifdef GL_EXT_polygon_offset - /* check for the polygon offset extension */ - if (glutExtensionSupported("GL_EXT_polygon_offset")) { - glPolygonOffsetEXT(0.75, 0.00); - version = MODE_EXT; - } else -#endif - { - error(argv[0], "Warning: running with out the polygon offset extension.\n"); - version = MODE_NONE; - } - } - - /* set up viewing parameters */ - glMatrixMode(GL_PROJECTION); - gluPerspective(20, 1, 0.1, 20); - glMatrixMode(GL_MODELVIEW); - glTranslatef(0, 0, -15); - - /* set other relevant state information */ - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_FLAT); - glDisable(GL_DITHER); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -static void -draw_scene(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(-1.7, 0.0, 0.0); - cubes(deltax, deltay, WIREFRAME); - glPopMatrix(); - - glPushMatrix(); - cubes(deltax, deltay, HIDDEN_LINE); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(1.7, 0.0, 0.0); - - switch(version) { -#ifdef GL_VERSION_1_1 - case MODE_11: - glEnable(GL_POLYGON_OFFSET_FILL); - break; -#endif -#ifdef GL_EXT_polygon_offset - case MODE_EXT: - glEnable(GL_POLYGON_OFFSET_EXT); - break; -#endif - } - - cubes(deltax, deltay, HIDDEN_LINE); - - switch(version) { -#ifdef GL_VERSION_1_1 - case MODE_11: - glDisable(GL_POLYGON_OFFSET_FILL); - break; -#endif -#ifdef GL_EXT_polygon_offset - case MODE_EXT: - glDisable(GL_POLYGON_OFFSET_EXT); - break; -#endif - } - - glPopMatrix(); - - glutSwapBuffers(); -} - -static void -cubes(int mx, int my, int mode) -{ - int x, y, z, i; - - /* track the mouse */ - glRotatef(mx / 2.0, 0, 1, 0); - glRotatef(my / 2.0, 1, 0, 0); - - /* draw the lines as hidden polygons */ - glTranslatef(-0.5, -0.5, -0.5); - glScalef(1.0 / dimension, 1.0 / dimension, 1.0 / dimension); - for (z = 0; z < dimension; z++) { - for (y = 0; y < dimension; y++) { - for (x = 0; x < dimension; x++) { - glPushMatrix(); - glTranslatef(x, y, z); - glScalef(0.8, 0.8, 0.8); - for (i = 0; i < MAXQUAD; i++) - draw_hidden(quads[i], mode); - glPopMatrix(); - } - } - } -} - -static void -fill(Quad quad) -{ - /* draw a filled polygon */ - glBegin(GL_QUADS); - glVertex3fv(quad[0]); - glVertex3fv(quad[1]); - glVertex3fv(quad[2]); - glVertex3fv(quad[3]); - glEnd(); -} - -static void -outline(Quad quad) -{ - /* draw an outlined polygon */ - glBegin(GL_LINE_LOOP); - glVertex3fv(quad[0]); - glVertex3fv(quad[1]); - glVertex3fv(quad[2]); - glVertex3fv(quad[3]); - glEnd(); -} - -static void -draw_hidden(Quad quad, int mode) -{ - /* draw the outline using white, optionally fill the interior - with black */ - glColor3f(1, 1, 1); - outline(quad); - - if (mode == HIDDEN_LINE) { - glColor3f(0, 0, 0); - fill(quad); - } -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char key, int x, int y) -{ - if (key == 27) exit(EXIT_SUCCESS); -} - -/* ARGSUSED */ -void -button(int which, int state, int x, int y) -{ - if(state == GLUT_DOWN) { - prevx = x; - prevy = y; - } -} - -void -motion(int x, int y) -{ - deltax += (x - prevx); - prevx = x; - deltay += (y - prevy); - prevy = y; - glutPostRedisplay(); -} - -static void -error(const char *prog, const char *msg) -{ - fprintf(stderr, "%s: %s\n", prog, msg); -} - diff --git a/lib/glut-3.7.6/progs/mesademos/offset.dsp b/lib/glut-3.7.6/progs/mesademos/offset.dsp deleted file mode 100644 index 09b5dbc0a14abca799ba114c9209a087886f6d88..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/offset.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="offset" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=offset - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "offset.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "offset.mak" CFG="offset - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "offset - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "offset - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "offset - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "offset - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "offset - Win32 Release" -# Name "offset - Win32 Debug" -# Begin Source File - -SOURCE=.\offset.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/reflect.c b/lib/glut-3.7.6/progs/mesademos/reflect.c deleted file mode 100644 index 06aba70c9bab503ccd4586702f56cf960a747c8d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/reflect.c +++ /dev/null @@ -1,379 +0,0 @@ -/* reflect.c */ - -/** - * Demo of a reflective, texture-mapped surface with OpenGL. - * Brian Paul (brianp@ssec.wisc.edu) August 14, 1995 - * - * Hardware texture mapping is highly recommended! - * - * The basic steps are: - * 1. Render the reflective object (a polygon) from the normal viewpoint, - * setting the stencil planes = 1. - * 2. Render the scene from a special viewpoint: the viewpoint which - * is on the opposite side of the reflective plane. Only draw where - * stencil = 1. This draws the objects in the reflective surface. - * 3. Render the scene from the original viewpoint. This draws the - * objects in the normal fashion. Use blending when drawing - * the reflective, textured surface. - * - * This is a very crude demo. It could be much better. - */ - -/* - * Dirk Reiners (reiners@igd.fhg.de) made some modifications to this code. - * - * August 1996 - A few optimizations by Brian - */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -#define USE_ZBUFFER - -/* OK, without hardware support this is overkill. */ -#define USE_TEXTURE - -#include -#include -#include -#include -#include "image.h" - -#define DEG2RAD (3.14159/180.0) - -#define TABLE_TEXTURE "brick.rgb" - -#define MAX_OBJECTS 2 - -static GLint table_list; -static GLint objects_list[MAX_OBJECTS]; - -static GLfloat xrot, yrot; -static GLfloat spin; - -static void -make_table(void) -{ - static GLfloat table_mat[] = - {1.0, 1.0, 1.0, 0.6}; - static GLfloat gray[] = - {0.4, 0.4, 0.4, 1.0}; - - table_list = glGenLists(1); - glNewList(table_list, GL_COMPILE); - - /* load table's texture */ - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, table_mat); -/* glMaterialfv( GL_FRONT, GL_EMISSION, gray ); */ - glMaterialfv(GL_FRONT, GL_DIFFUSE, table_mat); - glMaterialfv(GL_FRONT, GL_AMBIENT, gray); - - /* draw textured square for the table */ - glPushMatrix(); - glScalef(4.0, 4.0, 4.0); - glBegin(GL_POLYGON); - glNormal3f(0.0, 1.0, 0.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(-1.0, 0.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(1.0, 0.0, 1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(1.0, 0.0, -1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(-1.0, 0.0, -1.0); - glEnd(); - glPopMatrix(); - - glDisable(GL_TEXTURE_2D); - - glEndList(); -} - -static void -make_objects(void) -{ - GLUquadricObj *q; - - static GLfloat cyan[] = - {0.0, 1.0, 1.0, 1.0}; - static GLfloat green[] = - {0.2, 1.0, 0.2, 1.0}; - static GLfloat black[] = - {0.0, 0.0, 0.0, 0.0}; - - q = gluNewQuadric(); - gluQuadricDrawStyle(q, GLU_FILL); - gluQuadricNormals(q, GLU_SMOOTH); - - objects_list[0] = glGenLists(1); - glNewList(objects_list[0], GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cyan); - glMaterialfv(GL_FRONT, GL_EMISSION, black); - gluCylinder(q, 0.5, 0.5, 1.0, 15, 10); - glEndList(); - - objects_list[1] = glGenLists(1); - glNewList(objects_list[1], GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - glMaterialfv(GL_FRONT, GL_EMISSION, black); - gluCylinder(q, 1.5, 0.0, 2.5, 15, 10); - glEndList(); -} - -static GLfloat light_pos[] = -{0.0, 20.0, 0.0, 1.0}; - -static void -init(void) -{ - RGBImageRec *image; - - make_table(); - make_objects(); - - /* Setup texture */ -#ifdef USE_TEXTURE - image = RGBImageLoad(TABLE_TEXTURE); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image->sizeX, image->sizeY, - GL_RGB, GL_UNSIGNED_BYTE, image->data); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -#endif - - xrot = 30.0; - yrot = 50.0; - spin = 0.0; - -#ifndef USE_ZBUFFER - glEnable(GL_CULL_FACE); -#endif - - glShadeModel(GL_FLAT); - - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); - - glClearColor(0.5, 0.5, 0.5, 1.0); - - glEnable(GL_NORMALIZE); -} - -static void -reshape(int w, int h) -{ - GLfloat aspect = (float) w / (float) h; - - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-aspect, aspect, -1.0, 1.0, 4.0, 300.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED */ -static void -draw_objects(GLfloat eyex, GLfloat eyey, GLfloat eyez) -{ -#ifndef USE_ZBUFFER - if (eyex < 0.5) { -#endif - glPushMatrix(); - glTranslatef(1.0, 1.5, 0.0); - glRotatef(spin, 1.0, 0.5, 0.0); - glRotatef(0.5 * spin, 0.0, 0.5, 1.0); - glCallList(objects_list[0]); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-1.0, 0.85 + 3.0 * fabs(cos(0.01 * spin)), 0.0); - glRotatef(0.5 * spin, 0.0, 0.5, 1.0); - glRotatef(spin, 1.0, 0.5, 0.0); - glScalef(0.5, 0.5, 0.5); - glCallList(objects_list[1]); - glPopMatrix(); -#ifndef USE_ZBUFFER - } else { - glPushMatrix(); - glTranslatef(-1.0, 0.85 + 3.0 * fabs(cos(0.01 * spin)), 0.0); - glRotatef(0.5 * spin, 0.0, 0.5, 1.0); - glRotatef(spin, 1.0, 0.5, 0.0); - glScalef(0.5, 0.5, 0.5); - glCallList(objects_list[1]); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(1.0, 1.5, 0.0); - glRotatef(spin, 1.0, 0.5, 0.0); - glRotatef(0.5 * spin, 0.0, 0.5, 1.0); - glCallList(objects_list[0]); - glPopMatrix(); - } -#endif -} - -static void -draw_table(void) -{ - glCallList(table_list); -} - -static void -draw_scene(void) -{ - GLfloat dist = 20.0; - GLfloat eyex, eyey, eyez; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - eyex = dist * cos(yrot * DEG2RAD) * cos(xrot * DEG2RAD); - eyez = dist * sin(yrot * DEG2RAD) * cos(xrot * DEG2RAD); - eyey = dist * sin(xrot * DEG2RAD); - - /* view from top */ - glPushMatrix(); - gluLookAt(eyex, eyey, eyez, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); - - glLightfv(GL_LIGHT0, GL_POSITION, light_pos); - - /* draw table into stencil planes */ - glEnable(GL_STENCIL_TEST); -#ifdef USE_ZBUFFER - glDisable(GL_DEPTH_TEST); -#endif - glStencilFunc(GL_ALWAYS, 1, 0xffffffff); - glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - draw_table(); - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - -#ifdef USE_ZBUFFER - glEnable(GL_DEPTH_TEST); -#endif - - /* render view from below (reflected viewport) */ - /* only draw where stencil==1 */ - if (eyey > 0.0) { - glPushMatrix(); - - glStencilFunc(GL_EQUAL, 1, 0xffffffff); /* draw if ==1 */ - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glScalef(1.0, -1.0, 1.0); - - /* Reposition light in reflected space. */ - glLightfv(GL_LIGHT0, GL_POSITION, light_pos); - - draw_objects(eyex, eyey, eyez); - glPopMatrix(); - - /* Restore light's original unreflected position. */ - glLightfv(GL_LIGHT0, GL_POSITION, light_pos); - } - glDisable(GL_STENCIL_TEST); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - -#ifdef USE_TEXTURE - glEnable(GL_TEXTURE_2D); -#endif - draw_table(); - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); - - /* view from top */ - glPushMatrix(); - - draw_objects(eyex, eyey, eyez); - - glPopMatrix(); - - glPopMatrix(); - - glutSwapBuffers(); -} - -/* ARGSUSED1 */ -void -key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch(key) { - case GLUT_KEY_UP: - xrot += 3.0; -#ifndef USE_ZBUFFER - if (xrot > 180) - xrot = 180; -#endif - break; - case GLUT_KEY_DOWN: - xrot -= 3.0; -#ifndef USE_ZBUFFER - if (xrot < 0) - xrot = 0; -#endif - break; - case GLUT_KEY_LEFT: - yrot += 3.0; - break; - case GLUT_KEY_RIGHT: - yrot -= 3.0; - break; - default: - return; - } - glutPostRedisplay(); -} - -static void -idle(void) -{ - spin += 2.0; - yrot += 3.0; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -int -main(int argc, char *argv[]) -{ - glutInitWindowSize(400, 300); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB -#ifdef USE_ZBUFFER - | GLUT_DEPTH -#endif - | GLUT_STENCIL); - - glutCreateWindow("reflect"); - glutReshapeFunc(reshape); - glutDisplayFunc(draw_scene); - glutKeyboardFunc(key); - glutSpecialFunc(special); - glutVisibilityFunc(visible); - - init(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/reflect.dsp b/lib/glut-3.7.6/progs/mesademos/reflect.dsp deleted file mode 100644 index f4f066d9a89ec74e070854c07405dada24a09802..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/reflect.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="reflect" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=reflect - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "reflect.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "reflect.mak" CFG="reflect - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "reflect - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "reflect - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "reflect - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "reflect - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "reflect - Win32 Release" -# Name "reflect - Win32 Debug" -# Begin Source File - -SOURCE=.\image.c -# End Source File -# Begin Source File - -SOURCE=.\image.h -# End Source File -# Begin Source File - -SOURCE=.\reflect.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/spin.c b/lib/glut-3.7.6/progs/mesademos/spin.c deleted file mode 100644 index fca0d6dcf82a7763005a6155514a35ac8c1af077..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/spin.c +++ /dev/null @@ -1,160 +0,0 @@ -/* spin.c */ - -/* - * Spinning box. This program is in the public domain. - * - * Brian Paul - */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -#include -#include -#include - -static GLfloat Xrot, Xstep; -static GLfloat Yrot, Ystep; -static GLfloat Zrot, Zstep; -static GLfloat Step = 5.0; -static GLfloat Scale = 1.0; -static GLuint Object; - -static GLuint -make_object(void) -{ - GLuint list; - - list = glGenLists(1); - - glNewList(list, GL_COMPILE); - - glBegin(GL_LINE_LOOP); - glVertex3f(1.0, 0.5, -0.4); - glVertex3f(1.0, -0.5, -0.4); - glVertex3f(-1.0, -0.5, -0.4); - glVertex3f(-1.0, 0.5, -0.4); - glEnd(); - - glBegin(GL_LINE_LOOP); - glVertex3f(1.0, 0.5, 0.4); - glVertex3f(1.0, -0.5, 0.4); - glVertex3f(-1.0, -0.5, 0.4); - glVertex3f(-1.0, 0.5, 0.4); - glEnd(); - - glBegin(GL_LINES); - glVertex3f(1.0, 0.5, -0.4); - glVertex3f(1.0, 0.5, 0.4); - glVertex3f(1.0, -0.5, -0.4); - glVertex3f(1.0, -0.5, 0.4); - glVertex3f(-1.0, -0.5, -0.4); - glVertex3f(-1.0, -0.5, 0.4); - glVertex3f(-1.0, 0.5, -0.4); - glVertex3f(-1.0, 0.5, 0.4); - glEnd(); - - glEndList(); - - return list; -} - -static void -reshape(int width, int height) -{ - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: - exit(0); - } -} - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - - glTranslatef(0.0, 0.0, -10.0); - glScalef(Scale, Scale, Scale); - if (Xstep) { - glRotatef(Xrot, 1.0, 0.0, 0.0); - } else if (Ystep) { - glRotatef(Yrot, 0.0, 1.0, 0.0); - } else { - glRotatef(Zrot, 0.0, 0.0, 1.0); - } - - glCallList(Object); - - glPopMatrix(); - - glFlush(); - glutSwapBuffers(); -} - -static void -idle(void) -{ - Xrot += Xstep; - Yrot += Ystep; - Zrot += Zstep; - - if (Xrot >= 360.0) { - Xrot = Xstep = 0.0; - Ystep = Step; - } else if (Yrot >= 360.0) { - Yrot = Ystep = 0.0; - Zstep = Step; - } else if (Zrot >= 360.0) { - Zrot = Zstep = 0.0; - Xstep = Step; - } - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - - glutCreateWindow("Spin"); - Object = make_object(); - glCullFace(GL_BACK); - glDisable(GL_DITHER); - glShadeModel(GL_FLAT); - - glColor3f(1.0, 1.0, 1.0); - - Xrot = Yrot = Zrot = 0.0; - Xstep = Step; - Ystep = Zstep = 0.0; - - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutVisibilityFunc(visible); - glutDisplayFunc(draw); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/spin.dsp b/lib/glut-3.7.6/progs/mesademos/spin.dsp deleted file mode 100644 index ea0525c8d8a0fd19f0e050910f507e80b0f8d166..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/spin.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="spin" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=spin - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "spin.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "spin.mak" CFG="spin - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "spin - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "spin - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "spin - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "spin - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "spin - Win32 Release" -# Name "spin - Win32 Debug" -# Begin Source File - -SOURCE=.\spin.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/tess_demo.c b/lib/glut-3.7.6/progs/mesademos/tess_demo.c deleted file mode 100644 index 2d8a73343013bed3a1ef8b9a32160200b0623e74..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/tess_demo.c +++ /dev/null @@ -1,376 +0,0 @@ - -/* tess_demo.c */ - -/* A demo of the GLU polygon tesselation functions written by Bogdan Sikorski. */ - -/* Bug fixes by Mark Kilgard 11/8/96 */ - -#include -#include -#include -#include - -/* Win32 calling conventions. */ -#ifndef CALLBACK -#define CALLBACK -#endif - -#define MAX_POINTS 200 -#define MAX_CONTOURS 50 -#define HALF_WIDTH 5 /* half of the width of a grid box */ - -int menu; -typedef enum { - QUIT, TESSELATE, CLEAR -} menu_entries; -typedef enum { - DEFINE, TESSELATED -} mode_type; -struct { - GLint p[MAX_POINTS][2]; - GLuint point_cnt; -} contours[MAX_CONTOURS]; -int contour_cnt; -GLsizei width, height; -mode_type mode; - -#ifdef GLU_VERSION_1_2 -typedef struct listmem { - GLint *data; - struct listmem *next; -} ListMem; - -ListMem root; -#endif - -void CALLBACK -my_error(GLenum err) -{ - int len, i; - const char *str; - - glColor3f(0.9, 0.9, 0.9); - glRasterPos2i(5, 5); - str = (char *) gluErrorString(err); - len = (int) strlen(str); - for (i = 0; i < len; i++) - glutBitmapCharacter(GLUT_BITMAP_9_BY_15, str[i]); -} - -#ifdef GLU_VERSION_1_2 -/* ARGSUSED */ -void CALLBACK -myCombine(GLdouble coords[3], void *d[4], GLfloat w[4], void **dataOut) -{ - ListMem *ptr = &root; - while (ptr->next) ptr = ptr->next; - ptr->next = malloc(sizeof(ListMem)); - ptr = ptr->next; - ptr->next = 0; - ptr->data = malloc(3 * sizeof(GLint)); - ptr->data[0] = (GLint) coords[0]; - ptr->data[1] = (GLint) coords[1]; - ptr->data[2] = (GLint) coords[2]; - *dataOut = ptr->data; -} -#endif - -void -set_screen_wh(GLsizei w, GLsizei h) -{ - width = w; - height = h; -} - -void -tesse(void) -{ - static GLUtriangulatorObj *tobj = NULL; - GLdouble data[3]; - int i, j, point_cnt; - - if (tobj == NULL) { - tobj = gluNewTess(); - } - if (tobj != NULL) { - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(0.7, 0.5, 0.0); - gluTessCallback(tobj, GLU_BEGIN, (void (CALLBACK*)())glBegin); - gluTessCallback(tobj, GLU_END, (void (CALLBACK*)())glEnd); - gluTessCallback(tobj, GLU_ERROR, (void (CALLBACK*)()) my_error); - gluTessCallback(tobj, GLU_VERTEX, (void (CALLBACK*)()) glVertex2iv); -#ifdef GLU_VERSION_1_2 - root.data = 0; - root.next = 0; - gluTessCallback(tobj, GLU_TESS_COMBINE, (void (CALLBACK*)()) myCombine); -#endif - gluBeginPolygon(tobj); - for (j = 0; j <= contour_cnt; j++) { - point_cnt = contours[j].point_cnt; - gluNextContour(tobj, GLU_UNKNOWN); - for (i = 0; i < point_cnt; i++) { - data[0] = (GLdouble) (contours[j].p[i][0]); - data[1] = (GLdouble) (contours[j].p[i][1]); - data[2] = 0.0; - gluTessVertex(tobj, data, contours[j].p[i]); - } - } - gluEndPolygon(tobj); - mode = TESSELATED; - } -#ifdef GLU_VERSION_1_2 - { - ListMem *fptr = root.next; - ListMem *tmp; - while (fptr) { - tmp = fptr->next; - free(fptr->data); - free(fptr); - fptr = tmp; - } - } -#endif -} - -void -left_down(int x1, int y1) -{ - GLint P[2]; - GLuint point_cnt; - - /* translate GLUT into GL coordinates */ - P[0] = x1; - P[1] = height - y1; - point_cnt = contours[contour_cnt].point_cnt; - contours[contour_cnt].p[point_cnt][0] = P[0]; - contours[contour_cnt].p[point_cnt][1] = P[1]; - glBegin(GL_LINES); - if (point_cnt) { - glVertex2iv(contours[contour_cnt].p[point_cnt - 1]); - glVertex2iv(P); - } else { - glVertex2iv(P); - glVertex2iv(P); - } - glEnd(); - glFlush(); - ++(contours[contour_cnt].point_cnt); - if (contours[contour_cnt].point_cnt >= MAX_POINTS) { - printf("Too many points specified.\n"); - exit(1); - } -} - -/* ARGSUSED */ -void -middle_down(int x1, int y1) -{ - GLuint point_cnt; - - point_cnt = contours[contour_cnt].point_cnt; - if (point_cnt > 2) { - glBegin(GL_LINES); - glVertex2iv(contours[contour_cnt].p[0]); - glVertex2iv(contours[contour_cnt].p[point_cnt - 1]); - contours[contour_cnt].p[point_cnt][0] = -1; - glEnd(); - glFlush(); - contour_cnt++; - if (contour_cnt >= MAX_CONTOURS) { - printf("Too many contours specified.\n"); - exit(1); - } - contours[contour_cnt].point_cnt = 0; - } -} - -void -mouse_clicked(int button, int state, int x, int y) -{ - x += HALF_WIDTH; - y += HALF_WIDTH; - x -= x % (2*HALF_WIDTH); - y -= y % (2*HALF_WIDTH); - switch (button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) - left_down(x, y); - break; - case GLUT_MIDDLE_BUTTON: - if (state == GLUT_DOWN) - middle_down(x, y); - break; - } -} - -void -display(void) -{ - GLint i, j; - int point_cnt; - - glClear(GL_COLOR_BUFFER_BIT); - switch (mode) { - case DEFINE: - /* draw grid */ - glColor3f(0.6, 0.5, 0.5); - glBegin(GL_LINES); - for (i = 0; i < width; i += (2*HALF_WIDTH)) { - glVertex2i(i, height); - glVertex2i(i, 0); - } - for (j = 0; j < height; j += (2*HALF_WIDTH)) { - glVertex2i(0, j); - glVertex2i(width, j); - } - glColor3f(1.0, 1.0, 0.0); - for (i = 0; i <= contour_cnt; i++) { - point_cnt = contours[i].point_cnt; - glBegin(GL_LINES); - switch (point_cnt) { - case 0: - break; - case 1: - glVertex2iv(contours[i].p[0]); - glVertex2iv(contours[i].p[0]); - break; - case 2: - glVertex2iv(contours[i].p[0]); - glVertex2iv(contours[i].p[1]); - break; - default: - --point_cnt; - for (j = 0; j < point_cnt; j++) { - glVertex2iv(contours[i].p[j]); - glVertex2iv(contours[i].p[j + 1]); - } - if (contours[i].p[j + 1][0] == -1) { - glVertex2iv(contours[i].p[0]); - glVertex2iv(contours[i].p[j]); - } - break; - } - glEnd(); - } - glFlush(); - break; - case TESSELATED: - /* draw lines */ - tesse(); - break; - } - - glColor3f(1.0, 1.0, 0.0); -} - -void -clear(void) -{ - contour_cnt = 0; - contours[0].point_cnt = 0; - glutMouseFunc(mouse_clicked); - mode = DEFINE; - display(); -} - -void -quit(void) -{ - exit(0); -} - -void -menu_selected(int entry) -{ - switch (entry) { - case CLEAR: - clear(); - break; - case TESSELATE: - tesse(); - break; - case QUIT: - quit(); - break; - } -} - -/* ARGSUSED1 */ -void -key_pressed(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - tesse(); - glFlush(); - break; - case 'q': - case 'Q': - quit(); - break; - case 'c': - case 'C': - clear(); - break; - } -} - -void -myinit(void) -{ - /* clear background to gray */ - glClearColor(0.4, 0.4, 0.4, 0.0); - glShadeModel(GL_FLAT); - - menu = glutCreateMenu(menu_selected); - glutAddMenuEntry("clear", CLEAR); - glutAddMenuEntry("tesselate", TESSELATE); - glutAddMenuEntry("quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMouseFunc(mouse_clicked); - glutKeyboardFunc(key_pressed); - contour_cnt = 0; - glPolygonMode(GL_FRONT, GL_FILL); - mode = DEFINE; -} - -static void -reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, (GLdouble) w, 0.0, (GLdouble) h, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - set_screen_wh(w, h); -} - -static void -usage(void) -{ - printf("Use left mouse button to place vertices.\n"); - printf("Press middle mouse button when done.\n"); - printf("Select tesselate from the pop-up menu.\n"); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int -main(int argc, char **argv) -{ - usage(); - glutInitWindowSize(400, 400); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutCreateWindow(argv[0]); - myinit(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/mesademos/tess_demo.dsp b/lib/glut-3.7.6/progs/mesademos/tess_demo.dsp deleted file mode 100644 index a587e111312ebfa210178d897778d32360fe1572..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/tess_demo.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tess_demo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tess_demo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tess_demo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tess_demo.mak" CFG="tess_demo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tess_demo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tess_demo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tess_demo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tess_demo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tess_demo - Win32 Release" -# Name "tess_demo - Win32 Debug" -# Begin Source File - -SOURCE=.\tess_demo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/texobj.c b/lib/glut-3.7.6/progs/mesademos/texobj.c deleted file mode 100644 index 84c4f2642cdf2ef05307675b4a8cd59ce3112b84..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/texobj.c +++ /dev/null @@ -1,292 +0,0 @@ -/* texobj.c */ - -/* - * Example of using the 1.1 texture object functions. - * Also, this demo utilizes Mesa's fast texture map path. - * - * Brian Paul June 1996 - */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -#include -#include -#include -#include -#include - -static GLuint TexObj[2]; -static GLfloat Angle = 0.0f; -static GLboolean HaveTexObj = GL_FALSE; - -#if defined(GL_VERSION_1_1) -#define TEXTURE_OBJECT 1 -#elif defined(GL_EXT_texture_object) -#define TEXTURE_OBJECT 1 -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#define glGenTextures(A,B) glGenTexturesEXT(A,B) -#define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B) -#endif - -#ifdef TEXTURE_OBJECT - -static int -supportsOneDotOne(void) -{ - const char *version; - int major, minor; - - version = (char *) glGetString(GL_VERSION); - if (sscanf(version, "%d.%d", &major, &minor) == 2) - return major >= 1 && minor >= 1; - return 0; /* OpenGL version string malformed! */ -} - -#endif - -static void -draw(void) -{ - /* glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); */ - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f(1.0, 1.0, 1.0); - - /* draw first polygon */ - glPushMatrix(); - glTranslatef(-1.0, 0.0, 0.0); - glRotatef(Angle, 0.0, 0.0, 1.0); - if (HaveTexObj) { -#ifdef TEXTURE_OBJECT - glBindTexture(GL_TEXTURE_2D, TexObj[0]); -#endif - } else { - glCallList(TexObj[0]); - } - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); - glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex2f(-1.0, 1.0); - glEnd(); - glPopMatrix(); - - /* draw second polygon */ - glPushMatrix(); - glTranslatef(1.0, 0.0, 0.0); - glRotatef(Angle - 90.0, 0.0, 1.0, 0.0); - if (HaveTexObj) { -#ifdef TEXTURE_OBJECT - glBindTexture(GL_TEXTURE_2D, TexObj[1]); -#endif - } else { - glCallList(TexObj[0]); - } - glBegin(GL_POLYGON); - glTexCoord2f(0.0, 0.0); - glVertex2f(-1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex2f(1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex2f(1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex2f(-1.0, 1.0); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - -static void -idle(void) -{ - Angle += 2.0; - glutPostRedisplay(); -} - -/* exit upon ESC */ -/* ARGSUSED1 */ -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: /* Escape */ -#ifdef TEXTURE_OBJECT - glDeleteTextures(2, TexObj); -#endif - exit(0); - } -} - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - /* glOrtho( -3.0, 3.0, -3.0, 3.0, -10.0, 10.0 ); */ - glFrustum(-2.0, 2.0, -2.0, 2.0, 6.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -8.0); -} - -static void -init(void) -{ - static int width = 8, height = 8; - static GLubyte tex1[] = - { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}; - - static GLubyte tex2[] = - { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 2, 0, 0, 0, - 0, 0, 2, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 2, 2, 2, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}; - - GLubyte tex[64][3]; - GLint i, j; - - glDisable(GL_DITHER); - - /* Setup texturing */ - glEnable(GL_TEXTURE_2D); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); - - /* generate texture object IDs */ - if (HaveTexObj) { -#ifdef TEXTURE_OBJECT - glGenTextures(2, TexObj); -#endif - } else { - TexObj[0] = glGenLists(2); - TexObj[1] = TexObj[0] + 1; - } - - /* setup first texture object */ - if (HaveTexObj) { -#ifdef TEXTURE_OBJECT - glBindTexture(GL_TEXTURE_2D, TexObj[0]); -#endif - } else { - glNewList(TexObj[0], GL_COMPILE); - } - /* red on white */ - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - int p = i * width + j; - if (tex1[(height - i - 1) * width + j]) { - tex[p][0] = 255; - tex[p][1] = 0; - tex[p][2] = 0; - } else { - tex[p][0] = 255; - tex[p][1] = 255; - tex[p][2] = 255; - } - } - } - glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - if (!HaveTexObj) { - glEndList(); - } - /* end of texture object */ - - /* setup second texture object */ - if (HaveTexObj) { -#ifdef TEXTURE_OBJECT - glBindTexture(GL_TEXTURE_2D, TexObj[1]); -#endif - } else { - glNewList(TexObj[1], GL_COMPILE); - } - /* green on blue */ - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - int p = i * width + j; - if (tex2[(height - i - 1) * width + j]) { - tex[p][0] = 0; - tex[p][1] = 255; - tex[p][2] = 0; - } else { - tex[p][0] = 0; - tex[p][1] = 0; - tex[p][2] = 255; - } - } - } - glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - if (!HaveTexObj) { - glEndList(); - } - /* end texture object */ -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - - glutCreateWindow("Texture Objects"); - - /* Check that renderer has the GL_EXT_texture_object - extension or supports OpenGL 1.1. */ -#ifdef TEXTURE_OBJECT - if (supportsOneDotOne() || glutExtensionSupported("GL_EXT_texture_object")) { - HaveTexObj = GL_TRUE; - } -#endif - - if (!HaveTexObj) { - printf("\nThis program doesn't really work the way it is supposed\n"); - printf("to if you lack OpenGL 1.1 or the EXT_texture_object extension.\n"); - printf("Each textured object should have a different numbered image.\n\n"); - } - - init(); - - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutVisibilityFunc(visible); - glutDisplayFunc(draw); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/texobj.dsp b/lib/glut-3.7.6/progs/mesademos/texobj.dsp deleted file mode 100644 index 125700c223b7ba61189ddff1539f570c9c8ecaa7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/texobj.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texobj" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texobj - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texobj.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texobj.mak" CFG="texobj - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texobj - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texobj - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texobj - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texobj - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texobj - Win32 Release" -# Name "texobj - Win32 Debug" -# Begin Source File - -SOURCE=.\texobj.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/tr.c b/lib/glut-3.7.6/progs/mesademos/tr.c deleted file mode 100644 index b09ba4cd8553fdb200c1aa1c7dae43738659f22c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/tr.c +++ /dev/null @@ -1,236 +0,0 @@ - -/* tr.c */ - -/* - * Tiled Rendering library - * - * Brian Paul - * April 1997 - */ - - -#include -#include -#include - -#include "tr.h" - - - -struct _TRctx { - GLint ImageWidth, ImageHeight; - GLubyte *Image; - - GLint TileWidth, TileHeight; - - GLboolean Perspective; - GLdouble Left; - GLdouble Right; - GLdouble Bottom; - GLdouble Top; - GLdouble Near; - GLdouble Far; - - GLint Rows, Columns; - GLint CurrentTile; - GLint CurrentTileWidth, CurrentTileHeight; - GLint CurrentRow, CurrentColumn; - - GLint ViewportSave[4]; -}; - - - -TRcontext *trNew(void) -{ - return (TRcontext *) calloc(1, sizeof(TRcontext)); -} - - -void trDelete(TRcontext *tr) -{ - if (tr) - free(tr); -} - - -void trSetup(TRcontext *tr, - GLint imageWidth, GLint imageHeight, GLubyte *image, - GLint tileWidth, GLint tileHeight) -{ - if (!tr || !image) - return; - - tr->ImageWidth = imageWidth; - tr->ImageHeight = imageHeight; - tr->Image = image; - tr->TileWidth = tileWidth; - tr->TileHeight = tileHeight; - - tr->Columns = (tr->ImageWidth + tr->TileWidth - 1) / tr->TileWidth; - tr->Rows = (tr->ImageHeight + tr->TileHeight - 1) / tr->TileHeight; - tr->CurrentTile = 0; - - assert(tr->Columns >= 1); - assert(tr->Rows >= 1); -} - - -void trOrtho(TRcontext *tr, - GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble nnear, GLdouble ffar) -{ - if (!tr) - return; - - tr->Perspective = GL_FALSE; - tr->Left = left; - tr->Right = right; - tr->Bottom = bottom; - tr->Top = top; - tr->Near = nnear; - tr->Far = ffar; - tr->CurrentTile = 0; -} - - -void trFrustum(TRcontext *tr, - GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble zNear, GLdouble zFar) -{ - if (!tr) - return; - - tr->Perspective = GL_TRUE; - tr->Left = left; - tr->Right = right; - tr->Bottom = bottom; - tr->Top = top; - tr->Near = zNear; - tr->Far = zFar; - tr->CurrentTile = 0; -} - - -void trPerspective(TRcontext *tr, - GLdouble fovy, GLdouble aspect, - GLdouble zNear, GLdouble zFar ) -{ - GLdouble xmin, xmax, ymin, ymax; - ymax = zNear * tan(fovy * 3.14159265 / 360.0); - ymin = -ymax; - xmin = ymin * aspect; - xmax = ymax * aspect; - trFrustum(tr, xmin, xmax, ymin, ymax, zNear, zFar); -} - - -void trBeginTile(TRcontext *tr) -{ - GLint matrixMode; - int tileWidth, tileHeight; - GLdouble left, right, bottom, top; - - if (!tr) - return; - - if (tr->CurrentTile==0) { - /* Save user's viewport, will be restored after last tile rendered */ - glGetIntegerv(GL_VIEWPORT, tr->ViewportSave); - } - - /* which tile (by row and column) we're about to render */ - tr->CurrentRow = tr->CurrentTile / tr->Columns; - tr->CurrentColumn = tr->CurrentTile % tr->Columns; - - /* actual size of this tile */ - if (tr->CurrentRow < tr->Rows-1) - tileHeight = tr->TileHeight; - else - tileHeight = tr->ImageHeight - (tr->Rows-1) * tr->TileHeight; - - if (tr->CurrentColumn < tr->Columns-1) - tileWidth = tr->TileWidth; - else - tileWidth = tr->ImageWidth - (tr->Columns-1) * tr->TileWidth; - - - tr->CurrentTileWidth = tileWidth; - tr->CurrentTileHeight = tileHeight; - - glViewport(0, 0, tileWidth, tileHeight); - - /* save current matrix mode */ - glGetIntegerv(GL_MATRIX_MODE, &matrixMode); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - /* compute projection parameters */ - left = tr->Left + (tr->Right - tr->Left) - * (tr->CurrentColumn * tr->TileWidth) / tr->ImageWidth; - right = left + (tr->Right - tr->Left) * tileWidth / tr->ImageWidth; - bottom = tr->Bottom + (tr->Top - tr->Bottom) - * (tr->CurrentRow * tr->TileHeight) / tr->ImageHeight; - top = bottom + (tr->Top - tr->Bottom) * tileHeight / tr->ImageHeight; - - if (tr->Perspective) - glFrustum(left, right, bottom, top, tr->Near, tr->Far); - else - glOrtho(left, right, bottom, top, tr->Near, tr->Far); - - /* restore user's matrix mode */ - glMatrixMode(matrixMode); -} - - - -int trEndTile(TRcontext *tr) -{ - GLint prevRowLength, prevSkipRows, prevSkipPixels, prevAlignment; - GLint x, y; - - if (!tr) - return 0; - - /* be sure OpenGL rendering is finished */ - glFlush(); - - /* save current glPixelStore values */ - glGetIntegerv(GL_PACK_ROW_LENGTH, &prevRowLength); - glGetIntegerv(GL_PACK_SKIP_ROWS, &prevSkipRows); - glGetIntegerv(GL_PACK_SKIP_PIXELS, &prevSkipPixels); - glGetIntegerv(GL_PACK_ALIGNMENT, &prevAlignment); - - x = tr->TileWidth * tr->CurrentColumn; - y = tr->TileHeight * tr->CurrentRow; - - /* setup pixel store for glReadPixels */ - glPixelStorei(GL_PACK_ROW_LENGTH, tr->ImageWidth); - glPixelStorei(GL_PACK_SKIP_ROWS, y); - glPixelStorei(GL_PACK_SKIP_PIXELS, x); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - /* read the tile into the final image */ - glReadPixels(0, 0, tr->CurrentTileWidth, tr->CurrentTileHeight, - GL_RGBA, GL_UNSIGNED_BYTE, tr->Image); - - /* restore previous glPixelStore values */ - glPixelStorei(GL_PACK_ROW_LENGTH, prevRowLength); - glPixelStorei(GL_PACK_SKIP_ROWS, prevSkipRows); - glPixelStorei(GL_PACK_SKIP_PIXELS, prevSkipPixels); - glPixelStorei(GL_PACK_ALIGNMENT, prevAlignment); - - /* increment tile counter, return 1 if more tiles left to render */ - tr->CurrentTile++; - if (tr->CurrentTile >= tr->Rows * tr->Columns) { - /* restore user's viewport */ - glViewport(tr->ViewportSave[0], tr->ViewportSave[1], - tr->ViewportSave[2], tr->ViewportSave[3]); - return 0; - } - else - return 1; -} - diff --git a/lib/glut-3.7.6/progs/mesademos/tr.h b/lib/glut-3.7.6/progs/mesademos/tr.h deleted file mode 100644 index c44b9b4188d74445ffea2abf17e683bd88f0dd8d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/tr.h +++ /dev/null @@ -1,95 +0,0 @@ - -/* tr.h */ - -/* - * Tiled Rendering library - * - * This library allows one to render arbitrarily large images with OpenGL. - * The basic idea is to break the image into tiles which are rendered one - * at a time. The tiles are assembled together to form the final, large - * image. Tiles can be of any size. - * - * Basic usage: - * - * 1. Allocate a tile rendering context: - * TRcontext t = trNew(); - * - * 2. Specify the final image buffer and tile size: - * GLubyte image[W][H][4] - * trSetup(t, W, H, (GLubyte *) image, tileWidth, tileHeight); - * - * 3. Setup your projection: - * trFrustum(t, left, right, bottom top, nnear, ffar); - * or - * trOrtho(t, left, right, bottom top, nnear, ffar); - * or - * trPerspective(t, fovy, aspect, nnear, ffar); - * - * 4. Render the tiles: - * do { - * trBeginTile(t); - * DrawMyScene(); - * } while (trEndTile(t)); - * - * You provide the DrawMyScene() function which calls glClear() and - * draws all your stuff. - * - * 5. The image array is now complete. Display it, write it to a file, etc. - * - * 6. Delete the tile rendering context when finished: - * trDelete(t); - * - * - * Brian Paul - * April 1997 - */ - - -#ifndef TR_H -#define TR_H - - -#ifdef _WIN32 -#include -#endif -#include - - -typedef struct _TRctx TRcontext; - - -extern TRcontext *trNew(void); - - -extern void trDelete(TRcontext *tr); - - -extern void trSetup(TRcontext *tr, - GLint imageWidth, GLint imageHeight, GLubyte *image, - GLint tileWidth, GLint tileHeight); - - -extern void trOrtho(TRcontext *tr, - GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble nnear, GLdouble ffar); - - -extern void trFrustum(TRcontext *tr, - GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble nnear, GLdouble ffar); - - -extern void trPerspective(TRcontext *tr, - GLdouble fovy, GLdouble aspect, - GLdouble zNear, GLdouble zFar ); - - -extern void trBeginTile(TRcontext *tr); - - -extern int trEndTile(TRcontext *tr); - - -#endif diff --git a/lib/glut-3.7.6/progs/mesademos/trdemo.c b/lib/glut-3.7.6/progs/mesademos/trdemo.c deleted file mode 100644 index dcc10a550f4d73abe94d3c385fb9c0baa6323b1a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/trdemo.c +++ /dev/null @@ -1,167 +0,0 @@ - -/* trdemo.c */ - -/* - * Test/demonstration of tile rendering utility library. - * See tr.h for more info. - * - * Brian Paul - * April 1997 - */ - - -#include -#include -#include "GL/glut.h" -#include "tr.h" - - -#define TILESIZE 100 - -#define NUMBALLS 30 -static GLfloat BallPos[NUMBALLS][3]; -static GLfloat BallSize[NUMBALLS]; -static GLfloat BallColor[NUMBALLS][4]; - -static GLboolean Perspective = GL_TRUE; - -static int WindowWidth, WindowHeight; - - -/* Return random float in [0,1] */ -static float Random(void) -{ - int i = rand(); - return (float) (i % 1000) / 1000.0; -} - - -/* Draw my stuff */ -static void DrawScene(void) -{ - int i; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - for (i=0;i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=trdemo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "trdemo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "trdemo.mak" CFG="trdemo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "trdemo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "trdemo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "trdemo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "trdemo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "trdemo - Win32 Release" -# Name "trdemo - Win32 Debug" -# Begin Source File - -SOURCE=.\tr.c -# End Source File -# Begin Source File - -SOURCE=.\tr.h -# End Source File -# Begin Source File - -SOURCE=.\trdemo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mesademos/winpos.c b/lib/glut-3.7.6/progs/mesademos/winpos.c deleted file mode 100644 index d340273dd7247179d5ee50a657cafea98a6a2e0e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/winpos.c +++ /dev/null @@ -1,215 +0,0 @@ -/* winpos.c */ - -/* - * Example of how to use the GL_MESA_window_pos extension. - * - * This program is in the public domain - * - * Brian Paul - */ - -/* Conversion to GLUT by Mark J. Kilgard */ - -/* The GL_MESA_window_pos extension lets you set the OpenGL raster position - (used for positioning output from glBitmap and glDrawPixels) based on - window coordinates (assuming an origin at the lower-left window corner). - Mesa has an extension to do this operation quickly, but the program - will emulate the raster position update if the extension is not available. - See the implementation of glWindowPos4fMESAemulate. -mjk */ - -#include -#include -#include -#include -#include - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - -#define WIDTH 16 -#define HEIGHT 16 -int sizeX = WIDTH, sizeY = HEIGHT; -GLubyte data[WIDTH * HEIGHT * 3]; - -/* glWindowPos4fMESAemulate & glWindowPos2fMESAemulate are lifted from the - Mesa 2.0 src/winpos.c emulation code. -mjk */ - -/* - * OpenGL implementation of glWindowPos*MESA() - */ -void -glWindowPos4fMESAemulate(GLfloat x, GLfloat y, GLfloat z, GLfloat w) -{ - GLfloat fx, fy; - - /* Push current matrix mode and viewport attributes */ - glPushAttrib(GL_TRANSFORM_BIT | GL_VIEWPORT_BIT); - - /* Setup projection parameters */ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glDepthRange(z, z); - glViewport((int) x - 1, (int) y - 1, 2, 2); - - /* set the raster (window) position */ - fx = x - (int) x; - fy = y - (int) y; - glRasterPos4f(fx, fy, 0.0, w); - - /* restore matrices, viewport and matrix mode */ - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - glPopAttrib(); -} - -void -glWindowPos2fMESAemulate(GLfloat x, GLfloat y) -{ - glWindowPos4fMESAemulate(x, y, 0, 1); -} - -/* Make cheesy pixel image for glDrawPixels. */ -static void -init(void) -{ - int i, j; - static char *pattern[16] = - { - " ........ ", - " .......... ", - " ...xx..xx... ", - " ............ ", - " ...oooo... ", - "* ........ ", - "*oooooooooooooo*", - " oooo *", - " oooo ", - " xxxx ", - " xxxx ", - " xx xx ", - " xx xx ", - " xx xx ", - " ** ** ", - " *** *** ", - }; - GLubyte red, green, blue; - - /* Generate a pixel image from pattern. */ - for (i = 0; i < HEIGHT; i++) { - for (j = 0; j < WIDTH; j++) { - switch (pattern[HEIGHT - i - 1][j]) { - case '.': - red = 0xff; - green = 0xff; - blue = 0x00; - break; - case 'o': - red = 0xff; - green = 0x00; - blue = 0x00; - break; - case 'x': - red = 0x00; - green = 0xff; - blue = 0x00; - break; - case '*': - red = 0xff; - green = 0x00; - blue = 0xff; - break; - case ' ': - red = 0x00; - green = 0x00; - blue = 0x00; - break; - } - data[(i * WIDTH + j) * 3 + 0] = red; - data[(i * WIDTH + j) * 3 + 1] = green; - data[(i * WIDTH + j) * 3 + 2] = blue; - } - } -} - -#ifdef GL_MESA_window_pos -int emulate; -#endif - -static void -draw(void) -{ - GLfloat angle; - - glClear(GL_COLOR_BUFFER_BIT); - - for (angle = -45.0; angle <= 135.0; angle += 10.0) { - GLfloat x = 50.0 + 200.0 * cos(angle * M_PI / 180.0); - GLfloat y = 50.0 + 200.0 * sin(angle * M_PI / 180.0); - -#ifdef GL_MESA_window_pos - /* Don't need to worry about the modelview or projection - matrices!!! */ - if (!emulate) - glWindowPos2fMESA(x, y); - else -#endif - glWindowPos2fMESAemulate(x, y); - glDrawPixels(sizeX, sizeY, GL_RGB, - GL_UNSIGNED_BYTE, data); - } - glFlush(); -} - -/* ARGSUSED1 */ -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: - exit(0); - } -} - -int -main(int argc, char *argv[]) -{ - glutInitWindowSize(500, 500); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - - glutCreateWindow("winpos"); - - if (glutExtensionSupported("GL_MESA_window_pos")) { - printf("OpenGL implementation supports Mesa's GL_MESA_window_pos extension."); -#ifdef GL_MESA_window_pos - emulate = 0; -#else - printf("(Not compiled to support the extension.)\n"); - printf("Emulating...\n"); -#endif - } else { - printf("Sorry, GL_MESA_window_pos extension not available.\n"); - printf("Emulating...\n"); -#ifdef GL_MESA_window_pos - emulate = 1; -#else - printf("(Not compiled to support the extension even if available.)\n"); -#endif - } - - init(); - - glutDisplayFunc(draw); - glutKeyboardFunc(key); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/mesademos/winpos.dsp b/lib/glut-3.7.6/progs/mesademos/winpos.dsp deleted file mode 100644 index 42b662f0d3ab243837c3f779303a9cb1bb44c4f6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mesademos/winpos.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="winpos" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=winpos - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "winpos.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "winpos.mak" CFG="winpos - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "winpos - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "winpos - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "winpos - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "winpos - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "winpos - Win32 Release" -# Name "winpos - Win32 Debug" -# Begin Source File - -SOURCE=.\winpos.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mui.dsw b/lib/glut-3.7.6/progs/mui.dsw deleted file mode 100644 index c171ce2c0918a65f4800c54b446935ec9cda6bd6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mui.dsw +++ /dev/null @@ -1,59 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\mui\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name calc - End Project Dependency -}}} - -############################################################################### - -Project: "calc"=".\mui\calc\calc.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mui - End Project Dependency -}}} - -############################################################################### - -Project: "mui"="..\lib\mui\mui.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/mui/Imakefile b/lib/glut-3.7.6/progs/mui/Imakefile deleted file mode 100644 index a507a1b337df284ea2e00804497c3e49deb54050..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mui/Imakefile +++ /dev/null @@ -1,10 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -#define IHaveSubdirs -#define PassCDebugFlags - -SUBDIRS = calc - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/progs/mui/_all.dsp b/lib/glut-3.7.6/progs/mui/_all.dsp deleted file mode 100644 index 2e26c30f32adf2ab5d284c761d545a37b7e2380b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mui/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mui/calc/Imakefile b/lib/glut-3.7.6/progs/mui/calc/Imakefile deleted file mode 100644 index 7402a6e595cb87c55fc0925c7b06b84633856835..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mui/calc/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = calc - -SRCS = calc.c - -OBJS = calc.o - -AllTarget($(TARGETS)) - -NormalMuiProgramTarget(calc,$(OBJS)) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/mui/calc/calc.c b/lib/glut-3.7.6/progs/mui/calc/calc.c deleted file mode 100644 index d39c37a9f4cde2ceb72f627fc7a2e1e1a88415cd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mui/calc/calc.c +++ /dev/null @@ -1,753 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/****************************************************************************** - * * - * Reverse-Polish-Notation (RPN) calculator * - * * - * Written by Tom Davis 1991 * - * Converted to OpenGL/GLUT: Tom Davis 1997 * - * * - * * - * Calc is a Reverse-Polish-Notation (RPN) calculator. You must enter the * - * operands first, then the operation. For example, to add 3 and 4, press * - * [3] [Enter] [4] [+]. If the operation is unary, like sine, it operates * - * on the bottom element of the display. To take the sine of .54, do: * - * * - * [.] [5] [4] [Sin]. * - * * - * The last 6 entries of the stack are visible, and you can scroll to see the * - * rest. All operations are performed on the element(s) at the bottom of the * - * stack. The bottom element is called 'x' and the next element up is called * - * 'y'. * - * * - * The [+/-] key changes the sign of x. To find the cosine of -.22, do: * - * * - * [.] [2] [2] [+/-] [Cos]. * - * * - * The [Inv] key changes the operation of some of the other keys so they * - * perform the inverse operation. It is only active for one keystroke. * - * Press [Inv] again to cancel the operation. * - * * - * [Sto] and [Rcl] stores and recalls a single value. * - * * - * [Dup2] duplicates the bottom 2 items on the stack. * - * * - * [Roll] rolls all the stack elements down one, and puts the bottom element * - * on the top. * - * * - * [Exch] swaps the bottom two elements. * - * * - * [Int] gives the integer part. * - * * - * [Inv] [Frac] gives the fractional part. * - * * - * [Clr] clears the bottom element to zero. Use this when you get some kind * - * of error. * - * * - * [B10] and [B16] put you in base 10 or base 16 mode. Numbers with * - * fractional parts are always displayed in base 10. In base 16 mode, the * - * keys [a] through [f] are used for numeric entry. They do nothing, * - * otherwise. * - * * - * [And], [Or] and [Not] are logical operations on 32 bit integers. If * - * there's a fractional part, they don't do anything. * - * * - * To remember a sequence of keystrokes, press [Prog], then the sequence of * - * keystrokes, and then [Prog] again. For example, if you want to * - * calculate x^2 + y^2 repeatedly, where x and y are the two bottom entries * - * of the stack, do this: * - * * - * [Prog] [Inv] [x^2] [Exch] [Inv] [x^2] [+] [Prog]. * - * * - * Then, to calculate 5^2+7^2, do this: * - * * - * [5] [Enter] [7] [Run]. * - * * - * The following keys from the computer keyboard are understood by calc: * - * * - * [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [.], [Enter], * - * [+], [-], [*], [/], [a], [b], [c], [d], [e], [f]. * - * * - ******************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include "calc.h" - -/* Many systems lack the trunc routine. */ -#ifndef __sgi -#define trunc(x) ((float)((int)x)) -/* Alternative trunc macro: ((x > 0.0) ? floor(x) : -floor(-x)) */ -#endif - -#define Bwidth 44 -#define Bheight 25 -#define Bhspace 10 -#define Bvspace 10 -#define Displaylines 6 - -#define THUMBHEIGHT 20 -#define ARROWSPACE 40 -#define SLIDERWIDTH 20 - -#define Stackdepth 200 - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -void interpclick(int); -void showhelp(void); - -char *CS[Stackdepth+Displaylines]; - -double calcdata[Stackdepth+Displaylines]; - -int CSP = Displaylines-1; -int invmode = 0; -int base = 10; -float memory = 0.0; -int degreemode = 1; - -int savingprog = 0; -int program[5000]; -int proglen = 0; - -#define WIDTH 6 -#define HEIGHT 8 - -muiObject *tl; - -struct calcbutton { - char *label, *invlabel; - muiObject *b; - int type; -} keypad[HEIGHT][WIDTH]; - - -void butcallback(muiObject *obj, enum muiReturnValue r) -{ - int but = muiGetID(obj); - interpclick(but); - r = r; -} - -void loadcb(int row, int col, char *lab, char *invlab, int type) -{ - struct calcbutton *cb = &keypad[row][col]; - cb->label = lab; - cb->invlabel = invlab; - cb->type = type; - cb->b = muiNewButton(Bhspace+col*(Bhspace+Bwidth), (col+1)*(Bhspace+Bwidth), - Bvspace+row*(Bvspace+Bheight), (row+1)*(Bvspace+Bheight)); - muiLoadButton(cb->b, lab); - muiSetCallback(cb->b, butcallback); - muiSetID(cb->b, type); -} - -void initkeypad(void) -{ - int xmin, xmax, ymin, ymax; - - loadcb(0, 0, "Exch", "Exch", Exchkey); - loadcb(0, 1, "0", "0", Zerokey); - loadcb(0, 2, ".", ".", Dotkey); - loadcb(0, 3, "+/-", "+/-", Flipsignkey); - loadcb(0, 4, "/", "/", Dividekey); - loadcb(0, 5, "Deg", "Deg", Radkey); - loadcb(1, 0, "Roll", "Roll", Rollkey); - loadcb(1, 1, "1", "1", Onekey); - loadcb(1, 2, "2", "2", Twokey); - loadcb(1, 3, "3", "3", Threekey); - loadcb(1, 4, "*", "*", Timeskey); - loadcb(1, 5, "Clr", "Clr", Clearkey); - loadcb(2, 0, "Dup2", "Dup2", Dup2key); - loadcb(2, 1, "4", "4", Fourkey); - loadcb(2, 2, "5", "5", Fivekey); - loadcb(2, 3, "6", "6", Sixkey); - loadcb(2, 4, "-", "-", Minuskey); - loadcb(2, 5, "And", "And", Andkey); - loadcb(3, 0, "Enter", "Enter", Enterkey); - loadcb(3, 1, "7", "7", Sevenkey); - loadcb(3, 2, "8", "8", Eightkey); - loadcb(3, 3, "9", "9", Ninekey); - loadcb(3, 4, "+", "+", Pluskey); - loadcb(3, 5, "Or", "Or", Orkey); - loadcb(4, 0, "Sin", "Asin", Sinkey); - loadcb(4, 1, "Cos", "Acos", Coskey); - loadcb(4, 2, "Tan", "Atan", Tankey); - loadcb(4, 3, "Int", "Frac", Intkey); - loadcb(4, 4, "Help", "Help", Helpkey); - loadcb(4, 5, "Not", "Not", Notkey); - loadcb(5, 0, "e^x", "Ln", Expkey); - loadcb(5, 1, "10^x", "Log", Tentoxkey); - loadcb(5, 2, "Sqrt", "x^2", Sqrtkey); - loadcb(5, 3, "y^x", "y^(1/x)", Xtoykey); - loadcb(5, 4, "Run", "Run", Runkey); - loadcb(5, 5, "B16", "B16", Base16key); - loadcb(6, 0, "Inv", "Inv", Invkey); - loadcb(6, 1, "Rcl", "Rcl", Recallkey); - loadcb(6, 2, "Sto", "Sto", Storekey); - loadcb(6, 3, "1/x", "1/x", Oneoverkey); - loadcb(6, 4, "Prog", "Prog", Progkey); - loadcb(6, 5, "B10", "B10", Base10key); - loadcb(7, 0, "a", "a", Akey); - loadcb(7, 1, "b", "b", Bkey); - loadcb(7, 2, "c", "c", Ckey); - loadcb(7, 3, "d", "d", Dkey); - loadcb(7, 4, "e", "e", Ekey); - loadcb(7, 5, "f", "f", Fkey); - tl = muiNewTextList(Bhspace, HEIGHT*Bheight + (HEIGHT+1)*Bvspace, - WIDTH*(Bhspace+Bwidth), Displaylines); - muiGetObjectSize(tl, &xmin, &ymin, &xmax, &ymax); - muiSetTLStrings(tl, CS); -} - -/* -void drawdisplay(void) -{ - settltop(cdisplay, CSP - Displaylines + 1); - cdisplay->count = CSP+1; - adjustslider(cdisplay, cdisplay->vs); - setvsarrowdelta(cdisplay->vs, 1); - drawtl(cdisplay); swapbuffers(); -} - -void drawkeypad(void) -{ - int i, j; - - backgroundclear(); - for (i = 0; i < HEIGHT; i++) - for (j = 0; j < WIDTH; j++) - drawbut(keypad[i][j].b); - drawdisplay(); -} -*/ - -void loadbuttons(int inv) -{ - int i, j; - - for (i = 0; i < HEIGHT; i++) - for (j = 0; j < WIDTH; j++) { - if (inv) - muiLoadButton(keypad[i][j].b, keypad[i][j].invlabel); - else - muiLoadButton(keypad[i][j].b, keypad[i][j].label); - } - glutPostRedisplay(); -} - -void initcalc(void) -{ - int i; - - glutInitWindowSize(WIDTH*Bwidth+(WIDTH+1)*Bhspace, - HEIGHT*Bheight+(HEIGHT+2)*Bvspace+Displaylines*20+7); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("RPN Calc"); - muiInit(); - muiNewUIList(1); - for (i = 0; i < Stackdepth+Displaylines; i++) { - CS[i] = (char *)malloc(50); - *CS[i] = ' '; - *(CS[i]+1) = 0; - } - initkeypad(); -} - -void formatentry(int s) -{ - if (calcdata[s] - trunc(calcdata[s]) == 0 && - (calcdata[s] < 1.0e9 && -1.0e9 < calcdata[s])) { - if (base == 10) { - sprintf(CS[s], "%15d", (int)calcdata[s]); - } else { - sprintf(CS[s], "0x%13x", (int)calcdata[s]); - } - } else { - if (calcdata[s] < 1.0e9 && -1.0e9 < calcdata[s] && - (calcdata[s] > 1.0e-5 || calcdata[s] < -1.0e-5)) - sprintf(CS[s], "%15.12f", calcdata[s]); - else - sprintf(CS[s], "%15.12e", calcdata[s]); - } -} - -/* ARGSUSED1 */ -void kbd(unsigned char c, int x, int y) -{ - switch (c) { - case 'A': case 'a': interpclick(Akey); break; - case 'B': case 'b': interpclick(Bkey); break; - case 'C': case 'c': interpclick(Ckey); break; - case 'D': case 'd': interpclick(Dkey); break; - case 'E': case 'e': interpclick(Ekey); break; - case 'F': case 'f': interpclick(Fkey); break; - case '0': interpclick(Zerokey); break; - case '1': interpclick(Onekey); break; - case '2': interpclick(Twokey); break; - case '3': interpclick(Threekey); break; - case '4': interpclick(Fourkey); break; - case '5': interpclick(Fivekey); break; - case '6': interpclick(Sixkey); break; - case '7': interpclick(Sevenkey); break; - case '8': interpclick(Eightkey); break; - case '9': interpclick(Ninekey); break; - case '.': interpclick(Dotkey); break; - case '+': interpclick(Pluskey); break; - case '-': interpclick(Minuskey); break; - case '*': interpclick(Timeskey); break; - case '/': interpclick(Dividekey); break; - case '\n': case '\r': interpclick(Enterkey); break; - } - -} - -void main(int argc, char **argv) -{ - glutInit(&argc, argv); - initcalc(); - formatentry(Displaylines-1); - glutKeyboardFunc(kbd); /* overrides mui cmd */ - glutMainLoop(); -} - -int inputptr = 0; -int enablepush = 0; - -void push(void) -{ - CSP++; - inputptr = 0; - *CS[CSP] = ' '; - *(CS[CSP]+1) = 0; - muiSetTLTopInt(tl, CSP - Displaylines + 1); -} - -void doenter(void) -{ - int isdot = 0; - - char *s = CS[CSP]; - while (*s) {if (*s++ == '.') isdot=1; } - if (enablepush) { - strcpy(CS[CSP+1], CS[CSP]); - calcdata[CSP+1] = calcdata[CSP]; - CSP++; - } else { - if (isdot || base == 10) - calcdata[CSP] = atof(CS[CSP]); - else - calcdata[CSP] = (double) strtol(CS[CSP], 0, 16); - enablepush = 1; - inputptr = 0; - } - formatentry(CSP); - muiSetTLTopInt(tl, CSP - Displaylines + 1); - glutPostRedisplay(); -} - -void binop(char c) -{ - int i, j; - - if (enablepush == 0) doenter(); - if (CSP < Displaylines) return; - switch (c) { - case '+': - calcdata[CSP-1] = calcdata[CSP-1] + calcdata[CSP]; - break; - case '-': - calcdata[CSP-1] = calcdata[CSP-1] - calcdata[CSP]; - break; - case '*': - calcdata[CSP-1] = calcdata[CSP-1] * calcdata[CSP]; - break; - case '/': - calcdata[CSP-1] = calcdata[CSP-1] / calcdata[CSP]; - break; - case '^': - if (invmode == 0) - calcdata[CSP-1] = pow(calcdata[CSP-1], calcdata[CSP]); - else - calcdata[CSP-1] = pow(calcdata[CSP-1], 1.0/calcdata[CSP]); - break; - case '&': - if (calcdata[CSP-1] - trunc(calcdata[CSP-1]) != 0) return; - if (calcdata[CSP] - trunc(calcdata[CSP]) != 0) return; - i = calcdata[CSP-1]; j = calcdata[CSP]; - calcdata[CSP-1] = (int)(i&j); - break; - case '|': - if (calcdata[CSP-1] - trunc(calcdata[CSP-1]) != 0) return; - if (calcdata[CSP] - trunc(calcdata[CSP]) != 0) return; - i = calcdata[CSP-1]; j = calcdata[CSP]; - calcdata[CSP-1] = (int)(i|j); - break; - } - CS[CSP][0] = 0; - CSP--; - formatentry(CSP); - muiSetTLTopInt(tl, CSP - Displaylines + 1); - glutPostRedisplay(); - enablepush = 1; -} - -void unop(int c) -{ - int i; - - if (enablepush == 0) doenter(); - switch (c) { - case Storekey: - memory = calcdata[CSP]; - break; - case Recallkey: - doenter(); - calcdata[CSP] = memory; - break; - case Flipsignkey: - calcdata[CSP] = -calcdata[CSP]; - break; - case Oneoverkey: - calcdata[CSP] = 1.0/calcdata[CSP]; - break; - case Clearkey: - calcdata[CSP] = 0.0; - enablepush = 0; - formatentry(CSP); - glutPostRedisplay(); - return; - case Sinkey: - if (invmode) { - calcdata[CSP] = asin(calcdata[CSP]); - if (degreemode) calcdata[CSP] *= 180.0/M_PI; - } else { - if (degreemode) calcdata[CSP] *= M_PI/180.0; - calcdata[CSP] = sin(calcdata[CSP]); - } - break; - case Coskey: - if (invmode) { - calcdata[CSP] = acos(calcdata[CSP]); - if (degreemode) calcdata[CSP] *= 180.0/M_PI; - } else { - if (degreemode) calcdata[CSP] *= M_PI/180.0; - calcdata[CSP] = cos(calcdata[CSP]); - } - break; - case Tankey: - if (invmode) { - calcdata[CSP] = atan(calcdata[CSP]); - if (degreemode) calcdata[CSP] *= 180.0/M_PI; - } else { - if (degreemode) calcdata[CSP] *= M_PI/180.0; - calcdata[CSP] = tan(calcdata[CSP]); - } - break; - case Tentoxkey: - if (invmode) - calcdata[CSP] = log10(calcdata[CSP]); - else - calcdata[CSP] = pow(10, calcdata[CSP]); - break; - case Expkey: - if (invmode) - calcdata[CSP] = log(calcdata[CSP]); - else - calcdata[CSP] = exp(calcdata[CSP]); - break; - case Intkey: - if (invmode) - calcdata[CSP] = calcdata[CSP] - trunc(calcdata[CSP]); - else - calcdata[CSP] = trunc(calcdata[CSP]); - break; - case Sqrtkey: - if (invmode==0) - calcdata[CSP] = sqrt(calcdata[CSP]); - else - calcdata[CSP] = calcdata[CSP]*calcdata[CSP]; - break; - case Notkey: - if (calcdata[CSP] - trunc(calcdata[CSP]) != 0) return; - i = calcdata[CSP]; - calcdata[CSP] = (int)(~i); - break; - } - formatentry(CSP); - muiSetTLTopInt(tl, CSP - Displaylines + 1); - glutPostRedisplay(); - enablepush = 1; -} - -void interpclick(int x) -{ - int i, rcount; - float f; - char *c; - - if (x == 0) return; - if (savingprog && x != Progkey && x != Runkey) - program[proglen++] = x; - if ((Zerokey <= x && x <= Ninekey) || x == Dotkey || - ((base == 16) && (Akey <= x && x <= Fkey))) { - if (enablepush) push(); - enablepush = 0; - if (x == Dotkey) - CS[CSP][inputptr++] = '.'; - else if (Akey <= x && x <= Fkey) - CS[CSP][inputptr++] = 'a' + x - Akey; - else - CS[CSP][inputptr++] = '0'+x-Zerokey; - CS[CSP][inputptr] = 0; - muiSetTLTopInt(tl, CSP - Displaylines + 1); - glutPostRedisplay(); - } else switch (x) { - case Pluskey: - binop('+'); break; - case Minuskey: - binop('-'); break; - case Timeskey: - binop('*'); break; - case Dividekey: - binop('/'); break; - case Xtoykey: - binop('^'); break; - case Helpkey: - showhelp(); break; - case Clearkey: - unop(Clearkey); break; - case Flipsignkey: - unop(Flipsignkey); break; - case Enterkey: - doenter(); - break; - case Exchkey: - if (CSP < Displaylines) break; - if (enablepush == 0) doenter(); - f = calcdata[CSP]; - calcdata[CSP] = calcdata[CSP-1]; - calcdata[CSP-1] = f; - c = CS[CSP]; - CS[CSP] = CS[CSP-1]; - CS[CSP-1] = c; - glutPostRedisplay(); - break; - case Rollkey: - if (CSP < Displaylines) break; - rcount = CSP - Displaylines+1; - if (enablepush == 0) doenter(); - f = calcdata[CSP]; - c = CS[CSP]; - for (i = 0; i < rcount; i++) { - calcdata[CSP-i] = calcdata[CSP-i-1]; - CS[CSP-i] = CS[CSP-i-1]; - } - calcdata[CSP-rcount] = f; - CS[CSP-rcount] = c; - glutPostRedisplay(); - break; - case Dup2key: - if (CSP < Displaylines) break; - if (enablepush == 0) doenter(); - strcpy(CS[CSP+2], CS[CSP]); - calcdata[CSP+2] = calcdata[CSP]; - strcpy(CS[CSP+1], CS[CSP-1]); - calcdata[CSP+1] = calcdata[CSP-1]; - CSP += 2; - muiSetTLTopInt(tl, CSP - Displaylines + 1); - glutPostRedisplay(); - break; - case Radkey: - if (degreemode) { - keypad[0][5].label = "Rad"; - keypad[0][5].invlabel = "Rad"; - } else { - keypad[0][5].label = "Deg"; - keypad[0][5].invlabel = "Deg"; - } - muiLoadButton(keypad[0][5].b, keypad[0][5].label); - degreemode = 1 - degreemode; - loadbuttons(invmode); - break; - case Invkey: - if (invmode) { - invmode = 0; - loadbuttons(0); - } else { - invmode = 2; - loadbuttons(1); - } - break; - case Progkey: - if (savingprog == 0) { - proglen = 0; - } - savingprog = 1 - savingprog; - break; - case Runkey: - if (savingprog) break; - for (i = 0; i < proglen; i++) - interpclick(program[i]); - break; - case Storekey: - unop(Storekey); break; - case Recallkey: - unop(Recallkey); break; - case Oneoverkey: - unop(Oneoverkey); break; - case Sinkey: - unop(Sinkey); break; - case Coskey: - unop(Coskey); break; - case Tankey: - unop(Tankey); break; - case Expkey: - unop(Expkey); break; - case Tentoxkey: - unop(Tentoxkey); break; - case Intkey: - unop(Intkey); break; - case Andkey: - binop('&'); break; - case Orkey: - binop('|'); break; - case Notkey: - unop(Notkey); break; - case Base10key: - if (enablepush == 0) doenter(); - base = 10; - for (i = Displaylines-1; i <= CSP; i++) - formatentry(i); - glutPostRedisplay(); - break; - case Base16key: - if (enablepush == 0) doenter(); - base = 16; - for (i = Displaylines-1; i <= CSP; i++) - formatentry(i); - glutPostRedisplay(); - break; - case Sqrtkey: - unop(Sqrtkey); break; - } - if (invmode == 1) { - loadbuttons(0); - } - if (invmode > 0) invmode--; -} - -void showhelp(void) -{ -printf("\n\n------------------------------------------\n\n"); -printf("Calc is a Reverse-Polish-Notation (RPN) calculator. You\n"); -printf("must enter the operands first, then the operation. For\n"); -printf("example, to add 3 and 4, press [3] [Enter] [4] [+]. If\n"); -printf("the operation is unary, like sine, it operates on the bottom\n"); -printf("element of the display. To take the sine of .54, do:\n"); -printf("\n"); -printf("[.] [5] [4] [Sin].\n"); -printf("\n"); -printf("The last 6 entries of the stack are visible, and you can\n"); -printf("scroll to see the rest. All operations are performed on\n"); -printf("the element(s) at the bottom of the stack. The bottom\n"); -printf("element is called 'x' and the next element up is called 'y'.\n"); -printf("\n"); -printf("The [+/-] key changes the sign of x. To find the cosine of\n"); -printf("-.22, do:\n"); -printf("\n"); -printf("[.] [2] [2] [+/-] [Cos].\n"); -printf("\n"); -printf("The [Inv] key changes the operation of some of the other keys\n"); -printf("so they perform the inverse operation. It is only active for\n"); -printf("one keystroke. Press [Inv] again to cancel the operation.\n"); -printf("\n"); -printf("[Sto] and [Rcl] stores and recalls a single value.\n"); -printf("\n"); -printf("[Dup2] duplicates the bottom 2 items on the stack.\n"); -printf("\n"); -printf("[Roll] rolls all the stack elements down one, and puts the\n"); -printf("bottom element on the top.\n"); -printf("\n"); -printf("[Exch] swaps the bottom two elements.\n"); -printf("\n"); -printf("[Int] gives the integer part.\n"); -printf("\n"); -printf("[Inv] [Frac] gives the fractional part.\n"); -printf("\n"); -printf("[Clr] clears the bottom element to zero. Use this when you\n"); -printf("get some kind of error\n"); -printf("\n"); -printf("[B10] and [B16] put you in base 10 or base 16 mode. Numbers\n"); -printf("with fractional parts are always displayed in base 10. In\n"); -printf("base 16 mode, the keys [a] through [f] are used for numeric\n"); -printf("entry. They do nothing, otherwise.\n"); -printf("\n"); -printf("[And], [Or] and [Not] are logical operations on 32 bit\n"); -printf("integers. If there's a fractional part, they don't do\n"); -printf("anything.\n"); -printf("\n"); -printf("To remember a sequence of keystrokes, press [Prog], then the\n"); -printf("sequence of keystrokes, and then [Prog] again. For example,\n"); -printf("if you want to calculate x^2 + y^2 repeatedly, where x and y\n"); -printf("are the two bottom entries of the stack, do this:\n"); -printf("\n"); -printf("[Prog] [Inv] [x^2] [Exch] [Inv] [x^2] [+] [Prog].\n"); -printf("\n"); -printf("Then, to calculate 5^2+7^2, do this:\n"); -printf("\n"); -printf("[5] [Enter] [7] [Run].\n"); -printf("\n"); -printf("The following keys from the computer keyboard are understood\n"); -printf("by calc:\n"); -printf("\n"); -printf("[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [.],\n"); -printf("[Enter], [+], [-], [*], [/], [a], [b], [c], [d], [e], [f].\n"); -printf("\n"); -printf("The [Deg]/[Rad] key shows the current angle mode. Press\n"); -printf("it to get the other angle mode.\n"); -printf("\n------------------------------------------\n\n"); -} diff --git a/lib/glut-3.7.6/progs/mui/calc/calc.dsp b/lib/glut-3.7.6/progs/mui/calc/calc.dsp deleted file mode 100644 index bc91335f99aaf81e01c4e671fbd71c31db56ab9d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mui/calc/calc.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="calc" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=calc - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "calc.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "calc.mak" CFG="calc - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "calc - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "calc - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "calc - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "calc - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "calc - Win32 Release" -# Name "calc - Win32 Debug" -# Begin Source File - -SOURCE=.\calc.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/mui/calc/calc.h b/lib/glut-3.7.6/progs/mui/calc/calc.h deleted file mode 100644 index 4ea3a89f1427144b4d49b083da3946d1806a1fa5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/mui/calc/calc.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#define Pluskey 1 -#define Minuskey 2 -#define Timeskey 3 -#define Zerokey 4 -#define Onekey 5 -#define Twokey 6 -#define Threekey 7 -#define Fourkey 8 -#define Fivekey 9 -#define Sixkey 10 -#define Sevenkey 11 -#define Eightkey 12 -#define Ninekey 13 -#define Dividekey 14 -#define Akey 15 -#define Bkey 16 -#define Ckey 17 -#define Dkey 18 -#define Ekey 19 -#define Fkey 20 -#define Flipsignkey 21 -#define Enterkey 22 -#define Exchkey 23 -#define Rollkey 24 -#define Radkey 25 -#define Invkey 26 -#define Progkey 27 -#define Storekey 28 -#define Recallkey 29 -#define Sinkey 30 -#define Coskey 31 -#define Tankey 32 -#define Expkey 33 -#define Tentoxkey 34 -#define Intkey 35 -#define Andkey 36 -#define Orkey 37 -#define Notkey 38 -#define Base16key 39 -#define Sqrtkey 40 -#define Dotkey 41 -#define Oneoverkey 42 -#define Base10key 43 -#define Clearkey 44 -#define Dup2key 45 -#define Runkey 46 -#define Xtoykey 47 -#define Helpkey 48 - diff --git a/lib/glut-3.7.6/progs/perf_harness.dsw b/lib/glut-3.7.6/progs/perf_harness.dsw deleted file mode 100644 index f7f29999caccd45818568977ad0c3a9248097e24..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/perf_harness.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "perf_torus"=".\perf_harness\perf_torus.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/perf_harness/Imakefile b/lib/glut-3.7.6/progs/perf_harness/Imakefile deleted file mode 100644 index d84565adfe7e7415466a285eccc0ee15f9191c6a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/perf_harness/Imakefile +++ /dev/null @@ -1,14 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../Glut.cf" - -TARGETS = perf_torus - -SRCS = gl_harness.c torus.c - -AllTarget($(TARGETS)) - -NormalGlutProgramTarget(perf_torus,torus.o gl_harness.o) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/perf_harness/README b/lib/glut-3.7.6/progs/perf_harness/README deleted file mode 100644 index 955598c457bd46dbf55b2297655068ab0a5dcc98..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/perf_harness/README +++ /dev/null @@ -1,40 +0,0 @@ - -This directory contains an example of using a simple GLUT benchmark -harness to construct portable application-specific OpenGL benchmarks. - -For more information on this code and how to construction -application-specific OpenGL benchmarks with the gl_harness.c in this -directory, see Section 6.6.8 of my book "Programming OpenGL for the X -Window System" (Addison-Wesley, ISBN 0-201-48359-9). See: - - http://reality.sgi.com/mjk_asd/OpenGLforX.html - -Because the benchmark harness uses GLUT, the benchmarks created work on -any GLUT-capable window system (not just X11). - -Example runs: - - % torus_test - Renders/second = 2.90951 - after 30 iterations over 10.311 seconds - - % torus_test -iters 40 - Renders/second = 2.90846 - after 40 iterations over 13.753 seconds - - % torus_test -time 5 -depth - Renders/second = 2.53678 - after 15 iterations over 5.913 seconds - - % torus_test -depth -light - Renders/second = 1.82515 - after 20 iterations over 10.958 seconds - - % torus_test -geometry 100x100 -depth -light - Renders/second = 2.00981 - after 25 iterations over 12.439 seconds - -Good luck with your benchmarking. - -- Mark - July 10, 1997 diff --git a/lib/glut-3.7.6/progs/perf_harness/gl_harness.c b/lib/glut-3.7.6/progs/perf_harness/gl_harness.c deleted file mode 100644 index 7e8e60e404aa4f96058d3a21f8d8aac9143e01f6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/perf_harness/gl_harness.c +++ /dev/null @@ -1,154 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include -#include - -extern testInit(int argc, char **argv, int width, int height); -extern testRender(void); - -int testIterationsStep, testDisplayMode, testMinimumTestTime; -float timeEnd, timeStart; -int error; -int renders = 0, damaged = 0; - -/* ARGSUSED */ -void -report(int value) -{ - float duration; - - duration = (timeEnd - timeStart) / 1000.0; - printf("Renders/second = %g\n", - renders / duration); - printf(" after %d iterations over %g seconds\n", - renders, duration); - if (error != GL_NO_ERROR) - printf("OpenGL errors occurred during test; RESULTS ARE DUBIOUS.\n"); - if (damaged != 1) - printf("Window disturbed during test; RESULTS ARE DUBIOUS.\n"); - printf("\n"); - exit(damaged != 1); -} - -/* ARGSUSED */ -void -ensureEventsGotten(int value) -{ - /* Hack. Creating a new window _ensures_ any outstanding - expose event from popping the window will be retrieved. */ - glutCreateWindow("dummy"); - glutHideWindow(); - glutTimerFunc(1, report, 0); -} - -void -displayDone(void) -{ - if (glutLayerGet(GLUT_NORMAL_DAMAGED)) - damaged++; -} - -/* ARGSUSED */ -void -done(int value) -{ - glFinish(); - timeEnd = glutGet(GLUT_ELAPSED_TIME); - error = glGetError(); - - /* Pop the window. If the window was obscured by another - window during the test, raising the window should generate - an expose event we want to catch. */ - glutPopWindow(); - - /* The test is over so only notice an expose and do not run - the testRender routine. */ - glutDisplayFunc(displayDone); - glutTimerFunc(1, ensureEventsGotten, 0); -} - -void -display(void) -{ - int i; - - if (glutLayerGet(GLUT_NORMAL_DAMAGED)) { - damaged++; - if (damaged == 1) { - glutTimerFunc(testMinimumTestTime * 1000, done, 0); - timeStart = glutGet(GLUT_ELAPSED_TIME); - } - } - for (i = 0; i < testIterationsStep; i++) { - testRender(); - renders++; - } - glutPostRedisplay(); -} - -void -visible(int state) -{ - if (state == GLUT_NOT_VISIBLE) - damaged++; -} - -int -main(int argc, char **argv) -{ - char *newArgv[100]; - int newArgc, i; - - /* Defaults; testInit may override these. */ - testIterationsStep = 5; - testDisplayMode = GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH; - testMinimumTestTime = 10; /* seconds */ - - glutInit(&argc, argv); - newArgc = 1; - newArgv[0] = argv[0]; - for (i = 1; i < argc; i++) { - if (!strcmp("-time", argv[i])) { - i++; - if (argv[i] == NULL) { - fprintf(stderr, "%s: -time option needs argument\n", argv[0]); - exit(1); - } - testMinimumTestTime = (int) strtol(argv[i], NULL, 0); - } else if (!strcmp("-mode", argv[i])) { - i++; - if (argv[i] == NULL) { - fprintf(stderr, "%s: -mode option needs argument\n", argv[0]); - exit(1); - } - testDisplayMode = (int) strtol(argv[i], NULL, 0); - } else if (!strcmp("-iters", argv[i])) { - i++; - if (argv[i] == NULL) { - fprintf(stderr, "%s: -mode option needs argument\n", argv[0]); - exit(1); - } - testIterationsStep = (int) strtol(argv[i], NULL, 0); - } else { - newArgv[newArgc] = argv[i]; - newArgc++; - } - } - newArgv[newArgc] = NULL; - - glutInitDisplayMode(testDisplayMode); - glutCreateWindow("OpenGL performance test"); - glutDisplayFunc(display); - glutVisibilityFunc(visible); - testInit(newArgc, newArgv, - glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT)); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/perf_harness/perf_torus.dsp b/lib/glut-3.7.6/progs/perf_harness/perf_torus.dsp deleted file mode 100644 index 54116ebced910120a699e1e39676fbcfd5a12cf2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/perf_harness/perf_torus.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="perf_torus" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=perf_torus - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "perf_torus.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "perf_torus.mak" CFG="perf_torus - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "perf_torus - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "perf_torus - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "perf_torus - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "perf_torus - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "perf_torus - Win32 Release" -# Name "perf_torus - Win32 Debug" -# Begin Source File - -SOURCE=.\gl_harness.c -# End Source File -# Begin Source File - -SOURCE=.\torus.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/perf_harness/torus.c b/lib/glut-3.7.6/progs/perf_harness/torus.c deleted file mode 100644 index 1bcd1ce66bd33392e9ae8f1c3aaf613cb79bbe77..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/perf_harness/torus.c +++ /dev/null @@ -1,61 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -/* Modify these variables if necessary to control the number of - iterations for per time sample, the GLUT display mode for the - window, and the minimum test running time in seconds. */ -extern int testIterationsStep, testDisplayMode, testMinimumTestTime; - -void -testInit(int argc, char **argv, int width, int height) -{ - static GLfloat light_diffuse[] = {1.0, 0.0, 0.0, 1.0}; - static GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0}; - int solid, i; - - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - gluPerspective(25.0, width/height, 1.0, 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, - 0.0, 0.0, 0.0, - 0.0, 1.0, 0.); - glTranslatef(0.0, 0.0, -1.0); - - glColor3f(1.0, 0.0, 0.0); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - solid = 1; - for (i = 1; i < argc; i++) { - if (!strcmp("-light", argv[i])) { - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - } else if (!strcmp("-depth", argv[i])) { - glEnable(GL_DEPTH_TEST); - } else if (!strcmp("-wire", argv[i])) { - solid = 0; - } - } - glNewList(1, GL_COMPILE); - if (solid) { - glutSolidTorus(0.25, 0.75, 100, 100); - } else { - glutWireTorus(0.25, 0.75, 100, 100); - } - glEndList(); -} - -void -testRender(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glCallList(1); -} diff --git a/lib/glut-3.7.6/progs/redbook.dsw b/lib/glut-3.7.6/progs/redbook.dsw deleted file mode 100644 index f0b6b5fa831e0865c8eeccd330e024edba5d104b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook.dsw +++ /dev/null @@ -1,974 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\redbook\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name aaindex - End Project Dependency - Begin Project Dependency - Project_Dep_Name aapoly - End Project Dependency - Begin Project Dependency - Project_Dep_Name aargb - End Project Dependency - Begin Project Dependency - Project_Dep_Name accanti - End Project Dependency - Begin Project Dependency - Project_Dep_Name accpersp - End Project Dependency - Begin Project Dependency - Project_Dep_Name alpha - End Project Dependency - Begin Project Dependency - Project_Dep_Name alpha3D - End Project Dependency - Begin Project Dependency - Project_Dep_Name anti - End Project Dependency - Begin Project Dependency - Project_Dep_Name bezcurve - End Project Dependency - Begin Project Dependency - Project_Dep_Name bezmesh - End Project Dependency - Begin Project Dependency - Project_Dep_Name checker - End Project Dependency - Begin Project Dependency - Project_Dep_Name clip - End Project Dependency - Begin Project Dependency - Project_Dep_Name colormat - End Project Dependency - Begin Project Dependency - Project_Dep_Name cube - End Project Dependency - Begin Project Dependency - Project_Dep_Name depthcue - End Project Dependency - Begin Project Dependency - Project_Dep_Name dof - End Project Dependency - Begin Project Dependency - Project_Dep_Name double - End Project Dependency - Begin Project Dependency - Project_Dep_Name drawf - End Project Dependency - Begin Project Dependency - Project_Dep_Name feedback - End Project Dependency - Begin Project Dependency - Project_Dep_Name fog - End Project Dependency - Begin Project Dependency - Project_Dep_Name fogindex - End Project Dependency - Begin Project Dependency - Project_Dep_Name font - End Project Dependency - Begin Project Dependency - Project_Dep_Name hello - End Project Dependency - Begin Project Dependency - Project_Dep_Name image - End Project Dependency - Begin Project Dependency - Project_Dep_Name light - End Project Dependency - Begin Project Dependency - Project_Dep_Name lines - End Project Dependency - Begin Project Dependency - Project_Dep_Name list - End Project Dependency - Begin Project Dependency - Project_Dep_Name material - End Project Dependency - Begin Project Dependency - Project_Dep_Name mipmap - End Project Dependency - Begin Project Dependency - Project_Dep_Name model - End Project Dependency - Begin Project Dependency - Project_Dep_Name movelight - End Project Dependency - Begin Project Dependency - Project_Dep_Name nurbs - End Project Dependency - Begin Project Dependency - Project_Dep_Name pickdepth - End Project Dependency - Begin Project Dependency - Project_Dep_Name picksquare - End Project Dependency - Begin Project Dependency - Project_Dep_Name plane - End Project Dependency - Begin Project Dependency - Project_Dep_Name planet - End Project Dependency - Begin Project Dependency - Project_Dep_Name polyoff - End Project Dependency - Begin Project Dependency - Project_Dep_Name polys - End Project Dependency - Begin Project Dependency - Project_Dep_Name quadric - End Project Dependency - Begin Project Dependency - Project_Dep_Name robot - End Project Dependency - Begin Project Dependency - Project_Dep_Name sccolorlight - End Project Dependency - Begin Project Dependency - Project_Dep_Name scene - End Project Dependency - Begin Project Dependency - Project_Dep_Name scenebamb - End Project Dependency - Begin Project Dependency - Project_Dep_Name sceneflat - End Project Dependency - Begin Project Dependency - Project_Dep_Name select - End Project Dependency - Begin Project Dependency - Project_Dep_Name smooth - End Project Dependency - Begin Project Dependency - Project_Dep_Name stencil - End Project Dependency - Begin Project Dependency - Project_Dep_Name stroke - End Project Dependency - Begin Project Dependency - Project_Dep_Name surface - End Project Dependency - Begin Project Dependency - Project_Dep_Name teaambient - End Project Dependency - Begin Project Dependency - Project_Dep_Name teapots - End Project Dependency - Begin Project Dependency - Project_Dep_Name tess - End Project Dependency - Begin Project Dependency - Project_Dep_Name tesswind - End Project Dependency - Begin Project Dependency - Project_Dep_Name texbind - End Project Dependency - Begin Project Dependency - Project_Dep_Name texgen - End Project Dependency - Begin Project Dependency - Project_Dep_Name texprox - End Project Dependency - Begin Project Dependency - Project_Dep_Name texsub - End Project Dependency - Begin Project Dependency - Project_Dep_Name texturesurf - End Project Dependency - Begin Project Dependency - Project_Dep_Name torus - End Project Dependency - Begin Project Dependency - Project_Dep_Name trim - End Project Dependency - Begin Project Dependency - Project_Dep_Name unproject - End Project Dependency - Begin Project Dependency - Project_Dep_Name varray - End Project Dependency - Begin Project Dependency - Project_Dep_Name wrap - End Project Dependency -}}} - -############################################################################### - -Project: "aaindex"=".\redbook\aaindex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "aapoly"=".\redbook\aapoly.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "aargb"=".\redbook\aargb.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "accanti"=".\redbook\accanti.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "accpersp"=".\redbook\accpersp.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "alpha"=".\redbook\alpha.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "alpha3D"=".\redbook\alpha3D.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "anti"=".\redbook\anti.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "bezcurve"=".\redbook\bezcurve.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "bezmesh"=".\redbook\bezmesh.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "checker"=".\redbook\checker.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "clip"=".\redbook\clip.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "colormat"=".\redbook\colormat.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "cube"=".\redbook\cube.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "depthcue"=".\redbook\depthcue.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "dof"=".\redbook\dof.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "double"=".\redbook\double.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "drawf"=".\redbook\drawf.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "feedback"=".\redbook\feedback.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "fog"=".\redbook\fog.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "fogindex"=".\redbook\fogindex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "font"=".\redbook\font.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "hello"=".\redbook\hello.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "image"=".\redbook\image.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "light"=".\redbook\light.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "lines"=".\redbook\lines.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "list"=".\redbook\list.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "material"=".\redbook\material.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mipmap"=".\redbook\mipmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "model"=".\redbook\model.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "movelight"=".\redbook\movelight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "nurbs"=".\redbook\nurbs.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "pickdepth"=".\redbook\pickdepth.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "picksquare"=".\redbook\picksquare.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "plane"=".\redbook\plane.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "planet"=".\redbook\planet.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "polyoff"=".\redbook\polyoff.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "polys"=".\redbook\polys.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "quadric"=".\redbook\quadric.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "robot"=".\redbook\robot.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sccolorlight"=".\redbook\sccolorlight.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "scene"=".\redbook\scene.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "scenebamb"=".\redbook\scenebamb.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sceneflat"=".\redbook\sceneflat.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "select"=".\redbook\select.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "smooth"=".\redbook\smooth.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "stencil"=".\redbook\stencil.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "stroke"=".\redbook\stroke.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "surface"=".\redbook\surface.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "teaambient"=".\redbook\teaambient.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "teapots"=".\redbook\teapots.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tess"=".\redbook\tess.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "tesswind"=".\redbook\tesswind.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texbind"=".\redbook\texbind.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texgen"=".\redbook\texgen.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texprox"=".\redbook\texprox.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texsub"=".\redbook\texsub.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "texturesurf"=".\redbook\texturesurf.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "torus"=".\redbook\torus.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "trim"=".\redbook\trim.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "unproject"=".\redbook\unproject.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "varray"=".\redbook\varray.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "wrap"=".\redbook\wrap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/redbook/Imakefile b/lib/glut-3.7.6/progs/redbook/Imakefile deleted file mode 100644 index 711ef43fac17816d27f364db44eee69c8c5d34d5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/Imakefile +++ /dev/null @@ -1,92 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -#include "../../Glut.cf" - -TARGETS = accanti anti bezmesh checker depthcue dof fog fogindex material \ - mipmap nurbs pickdepth plane polys sccolorlight scene scenebamb \ - sceneflat stencil stroke surface teaambient teapots texturesurf \ - aaindex aapoly aargb accpersp alpha alpha3D bezcurve clip colormat \ - cube double drawf feedback font hello image light lines list model \ - movelight picksquare planet polyoff quadric robot select smooth \ - tess tesswind texbind texgen texprox texsub torus trim unproject \ - varray wrap - -SRCS = aaindex.c aapoly.c aargb.c accanti.c accpersp.c alpha.c \ - alpha3D.c anti.c bezcurve.c bezmesh.c checker.c clip.c colormat.c \ - cube.c depthcue.c dof.c double.c drawf.c feedback.c fog.c fogindex.c \ - font.c hello.c image.c light.c lines.c list.c material.c mipmap.c \ - model.c movelight.c nurbs.c pickdepth.c picksquare.c plane.c planet.c \ - polyoff.c polys.c quadric.c robot.c sccolorlight.c scene.c \ - scenebamb.c sceneflat.c select.c smooth.c stencil.c stroke.c \ - surface.c teaambient.c teapots.c tess.c tesswind.c texbind.c texgen.c \ - texprox.c texsub.c texturesurf.c torus.c trim.c unproject.c varray.c \ - wrap.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(accanti) -SimpleGlutProgramTarget(anti) -SimpleGlutProgramTarget(bezmesh) -SimpleGlutProgramTarget(checker) -SimpleGlutProgramTarget(depthcue) -SimpleGlutProgramTarget(dof) -SimpleGlutProgramTarget(fog) -SimpleGlutProgramTarget(fogindex) -SimpleGlutProgramTarget(material) -SimpleGlutProgramTarget(nurbs) -SimpleGlutProgramTarget(pickdepth) -SimpleGlutProgramTarget(plane) -SimpleGlutProgramTarget(mipmap) -SimpleGlutProgramTarget(polys) -SimpleGlutProgramTarget(sccolorlight) -SimpleGlutProgramTarget(scene) -SimpleGlutProgramTarget(scenebamb) -SimpleGlutProgramTarget(sceneflat) -SimpleGlutProgramTarget(stencil) -SimpleGlutProgramTarget(stroke) -SimpleGlutProgramTarget(surface) -SimpleGlutProgramTarget(teaambient) -SimpleGlutProgramTarget(teapots) -SimpleGlutProgramTarget(texturesurf) -SimpleGlutProgramTarget(aaindex) -SimpleGlutProgramTarget(aapoly) -SimpleGlutProgramTarget(aargb) -SimpleGlutProgramTarget(accpersp) -SimpleGlutProgramTarget(alpha) -SimpleGlutProgramTarget(alpha3D) -SimpleGlutProgramTarget(bezcurve) -SimpleGlutProgramTarget(clip) -SimpleGlutProgramTarget(colormat) -SimpleGlutProgramTarget(cube) -SimpleGlutProgramTarget(double) -SimpleGlutProgramTarget(drawf) -SimpleGlutProgramTarget(feedback) -SimpleGlutProgramTarget(font) -SimpleGlutProgramTarget(hello) -SimpleGlutProgramTarget(image) -SimpleGlutProgramTarget(light) -SimpleGlutProgramTarget(lines) -SimpleGlutProgramTarget(list) -SimpleGlutProgramTarget(model) -SimpleGlutProgramTarget(movelight) -SimpleGlutProgramTarget(picksquare) -SimpleGlutProgramTarget(planet) -SimpleGlutProgramTarget(polyoff) -SimpleGlutProgramTarget(quadric) -SimpleGlutProgramTarget(robot) -SimpleGlutProgramTarget(select) -SimpleGlutProgramTarget(smooth) -SimpleGlutProgramTarget(tess) -SimpleGlutProgramTarget(tesswind) -SimpleGlutProgramTarget(texbind) -SimpleGlutProgramTarget(texgen) -SimpleGlutProgramTarget(texprox) -SimpleGlutProgramTarget(texsub) -SimpleGlutProgramTarget(torus) -SimpleGlutProgramTarget(trim) -SimpleGlutProgramTarget(unproject) -SimpleGlutProgramTarget(varray) -SimpleGlutProgramTarget(wrap) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/redbook/_all.dsp b/lib/glut-3.7.6/progs/redbook/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/aaindex.c b/lib/glut-3.7.6/progs/redbook/aaindex.c deleted file mode 100644 index 7dbc7b4b9b211d078d44baa4e414b4ac965c183a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/aaindex.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * aaindex.c - * This program draws shows how to draw anti-aliased lines in color - * index mode. It draws two diagonal lines to form an X; when 'r' - * is typed in the window, the lines are rotated in opposite - * directions. - */ -#include -#include "stdlib.h" - -#define RAMPSIZE 16 -#define RAMP1START 32 -#define RAMP2START 48 - -static float rotAngle = 0.; - -/* Initialize antialiasing for color index mode, - * including loading a green color ramp starting - * at RAMP1START, and a blue color ramp starting - * at RAMP2START. The ramps must be a multiple of 16. - */ -void init(void) -{ - int i; - - for (i = 0; i < RAMPSIZE; i++) { - GLfloat shade; - shade = (GLfloat) i/(GLfloat) RAMPSIZE; - glutSetColor(RAMP1START+(GLint)i, 0., shade, 0.); - glutSetColor(RAMP2START+(GLint)i, 0., 0., shade); - } - - glEnable (GL_LINE_SMOOTH); - glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE); - glLineWidth (1.5); - - glClearIndex ((GLfloat) RAMP1START); -} - -/* Draw 2 diagonal lines to form an X - */ -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glIndexi(RAMP1START); - glPushMatrix(); - glRotatef(-rotAngle, 0.0, 0.0, 0.1); - glBegin (GL_LINES); - glVertex2f (-0.5, 0.5); - glVertex2f (0.5, -0.5); - glEnd (); - glPopMatrix(); - - glIndexi(RAMP2START); - glPushMatrix(); - glRotatef(rotAngle, 0.0, 0.0, 0.1); - glBegin (GL_LINES); - glVertex2f (0.5, 0.5); - glVertex2f (-0.5, -0.5); - glEnd (); - glPopMatrix(); - - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (-1.0, 1.0, - -1.0*(GLfloat)h/(GLfloat)w, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (-1.0*(GLfloat)w/(GLfloat)h, - 1.0*(GLfloat)w/(GLfloat)h, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 'r': - case 'R': - rotAngle += 20.; - if (rotAngle >= 360.) rotAngle = 0.; - glutPostRedisplay(); - break; - case 27: /* Escape Key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * color index display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_INDEX); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/aaindex.dsp b/lib/glut-3.7.6/progs/redbook/aaindex.dsp deleted file mode 100644 index 0d2c55059c9dbe8a41f6a9593f79cea708164607..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/aaindex.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aaindex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=aaindex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aaindex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aaindex.mak" CFG="aaindex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aaindex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "aaindex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aaindex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "aaindex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "aaindex - Win32 Release" -# Name "aaindex - Win32 Debug" -# Begin Source File - -SOURCE=.\aaindex.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/aapoly.c b/lib/glut-3.7.6/progs/redbook/aapoly.c deleted file mode 100644 index 757f0f48c43278f8a94f0ec95bece2a0186cae1b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/aapoly.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * aapoly.c - * This program draws filled polygons with antialiased - * edges. The special GL_SRC_ALPHA_SATURATE blending - * function is used. - * Pressing the 't' key turns the antialiasing on and off. - */ -#include -#include -#include -#include - -GLboolean polySmooth = GL_TRUE; - -static void init(void) -{ - glCullFace (GL_BACK); - glEnable (GL_CULL_FACE); - glBlendFunc (GL_SRC_ALPHA_SATURATE, GL_ONE); - glClearColor (0.0, 0.0, 0.0, 0.0); -} - -#define NFACE 6 -#define NVERT 8 -void drawCube(GLdouble x0, GLdouble x1, GLdouble y0, GLdouble y1, - GLdouble z0, GLdouble z1) -{ - static GLfloat v[8][3]; - static GLfloat c[8][4] = { - {0.0, 0.0, 0.0, 1.0}, {1.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, {1.0, 1.0, 0.0, 1.0}, - {0.0, 0.0, 1.0, 1.0}, {1.0, 0.0, 1.0, 1.0}, - {0.0, 1.0, 1.0, 1.0}, {1.0, 1.0, 1.0, 1.0} - }; - -/* indices of front, top, left, bottom, right, back faces */ - static GLubyte indices[NFACE][4] = { - {4, 5, 6, 7}, {2, 3, 7, 6}, {0, 4, 7, 3}, - {0, 1, 5, 4}, {1, 5, 6, 2}, {0, 3, 2, 1} - }; - - v[0][0] = v[3][0] = v[4][0] = v[7][0] = x0; - v[1][0] = v[2][0] = v[5][0] = v[6][0] = x1; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = y0; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = y1; - v[0][2] = v[1][2] = v[2][2] = v[3][2] = z0; - v[4][2] = v[5][2] = v[6][2] = v[7][2] = z1; - -#ifdef GL_VERSION_1_1 - glEnableClientState (GL_VERTEX_ARRAY); - glEnableClientState (GL_COLOR_ARRAY); - glVertexPointer (3, GL_FLOAT, 0, v); - glColorPointer (4, GL_FLOAT, 0, c); - glDrawElements (GL_QUADS, NFACE*4, GL_UNSIGNED_BYTE, indices); - glDisableClientState (GL_VERTEX_ARRAY); - glDisableClientState (GL_COLOR_ARRAY); -#else - printf ("If this is GL Version 1.0, "); - printf ("vertex arrays are not supported.\n"); - exit(1); -#endif -} - -/* Note: polygons must be drawn from front to back - * for proper blending. - */ -void display(void) -{ - if (polySmooth) { - glClear (GL_COLOR_BUFFER_BIT); - glEnable (GL_BLEND); - glEnable (GL_POLYGON_SMOOTH); - glDisable (GL_DEPTH_TEST); - } - else { - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glDisable (GL_BLEND); - glDisable (GL_POLYGON_SMOOTH); - glEnable (GL_DEPTH_TEST); - } - - glPushMatrix (); - glTranslatef (0.0, 0.0, -8.0); - glRotatef (30.0, 1.0, 0.0, 0.0); - glRotatef (60.0, 0.0, 1.0, 0.0); - drawCube(-0.5, 0.5, -0.5, 0.5, -0.5, 0.5); - glPopMatrix (); - - glFlush (); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(30.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - polySmooth = !polySmooth; - glutPostRedisplay(); - break; - case 27: - exit(0); /* Escape key */ - break; - default: - break; - } -} - -/* Main Loop - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB - | GLUT_ALPHA | GLUT_DEPTH); - glutInitWindowSize(200, 200); - glutCreateWindow(argv[0]); - init (); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} - diff --git a/lib/glut-3.7.6/progs/redbook/aapoly.dsp b/lib/glut-3.7.6/progs/redbook/aapoly.dsp deleted file mode 100644 index 8d7ce7f6ae55a71b28ecea221e5f9b01f350d36e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/aapoly.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aapoly" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=aapoly - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aapoly.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aapoly.mak" CFG="aapoly - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aapoly - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "aapoly - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aapoly - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "aapoly - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "aapoly - Win32 Release" -# Name "aapoly - Win32 Debug" -# Begin Source File - -SOURCE=.\aapoly.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/aargb.c b/lib/glut-3.7.6/progs/redbook/aargb.c deleted file mode 100644 index f51984170e6811b607d627e67777c42044a76f75..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/aargb.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * aargb.c - * This program draws shows how to draw anti-aliased lines. It draws - * two diagonal lines to form an X; when 'r' is typed in the window, - * the lines are rotated in opposite directions. - */ -#include -#include -#include - -static float rotAngle = 0.; - -/* Initialize antialiasing for RGBA mode, including alpha - * blending, hint, and line width. Print out implementation - * specific info on line width granularity and width. - */ -void init(void) -{ - GLfloat values[2]; - glGetFloatv (GL_LINE_WIDTH_GRANULARITY, values); - printf ("GL_LINE_WIDTH_GRANULARITY value is %3.1f\n", values[0]); - - glGetFloatv (GL_LINE_WIDTH_RANGE, values); - printf ("GL_LINE_WIDTH_RANGE values are %3.1f %3.1f\n", - values[0], values[1]); - - glEnable (GL_LINE_SMOOTH); - glEnable (GL_BLEND); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE); - glLineWidth (1.5); - - glClearColor(0.0, 0.0, 0.0, 0.0); -} - -/* Draw 2 diagonal lines to form an X - */ -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f (0.0, 1.0, 0.0); - glPushMatrix(); - glRotatef(-rotAngle, 0.0, 0.0, 0.1); - glBegin (GL_LINES); - glVertex2f (-0.5, 0.5); - glVertex2f (0.5, -0.5); - glEnd (); - glPopMatrix(); - - glColor3f (0.0, 0.0, 1.0); - glPushMatrix(); - glRotatef(rotAngle, 0.0, 0.0, 0.1); - glBegin (GL_LINES); - glVertex2f (0.5, 0.5); - glVertex2f (-0.5, -0.5); - glEnd (); - glPopMatrix(); - - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (-1.0, 1.0, - -1.0*(GLfloat)h/(GLfloat)w, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (-1.0*(GLfloat)w/(GLfloat)h, - 1.0*(GLfloat)w/(GLfloat)h, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 'r': - case 'R': - rotAngle += 20.; - if (rotAngle >= 360.) rotAngle = 0.; - glutPostRedisplay(); - break; - case 27: /* Escape Key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/aargb.dsp b/lib/glut-3.7.6/progs/redbook/aargb.dsp deleted file mode 100644 index 041a5ba78b0eb5583dc809ae09fac71fb386fc41..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/aargb.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aargb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=aargb - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aargb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aargb.mak" CFG="aargb - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aargb - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "aargb - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aargb - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "aargb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "aargb - Win32 Release" -# Name "aargb - Win32 Debug" -# Begin Source File - -SOURCE=.\aargb.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/accanti.c b/lib/glut-3.7.6/progs/redbook/accanti.c deleted file mode 100644 index d45cf9e64e3567ca81ae76db07c0da4568a5c291..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/accanti.c +++ /dev/null @@ -1,168 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* accanti.c - */ -#include -#include -#include "jitter.h" - -/* Initialize lighting and other values. - */ -void myinit(void) -{ - GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_position[] = { 0.0, 0.0, 10.0, 1.0 }; - GLfloat lm_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 50.0); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lm_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glShadeModel (GL_FLAT); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearAccum(0.0, 0.0, 0.0, 0.0); -} - -void displayObjects(void) -{ - GLfloat torus_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; - GLfloat cube_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; - GLfloat sphere_diffuse[] = { 0.7, 0.0, 0.7, 1.0 }; - GLfloat octa_diffuse[] = { 0.7, 0.4, 0.4, 1.0 }; - - glPushMatrix (); - glRotatef (30.0, 1.0, 0.0, 0.0); - - glPushMatrix (); - glTranslatef (-0.80, 0.35, 0.0); - glRotatef (100.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, torus_diffuse); - glutSolidTorus (0.275, 0.85, 16, 16); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (-0.75, -0.50, 0.0); - glRotatef (45.0, 0.0, 0.0, 1.0); - glRotatef (45.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, cube_diffuse); - glutSolidCube (1.5); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.75, 0.60, 0.0); - glRotatef (30.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, sphere_diffuse); - glutSolidSphere (1.0, 16, 16); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.70, -0.90, 0.25); - glMaterialfv(GL_FRONT, GL_DIFFUSE, octa_diffuse); - glutSolidOctahedron (); - glPopMatrix (); - - glPopMatrix (); -} - -#define ACSIZE 8 - -void display(void) -{ - GLint viewport[4]; - int jitter; - - glGetIntegerv (GL_VIEWPORT, viewport); - - glClear(GL_ACCUM_BUFFER_BIT); - for (jitter = 0; jitter < ACSIZE; jitter++) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix (); -/* Note that 4.5 is the distance in world space between - * left and right and bottom and top. - * This formula converts fractional pixel movement to - * world coordinates. - */ - glTranslatef (j8[jitter].x*4.5/viewport[2], - j8[jitter].y*4.5/viewport[3], 0.0); - displayObjects (); - glPopMatrix (); - glAccum(GL_ACCUM, 1.0/ACSIZE); - } - glAccum (GL_RETURN, 1.0); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-2.25, 2.25, -2.25*h/w, 2.25*h/w, -10.0, 10.0); - else - glOrtho (-2.25*w/h, 2.25*w/h, -2.25, 2.25, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB - | GLUT_ACCUM | GLUT_DEPTH); - glutInitWindowSize (250, 250); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/accanti.dsp b/lib/glut-3.7.6/progs/redbook/accanti.dsp deleted file mode 100644 index 931b23b2c5e47c1fff794b1f064e9d52547b234b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/accanti.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="accanti" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=accanti - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "accanti.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "accanti.mak" CFG="accanti - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "accanti - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "accanti - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "accanti - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "accanti - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "accanti - Win32 Release" -# Name "accanti - Win32 Debug" -# Begin Source File - -SOURCE=.\accanti.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/accpersp.c b/lib/glut-3.7.6/progs/redbook/accpersp.c deleted file mode 100644 index 46e369ae631163a6c10d42d5a9deac3d6cb03510..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/accpersp.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* accpersp.c - * Use the accumulation buffer to do full-scene antialiasing - * on a scene with perspective projection, using the special - * routines accFrustum() and accPerspective(). - */ -#include -#include -#include -#include "jitter.h" - -#define PI_ 3.14159265358979323846 - -/* accFrustum() - * The first 6 arguments are identical to the glFrustum() call. - * - * pixdx and pixdy are anti-alias jitter in pixels. - * Set both equal to 0.0 for no anti-alias jitter. - * eyedx and eyedy are depth-of field jitter in pixels. - * Set both equal to 0.0 for no depth of field effects. - * - * focus is distance from eye to plane in focus. - * focus must be greater than, but not equal to 0.0. - * - * Note that accFrustum() calls glTranslatef(). You will - * probably want to insure that your ModelView matrix has been - * initialized to identity before calling accFrustum(). - */ -void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, - GLdouble top, GLdouble nnear, GLdouble ffar, GLdouble pixdx, - GLdouble pixdy, GLdouble eyedx, GLdouble eyedy, GLdouble focus) -{ - GLdouble xwsize, ywsize; - GLdouble dx, dy; - GLint viewport[4]; - - glGetIntegerv (GL_VIEWPORT, viewport); - - xwsize = right - left; - ywsize = top - bottom; - - dx = -(pixdx*xwsize/(GLdouble) viewport[2] + eyedx*nnear/focus); - dy = -(pixdy*ywsize/(GLdouble) viewport[3] + eyedy*nnear/focus); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum (left + dx, right + dx, bottom + dy, top + dy, nnear, ffar); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef (-eyedx, -eyedy, 0.0); -} - -/* accPerspective() - * - * The first 4 arguments are identical to the gluPerspective() call. - * pixdx and pixdy are anti-alias jitter in pixels. - * Set both equal to 0.0 for no anti-alias jitter. - * eyedx and eyedy are depth-of field jitter in pixels. - * Set both equal to 0.0 for no depth of field effects. - * - * focus is distance from eye to plane in focus. - * focus must be greater than, but not equal to 0.0. - * - * Note that accPerspective() calls accFrustum(). - */ -void accPerspective(GLdouble fovy, GLdouble aspect, - GLdouble nnear, GLdouble ffar, GLdouble pixdx, GLdouble pixdy, - GLdouble eyedx, GLdouble eyedy, GLdouble focus) -{ - GLdouble fov2,left,right,bottom,top; - - fov2 = ((fovy*PI_) / 180.0) / 2.0; - - top = nnear / (cos(fov2) / sin(fov2)); - bottom = -top; - - right = top * aspect; - left = -right; - - accFrustum (left, right, bottom, top, nnear, ffar, - pixdx, pixdy, eyedx, eyedy, focus); -} - -/* Initialize lighting and other values. - */ -void init(void) -{ - GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_position[] = { 0.0, 0.0, 10.0, 1.0 }; - GLfloat lm_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 50.0); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lm_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glShadeModel (GL_FLAT); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearAccum(0.0, 0.0, 0.0, 0.0); -} - -void displayObjects(void) -{ - GLfloat torus_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; - GLfloat cube_diffuse[] = { 0.0, 0.7, 0.7, 1.0 }; - GLfloat sphere_diffuse[] = { 0.7, 0.0, 0.7, 1.0 }; - GLfloat octa_diffuse[] = { 0.7, 0.4, 0.4, 1.0 }; - - glPushMatrix (); - glTranslatef (0.0, 0.0, -5.0); - glRotatef (30.0, 1.0, 0.0, 0.0); - - glPushMatrix (); - glTranslatef (-0.80, 0.35, 0.0); - glRotatef (100.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, torus_diffuse); - glutSolidTorus (0.275, 0.85, 16, 16); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (-0.75, -0.50, 0.0); - glRotatef (45.0, 0.0, 0.0, 1.0); - glRotatef (45.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, cube_diffuse); - glutSolidCube (1.5); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.75, 0.60, 0.0); - glRotatef (30.0, 1.0, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, sphere_diffuse); - glutSolidSphere (1.0, 16, 16); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.70, -0.90, 0.25); - glMaterialfv(GL_FRONT, GL_DIFFUSE, octa_diffuse); - glutSolidOctahedron (); - glPopMatrix (); - - glPopMatrix (); -} - -#define ACSIZE 8 - -void display(void) -{ - GLint viewport[4]; - int jitter; - - glGetIntegerv (GL_VIEWPORT, viewport); - - glClear(GL_ACCUM_BUFFER_BIT); - for (jitter = 0; jitter < ACSIZE; jitter++) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - accPerspective (50.0, - (GLdouble) viewport[2]/(GLdouble) viewport[3], - 1.0, 15.0, j8[jitter].x, j8[jitter].y, 0.0, 0.0, 1.0); - displayObjects (); - glAccum(GL_ACCUM, 1.0/ACSIZE); - } - glAccum (GL_RETURN, 1.0); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* Main Loop - * Be certain you request an accumulation buffer. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB - | GLUT_ACCUM | GLUT_DEPTH); - glutInitWindowSize (250, 250); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/accpersp.dsp b/lib/glut-3.7.6/progs/redbook/accpersp.dsp deleted file mode 100644 index 68d71b0fc71bb999e9a31dcfa6026b8f12da525a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/accpersp.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="accpersp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=accpersp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "accpersp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "accpersp.mak" CFG="accpersp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "accpersp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "accpersp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "accpersp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "accpersp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "accpersp - Win32 Release" -# Name "accpersp - Win32 Debug" -# Begin Source File - -SOURCE=.\accpersp.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/alpha.c b/lib/glut-3.7.6/progs/redbook/alpha.c deleted file mode 100644 index 6eeb45b96f1812dbba1d4df10c68c44630e475f2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/alpha.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * alpha.c - * This program draws several overlapping filled polygons - * to demonstrate the effect order has on alpha blending results. - * Use the 't' key to toggle the order of drawing polygons. - */ -#include -#include - -static int leftFirst = GL_TRUE; - -/* Initialize alpha blending function. - */ -static void init(void) -{ - glEnable (GL_BLEND); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glShadeModel (GL_FLAT); - glClearColor (0.0, 0.0, 0.0, 0.0); -} - -static void drawLeftTriangle(void) -{ - /* draw yellow triangle on LHS of screen */ - - glBegin (GL_TRIANGLES); - glColor4f(1.0, 1.0, 0.0, 0.75); - glVertex3f(0.1, 0.9, 0.0); - glVertex3f(0.1, 0.1, 0.0); - glVertex3f(0.7, 0.5, 0.0); - glEnd(); -} - -static void drawRightTriangle(void) -{ - /* draw cyan triangle on RHS of screen */ - - glBegin (GL_TRIANGLES); - glColor4f(0.0, 1.0, 1.0, 0.75); - glVertex3f(0.9, 0.9, 0.0); - glVertex3f(0.3, 0.5, 0.0); - glVertex3f(0.9, 0.1, 0.0); - glEnd(); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - if (leftFirst) { - drawLeftTriangle(); - drawRightTriangle(); - } - else { - drawRightTriangle(); - drawLeftTriangle(); - } - - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - leftFirst = !leftFirst; - glutPostRedisplay(); - break; - case 27: /* Escape key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/alpha.dsp b/lib/glut-3.7.6/progs/redbook/alpha.dsp deleted file mode 100644 index cc8f58aa4381b0c52c3286a5ec1ffc50ea411c6b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/alpha.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="alpha" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=alpha - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "alpha.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "alpha.mak" CFG="alpha - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "alpha - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "alpha - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "alpha - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "alpha - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "alpha - Win32 Release" -# Name "alpha - Win32 Debug" -# Begin Source File - -SOURCE=.\alpha.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/alpha3D.c b/lib/glut-3.7.6/progs/redbook/alpha3D.c deleted file mode 100644 index 7493b2d2919508c7b33ab83f1674209284875508..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/alpha3D.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * alpha3D.c - * This program demonstrates how to intermix opaque and - * alpha blended polygons in the same scene, by using - * glDepthMask. Press the 'a' key to animate moving the - * transparent object through the opaque object. Press - * the 'r' key to reset the scene. - */ -#include -#include -#include - -#define MAXZ 8.0 -#define MINZ -8.0 -#define ZINC 0.4 - -static float solidZ = MAXZ; -static float transparentZ = MINZ; -static GLuint sphereList, cubeList; - -static void init(void) -{ - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 0.15 }; - GLfloat mat_shininess[] = { 100.0 }; - GLfloat position[] = { 0.5, 0.5, 1.0, 0.0 }; - - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - sphereList = glGenLists(1); - glNewList(sphereList, GL_COMPILE); - glutSolidSphere (0.4, 16, 16); - glEndList(); - - cubeList = glGenLists(1); - glNewList(cubeList, GL_COMPILE); - glutSolidCube (0.6); - glEndList(); -} - -void display(void) -{ - GLfloat mat_solid[] = { 0.75, 0.75, 0.0, 1.0 }; - GLfloat mat_zero[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat mat_transparent[] = { 0.0, 0.8, 0.8, 0.6 }; - GLfloat mat_emission[] = { 0.0, 0.3, 0.3, 0.6 }; - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix (); - glTranslatef (-0.15, -0.15, solidZ); - glMaterialfv(GL_FRONT, GL_EMISSION, mat_zero); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_solid); - glCallList (sphereList); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.15, 0.15, transparentZ); - glRotatef (15.0, 1.0, 1.0, 0.0); - glRotatef (30.0, 0.0, 1.0, 0.0); - glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_transparent); - glEnable (GL_BLEND); - glDepthMask (GL_FALSE); - glBlendFunc (GL_SRC_ALPHA, GL_ONE); - glCallList (cubeList); - glDepthMask (GL_TRUE); - glDisable (GL_BLEND); - glPopMatrix (); - - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLint) w, (GLint) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w, - 1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-1.5*(GLfloat)w/(GLfloat)h, - 1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void animate(void) -{ - if (solidZ <= MINZ || transparentZ >= MAXZ) - glutIdleFunc(NULL); - else { - solidZ -= ZINC; - transparentZ += ZINC; - glutPostRedisplay(); - } -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 'a': - case 'A': - solidZ = MAXZ; - transparentZ = MINZ; - glutIdleFunc(animate); - break; - case 'r': - case 'R': - solidZ = MAXZ; - transparentZ = MINZ; - glutPostRedisplay(); - break; - case 27: - exit(0); - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(500, 500); - glutCreateWindow(argv[0]); - init(); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutDisplayFunc(display); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/alpha3D.dsp b/lib/glut-3.7.6/progs/redbook/alpha3D.dsp deleted file mode 100644 index 5ca2d7686bfd041afb26a5a5858f35ff6feb2899..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/alpha3D.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="alpha3D" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=alpha3D - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "alpha3D.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "alpha3D.mak" CFG="alpha3D - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "alpha3D - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "alpha3D - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "alpha3D - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "alpha3D - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "alpha3D - Win32 Release" -# Name "alpha3D - Win32 Debug" -# Begin Source File - -SOURCE=.\alpha3D.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/anti.c b/lib/glut-3.7.6/progs/redbook/anti.c deleted file mode 100644 index 12aa5f8a2155514e828e63a235cd65f381534963..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/anti.c +++ /dev/null @@ -1,111 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * anti.c - * This program draws antialiased lines in RGBA mode. - */ -#include -#include -#include - -/* Initialize antialiasing for RGBA mode, including alpha - * blending, hint, and line width. Print out implementation - * specific info on line width granularity and width. - */ -void myinit(void) -{ - GLfloat values[2]; - glGetFloatv (GL_LINE_WIDTH_GRANULARITY, values); - printf ("GL_LINE_WIDTH_GRANULARITY value is %3.1f\n", values[0]); - - glGetFloatv (GL_LINE_WIDTH_RANGE, values); - printf ("GL_LINE_WIDTH_RANGE values are %3.1f %3.1f\n", - values[0], values[1]); - - glEnable (GL_LINE_SMOOTH); - glEnable (GL_BLEND); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE); - glLineWidth (1.5); - - glShadeModel(GL_FLAT); - glClearColor(0.0, 0.0, 0.0, 0.0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); -} - -/* display() draws an icosahedron with a large alpha value, 1.0. - */ -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor4f (1.0, 1.0, 1.0, 1.0); - glutWireIcosahedron(); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective (45.0, (GLfloat) w/(GLfloat) h, 3.0, 5.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity (); - glTranslatef (0.0, 0.0, -4.0); /* move object into view */ -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/redbook/anti.dsp b/lib/glut-3.7.6/progs/redbook/anti.dsp deleted file mode 100644 index 301321c820908b73e51e57c7f22038e8a2304296..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/anti.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="anti" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=anti - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "anti.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "anti.mak" CFG="anti - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "anti - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "anti - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "anti - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "anti - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "anti - Win32 Release" -# Name "anti - Win32 Debug" -# Begin Source File - -SOURCE=.\anti.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/aux2glut.sed b/lib/glut-3.7.6/progs/redbook/aux2glut.sed deleted file mode 100644 index 869ca713df348aa85e5b9cd796d1a84955fb945f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/aux2glut.sed +++ /dev/null @@ -1,55 +0,0 @@ -# -# aux2glut.sed - a sed script for converting AUX code to GLUT -# -# You will still need to do some work, but this is a good start. -# -1i\ -/* aux2glut conversion Copyright (c) Mark J. Kilgard, 1994, 1995 */ -1i\ - -s/int main/void main/g -s/auxInitWindow/glutCreateWindow/g -s/AUX_SINGLE/GLUT_SINGLE/g -s/AUX_DOUBLE/GLUT_DOUBLE/g -s/AUX_RGB/GLUT_RGB/g -s/AUX_RGBA/GLUT_RGBA/g -s/AUX_ACCUM/GLUT_ACCUM/g -s/AUX_DEPTH/GLUT_DEPTH/g -s/AUX_STENCIL/GLUT_STENCIL/g -s/AUX_ALPHA/GLUT_ALPHA/g -s/AUX_MOUSEDOWN/GLUT_DOWN/g -s/AUX_MOUSEUP/GLUT_UP/g -s/AUX_LEFTBUTTON/GLUT_LEFT_BUTTON/g -s/AUX_MIDDLEBUTTON/GLUT_MIDDLE_BUTTON/g -s/AUX_RIGHTBUTTON/GLUT_RIGHT_BUTTON/g -s/(.*AUX_EVENTREC.*)/( int x, int y )/g -s/auxReshapeFunc/glutReshapeFunc/g -s/#include \"aux.h\"/#include /g -s/#include[ ]*\/#include /g -s/\(initialize.*$\)/glutInit(\&argc, argv); \1/g -s/auxInitDisplayMode/glutInitDisplayMode/g -s/auxMainLoop(display)/glutDisplayFunc(display); glutMainLoop()/g -s/auxMainLoop[ ]*([ ]*drawScene[ ]*)/glutDisplayFunc(drawScene); glutMainLoop()/g -s/auxAnimation.*$/glutIdleFunc(drawScene);/g -s/auxGetScreenSize.*$/width = glutGet(GLUT_SCREEN_WIDTH); height = glutGet(GLUT_SCREEN_HEIGHT);/g -s/auxGetSize.*$/width = glutGet(GLUT_WINDOW_WIDTH); height = glutGet(GLUT_WINDOW_HEIGHT);/g -s/auxInitPosition(\(.*\),\(.*\),\(.*\),\(.*\));/glutInitWindowPosition(\1,\2); glutInitWindowSize(\3,\4);/g -s/auxSwapBuffers/glutSwapBuffers/g -s/auxWireIcosahedron/glutWireIcosahedron/g -s/auxSolidIcosahedron/glutSolidIcosahedron/g -s/auxSolidTorus/glutSolidTorus/g -s/auxWireTorus/glutWireTorus/g -s/auxSolidCube/glutSolidCube/g -s/auxWireCube/glutWireCube/g -s/auxSolidSphere/glutSolidSphere/g -s/auxWireSphere/glutWireSphere/g -s/auxSolidCone/glutSolidCone/g -s/auxWireCone/glutWireCone/g -s/auxSolidOctahedron/glutSolidOctahedron/g -s/auxWireOctahedron/glutWireOctahedron/g -s/auxSolidTeapot/glutSoliddTeapot/g -s/auxWireTeapot/glutWireTeapot/g -s/auxKeyFunc(.*,/glutKeyboardFunc(/g -s/auxMouseFunc(.*AUX_MOUSELOC,.*NULL,/glutMouseMotion(/g -s/auxMouseFunc/glutMouseFunc/g -s/auxDeleteMouseFunc( .*$/glutMouseMotion( NULL );/g diff --git a/lib/glut-3.7.6/progs/redbook/bezcurve.c b/lib/glut-3.7.6/progs/redbook/bezcurve.c deleted file mode 100644 index 5dee440396b8a0973b2142931080dc9946640357..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/bezcurve.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* bezcurve.c - * This program uses evaluators to draw a Bezier curve. - */ -#include -#include - -GLfloat ctrlpoints[4][3] = { - { -4.0, -4.0, 0.0}, { -2.0, 4.0, 0.0}, - {2.0, -4.0, 0.0}, {4.0, 4.0, 0.0}}; - -void init(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glShadeModel(GL_FLAT); - glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlpoints[0][0]); - glEnable(GL_MAP1_VERTEX_3); -} - -void display(void) -{ - int i; - - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1.0, 1.0, 1.0); - glBegin(GL_LINE_STRIP); - for (i = 0; i <= 30; i++) - glEvalCoord1f((GLfloat) i/30.0); - glEnd(); - /* The following code displays the control points as dots. */ - glPointSize(5.0); - glColor3f(1.0, 1.0, 0.0); - glBegin(GL_POINTS); - for (i = 0; i < 4; i++) - glVertex3fv(&ctrlpoints[i][0]); - glEnd(); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-5.0, 5.0, -5.0*(GLfloat)h/(GLfloat)w, - 5.0*(GLfloat)h/(GLfloat)w, -5.0, 5.0); - else - glOrtho(-5.0*(GLfloat)w/(GLfloat)h, - 5.0*(GLfloat)w/(GLfloat)h, -5.0, 5.0, -5.0, 5.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/bezcurve.dsp b/lib/glut-3.7.6/progs/redbook/bezcurve.dsp deleted file mode 100644 index 7a92bcdc564c075d0e2c95b64b1c05ed62533e0b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/bezcurve.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bezcurve" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bezcurve - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bezcurve.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bezcurve.mak" CFG="bezcurve - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bezcurve - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bezcurve - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bezcurve - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bezcurve - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bezcurve - Win32 Release" -# Name "bezcurve - Win32 Debug" -# Begin Source File - -SOURCE=.\bezcurve.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/bezmesh.c b/lib/glut-3.7.6/progs/redbook/bezmesh.c deleted file mode 100644 index eb7f0f7a84555c4a2e2d5ae10c9331cc9b1004de..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/bezmesh.c +++ /dev/null @@ -1,148 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* bezsurf.c - * This program renders a lighted, filled Bezier surface, - * using two-dimensional evaluators. - */ -#include -#include - -GLfloat ctrlpoints[4][4][3] = -{ - { - {-1.5, -1.5, 4.0}, - {-0.5, -1.5, 2.0}, - {0.5, -1.5, -1.0}, - {1.5, -1.5, 2.0}}, - { - {-1.5, -0.5, 1.0}, - {-0.5, -0.5, 3.0}, - {0.5, -0.5, 0.0}, - {1.5, -0.5, -1.0}}, - { - {-1.5, 0.5, 4.0}, - {-0.5, 0.5, 0.0}, - {0.5, 0.5, 3.0}, - {1.5, 0.5, 4.0}}, - { - {-1.5, 1.5, -2.0}, - {-0.5, 1.5, -2.0}, - {0.5, 1.5, 0.0}, - {1.5, 1.5, -1.0}} -}; - -void -initlights(void) -{ - GLfloat ambient[] = - {0.2, 0.2, 0.2, 1.0}; - GLfloat position[] = - {0.0, 0.0, 2.0, 1.0}; - GLfloat mat_diffuse[] = - {0.6, 0.6, 0.6, 1.0}; - GLfloat mat_specular[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat mat_shininess[] = - {50.0}; - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glRotatef(85.0, 1.0, 1.0, 1.0); - glEvalMesh2(GL_FILL, 0, 20, 0, 20); - glPopMatrix(); - glFlush(); -} - -void -myinit(void) -{ - glClearColor(0.0, 0.0, 0.0, 1.0); - glEnable(GL_DEPTH_TEST); - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, - 0, 1, 12, 4, &ctrlpoints[0][0][0]); - glEnable(GL_MAP2_VERTEX_3); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0); - initlights(); /* for lighted version only */ -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-4.0, 4.0, -4.0 * (GLfloat) h / (GLfloat) w, - 4.0 * (GLfloat) h / (GLfloat) w, -4.0, 4.0); - else - glOrtho(-4.0 * (GLfloat) w / (GLfloat) h, - 4.0 * (GLfloat) w / (GLfloat) h, -4.0, 4.0, -4.0, 4.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/bezmesh.dsp b/lib/glut-3.7.6/progs/redbook/bezmesh.dsp deleted file mode 100644 index 4eec98306d069b57d9c6fb48fe816fe8654855ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/bezmesh.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bezmesh" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bezmesh - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bezmesh.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bezmesh.mak" CFG="bezmesh - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bezmesh - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bezmesh - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bezmesh - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bezmesh - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bezmesh - Win32 Release" -# Name "bezmesh - Win32 Debug" -# Begin Source File - -SOURCE=.\bezmesh.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/checker.c b/lib/glut-3.7.6/progs/redbook/checker.c deleted file mode 100644 index d1eaa7f1580b858f315308c867a3dab52c91fbf0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/checker.c +++ /dev/null @@ -1,125 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* checker.c - * This program texture maps a checkerboard image onto - * two rectangles. This program clamps the texture, if - * the texture coordinates fall outside 0.0 and 1.0. - */ -#include - -/* Create checkerboard texture */ -#define checkImageWidth 64 -#define checkImageHeight 64 -GLubyte checkImage[checkImageWidth][checkImageHeight][3]; - -void makeCheckImage(void) -{ - int i, j, c; - - for (i = 0; i < checkImageWidth; i++) { - for (j = 0; j < checkImageHeight; j++) { - c = ((((i&0x8)==0)^((j&0x8)==0)))*255; - checkImage[i][j][0] = (GLubyte) c; - checkImage[i][j][1] = (GLubyte) c; - checkImage[i][j][2] = (GLubyte) c; - } - } -} - -void myinit(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - - makeCheckImage(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, - checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, - &checkImage[0][0][0]); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); - glShadeModel(GL_FLAT); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0); - glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0); - - glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421); - glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421); - glEnd(); - glutSwapBuffers(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -3.6); -} - -int -main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("checker"); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/checker.dsp b/lib/glut-3.7.6/progs/redbook/checker.dsp deleted file mode 100644 index 7fd21c938f23db0d2955a110af0f14e8b229a98b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/checker.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="checker" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=checker - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "checker.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "checker.mak" CFG="checker - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "checker - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "checker - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "checker - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "checker - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "checker - Win32 Release" -# Name "checker - Win32 Debug" -# Begin Source File - -SOURCE=.\checker.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/clip.c b/lib/glut-3.7.6/progs/redbook/clip.c deleted file mode 100644 index 90816f2e278cbb09bc7708bdb428b4c49f291ef6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/clip.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * clip.c - * This program demonstrates arbitrary clipping planes. - */ -#include -#include - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -void display(void) -{ - GLdouble eqn[4] = {0.0, 1.0, 0.0, 0.0}; - GLdouble eqn2[4] = {1.0, 0.0, 0.0, 0.0}; - - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f (1.0, 1.0, 1.0); - glPushMatrix(); - glTranslatef (0.0, 0.0, -5.0); - -/* clip lower half -- y < 0 */ - glClipPlane (GL_CLIP_PLANE0, eqn); - glEnable (GL_CLIP_PLANE0); -/* clip left half -- x < 0 */ - glClipPlane (GL_CLIP_PLANE1, eqn2); - glEnable (GL_CLIP_PLANE1); - - glRotatef (90.0, 1.0, 0.0, 0.0); - glutWireSphere(1.0, 20, 16); - glPopMatrix(); - - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode (GL_MODELVIEW); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/clip.dsp b/lib/glut-3.7.6/progs/redbook/clip.dsp deleted file mode 100644 index 20e060009a7baf531ccd84e1500932bf52b1095e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/clip.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="clip" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=clip - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "clip.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "clip.mak" CFG="clip - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "clip - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "clip - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "clip - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "clip - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "clip - Win32 Release" -# Name "clip - Win32 Debug" -# Begin Source File - -SOURCE=.\clip.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/colormat.c b/lib/glut-3.7.6/progs/redbook/colormat.c deleted file mode 100644 index 9db4491bac5b5c41722b4681718570aff1f50607..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/colormat.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * colormat.c - * After initialization, the program will be in - * ColorMaterial mode. Interaction: pressing the - * mouse buttons will change the diffuse reflection values. - */ -#include -#include - -GLfloat diffuseMaterial[4] = { 0.5, 0.5, 0.5, 1.0 }; - -/* Initialize material property, light source, lighting model, - * and depth buffer. - */ -void init(void) -{ - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - glEnable(GL_DEPTH_TEST); - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseMaterial); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 25.0); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glColorMaterial(GL_FRONT, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glutSolidSphere(1.0, 20, 16); - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w, - 1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-1.5*(GLfloat)w/(GLfloat)h, - 1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) -{ - switch (button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) { - diffuseMaterial[0] += 0.1; - if (diffuseMaterial[0] > 1.0) - diffuseMaterial[0] = 0.0; - glColor4fv(diffuseMaterial); - glutPostRedisplay(); - } - break; - case GLUT_MIDDLE_BUTTON: - if (state == GLUT_DOWN) { - diffuseMaterial[1] += 0.1; - if (diffuseMaterial[1] > 1.0) - diffuseMaterial[1] = 0.0; - glColor4fv(diffuseMaterial); - glutPostRedisplay(); - } - break; - case GLUT_RIGHT_BUTTON: - if (state == GLUT_DOWN) { - diffuseMaterial[2] += 0.1; - if (diffuseMaterial[2] > 1.0) - diffuseMaterial[2] = 0.0; - glColor4fv(diffuseMaterial); - glutPostRedisplay(); - } - break; - default: - break; - } -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/colormat.dsp b/lib/glut-3.7.6/progs/redbook/colormat.dsp deleted file mode 100644 index 1b35c083b233dcfb6d30facdcdf16f948ea3eaee..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/colormat.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="colormat" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=colormat - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "colormat.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "colormat.mak" CFG="colormat - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "colormat - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "colormat - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "colormat - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "colormat - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "colormat - Win32 Release" -# Name "colormat - Win32 Debug" -# Begin Source File - -SOURCE=.\colormat.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/cube.c b/lib/glut-3.7.6/progs/redbook/cube.c deleted file mode 100644 index 5ecc6280f3315370107b407394ab8dce1c451402..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/cube.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * cube.c - * This program demonstrates a single modeling transformation, - * glScalef() and a single viewing transformation, gluLookAt(). - * A wireframe cube is rendered. - */ -#include -#include - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT); - glColor3f (1.0, 1.0, 1.0); - glLoadIdentity (); /* clear the matrix */ - /* viewing transformation */ - gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); - glScalef (1.0, 2.0, 1.0); /* modeling transformation */ - glutWireCube (1.0); - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); - glMatrixMode (GL_MODELVIEW); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/cube.dsp b/lib/glut-3.7.6/progs/redbook/cube.dsp deleted file mode 100644 index 9cfb01bd143171cf1ca023f7064cebe8c1e11ac2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/cube.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cube" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cube - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cube.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cube.mak" CFG="cube - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cube - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cube - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cube - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cube - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cube - Win32 Release" -# Name "cube - Win32 Debug" -# Begin Source File - -SOURCE=.\cube.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/depthcue.c b/lib/glut-3.7.6/progs/redbook/depthcue.c deleted file mode 100644 index 41af19cf96e779c2569c445cb242b1c63d50e337..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/depthcue.c +++ /dev/null @@ -1,102 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * depthcue.c - * This program draws a wireframe model, which uses - * intensity (brightness) to give clues to distance. - * Fog is used to achieve this effect. - */ -#include -#include - -/* Initialize linear fog for depth cueing. - */ -void myinit(void) -{ - GLfloat fogColor[4] = {0.0, 0.0, 0.0, 1.0}; - - glEnable(GL_FOG); - glFogi (GL_FOG_MODE, GL_LINEAR); - glHint (GL_FOG_HINT, GL_NICEST); /* per pixel */ - glFogf (GL_FOG_START, 3.0); - glFogf (GL_FOG_END, 5.0); - glFogfv (GL_FOG_COLOR, fogColor); - glClearColor(0.0, 0.0, 0.0, 1.0); - - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_FLAT); -} - -/* display() draws an icosahedron. - */ -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f (1.0, 1.0, 1.0); - glutWireIcosahedron(); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective (45.0, (GLfloat) w/(GLfloat) h, 3.0, 5.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity (); - glTranslatef (0.0, 0.0, -4.0); /* move object into view */ -} - -/* Main Loop - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/redbook/depthcue.dsp b/lib/glut-3.7.6/progs/redbook/depthcue.dsp deleted file mode 100644 index 1fb3a80da57bcb3bc5aea108bff8ba858bb48960..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/depthcue.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="depthcue" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=depthcue - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "depthcue.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "depthcue.mak" CFG="depthcue - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "depthcue - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "depthcue - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "depthcue - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "depthcue - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "depthcue - Win32 Release" -# Name "depthcue - Win32 Debug" -# Begin Source File - -SOURCE=.\depthcue.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/dof.c b/lib/glut-3.7.6/progs/redbook/dof.c deleted file mode 100644 index 166ca9e62f85f2e9d3e875fd7b514afbf50a84b6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/dof.c +++ /dev/null @@ -1,238 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * dof.c - * This program demonstrates use of the accumulation buffer to - * create an out-of-focus depth-of-field effect. The teapots - * are drawn several times into the accumulation buffer. The - * viewing volume is jittered, except at the focal point, where - * the viewing volume is at the same position, each time. In - * this case, the gold teapot remains in focus. - */ -#include -#include -#include -#include "jitter.h" - -#define PI_ 3.14159265358979323846 - -/* accFrustum() - * The first 6 arguments are identical to the glFrustum() call. - * - * pixdx and pixdy are anti-alias jitter in pixels. - * Set both equal to 0.0 for no anti-alias jitter. - * eyedx and eyedy are depth-of field jitter in pixels. - * Set both equal to 0.0 for no depth of field effects. - * - * focus is distance from eye to plane in focus. - * focus must be greater than, but not equal to 0.0. - * - * Note that accFrustum() calls glTranslatef(). You will - * probably want to insure that your ModelView matrix has been - * initialized to identity before calling accFrustum(). - */ -void accFrustum(GLdouble left, GLdouble right, GLdouble bottom, - GLdouble top, GLdouble nnear, GLdouble ffar, GLdouble pixdx, - GLdouble pixdy, GLdouble eyedx, GLdouble eyedy, GLdouble focus) -{ - GLdouble xwsize, ywsize; - GLdouble dx, dy; - GLint viewport[4]; - - glGetIntegerv (GL_VIEWPORT, viewport); - - xwsize = right - left; - ywsize = top - bottom; - - dx = -(pixdx*xwsize/(GLdouble) viewport[2] + eyedx*nnear/focus); - dy = -(pixdy*ywsize/(GLdouble) viewport[3] + eyedy*nnear/focus); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum (left + dx, right + dx, bottom + dy, top + dy, nnear, ffar); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef (-eyedx, -eyedy, 0.0); -} - -/* accPerspective() - * - * The first 4 arguments are identical to the gluPerspective() call. - * pixdx and pixdy are anti-alias jitter in pixels. - * Set both equal to 0.0 for no anti-alias jitter. - * eyedx and eyedy are depth-of field jitter in pixels. - * Set both equal to 0.0 for no depth of field effects. - * - * focus is distance from eye to plane in focus. - * focus must be greater than, but not equal to 0.0. - * - * Note that accPerspective() calls accFrustum(). - */ -void accPerspective(GLdouble fovy, GLdouble aspect, - GLdouble nnear, GLdouble ffar, GLdouble pixdx, GLdouble pixdy, - GLdouble eyedx, GLdouble eyedy, GLdouble focus) -{ - GLdouble fov2,left,right,bottom,top; - - fov2 = ((fovy*PI_) / 180.0) / 2.0; - - top = nnear / (cos(fov2) / sin(fov2)); - bottom = -top; - - right = top * aspect; - left = -right; - - accFrustum (left, right, bottom, top, nnear, ffar, - pixdx, pixdy, eyedx, eyedy, focus); -} - -void myinit(void) -{ - GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat position[] = { 0.0, 3.0, 3.0, 0.0 }; - - GLfloat lmodel_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - GLfloat local_view[] = { 0.0 }; - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); - - glFrontFace (GL_CW); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - - glMatrixMode (GL_MODELVIEW); - glLoadIdentity (); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearAccum(0.0, 0.0, 0.0, 0.0); -} - -void renderTeapot (GLfloat x, GLfloat y, GLfloat z, - GLfloat ambr, GLfloat ambg, GLfloat ambb, - GLfloat difr, GLfloat difg, GLfloat difb, - GLfloat specr, GLfloat specg, GLfloat specb, GLfloat shine) -{ - float mat[4]; - - glPushMatrix(); - glTranslatef (x, y, z); - mat[0] = ambr; mat[1] = ambg; mat[2] = ambb; mat[3] = 1.0; - glMaterialfv (GL_FRONT, GL_AMBIENT, mat); - mat[0] = difr; mat[1] = difg; mat[2] = difb; - glMaterialfv (GL_FRONT, GL_DIFFUSE, mat); - mat[0] = specr; mat[1] = specg; mat[2] = specb; - glMaterialfv (GL_FRONT, GL_SPECULAR, mat); - glMaterialf (GL_FRONT, GL_SHININESS, shine*128.0); - glutSolidTeapot(0.5); - glPopMatrix(); -} - -/* display() draws 5 teapots into the accumulation buffer - * several times; each time with a jittered perspective. - * The focal point is at z = 5.0, so the gold teapot will - * stay in focus. The amount of jitter is adjusted by the - * magnitude of the accPerspective() jitter; in this example, 0.33. - * In this example, the teapots are drawn 8 times. See jitter.h - */ -void display(void) -{ - int jitter; - GLint viewport[4]; - - glGetIntegerv (GL_VIEWPORT, viewport); - glClear(GL_ACCUM_BUFFER_BIT); - - for (jitter = 0; jitter < 8; jitter++) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - accPerspective (45.0, - (GLdouble) viewport[2]/(GLdouble) viewport[3], - 1.0, 15.0, 0.0, 0.0, - 0.33*j8[jitter].x, 0.33*j8[jitter].y, 5.0); -/* ruby, gold, silver, emerald, and cyan teapots */ - renderTeapot (-1.1, -0.5, -4.5, 0.1745, 0.01175, 0.01175, - 0.61424, 0.04136, 0.04136, 0.727811, 0.626959, 0.626959, 0.6); - renderTeapot (-0.5, -0.5, -5.0, 0.24725, 0.1995, 0.0745, - 0.75164, 0.60648, 0.22648, 0.628281, 0.555802, 0.366065, 0.4); - renderTeapot (0.2, -0.5, -5.5, 0.19225, 0.19225, 0.19225, - 0.50754, 0.50754, 0.50754, 0.508273, 0.508273, 0.508273, 0.4); - renderTeapot (1.0, -0.5, -6.0, 0.0215, 0.1745, 0.0215, - 0.07568, 0.61424, 0.07568, 0.633, 0.727811, 0.633, 0.6); - renderTeapot (1.8, -0.5, -6.5, 0.0, 0.1, 0.06, 0.0, 0.50980392, - 0.50980392, 0.50196078, 0.50196078, 0.50196078, .25); - glAccum (GL_ACCUM, 0.125); - } - - glAccum (GL_RETURN, 1.0); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, depth buffer, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB - | GLUT_ACCUM | GLUT_DEPTH); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/redbook/dof.dsp b/lib/glut-3.7.6/progs/redbook/dof.dsp deleted file mode 100644 index 8f31c59c5f77cff8f1aa72faf262b0e83330eb2d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/dof.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="dof" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=dof - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "dof.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "dof.mak" CFG="dof - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "dof - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "dof - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "dof - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "dof - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "dof - Win32 Release" -# Name "dof - Win32 Debug" -# Begin Source File - -SOURCE=.\dof.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/double.c b/lib/glut-3.7.6/progs/redbook/double.c deleted file mode 100644 index 65dfd4b2a3ebceca38669022c1e994e02e913571..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/double.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * double.c - * This is a simple double buffered program. - * Pressing the left mouse button rotates the rectangle. - * Pressing the middle mouse button stops the rotation. - */ -#include -#include - -static GLfloat spin = 0.0; - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glRotatef(spin, 0.0, 0.0, 1.0); - glColor3f(1.0, 1.0, 1.0); - glRectf(-25.0, -25.0, 25.0, 25.0); - glPopMatrix(); - - glutSwapBuffers(); -} - -void spinDisplay(void) -{ - spin = spin + 2.0; - if (spin > 360.0) - spin = spin - 360.0; - glutPostRedisplay(); -} - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -void reshape(int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) -{ - switch (button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) - glutIdleFunc(spinDisplay); - break; - case GLUT_MIDDLE_BUTTON: - if (state == GLUT_DOWN) - glutIdleFunc(NULL); - break; - default: - break; - } -} - -/* - * Request double buffer display mode. - * Register mouse input callback functions - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize (250, 250); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/double.dsp b/lib/glut-3.7.6/progs/redbook/double.dsp deleted file mode 100644 index 868a0c9b513583d61b3467dc4795a03312a26eb2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/double.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="double" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=double - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "double.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "double.mak" CFG="double - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "double - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "double - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "double - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "double - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "double - Win32 Release" -# Name "double - Win32 Debug" -# Begin Source File - -SOURCE=.\double.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/drawf.c b/lib/glut-3.7.6/progs/redbook/drawf.c deleted file mode 100644 index 5bcccb6aeac3ed555c6f79318d1a5a1a871fd2a7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/drawf.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * drawf.c - * Draws the bitmapped letter F on the screen (several times). - * This demonstrates use of the glBitmap() call. - */ -#include -#include - -GLubyte rasters[24] = { - 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, - 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, - 0xff, 0xc0, 0xff, 0xc0}; - -void init(void) -{ - glPixelStorei (GL_UNPACK_ALIGNMENT, 1); - glClearColor (0.0, 0.0, 0.0, 0.0); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glColor3f (1.0, 1.0, 1.0); - glRasterPos2i (20, 20); - glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); - glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); - glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho (0, w, 0, h, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(100, 100); - glutInitWindowPosition(100, 100); - glutCreateWindow(argv[0]); - init(); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutDisplayFunc(display); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/drawf.dsp b/lib/glut-3.7.6/progs/redbook/drawf.dsp deleted file mode 100644 index 8577534ed1cb5083e9fb6ca95411cc4f9fa30ed1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/drawf.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="drawf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=drawf - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "drawf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "drawf.mak" CFG="drawf - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "drawf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "drawf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "drawf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "drawf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "drawf - Win32 Release" -# Name "drawf - Win32 Debug" -# Begin Source File - -SOURCE=.\drawf.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/feedback.c b/lib/glut-3.7.6/progs/redbook/feedback.c deleted file mode 100644 index 4981854d95dea16a9998dc072d626951564de8b3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/feedback.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * feedback.c - * This program demonstrates use of OpenGL feedback. First, - * a lighting environment is set up and a few lines are drawn. - * Then feedback mode is entered, and the same lines are - * drawn. The results in the feedback buffer are printed. - */ -#include -#include -#include - -/* Initialize lighting. - */ -void init(void) -{ - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); -} - -/* Draw a few lines and two points, one of which will - * be clipped. If in feedback mode, a passthrough token - * is issued between the each primitive. - */ -void drawGeometry (GLenum mode) -{ - glBegin (GL_LINE_STRIP); - glNormal3f (0.0, 0.0, 1.0); - glVertex3f (30.0, 30.0, 0.0); - glVertex3f (50.0, 60.0, 0.0); - glVertex3f (70.0, 40.0, 0.0); - glEnd (); - if (mode == GL_FEEDBACK) - glPassThrough (1.0); - glBegin (GL_POINTS); - glVertex3f (-100.0, -100.0, -100.0); /* will be clipped */ - glEnd (); - if (mode == GL_FEEDBACK) - glPassThrough (2.0); - glBegin (GL_POINTS); - glNormal3f (0.0, 0.0, 1.0); - glVertex3f (50.0, 50.0, 0.0); - glEnd (); -} - -/* Write contents of one vertex to stdout. */ -void print3DcolorVertex (GLint size, GLint *count, - GLfloat *buffer) -{ - int i; - - printf (" "); - for (i = 0; i < 7; i++) { - printf ("%4.2f ", buffer[size-(*count)]); - *count = *count - 1; - } - printf ("\n"); -} - -/* Write contents of entire buffer. (Parse tokens!) */ -void printBuffer(GLint size, GLfloat *buffer) -{ - GLint count; - GLfloat token; - - count = size; - while (count) { - token = buffer[size-count]; count--; - if (token == GL_PASS_THROUGH_TOKEN) { - printf ("GL_PASS_THROUGH_TOKEN\n"); - printf (" %4.2f\n", buffer[size-count]); - count--; - } - else if (token == GL_POINT_TOKEN) { - printf ("GL_POINT_TOKEN\n"); - print3DcolorVertex (size, &count, buffer); - } - else if (token == GL_LINE_TOKEN) { - printf ("GL_LINE_TOKEN\n"); - print3DcolorVertex (size, &count, buffer); - print3DcolorVertex (size, &count, buffer); - } - else if (token == GL_LINE_RESET_TOKEN) { - printf ("GL_LINE_RESET_TOKEN\n"); - print3DcolorVertex (size, &count, buffer); - print3DcolorVertex (size, &count, buffer); - } - } -} - -void display(void) -{ - GLfloat feedBuffer[1024]; - GLint size; - - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - glOrtho (0.0, 100.0, 0.0, 100.0, 0.0, 1.0); - - glClearColor (0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - drawGeometry (GL_RENDER); - - glFeedbackBuffer (1024, GL_3D_COLOR, feedBuffer); - (void) glRenderMode (GL_FEEDBACK); - drawGeometry (GL_FEEDBACK); - - size = glRenderMode (GL_RENDER); - printBuffer (size, feedBuffer); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* Main Loop */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (100, 100); - glutInitWindowPosition (100, 100); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/feedback.dsp b/lib/glut-3.7.6/progs/redbook/feedback.dsp deleted file mode 100644 index 39ddfb99c5e6a571eef6fec7b6e52cf2aad94bca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/feedback.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="feedback" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=feedback - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "feedback.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "feedback.mak" CFG="feedback - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "feedback - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "feedback - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "feedback - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "feedback - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "feedback - Win32 Release" -# Name "feedback - Win32 Debug" -# Begin Source File - -SOURCE=.\feedback.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/fog.c b/lib/glut-3.7.6/progs/redbook/fog.c deleted file mode 100644 index 5f8a4e4e764ffcc560306f7eab9baae05434c5a8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/fog.c +++ /dev/null @@ -1,186 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * fog.c - * This program draws 5 red teapots, each at a different - * z distance from the eye, in different types of fog. - * Pressing the left mouse button chooses between 3 types of - * fog: exponential, exponential squared, and linear. - * In this program, there is a fixed density value, as well - * as fixed start and end values for the linear fog. - */ -#include -#include -#include - -GLint fogMode; - -void -selectFog(int mode) -{ - switch(mode) { - case GL_LINEAR: - glFogf(GL_FOG_START, 1.0); - glFogf(GL_FOG_END, 5.0); - /* falls through */ - case GL_EXP2: - case GL_EXP: - glFogi(GL_FOG_MODE, mode); - glutPostRedisplay(); - break; - case 0: - exit(0); - } -} - -/* Initialize z-buffer, projection matrix, light source, - * and lighting model. Do not specify a material property here. - */ -void -myinit(void) -{ - GLfloat position[] = - {0.0, 3.0, 3.0, 0.0}; - GLfloat local_view[] = - {0.0}; - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); - - glFrontFace(GL_CW); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glEnable(GL_FOG); - { - GLfloat fogColor[4] = - {0.5, 0.5, 0.5, 1.0}; - - fogMode = GL_EXP; - glFogi(GL_FOG_MODE, fogMode); - glFogfv(GL_FOG_COLOR, fogColor); - glFogf(GL_FOG_DENSITY, 0.35); - glHint(GL_FOG_HINT, GL_DONT_CARE); - glClearColor(0.5, 0.5, 0.5, 1.0); - } -} - -void -renderRedTeapot(GLfloat x, GLfloat y, GLfloat z) -{ - float mat[4]; - - glPushMatrix(); - glTranslatef(x, y, z); - mat[0] = 0.1745; - mat[1] = 0.01175; - mat[2] = 0.01175; - mat[3] = 1.0; - glMaterialfv(GL_FRONT, GL_AMBIENT, mat); - mat[0] = 0.61424; - mat[1] = 0.04136; - mat[2] = 0.04136; - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat); - mat[0] = 0.727811; - mat[1] = 0.626959; - mat[2] = 0.626959; - glMaterialfv(GL_FRONT, GL_SPECULAR, mat); - glMaterialf(GL_FRONT, GL_SHININESS, 0.6 * 128.0); - glutSolidTeapot(1.0); - glPopMatrix(); -} - -/* display() draws 5 teapots at different z positions. - */ -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - renderRedTeapot(-4.0, -0.5, -1.0); - renderRedTeapot(-2.0, -0.5, -2.0); - renderRedTeapot(0.0, -0.5, -3.0); - renderRedTeapot(2.0, -0.5, -4.0); - renderRedTeapot(4.0, -0.5, -5.0); - glFlush(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= (h * 3)) - glOrtho(-6.0, 6.0, -2.0 * ((GLfloat) h * 3) / (GLfloat) w, - 2.0 * ((GLfloat) h * 3) / (GLfloat) w, 0.0, 10.0); - else - glOrtho(-6.0 * (GLfloat) w / ((GLfloat) h * 3), - 6.0 * (GLfloat) w / ((GLfloat) h * 3), -2.0, 2.0, 0.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, depth buffer, and handle input events. - */ -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(450, 150); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutCreateMenu(selectFog); - glutAddMenuEntry("Fog EXP", GL_EXP); - glutAddMenuEntry("Fog EXP2", GL_EXP2); - glutAddMenuEntry("Fog LINEAR", GL_LINEAR); - glutAddMenuEntry("Quit", 0); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/fog.dsp b/lib/glut-3.7.6/progs/redbook/fog.dsp deleted file mode 100644 index c6289abbf4dab0a1da9a8d40c0e5d63f3de0b994..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/fog.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fog" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fog - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fog.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fog.mak" CFG="fog - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fog - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fog - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fog - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fog - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fog - Win32 Release" -# Name "fog - Win32 Debug" -# Begin Source File - -SOURCE=.\fog.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/fogindex.c b/lib/glut-3.7.6/progs/redbook/fogindex.c deleted file mode 100644 index b409c95ac91f49bccb66115a34c873d061b8f384..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/fogindex.c +++ /dev/null @@ -1,138 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * fogindex.c - * This program demonstrates fog in color index mode. - * Three cones are drawn at different z values in a linear - * fog. 32 contiguous colors (from 16 to 47) are loaded - * with a color ramp. - */ -#include -#include - -/* Initialize color map and fog. Set screen clear color - * to end of color ramp. - */ -#define NUM_COLORS 32 -#define RAMPSTART 16 - -void -myinit(void) -{ - int i; - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - for (i = 0; i < NUM_COLORS; i++) { - GLfloat shade; - shade = (GLfloat) (NUM_COLORS - i) / (GLfloat) NUM_COLORS; - glutSetColor(16 + i, shade, shade, shade); - } - glEnable(GL_FOG); - - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogi(GL_FOG_INDEX, NUM_COLORS); - glFogf(GL_FOG_START, 0.0); - glFogf(GL_FOG_END, 4.0); - glHint(GL_FOG_HINT, GL_NICEST); - glClearIndex((GLfloat) (NUM_COLORS + RAMPSTART - 1)); -} - -/* display() renders 3 cones at different z positions. - */ -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glTranslatef(-1.0, -1.0, -1.0); - glRotatef(-90.0, 1.0, 0.0, 0.0); - glIndexi(RAMPSTART); - glutSolidCone(1.0, 2.0, 10, 10); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0.0, -1.0, -2.25); - glRotatef(-90.0, 1.0, 0.0, 0.0); - glIndexi(RAMPSTART); - glutSolidCone(1.0, 2.0, 10, 10); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(1.0, -1.0, -3.5); - glRotatef(-90.0, 1.0, 0.0, 0.0); - glIndexi(RAMPSTART); - glutSolidCone(1.0, 2.0, 10, 10); - glPopMatrix(); - glFlush(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w, - 2.0 * (GLfloat) h / (GLfloat) w, 0.0, 10.0); - else - glOrtho(-2.0 * (GLfloat) w / (GLfloat) h, - 2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, 0.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, depth buffer, and handle input events. - */ -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX | GLUT_DEPTH); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/fogindex.dsp b/lib/glut-3.7.6/progs/redbook/fogindex.dsp deleted file mode 100644 index 811cae5e7c485b4adbdb8460f8dc94a17741a524..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/fogindex.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fogindex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fogindex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fogindex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fogindex.mak" CFG="fogindex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fogindex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fogindex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fogindex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fogindex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fogindex - Win32 Release" -# Name "fogindex - Win32 Debug" -# Begin Source File - -SOURCE=.\fogindex.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/font.c b/lib/glut-3.7.6/progs/redbook/font.c deleted file mode 100644 index 2d92e9b600395bb5eda9b2c2b45274abe16f6707..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/font.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * font.c - * - * Draws some text in a bitmapped font. Uses glBitmap() - * and other pixel routines. Also demonstrates use of - * display lists. - */ -#include -#include -#include - -GLubyte space[] = -{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -GLubyte letters[][13] = { -{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18}, -{0x00, 0x00, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe}, -{0x00, 0x00, 0x7e, 0xe7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e}, -{0x00, 0x00, 0xfc, 0xce, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc7, 0xce, 0xfc}, -{0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xff}, -{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xff}, -{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e}, -{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3}, -{0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e}, -{0x00, 0x00, 0x7c, 0xee, 0xc6, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06}, -{0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xcc, 0xc6, 0xc3}, -{0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0}, -{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xff, 0xff, 0xe7, 0xc3}, -{0x00, 0x00, 0xc7, 0xc7, 0xcf, 0xcf, 0xdf, 0xdb, 0xfb, 0xf3, 0xf3, 0xe3, 0xe3}, -{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0x7e}, -{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe}, -{0x00, 0x00, 0x3f, 0x6e, 0xdf, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c}, -{0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe}, -{0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0x7e, 0xe0, 0xc0, 0xc0, 0xe7, 0x7e}, -{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff}, -{0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3}, -{0x00, 0x00, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3}, -{0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3}, -{0x00, 0x00, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3}, -{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3}, -{0x00, 0x00, 0xff, 0xc0, 0xc0, 0x60, 0x30, 0x7e, 0x0c, 0x06, 0x03, 0x03, 0xff} -}; - -GLuint fontOffset; - -void makeRasterFont(void) -{ - GLuint i, j; - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - fontOffset = glGenLists (128); - for (i = 0,j = 'A'; i < 26; i++,j++) { - glNewList(fontOffset + j, GL_COMPILE); - glBitmap(8, 13, 0.0, 2.0, 10.0, 0.0, letters[i]); - glEndList(); - } - glNewList(fontOffset + ' ', GL_COMPILE); - glBitmap(8, 13, 0.0, 2.0, 10.0, 0.0, space); - glEndList(); -} - -void init(void) -{ - glShadeModel (GL_FLAT); - makeRasterFont(); -} - -void printString(char *s) -{ - glPushAttrib (GL_LIST_BIT); - glListBase(fontOffset); - glCallLists((GLsizei) strlen(s), GL_UNSIGNED_BYTE, (GLubyte *) s); - glPopAttrib (); -} - -/* Everything above this line could be in a library - * that defines a font. To make it work, you've got - * to call makeRasterFont() before you start making - * calls to printString(). - */ -void display(void) -{ - GLfloat white[3] = { 1.0, 1.0, 1.0 }; - - glClear(GL_COLOR_BUFFER_BIT); - glColor3fv(white); - - glRasterPos2i(20, 60); - printString("THE QUICK BROWN FOX JUMPS"); - glRasterPos2i(20, 40); - printString("OVER A LAZY DOG"); - glFlush (); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho (0.0, w, 0.0, h, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(300, 100); - glutInitWindowPosition (100, 100); - glutCreateWindow(argv[0]); - init(); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutDisplayFunc(display); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/font.dsp b/lib/glut-3.7.6/progs/redbook/font.dsp deleted file mode 100644 index 055abc574bd4b7efa36fec6b849074d618d5b1cf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/font.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="font" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=font - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "font.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "font.mak" CFG="font - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "font - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "font - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "font - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "font - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "font - Win32 Release" -# Name "font - Win32 Debug" -# Begin Source File - -SOURCE=.\font.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/hello.c b/lib/glut-3.7.6/progs/redbook/hello.c deleted file mode 100644 index 516c9ecc002506764bb78d4058e8eaf6a9852d46..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/hello.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * hello.c - * This is a simple, introductory OpenGL program. - */ -#include - -void display(void) -{ -/* clear all pixels */ - glClear (GL_COLOR_BUFFER_BIT); - -/* draw white polygon (rectangle) with corners at - * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) - */ - glColor3f (1.0, 1.0, 1.0); - glBegin(GL_POLYGON); - glVertex3f (0.25, 0.25, 0.0); - glVertex3f (0.75, 0.25, 0.0); - glVertex3f (0.75, 0.75, 0.0); - glVertex3f (0.25, 0.75, 0.0); - glEnd(); - -/* don't wait! - * start processing buffered OpenGL routines - */ - glFlush (); -} - -void init (void) -{ -/* select clearing color */ - glClearColor (0.0, 0.0, 0.0, 0.0); - -/* initialize viewing values */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); -} - -/* - * Declare initial window size, position, and display mode - * (single buffer and RGBA). Open window with "hello" - * in its title bar. Call initialization routines. - * Register callback function to display graphics. - * Enter main loop and process events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (250, 250); - glutInitWindowPosition (100, 100); - glutCreateWindow ("hello"); - init (); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/hello.dsp b/lib/glut-3.7.6/progs/redbook/hello.dsp deleted file mode 100644 index e4fa1cd492961a6319e254ef0d41acf5c00c1c77..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/hello.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="hello" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=hello - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "hello.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "hello.mak" CFG="hello - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "hello - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "hello - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "hello - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "hello - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "hello - Win32 Release" -# Name "hello - Win32 Debug" -# Begin Source File - -SOURCE=.\hello.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/image.c b/lib/glut-3.7.6/progs/redbook/image.c deleted file mode 100644 index 822121af1088e8ee181fffb44a3077aaf6f88ef9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/image.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* image.c - * This program demonstrates drawing pixels and shows the effect - * of glDrawPixels(), glCopyPixels(), and glPixelZoom(). - * Interaction: moving the mouse while pressing the mouse button - * will copy the image in the lower-left corner of the window - * to the mouse position, using the current pixel zoom factors. - * There is no attempt to prevent you from drawing over the original - * image. If you press the 'r' key, the original image and zoom - * factors are reset. If you press the 'z' or 'Z' keys, you change - * the zoom factors. - */ -#include -#include -#include - -/* Create checkerboard image */ -#define checkImageWidth 64 -#define checkImageHeight 64 -GLubyte checkImage[checkImageHeight][checkImageWidth][3]; - -static GLdouble zoomFactor = 1.0; -static GLint height; - -void makeCheckImage(void) -{ - int i, j, c; - - for (i = 0; i < checkImageHeight; i++) { - for (j = 0; j < checkImageWidth; j++) { - c = ((((i&0x8)==0)^((j&0x8)==0)))*255; - checkImage[i][j][0] = (GLubyte) c; - checkImage[i][j][1] = (GLubyte) c; - checkImage[i][j][2] = (GLubyte) c; - } - } -} - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel(GL_FLAT); - makeCheckImage(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glRasterPos2i(0, 0); - glDrawPixels(checkImageWidth, checkImageHeight, GL_RGB, - GL_UNSIGNED_BYTE, checkImage); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - height = (GLint) h; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void motion(int x, int y) -{ - static GLint screeny; - - screeny = height - (GLint) y; - glRasterPos2i (x, screeny); - glPixelZoom (zoomFactor, zoomFactor); - glCopyPixels (0, 0, checkImageWidth, checkImageHeight, GL_COLOR); - glPixelZoom (1.0, 1.0); - glFlush (); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 'r': - case 'R': - zoomFactor = 1.0; - glutPostRedisplay(); - printf ("zoomFactor reset to 1.0\n"); - break; - case 'z': - zoomFactor += 0.5; - if (zoomFactor >= 3.0) - zoomFactor = 3.0; - printf ("zoomFactor is now %4.1f\n", zoomFactor); - break; - case 'Z': - zoomFactor -= 0.5; - if (zoomFactor <= 0.5) - zoomFactor = 0.5; - printf ("zoomFactor is now %4.1f\n", zoomFactor); - break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(250, 250); - glutInitWindowPosition(100, 100); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMotionFunc(motion); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/image.dsp b/lib/glut-3.7.6/progs/redbook/image.dsp deleted file mode 100644 index ee39ed83d4330d20d9c6c584c2be76fa44a94607..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/image.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="image" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=image - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "image.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "image.mak" CFG="image - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "image - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "image - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "image - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "image - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "image - Win32 Release" -# Name "image - Win32 Debug" -# Begin Source File - -SOURCE=.\image.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/jitter.h b/lib/glut-3.7.6/progs/redbook/jitter.h deleted file mode 100644 index 1ec08c87fd44e85bec43bb4b29c155266e0aeb34..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/jitter.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* -jitter.h - -This file contains jitter point arrays for 2,3,4,8,15,24 and 66 jitters. - -The arrays are named j2, j3, etc. Each element in the array has the form, -for example, j8[0].x and j8[0].y - -Values are floating point in the range -.5 < x < .5, -.5 < y < .5, and -have a gaussian distribution around the origin. - -Use these to do model jittering for scene anti-aliasing and view volume -jittering for depth of field effects. Use in conjunction with the -accwindow() routine. -*/ - -typedef struct -{ - GLfloat x, y; -} jitter_point; - -#define MAX_SAMPLES 66 - - -/* 2 jitter points */ -jitter_point j2[] = -{ - { 0.246490, 0.249999}, - {-0.246490, -0.249999} -}; - - -/* 3 jitter points */ -jitter_point j3[] = -{ - {-0.373411, -0.250550}, - { 0.256263, 0.368119}, - { 0.117148, -0.117570} -}; - - -/* 4 jitter points */ -jitter_point j4[] = -{ - {-0.208147, 0.353730}, - { 0.203849, -0.353780}, - {-0.292626, -0.149945}, - { 0.296924, 0.149994} -}; - - -/* 8 jitter points */ -jitter_point j8[] = -{ - {-0.334818, 0.435331}, - { 0.286438, -0.393495}, - { 0.459462, 0.141540}, - {-0.414498, -0.192829}, - {-0.183790, 0.082102}, - {-0.079263, -0.317383}, - { 0.102254, 0.299133}, - { 0.164216, -0.054399} -}; - - -/* 15 jitter points */ -jitter_point j15[] = -{ - { 0.285561, 0.188437}, - { 0.360176, -0.065688}, - {-0.111751, 0.275019}, - {-0.055918, -0.215197}, - {-0.080231, -0.470965}, - { 0.138721, 0.409168}, - { 0.384120, 0.458500}, - {-0.454968, 0.134088}, - { 0.179271, -0.331196}, - {-0.307049, -0.364927}, - { 0.105354, -0.010099}, - {-0.154180, 0.021794}, - {-0.370135, -0.116425}, - { 0.451636, -0.300013}, - {-0.370610, 0.387504} -}; - - -/* 24 jitter points */ -jitter_point j24[] = -{ - { 0.030245, 0.136384}, - { 0.018865, -0.348867}, - {-0.350114, -0.472309}, - { 0.222181, 0.149524}, - {-0.393670, -0.266873}, - { 0.404568, 0.230436}, - { 0.098381, 0.465337}, - { 0.462671, 0.442116}, - { 0.400373, -0.212720}, - {-0.409988, 0.263345}, - {-0.115878, -0.001981}, - { 0.348425, -0.009237}, - {-0.464016, 0.066467}, - {-0.138674, -0.468006}, - { 0.144932, -0.022780}, - {-0.250195, 0.150161}, - {-0.181400, -0.264219}, - { 0.196097, -0.234139}, - {-0.311082, -0.078815}, - { 0.268379, 0.366778}, - {-0.040601, 0.327109}, - {-0.234392, 0.354659}, - {-0.003102, -0.154402}, - { 0.297997, -0.417965} -}; - - -/* 66 jitter points */ -jitter_point j66[] = -{ - { 0.266377, -0.218171}, - {-0.170919, -0.429368}, - { 0.047356, -0.387135}, - {-0.430063, 0.363413}, - {-0.221638, -0.313768}, - { 0.124758, -0.197109}, - {-0.400021, 0.482195}, - { 0.247882, 0.152010}, - {-0.286709, -0.470214}, - {-0.426790, 0.004977}, - {-0.361249, -0.104549}, - {-0.040643, 0.123453}, - {-0.189296, 0.438963}, - {-0.453521, -0.299889}, - { 0.408216, -0.457699}, - { 0.328973, -0.101914}, - {-0.055540, -0.477952}, - { 0.194421, 0.453510}, - { 0.404051, 0.224974}, - { 0.310136, 0.419700}, - {-0.021743, 0.403898}, - {-0.466210, 0.248839}, - { 0.341369, 0.081490}, - { 0.124156, -0.016859}, - {-0.461321, -0.176661}, - { 0.013210, 0.234401}, - { 0.174258, -0.311854}, - { 0.294061, 0.263364}, - {-0.114836, 0.328189}, - { 0.041206, -0.106205}, - { 0.079227, 0.345021}, - {-0.109319, -0.242380}, - { 0.425005, -0.332397}, - { 0.009146, 0.015098}, - {-0.339084, -0.355707}, - {-0.224596, -0.189548}, - { 0.083475, 0.117028}, - { 0.295962, -0.334699}, - { 0.452998, 0.025397}, - { 0.206511, -0.104668}, - { 0.447544, -0.096004}, - {-0.108006, -0.002471}, - {-0.380810, 0.130036}, - {-0.242440, 0.186934}, - {-0.200363, 0.070863}, - {-0.344844, -0.230814}, - { 0.408660, 0.345826}, - {-0.233016, 0.305203}, - { 0.158475, -0.430762}, - { 0.486972, 0.139163}, - {-0.301610, 0.009319}, - { 0.282245, -0.458671}, - { 0.482046, 0.443890}, - {-0.121527, 0.210223}, - {-0.477606, -0.424878}, - {-0.083941, -0.121440}, - {-0.345773, 0.253779}, - { 0.234646, 0.034549}, - { 0.394102, -0.210901}, - {-0.312571, 0.397656}, - { 0.200906, 0.333293}, - { 0.018703, -0.261792}, - {-0.209349, -0.065383}, - { 0.076248, 0.478538}, - {-0.073036, -0.355064}, - { 0.145087, 0.221726} -}; diff --git a/lib/glut-3.7.6/progs/redbook/light.c b/lib/glut-3.7.6/progs/redbook/light.c deleted file mode 100644 index 0eed85e10c2043cd71eecab10a096ccd189589e6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/light.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * light.c - * This program demonstrates the use of the OpenGL lighting - * model. A sphere is drawn using a grey material characteristic. - * A single light source illuminates the object. - */ -#include -#include - -/* Initialize material property, light source, lighting model, - * and depth buffer. - */ -void init(void) -{ - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_shininess[] = { 50.0 }; - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glutSolidSphere (1.0, 20, 16); - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w, - 1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-1.5*(GLfloat)w/(GLfloat)h, - 1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/light.dsp b/lib/glut-3.7.6/progs/redbook/light.dsp deleted file mode 100644 index edef322c69ef2cf2adb78dc3d9a14ed592d24a95..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/light.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="light" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=light - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "light.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "light.mak" CFG="light - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "light - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "light - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "light - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "light - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "light - Win32 Release" -# Name "light - Win32 Debug" -# Begin Source File - -SOURCE=.\light.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/lines.c b/lib/glut-3.7.6/progs/redbook/lines.c deleted file mode 100644 index b34d4c418c698baa7a58685879a945de55bc7dc0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/lines.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * lines.c - * This program demonstrates geometric primitives and - * their attributes. - */ -#include -#include - -#define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); \ - glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd(); - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -void display(void) -{ - int i; - - glClear (GL_COLOR_BUFFER_BIT); - -/* select white for all lines */ - glColor3f (1.0, 1.0, 1.0); - -/* in 1st row, 3 lines, each with a different stipple */ - glEnable (GL_LINE_STIPPLE); - - glLineStipple (1, 0x0101); /* dotted */ - drawOneLine (50.0, 125.0, 150.0, 125.0); - glLineStipple (1, 0x00FF); /* dashed */ - drawOneLine (150.0, 125.0, 250.0, 125.0); - glLineStipple (1, 0x1C47); /* dash/dot/dash */ - drawOneLine (250.0, 125.0, 350.0, 125.0); - -/* in 2nd row, 3 wide lines, each with different stipple */ - glLineWidth (5.0); - glLineStipple (1, 0x0101); /* dotted */ - drawOneLine (50.0, 100.0, 150.0, 100.0); - glLineStipple (1, 0x00FF); /* dashed */ - drawOneLine (150.0, 100.0, 250.0, 100.0); - glLineStipple (1, 0x1C47); /* dash/dot/dash */ - drawOneLine (250.0, 100.0, 350.0, 100.0); - glLineWidth (1.0); - -/* in 3rd row, 6 lines, with dash/dot/dash stipple */ -/* as part of a single connected line strip */ - glLineStipple (1, 0x1C47); /* dash/dot/dash */ - glBegin (GL_LINE_STRIP); - for (i = 0; i < 7; i++) - glVertex2f (50.0 + ((GLfloat) i * 50.0), 75.0); - glEnd (); - -/* in 4th row, 6 independent lines with same stipple */ - for (i = 0; i < 6; i++) { - drawOneLine (50.0 + ((GLfloat) i * 50.0), 50.0, - 50.0 + ((GLfloat)(i+1) * 50.0), 50.0); - } - -/* in 5th row, 1 line, with dash/dot/dash stipple */ -/* and a stipple repeat factor of 5 */ - glLineStipple (5, 0x1C47); /* dash/dot/dash */ - drawOneLine (50.0, 25.0, 350.0, 25.0); - - glDisable (GL_LINE_STIPPLE); - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (400, 150); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/lines.dsp b/lib/glut-3.7.6/progs/redbook/lines.dsp deleted file mode 100644 index 0073db70711ce0a1d121494362d0a34cd84ee35e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/lines.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lines" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=lines - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lines.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lines.mak" CFG="lines - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lines - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "lines - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lines - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "lines - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "lines - Win32 Release" -# Name "lines - Win32 Debug" -# Begin Source File - -SOURCE=.\lines.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/list.c b/lib/glut-3.7.6/progs/redbook/list.c deleted file mode 100644 index 3b4f44bd6dace54a744098816b7286ca7e892be2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/list.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * list.c - * This program demonstrates how to make and execute a - * display list. Note that attributes, such as current - * color and matrix, are changed. - */ -#include -#include - -GLuint listName; - -static void init (void) -{ - listName = glGenLists (1); - glNewList (listName, GL_COMPILE); - glColor3f (1.0, 0.0, 0.0); /* current color red */ - glBegin (GL_TRIANGLES); - glVertex2f (0.0, 0.0); - glVertex2f (1.0, 0.0); - glVertex2f (0.0, 1.0); - glEnd (); - glTranslatef (1.5, 0.0, 0.0); /* move position */ - glEndList (); - glShadeModel (GL_FLAT); -} - -static void drawLine (void) -{ - glBegin (GL_LINES); - glVertex2f (0.0, 0.5); - glVertex2f (15.0, 0.5); - glEnd (); -} - -void display(void) -{ - GLuint i; - - glClear (GL_COLOR_BUFFER_BIT); - glColor3f (0.0, 1.0, 0.0); /* current color green */ - for (i = 0; i < 10; i++) /* draw 10 triangles */ - glCallList (listName); - drawLine (); /* is this line green? NO! */ - /* where is the line drawn? */ - glFlush (); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 2.0, -0.5 * (GLfloat) h/(GLfloat) w, - 1.5 * (GLfloat) h/(GLfloat) w); - else - gluOrtho2D (0.0, 2.0 * (GLfloat) w/(GLfloat) h, -0.5, 1.5); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(650, 50); - glutCreateWindow(argv[0]); - init (); - glutReshapeFunc (reshape); - glutDisplayFunc (display); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/list.dsp b/lib/glut-3.7.6/progs/redbook/list.dsp deleted file mode 100644 index 351f981e8717c76bc6c9af928025b4cb6302bda2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/list.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="list" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=list - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "list.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "list.mak" CFG="list - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "list - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "list - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "list - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "list - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "list - Win32 Release" -# Name "list - Win32 Debug" -# Begin Source File - -SOURCE=.\list.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/material.c b/lib/glut-3.7.6/progs/redbook/material.c deleted file mode 100644 index f8d6a918f478cd26235129f0781fdcb988ba4f90..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/material.c +++ /dev/null @@ -1,293 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * material.c - * This program demonstrates the use of the GL lighting model. - * Several objects are drawn using different material characteristics. - * A single light source illuminates the objects. - */ -#include -#include - -/* Initialize z-buffer, projection matrix, light source, - * and lighting model. Do not specify a material property here. - */ -void myinit(void) -{ - GLfloat ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat position[] = { 0.0, 3.0, 2.0, 0.0 }; - GLfloat lmodel_ambient[] = { 0.4, 0.4, 0.4, 1.0 }; - GLfloat local_view[] = { 0.0 }; - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glClearColor(0.0, 0.1, 0.1, 0.0); -} - -/* Draw twelve spheres in 3 rows with 4 columns. - * The spheres in the first row have materials with no ambient reflection. - * The second row has materials with significant ambient reflection. - * The third row has materials with colored ambient reflection. - * - * The first column has materials with blue, diffuse reflection only. - * The second column has blue diffuse reflection, as well as specular - * reflection with a low shininess exponent. - * The third column has blue diffuse reflection, as well as specular - * reflection with a high shininess exponent (a more concentrated highlight). - * The fourth column has materials which also include an emissive component. - * - * glTranslatef() is used to move spheres to their appropriate locations. - */ - -void display(void) -{ - GLfloat no_mat[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat mat_ambient[] = { 0.7, 0.7, 0.7, 1.0 }; - GLfloat mat_ambient_color[] = { 0.8, 0.8, 0.2, 1.0 }; - GLfloat mat_diffuse[] = { 0.1, 0.5, 0.8, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat no_shininess[] = { 0.0 }; - GLfloat low_shininess[] = { 5.0 }; - GLfloat high_shininess[] = { 100.0 }; - GLfloat mat_emission[] = {0.3, 0.2, 0.2, 0.0}; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - -/* draw sphere in first row, first column - * diffuse reflection only; no ambient or specular - */ - glPushMatrix(); - glTranslatef (-3.75, 3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat); - glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in first row, second column - * diffuse and specular reflection; low shininess; no ambient - */ - glPushMatrix(); - glTranslatef (-1.25, 3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, low_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in first row, third column - * diffuse and specular reflection; high shininess; no ambient - */ - glPushMatrix(); - glTranslatef (1.25, 3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in first row, fourth column - * diffuse reflection; emission; no ambient or specular reflection - */ - glPushMatrix(); - glTranslatef (3.75, 3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat); - glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in second row, first column - * ambient and diffuse reflection; no specular - */ - glPushMatrix(); - glTranslatef (-3.75, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat); - glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in second row, second column - * ambient, diffuse and specular reflection; low shininess - */ - glPushMatrix(); - glTranslatef (-1.25, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, low_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in second row, third column - * ambient, diffuse and specular reflection; high shininess - */ - glPushMatrix(); - glTranslatef (1.25, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in second row, fourth column - * ambient and diffuse reflection; emission; no specular - */ - glPushMatrix(); - glTranslatef (3.75, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat); - glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in third row, first column - * colored ambient and diffuse reflection; no specular - */ - glPushMatrix(); - glTranslatef (-3.75, -3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat); - glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in third row, second column - * colored ambient, diffuse and specular reflection; low shininess - */ - glPushMatrix(); - glTranslatef (-1.25, -3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, low_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in third row, third column - * colored ambient, diffuse and specular reflection; high shininess - */ - glPushMatrix(); - glTranslatef (1.25, -3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - -/* draw sphere in third row, fourth column - * colored ambient and diffuse reflection; emission; no specular - */ - glPushMatrix(); - glTranslatef (3.75, -3.0, 0.0); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient_color); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat); - glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); - glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); - glutSolidSphere(1.0, 16, 16); - glPopMatrix(); - - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= (h * 2)) - glOrtho (-6.0, 6.0, -3.0*((GLfloat)h*2)/(GLfloat)w, - 3.0*((GLfloat)h*2)/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-6.0*(GLfloat)w/((GLfloat)h*2), - 6.0*(GLfloat)w/((GLfloat)h*2), -3.0, 3.0, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (600, 450); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/redbook/material.dsp b/lib/glut-3.7.6/progs/redbook/material.dsp deleted file mode 100644 index 0d28290f869099794a6d3694186c651ba7ffabf6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/material.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="material" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=material - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "material.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "material.mak" CFG="material - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "material - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "material - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "material - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "material - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "material - Win32 Release" -# Name "material - Win32 Debug" -# Begin Source File - -SOURCE=.\material.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/mipmap.c b/lib/glut-3.7.6/progs/redbook/mipmap.c deleted file mode 100644 index 96ef394f60e4cf9224ef86c239e4498a534958f1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/mipmap.c +++ /dev/null @@ -1,165 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* mipmap.c - * This program demonstrates using mipmaps for texture maps. - * To overtly show the effect of mipmaps, each mipmap reduction - * level has a solidly colored, contrasting texture image. - * Thus, the quadrilateral which is drawn is drawn with several - * different colors. - */ -#include -#include - -GLubyte mipmapImage32[32][32][3]; -GLubyte mipmapImage16[16][16][3]; -GLubyte mipmapImage8[8][8][3]; -GLubyte mipmapImage4[4][4][3]; -GLubyte mipmapImage2[2][2][3]; -GLubyte mipmapImage1[1][1][3]; - -void makeImages(void) -{ - int i, j; - - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - mipmapImage32[i][j][0] = 255; - mipmapImage32[i][j][1] = 255; - mipmapImage32[i][j][2] = 0; - } - } - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - mipmapImage16[i][j][0] = 255; - mipmapImage16[i][j][1] = 0; - mipmapImage16[i][j][2] = 255; - } - } - for (i = 0; i < 8; i++) { - for (j = 0; j < 8; j++) { - mipmapImage8[i][j][0] = 255; - mipmapImage8[i][j][1] = 0; - mipmapImage8[i][j][2] = 0; - } - } - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - mipmapImage4[i][j][0] = 0; - mipmapImage4[i][j][1] = 255; - mipmapImage4[i][j][2] = 0; - } - } - for (i = 0; i < 2; i++) { - for (j = 0; j < 2; j++) { - mipmapImage2[i][j][0] = 0; - mipmapImage2[i][j][1] = 0; - mipmapImage2[i][j][2] = 255; - } - } - mipmapImage1[0][0][0] = 255; - mipmapImage1[0][0][1] = 255; - mipmapImage1[0][0][2] = 255; -} - -void myinit(void) -{ - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_FLAT); - - glTranslatef(0.0, 0.0, -3.6); - makeImages(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 3, 32, 32, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage32[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 1, 3, 16, 16, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage16[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 2, 3, 8, 8, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage8[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 3, 3, 4, 4, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage4[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 4, 3, 2, 2, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage2[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 5, 3, 1, 1, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage1[0][0][0]); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, 8.0); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(8.0, 8.0); glVertex3f(2000.0, 1.0, -6000.0); - glTexCoord2f(8.0, 0.0); glVertex3f(2000.0, -1.0, -6000.0); - glEnd(); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - diff --git a/lib/glut-3.7.6/progs/redbook/mipmap.dsp b/lib/glut-3.7.6/progs/redbook/mipmap.dsp deleted file mode 100644 index cb0eb383b6f7661035ee680023c41fb6c17fece5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/mipmap.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mipmap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mipmap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mipmap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mipmap.mak" CFG="mipmap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mipmap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mipmap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mipmap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "mipmap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "mipmap - Win32 Release" -# Name "mipmap - Win32 Debug" -# Begin Source File - -SOURCE=.\mipmap.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/model.c b/lib/glut-3.7.6/progs/redbook/model.c deleted file mode 100644 index 8411ef355f12688c5fe816743f752bd8cf95c638..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/model.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * model.c - * This program demonstrates modeling transformations - */ -#include -#include - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -void draw_triangle(void) -{ - glBegin (GL_LINE_LOOP); - glVertex2f(0.0, 25.0); - glVertex2f(25.0, -25.0); - glVertex2f(-25.0, -25.0); - glEnd(); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT); - glColor3f (1.0, 1.0, 1.0); - - glLoadIdentity (); - glColor3f (1.0, 1.0, 1.0); - draw_triangle (); - - glEnable (GL_LINE_STIPPLE); - glLineStipple (1, 0xF0F0); - glLoadIdentity (); - glTranslatef (-20.0, 0.0, 0.0); - draw_triangle (); - - glLineStipple (1, 0xF00F); - glLoadIdentity (); - glScalef (1.5, 0.5, 1.0); - draw_triangle (); - - glLineStipple (1, 0x8888); - glLoadIdentity (); - glRotatef (90.0, 0.0, 0.0, 1.0); - draw_triangle (); - glDisable (GL_LINE_STIPPLE); - - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - if (w <= h) - glOrtho (-50.0, 50.0, -50.0*(GLfloat)h/(GLfloat)w, - 50.0*(GLfloat)h/(GLfloat)w, -1.0, 1.0); - else - glOrtho (-50.0*(GLfloat)w/(GLfloat)h, - 50.0*(GLfloat)w/(GLfloat)h, -50.0, 50.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/model.dsp b/lib/glut-3.7.6/progs/redbook/model.dsp deleted file mode 100644 index d4e811d9f2239f2a0890b4df0bf23ee8353c598a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/model.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="model" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=model - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "model.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "model.mak" CFG="model - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "model - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "model - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "model - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "model - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "model - Win32 Release" -# Name "model - Win32 Debug" -# Begin Source File - -SOURCE=.\model.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/movelight.c b/lib/glut-3.7.6/progs/redbook/movelight.c deleted file mode 100644 index a108cad439aa4c04ec6ca715d872f101fa5723ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/movelight.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * movelight.c - * This program demonstrates when to issue lighting and - * transformation commands to render a model with a light - * which is moved by a modeling transformation (rotate or - * translate). The light position is reset after the modeling - * transformation is called. The eye position does not change. - * - * A sphere is drawn using a grey material characteristic. - * A single light source illuminates the object. - * - * Interaction: pressing the left mouse button alters - * the modeling transformation (x rotation) by 30 degrees. - * The scene is then redrawn with the light in a new position. - */ -#include -#include - -static int spin = 0; - -/* Initialize material property, light source, lighting model, - * and depth buffer. - */ -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); -} - -/* Here is where the light position is reset after the modeling - * transformation (glRotated) is called. This places the - * light at a new position in world coordinates. The cube - * represents the position of the light. - */ -void display(void) -{ - GLfloat position[] = { 0.0, 0.0, 1.5, 1.0 }; - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix (); - gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); - - glPushMatrix (); - glRotated ((GLdouble) spin, 1.0, 0.0, 0.0); - glLightfv (GL_LIGHT0, GL_POSITION, position); - - glTranslated (0.0, 0.0, 1.5); - glDisable (GL_LIGHTING); - glColor3f (0.0, 1.0, 1.0); - glutWireCube (0.1); - glEnable (GL_LIGHTING); - glPopMatrix (); - - glutSolidTorus (0.275, 0.85, 8, 15); - glPopMatrix (); - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) -{ - switch (button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) { - spin = (spin + 30) % 360; - glutPostRedisplay(); - } - break; - default: - break; - } -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/movelight.dsp b/lib/glut-3.7.6/progs/redbook/movelight.dsp deleted file mode 100644 index 514fc5434e666d2f9992ab56ee10265f0d27f879..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/movelight.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="movelight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=movelight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "movelight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "movelight.mak" CFG="movelight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "movelight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "movelight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "movelight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "movelight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "movelight - Win32 Release" -# Name "movelight - Win32 Debug" -# Begin Source File - -SOURCE=.\movelight.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/nurbs.c b/lib/glut-3.7.6/progs/redbook/nurbs.c deleted file mode 100644 index 513868e7d175620c19cc2c883be648d834e50aa1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/nurbs.c +++ /dev/null @@ -1,176 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * nurbs.c - * This program shows a NURBS (Non-uniform rational B-splines) - * surface, shaped like a heart. - */ -#include -#include - -#define S_NUMPOINTS 13 -#define S_ORDER 3 -#define S_NUMKNOTS (S_NUMPOINTS + S_ORDER) -#define T_NUMPOINTS 3 -#define T_ORDER 3 -#define T_NUMKNOTS (T_NUMPOINTS + T_ORDER) -#define SQRT2 1.41421356237309504880 - -/* initialized local data */ - -GLfloat sknots[S_NUMKNOTS] = - {-1.0, -1.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, - 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 9.0, 9.0}; -GLfloat tknots[T_NUMKNOTS] = {1.0, 1.0, 1.0, 2.0, 2.0, 2.0}; - -GLfloat ctlpoints[S_NUMPOINTS][T_NUMPOINTS][4] = { -{ {4.,2.,2.,1.},{4.,1.6,2.5,1.},{4.,2.,3.0,1.} }, -{ {5.,4.,2.,1.},{5.,4.,2.5,1.},{5.,4.,3.0,1.} }, -{ {6.,5.,2.,1.},{6.,5.,2.5,1.},{6.,5.,3.0,1.} }, -{ {SQRT2*6.,SQRT2*6.,SQRT2*2.,SQRT2}, - {SQRT2*6.,SQRT2*6.,SQRT2*2.5,SQRT2}, - {SQRT2*6.,SQRT2*6.,SQRT2*3.0,SQRT2} }, -{ {5.2,6.7,2.,1.},{5.2,6.7,2.5,1.},{5.2,6.7,3.0,1.} }, -{ {SQRT2*4.,SQRT2*6.,SQRT2*2.,SQRT2}, - {SQRT2*4.,SQRT2*6.,SQRT2*2.5,SQRT2}, - {SQRT2*4.,SQRT2*6.,SQRT2*3.0,SQRT2} }, -{ {4.,5.2,2.,1.},{4.,4.6,2.5,1.},{4.,5.2,3.0,1.} }, -{ {SQRT2*4.,SQRT2*6.,SQRT2*2.,SQRT2}, - {SQRT2*4.,SQRT2*6.,SQRT2*2.5,SQRT2}, - {SQRT2*4.,SQRT2*6.,SQRT2*3.0,SQRT2} }, -{ {2.8,6.7,2.,1.},{2.8,6.7,2.5,1.},{2.8,6.7,3.0,1.} }, -{ {SQRT2*2.,SQRT2*6.,SQRT2*2.,SQRT2}, - {SQRT2*2.,SQRT2*6.,SQRT2*2.5,SQRT2}, - {SQRT2*2.,SQRT2*6.,SQRT2*3.0,SQRT2} }, -{ {2.,5.,2.,1.},{2.,5.,2.5,1.},{2.,5.,3.0,1.} }, -{ {3.,4.,2.,1.},{3.,4.,2.5,1.},{3.,4.,3.0,1.} }, -{ {4.,2.,2.,1.},{4.,1.6,2.5,1.},{4.,2.,3.0,1.} } -}; - -GLUnurbsObj *theNurb; - -/* Initialize material property, light source, lighting model, - * and depth buffer. - */ -void myinit(void) -{ - GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_diffuse[] = { 1.0, 0.2, 1.0, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_shininess[] = { 50.0 }; - - GLfloat light0_position[] = { 1.0, 0.1, 1.0, 0.0 }; - GLfloat light1_position[] = { -1.0, 0.1, 1.0, 0.0 }; - - GLfloat lmodel_ambient[] = { 0.3, 0.3, 0.3, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glLightfv(GL_LIGHT0, GL_POSITION, light0_position); - glLightfv(GL_LIGHT1, GL_POSITION, light1_position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_AUTO_NORMAL); - - theNurb = gluNewNurbsRenderer(); - - gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0); - gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef (4., 4.5, 2.5); - glRotatef (220.0, 1., 0., 0.); - glRotatef (115.0, 0., 1., 0.); - glTranslatef (-4., -4.5, -2.5); - - gluBeginSurface(theNurb); - gluNurbsSurface(theNurb, - S_NUMKNOTS, sknots, - T_NUMKNOTS, tknots, - 4 * T_NUMPOINTS, - 4, - &ctlpoints[0][0][0], - S_ORDER, T_ORDER, - GL_MAP2_VERTEX_4); - gluEndSurface(theNurb); - - glPopMatrix(); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.5, 0.5, 0.8, 10.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(7.0,4.5,4.0, 4.5,4.5,2.0, 6.0,-3.0,2.0); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/nurbs.dsp b/lib/glut-3.7.6/progs/redbook/nurbs.dsp deleted file mode 100644 index ff8defc9de869d476e44625722788f7b24409763..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/nurbs.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="nurbs" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=nurbs - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "nurbs.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "nurbs.mak" CFG="nurbs - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "nurbs - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "nurbs - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "nurbs - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "nurbs - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "nurbs - Win32 Release" -# Name "nurbs - Win32 Debug" -# Begin Source File - -SOURCE=.\nurbs.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/pickdepth.c b/lib/glut-3.7.6/progs/redbook/pickdepth.c deleted file mode 100644 index a9683e191d3b3d60bb844f8df72507bd578b8e9f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/pickdepth.c +++ /dev/null @@ -1,204 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * pickdepth.c - * Picking is demonstrated in this program. In - * rendering mode, three overlapping rectangles are - * drawn. When the left mouse button is pressed, - * selection mode is entered with the picking matrix. - * Rectangles which are drawn under the cursor position - * are "picked." Pay special attention to the depth - * value range, which is returned. - */ -#include -#include -#include - -void -myinit(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_FLAT); - glDepthRange(0.0, 1.0); /* The default z mapping */ -} - -/* The three rectangles are drawn. In selection mode, - * each rectangle is given the same name. Note that - * each rectangle is drawn with a different z value. - */ -void -drawRects(GLenum mode) -{ - if (mode == GL_SELECT) - glLoadName(1); - glBegin(GL_QUADS); - glColor3f(1.0, 1.0, 0.0); - glVertex3i(2, 0, 0); - glVertex3i(2, 6, 0); - glVertex3i(6, 6, 0); - glVertex3i(6, 0, 0); - glEnd(); - if (mode == GL_SELECT) - glLoadName(2); - glBegin(GL_QUADS); - glColor3f(0.0, 1.0, 1.0); - glVertex3i(3, 2, -1); - glVertex3i(3, 8, -1); - glVertex3i(8, 8, -1); - glVertex3i(8, 2, -1); - glEnd(); - if (mode == GL_SELECT) - glLoadName(3); - glBegin(GL_QUADS); - glColor3f(1.0, 0.0, 1.0); - glVertex3i(0, 2, -2); - glVertex3i(0, 7, -2); - glVertex3i(5, 7, -2); - glVertex3i(5, 2, -2); - glEnd(); -} - -/* processHits() prints out the contents of the - * selection array. - */ -void -processHits(GLint hits, GLuint buffer[]) -{ - int i; - unsigned int j; - GLuint names, *ptr; - - printf("hits = %d\n", hits); - ptr = (GLuint *) buffer; - for (i = 0; i < hits; i++) { /* for each hit */ - names = *ptr; - printf(" number of names for hit = %d\n", names); - ptr++; - printf(" z1 is %g;", (float) *ptr/0xffffffff); - ptr++; - printf(" z2 is %g\n", (float) *ptr/0xffffffff); - ptr++; - printf(" the name is "); - for (j = 0; j < names; j++) { /* for each name */ - printf("%d ", *ptr); - ptr++; - } - printf("\n"); - } -} - -/* pickRects() sets up selection mode, name stack, - * and projection matrix for picking. Then the objects - * are drawn. - */ -#define BUFSIZE 512 - -void -pickRects(int button, int state, int x, int y) -{ - GLuint selectBuf[BUFSIZE]; - GLint hits; - GLint viewport[4]; - - if (button != GLUT_LEFT_BUTTON || state != GLUT_DOWN) - return; - - glGetIntegerv(GL_VIEWPORT, viewport); - - glSelectBuffer(BUFSIZE, selectBuf); - (void) glRenderMode(GL_SELECT); - - glInitNames(); - glPushName((GLuint) ~0); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); -/* create 5x5 pixel picking region near cursor location */ - gluPickMatrix((GLdouble) x, (GLdouble) (viewport[3] - y), - 5.0, 5.0, viewport); - glOrtho(0.0, 8.0, 0.0, 8.0, -0.5, 2.5); - drawRects(GL_SELECT); - glPopMatrix(); - glFlush(); - - hits = glRenderMode(GL_RENDER); - processHits(hits, selectBuf); -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - drawRects(GL_RENDER); - glutSwapBuffers(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, 8.0, 0.0, 8.0, -0.5, 2.5); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, depth buffer, and handle input events. - */ -int -main(int argc, char **argv) -{ - glutInitWindowSize(200, 200); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInit(&argc, argv); - glutCreateWindow(argv[0]); - myinit(); - glutMouseFunc(pickRects); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/pickdepth.dsp b/lib/glut-3.7.6/progs/redbook/pickdepth.dsp deleted file mode 100644 index c363ea17a47030f3bedf2018b97264f74b150c2b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/pickdepth.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="pickdepth" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=pickdepth - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "pickdepth.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "pickdepth.mak" CFG="pickdepth - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "pickdepth - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "pickdepth - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "pickdepth - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "pickdepth - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "pickdepth - Win32 Release" -# Name "pickdepth - Win32 Debug" -# Begin Source File - -SOURCE=.\pickdepth.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/picksquare.c b/lib/glut-3.7.6/progs/redbook/picksquare.c deleted file mode 100644 index 0a12aa0facdaef4f4041cb02ca2facbb701669c5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/picksquare.c +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * picksquare.c - * Use of multiple names and picking are demonstrated. - * A 3x3 grid of squares is drawn. When the left mouse - * button is pressed, all squares under the cursor position - * have their color changed. - */ -#include -#include -#include - -int board[3][3]; /* amount of color for each square */ - -/* Clear color value for every square on the board */ -void init(void) -{ - int i, j; - for (i = 0; i < 3; i++) - for (j = 0; j < 3; j ++) - board[i][j] = 0; - glClearColor (0.0, 0.0, 0.0, 0.0); -} - -/* The nine squares are drawn. In selection mode, each - * square is given two names: one for the row and the - * other for the column on the grid. The color of each - * square is determined by its position on the grid, and - * the value in the board[][] array. - */ -void drawSquares(GLenum mode) -{ - GLuint i, j; - for (i = 0; i < 3; i++) { - if (mode == GL_SELECT) - glLoadName (i); - for (j = 0; j < 3; j ++) { - if (mode == GL_SELECT) - glPushName (j); - glColor3f ((GLfloat) i/3.0, (GLfloat) j/3.0, - (GLfloat) board[i][j]/3.0); - glRecti (i, j, i+1, j+1); - if (mode == GL_SELECT) - glPopName (); - } - } -} - -/* processHits prints out the contents of the - * selection array. - */ -void processHits (GLint hits, GLuint buffer[]) -{ - unsigned int i, j; - GLuint ii, jj, names, *ptr; - - printf ("hits = %d\n", hits); - ptr = (GLuint *) buffer; - for (i = 0; i < hits; i++) { /* for each hit */ - names = *ptr; - printf (" number of names for this hit = %d\n", names); ptr++; - printf(" z1 is %g;", (float) *ptr/0x7fffffff); ptr++; - printf(" z2 is %g\n", (float) *ptr/0x7fffffff); ptr++; - printf (" names are "); - for (j = 0; j < names; j++) { /* for each name */ - printf ("%d ", *ptr); - if (j == 0) /* set row and column */ - ii = *ptr; - else if (j == 1) - jj = *ptr; - ptr++; - } - printf ("\n"); - board[ii][jj] = (board[ii][jj] + 1) % 3; - } -} - -/* pickSquares() sets up selection mode, name stack, - * and projection matrix for picking. Then the - * objects are drawn. - */ -#define BUFSIZE 512 - -void pickSquares(int button, int state, int x, int y) -{ - GLuint selectBuf[BUFSIZE]; - GLint hits; - GLint viewport[4]; - - if (button != GLUT_LEFT_BUTTON || state != GLUT_DOWN) - return; - - glGetIntegerv (GL_VIEWPORT, viewport); - - glSelectBuffer (BUFSIZE, selectBuf); - (void) glRenderMode (GL_SELECT); - - glInitNames(); - glPushName(0); - - glMatrixMode (GL_PROJECTION); - glPushMatrix (); - glLoadIdentity (); -/* create 5x5 pixel picking region near cursor location */ - gluPickMatrix ((GLdouble) x, (GLdouble) (viewport[3] - y), - 5.0, 5.0, viewport); - gluOrtho2D (0.0, 3.0, 0.0, 3.0); - drawSquares (GL_SELECT); - - glMatrixMode (GL_PROJECTION); - glPopMatrix (); - glFlush (); - - hits = glRenderMode (GL_RENDER); - processHits (hits, selectBuf); - glutPostRedisplay(); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - drawSquares (GL_RENDER); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D (0.0, 3.0, 0.0, 3.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* Main Loop */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (100, 100); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutReshapeFunc (reshape); - glutDisplayFunc(display); - glutMouseFunc (pickSquares); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/picksquare.dsp b/lib/glut-3.7.6/progs/redbook/picksquare.dsp deleted file mode 100644 index d96ab3644de1c3b2ccdfc5579ebf04a14866db69..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/picksquare.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="picksquare" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=picksquare - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "picksquare.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "picksquare.mak" CFG="picksquare - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "picksquare - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "picksquare - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "picksquare - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "picksquare - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "picksquare - Win32 Release" -# Name "picksquare - Win32 Debug" -# Begin Source File - -SOURCE=.\picksquare.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/plane.c b/lib/glut-3.7.6/progs/redbook/plane.c deleted file mode 100644 index 2b0cca06faf81a521ba294f3836490d8f3580260..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/plane.c +++ /dev/null @@ -1,157 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * plane.c - * This program demonstrates the use of local versus - * infinite lighting on a flat plane. - */ -#include -#include - -/* Initialize material property, light source, and lighting model. - */ -void myinit(void) -{ - GLfloat mat_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; -/* mat_specular and mat_shininess are NOT default values */ - GLfloat mat_diffuse[] = { 0.4, 0.4, 0.4, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_shininess[] = { 15.0 }; - - GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat lmodel_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); -} - -void drawPlane(void) -{ - glBegin (GL_QUADS); - glNormal3f (0.0, 0.0, 1.0); - glVertex3f (-1.0, -1.0, 0.0); - glVertex3f (0.0, -1.0, 0.0); - glVertex3f (0.0, 0.0, 0.0); - glVertex3f (-1.0, 0.0, 0.0); - - glNormal3f (0.0, 0.0, 1.0); - glVertex3f (0.0, -1.0, 0.0); - glVertex3f (1.0, -1.0, 0.0); - glVertex3f (1.0, 0.0, 0.0); - glVertex3f (0.0, 0.0, 0.0); - - glNormal3f (0.0, 0.0, 1.0); - glVertex3f (0.0, 0.0, 0.0); - glVertex3f (1.0, 0.0, 0.0); - glVertex3f (1.0, 1.0, 0.0); - glVertex3f (0.0, 1.0, 0.0); - - glNormal3f (0.0, 0.0, 1.0); - glVertex3f (0.0, 0.0, 0.0); - glVertex3f (0.0, 1.0, 0.0); - glVertex3f (-1.0, 1.0, 0.0); - glVertex3f (-1.0, 0.0, 0.0); - glEnd(); -} - -void display (void) -{ - GLfloat infinite_light[] = { 1.0, 1.0, 1.0, 0.0 }; - GLfloat local_light[] = { 1.0, 1.0, 1.0, 1.0 }; - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix (); - glTranslatef (-1.5, 0.0, 0.0); - glLightfv (GL_LIGHT0, GL_POSITION, infinite_light); - drawPlane (); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (1.5, 0.0, 0.0); - glLightfv (GL_LIGHT0, GL_POSITION, local_light); - drawPlane (); - glPopMatrix (); - glFlush (); -} - -void myReshape(int w, int h) -{ - glViewport (0, 0, w, h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - if (w <= h) - glOrtho (-1.5, 1.5, -1.5*(GLdouble)h/(GLdouble)w, - 1.5*(GLdouble)h/(GLdouble)w, -10.0, 10.0); - else - glOrtho (-1.5*(GLdouble)w/(GLdouble)h, - 1.5*(GLdouble)w/(GLdouble)h, -1.5, 1.5, -10.0, 10.0); - glMatrixMode (GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 200); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/plane.dsp b/lib/glut-3.7.6/progs/redbook/plane.dsp deleted file mode 100644 index 0b98e1b0f9fd0cfa483e2357f80715f1e322d1bc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/plane.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="plane" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=plane - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "plane.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "plane.mak" CFG="plane - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "plane - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "plane - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "plane - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "plane - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "plane - Win32 Release" -# Name "plane - Win32 Debug" -# Begin Source File - -SOURCE=.\plane.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/planet.c b/lib/glut-3.7.6/progs/redbook/planet.c deleted file mode 100644 index e13672d3f631cf6aa464651a7c4914e5df73bb0a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/planet.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * planet.c - * This program shows how to composite modeling transformations - * to draw translated and rotated models. - * Interaction: pressing the d and y keys (day and year) - * alters the rotation of the planet around the sun. - */ -#include -#include - -static int year = 0, day = 0; - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT); - glColor3f (1.0, 1.0, 1.0); - - glPushMatrix(); - glutWireSphere(1.0, 20, 16); /* draw sun */ - glRotatef ((GLfloat) year, 0.0, 1.0, 0.0); - glTranslatef (2.0, 0.0, 0.0); - glRotatef ((GLfloat) day, 0.0, 1.0, 0.0); - glutWireSphere(0.2, 10, 8); /* draw smaller planet */ - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); -} - -/* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) -{ - switch (key) { - case 'd': - day = (day + 10) % 360; - glutPostRedisplay(); - break; - case 'D': - day = (day - 10) % 360; - glutPostRedisplay(); - break; - case 'y': - year = (year + 5) % 360; - glutPostRedisplay(); - break; - case 'Y': - year = (year - 5) % 360; - glutPostRedisplay(); - break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/planet.dsp b/lib/glut-3.7.6/progs/redbook/planet.dsp deleted file mode 100644 index 13b0871a415949e23ba3dba7b6d02042fb8c3013..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/planet.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="planet" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=planet - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "planet.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "planet.mak" CFG="planet - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "planet - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "planet - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "planet - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "planet - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "planet - Win32 Release" -# Name "planet - Win32 Debug" -# Begin Source File - -SOURCE=.\planet.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/polyoff.c b/lib/glut-3.7.6/progs/redbook/polyoff.c deleted file mode 100644 index 42887c9e0c87bfb999cb8db3d061b63e327e966e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/polyoff.c +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * polyoff.c - * This program demonstrates polygon offset to draw a shaded - * polygon and its wireframe counterpart without ugly visual - * artifacts ("stitching"). - */ -#include -#include -#include - -#ifdef GL_VERSION_1_1 -GLuint list; -GLint spinx = 0; -GLint spiny = 0; -GLfloat tdist = 0.0; -GLfloat polyfactor = 1.0; -GLfloat polyunits = 1.0; - -/* display() draws two spheres, one with a gray, diffuse material, - * the other sphere with a magenta material with a specular highlight. - */ -void display (void) -{ - GLfloat gray[] = { 0.8, 0.8, 0.8, 1.0 }; - GLfloat black[] = { 0.0, 0.0, 0.0, 1.0 }; - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix (); - glTranslatef (0.0, 0.0, tdist); - glRotatef ((GLfloat) spinx, 1.0, 0.0, 0.0); - glRotatef ((GLfloat) spiny, 0.0, 1.0, 0.0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gray); - glMaterialfv(GL_FRONT, GL_SPECULAR, black); - glMaterialf(GL_FRONT, GL_SHININESS, 0.0); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(polyfactor, polyunits); - glCallList (list); - glDisable(GL_POLYGON_OFFSET_FILL); - - glDisable(GL_LIGHTING); - glDisable(GL_LIGHT0); - glColor3f (1.0, 1.0, 1.0); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glCallList (list); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - - glPopMatrix (); - glFlush (); -} - -/* specify initial properties - * create display list with sphere - * initialize lighting and depth buffer - */ -void gfxinit (void) -{ - GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - GLfloat global_ambient[] = { 0.2, 0.2, 0.2, 1.0 }; - - glClearColor (0.0, 0.0, 0.0, 1.0); - - list = glGenLists(1); - glNewList (list, GL_COMPILE); - glutSolidSphere(1.0, 20, 12); - glEndList (); - - glEnable(GL_DEPTH_TEST); - - glLightfv (GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv (GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv (GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv (GL_LIGHT0, GL_POSITION, light_position); - glLightModelfv (GL_LIGHT_MODEL_AMBIENT, global_ambient); -} - -/* call when window is resized */ -void reshape(int width, int height) -{ - glViewport (0, 0, width, height); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluPerspective(45.0, (GLdouble)width/(GLdouble)height, - 1.0, 10.0); - glMatrixMode (GL_MODELVIEW); - glLoadIdentity (); - gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); -} - -/* call when mouse button is pressed */ -/* ARGSUSED2 */ -void mouse(int button, int state, int x, int y) { - switch (button) { - case GLUT_LEFT_BUTTON: - switch (state) { - case GLUT_DOWN: - spinx = (spinx + 5) % 360; - glutPostRedisplay(); - break; - default: - break; - } - break; - case GLUT_MIDDLE_BUTTON: - switch (state) { - case GLUT_DOWN: - spiny = (spiny + 5) % 360; - glutPostRedisplay(); - break; - default: - break; - } - break; - case GLUT_RIGHT_BUTTON: - switch (state) { - case GLUT_UP: - exit(0); - break; - default: - break; - } - break; - default: - break; - } -} - -/* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) -{ - switch (key) { - case 't': - if (tdist < 4.0) { - tdist = (tdist + 0.5); - glutPostRedisplay(); - } - break; - case 'T': - if (tdist > -5.0) { - tdist = (tdist - 0.5); - glutPostRedisplay(); - } - break; - case 'F': - polyfactor = polyfactor + 0.1; - printf ("polyfactor is %f\n", polyfactor); - glutPostRedisplay(); - break; - case 'f': - polyfactor = polyfactor - 0.1; - printf ("polyfactor is %f\n", polyfactor); - glutPostRedisplay(); - break; - case 'U': - polyunits = polyunits + 1.0; - printf ("polyunits is %f\n", polyunits); - glutPostRedisplay(); - break; - case 'u': - polyunits = polyunits - 1.0; - printf ("polyunits is %f\n", polyunits); - glutPostRedisplay(); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow(argv[0]); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); - gfxinit(); - glutMainLoop(); - return 0; -} -#else -int main(int argc, char** argv) -{ - fprintf (stderr, "This program demonstrates a feature which is not in OpenGL Version 1.0.\n"); - fprintf (stderr, "If your implementation of OpenGL Version 1.0 has the right extensions,\n"); - fprintf (stderr, "you may be able to modify this program to make it run.\n"); - return 0; -} -#endif diff --git a/lib/glut-3.7.6/progs/redbook/polyoff.dsp b/lib/glut-3.7.6/progs/redbook/polyoff.dsp deleted file mode 100644 index 2acc0b9fdfc7292ce4695a34b26271ca34f4d5fd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/polyoff.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="polyoff" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=polyoff - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "polyoff.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "polyoff.mak" CFG="polyoff - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "polyoff - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "polyoff - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "polyoff - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "polyoff - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "polyoff - Win32 Release" -# Name "polyoff - Win32 Debug" -# Begin Source File - -SOURCE=.\polyoff.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/polys.c b/lib/glut-3.7.6/progs/redbook/polys.c deleted file mode 100644 index 2983bc5cc3d1ed22acd84ef0379f918ac29fadf7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/polys.c +++ /dev/null @@ -1,124 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * polys.c - * This program demonstrates polygon stippling. - */ -#include -#include - -void display(void) -{ - GLubyte fly[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20, -0x04, 0x30, 0x0C, 0x20, 0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, -0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, 0x44, 0x01, 0x80, 0x22, -0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, -0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66, -0x33, 0x01, 0x80, 0xCC, 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, -0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, 0x03, 0x31, 0x8c, 0xc0, -0x03, 0x33, 0xcc, 0xc0, 0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, -0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, -0x10, 0x30, 0x0c, 0x08, 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08}; - - GLubyte halftone[] = { -0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, -0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, -0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, -0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, -0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, -0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, -0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, -0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, -0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, -0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, -0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55}; - - glClear (GL_COLOR_BUFFER_BIT); - -/* draw all polygons in white */ - glColor3f (1.0, 1.0, 1.0); - -/* draw one solid, unstippled rectangle, */ -/* then two stippled rectangles */ - glRectf (25.0, 25.0, 125.0, 125.0); - glEnable (GL_POLYGON_STIPPLE); - glPolygonStipple (fly); - glRectf (125.0, 25.0, 225.0, 125.0); - glPolygonStipple (halftone); - glRectf (225.0, 25.0, 325.0, 125.0); - glDisable (GL_POLYGON_STIPPLE); - - glFlush (); -} - -void myinit (void) -{ -/* clear background to black */ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -static void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (350, 150); - glutCreateWindow (argv[0]); - myinit (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/polys.dsp b/lib/glut-3.7.6/progs/redbook/polys.dsp deleted file mode 100644 index 4199fc316c05cb600f9592af3d352cb074e1dfb9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/polys.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="polys" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=polys - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "polys.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "polys.mak" CFG="polys - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "polys - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "polys - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "polys - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "polys - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "polys - Win32 Release" -# Name "polys - Win32 Debug" -# Begin Source File - -SOURCE=.\polys.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/quadric.c b/lib/glut-3.7.6/progs/redbook/quadric.c deleted file mode 100644 index 4e46c85f829a33de13441ee44534595932c16d84..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/quadric.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * quadric.c - * This program demonstrates the use of some of the gluQuadric* - * routines. Quadric objects are created with some quadric - * properties and the callback routine to handle errors. - * Note that the cylinder has no top or bottom and the circle - * has a hole in it. - */ -#include -#include -#include - -/* Win32 calling conventions. */ -#ifndef CALLBACK -#define CALLBACK -#endif - -GLuint startList; - -void CALLBACK errorCallback(GLenum errorCode) -{ - const GLubyte *estring; - - estring = gluErrorString(errorCode); - fprintf(stderr, "Quadric Error: %s\n", estring); - exit(0); -} - -void init(void) -{ - GLUquadricObj *qobj; - GLfloat mat_ambient[] = { 0.5, 0.5, 0.5, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_shininess[] = { 50.0 }; - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - GLfloat model_ambient[] = { 0.5, 0.5, 0.5, 1.0 }; - - glClearColor(0.0, 0.0, 0.0, 0.0); - - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, model_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - -/* Create 4 display lists, each with a different quadric object. - * Different drawing styles and surface normal specifications - * are demonstrated. - */ - startList = glGenLists(4); - qobj = gluNewQuadric(); - gluQuadricCallback(qobj, GLU_ERROR, - (GLvoid (CALLBACK*) ()) errorCallback); - - gluQuadricDrawStyle(qobj, GLU_FILL); /* smooth shaded */ - gluQuadricNormals(qobj, GLU_SMOOTH); - glNewList(startList, GL_COMPILE); - gluSphere(qobj, 0.75, 15, 10); - glEndList(); - - gluQuadricDrawStyle(qobj, GLU_FILL); /* flat shaded */ - gluQuadricNormals(qobj, GLU_FLAT); - glNewList(startList+1, GL_COMPILE); - gluCylinder(qobj, 0.5, 0.3, 1.0, 15, 5); - glEndList(); - - gluQuadricDrawStyle(qobj, GLU_LINE); /* all polygons wireframe */ - gluQuadricNormals(qobj, GLU_NONE); - glNewList(startList+2, GL_COMPILE); - gluDisk(qobj, 0.25, 1.0, 20, 4); - glEndList(); - - gluQuadricDrawStyle(qobj, GLU_SILHOUETTE); /* boundary only */ - gluQuadricNormals(qobj, GLU_NONE); - glNewList(startList+3, GL_COMPILE); - gluPartialDisk(qobj, 0.0, 1.0, 20, 4, 0.0, 225.0); - glEndList(); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - - glEnable(GL_LIGHTING); - glShadeModel (GL_SMOOTH); - glTranslatef(-1.0, -1.0, 0.0); - glCallList(startList); - - glShadeModel (GL_FLAT); - glTranslatef(0.0, 2.0, 0.0); - glPushMatrix(); - glRotatef(300.0, 1.0, 0.0, 0.0); - glCallList(startList+1); - glPopMatrix(); - - glDisable(GL_LIGHTING); - glColor3f(0.0, 1.0, 1.0); - glTranslatef(2.0, -2.0, 0.0); - glCallList(startList+2); - - glColor3f(1.0, 1.0, 0.0); - glTranslatef(0.0, 2.0, 0.0); - glCallList(startList+3); - - glPopMatrix(); - glFlush(); -} - -void reshape (int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-2.5, 2.5, -2.5*(GLfloat)h/(GLfloat)w, - 2.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho(-2.5*(GLfloat)w/(GLfloat)h, - 2.5*(GLfloat)w/(GLfloat)h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(500, 500); - glutInitWindowPosition(100, 100); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/quadric.dsp b/lib/glut-3.7.6/progs/redbook/quadric.dsp deleted file mode 100644 index 8a575ccd11a154385e67007c730db28d1ca438c1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/quadric.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="quadric" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=quadric - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "quadric.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "quadric.mak" CFG="quadric - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "quadric - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "quadric - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "quadric - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "quadric - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "quadric - Win32 Release" -# Name "quadric - Win32 Debug" -# Begin Source File - -SOURCE=.\quadric.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/robot.c b/lib/glut-3.7.6/progs/redbook/robot.c deleted file mode 100644 index 94e20ac71eb08b9bf96f9a50d3f3019654984c22..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/robot.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * robot.c - * This program shows how to composite modeling transformations - * to draw translated and rotated hierarchical models. - * Interaction: pressing the s and e keys (shoulder and elbow) - * alters the rotation of the robot arm. - */ -#include -#include - -static int shoulder = 0, elbow = 0; - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_FLAT); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glTranslatef (-1.0, 0.0, 0.0); - glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0); - glTranslatef (1.0, 0.0, 0.0); - glPushMatrix(); - glScalef (2.0, 0.4, 1.0); - glutWireCube (1.0); - glPopMatrix(); - - glTranslatef (1.0, 0.0, 0.0); - glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0); - glTranslatef (1.0, 0.0, 0.0); - glPushMatrix(); - glScalef (2.0, 0.4, 1.0); - glutWireCube (1.0); - glPopMatrix(); - - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluPerspective(65.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef (0.0, 0.0, -5.0); -} - -/* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) -{ - switch (key) { - case 's': - shoulder = (shoulder + 5) % 360; - glutPostRedisplay(); - break; - case 'S': - shoulder = (shoulder - 5) % 360; - glutPostRedisplay(); - break; - case 'e': - elbow = (elbow + 5) % 360; - glutPostRedisplay(); - break; - case 'E': - elbow = (elbow - 5) % 360; - glutPostRedisplay(); - break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/robot.dsp b/lib/glut-3.7.6/progs/redbook/robot.dsp deleted file mode 100644 index f12c05942feded41f6c709ecb47e2d99aeb9ae51..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/robot.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="robot" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=robot - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "robot.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "robot.mak" CFG="robot - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "robot - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "robot - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "robot - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "robot - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "robot - Win32 Release" -# Name "robot - Win32 Debug" -# Begin Source File - -SOURCE=.\robot.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/sccolorlight.c b/lib/glut-3.7.6/progs/redbook/sccolorlight.c deleted file mode 100644 index 191f26604375dd8e980a54c2ae201f2d9c7741b4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/sccolorlight.c +++ /dev/null @@ -1,127 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * sccolorlight.c - * This program demonstrates the use of a colored - * (magenta, in this example) light source. Objects - * are drawn using a grey material characteristic. - * A single light source illuminates the objects. - */ -#include -#include - -/* Initialize material property and light source. - */ -void myinit(void) -{ - GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 0.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 0.0, 1.0, 1.0 }; -/* light_position is NOT default value */ - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix (); - glRotatef (20.0, 1.0, 0.0, 0.0); - - glPushMatrix (); - glTranslatef (-0.75, 0.5, 0.0); - glRotatef (90.0, 1.0, 0.0, 0.0); - glutSolidTorus (0.275, 0.85, 20, 20); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (-0.75, -0.5, 0.0); - glRotatef (270.0, 1.0, 0.0, 0.0); - glutSolidCone (1.0, 2.0, 20, 20); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.75, 0.0, -1.0); - glutSolidSphere (1.0, 20, 20); - glPopMatrix (); - - glPopMatrix (); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-2.5, 2.5, -2.5*(GLfloat)h/(GLfloat)w, - 2.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-2.5*(GLfloat)w/(GLfloat)h, - 2.5*(GLfloat)w/(GLfloat)h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/sccolorlight.dsp b/lib/glut-3.7.6/progs/redbook/sccolorlight.dsp deleted file mode 100644 index 08e02b182ac2a239093339ae5cbd9c918b48f5ca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/sccolorlight.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sccolorlight" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sccolorlight - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sccolorlight.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sccolorlight.mak" CFG="sccolorlight - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sccolorlight - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sccolorlight - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sccolorlight - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sccolorlight - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sccolorlight - Win32 Release" -# Name "sccolorlight - Win32 Debug" -# Begin Source File - -SOURCE=.\sccolorlight.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/scene.c b/lib/glut-3.7.6/progs/redbook/scene.c deleted file mode 100644 index 428e8bd7a18140e5ee6663fbba9d859882df1beb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/scene.c +++ /dev/null @@ -1,127 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * scene.c - * This program demonstrates the use of the GL lighting model. - * Objects are drawn using a grey material characteristic. - * A single light source illuminates the objects. - */ -#include -#include - -/* Initialize material property and light source. - */ -void myinit (void) -{ - GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -/* light_position is NOT default value */ - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - glLightfv (GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv (GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv (GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv (GL_LIGHT0, GL_POSITION, light_position); - - glEnable (GL_LIGHTING); - glEnable (GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); -} - -void display (void) -{ - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix (); - glRotatef (20.0, 1.0, 0.0, 0.0); - - glPushMatrix (); - glTranslatef (-0.75, 0.5, 0.0); - glRotatef (90.0, 1.0, 0.0, 0.0); - glutSolidTorus (0.275, 0.85, 15, 15); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (-0.75, -0.5, 0.0); - glRotatef (270.0, 1.0, 0.0, 0.0); - glutSolidCone (1.0, 2.0, 15, 15); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.75, 0.0, -1.0); - glutSolidSphere (1.0, 15, 15); - glPopMatrix (); - - glPopMatrix (); - glFlush (); -} - -void myReshape(int w, int h) -{ - glViewport (0, 0, w, h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - if (w <= h) - glOrtho (-2.5, 2.5, -2.5*(GLfloat)h/(GLfloat)w, - 2.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-2.5*(GLfloat)w/(GLfloat)h, - 2.5*(GLfloat)w/(GLfloat)h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode (GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - myinit (); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/scene.dsp b/lib/glut-3.7.6/progs/redbook/scene.dsp deleted file mode 100644 index 7f3d9b096f06df3665fc6c170576d28ed6469b8a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/scene.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="scene" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=scene - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "scene.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "scene.mak" CFG="scene - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "scene - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "scene - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "scene - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "scene - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "scene - Win32 Release" -# Name "scene - Win32 Debug" -# Begin Source File - -SOURCE=.\scene.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/scenebamb.c b/lib/glut-3.7.6/progs/redbook/scenebamb.c deleted file mode 100644 index a3449b5809623e8392ee676736cd1cb22585140c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/scenebamb.c +++ /dev/null @@ -1,126 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * scenebamb.c - * This program demonstrates use of a blue ambient light - * source. - */ -#include -#include - -/* Initialize light source and lighting. - */ -void myinit(void) -{ - GLfloat light_ambient[] = { 0.0, 0.0, 1.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -/* light_position is NOT default value */ - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix (); - glRotatef (20.0, 1.0, 0.0, 0.0); - - glPushMatrix (); - glTranslatef (-0.75, 0.5, 0.0); - glRotatef (90.0, 1.0, 0.0, 0.0); - glutSolidTorus (0.275, 0.85, 15, 15); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (-0.75, -0.5, 0.0); - glRotatef (270.0, 1.0, 0.0, 0.0); - glutSolidCone (1.0, 2.0, 15, 15); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.75, 0.0, -1.0); - glutSolidSphere (1.0, 15, 15); - glPopMatrix (); - - glPopMatrix (); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-2.5, 2.5, -2.5*(GLfloat)h/(GLfloat)w, - 2.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-2.5*(GLfloat)w/(GLfloat)h, - 2.5*(GLfloat)w/(GLfloat)h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/scenebamb.dsp b/lib/glut-3.7.6/progs/redbook/scenebamb.dsp deleted file mode 100644 index 89c40ad429879654d2ea7daff0c4e3f944efdab3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/scenebamb.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="scenebamb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=scenebamb - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "scenebamb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "scenebamb.mak" CFG="scenebamb - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "scenebamb - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "scenebamb - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "scenebamb - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "scenebamb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "scenebamb - Win32 Release" -# Name "scenebamb - Win32 Debug" -# Begin Source File - -SOURCE=.\scenebamb.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/sceneflat.c b/lib/glut-3.7.6/progs/redbook/sceneflat.c deleted file mode 100644 index 5ab2037e4c66d7bff909c702aa243d97c50d49c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/sceneflat.c +++ /dev/null @@ -1,126 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * sceneflat.c - * This program draws lighted objects with flat shading. - */ -#include -#include - -/* Initialize light source and shading model (GL_FLAT). - */ -void myinit(void) -{ - GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 }; -/* light_position is NOT default value */ - GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glShadeModel (GL_FLAT); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix (); - glRotatef (20.0, 1.0, 0.0, 0.0); - - glPushMatrix (); - glTranslatef (-0.75, 0.5, 0.0); - glRotatef (90.0, 1.0, 0.0, 0.0); - glutSolidTorus (0.275, 0.85, 15, 15); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (-0.75, -0.5, 0.0); - glRotatef (270.0, 1.0, 0.0, 0.0); - glutSolidCone (1.0, 2.0, 15, 15); - glPopMatrix (); - - glPushMatrix (); - glTranslatef (0.75, 0.0, -1.0); - glutSolidSphere (1.0, 15, 15); - glPopMatrix (); - - glPopMatrix (); - glFlush(); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-2.5, 2.5, -2.5*(GLfloat)h/(GLfloat)w, - 2.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); - else - glOrtho (-2.5*(GLfloat)w/(GLfloat)h, - 2.5*(GLfloat)w/(GLfloat)h, -2.5, 2.5, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/sceneflat.dsp b/lib/glut-3.7.6/progs/redbook/sceneflat.dsp deleted file mode 100644 index 02ab5653e10accb9f1f5c4e622603a55c2572b19..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/sceneflat.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sceneflat" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sceneflat - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sceneflat.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sceneflat.mak" CFG="sceneflat - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sceneflat - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sceneflat - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sceneflat - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sceneflat - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sceneflat - Win32 Release" -# Name "sceneflat - Win32 Debug" -# Begin Source File - -SOURCE=.\sceneflat.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/select.c b/lib/glut-3.7.6/progs/redbook/select.c deleted file mode 100644 index 89abda07bdb980fbb102f235cf8396eded297df8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/select.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * select.c - * This is an illustration of the selection mode and - * name stack, which detects whether objects which collide - * with a viewing volume. First, four triangles and a - * rectangular box representing a viewing volume are drawn - * (drawScene routine). The green triangle and yellow - * triangles appear to lie within the viewing volume, but - * the red triangle appears to lie outside it. Then the - * selection mode is entered (selectObjects routine). - * Drawing to the screen ceases. To see if any collisions - * occur, the four triangles are called. In this example, - * the green triangle causes one hit with the name 1, and - * the yellow triangles cause one hit with the name 3. - */ -#include -#include -#include - -/* draw a triangle with vertices at (x1, y1), (x2, y2) - * and (x3, y3) at z units away from the origin. - */ -void drawTriangle (GLfloat x1, GLfloat y1, GLfloat x2, - GLfloat y2, GLfloat x3, GLfloat y3, GLfloat z) -{ - glBegin (GL_TRIANGLES); - glVertex3f (x1, y1, z); - glVertex3f (x2, y2, z); - glVertex3f (x3, y3, z); - glEnd (); -} - -/* draw a rectangular box with these outer x, y, and z values */ -void drawViewVolume (GLfloat x1, GLfloat x2, GLfloat y1, - GLfloat y2, GLfloat z1, GLfloat z2) -{ - glColor3f (1.0, 1.0, 1.0); - glBegin (GL_LINE_LOOP); - glVertex3f (x1, y1, -z1); - glVertex3f (x2, y1, -z1); - glVertex3f (x2, y2, -z1); - glVertex3f (x1, y2, -z1); - glEnd (); - - glBegin (GL_LINE_LOOP); - glVertex3f (x1, y1, -z2); - glVertex3f (x2, y1, -z2); - glVertex3f (x2, y2, -z2); - glVertex3f (x1, y2, -z2); - glEnd (); - - glBegin (GL_LINES); /* 4 lines */ - glVertex3f (x1, y1, -z1); - glVertex3f (x1, y1, -z2); - glVertex3f (x1, y2, -z1); - glVertex3f (x1, y2, -z2); - glVertex3f (x2, y1, -z1); - glVertex3f (x2, y1, -z2); - glVertex3f (x2, y2, -z1); - glVertex3f (x2, y2, -z2); - glEnd (); -} - -/* drawScene draws 4 triangles and a wire frame - * which represents the viewing volume. - */ -void drawScene (void) -{ - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluPerspective (40.0, 4.0/3.0, 1.0, 100.0); - - glMatrixMode (GL_MODELVIEW); - glLoadIdentity (); - gluLookAt (7.5, 7.5, 12.5, 2.5, 2.5, -5.0, 0.0, 1.0, 0.0); - glColor3f (0.0, 1.0, 0.0); /* green triangle */ - drawTriangle (2.0, 2.0, 3.0, 2.0, 2.5, 3.0, -5.0); - glColor3f (1.0, 0.0, 0.0); /* red triangle */ - drawTriangle (2.0, 7.0, 3.0, 7.0, 2.5, 8.0, -5.0); - glColor3f (1.0, 1.0, 0.0); /* yellow triangles */ - drawTriangle (2.0, 2.0, 3.0, 2.0, 2.5, 3.0, 0.0); - drawTriangle (2.0, 2.0, 3.0, 2.0, 2.5, 3.0, -10.0); - drawViewVolume (0.0, 5.0, 0.0, 5.0, 0.0, 10.0); -} - -/* processHits prints out the contents of the selection array - */ -void processHits (GLint hits, GLuint buffer[]) -{ - int i, j, names; - GLuint *ptr; - - printf ("hits = %d\n", hits); - ptr = (GLuint *) buffer; - for (i = 0; i < hits; i++) { /* for each hit */ - names = (int) *ptr; - printf (" number of names for hit = %d\n", names); ptr++; - printf(" z1 is %g;", (float) *ptr/0x7fffffff); ptr++; - printf(" z2 is %g\n", (float) *ptr/0x7fffffff); ptr++; - printf (" the name is "); - for (j = 0; j < names; j++) { /* for each name */ - printf ("%d ", *ptr); ptr++; - } - printf ("\n"); - } -} - -/* selectObjects "draws" the triangles in selection mode, - * assigning names for the triangles. Note that the third - * and fourth triangles share one name, so that if either - * or both triangles intersects the viewing/clipping volume, - * only one hit will be registered. - */ -#define BUFSIZE 512 - -void selectObjects(void) -{ - GLuint selectBuf[BUFSIZE]; - GLint hits; - - glSelectBuffer (BUFSIZE, selectBuf); - (void) glRenderMode (GL_SELECT); - - glInitNames(); - glPushName(0); - - glPushMatrix (); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - glOrtho (0.0, 5.0, 0.0, 5.0, 0.0, 10.0); - glMatrixMode (GL_MODELVIEW); - glLoadIdentity (); - glLoadName(1); - drawTriangle (2.0, 2.0, 3.0, 2.0, 2.5, 3.0, -5.0); - glLoadName(2); - drawTriangle (2.0, 7.0, 3.0, 7.0, 2.5, 8.0, -5.0); - glLoadName(3); - drawTriangle (2.0, 2.0, 3.0, 2.0, 2.5, 3.0, 0.0); - drawTriangle (2.0, 2.0, 3.0, 2.0, 2.5, 3.0, -10.0); - glPopMatrix (); - glFlush (); - - hits = glRenderMode (GL_RENDER); - processHits (hits, selectBuf); -} - -void init (void) -{ - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_FLAT); -} - -void display(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - drawScene (); - selectObjects (); - glFlush(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* Main Loop */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (200, 200); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init(); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/select.dsp b/lib/glut-3.7.6/progs/redbook/select.dsp deleted file mode 100644 index 8daf2991e7c42c0b80d6ea3ef46cfddae1c9df18..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/select.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="select" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=select - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "select.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "select.mak" CFG="select - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "select - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "select - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "select - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "select - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "select - Win32 Release" -# Name "select - Win32 Debug" -# Begin Source File - -SOURCE=.\select.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/smooth.c b/lib/glut-3.7.6/progs/redbook/smooth.c deleted file mode 100644 index 9d22fc90251bb68d78cf81ea59f1e5f10cf52e27..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/smooth.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * smooth.c - * This program demonstrates smooth shading. - * A smooth shaded polygon is drawn in a 2-D projection. - */ -#include -#include - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); -} - -void triangle(void) -{ - glBegin (GL_TRIANGLES); - glColor3f (1.0, 0.0, 0.0); - glVertex2f (5.0, 5.0); - glColor3f (0.0, 1.0, 0.0); - glVertex2f (25.0, 5.0); - glColor3f (0.0, 0.0, 1.0); - glVertex2f (5.0, 25.0); - glEnd(); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT); - triangle (); - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - if (w <= h) - gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w); - else - gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0); - glMatrixMode(GL_MODELVIEW); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/smooth.dsp b/lib/glut-3.7.6/progs/redbook/smooth.dsp deleted file mode 100644 index a5800c677a70b3c84835467b76d4c2936ce55b73..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/smooth.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="smooth" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=smooth - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "smooth.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "smooth.mak" CFG="smooth - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "smooth - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "smooth - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "smooth - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "smooth - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "smooth - Win32 Release" -# Name "smooth - Win32 Debug" -# Begin Source File - -SOURCE=.\smooth.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/stencil.c b/lib/glut-3.7.6/progs/redbook/stencil.c deleted file mode 100644 index 86ab6bad11b370a4dd0bb5a41180a5d0c3c106bd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/stencil.c +++ /dev/null @@ -1,177 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* stencil.c - * This program draws two rotated tori in a window. - * A diamond in the center of the window masks out part - * of the scene. Within this mask, a different model - * (a sphere) is drawn in a different color. - */ -#include -#include - -#define YELLOWMAT 1 -#define BLUEMAT 2 - -void myinit (void) -{ - GLfloat yellow_diffuse[] = { 0.7, 0.7, 0.0, 1.0 }; - GLfloat yellow_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - - GLfloat blue_diffuse[] = { 0.1, 0.1, 0.7, 1.0 }; - GLfloat blue_specular[] = { 0.1, 1.0, 1.0, 1.0 }; - - GLfloat position_one[] = { 1.0, 1.0, 1.0, 0.0 }; - - glNewList(YELLOWMAT, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, yellow_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, yellow_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 64.0); - glEndList(); - - glNewList(BLUEMAT, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_DIFFUSE, blue_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, blue_specular); - glMaterialf(GL_FRONT, GL_SHININESS, 45.0); - glEndList(); - - glLightfv(GL_LIGHT0, GL_POSITION, position_one); - - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); - - glClearStencil(0x0); - glEnable(GL_STENCIL_TEST); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -5.0); -} - -/* Draw a sphere in a diamond-shaped section in the - * middle of a window with 2 tori. - */ -void display(void) -{ - glClear(GL_STENCIL_BUFFER_BIT); - -/* create a diamond shaped stencil area */ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(-3.0, 3.0, -3.0, 3.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - /* Disable color buffer update. */ - glColorMask(0, 0, 0, 0); - glDisable(GL_DEPTH_TEST); - glStencilFunc (GL_ALWAYS, 0x1, 0x1); - glStencilOp (GL_REPLACE, GL_REPLACE, GL_REPLACE); - - glBegin(GL_QUADS); - glVertex3f (-1.0, 0.0, 0.0); - glVertex3f (0.0, 1.0, 0.0); - glVertex3f (1.0, 0.0, 0.0); - glVertex3f (0.0, -1.0, 0.0); - glEnd(); - - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - /* Enable color buffer update. */ - glColorMask(1, 1, 1, 1); - glEnable(GL_DEPTH_TEST); - glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - -/* draw blue sphere where the stencil is 1 */ - glStencilFunc (GL_EQUAL, 0x1, 0x1); - glCallList (BLUEMAT); - glutSolidSphere (0.5, 15, 15); - -/* draw the tori where the stencil is not 1 */ - glStencilFunc (GL_NOTEQUAL, 0x1, 0x1); - glPushMatrix(); - glRotatef (45.0, 0.0, 0.0, 1.0); - glRotatef (45.0, 0.0, 1.0, 0.0); - glCallList (YELLOWMAT); - glutSolidTorus (0.275, 0.85, 15, 15); - glPushMatrix(); - glRotatef (90.0, 1.0, 0.0, 0.0); - glutSolidTorus (0.275, 0.85, 15, 15); - glPopMatrix(); - glPopMatrix(); - - glFlush(); -} - -/* Whenever the window is reshaped, redefine the - * coordinate system and redraw the stencil area. - */ -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0, (GLfloat) w/(GLfloat) h, 3.0, 7.0); - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL); - glutInitWindowSize (400, 400); - glutCreateWindow (argv[0]); - myinit (); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/stencil.dsp b/lib/glut-3.7.6/progs/redbook/stencil.dsp deleted file mode 100644 index 2e64ab662622ce391ea124ec71510daf42a2c2bd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/stencil.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="stencil" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=stencil - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "stencil.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "stencil.mak" CFG="stencil - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "stencil - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "stencil - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "stencil - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "stencil - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "stencil - Win32 Release" -# Name "stencil - Win32 Debug" -# Begin Source File - -SOURCE=.\stencil.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/stroke.c b/lib/glut-3.7.6/progs/redbook/stroke.c deleted file mode 100644 index d8c75c89fec223e5f4a8cf3394588a084dd083c6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/stroke.c +++ /dev/null @@ -1,181 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * stroke.c - * This program demonstrates some characters of a - * stroke (vector) font. The characters are represented - * by display lists, which are given numbers which - * correspond to the ASCII values of the characters. - * Use of glCallLists() is demonstrated. - */ -#include -#include -#include - -#define PT 1 -#define STROKE 2 -#define END 3 - -typedef struct charpoint { - GLfloat x, y; - int type; -} CP; - -CP Adata[] = { - { 0, 0, PT}, {0, 9, PT}, {1, 10, PT}, {4, 10, PT}, - {5, 9, PT}, {5, 0, STROKE}, {0, 5, PT}, {5, 5, END} -}; - -CP Edata[] = { - {5, 0, PT}, {0, 0, PT}, {0, 10, PT}, {5, 10, STROKE}, - {0, 5, PT}, {4, 5, END} -}; - -CP Pdata[] = { - {0, 0, PT}, {0, 10, PT}, {4, 10, PT}, {5, 9, PT}, {5, 6, PT}, - {4, 5, PT}, {0, 5, END} -}; - -CP Rdata[] = { - {0, 0, PT}, {0, 10, PT}, {4, 10, PT}, {5, 9, PT}, {5, 6, PT}, - {4, 5, PT}, {0, 5, STROKE}, {3, 5, PT}, {5, 0, END} -}; - -CP Sdata[] = { - {0, 1, PT}, {1, 0, PT}, {4, 0, PT}, {5, 1, PT}, {5, 4, PT}, - {4, 5, PT}, {1, 5, PT}, {0, 6, PT}, {0, 9, PT}, {1, 10, PT}, - {4, 10, PT}, {5, 9, END} -}; - -/* drawLetter() interprets the instructions from the array - * for that letter and renders the letter with line segments. - */ -void drawLetter(CP *l) -{ - glBegin(GL_LINE_STRIP); - for (;;) { - switch (l->type) { - case PT: - glVertex2fv(&l->x); - break; - case STROKE: - glVertex2fv(&l->x); - glEnd(); - glBegin(GL_LINE_STRIP); - break; - case END: - glVertex2fv(&l->x); - glEnd(); - glTranslatef(8.0, 0.0, 0.0); - return; - } - l++; - } -} - -/* Create a display list for each of 6 characters */ -void myinit (void) -{ - GLuint base; - - glShadeModel (GL_FLAT); - - base = glGenLists (128); - glListBase(base); - glNewList(base+'A', GL_COMPILE); drawLetter(Adata); glEndList(); - glNewList(base+'E', GL_COMPILE); drawLetter(Edata); glEndList(); - glNewList(base+'P', GL_COMPILE); drawLetter(Pdata); glEndList(); - glNewList(base+'R', GL_COMPILE); drawLetter(Rdata); glEndList(); - glNewList(base+'S', GL_COMPILE); drawLetter(Sdata); glEndList(); - glNewList(base+' ', GL_COMPILE); glTranslatef(8.0, 0.0, 0.0); glEndList(); -} - -char *test1 = "A SPARE SERAPE APPEARS AS"; -char *test2 = "APES PREPARE RARE PEPPERS"; - -void printStrokedString(char *s) -{ - GLsizei len = (GLsizei) strlen(s); - glCallLists(len, GL_BYTE, (GLbyte *)s); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1.0, 1.0, 1.0); - glPushMatrix(); - glScalef(2.0, 2.0, 2.0); - glTranslatef(10.0, 30.0, 0.0); - printStrokedString(test1); - glPopMatrix(); - glPushMatrix(); - glScalef(2.0, 2.0, 2.0); - glTranslatef(10.0, 13.0, 0.0); - printStrokedString(test2); - glPopMatrix(); - glFlush(); -} - -static void reshape(GLsizei w, GLsizei h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (440, 120); - glutCreateWindow (argv[0]); - myinit (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/stroke.dsp b/lib/glut-3.7.6/progs/redbook/stroke.dsp deleted file mode 100644 index 97c10adae6fffb225ef0ad6e998aa13dc6882436..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/stroke.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="stroke" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=stroke - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "stroke.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "stroke.mak" CFG="stroke - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "stroke - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "stroke - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "stroke - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "stroke - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "stroke - Win32 Release" -# Name "stroke - Win32 Debug" -# Begin Source File - -SOURCE=.\stroke.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/surface.c b/lib/glut-3.7.6/progs/redbook/surface.c deleted file mode 100644 index fb2691eb7c5be4eb95184bab0718ed035ca76ad9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/surface.c +++ /dev/null @@ -1,217 +0,0 @@ -/* aux2glut conversion Copyright (c) Mark J. Kilgard, 1994, 1995 */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/** - * surface.c - * This program draws a NURBS surface in the shape of a - * symmetrical hill. - */ -#include - -GLfloat ctlpoints[4][4][3]; -int showPoints = 0; - -GLUnurbsObj *theNurb; - -/* - * Initializes the control points of the surface to a small hill. - * The control points range from -3 to +3 in x, y, and z - */ -void init_surface(void) -{ - int u, v; - for (u = 0; u < 4; u++) { - for (v = 0; v < 4; v++) { - ctlpoints[u][v][0] = 2.0*((GLfloat)u - 1.5); - ctlpoints[u][v][1] = 2.0*((GLfloat)v - 1.5); - - if ( (u == 1 || u == 2) && (v == 1 || v == 2)) - ctlpoints[u][v][2] = 7.0; - else - ctlpoints[u][v][2] = -3.0; - } - } -} - -/* Initialize material property and depth buffer. - */ -void myinit(void) -{ - GLfloat mat_diffuse[] = { 0.7, 0.7, 0.7, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_shininess[] = { 100.0 }; - - glClearColor (0.0, 0.0, 0.0, 1.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - - init_surface(); - - theNurb = gluNewNurbsRenderer(); - gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0); - gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef (0.0, 0.0, -5.0); -} - -void display(void) -{ - GLfloat knots[8] = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0}; - int i, j; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(330.0, 1.,0.,0.); - glScalef (0.25, 0.25, 0.25); - - gluBeginSurface(theNurb); - gluNurbsSurface(theNurb, - 8, knots, - 8, knots, - 4 * 3, - 3, - &ctlpoints[0][0][0], - 4, 4, - GL_MAP2_VERTEX_3); - gluEndSurface(theNurb); - - if(showPoints) { - glPointSize(5.0); - glDisable(GL_LIGHTING); - glColor3f(1.0, 1.0, 0.0); - glBegin(GL_POINTS); - for(i=0;i<4;i++) { - for(j=0;j<4;j++) { - glVertex3f(ctlpoints[i][j][0], ctlpoints[i][j][1], ctlpoints[i][j][2]); - } - } - glEnd(); - glEnable(GL_LIGHTING); - } - - glPopMatrix(); - glutSwapBuffers(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective (45.0, (GLdouble)w/(GLdouble)h, 3.0, 8.0); - - glMatrixMode(GL_MODELVIEW); -} - -void -menu(int value) -{ - switch (value) { - case 0: - case 1: - showPoints = value; - break; - case 2: - gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL); - break; - case 3: - gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_OUTLINE_POLYGON); - break; - } - glutPostRedisplay(); -} - -int down = 0, lastx; - -/* ARGSUSED1 */ -void -motion(int x, int y) -{ - if (down) { - glRotatef(lastx - x, 0, 1, 0); - lastx = x; - glutPostRedisplay(); - } -} - -/* ARGSUSED3 */ -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - lastx = x; - down = 1; - } else { - down = 0; - } - } -} - -/* Main Loop */ -int -main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutCreateMenu(menu); - glutAddMenuEntry("Show control points", 1); - glutAddMenuEntry("Hide control points", 0); - glutAddMenuEntry("Solid", 2); - glutAddMenuEntry("Wireframe", 3); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/surface.dsp b/lib/glut-3.7.6/progs/redbook/surface.dsp deleted file mode 100644 index 5b5eb00997892564aaa5bba98c51663fc00298ee..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/surface.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="surface" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=surface - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "surface.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "surface.mak" CFG="surface - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "surface - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "surface - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "surface - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "surface - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "surface - Win32 Release" -# Name "surface - Win32 Debug" -# Begin Source File - -SOURCE=.\surface.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/teaambient.c b/lib/glut-3.7.6/progs/redbook/teaambient.c deleted file mode 100644 index 62c091c70a614d17972324bdc1b8fab2b375eedd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/teaambient.c +++ /dev/null @@ -1,148 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/** - * teaambient.c - * This program renders three lighted, shaded teapots, with - * different ambient values. - */ -#include -#include - -/* Initialize light source and lighting model. - */ -void -myinit(void) -{ - GLfloat light_ambient[] = - {0.0, 0.0, 0.0, 1.0}; - GLfloat light_diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat light_specular[] = - {1.0, 1.0, 1.0, 1.0}; -/* light_position is NOT default value */ - GLfloat light_position[] = - {1.0, 0.0, 0.0, 0.0}; - GLfloat global_ambient[] = - {0.75, 0.75, 0.75, 1.0}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient); - - glFrontFace(GL_CW); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); -} - -void -display(void) -{ - GLfloat low_ambient[] = - {0.1, 0.1, 0.1, 1.0}; - GLfloat more_ambient[] = - {0.4, 0.4, 0.4, 1.0}; - GLfloat most_ambient[] = - {1.0, 1.0, 1.0, 1.0}; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* material has small ambient reflection */ - glMaterialfv(GL_FRONT, GL_AMBIENT, low_ambient); - glMaterialf(GL_FRONT, GL_SHININESS, 40.0); - glPushMatrix(); - glTranslatef(0.0, 2.0, 0.0); - glutSolidTeapot(1.0); - glPopMatrix(); - - /* material has moderate ambient reflection */ - glMaterialfv(GL_FRONT, GL_AMBIENT, more_ambient); - glPushMatrix(); - glTranslatef(0.0, 0.0, 0.0); - glutSolidTeapot(1.0); - glPopMatrix(); - - /* material has large ambient reflection */ - glMaterialfv(GL_FRONT, GL_AMBIENT, most_ambient); - glPushMatrix(); - glTranslatef(0.0, -2.0, 0.0); - glutSolidTeapot(1.0); - glPopMatrix(); - glFlush(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-4.0, 4.0, -4.0 * (GLfloat) h / (GLfloat) w, - 4.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); - else - glOrtho(-4.0 * (GLfloat) w / (GLfloat) h, - 4.0 * (GLfloat) w / (GLfloat) h, -4.0, 4.0, -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(500, 500); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/teaambient.dsp b/lib/glut-3.7.6/progs/redbook/teaambient.dsp deleted file mode 100644 index d5a0f3c135f08a3127b91a77164c067e9876e8fe..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/teaambient.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="teaambient" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=teaambient - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "teaambient.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "teaambient.mak" CFG="teaambient - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "teaambient - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "teaambient - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "teaambient - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "teaambient - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "teaambient - Win32 Release" -# Name "teaambient - Win32 Debug" -# Begin Source File - -SOURCE=.\teaambient.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/teapots.c b/lib/glut-3.7.6/progs/redbook/teapots.c deleted file mode 100644 index 2431cae73505ab0c2dddbc808b54d41680427b0e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/teapots.c +++ /dev/null @@ -1,206 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/** - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/** - * teapots.c - * This program demonstrates lots of material properties. - * A single light source illuminates the objects. - */ -#include -#include - -/* - * Initialize depth buffer, projection matrix, light source, and lighting - * model. Do not specify a material property here. - */ -void -myinit(void) -{ - GLfloat ambient[] = - {0.0, 0.0, 0.0, 1.0}; - GLfloat diffuse[] = - {1.0, 1.0, 1.0, 1.0}; - GLfloat position[] = - {0.0, 3.0, 3.0, 0.0}; - - GLfloat lmodel_ambient[] = - {0.2, 0.2, 0.2, 1.0}; - GLfloat local_view[] = - {0.0}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); - - glFrontFace(GL_CW); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); -} - -/* - * Move object into position. Use 3rd through 12th parameters to specify the - * material property. Draw a teapot. - */ -void -renderTeapot(GLfloat x, GLfloat y, - GLfloat ambr, GLfloat ambg, GLfloat ambb, - GLfloat difr, GLfloat difg, GLfloat difb, - GLfloat specr, GLfloat specg, GLfloat specb, GLfloat shine) -{ - float mat[4]; - - glPushMatrix(); - glTranslatef(x, y, 0.0); - mat[0] = ambr; - mat[1] = ambg; - mat[2] = ambb; - mat[3] = 1.0; - glMaterialfv(GL_FRONT, GL_AMBIENT, mat); - mat[0] = difr; - mat[1] = difg; - mat[2] = difb; - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat); - mat[0] = specr; - mat[1] = specg; - mat[2] = specb; - glMaterialfv(GL_FRONT, GL_SPECULAR, mat); - glMaterialf(GL_FRONT, GL_SHININESS, shine * 128.0); - glutSolidTeapot(1.0); - glPopMatrix(); -} - -/** - * First column: emerald, jade, obsidian, pearl, ruby, turquoise - * 2nd column: brass, bronze, chrome, copper, gold, silver - * 3rd column: black, cyan, green, red, white, yellow plastic - * 4th column: black, cyan, green, red, white, yellow rubber - */ -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - renderTeapot(2.0, 17.0, 0.0215, 0.1745, 0.0215, - 0.07568, 0.61424, 0.07568, 0.633, 0.727811, 0.633, 0.6); - renderTeapot(2.0, 14.0, 0.135, 0.2225, 0.1575, - 0.54, 0.89, 0.63, 0.316228, 0.316228, 0.316228, 0.1); - renderTeapot(2.0, 11.0, 0.05375, 0.05, 0.06625, - 0.18275, 0.17, 0.22525, 0.332741, 0.328634, 0.346435, 0.3); - renderTeapot(2.0, 8.0, 0.25, 0.20725, 0.20725, - 1, 0.829, 0.829, 0.296648, 0.296648, 0.296648, 0.088); - renderTeapot(2.0, 5.0, 0.1745, 0.01175, 0.01175, - 0.61424, 0.04136, 0.04136, 0.727811, 0.626959, 0.626959, 0.6); - renderTeapot(2.0, 2.0, 0.1, 0.18725, 0.1745, - 0.396, 0.74151, 0.69102, 0.297254, 0.30829, 0.306678, 0.1); - renderTeapot(6.0, 17.0, 0.329412, 0.223529, 0.027451, - 0.780392, 0.568627, 0.113725, 0.992157, 0.941176, 0.807843, - 0.21794872); - renderTeapot(6.0, 14.0, 0.2125, 0.1275, 0.054, - 0.714, 0.4284, 0.18144, 0.393548, 0.271906, 0.166721, 0.2); - renderTeapot(6.0, 11.0, 0.25, 0.25, 0.25, - 0.4, 0.4, 0.4, 0.774597, 0.774597, 0.774597, 0.6); - renderTeapot(6.0, 8.0, 0.19125, 0.0735, 0.0225, - 0.7038, 0.27048, 0.0828, 0.256777, 0.137622, 0.086014, 0.1); - renderTeapot(6.0, 5.0, 0.24725, 0.1995, 0.0745, - 0.75164, 0.60648, 0.22648, 0.628281, 0.555802, 0.366065, 0.4); - renderTeapot(6.0, 2.0, 0.19225, 0.19225, 0.19225, - 0.50754, 0.50754, 0.50754, 0.508273, 0.508273, 0.508273, 0.4); - renderTeapot(10.0, 17.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.01, - 0.50, 0.50, 0.50, .25); - renderTeapot(10.0, 14.0, 0.0, 0.1, 0.06, 0.0, 0.50980392, 0.50980392, - 0.50196078, 0.50196078, 0.50196078, .25); - renderTeapot(10.0, 11.0, 0.0, 0.0, 0.0, - 0.1, 0.35, 0.1, 0.45, 0.55, 0.45, .25); - renderTeapot(10.0, 8.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, - 0.7, 0.6, 0.6, .25); - renderTeapot(10.0, 5.0, 0.0, 0.0, 0.0, 0.55, 0.55, 0.55, - 0.70, 0.70, 0.70, .25); - renderTeapot(10.0, 2.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.0, - 0.60, 0.60, 0.50, .25); - renderTeapot(14.0, 17.0, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, - 0.4, 0.4, 0.4, .078125); - renderTeapot(14.0, 14.0, 0.0, 0.05, 0.05, 0.4, 0.5, 0.5, - 0.04, 0.7, 0.7, .078125); - renderTeapot(14.0, 11.0, 0.0, 0.05, 0.0, 0.4, 0.5, 0.4, - 0.04, 0.7, 0.04, .078125); - renderTeapot(14.0, 8.0, 0.05, 0.0, 0.0, 0.5, 0.4, 0.4, - 0.7, 0.04, 0.04, .078125); - renderTeapot(14.0, 5.0, 0.05, 0.05, 0.05, 0.5, 0.5, 0.5, - 0.7, 0.7, 0.7, .078125); - renderTeapot(14.0, 2.0, 0.05, 0.05, 0.0, 0.5, 0.5, 0.4, - 0.7, 0.7, 0.04, .078125); - glFlush(); -} - -void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(0.0, 16.0, 0.0, 16.0 * (GLfloat) h / (GLfloat) w, - -10.0, 10.0); - else - glOrtho(0.0, 16.0 * (GLfloat) w / (GLfloat) h, 0.0, 16.0, - -10.0, 10.0); - glMatrixMode(GL_MODELVIEW); -} - -/* - * Main Loop Open window with initial window size, title bar, RGBA display - * mode, and handle input events. - */ -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow(argv[0]); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/teapots.dsp b/lib/glut-3.7.6/progs/redbook/teapots.dsp deleted file mode 100644 index afe6c6281a63ce5b41abc77e55eb2babc481005f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/teapots.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="teapots" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=teapots - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "teapots.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "teapots.mak" CFG="teapots - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "teapots - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "teapots - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "teapots - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "teapots - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "teapots - Win32 Release" -# Name "teapots - Win32 Debug" -# Begin Source File - -SOURCE=.\teapots.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/tess.c b/lib/glut-3.7.6/progs/redbook/tess.c deleted file mode 100644 index 5613346db370aadee6a19a46202071fd6d020b89..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/tess.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * tess.c - * This program demonstrates polygon tessellation. - * Two tesselated objects are drawn. The first is a - * rectangle with a triangular hole. The second is a - * smooth shaded, self-intersecting star. - * - * Note the exterior rectangle is drawn with its vertices - * in counter-clockwise order, but its interior clockwise. - * Note the combineCallback is needed for the self-intersecting - * star. Also note that removing the TessProperty for the - * star will make the interior unshaded (WINDING_ODD). - */ -#include -#include -#include - -#ifdef GLU_VERSION_1_2 - -/* Win32 calling conventions. */ -#ifndef CALLBACK -#define CALLBACK -#endif - -GLuint startList; - -void display (void) { - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1.0, 1.0, 1.0); - glCallList(startList); - glCallList(startList + 1); - glFlush(); -} - -void CALLBACK beginCallback(GLenum which) -{ - glBegin(which); -} - -void CALLBACK errorCallback(GLenum errorCode) -{ - const GLubyte *estring; - - estring = gluErrorString(errorCode); - fprintf(stderr, "Tessellation Error: %s\n", estring); - exit(0); -} - -void CALLBACK endCallback(void) -{ - glEnd(); -} - -void CALLBACK vertexCallback(GLvoid *vertex) -{ - const GLdouble *pointer; - - pointer = (GLdouble *) vertex; - glColor3dv(pointer+3); - glVertex3dv(vertex); -} - -/* combineCallback is used to create a new vertex when edges - * intersect. coordinate location is trivial to calculate, - * but weight[4] may be used to average color, normal, or texture - * coordinate data. In this program, color is weighted. - */ -void CALLBACK combineCallback(GLdouble coords[3], - GLdouble *vertex_data[4], - GLfloat weight[4], GLdouble **dataOut ) -{ - GLdouble *vertex; - int i; - - vertex = (GLdouble *) malloc(6 * sizeof(GLdouble)); - - vertex[0] = coords[0]; - vertex[1] = coords[1]; - vertex[2] = coords[2]; - for (i = 3; i < 6; i++) - vertex[i] = weight[0] * vertex_data[0][i] - + weight[1] * vertex_data[1][i] - + weight[2] * vertex_data[2][i] - + weight[3] * vertex_data[3][i]; - *dataOut = vertex; -} - -void init (void) -{ - GLUtesselator *tobj; - GLdouble rect[4][3] = {50.0, 50.0, 0.0, - 200.0, 50.0, 0.0, - 200.0, 200.0, 0.0, - 50.0, 200.0, 0.0}; - GLdouble tri[3][3] = {75.0, 75.0, 0.0, - 125.0, 175.0, 0.0, - 175.0, 75.0, 0.0}; - GLdouble star[5][6] = {250.0, 50.0, 0.0, 1.0, 0.0, 1.0, - 325.0, 200.0, 0.0, 1.0, 1.0, 0.0, - 400.0, 50.0, 0.0, 0.0, 1.0, 1.0, - 250.0, 150.0, 0.0, 1.0, 0.0, 0.0, - 400.0, 150.0, 0.0, 0.0, 1.0, 0.0}; - - glClearColor(0.0, 0.0, 0.0, 0.0); - - startList = glGenLists(2); - - tobj = gluNewTess(); - gluTessCallback(tobj, GLU_TESS_VERTEX, - (GLvoid (CALLBACK*) ()) &glVertex3dv); - gluTessCallback(tobj, GLU_TESS_BEGIN, - (GLvoid (CALLBACK*) ()) &beginCallback); - gluTessCallback(tobj, GLU_TESS_END, - (GLvoid (CALLBACK*) ()) &endCallback); - gluTessCallback(tobj, GLU_TESS_ERROR, - (GLvoid (CALLBACK*) ()) &errorCallback); - - /* rectangle with triangular hole inside */ - glNewList(startList, GL_COMPILE); - glShadeModel(GL_FLAT); - gluTessBeginPolygon(tobj, NULL); - gluTessBeginContour(tobj); - gluTessVertex(tobj, rect[0], rect[0]); - gluTessVertex(tobj, rect[1], rect[1]); - gluTessVertex(tobj, rect[2], rect[2]); - gluTessVertex(tobj, rect[3], rect[3]); - gluTessEndContour(tobj); - gluTessBeginContour(tobj); - gluTessVertex(tobj, tri[0], tri[0]); - gluTessVertex(tobj, tri[1], tri[1]); - gluTessVertex(tobj, tri[2], tri[2]); - gluTessEndContour(tobj); - gluTessEndPolygon(tobj); - glEndList(); - - gluTessCallback(tobj, GLU_TESS_VERTEX, - (GLvoid (CALLBACK*) ()) &vertexCallback); - gluTessCallback(tobj, GLU_TESS_BEGIN, - (GLvoid (CALLBACK*) ()) &beginCallback); - gluTessCallback(tobj, GLU_TESS_END, - (GLvoid (CALLBACK*) ()) &endCallback); - gluTessCallback(tobj, GLU_TESS_ERROR, - (GLvoid (CALLBACK*) ()) &errorCallback); - gluTessCallback(tobj, GLU_TESS_COMBINE, - (GLvoid (CALLBACK*) ()) &combineCallback); - - /* smooth shaded, self-intersecting star */ - glNewList(startList + 1, GL_COMPILE); - glShadeModel(GL_SMOOTH); - gluTessProperty(tobj, GLU_TESS_WINDING_RULE, - GLU_TESS_WINDING_POSITIVE); - gluTessBeginPolygon(tobj, NULL); - gluTessBeginContour(tobj); - gluTessVertex(tobj, star[0], star[0]); - gluTessVertex(tobj, star[1], star[1]); - gluTessVertex(tobj, star[2], star[2]); - gluTessVertex(tobj, star[3], star[3]); - gluTessVertex(tobj, star[4], star[4]); - gluTessEndContour(tobj); - gluTessEndPolygon(tobj); - glEndList(); - gluDeleteTess(tobj); -} - -void reshape (int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(500, 500); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} - -#else -int main(int argc, char** argv) -{ - fprintf (stderr, "This program demonstrates the new tesselator API in GLU 1.2.\n"); - fprintf (stderr, "Your GLU library does not support this new interface, sorry.\n"); - return 0; -} -#endif diff --git a/lib/glut-3.7.6/progs/redbook/tess.dsp b/lib/glut-3.7.6/progs/redbook/tess.dsp deleted file mode 100644 index ffe9b8270aa1969bd5584d25f4fb2fed31a8f6b8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/tess.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tess" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tess - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tess.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tess.mak" CFG="tess - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tess - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tess - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tess - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tess - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tess - Win32 Release" -# Name "tess - Win32 Debug" -# Begin Source File - -SOURCE=.\tess.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/tesswind.c b/lib/glut-3.7.6/progs/redbook/tesswind.c deleted file mode 100644 index 455966a0b02619b53305542bb385fca68554b892..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/tesswind.c +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * tesswind.c - * This program demonstrates the winding rule polygon - * tessellation property. Four tessellated objects are drawn, - * each with very different contours. When the w key is pressed, - * the objects are drawn with a different winding rule. - */ -#include -#include -#include - -#ifdef GLU_VERSION_1_2 - -/* Win32 calling conventions. */ -#ifndef CALLBACK -#define CALLBACK -#endif - -GLdouble currentWinding = GLU_TESS_WINDING_ODD; -int currentShape = 0; -GLUtesselator *tobj; -GLuint list; - -/* Make four display lists, - * each with a different tessellated object. - */ -void makeNewLists (void) { - int i; - static GLdouble rects[12][3] = - {50.0, 50.0, 0.0, 300.0, 50.0, 0.0, - 300.0, 300.0, 0.0, 50.0, 300.0, 0.0, - 100.0, 100.0, 0.0, 250.0, 100.0, 0.0, - 250.0, 250.0, 0.0, 100.0, 250.0, 0.0, - 150.0, 150.0, 0.0, 200.0, 150.0, 0.0, - 200.0, 200.0, 0.0, 150.0, 200.0, 0.0}; - static GLdouble spiral[16][3] = - {400.0, 250.0, 0.0, 400.0, 50.0, 0.0, - 50.0, 50.0, 0.0, 50.0, 400.0, 0.0, - 350.0, 400.0, 0.0, 350.0, 100.0, 0.0, - 100.0, 100.0, 0.0, 100.0, 350.0, 0.0, - 300.0, 350.0, 0.0, 300.0, 150.0, 0.0, - 150.0, 150.0, 0.0, 150.0, 300.0, 0.0, - 250.0, 300.0, 0.0, 250.0, 200.0, 0.0, - 200.0, 200.0, 0.0, 200.0, 250.0, 0.0}; - static GLdouble quad1[4][3] = - {50.0, 150.0, 0.0, 350.0, 150.0, 0.0, - 350.0, 200.0, 0.0, 50.0, 200.0, 0.0}; - static GLdouble quad2[4][3] = - {100.0, 100.0, 0.0, 300.0, 100.0, 0.0, - 300.0, 350.0, 0.0, 100.0, 350.0, 0.0}; - static GLdouble tri[3][3] = - {200.0, 50.0, 0.0, 250.0, 300.0, 0.0, - 150.0, 300.0, 0.0}; - - gluTessProperty(tobj, GLU_TESS_WINDING_RULE, - currentWinding); - - glNewList(list, GL_COMPILE); - gluTessBeginPolygon(tobj, NULL); - gluTessBeginContour(tobj); - for (i = 0; i < 4; i++) - gluTessVertex(tobj, rects[i], rects[i]); - gluTessEndContour(tobj); - gluTessBeginContour(tobj); - for (i = 4; i < 8; i++) - gluTessVertex(tobj, rects[i], rects[i]); - gluTessEndContour(tobj); - gluTessBeginContour(tobj); - for (i = 8; i < 12; i++) - gluTessVertex(tobj, rects[i], rects[i]); - gluTessEndContour(tobj); - gluTessEndPolygon(tobj); - glEndList(); - - glNewList(list+1, GL_COMPILE); - gluTessBeginPolygon(tobj, NULL); - gluTessBeginContour(tobj); - for (i = 0; i < 4; i++) - gluTessVertex(tobj, rects[i], rects[i]); - gluTessEndContour(tobj); - gluTessBeginContour(tobj); - for (i = 7; i >= 4; i--) - gluTessVertex(tobj, rects[i], rects[i]); - gluTessEndContour(tobj); - gluTessBeginContour(tobj); - for (i = 11; i >= 8; i--) - gluTessVertex(tobj, rects[i], rects[i]); - gluTessEndContour(tobj); - gluTessEndPolygon(tobj); - glEndList(); - - glNewList(list+2, GL_COMPILE); - gluTessBeginPolygon(tobj, NULL); - gluTessBeginContour(tobj); - for (i = 0; i < 16; i++) - gluTessVertex(tobj, spiral[i], spiral[i]); - gluTessEndContour(tobj); - gluTessEndPolygon(tobj); - glEndList(); - - glNewList(list+3, GL_COMPILE); - gluTessBeginPolygon(tobj, NULL); - gluTessBeginContour(tobj); - for (i = 0; i < 4; i++) - gluTessVertex(tobj, quad1[i], quad1[i]); - gluTessEndContour(tobj); - gluTessBeginContour(tobj); - for (i = 0; i < 4; i++) - gluTessVertex(tobj, quad2[i], quad2[i]); - gluTessEndContour(tobj); - gluTessBeginContour(tobj); - for (i = 0; i < 3; i++) - gluTessVertex(tobj, tri[i], tri[i]); - gluTessEndContour(tobj); - gluTessEndPolygon(tobj); - glEndList(); -} - -void display (void) { - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1.0, 1.0, 1.0); - glPushMatrix(); - glCallList(list); - glTranslatef(0.0, 500.0, 0.0); - glCallList(list+1); - glTranslatef(500.0, -500.0, 0.0); - glCallList(list+2); - glTranslatef(0.0, 500.0, 0.0); - glCallList(list+3); - glPopMatrix(); - glFlush(); -} - -void CALLBACK beginCallback(GLenum which) -{ - glBegin(which); -} - -void CALLBACK errorCallback(GLenum errorCode) -{ - const GLubyte *estring; - - estring = gluErrorString(errorCode); - fprintf(stderr, "Tessellation Error: %s\n", estring); - exit(0); -} - -void CALLBACK endCallback(void) -{ - glEnd(); -} - -/* combineCallback is used to create a new vertex when edges - * intersect. coordinate location is trivial to calculate, - * but weight[4] may be used to average color, normal, or texture - * coordinate data. - */ -/* ARGSUSED */ -void CALLBACK combineCallback(GLdouble coords[3], GLdouble *data[4], - GLfloat weight[4], GLdouble **dataOut ) -{ - GLdouble *vertex; - vertex = (GLdouble *) malloc(3 * sizeof(GLdouble)); - - vertex[0] = coords[0]; - vertex[1] = coords[1]; - vertex[2] = coords[2]; - *dataOut = vertex; -} - -void init(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glShadeModel(GL_FLAT); - - tobj = gluNewTess(); - gluTessCallback(tobj, GLU_TESS_VERTEX, - (GLvoid (CALLBACK*) ()) &glVertex3dv); - gluTessCallback(tobj, GLU_TESS_BEGIN, - (GLvoid (CALLBACK*) ()) &beginCallback); - gluTessCallback(tobj, GLU_TESS_END, - (GLvoid (CALLBACK*) ()) &endCallback); - gluTessCallback(tobj, GLU_TESS_ERROR, - (GLvoid (CALLBACK*) ()) &errorCallback); - gluTessCallback(tobj, GLU_TESS_COMBINE, - (GLvoid (CALLBACK*) ()) &combineCallback); - - list = glGenLists(4); - makeNewLists(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D(0.0, 1000.0, 0.0, 1000.0 * (GLdouble)h/(GLdouble)w); - else - gluOrtho2D(0.0, 1000.0 * (GLdouble)w/(GLdouble)h, 0.0, 1000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 'w': - case 'W': - if (currentWinding == GLU_TESS_WINDING_ODD) - currentWinding = GLU_TESS_WINDING_NONZERO; - else if (currentWinding == GLU_TESS_WINDING_NONZERO) - currentWinding = GLU_TESS_WINDING_POSITIVE; - else if (currentWinding == GLU_TESS_WINDING_POSITIVE) - currentWinding = GLU_TESS_WINDING_NEGATIVE; - else if (currentWinding == GLU_TESS_WINDING_NEGATIVE) - currentWinding = GLU_TESS_WINDING_ABS_GEQ_TWO; - else if (currentWinding == GLU_TESS_WINDING_ABS_GEQ_TWO) - currentWinding = GLU_TESS_WINDING_ODD; - makeNewLists(); - glutPostRedisplay(); - break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize(500, 500); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} - -#else -int main(int argc, char** argv) -{ - fprintf (stderr, "This program demonstrates the new tesselator API in GLU 1.2.\n"); - fprintf (stderr, "Your GLU library does not support this new interface, sorry.\n"); - return 0; -} -#endif diff --git a/lib/glut-3.7.6/progs/redbook/tesswind.dsp b/lib/glut-3.7.6/progs/redbook/tesswind.dsp deleted file mode 100644 index 8701ef0324b8145c5ffc4b86a5418d5068b3cd40..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/tesswind.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tesswind" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tesswind - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tesswind.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tesswind.mak" CFG="tesswind - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tesswind - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tesswind - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tesswind - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tesswind - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tesswind - Win32 Release" -# Name "tesswind - Win32 Debug" -# Begin Source File - -SOURCE=.\tesswind.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/texbind.c b/lib/glut-3.7.6/progs/redbook/texbind.c deleted file mode 100644 index 2f08f82258f6cdf52bb1ebb48c09d8ddd419c945..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texbind.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* texbind.c - * This program demonstrates using glBindTexture() by - * creating and managing two textures. - */ -#include -#include -#include - -#ifdef GL_VERSION_1_1 -/* Create checkerboard texture */ -#define checkImageWidth 64 -#define checkImageHeight 64 -static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; -static GLubyte otherImage[checkImageHeight][checkImageWidth][4]; - -static GLuint texName[2]; - -void makeCheckImages(void) -{ - int i, j, c; - - for (i = 0; i < checkImageHeight; i++) { - for (j = 0; j < checkImageWidth; j++) { - c = ((((i&0x8)==0)^((j&0x8)==0)))*255; - checkImage[i][j][0] = (GLubyte) c; - checkImage[i][j][1] = (GLubyte) c; - checkImage[i][j][2] = (GLubyte) c; - checkImage[i][j][3] = (GLubyte) 255; - c = ((((i&0x10)==0)^((j&0x10))==0))*255; - otherImage[i][j][0] = (GLubyte) c; - otherImage[i][j][1] = (GLubyte) 0; - otherImage[i][j][2] = (GLubyte) 0; - otherImage[i][j][3] = (GLubyte) 255; - } - } -} - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel(GL_FLAT); - glEnable(GL_DEPTH_TEST); - - makeCheckImages(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glGenTextures(2, texName); - glBindTexture(GL_TEXTURE_2D, texName[0]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, - GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, - checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, - checkImage); - - glBindTexture(GL_TEXTURE_2D, texName[1]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, - checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, - otherImage); - glEnable(GL_TEXTURE_2D); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBindTexture(GL_TEXTURE_2D, texName[0]); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0); - glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0); - glEnd(); - glBindTexture(GL_TEXTURE_2D, texName[1]); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421); - glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421); - glEnd(); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -3.6); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(250, 250); - glutInitWindowPosition(100, 100); - glutCreateWindow(argv[0]); - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} -#else -int main(int argc, char** argv) -{ - fprintf (stderr, "This program demonstrates a feature which is not in OpenGL Version 1.0.\n"); - fprintf (stderr, "If your implementation of OpenGL Version 1.0 has the right extensions,\n"); - fprintf (stderr, "you may be able to modify this program to make it run.\n"); - return 0; -} -#endif - diff --git a/lib/glut-3.7.6/progs/redbook/texbind.dsp b/lib/glut-3.7.6/progs/redbook/texbind.dsp deleted file mode 100644 index 0048e461251f4c39bb5cdf70cf4a2824974383e2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texbind.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texbind" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texbind - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texbind.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texbind.mak" CFG="texbind - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texbind - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texbind - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texbind - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texbind - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texbind - Win32 Release" -# Name "texbind - Win32 Debug" -# Begin Source File - -SOURCE=.\texbind.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/texgen.c b/lib/glut-3.7.6/progs/redbook/texgen.c deleted file mode 100644 index 7c1802a3be9455bfaed29af9eefabc495f891dad..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texgen.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* texgen.c - * This program draws a texture mapped teapot with - * automatically generated texture coordinates. The - * texture is rendered as stripes on the teapot. - * Initially, the object is drawn with texture coordinates - * based upon the object coordinates of the vertex - * and distance from the plane x = 0. Pressing the 'e' - * key changes the coordinate generation to eye coordinates - * of the vertex. Pressing the 'o' key switches it back - * to the object coordinates. Pressing the 's' key - * changes the plane to a slanted one (x + y + z = 0). - * Pressing the 'x' key switches it back to x = 0. - */ - -#include -#include -#include - -#define stripeImageWidth 32 -GLubyte stripeImage[4*stripeImageWidth]; - -#ifdef GL_VERSION_1_1 -static GLuint texName; -#endif - -void makeStripeImage(void) -{ - int j; - - for (j = 0; j < stripeImageWidth; j++) { - stripeImage[4*j] = (GLubyte) ((j<=4) ? 255 : 0); - stripeImage[4*j+1] = (GLubyte) ((j>4) ? 255 : 0); - stripeImage[4*j+2] = (GLubyte) 0; - stripeImage[4*j+3] = (GLubyte) 255; - } -} - -/* planes for texture coordinate generation */ -static GLfloat xequalzero[] = {1.0, 0.0, 0.0, 0.0}; -static GLfloat slanted[] = {1.0, 1.0, 1.0, 0.0}; -static GLfloat *currentCoeff; -static GLenum currentPlane; -static GLint currentGenMode; - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glEnable(GL_DEPTH_TEST); - glShadeModel(GL_SMOOTH); - - makeStripeImage(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - -#ifdef GL_VERSION_1_1 - glGenTextures(1, &texName); - glBindTexture(GL_TEXTURE_1D, texName); -#endif - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -#ifdef GL_VERSION_1_1 - glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, stripeImageWidth, 0, - GL_RGBA, GL_UNSIGNED_BYTE, stripeImage); -#else - glTexImage1D(GL_TEXTURE_1D, 0, 4, stripeImageWidth, 0, - GL_RGBA, GL_UNSIGNED_BYTE, stripeImage); -#endif - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - currentCoeff = xequalzero; - currentGenMode = GL_OBJECT_LINEAR; - currentPlane = GL_OBJECT_PLANE; - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode); - glTexGenfv(GL_S, currentPlane, currentCoeff); - - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_1D); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - glFrontFace(GL_CW); - glCullFace(GL_BACK); - glMaterialf (GL_FRONT, GL_SHININESS, 64.0); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix (); - glRotatef(45.0, 0.0, 0.0, 1.0); -#ifdef GL_VERSION_1_1 - glBindTexture(GL_TEXTURE_1D, texName); -#endif - glutSolidTeapot(2.0); - glPopMatrix (); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho (-3.5, 3.5, -3.5*(GLfloat)h/(GLfloat)w, - 3.5*(GLfloat)h/(GLfloat)w, -3.5, 3.5); - else - glOrtho (-3.5*(GLfloat)w/(GLfloat)h, - 3.5*(GLfloat)w/(GLfloat)h, -3.5, 3.5, -3.5, 3.5); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -/* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) -{ - switch (key) { - case 'e': - case 'E': - currentGenMode = GL_EYE_LINEAR; - currentPlane = GL_EYE_PLANE; - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode); - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 'o': - case 'O': - currentGenMode = GL_OBJECT_LINEAR; - currentPlane = GL_OBJECT_PLANE; - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, currentGenMode); - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 's': - case 'S': - currentCoeff = slanted; - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 'x': - case 'X': - currentCoeff = xequalzero; - glTexGenfv(GL_S, currentPlane, currentCoeff); - glutPostRedisplay(); - break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(256, 256); - glutInitWindowPosition(100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/texgen.dsp b/lib/glut-3.7.6/progs/redbook/texgen.dsp deleted file mode 100644 index 307792e3103498161037f3b9152b143bc2170197..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texgen.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texgen" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texgen - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texgen.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texgen.mak" CFG="texgen - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texgen - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texgen - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texgen - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texgen - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texgen - Win32 Release" -# Name "texgen - Win32 Debug" -# Begin Source File - -SOURCE=.\texgen.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/texprox.c b/lib/glut-3.7.6/progs/redbook/texprox.c deleted file mode 100644 index 6f1e853facdf334dd966a27609b075a2e693e89f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texprox.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * texprox.c - * The brief program illustrates use of texture proxies. - * This program only prints out some messages about whether - * certain size textures are supported and then exits. - */ -#include -#include -#include - -#ifdef GL_VERSION_1_1 - -/* Microsoft OpenGL 1.1's forgets to define - GL_TEXTURE_INTERNAL_FORMAT. */ -#ifndef GL_TEXTURE_INTERNAL_FORMAT -#define GL_TEXTURE_INTERNAL_FORMAT GL_TEXTURE_COMPONENTS -#endif - -void init(void) -{ - GLint proxyComponents; - - putchar('\n'); - - glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGBA8, - 64, 64, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, - GL_TEXTURE_INTERNAL_FORMAT, &proxyComponents); - printf ("Proxying 64x64 level 0 RGBA8 texture (level 0)\n"); - if (proxyComponents == GL_RGBA8) - printf ("proxy allocation succeeded\n"); - else - printf ("proxy allocation failed\n"); - putchar('\n'); - - glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGBA16, - 2048, 2048, 0, - GL_RGBA, GL_UNSIGNED_SHORT, NULL); - glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, - GL_TEXTURE_INTERNAL_FORMAT, &proxyComponents); - printf ("Proxying 2048x2048 level 0 RGBA16 texture (big so unlikely to be supported)\n"); - if (proxyComponents == GL_RGBA16) - printf ("proxy allocation succeeded\n"); - else - printf ("proxy allocation failed\n"); - putchar('\n'); -} - -void display(void) -{ - exit(0); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; -} -#else -int main(int argc, char** argv) -{ - fprintf (stderr, "This program demonstrates a feature which is not in OpenGL Version 1.0.\n"); - fprintf (stderr, "If your implementation of OpenGL Version 1.0 has the right extensions,\n"); - fprintf (stderr, "you may be able to modify this program to make it run.\n"); - return 0; -} -#endif diff --git a/lib/glut-3.7.6/progs/redbook/texprox.dsp b/lib/glut-3.7.6/progs/redbook/texprox.dsp deleted file mode 100644 index d36148423707a42490662b25474cad5d045ca886..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texprox.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texprox" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texprox - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texprox.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texprox.mak" CFG="texprox - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texprox - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texprox - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texprox - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texprox - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texprox - Win32 Release" -# Name "texprox - Win32 Debug" -# Begin Source File - -SOURCE=.\texprox.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/texsub.c b/lib/glut-3.7.6/progs/redbook/texsub.c deleted file mode 100644 index 47071759cb556a9d1f4467d678c71214c6689ed9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texsub.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* texsub.c - * This program texture maps a checkerboard image onto - * two rectangles. This program clamps the texture, if - * the texture coordinates fall outside 0.0 and 1.0. - * If the s key is pressed, a texture subimage is used to - * alter the original texture. If the r key is pressed, - * the original texture is restored. - */ -#include -#include -#include - -#ifdef GL_VERSION_1_1 -/* Create checkerboard textures */ -#define checkImageWidth 64 -#define checkImageHeight 64 -#define subImageWidth 16 -#define subImageHeight 16 -static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; -static GLubyte subImage[subImageHeight][subImageWidth][4]; - -static GLuint texName; - -void makeCheckImages(void) -{ - int i, j, c; - - for (i = 0; i < checkImageHeight; i++) { - for (j = 0; j < checkImageWidth; j++) { - c = ((((i&0x8)==0)^((j&0x8)==0)))*255; - checkImage[i][j][0] = (GLubyte) c; - checkImage[i][j][1] = (GLubyte) c; - checkImage[i][j][2] = (GLubyte) c; - checkImage[i][j][3] = (GLubyte) 255; - } - } - for (i = 0; i < subImageHeight; i++) { - for (j = 0; j < subImageWidth; j++) { - c = ((((i&0x4)==0)^((j&0x4))==0))*255; - subImage[i][j][0] = (GLubyte) c; - subImage[i][j][1] = (GLubyte) 0; - subImage[i][j][2] = (GLubyte) 0; - subImage[i][j][3] = (GLubyte) 255; - } - } -} - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel(GL_FLAT); - glEnable(GL_DEPTH_TEST); - - makeCheckImages(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glGenTextures(1, &texName); - glBindTexture(GL_TEXTURE_2D, texName); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight, - 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage); -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glBindTexture(GL_TEXTURE_2D, texName); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0); - glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0); - - glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421); - glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421); - glEnd(); - glFlush(); - glDisable(GL_TEXTURE_2D); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -3.6); -} - -/* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) -{ - switch (key) { - case 's': - case 'S': - glBindTexture(GL_TEXTURE_2D, texName); - glTexSubImage2D(GL_TEXTURE_2D, 0, 12, 44, subImageWidth, - subImageHeight, GL_RGBA, - GL_UNSIGNED_BYTE, subImage); - glutPostRedisplay(); - break; - case 'r': - case 'R': - glBindTexture(GL_TEXTURE_2D, texName); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, - checkImageHeight, 0, GL_RGBA, - GL_UNSIGNED_BYTE, checkImage); - glutPostRedisplay(); - break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(250, 250); - glutInitWindowPosition(100, 100); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} -#else -int main(int argc, char** argv) -{ - fprintf (stderr, "This program demonstrates a feature which is not in OpenGL Version 1.0.\n"); - fprintf (stderr, "If your implementation of OpenGL Version 1.0 has the right extensions,\n"); - fprintf (stderr, "you may be able to modify this program to make it run.\n"); - return 0; -} -#endif diff --git a/lib/glut-3.7.6/progs/redbook/texsub.dsp b/lib/glut-3.7.6/progs/redbook/texsub.dsp deleted file mode 100644 index 0c0053667daba464abec726cf7505fb4cdad7136..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texsub.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texsub" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texsub - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texsub.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texsub.mak" CFG="texsub - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texsub - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texsub - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texsub - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texsub - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texsub - Win32 Release" -# Name "texsub - Win32 Debug" -# Begin Source File - -SOURCE=.\texsub.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/texturesurf.c b/lib/glut-3.7.6/progs/redbook/texturesurf.c deleted file mode 100644 index 89cdbcc652640779857184d2de3498abf3bf9875..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texturesurf.c +++ /dev/null @@ -1,141 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* texturesurf.c - * This program uses evaluators to generate a curved - * surface and automatically generated texture coordinates. - */ - -#include -#include -#include - -GLfloat ctrlpoints[4][4][3] = { - {{ -1.5, -1.5, 4.0}, { -0.5, -1.5, 2.0}, - {0.5, -1.5, -1.0}, {1.5, -1.5, 2.0}}, - {{ -1.5, -0.5, 1.0}, { -0.5, -0.5, 3.0}, - {0.5, -0.5, 0.0}, {1.5, -0.5, -1.0}}, - {{ -1.5, 0.5, 4.0}, { -0.5, 0.5, 0.0}, - {0.5, 0.5, 3.0}, {1.5, 0.5, 4.0}}, - {{ -1.5, 1.5, -2.0}, { -0.5, 1.5, -2.0}, - {0.5, 1.5, 0.0}, {1.5, 1.5, -1.0}} -}; - -GLfloat texpts[2][2][2] = {{{0.0, 0.0}, {0.0, 1.0}}, - {{1.0, 0.0}, {1.0, 1.0}}}; - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f(1.0, 1.0, 1.0); - glEvalMesh2(GL_FILL, 0, 20, 0, 20); - glFlush(); -} - -#define imageWidth 64 -#define imageHeight 64 -GLubyte image[3*imageWidth*imageHeight]; - -void makeImage(void) -{ - int i, j; - float ti, tj; - - for (i = 0; i < imageWidth; i++) { - ti = 2.0*3.14159265*i/imageWidth; - for (j = 0; j < imageHeight; j++) { - tj = 2.0*3.14159265*j/imageHeight; - - image[3*(imageHeight*i+j)] = (GLubyte) 127*(1.0+sin(ti)); - image[3*(imageHeight*i+j)+1] = (GLubyte) 127*(1.0+cos(2*tj)); - image[3*(imageHeight*i+j)+2] = (GLubyte) 127*(1.0+cos(ti+tj)); - } - } -} - -void myinit(void) -{ - glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, - 0, 1, 12, 4, &ctrlpoints[0][0][0]); - glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, - 0, 1, 4, 2, &texpts[0][0][0]); - glEnable(GL_MAP2_TEXTURE_COORD_2); - glEnable(GL_MAP2_VERTEX_3); - glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0); - makeImage(); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, 3, imageWidth, imageHeight, 0, - GL_RGB, GL_UNSIGNED_BYTE, image); - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glShadeModel (GL_FLAT); -} - -void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-4.0, 4.0, -4.0*(GLfloat)h/(GLfloat)w, - 4.0*(GLfloat)h/(GLfloat)w, -4.0, 4.0); - else - glOrtho(-4.0*(GLfloat)w/(GLfloat)h, - 4.0*(GLfloat)w/(GLfloat)h, -4.0, 4.0, -4.0, 4.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glRotatef(85.0, 1.0, 1.0, 1.0); -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow (argv[0]); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/redbook/texturesurf.dsp b/lib/glut-3.7.6/progs/redbook/texturesurf.dsp deleted file mode 100644 index 828a1eafaedbd4fa96f3bfe20eb1ed2d000173fb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/texturesurf.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texturesurf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texturesurf - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texturesurf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texturesurf.mak" CFG="texturesurf - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texturesurf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texturesurf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texturesurf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "texturesurf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "texturesurf - Win32 Release" -# Name "texturesurf - Win32 Debug" -# Begin Source File - -SOURCE=.\texturesurf.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/torus.c b/lib/glut-3.7.6/progs/redbook/torus.c deleted file mode 100644 index 7ae4d41e263ba7a691edac77110a4347730a4fc4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/torus.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * torus.c - * This program demonstrates the creation of a display list. - */ - -#include -#include -#include -#include - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -GLuint theTorus; - -/* Draw a torus */ -static void torus(int numc, int numt) -{ - int i, j, k; - double s, t, x, y, z, twopi; - - twopi = 2 * (double)M_PI; - for (i = 0; i < numc; i++) { - glBegin(GL_QUAD_STRIP); - for (j = 0; j <= numt; j++) { - for (k = 1; k >= 0; k--) { - s = (i + k) % numc + 0.5; - t = j % numt; - - x = (1+.1*cos(s*twopi/numc))*cos(t*twopi/numt); - y = (1+.1*cos(s*twopi/numc))*sin(t*twopi/numt); - z = .1 * sin(s * twopi / numc); - glVertex3f(x, y, z); - } - } - glEnd(); - } -} - -/* Create display list with Torus and initialize state */ -static void init(void) -{ - theTorus = glGenLists (1); - glNewList(theTorus, GL_COMPILE); - torus(8, 25); - glEndList(); - - glShadeModel(GL_FLAT); - glClearColor(0.0, 0.0, 0.0, 0.0); -} - -/* Clear window and draw torus */ -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glColor3f (1.0, 1.0, 1.0); - glCallList(theTorus); - glFlush(); -} - -/* Handle window resize */ -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(30, (GLfloat) w/(GLfloat) h, 1.0, 100.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0); -} - -/* Rotate about x-axis when "x" typed; rotate about y-axis - when "y" typed; "i" returns torus to original view */ -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 'x': - case 'X': - glRotatef(30.,1.0,0.0,0.0); - glutPostRedisplay(); - break; - case 'y': - case 'Y': - glRotatef(30.,0.0,1.0,0.0); - glutPostRedisplay(); - break; - case 'i': - case 'I': - glLoadIdentity(); - gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0); - glutPostRedisplay(); - break; - case 27: - exit(0); - break; - } -} - -int main(int argc, char **argv) -{ - glutInitWindowSize(200, 200); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutCreateWindow(argv[0]); - init(); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutDisplayFunc(display); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/torus.dsp b/lib/glut-3.7.6/progs/redbook/torus.dsp deleted file mode 100644 index c6e571e298f1e7b578485b1ed94abbe64077b30d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/torus.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="torus" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=torus - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "torus.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "torus.mak" CFG="torus - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "torus - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "torus - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "torus - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "torus - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "torus - Win32 Release" -# Name "torus - Win32 Debug" -# Begin Source File - -SOURCE=.\torus.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/trim.c b/lib/glut-3.7.6/progs/redbook/trim.c deleted file mode 100644 index d459d948bd513c432a66df2bb5163b11f4dd7e83..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/trim.c +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * trim.c - * This program draws a NURBS surface in the shape of a - * symmetrical hill, using both a NURBS curve and pwl - * (piecewise linear) curve to trim part of the surface. - */ -#include -#include -#include - -GLfloat ctlpoints[4][4][3]; - -GLUnurbsObj *theNurb; - -/* - * Initializes the control points of the surface to a small hill. - * The control points range from -3 to +3 in x, y, and z - */ -void init_surface(void) -{ - int u, v; - for (u = 0; u < 4; u++) { - for (v = 0; v < 4; v++) { - ctlpoints[u][v][0] = 2.0*((GLfloat)u - 1.5); - ctlpoints[u][v][1] = 2.0*((GLfloat)v - 1.5); - - if ( (u == 1 || u == 2) && (v == 1 || v == 2)) - ctlpoints[u][v][2] = 3.0; - else - ctlpoints[u][v][2] = -3.0; - } - } -} - -void nurbsError(GLenum errorCode) -{ - const GLubyte *estring; - - estring = gluErrorString(errorCode); - fprintf (stderr, "Nurbs Error: %s\n", estring); - exit (0); -} - -/* Initialize material property and depth buffer. - */ -void init(void) -{ - GLfloat mat_diffuse[] = { 0.7, 0.7, 0.7, 1.0 }; - GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; - GLfloat mat_shininess[] = { 100.0 }; - - glClearColor (0.0, 0.0, 0.0, 0.0); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - - init_surface(); - - theNurb = gluNewNurbsRenderer(); - gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0); - gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL); - gluNurbsCallback(theNurb, GLU_ERROR, - (GLvoid (CALLBACK*) ()) nurbsError); -} - -void display(void) -{ - GLfloat knots[8] = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0}; - GLfloat edgePt[5][2] = /* counter clockwise */ - {{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0}, {0.0, 0.0}}; - GLfloat curvePt[4][2] = /* clockwise */ - {{0.25, 0.5}, {0.25, 0.75}, {0.75, 0.75}, {0.75, 0.5}}; - GLfloat curveKnots[8] = - {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0}; - GLfloat pwlPt[4][2] = /* clockwise */ - {{0.75, 0.5}, {0.5, 0.25}, {0.25, 0.5}}; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glRotatef(330.0, 1.,0.,0.); - glScalef (0.5, 0.5, 0.5); - - gluBeginSurface(theNurb); - gluNurbsSurface(theNurb, 8, knots, 8, knots, - 4 * 3, 3, &ctlpoints[0][0][0], - 4, 4, GL_MAP2_VERTEX_3); - gluBeginTrim (theNurb); - gluPwlCurve (theNurb, 5, &edgePt[0][0], 2, GLU_MAP1_TRIM_2); - gluEndTrim (theNurb); - gluBeginTrim (theNurb); - gluNurbsCurve (theNurb, 8, curveKnots, 2, - &curvePt[0][0], 4, GLU_MAP1_TRIM_2); - gluPwlCurve (theNurb, 3, &pwlPt[0][0], 2, GLU_MAP1_TRIM_2); - gluEndTrim (theNurb); - gluEndSurface(theNurb); - - glPopMatrix(); - glFlush(); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective (45.0, (GLdouble)w/(GLdouble)h, 3.0, 8.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef (0.0, 0.0, -5.0); -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* Main Loop - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow(argv[0]); - init(); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/trim.dsp b/lib/glut-3.7.6/progs/redbook/trim.dsp deleted file mode 100644 index 7afa33ec8d3fa9fbd82079ef7f1e2ff46ece607d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/trim.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="trim" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=trim - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "trim.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "trim.mak" CFG="trim - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "trim - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "trim - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "trim - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "trim - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "trim - Win32 Release" -# Name "trim - Win32 Debug" -# Begin Source File - -SOURCE=.\trim.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/unproject.c b/lib/glut-3.7.6/progs/redbook/unproject.c deleted file mode 100644 index 134c361bac550957cff7f9a00079aa02e8fb47ae..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/unproject.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * unproject.c - * When the left mouse button is pressed, this program - * reads the mouse position and determines two 3D points - * from which it was transformed. Very little is displayed. - */ -#include -#include -#include - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -/* Change these values for a different transformation */ -void reshape(int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective (45.0, (GLfloat) w/(GLfloat) h, 1.0, 100.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -void mouse(int button, int state, int x, int y) -{ - GLint viewport[4]; - GLdouble mvmatrix[16], projmatrix[16]; - GLint realy; /* OpenGL y coordinate position */ - GLdouble wx, wy, wz; /* returned world x, y, z coords */ - - switch (button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) { - glGetIntegerv (GL_VIEWPORT, viewport); - glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix); - glGetDoublev (GL_PROJECTION_MATRIX, projmatrix); -/* note viewport[3] is height of window in pixels */ - realy = viewport[3] - (GLint) y - 1; - printf ("Coordinates at cursor are (%4d, %4d)\n", x, realy); - gluUnProject ((GLdouble) x, (GLdouble) realy, 0.0, - mvmatrix, projmatrix, viewport, &wx, &wy, &wz); - printf ("World coords at z=0.0 are (%f, %f, %f)\n", - wx, wy, wz); - gluUnProject ((GLdouble) x, (GLdouble) realy, 1.0, - mvmatrix, projmatrix, viewport, &wx, &wy, &wz); - printf ("World coords at z=1.0 are (%f, %f, %f)\n", - wx, wy, wz); - } - break; - case GLUT_RIGHT_BUTTON: - if (state == GLUT_DOWN) - exit(0); - break; - default: - break; - } -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -/* - * Open window, register input callback functions - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc (keyboard); - glutMouseFunc(mouse); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/unproject.dsp b/lib/glut-3.7.6/progs/redbook/unproject.dsp deleted file mode 100644 index 71c44e5e11e9cda88fc9cae43daeb68a51be8216..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/unproject.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="unproject" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=unproject - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "unproject.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "unproject.mak" CFG="unproject - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "unproject - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "unproject - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "unproject - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "unproject - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "unproject - Win32 Release" -# Name "unproject - Win32 Debug" -# Begin Source File - -SOURCE=.\unproject.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/varray.c b/lib/glut-3.7.6/progs/redbook/varray.c deleted file mode 100644 index b22e723e0ec66dc8e7dbb9fd3a1422c0a8f21898..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/varray.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * varray.c - * This program demonstrates vertex arrays. - */ -#include -#include -#include - -#ifdef GL_VERSION_1_1 -#define POINTER 1 -#define INTERLEAVED 2 - -#define DRAWARRAY 1 -#define ARRAYELEMENT 2 -#define DRAWELEMENTS 3 - -int setupMethod = POINTER; -int derefMethod = DRAWARRAY; - -void setupPointers(void) -{ - static GLint vertices[] = {25, 25, - 100, 325, - 175, 25, - 175, 325, - 250, 25, - 325, 325}; - static GLfloat colors[] = {1.0, 0.2, 0.2, - 0.2, 0.2, 1.0, - 0.8, 1.0, 0.2, - 0.75, 0.75, 0.75, - 0.35, 0.35, 0.35, - 0.5, 0.5, 0.5}; - - glEnableClientState (GL_VERTEX_ARRAY); - glEnableClientState (GL_COLOR_ARRAY); - - glVertexPointer (2, GL_INT, 0, vertices); - glColorPointer (3, GL_FLOAT, 0, colors); -} - -void setupInterleave(void) -{ - static GLfloat intertwined[] = - {1.0, 0.2, 1.0, 100.0, 100.0, 0.0, - 1.0, 0.2, 0.2, 0.0, 200.0, 0.0, - 1.0, 1.0, 0.2, 100.0, 300.0, 0.0, - 0.2, 1.0, 0.2, 200.0, 300.0, 0.0, - 0.2, 1.0, 1.0, 300.0, 200.0, 0.0, - 0.2, 0.2, 1.0, 200.0, 100.0, 0.0}; - - glInterleavedArrays (GL_C3F_V3F, 0, intertwined); -} - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel (GL_SMOOTH); - setupPointers (); -} - -void display(void) -{ - glClear (GL_COLOR_BUFFER_BIT); - - if (derefMethod == DRAWARRAY) - glDrawArrays (GL_TRIANGLES, 0, 6); - else if (derefMethod == ARRAYELEMENT) { - glBegin (GL_TRIANGLES); - glArrayElement (2); - glArrayElement (3); - glArrayElement (5); - glEnd (); - } - else if (derefMethod == DRAWELEMENTS) { - GLuint indices[4] = {0, 1, 3, 4}; - - glDrawElements (GL_POLYGON, 4, GL_UNSIGNED_INT, indices); - } - glFlush (); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h); -} - -/* ARGSUSED2 */ -void mouse (int button, int state, int x, int y) -{ - switch (button) { - case GLUT_LEFT_BUTTON: - if (state == GLUT_DOWN) { - if (setupMethod == POINTER) { - setupMethod = INTERLEAVED; - setupInterleave(); - } - else if (setupMethod == INTERLEAVED) { - setupMethod = POINTER; - setupPointers(); - } - glutPostRedisplay(); - } - break; - case GLUT_MIDDLE_BUTTON: - case GLUT_RIGHT_BUTTON: - if (state == GLUT_DOWN) { - if (derefMethod == DRAWARRAY) - derefMethod = ARRAYELEMENT; - else if (derefMethod == ARRAYELEMENT) - derefMethod = DRAWELEMENTS; - else if (derefMethod == DRAWELEMENTS) - derefMethod = DRAWARRAY; - glutPostRedisplay(); - } - break; - default: - break; - } -} - -/* ARGSUSED1 */ -void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (350, 350); - glutInitWindowPosition (100, 100); - glutCreateWindow (argv[0]); - init (); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMouseFunc(mouse); - glutKeyboardFunc (keyboard); - glutMainLoop(); - return 0; -} -#else -int main(int argc, char** argv) -{ - fprintf (stderr, "This program demonstrates a feature which is not in OpenGL Version 1.0.\n"); - fprintf (stderr, "If your implementation of OpenGL Version 1.0 has the right extensions,\n"); - fprintf (stderr, "you may be able to modify this program to make it run.\n"); - return 0; -} -#endif diff --git a/lib/glut-3.7.6/progs/redbook/varray.dsp b/lib/glut-3.7.6/progs/redbook/varray.dsp deleted file mode 100644 index 58b0529c517bf8c69130178bb0659077ebeaa77d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/varray.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="varray" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=varray - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "varray.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "varray.mak" CFG="varray - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "varray - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "varray - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "varray - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "varray - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "varray - Win32 Release" -# Name "varray - Win32 Debug" -# Begin Source File - -SOURCE=.\varray.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/redbook/wrap.c b/lib/glut-3.7.6/progs/redbook/wrap.c deleted file mode 100644 index beda9c10a5a399dd36f791845ef290b7a2eba9b7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/wrap.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* wrap.c - * This program texture maps a checkerboard image onto - * two rectangles. This program demonstrates the wrapping - * modes, if the texture coordinates fall outside 0.0 and 1.0. - * Interaction: Pressing the 's' and 'S' keys switch the - * wrapping between clamping and repeating for the s parameter. - * The 't' and 'T' keys control the wrapping for the t parameter. - * - * If running this program on OpenGL 1.0, texture objects are - * not used. - */ -#include -#include -#include - -/* Create checkerboard texture */ -#define checkImageWidth 64 -#define checkImageHeight 64 -static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; - -#ifdef GL_VERSION_1_1 -static GLuint texName; -#endif - -void makeCheckImage(void) -{ - int i, j, c; - - for (i = 0; i < checkImageHeight; i++) { - for (j = 0; j < checkImageWidth; j++) { - c = ((((i&0x8)==0)^((j&0x8)==0)))*255; - checkImage[i][j][0] = (GLubyte) c; - checkImage[i][j][1] = (GLubyte) c; - checkImage[i][j][2] = (GLubyte) c; - checkImage[i][j][3] = (GLubyte) 255; - } - } -} - -void init(void) -{ - glClearColor (0.0, 0.0, 0.0, 0.0); - glShadeModel(GL_FLAT); - glEnable(GL_DEPTH_TEST); - - makeCheckImage(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - -#ifdef GL_VERSION_1_1 - glGenTextures(1, &texName); - glBindTexture(GL_TEXTURE_2D, texName); -#endif - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); -#ifdef GL_VERSION_1_1 - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight, - 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage); -#else - glTexImage2D(GL_TEXTURE_2D, 0, 4, checkImageWidth, checkImageHeight, - 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage); -#endif -} - -void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); -#ifdef GL_VERSION_1_1 - glBindTexture(GL_TEXTURE_2D, texName); -#endif - - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, 3.0); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(3.0, 3.0); glVertex3f(0.0, 1.0, 0.0); - glTexCoord2f(3.0, 0.0); glVertex3f(0.0, -1.0, 0.0); - - glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0); - glTexCoord2f(0.0, 3.0); glVertex3f(1.0, 1.0, 0.0); - glTexCoord2f(3.0, 3.0); glVertex3f(2.41421, 1.0, -1.41421); - glTexCoord2f(3.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421); - glEnd(); - glFlush(); - glDisable(GL_TEXTURE_2D); -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -3.6); -} - -/* ARGSUSED1 */ -void keyboard (unsigned char key, int x, int y) -{ - switch (key) { - case 's': - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glutPostRedisplay(); - break; - case 'S': - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glutPostRedisplay(); - break; - case 't': - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glutPostRedisplay(); - break; - case 'T': - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glutPostRedisplay(); - break; - case 27: - exit(0); - break; - default: - break; - } -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(250, 250); - glutInitWindowPosition(100, 100); - glutCreateWindow(argv[0]); - init(); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/redbook/wrap.dsp b/lib/glut-3.7.6/progs/redbook/wrap.dsp deleted file mode 100644 index df90e799ca0f9d5b33915b00b95942ed46503921..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/redbook/wrap.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="wrap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=wrap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "wrap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "wrap.mak" CFG="wrap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "wrap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "wrap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "wrap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "wrap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "wrap - Win32 Release" -# Name "wrap - Win32 Debug" -# Begin Source File - -SOURCE=.\wrap.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/sgi-stereo/README b/lib/glut-3.7.6/progs/sgi-stereo/README deleted file mode 100644 index 0f42c598665a9a338a1003c4df5fe9c51bc1f047..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/sgi-stereo/README +++ /dev/null @@ -1,35 +0,0 @@ - -This directory contains a GLUT "hack" program for using SGI's -proprietary X stereo extension (officially named -"SGIFullScreenStereo"). The extension provides stereo support for -mid-range and low-end SGI workstations including Indy and Indigo^2 -workstations with Indy, XL, XZ, Extreme, and IMPACT graphics options. - -NOTE: This example "hacks" GLUT to get at private GLUT implementation -variables (basically __glutDisplay). Any program that does so is -effectively unportable to other GLUT implementations. SGI's -proprietary X stereo extension is not suitable for portable, direct -support via GLUT's API, so these examples are being released as an -exception to the rule. - -To use this example code effectively, you must have: - - o A low-end or mid-range SGI workstation described above. - - o IRIX 5.3, 6.1 (Power Indigo^2), 6.2, or higher. - - o A set of stereo LCD shutter goggles. - - o A monitor that syncs to the stereo video signal. - -To get more information on SGIFullScreenStereo, try: - - man XSGISetStereoBuffer - -Mike Blackwell contributed the original GLUT stereo example. The -example itself is based on a demonstration program found in Appendix 1 -of "The CrystalEyes Handbook" by Lenny Lipton, 1991, StereoGraphics -Corp. - -- Mark Kilgard - November 21, 1995 diff --git a/lib/glut-3.7.6/progs/sgi-stereo/fullscreen_stereo.c b/lib/glut-3.7.6/progs/sgi-stereo/fullscreen_stereo.c deleted file mode 100644 index c2b0c50907d630737e138f905ca86d1f82656a3e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/sgi-stereo/fullscreen_stereo.c +++ /dev/null @@ -1,69 +0,0 @@ - -/* fullscreen_stereo.c -- GLUT support for full screen stereo mode on SGI - workstations. */ - -/* 24-Oct-95 Mike Blackwell mkb@cs.cmu.edu */ - -#include -#include -#include -#include - -/* We need to access some GLUT internal variables - this include file is - found in the GLUT source code distribution. */ - -/* XXX I do not normally encourage programs to use GLUT internals. Programs - that do (like this one) are inherently unportable GLUT programs. In the - case of SGI's low-end stereo there was enough demand to warrant supplying - an example, and the low-end stereo is not clean enough to be supported - directly in GLUT. -mjk */ - -#include "glutint.h" - -#include "fullscreen_stereo.h" - -/* XXX Video display modes for stereo are selected by running - /usr/gfx/setmon; in IRIX 6.2 and later releases, the XSGIvc API supplies - the functionality of setmon and more. */ - -void -start_fullscreen_stereo(void) -{ - int event, error; - - if (!XSGIStereoQueryExtension(__glutDisplay, &event, &error)) { - fprintf(stderr, "Stereo not supported on this display!\n"); - exit(0); - } - if (XSGIQueryStereoMode(__glutDisplay, __glutCurrentWindow->win) < 0) { - fprintf(stderr, "Stereo not supported on this window!\n"); - exit(0); - } - if (system("/usr/gfx/setmon -n STR_BOT") != 0) { - fprintf(stderr, "setmon attempt failed!\n"); - stop_fullscreen_stereo(); - exit(0); - } -} - -void -stop_fullscreen_stereo(void) -{ - system("/usr/gfx/setmon -n 72hz"); -} - -void -stereo_left_buffer(void) -{ - XSGISetStereoBuffer(__glutDisplay, __glutCurrentWindow->win, STEREO_BUFFER_LEFT); - XSync(__glutDisplay, False); - glViewport(0, 0, XMAXSCREEN, YSTEREO); -} - -void -stereo_right_buffer(void) -{ - XSGISetStereoBuffer(__glutDisplay, __glutCurrentWindow->win, STEREO_BUFFER_RIGHT); - XSync(__glutDisplay, False); - glViewport(0, 0, XMAXSCREEN, YSTEREO); -} diff --git a/lib/glut-3.7.6/progs/sgi-stereo/fullscreen_stereo.h b/lib/glut-3.7.6/progs/sgi-stereo/fullscreen_stereo.h deleted file mode 100644 index 00e6b5ba39db0781699763dc26f070a6fb95f71d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/sgi-stereo/fullscreen_stereo.h +++ /dev/null @@ -1,22 +0,0 @@ -/************************************************************************/ -/* */ -/* fullscreen_stereo.c -- GLUT support for full screen stereo mode */ -/* on SGI workstations. */ -/* */ -/* 24-Oct-95 Mike Blackwell mkb@cs.cmu.edu */ -/* Written. */ -/* */ -/************************************************************************/ - -/* Standard screen diminsions */ -#define XMAXSCREEN 1280 -#define YMAXSCREEN 1024 - -#define YSTEREO 491 /* Subfield height in pixels */ -#define YOFFSET_LEFT 532 /* YSTEREO + YBLANK */ - -void start_fullscreen_stereo(void); -void stop_fullscreen_stereo(void); -void stereo_left_buffer(void); -void stereo_right_buffer(void); -void window_no_border(void); diff --git a/lib/glut-3.7.6/progs/sgi-stereo/stereo-plane.c b/lib/glut-3.7.6/progs/sgi-stereo/stereo-plane.c deleted file mode 100644 index 3661ed7420b33351d5f1335fc76f409e0e32239c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/sgi-stereo/stereo-plane.c +++ /dev/null @@ -1,209 +0,0 @@ - -/* This is an OpenGL/GLUT implementation of the "plane" stereo - demonstration program found in Appendix 1 of "The CrystalEyes Handbook" - by Lenny Lipton, 1991, StereoGraphics Corp. */ - -/* Ported to OpenGL/GLUT by Mike Blackwell, mkb@cs.cmu.edu, Oct. 1995. */ - -#include -#include -#include -#include -#include "fullscreen_stereo.h" - -#define SPEED 100 /* How often to update rotation - milliseconds */ -#define STEP 1.0 /* How much to rotate - degrees */ - -double position = 0; /* Rotation of plane */ - -/* Clean up and quit */ -void -all_done(void) -{ - stop_fullscreen_stereo(); - exit(0); -} - -/* ARGSUSED */ -void -timer(int value) -{ - position -= STEP; - if (position < 0.0) - position = 360.0 - STEP; - glutPostRedisplay(); - glutTimerFunc(SPEED, timer, 0); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case '\033': - all_done(); - break; - default: - putchar('\007'); - fflush(stdout); - break; - } -} - -/* This routine performs the perspective projection for one eye's subfield. - The projection is in the direction of the negative z axis. - - xmin, ymax, ymin, ymax = the coordinate range, in the plane of zero - parallax setting, that will be displayed on the screen. The ratio between - (xmax-xmin) and (ymax-ymin) should equal the aspect ration of the display. - - znear, zfar = the z-coordinate values of the clipping planes. - - zzps = the z-coordinate of the plane of zero parallax setting. - - dist = the distance from the center of projection to the plane of zero - parallax. - - eye = half the eye separation; positive for the right eye subfield, - negative for the left eye subfield. */ - -void -stereoproj(float xmin, float xmax, float ymin, float ymax, - float znear, float zfar, float zzps, float dist, float eye) -{ - float xmid, ymid, clip_near, clip_far, top, bottom, left, right, dx, dy, n_over_d; - - dx = xmax - xmin; - dy = ymax - ymin; - - xmid = (xmax + xmin) / 2.0; - ymid = (ymax + ymin) / 2.0; - - clip_near = dist + zzps - znear; - clip_far = dist + zzps - zfar; - - n_over_d = clip_near / dist; - - top = n_over_d * dy / 2.0; - bottom = -top; - right = n_over_d * (dx / 2.0 - eye); - left = n_over_d * (-dx / 2.0 - eye); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(left, right, bottom, top, clip_near, clip_far); - - glTranslatef(-xmid - eye, -ymid, -zzps - dist); -} - -void -draw_airplane(void) -{ - static float airplane[9][3] = - { - {0.0, 0.5, -4.5}, - {3.0, 0.5, -4.5}, - {3.0, 0.5, -3.5}, - {0.0, 0.5, 0.0}, - {0.0, 0.5, 3.25}, - {0.0, -0.5, 5.5}, - {-3.0, 0.5, -3.5}, - {-3.0, 0.5, -4.5}, - {0.0, -0.5, -4.5} - }; - - glColor3ub(0xb0, 0x30, 0xff); /* Purple color */ - - glBegin(GL_LINE_LOOP); - glVertex3fv(airplane[6]); - glVertex3fv(airplane[7]); - glVertex3fv(airplane[1]); - glVertex3fv(airplane[2]); - glVertex3fv(airplane[4]); - glEnd(); - - glBegin(GL_LINE_LOOP); - glVertex3fv(airplane[0]); - glVertex3fv(airplane[4]); - glVertex3fv(airplane[5]); - glVertex3fv(airplane[8]); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex3fv(airplane[6]); - glVertex3fv(airplane[3]); - glVertex3fv(airplane[2]); - glEnd(); -} - -/* This routine puts a stereo image of a paper airplane onto the screen */ -void -redraw(void) -{ - /* Draw left subfield */ - stereo_left_buffer(); - - glClearColor(0.07, 0.07, 0.07, 0.00); - glClear(GL_COLOR_BUFFER_BIT); - - /* Z-coordinate of plane of zero parallax is 0.0. In that plane, the coord - range drawn to the screen will be - - (-6.0 to 6.0, -4.8 to 4.8). - - Z-coordinate clipping planes are -6.0 and 6.0. The eyes are set at world - coord distance 14.5 from the plane of zero parallax, and the eye - separation is 0.62 in world coords. These two values were calculated - using equations 11 to 15, and 17 to 19 in chapter 5. */ - - stereoproj(-6.0, 6.0, -4.8, 4.8, 6.0, -6.0, 0.0, 14.5, -0.31); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glRotatef((float) position, 0.0, 1.0, 0.0); - glRotatef(-10.0, 1.0, 0.0, 0.0); - draw_airplane(); - glFlush(); - - /* Draw right subfield */ - stereo_right_buffer(); - - glClearColor(0.07, 0.07, 0.07, 0.00); - glClear(GL_COLOR_BUFFER_BIT); - - /* Same as above stereoproj() call, except that eye arg is positive */ - stereoproj(-6.0, 6.0, -4.8, 4.8, 6.0, -6.0, 0.0, 14.5, 0.31); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glRotatef((float) position, 0.0, 1.0, 0.0); - glRotatef(-10.0, 1.0, 0.0, 0.0); - draw_airplane(); - glFlush(); - - glutSwapBuffers(); /* Update screen */ -} - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("GLUT-based SGI hack stereo demo"); - glutFullScreen(); - glutSetCursor(GLUT_CURSOR_NONE); - start_fullscreen_stereo(); - - glutDisplayFunc(redraw); - glutKeyboardFunc(keyboard); - glutTimerFunc(SPEED, timer, 0); - - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE); - glLineWidth(1.5); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/spheremap.dsw b/lib/glut-3.7.6/progs/spheremap.dsw deleted file mode 100644 index 115c9b2af770541936cf6b672640e3c31e76293f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap.dsw +++ /dev/null @@ -1,137 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\spheremap\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name cview2smap - End Project Dependency - Begin Project Dependency - Project_Dep_Name sixviews - End Project Dependency - Begin Project Dependency - Project_Dep_Name smapmesh - End Project Dependency - Begin Project Dependency - Project_Dep_Name st2rvec - End Project Dependency - Begin Project Dependency - Project_Dep_Name fakeraytrace - End Project Dependency - Begin Project Dependency - Project_Dep_Name rtsmap - End Project Dependency -}}} - -############################################################################### - -Project: "cview2smap"=".\spheremap\hacks\cview2smap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "fakeraytrace"=".\spheremap\glsmap\fakeraytrace.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glsmap - End Project Dependency -}}} - -############################################################################### - -Project: "glsmap"="..\lib\glsmap\glsmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "rtsmap"=".\spheremap\glsmap\rtsmap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glsmap - End Project Dependency -}}} - -############################################################################### - -Project: "sixviews"=".\spheremap\hacks\sixviews.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "smapmesh"=".\spheremap\hacks\smapmesh.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "st2rvec"=".\spheremap\hacks\st2rvec.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/spheremap/Imakefile b/lib/glut-3.7.6/progs/spheremap/Imakefile deleted file mode 100644 index 3bc97d802f89f12e8aff11d4c0ff0ff227ec51ce..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/Imakefile +++ /dev/null @@ -1,10 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#define IHaveSubdirs -#define PassCDebugFlags - -SUBDIRS = hacks glsmap - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/progs/spheremap/README b/lib/glut-3.7.6/progs/spheremap/README deleted file mode 100644 index c16ad28d7ecc06941ad4aaa608f911bfcf0ba0de..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/README +++ /dev/null @@ -1,15 +0,0 @@ - -These are GLUT-based OpenGL examples that develop the idea of real-time -dynamic environment mapping using sphere maps. The examples were -originally presented at the Computer Game Developers Convention (CGDC) -in Long Beach, CA on May 5, 1998. - -The "glsmap" directory contains examples that use the glsmap dynamic -sphere mapping library API (see ../../lib/glsmap for the library's -source code). The "hacks" directory contains a few examples that -demonstrate the functional building blocks for dynamic sphere mapping -(and do not use the glsmap library). - -- Mark Kilgard - mjk@nvidia.com - diff --git a/lib/glut-3.7.6/progs/spheremap/_all.dsp b/lib/glut-3.7.6/progs/spheremap/_all.dsp deleted file mode 100644 index 2e26c30f32adf2ab5d284c761d545a37b7e2380b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/spheremap/glsmap/Imakefile b/lib/glut-3.7.6/progs/spheremap/glsmap/Imakefile deleted file mode 100644 index 3e4690c62aad521baec68f940128c8b337a3b5cb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/glsmap/Imakefile +++ /dev/null @@ -1,15 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = rtsmap fakeraytrace - -SRCS = rtsmap.c fakeraytrace.c - -AllTarget($(TARGETS)) - -SimpleGlsmapProgramTarget(rtsmap) -SimpleGlsmapProgramTarget(fakeraytrace) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/spheremap/glsmap/fakeraytrace.c b/lib/glut-3.7.6/progs/spheremap/glsmap/fakeraytrace.c deleted file mode 100644 index 3b0c7e2cac29094d166003d96f66dda7520dac74..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/glsmap/fakeraytrace.c +++ /dev/null @@ -1,722 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* fakeraytrace.c - two reflective objects, one has reflection of other's reflection */ - -#include -#include -#include -#include -#include - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif - -typedef struct { - GLfloat *obj2draw; - int drawObj1; - GLuint texobj; -} Object; - -enum { X, Y, Z }; - -enum { - TO_NONE = 0, - TO_FRONT, TO_TOP, TO_BOTTOM, TO_LEFT, TO_RIGHT, - TO_BACK, - TO_SPHERE_MAP, - TO_FRONT2, TO_TOP2, TO_BOTTOM2, TO_LEFT2, TO_RIGHT2, - TO_BACK2, - TO_SPHERE_MAP2, - - TO_FRONT3, TO_TOP3, TO_BOTTOM3, TO_LEFT3, TO_RIGHT3, - TO_BACK3, - TO_SPHERE_MAP3 -}; - -static GLuint texobjs[6] = { - TO_FRONT, TO_TOP, TO_BOTTOM, - TO_LEFT, TO_RIGHT, TO_BACK -}; - -static GLuint texobjs2[6] = { - TO_FRONT2, TO_TOP2, TO_BOTTOM2, - TO_LEFT2, TO_RIGHT2, TO_BACK2 -}; - -static GLuint texobjs3[6] = { - TO_FRONT3, TO_TOP3, TO_BOTTOM3, - TO_LEFT3, TO_RIGHT3, TO_BACK3 -}; - -int moving = 0; -int multibounce = 1; -SphereMap *smap, *smap2, *smap3; -int win; - -GLfloat up[3] = { 0, 1, 0 }; -GLfloat up2[3] = { 0, 0, 1 }; -GLfloat eye[3] = { 0, 0, -15 }; -GLfloat obj[3] = { 0, 4, 0 }; -GLfloat obj2[3] = { 0, -4, 0 }; - -Object sphere[] = { - { obj, 0, TO_SPHERE_MAP }, - { obj2, 1, TO_SPHERE_MAP2 }, - { obj, 0, TO_SPHERE_MAP3 } }; - -GLfloat timeCount; -int W, H; - -int showSphereMap = 0; -int object = 0; -int texdim = 64; -int doubleBuffer = 1; -int dynamicSmap = 1; -int cullBackFaces = 1; -int doSphereMap = 1; -int multipass = 0; -int animation = 0; -int sphereTess = 20; - -static char *pattern[] = { - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "xxxxxxxxxxxxxxxx", - "xxxxxxxxxxxxxxxx", - "xxxxxxxxxxxxxxxx", - "xxxxxxxxxxxxxxxx", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", -}; - -static void -makePatternTexture(void) -{ - GLubyte patternTexture[16][16][4]; - GLubyte *loc; - int s, t; - - /* Setup RGB image for the texture. */ - loc = (GLubyte*) patternTexture; - for (t = 0; t < 16; t++) { - for (s = 0; s < 16; s++) { - if (pattern[t][s] == 'x') { - /* Nice green. */ - loc[0] = 0x1f; - loc[1] = 0x8f; - loc[2] = 0x1f; - loc[3] = 0x7f; /* opaque */ - } else { - /* Light gray. */ - loc[0] = 0x00; - loc[1] = 0x00; - loc[2] = 0x00; - loc[3] = 0x00; /* transparent */ - } - loc += 4; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, 16, 16, - GL_RGBA, GL_UNSIGNED_BYTE, patternTexture); -} - -void -reshape(int w, int h) -{ - W = w; - H = h; -} - -void -positionLights(int view, void *context) -{ - static GLfloat light1Pos[4] = { -41.0, 41.0, -41.0, 1.0 }; - static GLfloat light2Pos[4] = { +41.0, 0.0, -41.0, 1.0 }; - static GLfloat light3Pos[4] = { -41.0, 0.0, +41.0, 1.0 }; - static GLfloat light4Pos[4] = { +41.0, 0.0, +41.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, light1Pos); - glLightfv(GL_LIGHT1, GL_POSITION, light2Pos); - glLightfv(GL_LIGHT2, GL_POSITION, light3Pos); - glLightfv(GL_LIGHT3, GL_POSITION, light4Pos); -} - -extern void drawObject(Object *it); - -void -drawView(int view, void *context) -{ - Object *it = context; - - /* right green small cube (+5,0,-8) */ - glPushMatrix(); - glTranslatef(5.0, 0.0, -8.0); - glRotatef(-45, 1.0, 0.0, 1.0); - glColor3f(0.0, 1.0, 0.0); - glutSolidCube(2.0); - glPopMatrix(); - /* left red cube (-5,0,-8) */ - glPushMatrix(); - glTranslatef(-5.0, 0.0, -8.0); - glRotatef(45, 1.0, 0.0, 1.0); - glColor3f(1.0, 0.0, 0.0); - glutSolidCube(6.0); - glPopMatrix(); - /* left blue cube (-7,0,0); */ - glPushMatrix(); - glTranslatef(-7.0, 0.0, 0.0); - glColor3f(0.0, 0.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* right cyan big cube (+7,0,0) */ - glPushMatrix(); - glTranslatef(7.0, 0.0, 0.0); - glRotatef(30, 1.0, 1.0, 0.0); - glColor3f(0.0, 1.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* distant yellow sphere (0,0,+10) */ - glPushMatrix(); - glTranslatef(0.0, 0.0, 10.0); - glColor3f(1.0, 1.0, 0.0); - glutSolidSphere(7.0, 8, 8); - glPopMatrix(); - - if (it && multibounce) { - if (it->drawObj1) { - glEnable(GL_TEXTURE_2D); - drawObject(&sphere[2]); - glDisable(GL_TEXTURE_2D); - } - } -} - -void -drawObject(Object *it) -{ - static GLfloat xplane[4] = { 1, 0, 0, 0 }; - static GLfloat zplane[4] = { 0, 1, 0, 0 }; - GLfloat *obj2draw = it->obj2draw; - - if (!cullBackFaces) { - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - } - - glPushMatrix(); - - glTranslatef(obj2draw[X], obj2draw[Y], obj2draw[Z]); - - if (doSphereMap) { - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, it->texobj); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, - GL_REPLACE); - } else { - glTexGenfv(GL_S, GL_OBJECT_PLANE, xplane); - glTexGenfv(GL_T, GL_OBJECT_PLANE, zplane); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, 100); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, - GL_REPLACE); - } - - glColor3f(1.0, 1.0, 1.0); - switch (object) { - case 0: - glutSolidSphere(3.5, 20, 20); - break; - case 1: - glScalef(3.0, 3.0, 3.0); - glRotatef(30.0, 1.0, 1.0, 0.0); - glutSolidIcosahedron(); - break; - case 2: - glFrontFace(GL_CW); - glutSolidTeapot(3.0); - glFrontFace(GL_CCW); - break; - } - - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glPopMatrix(); - - if (!cullBackFaces) { - glCullFace(GL_BACK); - } -} - -void -vsub(const GLfloat *src1, const GLfloat *src2, GLfloat *dst) -{ - dst[0] = src1[0] - src2[0]; - dst[1] = src1[1] - src2[1]; - dst[2] = src1[2] - src2[2]; -} - -void -vcopy(const GLfloat *v1, GLfloat *v2) -{ - register int i; - for (i = 0 ; i < 3 ; i++) - v2[i] = v1[i]; -} - -void -vcross(const GLfloat *v1, const GLfloat *v2, GLfloat *cross) -{ - GLfloat temp[3]; - - temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); - vcopy(temp, cross); -} - -void -display(void) -{ - GLfloat tmp1[3], tmp2[3]; - - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - if (dynamicSmap) { - if (multibounce) { - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - vsub(eye,obj,tmp1); - vsub(obj2,obj,tmp2); - vcross(tmp1,tmp2,up2); - vcross(up2,tmp2,up2); - - smapSetUpVector(smap3, up2); - smapGenSphereMap(smap3); - } - - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - smapGenSphereMap(smap); - - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - smapGenSphereMap(smap2); - } - - /* smapGenSphereMap leaves scissor enabled, disable it. */ - glDisable(GL_SCISSOR_TEST); - - glViewport(0, 0, W, H); - - if (showSphereMap) { - glClear(GL_COLOR_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 1, 0, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glEnable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); - glBindTexture(GL_TEXTURE_2D, showSphereMap); - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex2f(0,0); - glTexCoord2f(1,0); - glVertex2f(1,0); - glTexCoord2f(1,1); - glVertex2f(1,1); - glTexCoord2f(0,1); - glVertex2f(0,1); - glEnd(); - } else { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (GLfloat) W / (GLfloat) H, 0.5, 40.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(eye[0], eye[1], eye[2], /* eye at eye */ - 0, 0, 0, /* looking at object */ - up[0], up[1], up[2]); - - positionLights(-1, NULL); - drawView(-1, NULL); - if (multipass) { - doSphereMap = 1; - } - drawObject(&sphere[0]); - if (multipass) { - doSphereMap = 0; - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDepthFunc(GL_EQUAL); - glEnable(GL_BLEND); - drawObject(&sphere[0]); - glDisable(GL_BLEND); - glDepthFunc(GL_LESS); - } - if (multipass) { - doSphereMap = 1; - } - drawObject(&sphere[1]); - } - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -int angle = 0; -int downx, downy; - -void -motion(int x, int y) -{ - if (moving) { - angle += (x - downx); - angle = angle % 360; - eye[0] = sin(angle * 3.14159/180.0) * -15; - eye[2] = cos(angle * 3.14159/180.0) * -15; - eye[1] = eye[1] + 0.1 * (y - downy); - if (eye[1] > +25) eye[1] = +25; - if (eye[1] < -25) eye[1] = -25; - smapSetEyeVector(smap, eye); - smapSetEyeVector(smap2, eye); - glutPostRedisplay(); - downx = x; - downy = y; - } -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - moving = 1; - downx = x; - downy = y; - } else { - moving = 0; - } - } -} - -void -idle(void) -{ - timeCount = timeCount + 0.1; - obj2[Y] = -5 + cos(timeCount) * 1.0; - smapSetObjectVector(smap, obj); - smapSetObjectVector(smap2, obj2); - smapSetObjectVector(smap3, obj); - glutPostRedisplay(); -} - -/* When not visible, stop animating. Restart when visible again. */ -static void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - if (animation) - glutIdleFunc(idle); - } else { - if (!animation) - glutIdleFunc(NULL); - } -} - -void initGraphicsState(void); -void initCallbacks(int ifFullscreen); - -void -menu(int value) -{ - switch (value) { - case 0: - showSphereMap = 0; - break; - case 1: - showSphereMap = TO_SPHERE_MAP; - break; - case -1: - showSphereMap = TO_SPHERE_MAP2; - break; - case -2: - showSphereMap = TO_SPHERE_MAP3; - break; - case 4: - object = (object + 1) % 3; - break; - case 5: - smapSetSphereMapTexDim(smap, 64); - smapSetViewTexDim(smap, 64); - smapSetSphereMapTexDim(smap2, 64); - smapSetViewTexDim(smap2, 64); - smapSetSphereMapTexDim(smap3, 64); - smapSetViewTexDim(smap3, 64); - break; - case 6: - smapSetSphereMapTexDim(smap, 128); - smapSetViewTexDim(smap, 128); - smapSetSphereMapTexDim(smap2, 128); - smapSetViewTexDim(smap2, 128); - smapSetSphereMapTexDim(smap3, 128); - smapSetViewTexDim(smap3, 128); - break; - case 7: - smapSetSphereMapTexDim(smap, 256); - smapSetViewTexDim(smap, 256); - smapSetSphereMapTexDim(smap2, 256); - smapSetViewTexDim(smap2, 256); - smapSetSphereMapTexDim(smap3, 256); - smapSetViewTexDim(smap3, 256); - break; - case 8: - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_FRONT); - doubleBuffer = 0; - break; - case 9: - glDrawBuffer(GL_BACK); - glReadBuffer(GL_BACK); - doubleBuffer = 1; - break; - case 10: - dynamicSmap = 1; - break; - case 11: - dynamicSmap = 0; - break; - case 12: - cullBackFaces = 1; - break; - case 13: - cullBackFaces = 0; - break; - case 14: - doSphereMap = 1; - multipass = 0; - break; - case 15: - doSphereMap = 0; - multipass = 0; - break; - case 16: - multipass = 1; - break; - case 17: - animation = !animation; - if (animation) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } - break; - case 666: - exit(0); - break; - } - glutPostRedisplay(); -} - -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: - exit(0); - break; - case '1': - menu(5); - break; - case '2': - menu(6); - break; - case '3': - menu(7); - break; - case 's': - menu(4); - break; - case 'f': - glutGameModeString("400x300:16@60"); - glutEnterGameMode(); - initGraphicsState(); - initCallbacks(0); - break; - case 'l': - glutLeaveGameMode(); - glutSetWindow(win); - break; - case 'a': - sphereTess += 5; - glutPostRedisplay(); - break; - case 'z': - sphereTess -= 5; - glutPostRedisplay(); - break; - case 'b': - case 'B': - multibounce = !multibounce; - printf("multibounce = %d\n", multibounce); - break; - case ' ': - menu(17); - break; - } -} - -void -initGraphicsState(void) -{ - GLfloat lightColor[4] = { 0.6, 0.6, 0.6, 1.0 }; /* white */ - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT2, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT3, GL_DIFFUSE, lightColor); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_LIGHT2); - glEnable(GL_LIGHT3); - glEnable(GL_DEPTH_TEST); - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_NORMALIZE); - - glBindTexture(GL_TEXTURE_2D, 100); - makePatternTexture(); -} - -void -initCallbacks(int ifFullscreen) -{ - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutVisibilityFunc(visible); - glutMouseFunc(mouse); - glutKeyboardFunc(keyboard); - glutMotionFunc(motion); - - if (ifFullscreen) { - - glutCreateMenu(menu); - glutAddMenuEntry("eye view", 0); - glutAddMenuEntry("eye to obj 1 smap", 1); - glutAddMenuEntry("eye to obj 2 smap", -1); - glutAddMenuEntry("obj 1 to obj 2 smap", -2); - glutAddMenuEntry("switch object", 4); - glutAddMenuEntry("texdim = 64", 5); - glutAddMenuEntry("texdim = 128", 6); - glutAddMenuEntry("texdim = 256", 7); - glutAddMenuEntry("single buffer", 8); - glutAddMenuEntry("double buffer", 9); - glutAddMenuEntry("dynamic smap", 10); - glutAddMenuEntry("stop smap building", 11); - glutAddMenuEntry("cull back faces", 12); - glutAddMenuEntry("cull front faces", 13); - glutAddMenuEntry("sphere map", 14); - glutAddMenuEntry("texture", 15); - glutAddMenuEntry("multipass", 16); - glutAddMenuEntry("toggle animate", 17); - glutAddMenuEntry("quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - win = glutCreateWindow("fakeraytrace"); - - initGraphicsState(); - initCallbacks(1); - - smap = smapCreateSphereMap(NULL); - smapSetSphereMapTexObj (smap, TO_SPHERE_MAP); - smapSetViewTexObjs (smap, texobjs); - smapSetEyeVector (smap, eye); - smapSetUpVector (smap, up); - smapSetObjectVector (smap, obj); - smapSetNearFar (smap, 0.5, 40.0); - smapSetPositionLightsFunc (smap, positionLights); - smapSetDrawViewFunc (smap, drawView); - smapSetViewTexDim (smap, 64); - smapSetSphereMapTexDim (smap, 64); - smapSetContextData(smap, &sphere[0]); - - smap2 = smapCreateSphereMap(NULL); - smapSetSphereMapTexObj (smap2, TO_SPHERE_MAP2); - smapSetViewTexObjs (smap2, texobjs2); - smapSetEyeVector (smap2, eye); - smapSetUpVector (smap2, up); - smapSetObjectVector (smap2, obj2); - smapSetNearFar (smap2, 0.5, 40.0); - smapSetPositionLightsFunc (smap2, positionLights); - smapSetDrawViewFunc (smap2, drawView); - smapSetViewTexDim (smap2, 64); - smapSetSphereMapTexDim (smap2, 64); - smapSetContextData(smap2, &sphere[1]); - - smap3 = smapCreateSphereMap(NULL); - smapSetSphereMapTexObj (smap3, TO_SPHERE_MAP3); - smapSetViewTexObjs (smap3, texobjs3); - smapSetEyeVector (smap3, obj2); - smapSetUpVector (smap3, up2); - smapSetObjectVector (smap3, obj); - smapSetNearFar (smap3, 0.1, 40.0); - smapSetPositionLightsFunc (smap3, positionLights); - smapSetDrawViewFunc (smap3, drawView); - smapSetViewTexDim (smap3, 64); - smapSetSphereMapTexDim (smap3, 64); - smapSetContextData(smap3, &sphere[2]); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/spheremap/glsmap/fakeraytrace.dsp b/lib/glut-3.7.6/progs/spheremap/glsmap/fakeraytrace.dsp deleted file mode 100644 index 3f5c56de333baa2c76bac282cd8af133f1159c32..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/glsmap/fakeraytrace.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fakeraytrace" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fakeraytrace - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fakeraytrace.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fakeraytrace.mak" CFG="fakeraytrace - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fakeraytrace - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fakeraytrace - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fakeraytrace - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "fakeraytrace - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "fakeraytrace - Win32 Release" -# Name "fakeraytrace - Win32 Debug" -# Begin Source File - -SOURCE=.\fakeraytrace.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/spheremap/glsmap/rtsmap.c b/lib/glut-3.7.6/progs/spheremap/glsmap/rtsmap.c deleted file mode 100644 index 3f8890a2a8663e997f2d69e4afd1e4c506b21ad8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/glsmap/rtsmap.c +++ /dev/null @@ -1,480 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* rtsmap.c - real-time generation and use of a sphere map with libglsmap */ - -#include -#include -#include -#include -#include - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif - -enum { - TO_NONE = 0, - TO_FRONT, TO_TOP, TO_BOTTOM, TO_LEFT, TO_RIGHT, - TO_BACK, - TO_SPHERE_MAP -}; - -static GLuint texobjs[6] = { - TO_FRONT, TO_TOP, TO_BOTTOM, - TO_LEFT, TO_RIGHT, TO_BACK -}; - -SphereMap *smap; - -GLfloat up[3] = { 0, 1, 0 }; -GLfloat eye[3] = { 0, 0, -20 }; -GLfloat obj[3] = { 0, 0, 0 }; - -int W, H; - -int showSphereMap = 0; -int object = 0; -int texdim = 64; -int doubleBuffer = 1; -int dynamicSmap = 1; -int cullBackFaces = 1; -int doSphereMap = 1; -int multipass = 0; - -static char *pattern[] = { - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "xxxxxxxxxxxxxxxx", - "xxxxxxxxxxxxxxxx", - "xxxxxxxxxxxxxxxx", - "xxxxxxxxxxxxxxxx", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", - "......xxxx......", -}; - -static void -makePatternTexture(void) -{ - GLubyte patternTexture[16][16][4]; - GLubyte *loc; - int s, t; - - /* Setup RGB image for the texture. */ - loc = (GLubyte*) patternTexture; - for (t = 0; t < 16; t++) { - for (s = 0; s < 16; s++) { - if (pattern[t][s] == 'x') { - /* Nice green. */ - loc[0] = 0x1f; - loc[1] = 0x8f; - loc[2] = 0x1f; - loc[3] = 0x7f; /* opaque */ - } else { - /* Light gray. */ - loc[0] = 0x00; - loc[1] = 0x00; - loc[2] = 0x00; - loc[3] = 0x00; /* transparent */ - } - loc += 4; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, 16, 16, - GL_RGBA, GL_UNSIGNED_BYTE, patternTexture); -} - -void -reshape(int w, int h) -{ - W = w; - H = h; -} - -void -positionLights(int view, void *context) -{ - static GLfloat light1Pos[4] = { -41.0, 41.0, -41.0, 1.0 }; - static GLfloat light2Pos[4] = { +41.0, 0.0, -41.0, 1.0 }; - static GLfloat light3Pos[4] = { -41.0, 0.0, +41.0, 1.0 }; - static GLfloat light4Pos[4] = { +41.0, 0.0, +41.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, light1Pos); - glLightfv(GL_LIGHT1, GL_POSITION, light2Pos); - glLightfv(GL_LIGHT2, GL_POSITION, light3Pos); - glLightfv(GL_LIGHT3, GL_POSITION, light4Pos); -} - -void -drawView(int view, void *context) -{ - /* right green small cube (+5,0,-8) */ - glPushMatrix(); - glTranslatef(5.0, 0.0, -8.0); - glRotatef(-45, 1.0, 0.0, 1.0); - glColor3f(0.0, 1.0, 0.0); - glutSolidCube(2.0); - glPopMatrix(); - /* left red cube (-5,0,-8) */ - glPushMatrix(); - glTranslatef(-5.0, 0.0, -8.0); - glRotatef(45, 1.0, 0.0, 1.0); - glColor3f(1.0, 0.0, 0.0); - glutSolidCube(6.0); - glPopMatrix(); - /* left blue cube (-7,0,0); */ - glPushMatrix(); - glTranslatef(-7.0, 0.0, 0.0); - glColor3f(0.0, 0.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* right cyan big cube (+7,0,0) */ - glPushMatrix(); - glTranslatef(7.0, 0.0, 0.0); - glRotatef(30, 1.0, 1.0, 0.0); - glColor3f(0.0, 1.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* distant yellow sphere (0,0,+10) */ - glPushMatrix(); - glTranslatef(0.0, 0.0, 10.0); - glColor3f(1.0, 1.0, 0.0); - glutSolidSphere(7.0, 8, 8); - glPopMatrix(); - /* top white sphere (0,+5,0) */ - glPushMatrix(); - glTranslatef(0.0, 5.0, 0.0); - glColor3f(1.0, 1.0, 1.0); - glutSolidSphere(2.0, 8, 8); - glPopMatrix(); - /* bottom magenta sphere (0,-7,0) */ - glPushMatrix(); - glTranslatef(0.0, -7.0, 0.0); - glColor3f(1.0, 0.0, 1.0); - glutSolidSphere(3.0, 8, 8); - glPopMatrix(); -} - -void -drawObject(void *context) -{ - static GLfloat xplane[4] = { 1, 0, 0, 0 }; - static GLfloat zplane[4] = { 0, 1, 0, 0 }; - - if (!cullBackFaces) { - glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - } - - glPushMatrix(); - glTranslatef(obj[0], obj[1], obj[2]); - if (doSphereMap) { - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, 7); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, - GL_REPLACE); - } else { - glTexGenfv(GL_S, GL_OBJECT_PLANE, xplane); - glTexGenfv(GL_T, GL_OBJECT_PLANE, zplane); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, 100); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, - GL_REPLACE); - } - - glColor3f(1.0, 1.0, 1.0); - switch (object) { - case 0: - glutSolidSphere(3.0, 20, 20); - break; - case 1: - glScalef(3.0, 3.0, 3.0); - glRotatef(30.0, 1.0, 1.0, 0.0); - glutSolidIcosahedron(); - break; - case 2: - glFrontFace(GL_CW); - glutSolidTeapot(3.0); - glFrontFace(GL_CCW); - break; - } - - glDisable(GL_TEXTURE_GEN_S); - glDisable(GL_TEXTURE_GEN_T); - glPopMatrix(); - - if (!cullBackFaces) { - glCullFace(GL_BACK); - } -} - -void -display(void) -{ - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - if (dynamicSmap) { - smapGenSphereMap(smap); - } - - /* smapGenSphereMap leaves scissor enabled, disable it. */ - glDisable(GL_SCISSOR_TEST); - - glViewport(0, 0, W, H); - - if (showSphereMap) { - glClear(GL_COLOR_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 1, 0, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glEnable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); - glBindTexture(GL_TEXTURE_2D, 7); - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex2f(0,0); - glTexCoord2f(1,0); - glVertex2f(1,0); - glTexCoord2f(1,1); - glVertex2f(1,1); - glTexCoord2f(0,1); - glVertex2f(0,1); - glEnd(); - } else { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glDisable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0, 0.5, 40.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(eye[0], eye[1], eye[2], /* eye at eye */ - obj[0], obj[1], obj[2], /* looking at object */ - up[0], up[1], up[2]); - - positionLights(-1, NULL); - drawView(-1, NULL); - if (multipass) { - doSphereMap = 1; - } - drawObject(NULL); - if (multipass) { - doSphereMap = 0; - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDepthFunc(GL_EQUAL); - glEnable(GL_BLEND); - drawObject(NULL); - glDisable(GL_BLEND); - glDepthFunc(GL_LESS); - } - } - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -int angle = 0; -int downx, downy; - -void -motion(int x, int y) -{ - angle += (x - downx); - angle = angle % 360; - eye[0] = sin(angle * 3.14159/180.0) * -20; - eye[2] = cos(angle * 3.14159/180.0) * -20; - eye[1] = eye[1] + 0.1 * (y - downy); - if (eye[1] > +25) eye[1] = +25; - if (eye[1] < -25) eye[1] = -25; - smapSetEyeVector(smap, eye); - glutPostRedisplay(); - downx = x; - downy = y; -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - downx = x; - downy = y; - } - } -} - -void -menu(int value) -{ - switch (value) { - case 0: - showSphereMap = 0; - break; - case 1: - showSphereMap = 1; - break; - case 4: - object = (object + 1) % 3; - break; - case 5: - smapSetSphereMapTexDim(smap, 64); - smapSetViewTexDim(smap, 64); - break; - case 6: - smapSetSphereMapTexDim(smap, 128); - smapSetViewTexDim(smap, 128); - break; - case 7: - smapSetSphereMapTexDim(smap, 256); - smapSetViewTexDim(smap, 256); - break; - case 8: - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_FRONT); - doubleBuffer = 0; - break; - case 9: - glDrawBuffer(GL_BACK); - glReadBuffer(GL_BACK); - doubleBuffer = 1; - break; - case 10: - dynamicSmap = 1; - break; - case 11: - dynamicSmap = 0; - break; - case 12: - cullBackFaces = 1; - break; - case 13: - cullBackFaces = 0; - break; - case 14: - doSphereMap = 1; - multipass = 0; - break; - case 15: - doSphereMap = 0; - multipass = 0; - break; - case 16: - multipass = 1; - break; - case 666: - exit(0); - break; - } - glutPostRedisplay(); -} - -void -initGraphicsState(void) -{ - GLfloat lightColor[4] = { 0.6, 0.6, 0.6, 1.0 }; /* white */ - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT2, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT3, GL_DIFFUSE, lightColor); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_LIGHT2); - glEnable(GL_LIGHT3); - glEnable(GL_DEPTH_TEST); - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_NORMALIZE); -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(400, 400); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("real-time dynamic sphere mapping"); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - - initGraphicsState(); - - glutCreateMenu(menu); - glutAddMenuEntry("eye view", 0); - glutAddMenuEntry("show sphere map", 1); - glutAddMenuEntry("outline", 2); - glutAddMenuEntry("switch object", 4); - glutAddMenuEntry("texdim = 64", 5); - glutAddMenuEntry("texdim = 128", 6); - glutAddMenuEntry("texdim = 256", 7); - glutAddMenuEntry("single buffer", 8); - glutAddMenuEntry("double buffer", 9); - glutAddMenuEntry("dynamic smap", 10); - glutAddMenuEntry("stop smap building", 11); - glutAddMenuEntry("cull back faces", 12); - glutAddMenuEntry("cull front faces", 13); - glutAddMenuEntry("sphere map", 14); - glutAddMenuEntry("texture", 15); - glutAddMenuEntry("multipass", 16); - glutAddMenuEntry("quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMouseFunc(mouse); - glutMotionFunc(motion); - - smap = smapCreateSphereMap(NULL); - smapSetSphereMapTexObj (smap, TO_SPHERE_MAP); - smapSetViewTexObjs (smap, texobjs); - smapSetEyeVector (smap, eye); - smapSetUpVector (smap, up); - smapSetObjectVector (smap, obj); - smapSetNearFar (smap, 0.5, 40.0); - smapSetPositionLightsFunc (smap, positionLights); - smapSetDrawViewFunc (smap, drawView); - smapSetViewTexDim (smap, 64); - smapSetSphereMapTexDim (smap, 64); - - glBindTexture(GL_TEXTURE_2D, 100); - makePatternTexture(); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/spheremap/glsmap/rtsmap.dsp b/lib/glut-3.7.6/progs/spheremap/glsmap/rtsmap.dsp deleted file mode 100644 index c256e866020a6891da51ca5ae9ec2759086ddb40..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/glsmap/rtsmap.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="rtsmap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=rtsmap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "rtsmap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "rtsmap.mak" CFG="rtsmap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "rtsmap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "rtsmap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "rtsmap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "rtsmap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "rtsmap - Win32 Release" -# Name "rtsmap - Win32 Debug" -# Begin Source File - -SOURCE=.\rtsmap.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/Imakefile b/lib/glut-3.7.6/progs/spheremap/hacks/Imakefile deleted file mode 100644 index a02f1815b4306115b0de2fb9e7cecda606f7a7cc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/Imakefile +++ /dev/null @@ -1,16 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../../Glut.cf" - -TARGETS = sixviews cview2smap smapmesh - -SRCS = cview2smap.c drawmesh.c makemesh.c sixviews.c st2rvec.c smapmesh.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(sixviews) -SimpleGlutProgramTarget(smapmesh) -NormalGlutProgramTarget(cview2smap,cview2smap.o drawmesh.o makemesh.o) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/cview2smap.c b/lib/glut-3.7.6/progs/spheremap/hacks/cview2smap.c deleted file mode 100644 index e0523fabb81ce9c276bf2e18b2dcbe414173d4a0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/cview2smap.c +++ /dev/null @@ -1,336 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* cview2smap.c - warp 6 cube views into sphere map */ - -#include -#include -#include - -#include "smapmesh.h" - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif -#if defined(GL_EXT_copy_texture) && !defined(GL_VERSION_1_1) -#define glCopyTexImage2D(A, B, C, D, E, F, G, H) glCopyTexImage2DEXT(A, B, C, D, E, F, G, H) -#endif - -GLfloat up[3] = { 0, 1, 0 }; -GLfloat eye[3] = { 0, 0, -20 }; -GLfloat obj[3] = { 0, 0, 0 }; -int outline = 0; -int bufswap = 1; -int texdim = 128; - -static int W, H; - -int angle = 0; -int downx, downy; - -void -reshape(int w, int h) -{ - W = w; - H = h; -} - -void -drawView(int drawCenterObject) -{ - /* right green small cube (+5,0,-8) */ - glPushMatrix(); - glTranslatef(5.0, 0.0, -8.0); - glRotatef(-45, 1.0, 0.0, 1.0); - glColor3f(0.0, 1.0, 0.0); - glutSolidCube(2.0); - glPopMatrix(); - /* left red cube (-5,0,-8) */ - glPushMatrix(); - glTranslatef(-5.0, 0.0, -8.0); - glRotatef(45, 1.0, 0.0, 1.0); - glColor3f(1.0, 0.0, 0.0); - glutSolidCube(6.0); - glPopMatrix(); - /* left blue cube (-7,0,0); */ - glPushMatrix(); - glTranslatef(-7.0, 0.0, 0.0); - glColor3f(0.0, 0.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* right cyan big cube (+7,0,0) */ - glPushMatrix(); - glTranslatef(7.0, 0.0, 0.0); - glRotatef(30, 1.0, 1.0, 0.0); - glColor3f(0.0, 1.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* distant yellow sphere (0,0,+10) */ - glPushMatrix(); - glTranslatef(0.0, 0.0, 10.0); - glColor3f(1.0, 1.0, 0.0); - glutSolidSphere(7.0, 8, 8); - glPopMatrix(); - /* top white sphere (0,+5,0) */ - glPushMatrix(); - glTranslatef(0.0, 5.0, 0.0); - glColor3f(1.0, 1.0, 1.0); - glutSolidSphere(2.0, 8, 8); - glPopMatrix(); - /* bottom magenta big sphere (0,-6,0) */ - glPushMatrix(); - glTranslatef(0.0, -6.0, 0.0); - glColor3f(1.0, 0.0, 1.0); - glutSolidSphere(4.0, 8, 8); - glPopMatrix(); - - if (drawCenterObject) { - glPushMatrix(); - glScalef(3.0, 3.0, 3.0); - glColor3f(1.0, 1.0, 1.0); - glutSolidIcosahedron(); - glPopMatrix(); - } -} - -void -setAreaAndClear(GLint x, GLint y, GLsizei w, GLsizei h) -{ - glViewport(x, y, w, h); - glScissor(x, y, w, h); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -} - -/* You need to reposition the lights everytime view */ -/* transformation changes. */ -void -positionLights(void) -{ - static GLfloat light1Pos[4] = { -41.0, 41.0, -41.0, 1.0 }; - static GLfloat light2Pos[4] = { +41.0, 0.0, -41.0, 1.0 }; - static GLfloat light3Pos[4] = { -41.0, 0.0, +41.0, 1.0 }; - static GLfloat light4Pos[4] = { +41.0, 0.0, +41.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, light1Pos); - glLightfv(GL_LIGHT1, GL_POSITION, light2Pos); - glLightfv(GL_LIGHT2, GL_POSITION, light3Pos); - glLightfv(GL_LIGHT3, GL_POSITION, light4Pos); -} - -void -snagImageAsTexture(GLuint texobj) -{ - glBindTexture(GL_TEXTURE_2D, texobj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, - GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - /* Clamp to avoid artifacts from wrap around in texture. */ - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, - texdim, texdim, 0); -} - -struct { - GLfloat angle; - GLfloat x, y, z; -} faceInfo[6] = { - { 0.0, +1.0, 0.0, 0.0 }, /* front */ - { 90.0, -1.0, 0.0, 0.0 }, /* top */ - { 90.0, +1.0, 0.0, 0.0 }, /* bottom */ - { 90.0, 0.0, -1.0, 0.0 }, /* left */ - { 90.0, 0.0, +1.0, 0.0 }, /* right */ - { 180.0, -1.0, 0.0, 0.0 } /* back */ -}; - -void -configFace(int i) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glRotatef(faceInfo[i].angle, - faceInfo[i].x, faceInfo[i].y, faceInfo[i].z); - gluLookAt(obj[0], obj[1], obj[2], /* "eye" at object */ - eye[0], eye[1], eye[2], /* looking at eye */ - up[0], up[1], up[2]); - positionLights(); -} - -void -display(void) -{ - static GLuint texobjs[6] = { 1, 2 ,3, 4, 5, 6 }; - int i; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90.0, 1.0, 0.5, 40.0); - glViewport(0, 0, texdim, texdim); - glScissor(0, 0, texdim, texdim); - glEnable(GL_SCISSOR_TEST); - glEnable(GL_DEPTH_TEST); - - /* front view (center) */ - for (i=0; i<6; i++) { - configFace(i); - drawView(0); - snagImageAsTexture(1+i); - } - - glDisable(GL_SCISSOR_TEST); - glClear(GL_COLOR_BUFFER_BIT); - glViewport(0, 0, W, H); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 1, 0, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glDisable(GL_DEPTH_TEST); - glEnable(GL_TEXTURE_2D); - drawSphereMapMesh(texobjs); - glDisable(GL_TEXTURE_2D); - if (outline) { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - glDisable(GL_LIGHTING); - glColor3f(1.0, 1.0, 1.0); - drawSphereMapMesh(texobjs); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glEnable(GL_LIGHTING); - } - - glDisable(GL_SCISSOR_TEST); - - /* initial clear */ - glViewport(0, 0, W, H); - - if (bufswap) { - glutSwapBuffers(); - } -} - -void -menu(int value) -{ - switch (value) { - case 1: - glEnable(GL_LIGHTING); - printf("enable\n"); - break; - case 2: - glDisable(GL_LIGHTING); - printf("disable\n"); - break; - case 3: - outline = 1; - break; - case 4: - outline = 0; - break; - case 5: - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_FRONT); - bufswap = 0; - break; - case 6: - glDrawBuffer(GL_BACK); - glReadBuffer(GL_BACK); - bufswap = 1; - break; - case 7: - texdim = 64; - break; - case 8: - texdim = 128; - break; - case 9: - texdim = 256; - break; - } - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - angle += (x - downx); - angle = angle % 360; - eye[0] = sin(angle * 3.14159/180.0) * -20; - eye[2] = cos(angle * 3.14159/180.0) * -20; - eye[1] = eye[1] + 0.1 * (y - downy); - if (eye[1] > +25) eye[1] = +25; - if (eye[1] < -25) eye[1] = -25; - glutPostRedisplay(); - downx = x; - downy = y; -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - downx = x; - downy = y; - } - } -} - -void -initGraphicsState(void) -{ - GLfloat lightColor[4] = { 0.6, 0.6, 0.6, 1.0 }; /* white */ - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT2, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT3, GL_DIFFUSE, lightColor); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_LIGHT2); - glEnable(GL_LIGHT3); - glEnable(GL_DEPTH_TEST); - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_NORMALIZE); -} - -int -main(int argc, char **argv) -{ - makeSphereMapMesh(); - - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("cview2smap"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - - initGraphicsState(); - - glutCreateMenu(menu); - glutAddMenuEntry("light on", 1); - glutAddMenuEntry("light off", 2); - glutAddMenuEntry("outline", 3); - glutAddMenuEntry("no outline", 4); - glutAddMenuEntry("single buffer", 5); - glutAddMenuEntry("double buffer", 6); - glutAddMenuEntry("face tex dim = 64", 7); - glutAddMenuEntry("face tex dim = 128", 8); - glutAddMenuEntry("face tex dim = 256", 9); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/cview2smap.dsp b/lib/glut-3.7.6/progs/spheremap/hacks/cview2smap.dsp deleted file mode 100644 index 9051ee175235893e4a8f186880ef673c7d64e828..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/cview2smap.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cview2smap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cview2smap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cview2smap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cview2smap.mak" CFG="cview2smap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cview2smap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cview2smap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cview2smap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cview2smap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cview2smap - Win32 Release" -# Name "cview2smap - Win32 Debug" -# Begin Source File - -SOURCE=.\cview2smap.c -# End Source File -# Begin Source File - -SOURCE=.\drawmesh.c -# End Source File -# Begin Source File - -SOURCE=.\makemesh.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/drawmesh.c b/lib/glut-3.7.6/progs/spheremap/hacks/drawmesh.c deleted file mode 100644 index fa56c29cfbdeabf02c26777ceb131a6f0ec2d762..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/drawmesh.c +++ /dev/null @@ -1,55 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* drawmesh.c - draws mesh for constructing a sphere map */ - -#include - -#include "smapmesh.h" - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif - -void -drawSphereMapMesh(GLuint texobj[6]) -{ - int side, i, j; - - /* five front and side faces */ - for (side=0; side<5; side++) { - /* bind to texture for given face of cube map */ - glBindTexture(GL_TEXTURE_2D, texobj[side]); - for (i=0; i -#include -#include -#include -#include - -#include "smapmesh.h" - -/* (x,y,z) reflection vector --> (s,t) sphere map coordinates */ -void -rvec2st(float v[3], float st[2]) -{ - double m; - - /* In Section 2.10.4 ("Generating texture coordinates") - of the OpenGL 1.1 specification, you will find the - GL_SPHERE_MAP equations: - - n' = normal after transformation to eye coordinates - u = unit vector from origin to vertex in eye coordinates - - (rx, ry, rz) = u - 2 * n' * transpose(n') * u - - m = 2 * sqrt(rx^2 + ry^2 + (rz + 1)^2)) - - s = rx/m + 0.5 - t = ry/m + 0.5 - - The equation for calculating (rx, ry, rz) is the - equation for calculating the reflection vector for - a surface and observer. The explanation and - derivation for this equation is found in Roger's - "Procedural Elements for Computer Graphics" 2nd ed. - in Section 5-5 ("Determining the Reflection Vector"). - Note that Roger's convention has the Z axis in - the opposite direction from the OpenGL convention. */ - - m = 2 * sqrt(v[0]*v[0] + v[1]*v[1] + (v[2]+1)*(v[2]+1)); - - st[0] = v[0]/m + 0.5; - st[1] = v[1]/m + 0.5; -} - -/* (s,t) sphere map coordinate --> reflection verctor (x,y,z) */ -void -st2rvec(float s, float t, float *xp, float *yp, float *zp) -{ - double rx, ry, rz; - double tmp1, tmp2; - - /* Using algebra to invert the sphere mapping equations - shown above in rvec2st, you get: - - rx = 2*sqrt(-4*s^2 + 4*s - 4*t^2 + 4*t - 1)*(2*s-1) - ry = 2*sqrt(-4*s^2 + 4*s - 4*t^2 + 4*t - 1)*(2*t-1) - rz = -8*s^2 + 8*s - 8*t^2 + 8*t - 3 - - The C code below eliminates common subexpressions. */ - - tmp1 = s*(1-s) + t*(1-t); - tmp2 = 2 * sqrt(4*tmp1 - 1); - - rx = tmp2 * (2*s-1); - ry = tmp2 * (2*t-1); - rz = 8 * tmp1 - 3; - - *xp = (float) rx; - *yp = (float) ry; - *zp = (float) rz; -} - -/* For best results (ie, to avoid cracks in the - sphere map construction, XSTEPS, YSTEPS, and - SPOKES should all be equal. */ - -/* Increasing the nSTEPS and RINGS constants below - will give you a better approximation to the - sphere map image warp at the cost of more polygons - to render the image warp. My bet is that no - will be able to the improved quality of a higher - level of tessellation. */ - -STXY face[5][YSTEPS][XSTEPS]; -STXY back[4][RINGS+EDGE_EXTEND][SPOKES]; - -static struct { - int xl; - int yl; - int zl; - int swap; /* swap final (s,t) */ - int flip; /* flip final s or t, ie. [0..1] --> [1..0] */ - float dir; -} faceInfo[5] = { - { 0, 1, 2, 0, 1.0, 1.0 }, /* front */ - { 0, 2, 1, 0, -1.0, 1.0 }, /* top */ - { 0, 2, 1, 0, 1.0, -1.0 }, /* bottom */ - { 1, 2, 0, 1, -1.0, 1.0 }, /* left */ - { 1, 2, 0, 1, 1.0, -1.0 }, /* right */ -}; - -static struct { - int xl; - int yl; - float dir; -} edgeInfo[4] = { - { 0, 1, -1.0 }, - { 0, 1, 1.0 }, - { 1, 0, -1.0 }, - { 1, 0, 1.0 } -}; - -void -makeSphereMapMesh(void) -{ - float st[2]; /* (s,t) coordinate */ - /* range=[0..1,0..1] */ - float v[3]; /* (x,y,z) location on cube map */ - /* range=[-1..1,-1..1,-1..1] */ - float rv[3]; /* reflection vector, ie. cube map location */ - /* normalized onto unit sphere */ - float len; /* distance from v[3] to origin */ - /* for converting to rv[3] */ - int side; /* which of 5 faces (all but back face) */ - int i, j; - int xl, yl, zl; /* renamed X, Y, Z index */ - int swap; - int flip; - int edge; /* which edge of back face */ - float sc, tc; /* singularity (s,t) on back face circle */ - - /* for the front and four side faces */ - for (side=0; side<5; side++) { - /* use faceInfo to parameterize face construction */ - xl = faceInfo[side].xl; - yl = faceInfo[side].yl; - zl = faceInfo[side].zl; - swap = faceInfo[side].swap; - flip = faceInfo[side].flip; - /* cube map "Z" coordinate */ - v[zl] = faceInfo[side].dir; - - for (i=0; i 2) { - float s, t; /* interpolated (s,t) */ - float ds, dt; /* delta s and delta t */ - float x, y, z; - - /* Start interpolating from the edge. */ - s = st[0]; - t = st[1]; - - /* Calculate delta s and delta t for interpolation. */ - ds = (sc - s) / (RINGS-1); - dt = (tc - t) / (RINGS-1); - - for (i=1; i -#include -#include - -GLfloat up[3] = { 0, 1, 0 }; -GLfloat eye[3] = { 0, 0, -20 }; -GLfloat obj[3] = { 0, 0, 0 }; - -static int W, H, w3, h3; - -int angle = 0; -int downx, downy; - -void -reshape(int w, int h) -{ - W = w; - H = h; - - w3 = W/3; - h3 = H/3; -} - -void -drawView(int drawCenterObject) -{ - /* right green small cube (+5,0,-8) */ - glPushMatrix(); - glTranslatef(5.0, 0.0, -8.0); - glRotatef(-45, 1.0, 0.0, 1.0); - glColor3f(0.0, 1.0, 0.0); - glutSolidCube(2.0); - glPopMatrix(); - /* left red cube (-5,0,-8) */ - glPushMatrix(); - glTranslatef(-5.0, 0.0, -8.0); - glRotatef(45, 1.0, 0.0, 1.0); - glColor3f(1.0, 0.0, 0.0); - glutSolidCube(6.0); - glPopMatrix(); - /* left blue cube (-7,0,0); */ - glPushMatrix(); - glTranslatef(-7.0, 0.0, 0.0); - glColor3f(0.0, 0.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* right cyan big cube (+7,0,0) */ - glPushMatrix(); - glTranslatef(7.0, 0.0, 0.0); - glRotatef(30, 1.0, 1.0, 0.0); - glColor3f(0.0, 1.0, 1.0); - glutSolidCube(5.0); - glPopMatrix(); - /* distant yellow sphere (0,0,+10) */ - glPushMatrix(); - glTranslatef(0.0, 0.0, 10.0); - glColor3f(1.0, 1.0, 0.0); - glutSolidSphere(7.0, 8, 8); - glPopMatrix(); - /* top white sphere (0,+5,0) */ - glPushMatrix(); - glTranslatef(0.0, 5.0, 0.0); - glColor3f(1.0, 1.0, 1.0); - glutSolidSphere(2.0, 8, 8); - glPopMatrix(); - /* bottom magenta big sphere (0,-6,0) */ - glPushMatrix(); - glTranslatef(0.0, -6.0, 0.0); - glColor3f(1.0, 0.0, 1.0); - glutSolidSphere(4.0, 8, 8); - glPopMatrix(); - - if (drawCenterObject) { - glPushMatrix(); - glScalef(3.0, 3.0, 3.0); - glColor3f(1.0, 1.0, 1.0); - glutSolidIcosahedron(); - glPopMatrix(); - } -} - -void -setViewArea(GLint x, GLint y, GLsizei w, GLsizei h) -{ - glViewport(x, y, w, h); - glScissor(x, y, w, h); -} - -void -positionLights(void) -{ - static GLfloat light1Pos[4] = { -41.0, 41.0, -41.0, 1.0 }; - static GLfloat light2Pos[4] = { +41.0, 0.0, -41.0, 1.0 }; - static GLfloat light3Pos[4] = { -41.0, 0.0, +41.0, 1.0 }; - static GLfloat light4Pos[4] = { +41.0, 0.0, +41.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, light1Pos); - glLightfv(GL_LIGHT1, GL_POSITION, light2Pos); - glLightfv(GL_LIGHT2, GL_POSITION, light3Pos); - glLightfv(GL_LIGHT3, GL_POSITION, light4Pos); -} - -struct { - GLfloat angle; - GLfloat x, y, z; -} faceInfo[6] = { - { 0.0, +1.0, 0.0, 0.0 }, /* front */ - { 90.0, -1.0, 0.0, 0.0 }, /* top */ - { 90.0, +1.0, 0.0, 0.0 }, /* bottom */ - { 90.0, 0.0, -1.0, 0.0 }, /* left */ - { 90.0, 0.0, +1.0, 0.0 }, /* right */ - { 180.0, -1.0, 0.0, 0.0 } /* back */ -}; - -void -configFace(int i) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glRotatef(faceInfo[i].angle, - faceInfo[i].x, faceInfo[i].y, faceInfo[i].z); - gluLookAt(obj[0], obj[1], obj[2], /* "eye" at object */ - eye[0], eye[1], eye[2], /* looking at eye */ - up[0], up[1], up[2]); - positionLights(); -} - -void -display(void) -{ - /* initial clear */ - glViewport(0, 0, W, H); - glClearColor(0.5, 0.5, 0.5, 0.5); /* clear to gray */ - glDisable(GL_SCISSOR_TEST); - glClear(GL_COLOR_BUFFER_BIT); - glEnable(GL_SCISSOR_TEST); - glClearColor(0.0, 0.0, 0.0, 0.0); - - /* eye view (bottom right) */ - setViewArea(2*w3+4, 4, w3 - 8, h3 - 8); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0, 0.5, 40.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(eye[0], eye[1], eye[2], /* eye at eye */ - obj[0], obj[1], obj[2], /* looking at object */ - up[0], up[1], up[2]); - - positionLights(); - drawView(1); - - /* six views from object... */ - - /* Projection has 90 degree field of view (6 make a cube). */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90.0, 1.0, 0.5, 40.0); - - /* front view (center) */ - setViewArea(w3, h3, w3, h3); - configFace(0); - drawView(0); - - /* top view */ - setViewArea(w3, 2*h3, w3, h3); - configFace(1); - drawView(0); - - /* bottom view */ - setViewArea(w3, 0, w3, h3); - configFace(2); - drawView(0); - - /* left view */ - setViewArea(0, h3, w3, h3); - configFace(3); - drawView(0); - - /* right view */ - setViewArea(2*w3, h3, w3, h3); - configFace(4); - drawView(0); - - /* back view (top left) */ - setViewArea(4, 2*h3 + 4, w3 - 8, h3 - 8); - configFace(5); - drawView(0); - - glutSwapBuffers(); -} - -void -menu(int value) -{ - switch (value) { - case 1: - glEnable(GL_LIGHTING); - printf("enable\n"); - break; - case 2: - glDisable(GL_LIGHTING); - printf("disable\n"); - break; - } - glutPostRedisplay(); -} - -void -motion(int x, int y) -{ - /* Pretty weak viewing model. Eye gets located */ - /* on cylinder on the out skirts of the scene. */ - angle += (x - downx); - angle = angle % 360; - eye[0] = sin(angle * 3.14159/180.0) * -20; - eye[2] = cos(angle * 3.14159/180.0) * -20; - eye[1] = eye[1] + 0.1 * (y - downy); - if (eye[1] > +15) eye[1] = +15; - if (eye[1] < -15) eye[1] = -15; - glutPostRedisplay(); - downx = x; - downy = y; -} - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - downx = x; - downy = y; - } - } -} - -void -initGraphicsState(void) -{ - GLfloat lightColor[4] = { 0.6, 0.6, 0.6, 1.0 }; /* white */ - - glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1); - glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT2, GL_DIFFUSE, lightColor); - glLightfv(GL_LIGHT3, GL_DIFFUSE, lightColor); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_LIGHT2); - glEnable(GL_LIGHT3); - glEnable(GL_DEPTH_TEST); - glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - glEnable(GL_NORMALIZE); -} - -int -main(int argc, char **argv) -{ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutCreateWindow("sixviews"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - - initGraphicsState(); - - glutCreateMenu(menu); - glutAddMenuEntry("light on", 1); - glutAddMenuEntry("light off", 2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMouseFunc(mouse); - glutMotionFunc(motion); - - glutMainLoop(); - return 0; -} diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/sixviews.dsp b/lib/glut-3.7.6/progs/spheremap/hacks/sixviews.dsp deleted file mode 100644 index 06cb69b752d36036e2b7ff06617affde9876bea9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/sixviews.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sixviews" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sixviews - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sixviews.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sixviews.mak" CFG="sixviews - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sixviews - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sixviews - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sixviews - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sixviews - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sixviews - Win32 Release" -# Name "sixviews - Win32 Debug" -# Begin Source File - -SOURCE=.\sixviews.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.c b/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.c deleted file mode 100644 index 377e113f6f672ee2b965783ad04a85ed531d9efe..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.c +++ /dev/null @@ -1,515 +0,0 @@ - -/* smapmesh.c - construct a cube map from sphere map via warp - mesh */ - -#include -#include -#include -#include -#include - -#if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1) -#define glBindTexture(A,B) glBindTextureEXT(A,B) -#endif - -static int emphasize = 0; -static int clearToWhite = 0; - -/* (x,y,z) reflection vector --> (s,t) sphere map coordinates */ -void -rvec2st(float v[3], float st[2]) -{ - double m; - - /** In Section 2.10.4 ("Generating texture coordinates") of - the OpenGL 1.1 specification, you will find the - GL_SPHERE_MAP equations: - - n' = normal after transformation to eye coordinates - u = unit vector from origin to vertex in eye coordinates - - (rx, ry, rz) = u - 2 * n' * transpose(n') * u - - m = 2 * sqrt(rx^2 + ry^2 + (rz + 1)^2)) - - s = rx/m + 0.5 t = ry/m + 0.5 - - The equation for calculating (rx, ry, rz) is the equation - for calculating the reflection vector for a surface and - observer. The explanation and derivation for this - equation is found in Roger's "Procedural Elements for - Computer Graphics" 2nd ed. in Section 5-5 ("Determining - the Reflection Vector"). Note that Roger's convention has - the Z axis in the opposite direction from the OpenGL - convention. */ - - m = 2 * sqrt(v[0] * v[0] + v[1] * v[1] + (v[2] + 1) * (v[2] + 1)); - - st[0] = v[0] / m + 0.5; - st[1] = v[1] / m + 0.5; -} - -/* (s,t) sphere map coordinate --> reflection verctor (x,y,z) */ -void -st2rvec(float s, float t, float *xp, float *yp, float *zp) -{ - double rx, ry, rz; - double tmp1, tmp2; - - /** Using algebra to invert the sphere mapping equations shown - above in rvec2st, you get: - - rx = 2*sqrt(-4*s^2 + 4*s - 4*t^2 + 4*t - 1)*(2*s-1) - ry = 2*sqrt(-4*s^2 + 4*s - 4*t^2 + 4*t - 1)*(2*t-1) - rz = -8*s^2 + 8*s - 8*t^2 + 8*t - 3 - - The C code below eliminates common subexpressions. */ - - tmp1 = s * (1 - s) + t * (1 - t); - tmp2 = 2 * sqrt(4 * tmp1 - 1); - - rx = tmp2 * (2 * s - 1); - ry = tmp2 * (2 * t - 1); - rz = 8 * tmp1 - 3; - - *xp = (float) rx; - *yp = (float) ry; - *zp = (float) rz; -} - -/* For best results (ie, to avoid cracks in the sphere map - construction, XSTEPS, YSTEPS, and SPOKES should all be - equal. */ - -/* Increasing the nSTEPS and RINGS constants below will give - you a better approximation to the sphere map image warp at - the cost of more polygons to render the image warp. My bet - is that no will be able to the improved quality of a higher - level of tessellation. */ - -#define XSTEPS 8 -#define YSTEPS 8 -#define SPOKES 8 -#define RINGS 3 - -typedef struct _STXY { - GLfloat s, t; - GLfloat x, y; -} STXY; - -STXY face[5][YSTEPS][XSTEPS]; -STXY back[4][RINGS][SPOKES]; - -static struct { - int xl; - int yl; - int zl; - float dir; -} faceInfo[5] = { - { 0, 1, 2, 1.0 } , /* front */ - { 0, 2, 1, 1.0 } , /* top */ - { 0, 2, 1, -1.0 } , /* bottom */ - { 1, 2, 0, -1.0 } , /* left */ - { 1, 2, 0, 1.0 } , /* right */ -}; - -static struct { - int xl; - int yl; - float dir; -} edgeInfo[4] = { - { 0, 1, -1.0 } , - { 0, 1, 1.0 } , - { 1, 0, -1.0 } , - { 1, 0, 1.0 } -}; - -void -makeSpheremapMapping(void) -{ - float st[2]; /* (s,t) coordinate */ - /* range=[0..1,0..1] */ - - float v[3]; /* (x,y,z) location on cube map */ - /* range=[-1..1,-1..1,-1..1] */ - - float rv[3]; /* reflection vector, ie. cube map */ - /* location normalized onto unit sphere */ - - float len; /* distance from v[3] to origin */ - /* for converting to rv[3] */ - - int side; /* which of 5 faces (all but back face) */ - - int i, j; - int xl, yl, zl; /* renamed X, Y, Z index */ - - int edge; /* which edge of back face */ - - float sc, tc; - - /* for the front and four side faces */ - for (side = 0; side < 5; side++) { - - /* use faceInfo to parameterize face construction */ - xl = faceInfo[side].xl; - yl = faceInfo[side].yl; - zl = faceInfo[side].zl; - /* cube map "Z" coordinate */ - v[zl] = faceInfo[side].dir; - - for (i = 0; i < YSTEPS; i++) { - /* cube map "Y" coordinate */ - v[yl] = 2.0 / (YSTEPS - 1) * i - 1.0; - for (j = 0; j < XSTEPS; j++) { - /* cube map "X" coordinate */ - v[xl] = 2.0 / (XSTEPS - 1) * j - 1.0; - - /* normalize cube map location to construct */ - /* reflection vector */ - len = sqrt(1.0 + v[xl] * v[xl] + v[yl] * v[yl]); - rv[0] = v[0] / len; - rv[1] = v[1] / len; - rv[2] = v[2] / len; - - /* map reflection vector to sphere map (s,t) */ - /* NOTE: face[side][i][j] (x,y) gets updated */ - rvec2st(rv, &face[side][i][j].x); - - /* update texture coordinate, */ - /* normalize [-1..1,-1..1] to [0..1,0..1] */ - face[side][i][j].s = (v[xl] + 1.0) / 2.0; - face[side][i][j].t = (v[yl] + 1.0) / 2.0; - } - } - } - - /* The back face must be specially handled. The center point - in the back face of a cube map becomes a a singularity - around the circular edge of a sphere map. */ - - /* Carefully work from each edge of the back face to center - of back face mapped to the outside of the sphere map. */ - - /* cube map "Z" coordinate, always -1 since backface */ - v[2] = -1; - - /* for each edge */ - /* [x=-1, y=-1..1, z=-1] */ - /* [x= 1, y=-1..1, z=-1] */ - /* [x=-1..1, y=-1, z=-1] */ - /* [x=-1..1, y= 1, z=-1] */ - for (edge = 0; edge < 4; edge++) { - /* cube map "X" coordinate */ - v[edgeInfo[edge].xl] = edgeInfo[edge].dir; - for (j = 0; j < SPOKES; j++) { - /* cube map "Y" coordinate */ - v[edgeInfo[edge].yl] = 2.0 / (SPOKES - 1) * j - 1.0; - - /* normalize cube map location to construct */ - /* reflection vector */ - len = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - rv[0] = v[0] / len; - rv[1] = v[1] / len; - rv[2] = v[2] / len; - - /* Map reflection vector to sphere map (s,t). */ - rvec2st(rv, st); - - /* determine distinance from the center of sphere */ - /* map (0.5,0.5) to (s,t) */ - len = sqrt((st[0] - 0.5) * (st[0] - 0.5) + (st[1] - 0.5) * (st[1] - 0.5)); - - /* calculate (s,t) location extended to the singularity */ - /* at the center of the back face (ie, extend to */ - /* circle edge of the sphere map) */ - sc = (st[0] - 0.5) / len * 0.5 + 0.5; - tc = (st[1] - 0.5) / len * 0.5 + 0.5; - - /* (s,t) at back face edge */ - back[edge][0][j].s = (v[0] + 1.0) / 2.0; - back[edge][0][j].t = (v[1] + 1.0) / 2.0; - back[edge][0][j].x = st[0]; - back[edge][0][j].y = st[1]; - - /* If just two rings, we just generate a back face edge - vertex and a center vertex (2 rings), but if there are - more rings, we carefully interpolate between the edge - and center vertices. Notice how st2rvec is used to - map the interpolated (s,t) into a reflection vector - that must then be extended to the back cube face (it - is not correct to just interpolate the texture - coordinates!). */ - if (RINGS > 2) { - float s, t; /* interpolated (s,t) */ - - float ds, dt; /* delta s and delta t */ - - float x, y, z; - - /* Start interpolating from the edge. */ - s = st[0]; - t = st[1]; - - /* Calculate delta s and delta t for interpolation. */ - ds = (sc - s) / (RINGS - 1); - dt = (tc - t) / (RINGS - 1); - - for (i = 1; i < RINGS - 1; i++) { - /* Incremental interpolation of (s,t). */ - s = s + ds; - t = t + dt; - - /* Calculate reflection vector from interpolated */ - /* (s,t). */ - st2rvec(s, t, &x, &y, &z); - /* Assert that z must be on the back cube face. */ - assert(z <= -sqrt(1.0 / 3.0)); - /* Extend reflection vector out of back cube face. */ - /* Note: z is negative value so negate z to avoid */ - /* inverting x and y! */ - x = x / -z; - y = y / -z; - - back[edge][i][j].s = (x + 1.0) / 2.0; - back[edge][i][j].t = (y + 1.0) / 2.0; - back[edge][i][j].x = s; - back[edge][i][j].y = t; - } - } - /* (s,t) at circle edge of the sphere map is ALWAYS */ - /* at center of back cube map face */ - back[edge][RINGS - 1][j].s = 0.5; - back[edge][RINGS - 1][j].t = 0.5; - /* location of singularity at the edge of the sphere map */ - back[edge][RINGS - 1][j].x = sc; - back[edge][RINGS - 1][j].y = tc; - } - } -} - -void -drawSphereMapping(GLuint texobj[6]) -{ - int side, i, j; - - /* five front and side faces */ - for (side = 0; side < 5; side++) { - - if (emphasize == side + 1) { - glLineWidth(3.0); - } - /* bind to texture for given face of cube map */ - glBindTexture(GL_TEXTURE_2D, texobj[side]); - for (i = 0; i < YSTEPS - 1; i++) { - glBegin(GL_QUAD_STRIP); - for (j = 0; j < XSTEPS; j++) { - glTexCoord2fv(&face[side][i][j].s); - glVertex2fv(&face[side][i][j].x); - glTexCoord2fv(&face[side][i + 1][j].s); - glVertex2fv(&face[side][i + 1][j].x); - } - glEnd(); - } - - if (emphasize == side + 1) { - glLineWidth(1.0); - } - } - - /* Back face specially rendered for its singularity! */ - - if (emphasize == 6) { - glLineWidth(3.0); - } - /* Bind to texture for back face of cube map. */ - glBindTexture(GL_TEXTURE_2D, texobj[side]); - for (side = 0; side < 4; side++) { - for (j = 0; j < RINGS - 1; j++) { - glBegin(GL_QUAD_STRIP); - for (i = 0; i < SPOKES; i++) { - glTexCoord2fv(&back[side][j][i].s); - glVertex2fv(&back[side][j][i].x); - glTexCoord2fv(&back[side][j + 1][i].s); - glVertex2fv(&back[side][j + 1][i].x); - } - glEnd(); - } - } - - if (emphasize == 6) { - glLineWidth(1.0); - } -} - -static void -textureInit(void) -{ - static int width = 8, height = 8; - static GLubyte tex1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}; - - GLubyte tex[64][3]; - GLint i, j; - - /* setup first texture object */ - glBindTexture(GL_TEXTURE_2D, 1); - /* red on white */ - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - int p = i * width + j; - if (tex1[(height - i - 1) * width + j]) { - tex[p][0] = 255; - tex[p][1] = 0; - tex[p][2] = 0; - } else { - tex[p][0] = 255; - tex[p][1] = 255; - tex[p][2] = 255; - } - } - } - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, - GL_RGB, GL_UNSIGNED_BYTE, tex); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); -} - -static void -display(void) -{ - /* All faces get the same texture! */ - GLuint texobjs[6] = {1, 1, 1, 1, 1, 1}; - - /* Clear to gray. */ - if (clearToWhite) { - glClearColor(1.0, 1.0, 1.0, 1.0); - glColor3f(0.0, 0.0, 0.0); - emphasize = 0; - glLineWidth(3.0); - } else { - glClearColor(0.5, 0.5, 0.5, 1.0); - glColor3f(1.0, 1.0, 1.0); - glLineWidth(1.0); - } - glClear(GL_COLOR_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 1, 0, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - drawSphereMapping(texobjs); - - glutSwapBuffers(); -} - -static void -menu(int value) -{ - switch (value) { - case 1: - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case 2: - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - break; - case 3: - glEnable(GL_TEXTURE_2D); - break; - case 4: - glDisable(GL_TEXTURE_2D); - break; - case 5: - glEnable(GL_LINE_SMOOTH); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - break; - case 6: - glDisable(GL_LINE_SMOOTH); - glDisable(GL_BLEND); - break; - case 7: - emphasize++; - emphasize %= 7; - break; - case 8: - clearToWhite = 1; - break; - case 9: - clearToWhite = 0; - break; - } - glutPostRedisplay(); -} - -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: - exit(0); - break; - case ' ': - menu(7); - break; - case 'a': - menu(5); - break; - case 'w': - menu(2); - break; - case 'f': - menu(1); - break; - case 't': - menu(3); - break; - case 'n': - menu(4); - break; - } -} - -int -main(int argc, char **argv) -{ - makeSpheremapMapping(); - - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("smapmesh"); - - textureInit(); - glEnable(GL_TEXTURE_2D); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glutDisplayFunc(display); - - glutKeyboardFunc(keyboard); - - glutCreateMenu(menu); - glutAddMenuEntry("fill", 1); - glutAddMenuEntry("wireframe", 2); - glutAddMenuEntry("texture", 3); - glutAddMenuEntry("no texture", 4); - glutAddMenuEntry("antialias lines", 5); - glutAddMenuEntry("aliased lines", 6); - glutAddMenuEntry("switch emphasis", 7); - glutAddMenuEntry("clear to white", 8); - glutAddMenuEntry("clear to gray", 9); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - - return 0; -} diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.dsp b/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.dsp deleted file mode 100644 index 421b63ebb7e3f7f18f60bf0db28ff314a27a6f06..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="smapmesh" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=smapmesh - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "smapmesh.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "smapmesh.mak" CFG="smapmesh - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "smapmesh - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "smapmesh - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "smapmesh - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "smapmesh - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "smapmesh - Win32 Release" -# Name "smapmesh - Win32 Debug" -# Begin Source File - -SOURCE=.\smapmesh.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.h b/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.h deleted file mode 100644 index 067433de5e4a3f2263074287b4aab58dbdb108bb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/smapmesh.h +++ /dev/null @@ -1,38 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* smapmesh.h - header for cview2smap program */ - -#define XSTEPS 8 -#define YSTEPS 8 -#define SPOKES 8 -#define RINGS 3 - -/* #define SPHERE_MAP_EDGE_EXTEND */ - -#ifdef SPHERE_MAP_EDGE_EXTEND -#define EDGE_EXTEND 1 -#else -#define EDGE_EXTEND 0 -#endif - -typedef struct _STXY { - GLfloat s, t; - GLfloat x, y; -} STXY; - -extern STXY face[5][YSTEPS][XSTEPS]; -extern STXY back[4][RINGS+EDGE_EXTEND][SPOKES]; - -extern void makeSphereMapMesh(void); -extern void drawSphereMapMesh(GLuint texobj[6]); - -extern void buildSphereMap(GLuint spheremap, GLuint texobjs[6], int texdim, - GLfloat eye[3], GLfloat obj[3], GLfloat up[3], - void (*positionLights)(int view, void *context), - void (*drawView)(int view, void *context), - int outline, void *context); diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/st2rvec.c b/lib/glut-3.7.6/progs/spheremap/hacks/st2rvec.c deleted file mode 100644 index f3320fdf4f1c4f12c33b0a4a7ddaa1b736a3e8ff..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/st2rvec.c +++ /dev/null @@ -1,85 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* st2rvec - converts between reflection vectors and sphere map s & t */ - -#include -#include - -void -rvec2st(float rx, float ry, float rz, float *sp, float *tp) -{ - double s, t; - double m; - - m = 2 * sqrt(rx*rx + ry*ry + (rz+1)*(rz+1)); - - s = rx/m + 0.5; - t = ry/m + 0.5; - - *sp = (float) s; - *tp = (float) t; -} - -double -dist(float x, float y, float z) -{ - return sqrt(x*x + y*y + z*z); -} - -void -st2rvec(float s, float t, float *xp, float *yp, float *zp) -{ - double rx, ry, rz; - double tmp1, tmp2; - - tmp1 = s*(1-s) + t*(1-t); - tmp2 = 2 * sqrt(4*tmp1 - 1); - - rx = tmp2 * (2*s-1); - ry = tmp2 * (2*t-1); - rz = 8 * tmp1 - 3; - - *xp = (float) rx; - *yp = (float) ry; - *zp = (float) rz; -} - -int -main(int argc, char **argv) -{ - float s, t; - float x, y, z; - int count; - - printf("\nYOU ENTER S & T SPHERE MAP TEXTURE COORDINATES...\n"); - printf("\n I CONVERT IT TO A NORMALIZED REFLECTION VECTOR"); - printf("\n (AND CONVERT BACK!)\n\n"); - - while (!feof(stdin)) { - printf("(s,t) > "); - count = scanf("%f%f", &s, &t); - if (count == EOF) { - break; - } else if (count == 2) { - printf("READ s=%f, t=%f\n\n", s, t); - - st2rvec(s, t, &x, &y, &z); - printf("CONVERTING TO REFLECTION VECTOR:\n"); - printf(" x=%f, y=%f, z=%f\n\n", x, y, z); - - printf("CONVERTING BACK TO TEXTURE COORDINATE:\n"); - rvec2st(x, y, z, &s, &t); - printf(" s=%f, t=%f\n\n", s, t); - } else { - printf("BAD INPUT!\n\n"); - break; - } - } - - return 0; -} diff --git a/lib/glut-3.7.6/progs/spheremap/hacks/st2rvec.dsp b/lib/glut-3.7.6/progs/spheremap/hacks/st2rvec.dsp deleted file mode 100644 index 957d6e39f97bfb6d0b02f82c92855618af583b7c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/spheremap/hacks/st2rvec.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="st2rvec" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=st2rvec - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "st2rvec.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "st2rvec.mak" CFG="st2rvec - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "st2rvec - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "st2rvec - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "st2rvec - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "st2rvec - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "st2rvec - Win32 Release" -# Name "st2rvec - Win32 Debug" -# Begin Source File - -SOURCE=.\st2rvec.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/texfont.dsw b/lib/glut-3.7.6/progs/texfont.dsw deleted file mode 100644 index 5416c4994928a2b2898b36aa93ce16cd1a30c6c4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont.dsw +++ /dev/null @@ -1,86 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\texfont\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name showtxf - End Project Dependency - Begin Project Dependency - Project_Dep_Name simpletxf - End Project Dependency - Begin Project Dependency - Project_Dep_Name txfdemo - End Project Dependency -}}} - -############################################################################### - -Project: "gentexfont"=".\texfont\gentexfont.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "showtxf"=".\texfont\showtxf.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "simpletxf"=".\texfont\simpletxf.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "txfdemo"=".\texfont\txfdemo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/glut-3.7.6/progs/texfont/Imakefile b/lib/glut-3.7.6/progs/texfont/Imakefile deleted file mode 100644 index 715dd2946c5e4fe825bb1719ec65a020e4145332..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/Imakefile +++ /dev/null @@ -1,17 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../Glut.cf" - -TARGETS = txfdemo simpletxf gentexfont showtxf - -SRCS = gentexfont.c showtxf.c simpletxf.c texfont.c txfdemo.c - -AllTarget($(TARGETS)) - -SimpleGlutProgramTarget(gentexfont) -NormalGlutProgramTarget(showtxf,showtxf.o texfont.o) -NormalGlutProgramTarget(simpletxf,simpletxf.o texfont.o) -NormalGlutProgramTarget(txfdemo,txfdemo.o texfont.o) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/texfont/README b/lib/glut-3.7.6/progs/texfont/README deleted file mode 100644 index f889bf316eb8bb8dbdeaa3c578dbd98d4dfecf50..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/README +++ /dev/null @@ -1,35 +0,0 @@ - -This directory has code for using texture mapped fonts. For more -information on this code, see: - - http://reality.sgi.com/mjk_asd/tips/TexFont/TexFont.html - -Here is a quick description of the programs: - - gentexfont - program to capture X fonts from an X server and - write out .txf files usable the TexFont API. - - showtxf - a program to show the texture encoded within .txf - files generated by gentexfont. - - txfdemo - a demonstration of texture mapped text using the TexFont - API to put text on a spinning cube, including text wrapped in a - circle. - - simpletxf - a very simple TexFont program showing how to rotate - texture mapped text around. - -The directory also contains some sample .txf files (that can be used -with the demonstration programs); - - curlfont.txf - default.txf - djb.txf - haeberli.txf - rockfont.txf - sorority.txf - -Of course, with gentexfont, you can generate your own. - -- Mark Kilgard - May 23, 1997 diff --git a/lib/glut-3.7.6/progs/texfont/TexFont.h b/lib/glut-3.7.6/progs/texfont/TexFont.h deleted file mode 100644 index 86ec9aa159f1f78b714a6212b5cb22e988d8d0ac..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/TexFont.h +++ /dev/null @@ -1,93 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#ifndef __TEXFONT_H__ -#define __TEXFONT_H__ - -#include - -#define TXF_FORMAT_BYTE 0 -#define TXF_FORMAT_BITMAP 1 - -typedef struct { - unsigned short c; /* Potentially support 16-bit glyphs. */ - unsigned char width; - unsigned char height; - signed char xoffset; - signed char yoffset; - signed char advance; - char dummy; /* Space holder for alignment reasons. */ - short x; - short y; -} TexGlyphInfo; - -typedef struct { - GLfloat t0[2]; - GLshort v0[2]; - GLfloat t1[2]; - GLshort v1[2]; - GLfloat t2[2]; - GLshort v2[2]; - GLfloat t3[2]; - GLshort v3[2]; - GLfloat advance; -} TexGlyphVertexInfo; - -typedef struct { - GLuint texobj; - int tex_width; - int tex_height; - int max_ascent; - int max_descent; - int num_glyphs; - int min_glyph; - int range; - unsigned char *teximage; - TexGlyphInfo *tgi; - TexGlyphVertexInfo *tgvi; - TexGlyphVertexInfo **lut; -} TexFont; - -extern char *txfErrorString(void); - -extern TexFont *txfLoadFont( - char *filename); - -extern void txfUnloadFont( - TexFont * txf); - -extern GLuint txfEstablishTexture( - TexFont * txf, - GLuint texobj, - GLboolean setupMipmaps); - -extern void txfBindFontTexture( - TexFont * txf); - -extern void txfGetStringMetrics( - TexFont * txf, - char *string, - int len, - int *width, - int *max_ascent, - int *max_descent); - -extern void txfRenderGlyph( - TexFont * txf, - int c); - -extern void txfRenderString( - TexFont * txf, - char *string, - int len); - -extern void txfRenderFancyString( - TexFont * txf, - char *string, - int len); - -#endif /* __TEXFONT_H__ */ diff --git a/lib/glut-3.7.6/progs/texfont/_all.dsp b/lib/glut-3.7.6/progs/texfont/_all.dsp deleted file mode 100644 index 6a4421548c00fafc07206c76afba07e62ce03827..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "_all___Win32_Debug" -# PROP BASE Intermediate_Dir "_all___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/texfont/abgr.dsp b/lib/glut-3.7.6/progs/texfont/abgr.dsp deleted file mode 100644 index f2abc4ff9efa560b07e4bcc5216c05b0715cf4ca..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/abgr.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="abgr" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=abgr - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "abgr.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "abgr.mak" CFG="abgr - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "abgr - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "abgr - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "abgr - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "abgr - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "abgr - Win32 Release" -# Name "abgr - Win32 Debug" -# Begin Source File - -SOURCE=.\abgr.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/texfont/curlfont.txf b/lib/glut-3.7.6/progs/texfont/curlfont.txf deleted file mode 100644 index c1a12014aa0cbd6629a3e15b1c6d144de99c5944..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/texfont/curlfont.txf and /dev/null differ diff --git a/lib/glut-3.7.6/progs/texfont/default.txf b/lib/glut-3.7.6/progs/texfont/default.txf deleted file mode 100644 index 6e22982608329953d090a43b16a7d825e7a30033..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/texfont/default.txf and /dev/null differ diff --git a/lib/glut-3.7.6/progs/texfont/djb.txf b/lib/glut-3.7.6/progs/texfont/djb.txf deleted file mode 100644 index b7e30122dfd106bf9008275e80208aa041dc4beb..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/texfont/djb.txf and /dev/null differ diff --git a/lib/glut-3.7.6/progs/texfont/gentexfont.c b/lib/glut-3.7.6/progs/texfont/gentexfont.c deleted file mode 100644 index a987abf140ecc097e97c8a2b1d9fbee51c3daffc..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/gentexfont.c +++ /dev/null @@ -1,560 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o gentexfont gentexfont.c -lX11 */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "TexFont.h" - -typedef struct { - short width; - short height; - short xoffset; - short yoffset; - short advance; - unsigned char *bitmap; -} PerGlyphInfo, *PerGlyphInfoPtr; - -typedef struct { - int min_char; - int max_char; - int max_ascent; - int max_descent; - PerGlyphInfo glyph[1]; -} FontInfo, *FontInfoPtr; - -Display *dpy; -FontInfoPtr fontinfo; -int format = TXF_FORMAT_BITMAP; -int gap = 1; - -/* #define REPORT_GLYPHS */ -#ifdef REPORT_GLYPHS -#define DEBUG_GLYPH4(msg,a,b,c,d) printf(msg,a,b,c,d) -#define DEBUG_GLYPH(msg) printf(msg) -#else -#define DEBUG_GLYPH4(msg,a,b,c,d) { /* nothing */ } -#define DEBUG_GLYPH(msg) { /* nothing */ } -#endif - -#define MAX_GLYPHS_PER_GRAB 512 /* this is big enough for 2^9 glyph - character sets */ - -FontInfoPtr -SuckGlyphsFromServer(Display * dpy, Font font) -{ - Pixmap offscreen; - XFontStruct *fontinfo; - XImage *image; - GC xgc; - XGCValues values; - int numchars; - int width, height, pixwidth; - int i, j; - XCharStruct *charinfo; - XChar2b character; - unsigned char *bitmapData; - int x, y; - int spanLength; - int charWidth, charHeight, maxSpanLength; - int grabList[MAX_GLYPHS_PER_GRAB]; - int glyphsPerGrab = MAX_GLYPHS_PER_GRAB; - int numToGrab, thisglyph; - FontInfoPtr myfontinfo; - - fontinfo = XQueryFont(dpy, font); - if (!fontinfo) - return NULL; - - numchars = fontinfo->max_char_or_byte2 - fontinfo->min_char_or_byte2 + 1; - if (numchars < 1) - return NULL; - - myfontinfo = (FontInfoPtr) malloc(sizeof(FontInfo) + (numchars - 1) * sizeof(PerGlyphInfo)); - if (!myfontinfo) - return NULL; - - myfontinfo->min_char = fontinfo->min_char_or_byte2; - myfontinfo->max_char = fontinfo->max_char_or_byte2; - myfontinfo->max_ascent = fontinfo->max_bounds.ascent; - myfontinfo->max_descent = fontinfo->max_bounds.descent; - - width = fontinfo->max_bounds.rbearing - fontinfo->min_bounds.lbearing; - height = fontinfo->max_bounds.ascent + fontinfo->max_bounds.descent; - - maxSpanLength = (width + 7) / 8; - /* Be careful determining the width of the pixmap; the X protocol allows - pixmaps of width 2^16-1 (unsigned short size) but drawing coordinates - max out at 2^15-1 (signed short size). If the width is too large, we - need to limit the glyphs per grab. */ - if ((glyphsPerGrab * 8 * maxSpanLength) >= (1 << 15)) { - glyphsPerGrab = (1 << 15) / (8 * maxSpanLength); - } - pixwidth = glyphsPerGrab * 8 * maxSpanLength; - offscreen = XCreatePixmap(dpy, RootWindow(dpy, DefaultScreen(dpy)), - pixwidth, height, 1); - - values.font = font; - values.background = 0; - values.foreground = 0; - xgc = XCreateGC(dpy, offscreen, GCFont | GCBackground | GCForeground, &values); - - XFillRectangle(dpy, offscreen, xgc, 0, 0, 8 * maxSpanLength * glyphsPerGrab, height); - XSetForeground(dpy, xgc, 1); - - numToGrab = 0; - if (fontinfo->per_char == NULL) { - charinfo = &(fontinfo->min_bounds); - charWidth = charinfo->rbearing - charinfo->lbearing; - charHeight = charinfo->ascent + charinfo->descent; - spanLength = (charWidth + 7) / 8; - } - for (i = 0; i < numchars; i++) { - if (fontinfo->per_char != NULL) { - charinfo = &(fontinfo->per_char[i]); - charWidth = charinfo->rbearing - charinfo->lbearing; - charHeight = charinfo->ascent + charinfo->descent; - if (charWidth == 0 || charHeight == 0) { - /* Still must move raster pos even if empty character */ - myfontinfo->glyph[i].width = 0; - myfontinfo->glyph[i].height = 0; - myfontinfo->glyph[i].xoffset = 0; - myfontinfo->glyph[i].yoffset = 0; - myfontinfo->glyph[i].advance = charinfo->width; - myfontinfo->glyph[i].bitmap = NULL; - goto PossiblyDoGrab; - } - } - grabList[numToGrab] = i; - - /* XXX is this right for large fonts? */ - character.byte2 = (i + fontinfo->min_char_or_byte2) & 255; - character.byte1 = (i + fontinfo->min_char_or_byte2) >> 8; - - /* XXX we could use XDrawImageString16 which would also paint the backing - - rectangle but X server bugs in some scalable font rasterizers makes it - - more effective to do XFillRectangles to clear the pixmap and - XDrawImage16 for the text. */ - XDrawString16(dpy, offscreen, xgc, - -charinfo->lbearing + 8 * maxSpanLength * numToGrab, - charinfo->ascent, &character, 1); - - numToGrab++; - - PossiblyDoGrab: - - if (numToGrab >= glyphsPerGrab || i == numchars - 1) { - image = XGetImage(dpy, offscreen, - 0, 0, pixwidth, height, 1, XYPixmap); - for (j = 0; j < numToGrab; j++) { - thisglyph = grabList[j]; - if (fontinfo->per_char != NULL) { - charinfo = &(fontinfo->per_char[thisglyph]); - charWidth = charinfo->rbearing - charinfo->lbearing; - charHeight = charinfo->ascent + charinfo->descent; - spanLength = (charWidth + 7) / 8; - } - bitmapData = calloc(height * spanLength, sizeof(char)); - if (!bitmapData) - goto FreeFontAndReturn; - DEBUG_GLYPH4("index %d, glyph %d (%d by %d)\n", - j, thisglyph + fontinfo->min_char_or_byte2, charWidth, charHeight); - for (y = 0; y < charHeight; y++) { - for (x = 0; x < charWidth; x++) { - /* XXX The algorithm used to suck across the font ensures that - each glyph begins on a byte boundary. In theory this would - make it convienent to copy the glyph into a byte oriented - bitmap. We actually use the XGetPixel function to extract - each pixel from the image which is not that efficient. We - could either do tighter packing in the pixmap or more - efficient extraction from the image. Oh well. */ - if (XGetPixel(image, j * maxSpanLength * 8 + x, charHeight - 1 - y)) { - DEBUG_GLYPH("x"); - bitmapData[y * spanLength + x / 8] |= (1 << (x & 7)); - } else { - DEBUG_GLYPH(" "); - } - } - DEBUG_GLYPH("\n"); - } - myfontinfo->glyph[thisglyph].width = charWidth; - myfontinfo->glyph[thisglyph].height = charHeight; - myfontinfo->glyph[thisglyph].xoffset = charinfo->lbearing; - myfontinfo->glyph[thisglyph].yoffset = -charinfo->descent; - myfontinfo->glyph[thisglyph].advance = charinfo->width; - myfontinfo->glyph[thisglyph].bitmap = bitmapData; - } - XDestroyImage(image); - numToGrab = 0; - /* do we need to clear the offscreen pixmap to get more? */ - if (i < numchars - 1) { - XSetForeground(dpy, xgc, 0); - XFillRectangle(dpy, offscreen, xgc, 0, 0, 8 * maxSpanLength * glyphsPerGrab, height); - XSetForeground(dpy, xgc, 1); - } - } - } - XFreeGC(dpy, xgc); - XFreePixmap(dpy, offscreen); - return myfontinfo; - -FreeFontAndReturn: - XDestroyImage(image); - XFreeGC(dpy, xgc); - XFreePixmap(dpy, offscreen); - for (j = i - 1; j >= 0; j--) { - if (myfontinfo->glyph[j].bitmap) - free(myfontinfo->glyph[j].bitmap); - } - free(myfontinfo); - return NULL; -} - -void -printGlyph(FontInfoPtr font, int c) -{ - PerGlyphInfoPtr glyph; - unsigned char *bitmapData; - int width, height, spanLength; - int x, y; - - if (c < font->min_char || c > font->max_char) { - printf("out of range glyph\n"); - return; - } - glyph = &font->glyph[c - font->min_char]; - bitmapData = glyph->bitmap; - if (bitmapData) { - width = glyph->width; - spanLength = (width + 7) / 8; - height = glyph->height; - - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - if (bitmapData[y * spanLength + x / 8] & (1 << (x & 7))) { - putchar('X'); - } else { - putchar('.'); - } - } - putchar('\n'); - } - } -} - -void -getMetric(FontInfoPtr font, int c, TexGlyphInfo * tgi) -{ - PerGlyphInfoPtr glyph; - unsigned char *bitmapData; - - tgi->c = c; - if (c < font->min_char || c > font->max_char) { - tgi->width = 0; - tgi->height = 0; - tgi->xoffset = 0; - tgi->yoffset = 0; - tgi->dummy = 0; - tgi->advance = 0; - return; - } - glyph = &font->glyph[c - font->min_char]; - bitmapData = glyph->bitmap; - if (bitmapData) { - tgi->width = glyph->width; - tgi->height = glyph->height; - tgi->xoffset = glyph->xoffset; - tgi->yoffset = glyph->yoffset; - } else { - tgi->width = 0; - tgi->height = 0; - tgi->xoffset = 0; - tgi->yoffset = 0; - } - tgi->dummy = 0; - tgi->advance = glyph->advance; -} - -int -glyphCompare(const void *a, const void *b) -{ - unsigned char *c1 = (unsigned char *) a; - unsigned char *c2 = (unsigned char *) b; - TexGlyphInfo tgi1; - TexGlyphInfo tgi2; - - getMetric(fontinfo, *c1, &tgi1); - getMetric(fontinfo, *c2, &tgi2); - return tgi2.height - tgi1.height; -} - -int -getFontel(unsigned char *bitmapData, int spanLength, int i, int j) -{ - return bitmapData[i * spanLength + j / 8] & (1 << (j & 7)) ? 255 : 0; -} - -void -placeGlyph(FontInfoPtr font, int c, unsigned char *texarea, int stride, int x, int y) -{ - PerGlyphInfoPtr glyph; - unsigned char *bitmapData; - int width, height, spanLength; - int i, j; - - if (c < font->min_char || c > font->max_char) { - printf("out of range glyph\n"); - return; - } - glyph = &font->glyph[c - font->min_char]; - bitmapData = glyph->bitmap; - if (bitmapData) { - width = glyph->width; - spanLength = (width + 7) / 8; - height = glyph->height; - - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - texarea[stride * (y + i) + x + j] = - getFontel(bitmapData, spanLength, i, j); - } - } - } -} - -char * -nodupstring(char *s) -{ - int len, i, p; - char *string; - - len = (int) strlen(s); - string = (char *) calloc(len + 1, 1); - p = 0; - for (i = 0; i < len; i++) { - if (!strchr(string, s[i])) { - string[p] = s[i]; - p++; - } - } - string = realloc(string, p + 1); - return string; -} - -void -main(int argc, char *argv[]) -{ - int texw, texh; - unsigned char *texarea, *texbitmap; - FILE *file; - int len, stride; - unsigned char *glist; - int width, height; - int px, py, maxheight; - TexGlyphInfo tgi; - int usageError = 0; - char *fontname, *filename; - XFontStruct *xfont; - int endianness; - int i, j; - - texw = texh = 256; - glist = " ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijmklmnopqrstuvwxyz?.;,!*:\"/+@#$%^&()"; - fontname = "-adobe-courier-bold-r-normal--46-*-100-100-m-*-iso8859-1"; - filename = "default.txf"; - - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-w")) { - i++; - texw = atoi(argv[i]); - } else if (!strcmp(argv[i], "-h")) { - i++; - texh = atoi(argv[i]); - } else if (!strcmp(argv[i], "-gap")) { - i++; - gap = atoi(argv[i]); - } else if (!strcmp(argv[i], "-byte")) { - format = TXF_FORMAT_BYTE; - break; - } else if (!strcmp(argv[i], "-bitmap")) { - format = TXF_FORMAT_BITMAP; - } else if (!strcmp(argv[i], "-glist")) { - i++; - glist = (unsigned char *) argv[i]; - } else if (!strcmp(argv[i], "-fn")) { - i++; - fontname = argv[i]; - } else if (!strcmp(argv[i], "-file")) { - i++; - filename = argv[i]; - } else { - usageError = 1; - } - } - - if (usageError) { - putchar('\n'); - printf("usage: texfontgen [options] txf-file\n"); - printf(" -w # textureWidth (def=%d)\n", texw); - printf(" -h # textureHeight (def=%d)\n", texh); - printf(" -gap # gap between glyphs (def=%d)\n", gap); - printf(" -bitmap use a bitmap encoding (default)\n"); - printf(" -byte use a byte encoding (less compact)\n"); - printf(" -glist ABC glyph list (def=%s)\n", glist); - printf(" -fn name X font name (def=%s)\n", fontname); - printf(" -file name output file for textured font (def=%s)\n", fontname); - putchar('\n'); - exit(1); - } - texarea = calloc(texw * texh, sizeof(unsigned char)); - glist = (unsigned char *) nodupstring((char *) glist); - - dpy = XOpenDisplay(NULL); - if (!dpy) { - printf("could not open display\n"); - exit(1); - } - /* find an OpenGL-capable RGB visual with depth buffer */ - xfont = XLoadQueryFont(dpy, fontname); - if (!xfont) { - printf("could not get load X font: %s\n", fontname); - exit(1); - } - fontinfo = SuckGlyphsFromServer(dpy, xfont->fid); - if (!fontinfo) { - printf("could not get font glyphs\n"); - exit(1); - } - len = (int) strlen((char *) glist); - qsort(glist, len, sizeof(unsigned char), glyphCompare); - - file = fopen(filename, "wb"); - if (!file) { - printf("could not open %s for writing\n", filename); - exit(1); - } - fwrite("\377txf", 1, 4, file); - endianness = 0x12345678; - /*CONSTANTCONDITION*/ - assert(sizeof(int) == 4); /* Ensure external file format size. */ - fwrite(&endianness, sizeof(int), 1, file); - fwrite(&format, sizeof(int), 1, file); - fwrite(&texw, sizeof(int), 1, file); - fwrite(&texh, sizeof(int), 1, file); - fwrite(&fontinfo->max_ascent, sizeof(int), 1, file); - fwrite(&fontinfo->max_descent, sizeof(int), 1, file); - fwrite(&len, sizeof(int), 1, file); - - px = gap; - py = gap; - maxheight = 0; - for (i = 0; i < len; i++) { - if (glist[i] != 0) { /* If not already processed... */ - - /* Try to find a character from the glist that will fit on the - remaining space on the current row. */ - - int foundWidthFit = 0; - int c; - - getMetric(fontinfo, glist[i], &tgi); - width = tgi.width; - height = tgi.height; - if (height > 0 && width > 0) { - for (j = i; j < len;) { - if (height > 0 && width > 0) { - if (px + width + gap < texw) { - foundWidthFit = 1; - if (j != i) { - i--; /* Step back so i loop increment leaves us at same character. */ - } - break; - } - } - j++; - getMetric(fontinfo, glist[j], &tgi); - width = tgi.width; - height = tgi.height; - } - - /* If a fit was found, use that character; otherwise, advance a line - in the texture. */ - if (foundWidthFit) { - if (height > maxheight) { - maxheight = height; - } - c = j; - } else { - getMetric(fontinfo, glist[i], &tgi); - width = tgi.width; - height = tgi.height; - - py += maxheight + gap; - px = gap; - maxheight = height; - if (py + height + gap >= texh) { - printf("Overflowed texture space.\n"); - exit(1); - } - c = i; - } - - /* Place the glyph in the texture image. */ - placeGlyph(fontinfo, glist[c], texarea, texw, px, py); - - /* Assign glyph's texture coordinate. */ - tgi.x = px; - tgi.y = py; - - /* Advance by glyph width, remaining in the current line. */ - px += width + gap; - } else { - /* No texture image; assign invalid bogus texture coordinates. */ - tgi.x = -1; - tgi.y = -1; - } - glist[c] = 0; /* Mark processed; don't process again. */ - /*CONSTANTCONDITION*/ - assert(sizeof(tgi) == 12); /* Ensure external file format size. */ - fwrite(&tgi, sizeof(tgi), 1, file); - } - } - - switch (format) { - case TXF_FORMAT_BYTE: - fwrite(texarea, texw * texh, 1, file); - break; - case TXF_FORMAT_BITMAP: - stride = (texw + 7) >> 3; - texbitmap = (unsigned char *) calloc(stride * texh, 1); - for (i = 0; i < texh; i++) { - for (j = 0; j < texw; j++) { - if (texarea[i * texw + j] >= 128) { - texbitmap[i * stride + (j >> 3)] |= 1 << (j & 7); - } - } - } - fwrite(texbitmap, stride * texh, 1, file); - free(texbitmap); - break; - default: - printf("Unknown texture font format.\n"); - exit(1); - } - free(texarea); - fclose(file); -} diff --git a/lib/glut-3.7.6/progs/texfont/gentexfont.dsp b/lib/glut-3.7.6/progs/texfont/gentexfont.dsp deleted file mode 100644 index a0399db74dba5e222f6596df96c0da81f029eac7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/gentexfont.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gentexfont" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gentexfont - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gentexfont.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gentexfont.mak" CFG="gentexfont - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gentexfont - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gentexfont - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gentexfont - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gentexfont - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gentexfont - Win32 Release" -# Name "gentexfont - Win32 Debug" -# Begin Source File - -SOURCE=.\gentexfont.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/texfont/haeberli.txf b/lib/glut-3.7.6/progs/texfont/haeberli.txf deleted file mode 100644 index d641665fd898ede344b14abdce9f16ba99a20204..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/texfont/haeberli.txf and /dev/null differ diff --git a/lib/glut-3.7.6/progs/texfont/rockfont.txf b/lib/glut-3.7.6/progs/texfont/rockfont.txf deleted file mode 100644 index bcfcef9f1ebc37a8481710c93bad79aa4b212102..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/texfont/rockfont.txf and /dev/null differ diff --git a/lib/glut-3.7.6/progs/texfont/showtxf.c b/lib/glut-3.7.6/progs/texfont/showtxf.c deleted file mode 100644 index 8730c1b8fe551e6169ef3967e5aa5567870e042f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/showtxf.c +++ /dev/null @@ -1,156 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o showtxf showtxf.c texfont.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include - -#include "TexFont.h" - -unsigned char *raster; -int imgwidth, imgheight; -int max_ascent, max_descent; -int len; -int ax = 0, ay = 0; -int doubleBuffer = 1, verbose = 0; -char *filename = "default.txf"; -TexFont *txf; - -/* If resize is called, enable drawing into the full screen area - (glViewport). Then setup the modelview and projection matrices to map 2D - x,y coodinates directly onto pixels in the window (lower left origin). - Then set the raster position (where the image would be drawn) to be offset - from the upper left corner, and then offset by the current offset (using a - null glBitmap). */ -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, h - imgheight, 0); - glRasterPos2i(0, 0); - glBitmap(0, 0, 0, 0, ax, -ay, NULL); -} - -void -display(void) -{ - /* Clear the color buffer. */ - glClear(GL_COLOR_BUFFER_BIT); - - /* Re-blit the image. */ - glDrawPixels(imgwidth, imgheight, - GL_LUMINANCE, GL_UNSIGNED_BYTE, - txf->teximage); - - /* Swap the buffers if necessary. */ - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static int moving = 0, ox, oy; - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - - /* Left mouse button press. Update last seen mouse position. And set - "moving" true since button is pressed. */ - ox = x; - oy = y; - moving = 1; - - } else { - - /* Left mouse button released; unset "moving" since button no longer - pressed. */ - moving = 0; - - } - } -} - -void -motion(int x, int y) -{ - /* If there is mouse motion with the left button held down... */ - if (moving) { - - /* Figure out the offset from the last mouse position seen. */ - ax += (x - ox); - ay += (y - oy); - - /* Offset the raster position based on the just calculated mouse position - delta. Use a null glBitmap call to offset the raster position in - window coordinates. */ - glBitmap(0, 0, 0, 0, x - ox, oy - y, NULL); - - /* Request a window redraw. */ - glutPostRedisplay(); - - /* Update last seen mouse position. */ - ox = x; - oy = y; - } -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-sb")) { - doubleBuffer = 0; - } else if (!strcmp(argv[i], "-v")) { - verbose = 1; - } else { - filename = argv[i]; - } - } - if (filename == NULL) { - fprintf(stderr, "usage: showtxf [GLUT-options] [-sb] [-v] txf-file\n"); - exit(1); - } - - txf = txfLoadFont(filename); - if (txf == NULL) { - fprintf(stderr, "Problem loading %s\n", filename); - exit(1); - } - - imgwidth = txf->tex_width; - imgheight = txf->tex_height; - - if (doubleBuffer) { - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - } else { - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - } - glutInitWindowSize(imgwidth, imgheight); - glutCreateWindow(filename); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - /* Use a gray background so teximage with black backgrounds will show - against showtxf's background. */ - glClearColor(0.2, 0.2, 0.2, 1.0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/texfont/showtxf.dsp b/lib/glut-3.7.6/progs/texfont/showtxf.dsp deleted file mode 100644 index 3cca7a1b620e87099e6e48b8ba287f715afc1917..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/showtxf.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="showtxf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=showtxf - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "showtxf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "showtxf.mak" CFG="showtxf - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "showtxf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "showtxf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "showtxf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "showtxf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "showtxf - Win32 Release" -# Name "showtxf - Win32 Debug" -# Begin Source File - -SOURCE=.\showtxf.c -# End Source File -# Begin Source File - -SOURCE=.\texfont.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/texfont/simpletxf.c b/lib/glut-3.7.6/progs/texfont/simpletxf.c deleted file mode 100644 index 2860903b3654af64354f904adb4fa238a5594e3b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/simpletxf.c +++ /dev/null @@ -1,183 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o simpletxf simpletxf.c texfont.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include - -#include "TexFont.h" - -int doubleBuffer = 1; -char *filename = "default.txf"; -TexFont *txf; -GLfloat angle = 20; - -void -idle(void) -{ - angle += 4; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -void -display(void) -{ - char *str; - - /* Clear the color buffer. */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glRotatef(angle, 0, 0, 1); - glTranslatef(-2.0, 0.0, 0.0); - glScalef(1 / 60.0, 1 / 60.0, 1 / 60.0); - - glPushMatrix(); - glColor3f(0.0, 0.0, 1.0); - str = "OpenGL is"; - txfRenderString(txf, str, (int) strlen(str)); - glPopMatrix(); - - glPushMatrix(); - glColor3f(1.0, 0.0, 0.0); - glTranslatef(0.0, -60.0, 0.0); - str = "the best."; - txfRenderString(txf, str, (int) strlen(str)); - glPopMatrix(); - - glPopMatrix(); - - /* Swap the buffers if necessary. */ - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -int minifyMenu; - -void -minifySelect(int value) -{ - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, value); - glutPostRedisplay(); -} - -int alphaMenu; - -void -alphaSelect(int value) -{ - switch (value) { - case GL_ALPHA_TEST: - glDisable(GL_BLEND); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GEQUAL, 0.5); - break; - case GL_BLEND: - glDisable(GL_ALPHA_TEST); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - break; - case GL_NONE: - glDisable(GL_ALPHA_TEST); - glDisable(GL_BLEND); - break; - } -} - -void -mainSelect(int value) -{ - if (value == 666) { - exit(0); - } -} - -int -main(int argc, char **argv) -{ - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-sb")) { - doubleBuffer = 0; - } else { - filename = argv[i]; - } - } - if (filename == NULL) { - fprintf(stderr, "usage: show [GLUT-options] [-sb] txf-file\n"); - exit(1); - } - txf = txfLoadFont(filename); - if (txf == NULL) { - fprintf(stderr, "Problem loading %s\n", filename); - exit(1); - } - - if (doubleBuffer) { - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - } else { - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH); - } - glutInitWindowSize(300, 300); - glutCreateWindow("texfont"); - glutDisplayFunc(display); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0, 0.1, 20.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, - 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - alphaSelect(GL_ALPHA_TEST); - minifySelect(GL_NEAREST); - - txfEstablishTexture(txf, 0, GL_TRUE); - - glutVisibilityFunc(visible); - - minifyMenu = glutCreateMenu(minifySelect); - glutAddMenuEntry("Nearest", GL_NEAREST); - glutAddMenuEntry("Linear", GL_LINEAR); - glutAddMenuEntry("Nearest mipmap nearest", GL_NEAREST_MIPMAP_NEAREST); - glutAddMenuEntry("Linear mipmap nearest", GL_LINEAR_MIPMAP_NEAREST); - glutAddMenuEntry("Nearest mipmap linear", GL_NEAREST_MIPMAP_LINEAR); - glutAddMenuEntry("Linear mipmap linear", GL_LINEAR_MIPMAP_LINEAR); - - alphaMenu = glutCreateMenu(alphaSelect); - glutAddMenuEntry("Alpha testing", GL_ALPHA_TEST); - glutAddMenuEntry("Alpha blending", GL_BLEND); - glutAddMenuEntry("Nothing", GL_NONE); - - glutCreateMenu(mainSelect); - glutAddSubMenu("Filtering", minifyMenu); - glutAddSubMenu("Alpha", alphaMenu); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/texfont/simpletxf.dsp b/lib/glut-3.7.6/progs/texfont/simpletxf.dsp deleted file mode 100644 index 642378530f0afd65fecfb693f1edf51652dee7f1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/simpletxf.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="simpletxf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=simpletxf - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "simpletxf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "simpletxf.mak" CFG="simpletxf - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "simpletxf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "simpletxf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "simpletxf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "simpletxf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "simpletxf - Win32 Release" -# Name "simpletxf - Win32 Debug" -# Begin Source File - -SOURCE=.\simpletxf.c -# End Source File -# Begin Source File - -SOURCE=.\texfont.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/texfont/sorority.txf b/lib/glut-3.7.6/progs/texfont/sorority.txf deleted file mode 100644 index 96d7d189054e338ac42b237e377f5281ef492612..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/texfont/sorority.txf and /dev/null differ diff --git a/lib/glut-3.7.6/progs/texfont/texfont.c b/lib/glut-3.7.6/progs/texfont/texfont.c deleted file mode 100644 index 8e36b45ee3a29d890151fdcb21facb4ac150c614..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/texfont.c +++ /dev/null @@ -1,645 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -#if defined(_WIN32) -#pragma warning (disable:4244) /* disable bogus conversion warnings */ -#endif - -#include -#include -#include -#include -#include -#ifdef _WIN32 -#include -#endif -#include -#include "TexFont.h" - -#if 0 -/* Uncomment to debug various scenarios. */ -#undef GL_VERSION_1_1 -#undef GL_EXT_texture_object -#undef GL_EXT_texture -#endif - -#ifndef GL_VERSION_1_1 - -# if defined(GL_EXT_texture_object) -# define glGenTextures glGenTexturesEXT -# define glBindTexture glBindTextureEXT -# else - /* Without OpenGL 1.1 or the texture object extension, use display lists. */ -# define USE_DISPLAY_LISTS -# endif - -# if defined(GL_EXT_texture) -# define GL_INTENSITY4 GL_INTENSITY4_EXT - int useLuminanceAlpha = 0; -# else - /* Intensity texture format not in OpenGL 1.0; added by the EXT_texture - extension and now part of OpenGL 1.1. */ - int useLuminanceAlpha = 1; -# endif - -#else - /* OpenGL 1.1 case. */ - int useLuminanceAlpha = 0; -#endif - -/* byte swap a 32-bit value */ -#define SWAPL(x, n) { \ - n = ((char *) (x))[0];\ - ((char *) (x))[0] = ((char *) (x))[3];\ - ((char *) (x))[3] = n;\ - n = ((char *) (x))[1];\ - ((char *) (x))[1] = ((char *) (x))[2];\ - ((char *) (x))[2] = n; } - -/* byte swap a short */ -#define SWAPS(x, n) { \ - n = ((char *) (x))[0];\ - ((char *) (x))[0] = ((char *) (x))[1];\ - ((char *) (x))[1] = n; } - -static TexGlyphVertexInfo * -getTCVI(TexFont * txf, int c) -{ - TexGlyphVertexInfo *tgvi; - - /* Automatically substitute uppercase letters with lowercase if not - uppercase available (and vice versa). */ - if ((c >= txf->min_glyph) && (c < txf->min_glyph + txf->range)) { - tgvi = txf->lut[c - txf->min_glyph]; - if (tgvi) { - return tgvi; - } - if (islower(c)) { - c = toupper(c); - if ((c >= txf->min_glyph) && (c < txf->min_glyph + txf->range)) { - return txf->lut[c - txf->min_glyph]; - } - } - if (isupper(c)) { - c = tolower(c); - if ((c >= txf->min_glyph) && (c < txf->min_glyph + txf->range)) { - return txf->lut[c - txf->min_glyph]; - } - } - } - fprintf(stderr, "texfont: tried to access unavailable font character \"%c\" (%d)\n", - isprint(c) ? c : ' ', c); - abort(); - /* NOTREACHED */ - return NULL; -} - -static char *lastError; - -char * -txfErrorString(void) -{ - return lastError; -} - -TexFont * -txfLoadFont(char *filename) -{ - TexFont *txf; - FILE *file; - GLfloat w, h, xstep, ystep; - char fileid[4], tmp; - unsigned char *texbitmap; - int min_glyph, max_glyph; - int endianness, swap, format, stride, width, height; - int i, j; - unsigned long got; - - txf = NULL; - file = fopen(filename, "rb"); - if (file == NULL) { - lastError = "file open failed."; - goto error; - } - txf = (TexFont *) malloc(sizeof(TexFont)); - if (txf == NULL) { - lastError = "out of memory."; - goto error; - } - /* For easy cleanup in error case. */ - txf->tgi = NULL; - txf->tgvi = NULL; - txf->lut = NULL; - txf->teximage = NULL; - - got = fread(fileid, 1, 4, file); - if (got != 4 || strncmp(fileid, "\377txf", 4)) { - lastError = "not a texture font file."; - goto error; - } - /*CONSTANTCONDITION*/ - assert(sizeof(int) == 4); /* Ensure external file format size. */ - got = fread(&endianness, sizeof(int), 1, file); - if (got == 1 && endianness == 0x12345678) { - swap = 0; - } else if (got == 1 && endianness == 0x78563412) { - swap = 1; - } else { - lastError = "not a texture font file."; - goto error; - } -#define EXPECT(n) if (got != (unsigned long) n) { lastError = "premature end of file."; goto error; } - got = fread(&format, sizeof(int), 1, file); - EXPECT(1); - got = fread(&txf->tex_width, sizeof(int), 1, file); - EXPECT(1); - got = fread(&txf->tex_height, sizeof(int), 1, file); - EXPECT(1); - got = fread(&txf->max_ascent, sizeof(int), 1, file); - EXPECT(1); - got = fread(&txf->max_descent, sizeof(int), 1, file); - EXPECT(1); - got = fread(&txf->num_glyphs, sizeof(int), 1, file); - EXPECT(1); - - if (swap) { - SWAPL(&format, tmp); - SWAPL(&txf->tex_width, tmp); - SWAPL(&txf->tex_height, tmp); - SWAPL(&txf->max_ascent, tmp); - SWAPL(&txf->max_descent, tmp); - SWAPL(&txf->num_glyphs, tmp); - } - txf->tgi = (TexGlyphInfo *) malloc(txf->num_glyphs * sizeof(TexGlyphInfo)); - if (txf->tgi == NULL) { - lastError = "out of memory."; - goto error; - } - /*CONSTANTCONDITION*/ - assert(sizeof(TexGlyphInfo) == 12); /* Ensure external file format size. */ - got = fread(txf->tgi, sizeof(TexGlyphInfo), txf->num_glyphs, file); - EXPECT(txf->num_glyphs); - - if (swap) { - for (i = 0; i < txf->num_glyphs; i++) { - SWAPS(&txf->tgi[i].c, tmp); - SWAPS(&txf->tgi[i].x, tmp); - SWAPS(&txf->tgi[i].y, tmp); - } - } - txf->tgvi = (TexGlyphVertexInfo *) - malloc(txf->num_glyphs * sizeof(TexGlyphVertexInfo)); - if (txf->tgvi == NULL) { - lastError = "out of memory."; - goto error; - } - w = txf->tex_width; - h = txf->tex_height; - xstep = 0.5 / w; - ystep = 0.5 / h; - for (i = 0; i < txf->num_glyphs; i++) { - TexGlyphInfo *tgi; - - tgi = &txf->tgi[i]; - txf->tgvi[i].t0[0] = tgi->x / w + xstep; - txf->tgvi[i].t0[1] = tgi->y / h + ystep; - txf->tgvi[i].v0[0] = tgi->xoffset; - txf->tgvi[i].v0[1] = tgi->yoffset; - txf->tgvi[i].t1[0] = (tgi->x + tgi->width) / w + xstep; - txf->tgvi[i].t1[1] = tgi->y / h + ystep; - txf->tgvi[i].v1[0] = tgi->xoffset + tgi->width; - txf->tgvi[i].v1[1] = tgi->yoffset; - txf->tgvi[i].t2[0] = (tgi->x + tgi->width) / w + xstep; - txf->tgvi[i].t2[1] = (tgi->y + tgi->height) / h + ystep; - txf->tgvi[i].v2[0] = tgi->xoffset + tgi->width; - txf->tgvi[i].v2[1] = tgi->yoffset + tgi->height; - txf->tgvi[i].t3[0] = tgi->x / w + xstep; - txf->tgvi[i].t3[1] = (tgi->y + tgi->height) / h + ystep; - txf->tgvi[i].v3[0] = tgi->xoffset; - txf->tgvi[i].v3[1] = tgi->yoffset + tgi->height; - txf->tgvi[i].advance = tgi->advance; - } - - min_glyph = txf->tgi[0].c; - max_glyph = txf->tgi[0].c; - for (i = 1; i < txf->num_glyphs; i++) { - if (txf->tgi[i].c < min_glyph) { - min_glyph = txf->tgi[i].c; - } - if (txf->tgi[i].c > max_glyph) { - max_glyph = txf->tgi[i].c; - } - } - txf->min_glyph = min_glyph; - txf->range = max_glyph - min_glyph + 1; - - txf->lut = (TexGlyphVertexInfo **) - calloc(txf->range, sizeof(TexGlyphVertexInfo *)); - if (txf->lut == NULL) { - lastError = "out of memory."; - goto error; - } - for (i = 0; i < txf->num_glyphs; i++) { - txf->lut[txf->tgi[i].c - txf->min_glyph] = &txf->tgvi[i]; - } - - switch (format) { - case TXF_FORMAT_BYTE: - if (useLuminanceAlpha) { - unsigned char *orig; - - orig = (unsigned char *) malloc(txf->tex_width * txf->tex_height); - if (orig == NULL) { - lastError = "out of memory."; - goto error; - } - got = fread(orig, 1, txf->tex_width * txf->tex_height, file); - EXPECT(txf->tex_width * txf->tex_height); - txf->teximage = (unsigned char *) - malloc(2 * txf->tex_width * txf->tex_height); - if (txf->teximage == NULL) { - lastError = "out of memory."; - goto error; - } - for (i = 0; i < txf->tex_width * txf->tex_height; i++) { - txf->teximage[i * 2] = orig[i]; - txf->teximage[i * 2 + 1] = orig[i]; - } - free(orig); - } else { - txf->teximage = (unsigned char *) - malloc(txf->tex_width * txf->tex_height); - if (txf->teximage == NULL) { - lastError = "out of memory."; - goto error; - } - got = fread(txf->teximage, 1, txf->tex_width * txf->tex_height, file); - EXPECT(txf->tex_width * txf->tex_height); - } - break; - case TXF_FORMAT_BITMAP: - width = txf->tex_width; - height = txf->tex_height; - stride = (width + 7) >> 3; - texbitmap = (unsigned char *) malloc(stride * height); - if (texbitmap == NULL) { - lastError = "out of memory."; - goto error; - } - got = fread(texbitmap, 1, stride * height, file); - EXPECT(stride * height); - if (useLuminanceAlpha) { - txf->teximage = (unsigned char *) calloc(width * height * 2, 1); - if (txf->teximage == NULL) { - lastError = "out of memory."; - goto error; - } - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - if (texbitmap[i * stride + (j >> 3)] & (1 << (j & 7))) { - txf->teximage[(i * width + j) * 2] = 255; - txf->teximage[(i * width + j) * 2 + 1] = 255; - } - } - } - } else { - txf->teximage = (unsigned char *) calloc(width * height, 1); - if (txf->teximage == NULL) { - lastError = "out of memory."; - goto error; - } - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - if (texbitmap[i * stride + (j >> 3)] & (1 << (j & 7))) { - txf->teximage[i * width + j] = 255; - } - } - } - } - free(texbitmap); - break; - } - - fclose(file); - return txf; - -error: - - if (txf) { - if (txf->tgi) - free(txf->tgi); - if (txf->tgvi) - free(txf->tgvi); - if (txf->lut) - free(txf->lut); - if (txf->teximage) - free(txf->teximage); - free(txf); - } - if (file) - fclose(file); - return NULL; -} - -GLuint -txfEstablishTexture( - TexFont * txf, - GLuint texobj, - GLboolean setupMipmaps) -{ - if (txf->texobj == 0) { - if (texobj == 0) { -#if !defined(USE_DISPLAY_LISTS) - glGenTextures(1, &txf->texobj); -#else - txf->texobj = glGenLists(1); -#endif - } else { - txf->texobj = texobj; - } - } -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, txf->texobj); -#else - glNewList(txf->texobj, GL_COMPILE); -#endif - -#if 1 - /* XXX Indigo2 IMPACT in IRIX 5.3 and 6.2 does not support the GL_INTENSITY - internal texture format. Sigh. Win32 non-GLX users should disable this - code. */ - if (useLuminanceAlpha == 0) { - char *vendor, *renderer, *version; - - renderer = (char *) glGetString(GL_RENDERER); - vendor = (char *) glGetString(GL_VENDOR); - if (!strcmp(vendor, "SGI") && !strncmp(renderer, "IMPACT", 6)) { - version = (char *) glGetString(GL_VERSION); - if (!strcmp(version, "1.0 Irix 6.2") || - !strcmp(version, "1.0 Irix 5.3")) { - unsigned char *latex; - int width = txf->tex_width; - int height = txf->tex_height; - int i; - - useLuminanceAlpha = 1; - latex = (unsigned char *) calloc(width * height * 2, 1); - /* XXX unprotected alloc. */ - for (i = 0; i < height * width; i++) { - latex[i * 2] = txf->teximage[i]; - latex[i * 2 + 1] = txf->teximage[i]; - } - free(txf->teximage); - txf->teximage = latex; - } - } - } -#endif - - if (useLuminanceAlpha) { - if (setupMipmaps) { - gluBuild2DMipmaps(GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, - txf->tex_width, txf->tex_height, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, txf->teximage); - } else { - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, - txf->tex_width, txf->tex_height, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, txf->teximage); - } - } else { -#if defined(GL_VERSION_1_1) || defined(GL_EXT_texture) - /* Use GL_INTENSITY4 as internal texture format since we want to use as - little texture memory as possible. */ - if (setupMipmaps) { - gluBuild2DMipmaps(GL_TEXTURE_2D, GL_INTENSITY4, - txf->tex_width, txf->tex_height, - GL_LUMINANCE, GL_UNSIGNED_BYTE, txf->teximage); - } else { - glTexImage2D(GL_TEXTURE_2D, 0, GL_INTENSITY4, - txf->tex_width, txf->tex_height, 0, - GL_LUMINANCE, GL_UNSIGNED_BYTE, txf->teximage); - } -#else - abort(); /* Should not get here without EXT_texture or OpenGL - 1.1. */ -#endif - } - -#if defined(USE_DISPLAY_LISTS) - glEndList(); - glCallList(txf->texobj); -#endif - return txf->texobj; -} - -void -txfBindFontTexture( - TexFont * txf) -{ -#if !defined(USE_DISPLAY_LISTS) - glBindTexture(GL_TEXTURE_2D, txf->texobj); -#else - glCallList(txf->texobj); -#endif -} - -void -txfUnloadFont( - TexFont * txf) -{ - if (txf->teximage) { - free(txf->teximage); - } - free(txf->tgi); - free(txf->tgvi); - free(txf->lut); - free(txf); -} - -void -txfGetStringMetrics( - TexFont * txf, - char *string, - int len, - int *width, - int *max_ascent, - int *max_descent) -{ - TexGlyphVertexInfo *tgvi; - int w, i; - - w = 0; - for (i = 0; i < len; i++) { - if (string[i] == 27) { - switch (string[i + 1]) { - case 'M': - i += 4; - break; - case 'T': - i += 7; - break; - case 'L': - i += 7; - break; - case 'F': - i += 13; - break; - } - } else { - tgvi = getTCVI(txf, string[i]); - w += tgvi->advance; - } - } - *width = w; - *max_ascent = txf->max_ascent; - *max_descent = txf->max_descent; -} - -void -txfRenderGlyph(TexFont * txf, int c) -{ - TexGlyphVertexInfo *tgvi; - - tgvi = getTCVI(txf, c); - glBegin(GL_QUADS); - glTexCoord2fv(tgvi->t0); - glVertex2sv(tgvi->v0); - glTexCoord2fv(tgvi->t1); - glVertex2sv(tgvi->v1); - glTexCoord2fv(tgvi->t2); - glVertex2sv(tgvi->v2); - glTexCoord2fv(tgvi->t3); - glVertex2sv(tgvi->v3); - glEnd(); - glTranslatef(tgvi->advance, 0.0, 0.0); -} - -void -txfRenderString( - TexFont * txf, - char *string, - int len) -{ - int i; - - for (i = 0; i < len; i++) { - txfRenderGlyph(txf, string[i]); - } -} - -enum { - MONO, TOP_BOTTOM, LEFT_RIGHT, FOUR -}; - -void -txfRenderFancyString( - TexFont * txf, - char *string, - int len) -{ - TexGlyphVertexInfo *tgvi; - GLubyte c[4][3]; - int mode = MONO; - int i; - - for (i = 0; i < len; i++) { - if (string[i] == 27) { - switch (string[i + 1]) { - case 'M': - mode = MONO; - glColor3ubv((GLubyte *) & string[i + 2]); - i += 4; - break; - case 'T': - mode = TOP_BOTTOM; - memcpy(c, &string[i + 2], 6); - i += 7; - break; - case 'L': - mode = LEFT_RIGHT; - memcpy(c, &string[i + 2], 6); - i += 7; - break; - case 'F': - mode = FOUR; - memcpy(c, &string[i + 2], 12); - i += 13; - break; - } - } else { - switch (mode) { - case MONO: - txfRenderGlyph(txf, string[i]); - break; - case TOP_BOTTOM: - tgvi = getTCVI(txf, string[i]); - glBegin(GL_QUADS); - glColor3ubv(c[0]); - glTexCoord2fv(tgvi->t0); - glVertex2sv(tgvi->v0); - glTexCoord2fv(tgvi->t1); - glVertex2sv(tgvi->v1); - glColor3ubv(c[1]); - glTexCoord2fv(tgvi->t2); - glVertex2sv(tgvi->v2); - glTexCoord2fv(tgvi->t3); - glVertex2sv(tgvi->v3); - glEnd(); - glTranslatef(tgvi->advance, 0.0, 0.0); - break; - case LEFT_RIGHT: - tgvi = getTCVI(txf, string[i]); - glBegin(GL_QUADS); - glColor3ubv(c[0]); - glTexCoord2fv(tgvi->t0); - glVertex2sv(tgvi->v0); - glColor3ubv(c[1]); - glTexCoord2fv(tgvi->t1); - glVertex2sv(tgvi->v1); - glColor3ubv(c[1]); - glTexCoord2fv(tgvi->t2); - glVertex2sv(tgvi->v2); - glColor3ubv(c[0]); - glTexCoord2fv(tgvi->t3); - glVertex2sv(tgvi->v3); - glEnd(); - glTranslatef(tgvi->advance, 0.0, 0.0); - break; - case FOUR: - tgvi = getTCVI(txf, string[i]); - glBegin(GL_QUADS); - glColor3ubv(c[0]); - glTexCoord2fv(tgvi->t0); - glVertex2sv(tgvi->v0); - glColor3ubv(c[1]); - glTexCoord2fv(tgvi->t1); - glVertex2sv(tgvi->v1); - glColor3ubv(c[2]); - glTexCoord2fv(tgvi->t2); - glVertex2sv(tgvi->v2); - glColor3ubv(c[3]); - glTexCoord2fv(tgvi->t3); - glVertex2sv(tgvi->v3); - glEnd(); - glTranslatef(tgvi->advance, 0.0, 0.0); - break; - } - } - } -} - -int -txfInFont(TexFont * txf, int c) -{ - /* NOTE: No uppercase/lowercase substituion. */ - if ((c >= txf->min_glyph) && (c < txf->min_glyph + txf->range)) { - if (txf->lut[c - txf->min_glyph]) { - return 1; - } - } - return 0; -} diff --git a/lib/glut-3.7.6/progs/texfont/txfdemo.c b/lib/glut-3.7.6/progs/texfont/txfdemo.c deleted file mode 100644 index 20cff4c2ed37e0e6f5dc1bfe86b45f1178938547..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/texfont/txfdemo.c +++ /dev/null @@ -1,436 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o txfdemo txfdemo.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -#include -#include -#include -#include -#include - -#include "TexFont.h" - -/* Uncomment to debug various scenarios. */ -#if 0 -#undef GL_VERSION_1_1 -#undef GL_EXT_polygon_offset -#endif - -#ifndef GL_VERSION_1_1 -#ifdef GL_EXT_polygon_offset -#define GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_EXT -#define glPolygonOffset(s,b) glPolygonOffsetEXT(s,b*0.001); -#else -/* Gag. No polygon offset? Artifacts will exist. */ -#define glPolygonOffset(s,b) /* nothing */ -#endif -#endif - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -static int doubleBuffer = 1; -static char *filename = "rockfont.txf"; -static GLfloat angle = 20; -static TexFont *txf; -static int usePolygonOffset = 1; -static int animation = 1; -static int fullscreen = 0; - -void -idle(void) -{ - angle += 4; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) { - if (animation) { - glutIdleFunc(idle); - } - } else { - glutIdleFunc(NULL); - } -} - -void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); -} - -void -cubeSide(void) -{ - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); - glDisable(GL_ALPHA_TEST); - glColor3f(0.3, 0.7, 0.3); - glRectf(-1.0, -1.0, 1.0, 1.0); -} - -int alphaMode; - -void -alphaModeSet(void) -{ - switch (alphaMode) { - case GL_ALPHA_TEST: - glDisable(GL_BLEND); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GEQUAL, 0.5); - break; - case GL_BLEND: - glDisable(GL_ALPHA_TEST); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - break; - case GL_ALPHA_TEST + GL_BLEND: - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GEQUAL, 0.0625); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - break; - case GL_NONE: - glDisable(GL_ALPHA_TEST); - glDisable(GL_BLEND); - break; - } -} - -void -cubeSideWithOpenGLcircle(void) -{ - int w, ow, a, d; - char *text; - int len; - int i; - GLfloat flen; - - cubeSide(); - - glPushMatrix(); - alphaModeSet(); - glEnable(GL_TEXTURE_2D); - if (usePolygonOffset) { -#if defined(GL_EXT_polygon_offset) || defined(GL_VERSION_1_1) - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(0.0, -3); -#endif - } - glColor3f(0.2, 0.2, 0.9); - - txfGetStringMetrics(txf, "OpenGL", 6, &w, &a, &d); - text = "OpenGL OpenGL "; - len = (int) strlen(text); - txfGetStringMetrics(txf, text, len, &w, &a, &d); - txfGetStringMetrics(txf, "O", 1, &ow, &a, &d); - - glScalef(5.6/w, 5.6/w, 5.6/w); - flen = len; - glTranslatef(-ow/2.0, -w/(M_PI*2.0), 0.0); - - for (i=0; i -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=txfdemo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "txfdemo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "txfdemo.mak" CFG="txfdemo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "txfdemo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "txfdemo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "txfdemo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "txfdemo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "txfdemo - Win32 Release" -# Name "txfdemo - Win32 Debug" -# Begin Source File - -SOURCE=.\texfont.c -# End Source File -# Begin Source File - -SOURCE=.\txfdemo.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/progs/tiff/Imakefile b/lib/glut-3.7.6/progs/tiff/Imakefile deleted file mode 100644 index 86ac54ec6935e91a2c2bac58bcc8ec235c3e3c72..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/Imakefile +++ /dev/null @@ -1,26 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../Glut.cf" - -TARGETS = showtiff textiff writetiff depthdof scalebias tiffsift - -SRCS = showtiff.c textiff.c writetiff.c depthdof.c scalebias.c tiffsift.c - -AllTarget($(TARGETS)) - -TIFF_LIB = -ltiff -TIFF_DEPLIB = -# -# You may actually need the following definition of TIFF_LIB for -# more recent TIFF library releases: -#TIFF_LIB = -ltiff -ljpeg -lz - -NormalProgramTarget(showtiff,showtiff.o,$(TIFF_DEPLIB) $(GLUT_DEPLIBS),$(TIFF_LIB) $(GLUT_LIBS),NullParameter) -NormalProgramTarget(textiff,textiff.o,$(TIFF_DEPLIB) $(GLUT_DEPLIBS),$(TIFF_LIB) $(GLUT_LIBS),NullParameter) -NormalProgramTarget(tiffsift,tiffsift.o,$(TIFF_DEPLIB) $(GLUT_DEPLIBS),$(TIFF_LIB) $(GLUT_LIBS),NullParameter) -NormalProgramTarget(writetiff,writetiff.o,$(TIFF_DEPLIB) $(GLUT_DEPLIBS),$(TIFF_LIB) $(GLUT_LIBS),NullParameter) -NormalProgramTarget(depthdof,depthdof.o,$(TIFF_DEPLIB) $(GLUT_DEPLIBS),$(TIFF_LIB) $(GLUT_LIBS),NullParameter) -NormalProgramTarget(scalebias,scalebias.o,$(TIFF_DEPLIB) $(GLUT_DEPLIBS),$(TIFF_LIB) $(GLUT_LIBS),NullParameter) - -DependTarget() diff --git a/lib/glut-3.7.6/progs/tiff/README b/lib/glut-3.7.6/progs/tiff/README deleted file mode 100644 index 191f6769bc58ee0c63a76554381ef3ef874bb84b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/README +++ /dev/null @@ -1,49 +0,0 @@ - -Building these GLUT programs requires Sam Leffler's free TIFF library -(libtiff). You can find out about libtiff from: - - http://www.sgi.com/Fun/tiff/tiff-v3.4beta018/html/index.html - -The libtiff source code distribution can be downloaded from: - - ftp://ftp.sgi.com/graphics/tiff/ - -You can get a copy of the TIFF 6.0 specification (PostScript or -Acrobat) from: - - ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.Z - ftp://ftp.adobe.com/pub/adobe/DeveloperSupport/TechNotes/PDFfiles/TIFF6.pdf - -NOTE: SGI developers with the ImageVision development option installed -already have libtiff available if they have ifl_eoe.sw.c++ and -ifl_dev.sw.c++ installed. - -Here's a brief description of the programs in this directory: - - showtiff.c - A simple TIFF viewer that uses glDrawPixels. Use the - pop-up menu to select between several different image processing - operations (some of these assume you have OpenGL imaging - extensions). - - writetiff.c - An example writing out an OpenGL rendered image as a - TIFF file. Several compression schemes can be selected. Use the - pop-up menu to write the file. You can view the resulting - gears.tif with the showtiff program. - - textiff.c - A TIFF viewer that renders the TIFF image via texturing - so that the image can be rotated. Use the left and right arrow - keys to rotate the image. - - depthdof.c - A sophisticated OpenGL image processing-based technique - developed by Jon Brandt (SGI) that simulates a depth-of-field - effect using a depth-varying convolve. When you click on a point - in the scene, the focus point is set to that depth. Objects at - the same depth should appear clear; object further or nearer - should be blurred. This program requires the OpenGL convolution - extension. - -An example TIFF file "face.tif" (a picture of me) is included as an -example TIFF file to play with. - -- Mark Kilgard - April 14, 1997 diff --git a/lib/glut-3.7.6/progs/tiff/depthdof.c b/lib/glut-3.7.6/progs/tiff/depthdof.c deleted file mode 100644 index edab721c61b8d23926267797fc6155a5afea408a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/depthdof.c +++ /dev/null @@ -1,561 +0,0 @@ - -/** - - depthdof.c: depth-of-field simulator using stencilled convolutions - Jon Brandt, 1/97 - converted to GLUT and libtiff by Mark Kilgard, 4/97 - - Compile with: - - cc -o depthdof depthdof.c -ltiff -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm - - **/ - -#include - -#include - -#include -#include -#include -#include -#include -#include - -#define FALSE 0 -#define TRUE 1 - -const char *DefaultImage = "face.tif"; -int winWidth = 512, winHeight = 512; -char *pixels = NULL; -int stencilMax; -int kSize = 5; -int kRadius = 5 / 2; -float sharpness = -1.5; -float kernel[] = -{.05, .1, .7, .1, .05}; -int passes = 5; -int contour = 0; -char focus = 160; -float spread = 1; -int focusPending = FALSE; -int splitScreen = FALSE; -int smoothDepth = FALSE; -int frame = 0; -int running = TRUE; -int cursor_x, cursor_y; -int multisample, hasConvolve = 0; - -TIFFRGBAImage img; -uint32 *raster; -uint32 *texture; -size_t npixels; -int tw, th; -int angle; - -int hasABGR = 0; - -void drawFrame(int frame); -void initScene(int argc, char *argv[]); -void drawScene(int frame); -void drawObject(float numRep); -void changePassCount(int delta); -void setBlurMap(void); -void setKernel(void); -void resize(int w, int h); -void toggle(int *param, char *msg); - -void -redraw(void) -{ - drawFrame(frame); -} - -void -idle(void) -{ - frame++; - glutPostRedisplay(); -} - -void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char c, int x, int y) -{ - switch (c) { - case 27: - exit(0); - break; - case 'g': - running = !running; - if (running) { - glutIdleFunc(idle); - } else { - glutIdleFunc(NULL); - } - break; - case 'c': - toggle(&contour, NULL); - glutPostRedisplay(); - break; - case 's': - toggle(&splitScreen, NULL); - glutPostRedisplay(); - break; - case 'd': - toggle(&smoothDepth, "depth smoothing"); - glutPostRedisplay(); - break; - case ' ': - frame++; - glutPostRedisplay(); - break; - case '-': - frame--; - glutPostRedisplay(); - break; - case 'p': - changePassCount(1); - glutPostRedisplay(); - break; - case 'P': - changePassCount(-1); - glutPostRedisplay(); - break; - case 'a': - spread *= 1 / 1.2; - setBlurMap(); - glutPostRedisplay(); - break; - case 'A': - spread *= 1.2; - setBlurMap(); - glutPostRedisplay(); - break; - case 'k': - sharpness *= 1 / 1.2; - printf("sharpness == %g\n", sharpness); - setKernel(); - glutPostRedisplay(); - break; - case 'K': - sharpness *= 1.2; - printf("sharpness == %g\n", sharpness); - setKernel(); - glutPostRedisplay(); - break; - } -} - -void -mouse(int b, int state, int x, int y) -{ - if (b == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - cursor_x = x; - cursor_y = winHeight - y; - focusPending = TRUE; - glutPostRedisplay(); - } -} - -void -main(int argc, char *argv[]) -{ - int c; - - glutInit(&argc, argv); - - while ((c = getopt(argc, argv, "p:")) != -1) { - switch (c) { - case 'p': - passes = atoi(optarg); - break; - } - } - - glutInitDisplayString("samples depth stencil~8 double"); - glutCreateWindow("Depth of Field via Depth-varying Convolve"); - initScene(argc - optind + 1, argv + optind - 1); - changePassCount(0); - printf("Key commands:\n"); - printf(" c: show/hide outer blur limit\n"); - printf(" g: toggle free running animation\n"); - printf(" s: toggle split-screen\n"); - printf(" d: toggle depth smoothing\n"); - printf(" : step one frame forward\n"); - printf(" -: step one frame backward\n"); - printf(" p(P): increment(decrement) number of passes\n"); - printf(" a(A): narrow(widen) lens aperture\n"); - printf(" k(K): increase(decrease) kernel bluriness\n"); - printf(" : exit\n"); - printf("Mouse clicking changes focus depth.\n"); - - glutVisibilityFunc(visible); - glutKeyboardFunc(keyboard); - glutMouseFunc(mouse); - glutDisplayFunc(redraw); - glutReshapeFunc(resize); - - multisample = glutGet(GLUT_WINDOW_NUM_SAMPLES) > 0; - if (glutExtensionSupported("GL_EXT_convolution")) { - hasConvolve = 1; - } else { - while (glGetError() != GL_NO_ERROR); /* Clear any OpenGL errors. */ - - /* The following glDisable would be a no-op whether done on a freshly - initialized OpenGL context whether convolution is supported or not. - The only difference should be an OpenGL error should be reported if - the GL_CONVOLUTION_2D_EXT is not understood (ie, convolution is not - supported at all). */ - glDisable(GL_CONVOLUTION_2D_EXT); - - if (glGetError() == GL_NO_ERROR) { - /* RealityEngine only partially implements the convolve extension and - hence does not advertise the extension in its extension string (See - MACHINE DEPENDENCIES section of the glConvolutionFilter2DEXT man - page). We limit this program to use only the convolve functionality - supported by RealityEngine so we test if OpenGL lets us enable - convolution without an error (the indication that convolution is - partially supported). */ - hasConvolve = 1; - } - /* Clear any further OpenGL errors (hopefully there should have only been - one or zero though). */ - while (glGetError() != GL_NO_ERROR); - } - - if (!hasConvolve) { - printf("\nTHIS PROGRAM IS NOT VERY INTERESTING WITHOUT THE OPENGL CONVOLVUTION EXTENSION\n\n"); - } - - glutMainLoop(); -} - -void -initScene(int argc, char *argv[]) -{ - TIFF *tif; - char emsg[1024]; - int bits; - const char *fname = argc > 1 ? argv[1] : DefaultImage; - - glViewport(0, 0, winWidth, winHeight); - - glEnable(GL_TEXTURE_2D); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - tif = TIFFOpen(fname, "r"); - if (tif == NULL) { - fprintf(stderr, "Problem showing %s\n", fname); - exit(1); - } - if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) { - npixels = img.width * img.height; - raster = (uint32 *) _TIFFmalloc((long) (npixels * sizeof(uint32))); - if (raster != NULL) { - if (TIFFRGBAImageGet(&img, raster, img.width, img.height) == 0) { - TIFFError(fname, emsg); - exit(1); - } - } - TIFFRGBAImageEnd(&img); - } else { - TIFFError(fname, emsg); - exit(1); - } - -#ifdef GL_EXT_abgr - if (glutExtensionSupported("GL_EXT_abgr")) - hasABGR = 1; -#else - hasABGR = 0; -#endif - - /* If cannot directly display ABGR format, we need to reverse the component - ordering in each pixel. :-( */ - if (!hasABGR) { - int i; - - for (i = 0; i < npixels; i++) { - register unsigned char *cp = (unsigned char *) &raster[i]; - int t; - - t = cp[3]; - cp[3] = cp[0]; - cp[0] = t; - t = cp[2]; - cp[2] = cp[1]; - cp[1] = t; - } - } - /* OpenGL's default unpack (and pack) alignment is 4. In the case of the - data returned by libtiff which is already aligned on 32-bit boundaries, - setting the pack to 1 isn't strictly necessary. */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - tw = 1 << (int) ceil(log((float) img.width) / log(2.0)); - th = 1 << (int) ceil(log((float) img.height) / log(2.0)); - if (tw > 512) - tw = 512; - if (th > 512) - th = 512; - texture = (uint32 *) malloc(sizeof(GLubyte) * 4 * tw * th); - -#ifdef GL_EXT_abgr -#define APPROPRIATE_FORMAT (hasABGR ? GL_ABGR_EXT : GL_RGBA) -#else -#define APPROPRIATE_FORMAT GL_RGBA -#endif - - gluScaleImage(APPROPRIATE_FORMAT, - (int) img.width, (int) img.height, GL_UNSIGNED_BYTE, raster, - tw, th, GL_UNSIGNED_BYTE, texture); - _TIFFfree(raster); - - if (gluBuild2DMipmaps(GL_TEXTURE_2D, 4, tw, th, - APPROPRIATE_FORMAT, GL_UNSIGNED_BYTE, texture)) { - fprintf(stderr, "couldn't build mip map"); - exit(1); - } - glGetIntegerv(GL_STENCIL_BITS, &bits); - stencilMax = (1 << bits) - 1; - printf("stencil max = %d\n", stencilMax); - - setBlurMap(); - setKernel(); - - glDrawBuffer(GL_BACK); - glReadBuffer(GL_BACK); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - glLineStipple(4, 0xaaaa); - glEnable(GL_LINE_STIPPLE); - pixels = realloc(pixels, (winWidth + 4) * (winHeight + 4)); -} - -void -drawFrame(int frame) -{ - int pass; - int activeWidth = splitScreen ? winWidth / 2 : winWidth; - - glEnable(GL_DEPTH_TEST); - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 1.5, 20); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - -#ifdef GL_MULTISAMPLE_SGIS - if (multisample) - glEnable(GL_MULTISAMPLE_SGIS); -#endif - drawScene(frame); -#ifdef GL_MULTISAMPLE_SGIS - if (multisample) - glDisable(GL_MULTISAMPLE_SGIS); -#endif - - if (passes > 0) { - glDisable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, winWidth, 0, winHeight, -1, 1); - glReadPixels(0, 0, activeWidth, winHeight, GL_DEPTH_COMPONENT, - GL_UNSIGNED_BYTE, pixels); - - if (focusPending) { - glReadPixels(cursor_x, cursor_y, 1, 1, GL_DEPTH_COMPONENT, - GL_UNSIGNED_BYTE, &focus); - printf("focussing on depth == %d\n", focus); - setBlurMap(); - focusPending = FALSE; - } - if (smoothDepth && hasConvolve) { -#ifdef GL_EXT_convolution - /* convolve the depth map into alpha and read it back */ - glEnable(GL_SEPARABLE_2D_EXT); - glRasterPos2f(kRadius, kRadius); - glColorMask(0, 0, 0, 1); - glDrawPixels(activeWidth, winHeight, GL_ALPHA, - GL_UNSIGNED_BYTE, pixels); - glColorMask(1, 1, 1, 1); - glDisable(GL_SEPARABLE_2D_EXT); - glReadPixels(0, 0, activeWidth, winHeight, GL_ALPHA, - GL_UNSIGNED_BYTE, pixels); -#endif - } - glRasterPos2f(0, 0); - glPixelTransferi(GL_MAP_STENCIL, GL_TRUE); - glDrawPixels(activeWidth, winHeight, GL_STENCIL_INDEX, - GL_UNSIGNED_BYTE, pixels); - - glPixelTransferi(GL_MAP_STENCIL, GL_FALSE); - glEnable(GL_STENCIL_TEST); - -#ifdef GL_EXT_convolution - if (hasConvolve) { - glEnable(GL_SEPARABLE_2D_EXT); - for (pass = 0; pass < passes; pass++) { - glStencilFunc(GL_LEQUAL, (pass + 1), 255); - glRasterPos2f(kRadius, kRadius); - glCopyPixels(0, 0, activeWidth, winHeight, GL_COLOR); - } - glDisable(GL_SEPARABLE_2D_EXT); - } -#endif - - if (contour) { - /* mark edge of in-focus region with green contour */ - glStencilFunc(GL_EQUAL, pass, 255); - glColor3f(0, 1, 0); - glBegin(GL_TRIANGLE_STRIP); - glVertex2f(0, 0); - glVertex2f(0, winHeight); - glVertex2f(winWidth, 0); - glVertex2f(winWidth, winHeight); - glEnd(); - } - glDisable(GL_STENCIL_TEST); - - if (splitScreen) { - /* yellow divider line */ - glColor3f(1, 1, 0); - glBegin(GL_LINE_STRIP); - glVertex2f(activeWidth, 0); - glVertex2f(activeWidth, winHeight); - glEnd(); - } - } - glutSwapBuffers(); -} - -void -drawScene(int frame) -{ - glPushMatrix(); - glTranslatef(0, 0, -18); - glDisable(GL_TEXTURE_2D); - glBegin(GL_TRIANGLE_STRIP); - glColor3ub(40, 0, 140); - glVertex2f(-15, -15); - glVertex2f(15, -15); - glColor3ub(52, 202, 226); - glVertex2f(-15, 15); - glVertex2f(15, 15); - glEnd(); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0, -1, 0); - glScalef(20, 20, 20); - glRotatef(90, 1, 0, 0); - drawObject(20); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0, 0, -5 + 3 * sinf(frame * M_PI / 180)); - glRotatef(frame * 3, 0, 1, 0); - drawObject(1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(cosf(frame * M_PI / 120), 0, -6 + 4 * sinf(frame * M_PI / 210)); - glRotatef(frame * 3, 1, 0, cosf(frame * M_PI / 360)); - drawObject(1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(0, 0, -5 + 3 * sinf(frame * M_PI / 300)); - drawObject(1); - glPopMatrix(); -} - -void -drawObject(float n) -{ - glEnable(GL_TEXTURE_2D); - glColor3f(1, 1, 1); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0, 0); - glVertex2f(-.5, -.5); - glTexCoord2f(n, 0); - glVertex2f(.5, -.5); - glTexCoord2f(0, n); - glVertex2f(-.5, .5); - glTexCoord2f(n, n); - glVertex2f(.5, .5); - glEnd(); -} - -void -setBlurMap(void) -{ - int i; - unsigned short blur[256]; - - for (i = 0; i < 256; i++) { - float del = (i - focus) / 255.; - del *= del * spread * stencilMax; - blur[i] = del < stencilMax ? del : stencilMax; - } - glPixelMapusv(GL_PIXEL_MAP_S_TO_S, 256, blur); -} - -void -setKernel(void) -{ -#ifdef GL_EXT_convolution - float s1 = expf(sharpness), s2 = expf(2 * sharpness); - kernel[0] = kernel[4] = s2; - kernel[1] = kernel[3] = s1; - kernel[2] = 1 - 2 * (s1 + s2); - glSeparableFilter2DEXT(GL_SEPARABLE_2D_EXT, GL_LUMINANCE, - kSize, kSize, GL_RED, - GL_FLOAT, kernel, kernel); -#endif -} - -void -toggle(int *param, char *msg) -{ - *param = !*param; - if (msg) - printf("%s == %d\n", msg, *param); - drawFrame(frame); -} - -void -changePassCount(int delta) -{ - passes += delta; - if (passes < 0) - passes = 0; - printf("number of passes == %d\n", passes); -} - -void -resize(int w, int h) -{ - winWidth = w; - winHeight = h; - pixels = realloc(pixels, (winWidth + 4) * (winHeight + 4)); - glViewport(0, 0, winWidth, winHeight); -} diff --git a/lib/glut-3.7.6/progs/tiff/face.tif b/lib/glut-3.7.6/progs/tiff/face.tif deleted file mode 100644 index 193c058e51c10c364a18c04acf70f5e504f08835..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/tiff/face.tif and /dev/null differ diff --git a/lib/glut-3.7.6/progs/tiff/scalebias.c b/lib/glut-3.7.6/progs/tiff/scalebias.c deleted file mode 100644 index 2bf7a539ec0ddfdd480d72c6d5b160989d23268b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/scalebias.c +++ /dev/null @@ -1,482 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o scalebias scalebias.c -ltiff -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -/* This program requires Sam Leffler's libtiff library and GLUT. */ - -/* scalebias demonstrates how an "in place" scale & bias of pixels in the - frame buffer can often be accomplished faster with OpenGL blending - extensions instead of using the naive glCopyPixels with glPixelTransfer - used to do the scale and bias. - - The blending approach requires the "blend subtract" EXT extension in - order to perform negative biases. You could use this approach without - the "blend subtract" extension if you never need to do negative - biases. - - NOTE: This blending approach does not allow negative scales. The - blending approach also fails if the partial scaling or biasing results - leave the 0.0 to 1.0 range (example, scale=5.47, bias=-1.2). - - This technique can be valuable when you want to perform post-texture - filtering scaling and biasing (say for volume rendering or image processing), - but your hardware lacks texture lookup tables. - - To give you an idea of the speed advantage of this "in place" blending - technique for doing scales and biases, on an SGI O2, this program - runs 8 to 40 times faster with a greater than 1.0 scaling factor when - using the blending mode instead of using glCopyPixels. The performance - improvement depends on the number of pixels scaled or biased. */ - -#include -#include -#include -#include -#include /* Sam Leffler's libtiff library. */ - -TIFFRGBAImage img; -uint32 *raster, *texture; -tsize_t npixels; -int imgwidth, imgheight; -int tw, th; - -int hasABGR = 0, hasBlendSubtract = 0; -int doubleBuffer = 1; -char *filename = NULL; -int ax = 10, ay = -10; -int luminance = 0; -int useBlend = 1; -int timing = 0; -int height; - -GLfloat scale = 1.0, bias = 0.0, zoom = 1.0; - -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - height = h; -} - -void -drawImage(void) -{ - glPushMatrix(); - glTranslatef(ax, -ay + imgheight * zoom, 0); - glScalef(zoom * imgwidth, zoom * imgheight, 1); - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(0, 0); - glTexCoord2i(1, 0); - glVertex2i(1, 0); - glTexCoord2i(1, -1); - glVertex2i(1, -1); - glTexCoord2i(0, -1); - glVertex2i(0, -1); - glEnd(); - glPopMatrix(); -} - -void -display(void) -{ - int start, end; - - /* Clear the color buffer. */ - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f(1.0, 1.0, 1.0); /* Modulate texture with white. */ - glEnable(GL_TEXTURE_2D); - drawImage(); - - if (timing) { - /* Avoid timing the clear and original draw image speed. */ - glFinish(); - start = glutGet(GLUT_ELAPSED_TIME); - } - - /* Scale and bias via . */ - if (bias != 0.0 || scale != 1.0) { - glDisable(GL_TEXTURE_2D); - - /* Other things you might want to make sure are disabled. */ - /* glDisable(GL_LIGHTING); */ - /* glDisable(GL_DEPTH_TEST); */ - - if (useBlend && hasBlendSubtract) { - - /* NOTE: The blending approach does not allow negative - scales. The blending approach also fails if the - partial scaling or biasing results leave the 0.0 to - 1.0 range (example, scale=5.47, bias=-1.2). */ - - glEnable(GL_BLEND); - if (scale > 1.0) { - float remainingScale; - - remainingScale = scale; -#ifdef GL_EXT_blend_subtract - glBlendEquationEXT(GL_FUNC_ADD_EXT); -#endif - glBlendFunc(GL_DST_COLOR, GL_ONE); - if (remainingScale > 2.0) { - /* Clever cascading approach. Example: if the - scaling factor was 9.5, do 3 "doubling" blends - (8x), then scale by the remaining 1.1875. */ - glColor4f(1, 1, 1, 1); - while (remainingScale > 2.0) { - drawImage(); - remainingScale /= 2.0; - } - } - glColor4f(remainingScale - 1, - remainingScale - 1, remainingScale - 1, 1); - drawImage(); - glBlendFunc(GL_ONE, GL_ONE); - if (bias != 0) { - if (bias > 0) { - glColor4f(bias, bias, bias, 0.0); - } else { -#ifdef GL_EXT_blend_subtract - glBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT_EXT); -#endif - glColor4f(-bias, -bias, -bias, 0.0); - } - drawImage(); - } - } else { - if (bias > 0) { -#ifdef GL_EXT_blend_subtract - glBlendEquationEXT(GL_FUNC_ADD_EXT); -#endif - glColor4f(bias, bias, bias, scale); - } else { -#ifdef GL_EXT_blend_subtract - glBlendEquationEXT(GL_FUNC_REVERSE_SUBTRACT_EXT); -#endif - glColor4f(-bias, -bias, -bias, scale); - } - glBlendFunc(GL_ONE, GL_SRC_ALPHA); - drawImage(); - } - glDisable(GL_BLEND); - } else { - glPixelTransferf(GL_RED_SCALE, scale); - glPixelTransferf(GL_GREEN_SCALE, scale); - glPixelTransferf(GL_BLUE_SCALE, scale); - glPixelTransferf(GL_RED_BIAS, bias); - glPixelTransferf(GL_GREEN_BIAS, bias); - glPixelTransferf(GL_BLUE_BIAS, bias); - glRasterPos2i(0, 0); - glBitmap(0, 0, 0, 0, ax, -ay, NULL); - glCopyPixels(ax, -ay, - ceil(imgwidth * zoom), ceil(imgheight * zoom), GL_COLOR); - glPixelTransferf(GL_RED_SCALE, 1.0); - glPixelTransferf(GL_GREEN_SCALE, 1.0); - glPixelTransferf(GL_BLUE_SCALE, 1.0); - glPixelTransferf(GL_RED_BIAS, 0.0); - glPixelTransferf(GL_GREEN_BIAS, 0.0); - glPixelTransferf(GL_BLUE_BIAS, 0.0); - } - } - if (timing) { - glFinish(); - end = glutGet(GLUT_ELAPSED_TIME); - printf("time = %d milliseconds\n", end - start); - } - /* Swap the buffers if necessary. */ - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -static int moving = 0, ox, oy; - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - - /* Left mouse button press. Update last seen mouse - position. And set "moving" true since button is - pressed. */ - ox = x; - oy = y; - moving = 1; - - } else { - - /* Left mouse button released; unset "moving" since - button no longer pressed. */ - moving = 0; - - } - } -} - -void -motion(int x, int y) -{ - /* If there is mouse motion with the left button held down. */ - if (moving) { - - /* Figure out offset from the last mouse position seen. */ - ax += (x - ox); - ay += (y - oy); - - /* Request a window redraw. */ - glutPostRedisplay(); - - /* Update last seen mouse position. */ - ox = x; - oy = y; - } -} - -void -updateTitle(void) -{ - char title[200]; - - sprintf(title, "Scale (%.2f) & Bias (%.1f) via %s", scale, bias, - useBlend ? "Blend" : "Copy"); - glutSetWindowTitle(title); -} - -void -option(int value) -{ - switch (value) { - case 6: - bias += 0.1; - break; - case 7: - bias -= 0.1; - break; - case 8: - scale *= 1.1; - break; - case 9: - scale *= 0.9; - break; - case 10: - scale = 1.0; - bias = 0.0; - break; - case 11: - if (hasBlendSubtract) { - useBlend = 1 - useBlend; - } - break; - case 12: - zoom += 0.2; - break; - case 13: - zoom -= 0.2; - break; - case 14: - timing = 1 - timing; - break; - case 666: - exit(0); - break; - } - updateTitle(); - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_UP: - option(6); - break; - case GLUT_KEY_DOWN: - option(7); - break; - case GLUT_KEY_LEFT: - option(9); - break; - case GLUT_KEY_RIGHT: - option(8); - break; - case GLUT_KEY_HOME: - option(10); - break; - case GLUT_KEY_INSERT: - option(11); - break; - case GLUT_KEY_PAGE_UP: - option(12); - break; - case GLUT_KEY_PAGE_DOWN: - option(13); - break; - } -} - -int -main(int argc, char **argv) -{ - TIFF *tif; - char emsg[1024]; - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-sb")) { - doubleBuffer = 0; - } else { - filename = argv[i]; - } - } - if (filename == NULL) { - fprintf(stderr, "usage: scalebias [GLUT-options] [-sb] TIFF-file\n"); - exit(1); - } - tif = TIFFOpen(filename, "r"); - if (tif == NULL) { - fprintf(stderr, "Problem showing %s\n", filename); - exit(1); - } - if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) { - npixels = (tsize_t) (img.width * img.height); - raster = (uint32 *) _TIFFmalloc(npixels * (tsize_t) sizeof(uint32)); - if (raster != NULL) { - if (TIFFRGBAImageGet(&img, raster, img.width, img.height) == 0) { - TIFFError(filename, emsg); - exit(1); - } - } - TIFFRGBAImageEnd(&img); - } else { - TIFFError(filename, emsg); - exit(1); - } - if (doubleBuffer) { - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - } else { - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - } - imgwidth = (int) img.width; - imgheight = (int) img.height; - glutInitWindowSize(imgwidth * 1.5, imgheight * 1.5); - glutCreateWindow(""); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); - glutSpecialFunc(special); -#ifdef GL_EXT_abgr - if (glutExtensionSupported("GL_EXT_abgr")) { - hasABGR = 1; - } -#endif -#ifdef GL_EXT_blend_subtract - if (glutExtensionSupported("GL_EXT_blend_subtract")) { - hasBlendSubtract = 1; - } -#endif - if (!hasBlendSubtract) { - printf("\nThis program needs the blend subtract extension for\n"); - printf("fast blending-base in-place scaling & biasing. Since\n"); - printf("the extension is not available, using the slower\n"); - printf("glCopyPixels approach.\n\n"); - useBlend = 0; - } - /* If cannot directly display ABGR format, we need to reverse - the component ordering in each pixel. :-( */ - if (!hasABGR) { - int i; - - for (i = 0; i < npixels; i++) { - register unsigned char *cp = (unsigned char *) &raster[i]; - int t; - - t = cp[3]; - cp[3] = cp[0]; - cp[0] = t; - t = cp[2]; - cp[2] = cp[1]; - cp[1] = t; - } - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - /* Linear sampling within a mipmap level. */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_NEAREST); - - /* A TIFF file could be any size; OpenGL textures are allowed - to have a width and height that is a power of two (32, 64, - 128, etc.). To maximize the use of available texture - memory, we scale the image to gluScaleImage to the next - larger power of 2 width or height dimension (not exceeding - 512, don't want to use too much texture memory!). This - rescaling can result in a bit of image bluring because of - the resampling done by gluScaleImage. An alternative would - be to change the texture coordinates to only use a portion - texture area. */ - - tw = 1 << (int) ceil(log(img.width) / log(2.0)); - th = 1 << (int) ceil(log(img.height) / log(2.0)); - if (tw > 512) - tw = 512; - if (th > 512) - th = 512; - texture = (uint32 *) malloc(sizeof(GLubyte) * 4 * tw * th); - -#ifdef GL_EXT_abgr -#define APPROPRIATE_FORMAT (hasABGR ? GL_ABGR_EXT : GL_RGBA) -#else -#define APPROPRIATE_FORMAT GL_RGBA -#endif - - gluScaleImage(APPROPRIATE_FORMAT, - (GLsizei) img.width, (GLsizei) img.height, GL_UNSIGNED_BYTE, raster, - tw, th, GL_UNSIGNED_BYTE, texture); - - /* Build mipmaps for the texture image. Since we are not - scaling the image (we easily could by calling glScalef), - creating mipmaps is not really useful, but it is done just - to show how easily creating mipmaps is. */ - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, tw, th, - APPROPRIATE_FORMAT, GL_UNSIGNED_BYTE, - texture); - - glutCreateMenu(option); - glutAddMenuEntry("Increase bias (Up)", 6); - glutAddMenuEntry("Decrease bias (Down)", 7); - glutAddMenuEntry("Increase scale (Right)", 8); - glutAddMenuEntry("Decrease scale (Left)", 9); - glutAddMenuEntry("Reset scale & bias (Home)", 10); - if (hasBlendSubtract) { - glutAddMenuEntry("Toggle blend/copy (Insert)", 11); - } - glutAddMenuEntry("Zoom up (PageUp)", 12); - glutAddMenuEntry("Zoom down (PageDown)", 13); - glutAddMenuEntry("Toggle timing", 14); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - /* Use a gray background so TIFF images with black - backgrounds will show against textiff's background. */ - glClearColor(0.2, 0.2, 0.2, 1.0); - updateTitle(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/tiff/showtiff.c b/lib/glut-3.7.6/progs/tiff/showtiff.c deleted file mode 100644 index 8b6be082a1edeb97303b1262d225d4628020448a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/showtiff.c +++ /dev/null @@ -1,369 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o showtiff showtiff.c -ltiff -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -/* showtiff is a simple TIFF file viewer using Sam Leffler's libtiff, GLUT, - and OpenGL. If OpenGL the image processing extensions for convolution and - color matrix are supported by your OpenGL implementation, showtiff will let - you blur, sharpen, edge detect, and color convert to grayscale the TIFF - file. You can also move around the image within the window. */ - -#include -#include -#include -#include /* Sam Leffler's libtiff library. */ - -TIFFRGBAImage img; -uint32 *raster; -tsize_t npixels; -int imgwidth, imgheight; - -int hasABGR = 0; -int hasConvolve = 0; -int hasColorMatrix = 0; -int doubleBuffer = 1; -char *filename = NULL; -int ax = 0, ay = 0; -int luminance = 0; - -GLfloat rgbBlur[7][7][3]; -GLfloat rgbEdgeDetect[3][3][3]; -GLfloat rgbSharpen[3][3][3]; - -void -initKernels(void) -{ - int x, y, c; - - /* A 7x7 "blurring" convolution kernel. This kernel will uniformly spread - each pixel with its surrounding 7x7 pixels. The sum of the kernel - elements is 1.0. */ - for (x = 0; x < 7; x++) { - for (y = 0; y < 7; y++) { - for (c = 0; c < 3; c++) { - rgbBlur[x][y][c] = 1.0 / 49.0; - } - } - } - - /* A 3x3 edge detection covolution kernel. The kernel is shown below. - Notice how the elements of the kernel add up to zero. */ - /********** - -1 -1 -1 - -1 8 -1 - -1 -1 -1 - **********/ - for (x = 0; x < 3; x++) { - for (y = 0; y < 3; y++) { - for (c = 0; c < 3; c++) { - rgbEdgeDetect[x][y][c] = -1.0; - } - } - } - for (c = 0; c < 3; c++) { - rgbEdgeDetect[1][1][c] = 8.0; - } - - /* A 3x3 "sharpening" convolution kernel. The kernel is shown below. - Notice how surrounding information is subtracted out of the central - pixel while the central pixel is weighted heavily. The sum of the - kernel elements is 1.0. */ - /************* - -.5 -.5 -.5 - -.5 5 -.5 - -.5 -.5 -.5 - *************/ - for (x = 0; x < 3; x++) { - for (y = 0; y < 3; y++) { - for (c = 0; c < 3; c++) { - rgbSharpen[x][y][c] = -0.5; - } - } - } - for (c = 0; c < 3; c++) { - rgbSharpen[1][1][c] = 5.0; - } -} - -/* If resize is called, enable drawing into the full screen area - (glViewport). Then setup the modelview and projection matrices to map 2D - x,y coodinates directly onto pixels in the window (lower left origin). - Then set the raster position (where the image would be drawn) to be offset - from the upper left corner, and then offset by the current offset (using a - null glBitmap). */ -void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, w, 0, h); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, h - imgheight, 0); - glRasterPos2i(0, 0); - glBitmap(0, 0, 0, 0, ax, -ay, NULL); -} - -void -display(void) -{ - /* Clear the color buffer. */ - glClear(GL_COLOR_BUFFER_BIT); - -#ifdef GL_EXT_abgr -#define APPROPRIATE_FORMAT (hasABGR ? GL_ABGR_EXT : GL_RGBA) -#else -#define APPROPRIATE_FORMAT GL_RGBA -#endif - - /* Re-blit the image. */ - glDrawPixels(imgwidth, imgheight, - APPROPRIATE_FORMAT, GL_UNSIGNED_BYTE, - raster); - - /* Swap the buffers if necessary. */ - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } -} - -static int moving = 0, ox, oy; - -void -mouse(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON) { - if (state == GLUT_DOWN) { - - /* Left mouse button press. Update last seen mouse position. And set - "moving" true since button is pressed. */ - ox = x; - oy = y; - moving = 1; - - } else { - - /* Left mouse button released; unset "moving" since button no longer - pressed. */ - moving = 0; - - } - } -} - -void -motion(int x, int y) -{ - /* If there is mouse motion with the left button held down... */ - if (moving) { - - /* Figure out the offset from the last mouse position seen. */ - ax += (x - ox); - ay += (y - oy); - - /* Offset the raster position based on the just calculated mouse position - - delta. Use a null glBitmap call to offset the raster position in - window coordinates. */ - glBitmap(0, 0, 0, 0, x - ox, oy - y, NULL); - - /* Request a window redraw. */ - glutPostRedisplay(); - - /* Update last seen mouse position. */ - ox = x; - oy = y; - } -} - -void -option(int value) -{ - /* RGB to NTSC luminance color conversion matrix. */ - static GLfloat rgb2luminance[16] = - { - 0.30, 0.30, 0.30, 0.30, /* 30% red. */ - 0.59, 0.59, 0.59, 0.59, /* 59% green. */ - 0.11, 0.11, 0.11, 0.11, /* 11% blue. */ - 0.00, 0.00, 0.00, 0.00 /* 0% alpha. */ - }; - - switch (value) { - case 1: -#ifdef GL_EXT_convolution - glDisable(GL_CONVOLUTION_2D_EXT); - break; - case 2: - glEnable(GL_CONVOLUTION_2D_EXT); - glConvolutionFilter2DEXT(GL_CONVOLUTION_2D_EXT, - GL_RGB, 7, 7, GL_RGB, GL_FLOAT, rgbBlur); - break; - case 3: - glEnable(GL_CONVOLUTION_2D_EXT); - glConvolutionFilter2DEXT(GL_CONVOLUTION_2D_EXT, - GL_RGB, 3, 3, GL_RGB, GL_FLOAT, rgbSharpen); - break; - case 4: - glEnable(GL_CONVOLUTION_2D_EXT); - glConvolutionFilter2DEXT(GL_CONVOLUTION_2D_EXT, - GL_RGB, 3, 3, GL_RGB, GL_FLOAT, rgbEdgeDetect); -#endif - break; -#ifdef GL_SGI_color_matrix - case 5: - luminance = 1 - luminance; /* Toggle. */ - glMatrixMode(GL_COLOR); - if (luminance) { - glLoadMatrixf(rgb2luminance); - } else { - glLoadIdentity(); - } - glMatrixMode(GL_MODELVIEW); -#endif - break; - case 666: - exit(0); - break; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - TIFF *tif; - char emsg[1024]; - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-sb")) { - doubleBuffer = 0; - } else { - filename = argv[i]; - } - } - if (filename == NULL) { - fprintf(stderr, "usage: showtiff [GLUT-options] [-sb] TIFF-file\n"); - exit(1); - } - tif = TIFFOpen(filename, "r"); - if (tif == NULL) { - fprintf(stderr, "Problem showing %s\n", filename); - exit(1); - } - if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) { - npixels = (tsize_t) (img.width * img.height); - raster = (uint32 *) _TIFFmalloc(npixels * (tsize_t) sizeof(uint32)); - if (raster != NULL) { - if (TIFFRGBAImageGet(&img, raster, img.width, img.height) == 0) { - TIFFError(filename, emsg); - exit(1); - } - } - TIFFRGBAImageEnd(&img); - } else { - TIFFError(filename, emsg); - exit(1); - } - if (doubleBuffer) { - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - } else { - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - } - imgwidth = (int) img.width; - imgheight = (int) img.height; - glutInitWindowSize(imgwidth, imgheight); - glutCreateWindow("showtiff"); - glutReshapeFunc(reshape); - glutDisplayFunc(display); - glutMouseFunc(mouse); - glutMotionFunc(motion); -#ifdef GL_EXT_abgr - if (glutExtensionSupported("GL_EXT_abgr")) { - hasABGR = 1; - } -#endif -#ifdef GL_EXT_convolution - if (glutExtensionSupported("GL_EXT_convolution")) { - hasConvolve = 1; - } else { - while (glGetError() != GL_NO_ERROR); /* Clear any OpenGL errors. */ - - /* The following glDisable would be a no-op whether done on a freshly - initialized OpenGL context whether convolution is supported or not. - The only difference should be an OpenGL error should be reported if - the GL_CONVOLUTION_2D_EXT is not understood (ie, convolution is not - supported at all). */ - glDisable(GL_CONVOLUTION_2D_EXT); - - if (glGetError() == GL_NO_ERROR) { - /* RealityEngine only partially implements the convolve extension and - hence does not advertise the extension in its extension string (See - MACHINE DEPENDENCIES section of the glConvolutionFilter2DEXT man - page). We limit this program to use only the convolve functionality - supported by RealityEngine so we test if OpenGL lets us enable - convolution without an error (the indication that convolution is - partially supported). */ - hasConvolve = 1; - } - /* Clear any further OpenGL errors (hopefully there should have only been - - one or zero though). */ - while (glGetError() != GL_NO_ERROR); - } -#endif -#ifdef GL_SGI_color_matrix - if (glutExtensionSupported("GL_SGI_color_matrix")) { - hasColorMatrix = 1; - } -#endif - /* If cannot directly display ABGR format, we need to reverse the component - ordering in each pixel. :-( */ - if (!hasABGR) { - int i; - - for (i = 0; i < npixels; i++) { - register unsigned char *cp = (unsigned char *) &raster[i]; - int t; - - t = cp[3]; - cp[3] = cp[0]; - cp[0] = t; - t = cp[2]; - cp[2] = cp[1]; - cp[1] = t; - } - } - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - initKernels(); - glutCreateMenu(option); - glutAddMenuEntry("Normal", 1); -#ifdef GL_EXT_convolution - if (hasConvolve) { - glutAddMenuEntry("7x7 Blur", 2); - glutAddMenuEntry("3x3 Sharpen", 3); - glutAddMenuEntry("3x3 Edge Detect", 4); - } -#endif -#ifdef GL_SGI_color_matrix - if (hasColorMatrix) { - glutAddMenuEntry("Toggle Luminance/RGB", 5); - } -#endif - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - /* Use a gray background so TIFF images with black backgrounds will - show against textiff's background. */ - glClearColor(0.2, 0.2, 0.2, 1.0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/tiff/spiral.tif b/lib/glut-3.7.6/progs/tiff/spiral.tif deleted file mode 100644 index b67973bee18273d64033fddf0ec7e8b42e4ad59d..0000000000000000000000000000000000000000 Binary files a/lib/glut-3.7.6/progs/tiff/spiral.tif and /dev/null differ diff --git a/lib/glut-3.7.6/progs/tiff/textiff.c b/lib/glut-3.7.6/progs/tiff/textiff.c deleted file mode 100644 index d252d6980cd0ae8438aaf608dd4c846a273a09c6..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/textiff.c +++ /dev/null @@ -1,206 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o textiff textiff.c -ltiff -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -/* textiff is a simple TIFF file viewer using Sam Leffler's libtiff, GLUT, - and OpenGL. Unlike the showtiff example that simply uses glDrawPixels to - draw the image, textiff loads the texture into texture memory and then - renders the image as a textured polygon. This enables fast hardware - accelerated image rotates. Use the left and right arrow keys to rotate - the texture arround. */ - -#include -#include -#include -#include -#include /* Sam Leffler's libtiff library. */ - -TIFFRGBAImage img; -uint32 *raster; -uint32 *texture; -tsize_t npixels; -int tw, th; -int angle; - -int hasABGR = 0; -int doubleBuffer = 1; -char *filename = NULL; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - - /* Rotate by angle. */ - glRotatef(angle, 0, 0, 1); - - /* Draw a rectangle onto which the TIFF image will get textured. Notice - that the texture coordinates are set to each corner of the texture - image. */ - glBegin(GL_QUADS); - glTexCoord2i(0, 0); - glVertex2i(-1, -1); - glTexCoord2i(1, 0); - glVertex2i(1, -1); - glTexCoord2i(1, 1); - glVertex2i(1, 1); - glTexCoord2i(0, 1); - glVertex2i(-1, 1); - glEnd(); - - glPopMatrix(); - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -/* If the left or right arrows are pressed, rotate five degrees either - direction and request a redraw of the window. */ -/* ARGSUSED1 */ -void -special(int key, int x, int y) -{ - switch (key) { - case GLUT_KEY_LEFT: - angle -= 5; - angle %= 360; - glutPostRedisplay(); - break; - case GLUT_KEY_RIGHT: - angle += 5; - angle %= 360; - glutPostRedisplay(); - break; - } -} - -int -main(int argc, char **argv) -{ - TIFF *tif; - char emsg[1024]; - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-sb")) { - doubleBuffer = 0; - } else { - filename = argv[i]; - } - } - if (filename == NULL) { - fprintf(stderr, "usage: textiff [GLUT-options] [-sb] TIFF-file\n"); - exit(1); - } - tif = TIFFOpen(filename, "r"); - if (tif == NULL) { - fprintf(stderr, "Problem showing %s\n", filename); - exit(1); - } - if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) { - npixels = (tsize_t) (img.width * img.height); - raster = (uint32 *) _TIFFmalloc(npixels * (tsize_t) sizeof(uint32)); - if (raster != NULL) { - if (TIFFRGBAImageGet(&img, raster, img.width, img.height) == 0) { - TIFFError(filename, emsg); - exit(1); - } - } - TIFFRGBAImageEnd(&img); - } else { - TIFFError(filename, emsg); - exit(1); - } - if (doubleBuffer) { - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - } else { - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - } - glutInitWindowSize((int) img.width, (int) img.height); - glutCreateWindow("textiff"); - glutDisplayFunc(display); - glutSpecialFunc(special); -#ifdef GL_EXT_abgr - if (glutExtensionSupported("GL_EXT_abgr")) - hasABGR = 1; -#else - hasABGR = 0; -#endif - /* If cannot directly display ABGR format, we need to reverse the component - ordering in each pixel. :-( */ - if (!hasABGR) { - int i; - - for (i = 0; i < npixels; i++) { - register unsigned char *cp = (unsigned char *) &raster[i]; - int t; - - t = cp[3]; - cp[3] = cp[0]; - cp[0] = t; - t = cp[2]; - cp[2] = cp[1]; - cp[1] = t; - } - } - /* OpenGL's default unpack (and pack) alignment is 4. In the case of the - data returned by libtiff which is already aligned on 32-bit boundaries, - setting the pack to 1 isn't strictly necessary. */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluOrtho2D(-1, 1, -1, 1); - - /* Linear sampling within a mipmap level. */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_NEAREST); - - glEnable(GL_TEXTURE_2D); - - /* A TIFF file could be any size; OpenGL textures are allowed to have a - width and height that is a power of two (32, 64, 128, etc.). To maximize - the use of available texture memory, we scale the image to gluScaleImage - to the next larger power of 2 width or height dimension (not exceeding - 512, don't want to use too much texture memory!). This rescaling can - result in a bit of image bluring because of the resampling done by - gluScaleImage. An alternative would be to change the texture coordinates - to only use a portion texture area. */ - - tw = 1 << (int) ceil(log(img.width) / log(2.0)); - th = 1 << (int) ceil(log(img.height) / log(2.0)); - if (tw > 512) - tw = 512; - if (th > 512) - th = 512; - texture = (uint32 *) malloc(sizeof(GLubyte) * 4 * tw * th); - -#ifdef GL_EXT_abgr -#define APPROPRIATE_FORMAT (hasABGR ? GL_ABGR_EXT : GL_RGBA) -#else -#define APPROPRIATE_FORMAT GL_RGBA -#endif - - gluScaleImage(APPROPRIATE_FORMAT, - (GLsizei) img.width, (GLsizei) img.height, GL_UNSIGNED_BYTE, raster, - tw, th, GL_UNSIGNED_BYTE, texture); - _TIFFfree(raster); - - /* Build mipmaps for the texture image. Since we are not scaling the image - (we easily could by calling glScalef), creating mipmaps is not really - useful, but it is done just to show how easily creating mipmaps is. */ - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, tw, th, - APPROPRIATE_FORMAT, GL_UNSIGNED_BYTE, - texture); - - /* Use a gray background so TIFF images with black backgrounds will - show against textiff's background. */ - glClearColor(0.2, 0.2, 0.2, 1.0); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/tiff/tiffsift.c b/lib/glut-3.7.6/progs/tiff/tiffsift.c deleted file mode 100644 index 28f7356a5fae6671f3eee0fbfb2277a7ded4bbc7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/tiffsift.c +++ /dev/null @@ -1,307 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This program uses 3D texture coordinates to introduce - "sifting" effects to warp a static mesh of textured - geometry. The third texture coordinate encodes a shifting - quantity through the mesh. By updating the texture matrix, - the texture coordinates can be shifted based on this - third texture coordinate. You'll notice the image seems - to have local vortexes scattered over the image that - warp the image. While the texture coordinates look dynamic, - they are indeed quite static (frozen in a display list) and - it is just the texture matrix that is changing to shift - the final 2D texture coordinates. */ - -#include -#include -#include -#include /* for cos(), sin(), and sqrt() */ -#include -#include /* Sam Leffler's libtiff library. */ - -TIFFRGBAImage img; -uint32 *raster; -uint32 *texture; -tsize_t npixels; - -float tick = 0; -float size = 0.6; -int set_timeout = 0; -int visible = 0; -int sifting = 1; -int interval = 100; - -int hasABGR = 0; -int doubleBuffer = 1; -char *filename = NULL; - -int tw, th; - -void -animate(int value) -{ - if (visible) { - if (sifting) { - if (value) { - if (sifting) { - tick += 4 * (interval / 100.0); - } - } - glutPostRedisplay(); - set_timeout = 1; - } - } -} - -/* Setup display list with "frozen" 3D texture coordinates. */ -void -generateTexturedSurface(void) -{ - static GLfloat data[8] = - {0, 1, 0, -1, 0, -1, 0, 1}; - int i, j; - -#define COLS 6 -#define ROWS 6 -#define TILE_TEX_W (1.0/COLS) -#define TILE_TEX_H (1.0/ROWS) - - glNewList(1, GL_COMPILE); - glTranslatef(-COLS / 2.0 + .5, -ROWS / 2.0 + .5, 0); - for (j = 0; j < ROWS; j++) { - glBegin(GL_QUAD_STRIP); - for (i = 0; i < COLS; i++) { - glTexCoord3f(i * TILE_TEX_W, j * TILE_TEX_H, data[(i + j) % 8]); - glVertex2f(i - .5, j - .5); - glTexCoord3f(i * TILE_TEX_W, (j + 1) * TILE_TEX_H, data[(i + j + 1) % 8]); - glVertex2f(i - .5, j + .5); - } -#if 1 - glTexCoord3f((i + 1) * TILE_TEX_W, j * TILE_TEX_H, data[(i + j) % 8]); - glVertex2f(i + .5, j - .5); - glTexCoord3f((i + 1) * TILE_TEX_W, (j + 1) * TILE_TEX_H, data[(i + j + 1) % 8]); - glVertex2f(i + .5, j + .5); - glEnd(); -#endif - } - glEndList(); -} - -/* Construct an identity matrix except that the third coordinate - can be used to "sift" the X and Y coordinates. */ -void -makeSift(GLfloat m[16], float xsift, float ysift) -{ - m[0 + 4 * 0] = 1; - m[0 + 4 * 1] = 0; - m[0 + 4 * 2] = xsift; - m[0 + 4 * 3] = 0; - - m[1 + 4 * 0] = 0; - m[1 + 4 * 1] = 1; - m[1 + 4 * 2] = ysift; - m[1 + 4 * 3] = 0; - - m[2 + 4 * 0] = 0; - m[2 + 4 * 1] = 0; - m[2 + 4 * 2] = 1; - m[2 + 4 * 3] = 0; - - m[3 + 4 * 0] = 0; - m[3 + 4 * 1] = 0; - m[3 + 4 * 2] = 0; - m[3 + 4 * 3] = 1; -} - -void -redraw(void) -{ - int begin, end, elapsed; - GLfloat matrix[16]; - - if (set_timeout) { - begin = glutGet(GLUT_ELAPSED_TIME); - } - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - - glScalef(size, size, size); - - glMatrixMode(GL_TEXTURE); - makeSift(matrix, 0.02 * cos(tick / 15.0), 0.02 * sin(tick / 15.0)); - glLoadMatrixf(matrix); - glMatrixMode(GL_MODELVIEW); - - glCallList(1); - - glPopMatrix(); - if (doubleBuffer) { - glutSwapBuffers(); - } else { - glFlush(); - } - if (set_timeout) { - set_timeout = 0; - end = glutGet(GLUT_ELAPSED_TIME); - elapsed = end - begin; - if (elapsed > interval) { - glutTimerFunc(0, animate, 1); - } else { - glutTimerFunc(interval - elapsed, animate, 1); - } - } -} - -void -visibility(int state) -{ - if (state == GLUT_VISIBLE) { - visible = 1; - animate(0); - } else { - visible = 0; - } -} - -int -main(int argc, char **argv) -{ - TIFF *tif; - char emsg[1024]; - int i; - - glutInit(&argc, argv); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-sb")) { - doubleBuffer = 0; - } else { - filename = argv[i]; - } - } - if (filename == NULL) { - fprintf(stderr, "usage: textiff [GLUT-options] [-sb] TIFF-file\n"); - exit(1); - } - tif = TIFFOpen(filename, "r"); - if (tif == NULL) { - fprintf(stderr, "Problem showing %s\n", filename); - exit(1); - } - if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) { - npixels = (tsize_t) (img.width * img.height); - raster = (uint32 *) _TIFFmalloc(npixels * (tsize_t) sizeof(uint32)); - if (raster != NULL) { - if (TIFFRGBAImageGet(&img, raster, img.width, img.height) == 0) { - TIFFError(filename, emsg); - exit(1); - } - } - TIFFRGBAImageEnd(&img); - } else { - TIFFError(filename, emsg); - exit(1); - } - if (doubleBuffer) { - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - } else { - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - } - glutInitWindowSize((int) img.width, (int) img.height); - glutCreateWindow("tiffsift"); - glutDisplayFunc(redraw); - glutVisibilityFunc(visibility); -#ifdef GL_EXT_abgr - if (glutExtensionSupported("GL_EXT_abgr")) - hasABGR = 1; -#else - hasABGR = 0; -#endif - /* If cannot directly display ABGR format, we need to reverse the component - ordering in each pixel. :-( */ - if (!hasABGR) { - int i; - - for (i = 0; i < npixels; i++) { - register unsigned char *cp = (unsigned char *) &raster[i]; - int t; - - t = cp[3]; - cp[3] = cp[0]; - cp[0] = t; - t = cp[2]; - cp[2] = cp[1]; - cp[1] = t; - } - } - /* OpenGL's default unpack (and pack) alignment is 4. In the case of the - data returned by libtiff which is already aligned on 32-bit boundaries, - setting the pack to 1 isn't strictly necessary. */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluOrtho2D(-1, 1, -1, 1); - - /* Linear sampling within a mipmap level. */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_NEAREST); - - glEnable(GL_TEXTURE_2D); - - /* A TIFF file could be any size; OpenGL textures are allowed to have a - width and height that is a power of two (32, 64, 128, etc.). To maximize - the use of available texture memory, we scale the image to gluScaleImage - to the next larger power of 2 width or height dimension (not exceeding - 512, don't want to use too much texture memory!). This rescaling can - result in a bit of image bluring because of the resampling done by - gluScaleImage. An alternative would be to change the texture coordinates - to only use a portion texture area. */ - - tw = 1 << (int) ceil(log(img.width) / log(2.0)); - th = 1 << (int) ceil(log(img.height) / log(2.0)); - if (tw > 512) - tw = 512; - if (th > 512) - th = 512; - texture = (uint32 *) malloc(sizeof(GLubyte) * 4 * tw * th); - -#ifdef GL_EXT_abgr -#define APPROPRIATE_FORMAT (hasABGR ? GL_ABGR_EXT : GL_RGBA) -#else -#define APPROPRIATE_FORMAT GL_RGBA -#endif - - gluScaleImage(APPROPRIATE_FORMAT, - (GLsizei) img.width, (GLsizei) img.height, GL_UNSIGNED_BYTE, raster, - tw, th, GL_UNSIGNED_BYTE, texture); - _TIFFfree(raster); - - /* Build mipmaps for the texture image. Since we are not scaling the image - (we easily could by calling glScalef), creating mipmaps is not really - useful, but it is done just to show how easily creating mipmaps is. */ - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, tw, th, - APPROPRIATE_FORMAT, GL_UNSIGNED_BYTE, - texture); - - /* Use a gray background so TIFF images with black backgrounds will - show against textiff's background. */ - glClearColor(0.2, 0.2, 0.2, 1.0); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective( /* field of view in degree */ 40.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 70.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,30) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in positive Y direction */ - - generateTexturedSurface(); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/progs/tiff/writetiff.c b/lib/glut-3.7.6/progs/tiff/writetiff.c deleted file mode 100644 index 0e74198570c1155abc82038c9d22e42c475306d9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/progs/tiff/writetiff.c +++ /dev/null @@ -1,330 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees and is - provided without guarantee or warrantee expressed or implied. This - program is -not- in the public domain. */ - -/* X compile line: cc -o writetiff writetiff.c -ltiff -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */ - -/* writetiff is a simple OpenGL program that writes out a TIFF file named - gears.tif containing an OpenGL-rendered scene containing 3 gears (the - gears rendering code is lifted from Brian Paul's gears.c Mesa demo. - writetiff uses Sam Leffler's libtiff library to write to a TIFF an image - grabbed from the screen with glReadPixels. NOTE: If the window is - obscured when the glReadPixels is performed, obscured pixels will be - undefined when written into the TIFF file. */ - -#include -#include -#include -#include /* Sam Leffler's libtiff library. */ - -/* Some files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -static int W, H; - -int -writetiff(char *filename, char *description, - int x, int y, int width, int height, int compression) -{ - TIFF *file; - GLubyte *image, *p; - int i; - - file = TIFFOpen(filename, "w"); - if (file == NULL) { - return 1; - } - image = (GLubyte *) malloc(width * height * sizeof(GLubyte) * 3); - - /* OpenGL's default 4 byte pack alignment would leave extra bytes at the - end of each image row so that each full row contained a number of bytes - divisible by 4. Ie, an RGB row with 3 pixels and 8-bit componets would - be laid out like "RGBRGBRGBxxx" where the last three "xxx" bytes exist - just to pad the row out to 12 bytes (12 is divisible by 4). To make sure - the rows are packed as tight as possible (no row padding), set the pack - alignment to 1. */ - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - glReadPixels(x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE, image); - TIFFSetField(file, TIFFTAG_IMAGEWIDTH, (uint32) width); - TIFFSetField(file, TIFFTAG_IMAGELENGTH, (uint32) height); - TIFFSetField(file, TIFFTAG_BITSPERSAMPLE, 8); - TIFFSetField(file, TIFFTAG_COMPRESSION, compression); - TIFFSetField(file, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); - TIFFSetField(file, TIFFTAG_SAMPLESPERPIXEL, 3); - TIFFSetField(file, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); - TIFFSetField(file, TIFFTAG_ROWSPERSTRIP, 1); - TIFFSetField(file, TIFFTAG_IMAGEDESCRIPTION, description); - p = image; - for (i = height - 1; i >= 0; i--) { - if (TIFFWriteScanline(file, p, i, 0) < 0) { - free(image); - TIFFClose(file); - return 1; - } - p += width * sizeof(GLubyte) * 3; - } - TIFFClose(file); - return 0; -} - -/** - - Draw a gear wheel. You'll probably want to call this function when - building a display list since we do a lot of trig here. - - Input: inner_radius - radius of hole at center - outer_radius - radius at center of teeth - width - width of gear - teeth - number of teeth - tooth_depth - depth of tooth - - **/ - -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); - -} - -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); - - glFlush(); -} - -static void -init(void) -{ - static GLfloat pos[4] = - {5.0, 5.0, 10.0, 0.0}; - static GLfloat red[4] = - {0.8, 0.1, 0.0, 1.0}; - static GLfloat green[4] = - {0.0, 0.8, 0.2, 1.0}; - static GLfloat blue[4] = - {0.2, 0.2, 1.0, 1.0}; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 60.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - -static void -reshape(int width, int height) -{ - glViewport(0, 0, (GLint) width, (GLint) height); - W = width; - H = height; -} - -static void -menu(int value) -{ - switch (value) { - case 1: - writetiff("gears.tif", "OpenGL-rendered gears", 0, 0, W, H, COMPRESSION_LZW); - break; - case 2: - writetiff("gears.tif", "OpenGL-rendered gears", 0, 0, W, H, COMPRESSION_NONE); - break; - case 3: - writetiff("gears.tif", "OpenGL-rendered gears", 0, 0, W, H, COMPRESSION_PACKBITS); - break; - } -} - -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH); - - glutCreateWindow("writetiff"); - init(); - - glutDisplayFunc(draw); - glutReshapeFunc(reshape); - - glutCreateMenu(menu); - glutAddMenuEntry("Write gears.tiff (LZW compressed)", 1); - glutAddMenuEntry("Write gears.tiff (No compression)", 2); - glutAddMenuEntry("Write gears.tiff (Packbits)", 3); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/Imakefile b/lib/glut-3.7.6/test/Imakefile deleted file mode 100644 index 9c5a03df51866b6bbba4c9ffde0f7bb1e39f13a3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/Imakefile +++ /dev/null @@ -1,12 +0,0 @@ -#define IHaveSubdirs -#define PassCDebugFlags - -SUBDIRS = glut mui - -MakeSubdirs($(SUBDIRS)) - -test: - cd glut ; $(MAKE) test - cd mui ; $(MAKE) test - -DependSubdirs($(SUBDIRS)) diff --git a/lib/glut-3.7.6/test/glut/Imakefile b/lib/glut-3.7.6/test/glut/Imakefile deleted file mode 100644 index c80dfaf57355f242cf3da5c579c19e5074501337..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/Imakefile +++ /dev/null @@ -1,98 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -#include "../../Glut.cf" - -/* Andy V @ DEC sez... */ -#ifdef AlphaArchitecture -EXTRA_INCLUDES = GLUTInclude -I$(TOP)/lib/glut -#else -INCLUDES = -I$(TOP)/lib/glut -#endif - -SRCS = bigtest.c cursor_test.c over_test.c shape_test.c test1.c test10.c \ - test11.c test12.c test13.c test14.c test15.c test16.c test17.c \ - test18.c test19.c test2.c test20.c test21.c test22.c test23.c test24.c \ - test25.c test26.c test27.c test3.c test4.c test5.c test6.c test7.c \ - test8.c test9.c test28.c timer_test.c menu_test.c keyup_test.c joy_test.c - -TARGETS = test1 test2 test3 test4 test5 test6 test7 test8 \ - test9 test10 test11 test12 test13 test14 test15 test16 test17 \ - test18 test19 test20 test21 test22 test23 test24 test25 test26 \ - test27 test28 bigtest cursor_test menu_test over_test shape_test \ - timer_test keyup_test joy_test - -AllTarget($(TARGETS)) - -GlutTestProgramTarget(test1) -GlutTestProgramTarget(test2) -GlutTestProgramTarget(test3) -GlutTestProgramTarget(test4) -GlutTestProgramTarget(test5) -GlutTestProgramTarget(test6) -GlutTestProgramTarget(test7) -GlutTestProgramTarget(test8) -GlutTestProgramTarget(test9) -GlutTestProgramTarget(test10) -GlutTestProgramTarget(test11) -GlutTestProgramTarget(test12) -GlutTestProgramTarget(test13) -GlutTestProgramTarget(test14) -GlutTestProgramTarget(test15) -GlutTestProgramTarget(test16) -GlutTestProgramTarget(test17) -GlutTestProgramTarget(test18) -GlutTestProgramTarget(test19) -GlutTestProgramTarget(test20) -GlutTestProgramTarget(test21) -GlutTestProgramTarget(test22) -GlutTestProgramTarget(test23) -GlutTestProgramTarget(test24) -GlutTestProgramTarget(test25) -GlutTestProgramTarget(test26) -GlutTestProgramTarget(test27) -GlutTestProgramTarget(test28) -GlutTestProgramTarget(bigtest) -GlutTestProgramTarget(cursor_test) -GlutTestProgramTarget(keyup_test) -GlutTestProgramTarget(joy_test) -GlutTestProgramTarget(menu_test) -GlutTestProgramTarget(over_test) -GlutTestProgramTarget(shape_test) -GlutTestProgramTarget(timer_test) - -# Do not be surprised if some of these tests fail on previous GLUT releases. - -# NOTE: first run of test2 can fail since time dependent, but run twice - -test : $(TARGETS) - @GLUT_TEST_ALT_DISPLAY=$$DISPLAY ./test1 - -./test2 - @./test2 - @./test3 - @./test4 - @./test5 - @./test7 - @./test8 - @./test9 - @./test10 - @./test11 - @./test12 - @./test13 - @./test14 - @./test15 - @./test16 - @./test17 - @./test18 - @./test19 - @./test20 - @./test21 - @./test22 - @./test23 - @./test24 - @./test25 - @./test26 - @./test27 - @./test28 - -DependTarget() diff --git a/lib/glut-3.7.6/test/glut/_all.dsp b/lib/glut-3.7.6/test/glut/_all.dsp deleted file mode 100644 index e3c5ee30bfcdb174f7f1a6d3ea846c53342df7aa..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/_all.dsp +++ /dev/null @@ -1,63 +0,0 @@ -# Microsoft Developer Studio Project File - Name="_all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Generic Project" 0x010a - -CFG=_all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "_all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "_all.mak" CFG="_all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "_all - Win32 Release" (based on "Win32 (x86) Generic Project") -!MESSAGE "_all - Win32 Debug" (based on "Win32 (x86) Generic Project") -!MESSAGE - -# Begin Project -# PROP _allowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -MTL=midl.exe - -!IF "$(CFG)" == "_all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "_all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "_all - Win32 Release" -# Name "_all - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/atexit_test.c b/lib/glut-3.7.6/test/glut/atexit_test.c deleted file mode 100644 index cc22441679e0f449c904903a6d8ee71a5a58842c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/atexit_test.c +++ /dev/null @@ -1,41 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* When you quite a GLUT program, the atexit callbacks should - always be called. In GLUT 3.6 and earlier, this was not happening. - It should be fixed in GLUT 3.7. */ - -#include -#include -#include - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void -exitHappened(void) -{ - printf("PASS: atexit test\n"); -} - -int -main(int argc, char **argv) -{ - atexit(exitHappened); - glutInitWindowSize(400, 100); - glutInit(&argc, argv); - glutCreateWindow("at exit test (quit via window border)"); - glutDisplayFunc(display); - printf("\nIf you quite via the window manager you should see\n" - "a message with the word pass capitalized.\n\n"); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/bigtest.c b/lib/glut-3.7.6/test/glut/bigtest.c deleted file mode 100644 index d084999ed329cb1eb08a6bdbc3831ea15c5fcba1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/bigtest.c +++ /dev/null @@ -1,2597 +0,0 @@ - -/** - * My first GLUT prog. - * Uses most GLUT calls to prove it all works. - * G Edwards, 30 Aug 95. - * - * Notes: - * Display lists are not shared between windows, and there doesn't seem to be - * any provision for this in GLUT. See glxCreateContext. - * - * The windows are internally indexed 0,1,2,3,4,5,6. The actual window ids - * returned by glut are held in winId[0], ... - * - * Todo: - * - * Could reorder the windows so 0,1,2,3,4,5,6 are the gfx, 7,8 text. - * - * 30 Aug 95 GJE Created. Version 1.00 - * 05 Sep 95 GJE Version 1.01. - * 07 Sep 95 GJE Version 1.02. More or less complete. All possible GLUT - * calls used, except dials/buttons/tablet/spaceball stuff. - * 15 Sep 95 GJE Add "trackball" code. - * - * Calls not used yet: these callbacks are registered but inactive. - * - * glutSpaceballFunc - * glutButtonBoxFunc - * glutDialsFunc - * glutTabletMotionFunc - * glutTabletButtonFunc - * - * Tested on: - * R3K Indigo Starter - * R4K Indigo Elan - * R4K Indy XZ - * R4K Indy XL - * R4K Indigo2 Extreme - */ - -#include -#include -#include -#include -#include - -/* Controls */ - -#define VERSION "1.00" -#define DATE "16Sep95" -#define DELAY 1000 /* delay for timer test */ -#define MENUDELAY 200 /* hack to fix glutMenuStateFunc bug */ -#define MAXWIN 9 /* max no. of windows */ - -unsigned int AUTODELAY = 1500; /* delay in demo mode */ - -#define VERSIONLONG "Version " VERSION "/" DATE ", compiled " __DATE__ ", " __TIME__ ", file " __FILE__ - -int pos[MAXWIN][2] = -{ - {50, 150}, /* win 0 */ - {450, 150}, /* win 1 */ - {50, 600}, /* win 2 */ - {450, 600}, /* win 3 */ - {10, 10}, /* subwin 4 (relative to parent win 0) */ - {300, 400}, /* help win 5 */ - {850, 150}, /* cmap win 6 */ - {850, 600}, /* cmap win 7 */ - {250, 450} /* text win 8 */ -}; - -int size[MAXWIN][2] = -{ - {350, 350}, /* win 0 */ - {350, 350}, /* win 1 */ - {350, 350}, /* win 2 */ - {350, 350}, /* win 3 */ - {200, 200}, /* subwin 4 */ - {700, 300}, /* help win 5 */ - {350, 350}, /* cmap win 6 */ - {350, 350}, /* cmap win 7 */ - {800, 450} /* text win 8 */ -}; - -/* Macros */ - -#define PR if(debug)printf - -/* #define GLNEWLIST(a, b) glNewList(a, b), fprintf(stderr, - "creating list %d \n", a); */ -/* #define GLCALLLIST(a) glCallList(a), fprintf(stderr, - "calling list %d \n", a); */ -/* #define GLUTSETWINDOW(x) glutSetWindow(x), fprintf(stderr, - "gsw at %d\n", __LINE__) */ - -/* Globals */ - -int winId[MAXWIN] = -{0}; /* table of glut window id's */ -GLboolean winVis[MAXWIN] = -{GL_FALSE}; /* is window visible */ - -GLboolean text[MAXWIN] = -{GL_FALSE}; /* is text on */ -GLboolean winFreeze[MAXWIN] = -{GL_FALSE}; /* user requested menuFreeze */ -GLboolean menuFreeze = GL_FALSE; /* menuFreeze while menus posted */ -GLboolean timerOn = GL_FALSE; /* timer active */ -GLboolean animation = GL_TRUE; /* idle func animation on */ -GLboolean debug = GL_FALSE; /* dump all events */ -GLboolean showKeys = GL_FALSE; /* dump key events */ -GLboolean demoMode = GL_FALSE; /* run automatic demo */ -GLboolean backdrop = GL_FALSE; /* use backdrop polygon */ -GLboolean passive = GL_FALSE; /* report passive motions */ -GLboolean leftDown = GL_FALSE; /* left button down ? */ -GLboolean middleDown = GL_FALSE; /* middle button down ? */ - -int displayMode = GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH; -int currentShape = 0; /* current glut shape */ -int scrollLine = 0, scrollCol = 0; /* help scrolling params */ -int lineWidth = 1; /* line width */ -int angle = 0; /* global rotation angle */ -char *textPtr[1000] = -{0}; /* pointers to text window text */ -int textCount = 0, helpCount = 0; /* text list indexes */ -float scaleFactor = 0.0; /* window size scale factor */ - -#ifdef ALPHA -#undef ALPHA /* Avoid problems with DEC's ALPHA machines. */ -#endif - -int menu1, menu2, menu3, menu4, menu5, menu6 = 0, menu7, menu8; -enum { - RGBA, INDEX, SINGLE, DOUBLEBUFFER, DEPTH, ACCUM, ALPHA, STENCIL, MULTISAMPLE, - STEREO, MODES -}; -char *modeNames[] = -{"RGBA", "INDEX", "SINGLE", "DOUBLE", "DEPTH", "ACCUM", - "ALPHA", "STENCIL", "MULTISAMPLE", "STEREO"}; -int glutMode[] = -{GLUT_RGBA, GLUT_INDEX, GLUT_SINGLE, GLUT_DOUBLE, GLUT_DEPTH, - GLUT_ACCUM, GLUT_ALPHA, GLUT_STENCIL, GLUT_MULTISAMPLE, GLUT_STEREO}; -int modes[MODES] = -{0}; -GLboolean menuButton[3] = -{0, 0, 1}; -enum { - MOUSEBUTTON, MOUSEMOTION, APPLY, RESET -}; - -/* Prototypes */ - -void gfxInit(int); -void drawScene(void); -void idleFunc(void); -void reshapeFunc(int width, int height); -void visible(int state); -void keyFunc(unsigned char key, int x, int y); -void mouseFunc(int button, int state, int x, int y); -void motionFunc(int x, int y); -void passiveMotionFunc(int x, int y); -void entryFunc(int state); -void specialFunc(int key, int x, int y); -void menuStateFunc(int state); -void timerFunc(int value); -#if 0 -void delayedReinstateMenuStateCallback(int value); -#endif -void menuFunc(int value); -void showText(void); -void textString(int x, int y, char *str, void *font); -void strokeString(int x, int y, char *str, void *font); -void makeMenus(void); -int idToIndex(int id); -void setInitDisplayMode(void); -void createMenu6(void); -void removeCallbacks(void); -void addCallbacks(void); -void dumpIds(void); -void updateHelp(void); -void updateAll(void); -void killWindow(int index); -void makeWindow(int index); -void warning(char *msg); -void autoDemo(int); -void positionWindow(int index); -void reshapeWindow(int index); -void iconifyWindow(int index); -void showWindow(int index); -void hideWindow(int index); -void pushWindow(int index); -void popWindow(int index); -void attachMenus(void); -void killAllWindows(void); -void makeAllWindows(void); -void updateText(void); -void updateScrollWindow(int index, char **ptr); -void redefineShapes(int shape); -GLboolean match(char *, char *); -void checkArgs(int argc, char *argv[]); -void scaleWindows(float); -void commandLineHelp(void); -void trackBall(int mode, int button, int state, int x, int y); - -void spaceballMotionCB(int, int, int); -void spaceballRotateCB(int, int, int); -void spaceballButtonCB(int, int); -void buttonBoxCB(int, int); -void dialsCB(int, int); -void tabletMotionCB(int, int); -void tabletButtonCB(int, int, int, int); - -/* strdup is actually not a standard ANSI C or POSIX routine - so implement a private one. OpenVMS does not have a strdup; Linux's - standard libc doesn't declare strdup by default (unless BSD or SVID - interfaces are requested). */ -static char * -stralloc(const char *string) -{ - char *copy; - - copy = malloc(strlen(string) + 1); - if (copy == NULL) - return NULL; - strcpy(copy, string); - return copy; -} - -/* main */ - -int -main(int argc, char **argv) -{ - -/* General init */ - - glutInit(&argc, argv); - -/* Check args */ - - checkArgs(argc, argv); - -/* Scale window position/size if needed. Ignore aspect ratios. */ - - if (scaleFactor > 0.0) - scaleWindows(scaleFactor); - else - scaleWindows(glutGet(GLUT_SCREEN_WIDTH) / 1280.0); - -/* Set initial display mode */ - - modes[RGBA] = 1; - modes[DOUBLEBUFFER] = 1; - modes[DEPTH] = 1; - setInitDisplayMode(); - -/* Set up menus */ - - makeMenus(); - -/* Make some windows */ - - makeWindow(0); - makeWindow(1); - -/* Global callbacks */ - - glutIdleFunc(idleFunc); - glutMenuStateFunc(menuStateFunc); - -/* Start demo if needed */ - - if (demoMode) - autoDemo(-2); - -/* Fall into event loop */ - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} - -/* gfxInit - Init opengl for each window */ - -void -gfxInit(int index) -{ - GLfloat grey10[] = - {0.10, 0.10, 0.10, 1.0}; - GLfloat grey20[] = - {0.2, 0.2, 0.2, 1.0}; - GLfloat black[] = - {0.0, 0.0, 0.0, 0.0}; - GLfloat diffuse0[] = - {1.0, 0.0, 0.0, 1.0}; - GLfloat diffuse1[] = - {0.0, 1.0, 0.0, 1.0}; - GLfloat diffuse2[] = - {1.0, 1.0, 0.0, 1.0}; - GLfloat diffuse3[] = - {0.0, 1.0, 1.0, 1.0}; - GLfloat diffuse4[] = - {1.0, 0.0, 1.0, 1.0}; - -#define XX 3 -#define YY 3 -#define ZZ -2.5 - - float vertex[][3] = - { - {-XX, -YY, ZZ}, - {+XX, -YY, ZZ}, - {+XX, +YY, ZZ}, - {-XX, +YY, ZZ} - }; - -/* warning: This func mixes RGBA and CMAP calls in an ugly - fashion */ - - redefineShapes(currentShape); /* set up display lists */ - glutSetWindow(winId[index]); /* hack - redefineShapes - changes glut win */ - -/* Shaded backdrop square (RGB or CMAP) */ - - glNewList(100, GL_COMPILE); - glPushAttrib(GL_LIGHTING); - glDisable(GL_LIGHTING); - glBegin(GL_POLYGON); - - glColor4fv(black); - glIndexi(0); - glVertex3fv(vertex[0]); - - glColor4fv(grey10); - glIndexi(3); - glVertex3fv(vertex[1]); - - glColor4fv(grey20); - glIndexi(4); - glVertex3fv(vertex[2]); - - glColor4fv(grey10); - glIndexi(7); - glVertex3fv(vertex[3]); - - glEnd(); - glPopAttrib(); - glIndexi(9); - glEndList(); - -/* Set proj+view */ - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, 1.0, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.); - glTranslatef(0.0, 0.0, -1.0); - - if (index == 6 || index == 7) - goto colorindex; - -/* Set basic material, lighting for RGB windows */ - - if (index == 0) - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse0); - else if (index == 1) - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse1); - else if (index == 2) - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse2); - else if (index == 3) - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse3); - else if (index == 4) - glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse4); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - if (index == 4) - glClearColor(0.15, 0.15, 0.15, 1); - else - glClearColor(0.1, 0.1, 0.1, 1.0); - - return; - -/* Set GL basics for CMAP windows 6,7 */ - -colorindex: - - glEnable(GL_DEPTH_TEST); - if (glutGet(GLUT_WINDOW_COLORMAP_SIZE) < 16) - warning("Color map size too small for color index window"); - -/* Try to reuse an existing color map */ - - if ((index == 6) && (winId[7] != 0)) { - glutCopyColormap(winId[7]); - } else if ((index == 7) && (winId[6] != 0)) { - glutCopyColormap(winId[6]); - } else { - glutSetColor(8, 0.1, 0.1, 0.1); - glutSetColor(9, 1.0, 0.5, 0.0); - glutSetColor(10, 1.0, 0.6, 0.8); - } - glClearIndex(8); - glIndexi(index + 3); - -} - -/* makeMenus - Create popup menus */ - -void -makeMenus(void) -{ - -/* General control / debug */ - - menu2 = glutCreateMenu(menuFunc); - glutAddMenuEntry("toggle auto demo mode (a)", 312); - glutAddMenuEntry("toggle freezing in menus", 300); - glutAddMenuEntry("toggle text per window (t)", 301); - glutAddMenuEntry("toggle global timer", 302); - glutAddMenuEntry("toggle global animation", 303); - glutAddMenuEntry("toggle per window animation", 304); - glutAddMenuEntry("toggle debug prints (D)", 305); - glutAddMenuEntry("toggle shaded backdrop", 307); - glutAddMenuEntry("toggle passive motion callback", 308); - glutAddMenuEntry("increase line width (l)", 310); - glutAddMenuEntry("decrease line width (L)", 311); - -/* Shapes */ - - menu3 = glutCreateMenu(menuFunc); - glutAddMenuEntry("sphere", 200); - glutAddMenuEntry("cube", 201); - glutAddMenuEntry("cone", 202); - glutAddMenuEntry("torus", 203); - glutAddMenuEntry("dodecahedron", 204); - glutAddMenuEntry("octahedron", 205); - glutAddMenuEntry("tetrahedron", 206); - glutAddMenuEntry("icosahedron", 207); - glutAddMenuEntry("teapot", 208); - -/* Open/close windows */ - - menu4 = glutCreateMenu(menuFunc); - glutAddMenuEntry("open all windows", 450); - glutAddMenuEntry("close all windows", 451); - glutAddMenuEntry(" ", 9999); - glutAddMenuEntry("create win 0", 400); - glutAddMenuEntry("create win 1", 401); - glutAddMenuEntry("create win 2", 402); - glutAddMenuEntry("create win 3", 403); - glutAddMenuEntry("create sub window", 404); - glutAddMenuEntry("create color index win 6", 406); - glutAddMenuEntry("create color index win 7", 407); - glutAddMenuEntry(" ", 9999); - glutAddMenuEntry("destroy win 0", 410); - glutAddMenuEntry("destroy win 1", 411); - glutAddMenuEntry("destroy win 2", 412); - glutAddMenuEntry("destroy win 3", 413); - glutAddMenuEntry("destroy sub window", 414); - glutAddMenuEntry("destroy color index win 6", 416); - glutAddMenuEntry("destroy color index win 7", 417); - -/* Window manager stuff */ - - menu5 = glutCreateMenu(menuFunc); - glutAddMenuEntry("move current win", 430); - glutAddMenuEntry("resize current win", 431); - glutAddMenuEntry("iconify current win", 432); - glutAddMenuEntry("show current win", 433); - glutAddMenuEntry("hide current win", 434); - glutAddMenuEntry("push current win", 435); - glutAddMenuEntry("pop current win", 436); - glutAddMenuEntry(" ", 9999); - glutAddMenuEntry("move win 1", 420); - glutAddMenuEntry("resize win 1", 421); - glutAddMenuEntry("iconify win 1", 422); - glutAddMenuEntry("show win 1", 423); - glutAddMenuEntry("hide win 1", 424); - glutAddMenuEntry("push win 1", 425); - glutAddMenuEntry("pop win 1", 426); - -/* Gfx modes */ - - createMenu6(); /* build dynamically */ - -/* Texty reports */ - - menu7 = glutCreateMenu(menuFunc); - glutAddMenuEntry("report current win modes", 700); - glutAddMenuEntry("report current device data", 701); - glutAddMenuEntry("check OpenGL extensions", 702); - glutAddMenuEntry("dump internal data (d)", 703); - -/* Play with menus */ - - menu8 = glutCreateMenu(menuFunc); - glutAddMenuEntry("toggle menus on left button", 805); - glutAddMenuEntry("toggle menus on middle button", 806); - glutAddMenuEntry("toggle menus on right button", 807); - glutAddMenuEntry("---------------------------", 9999); - glutAddMenuEntry("add plain items", 800); - glutAddMenuEntry("add submenu items", 801); - glutAddMenuEntry("change new entries to plain items", 802); - glutAddMenuEntry("change new entries to submenus", 803); - glutAddMenuEntry("remove all new items", 804); - glutAddMenuEntry("---------------------------", 9999); - -/* Main menu */ - - menu1 = glutCreateMenu(menuFunc); - glutAddSubMenu("control", menu2); - glutAddSubMenu("shapes", menu3); - glutAddSubMenu("windows", menu4); - glutAddSubMenu("window ops", menu5); - glutAddSubMenu("gfx modes", menu6); - glutAddSubMenu("reports", menu7); - glutAddSubMenu("menus", menu8); - glutAddMenuEntry("help (h)", 101); - glutAddMenuEntry("quit (esc)", 100); -} - -/* createMenu6 - Dynamically rebuild menu of display modes to - show current choices */ - -void -createMenu6(void) -{ - char str[100]; - int i; - - if (menu6 != 0) - glutDestroyMenu(menu6); - menu6 = glutCreateMenu(menuFunc); - - for (i = 0; i < MODES; i++) { - sprintf(str, "%srequest %s", (modes[i] ? "+ " : " "), modeNames[i]); - glutAddMenuEntry(str, 602 + i); - } -} - -/* menuFunc - Process return codes from popup menus */ - -void -menuFunc(int value) -{ - static int initItems = 10; - int items, m; - - if (initItems == 0) { - glutSetMenu(menu8); - initItems = glutGet(GLUT_MENU_NUM_ITEMS); - } - PR("Menu returned value %d \n", value); - - switch (value) { - -/* GLUT shapes */ - - case 200: - case 201: - case 202: - case 203: - case 204: - case 205: - case 206: - case 207: - case 208: - redefineShapes(value - 200); - break; - -/* Overall controls */ - - case 300: - menuFreeze = !menuFreeze; - break; - - case 301: - text[idToIndex(glutGetWindow())] = !(text[idToIndex(glutGetWindow())]); - break; - - case 302: - timerOn = !timerOn; - if (timerOn) - glutTimerFunc(DELAY, timerFunc, 1); - break; - - case 303: - animation = !animation; - if (animation) - glutIdleFunc(idleFunc); - else - glutIdleFunc(NULL); - break; - - case 304: - winFreeze[idToIndex(glutGetWindow())] = !(winFreeze[idToIndex( - glutGetWindow())]); - break; - - case 305: - debug = !debug; - break; - - case 307: - backdrop = !backdrop; - break; - - case 308: - passive = !passive; - if (passive) - glutPassiveMotionFunc(passiveMotionFunc); - else - glutPassiveMotionFunc(NULL); - break; - - case 310: - lineWidth += 1; - updateAll(); - break; - - case 311: - lineWidth -= 1; - if (lineWidth < 1) - lineWidth = 1; - updateAll(); - break; - - case 312: - demoMode = !demoMode; - if (demoMode) - autoDemo(-2); - break; - -/* Window create/destroy. */ - -/* Creates */ - - case 400: - makeWindow(0); - break; - - case 401: - makeWindow(1); - break; - - case 402: - makeWindow(2); - break; - - case 403: - makeWindow(3); - break; - - case 404: - makeWindow(4); - break; - - case 406: - makeWindow(6); - break; - - case 407: - makeWindow(7); - break; - -/* Destroys */ - - case 410: - killWindow(0); - break; - - case 411: - killWindow(1); - break; - - case 412: - killWindow(2); - break; - - case 413: - killWindow(3); - break; - - case 414: - killWindow(4); - break; - - case 416: - killWindow(6); - break; - - case 417: - killWindow(7); - break; - - case 450: - makeAllWindows(); - break; - - case 451: - killAllWindows(); - break; - -/* Window movements etc. */ - - case 420: - positionWindow(1); - break; - - case 421: - reshapeWindow(1); - break; - - case 422: - iconifyWindow(1); - break; - - case 423: - showWindow(1); - break; - - case 424: - hideWindow(1); - break; - - case 425: - pushWindow(1); - break; - - case 426: - popWindow(1); - break; - - case 430: - positionWindow(idToIndex(glutGetWindow())); - break; - - case 431: - reshapeWindow(idToIndex(glutGetWindow())); - break; - - case 432: - iconifyWindow(idToIndex(glutGetWindow())); - break; - - case 433: - showWindow(idToIndex(glutGetWindow())); - break; - - case 434: - hideWindow(idToIndex(glutGetWindow())); - break; - - case 435: - pushWindow(idToIndex(glutGetWindow())); - break; - - case 436: - popWindow(idToIndex(glutGetWindow())); - break; - -/* Test gfx modes. */ - - case 600: - makeWindow(3); - break; - - case 601: - killWindow(3); - break; - - case 602: - case 603: - case 604: - case 605: - case 606: - case 607: - case 608: - case 609: - case 610: - case 611: - modes[value - 602] = !modes[value - 602]; - setInitDisplayMode(); - break; - -/* Text reports */ - -/* This is pretty ugly. */ - -#define INDENT 30 -#define REPORTSTART(text) \ - printf("\n" text "\n"); \ - textPtr[0] = (char *)malloc(strlen(text)+1); \ - strcpy(textPtr[0], text); \ - textCount = 1; - -#define REPORTEND \ - scrollLine = 0; \ - textPtr[textCount] = NULL; \ - makeWindow(8); \ - updateText(); - -#define GLUTGET(name) \ - { \ - char str[100], str2[100]; \ - int s, len; \ - sprintf(str, # name); \ - len = (int) strlen(# name); \ - for(s = 0 ; s < INDENT-len; s++) \ - strcat(str, " "); \ - sprintf(str2, ": %d\n",glutGet(name)); \ - strcat(str, str2); \ - printf(str); \ - textPtr[textCount] = stralloc(str); \ - textCount++; \ - } - - case 700: - - printf("XXXXXX glutGetWindow = %d\n", glutGetWindow()); - REPORTSTART("glutGet():"); - - GLUTGET(GLUT_WINDOW_X); - GLUTGET(GLUT_WINDOW_Y); - GLUTGET(GLUT_WINDOW_WIDTH); - GLUTGET(GLUT_WINDOW_HEIGHT); - GLUTGET(GLUT_WINDOW_BUFFER_SIZE); - GLUTGET(GLUT_WINDOW_STENCIL_SIZE); - GLUTGET(GLUT_WINDOW_DEPTH_SIZE); - GLUTGET(GLUT_WINDOW_RED_SIZE); - GLUTGET(GLUT_WINDOW_GREEN_SIZE); - GLUTGET(GLUT_WINDOW_BLUE_SIZE); - GLUTGET(GLUT_WINDOW_ALPHA_SIZE); - GLUTGET(GLUT_WINDOW_ACCUM_RED_SIZE); - GLUTGET(GLUT_WINDOW_ACCUM_GREEN_SIZE); - GLUTGET(GLUT_WINDOW_ACCUM_BLUE_SIZE); - GLUTGET(GLUT_WINDOW_ACCUM_ALPHA_SIZE); - GLUTGET(GLUT_WINDOW_DOUBLEBUFFER); - GLUTGET(GLUT_WINDOW_RGBA); - GLUTGET(GLUT_WINDOW_PARENT); - GLUTGET(GLUT_WINDOW_NUM_CHILDREN); - GLUTGET(GLUT_WINDOW_COLORMAP_SIZE); - GLUTGET(GLUT_WINDOW_NUM_SAMPLES); - GLUTGET(GLUT_STEREO); - GLUTGET(GLUT_SCREEN_WIDTH); - GLUTGET(GLUT_SCREEN_HEIGHT); - GLUTGET(GLUT_SCREEN_HEIGHT_MM); - GLUTGET(GLUT_SCREEN_WIDTH_MM); - GLUTGET(GLUT_MENU_NUM_ITEMS); - GLUTGET(GLUT_DISPLAY_MODE_POSSIBLE); - GLUTGET(GLUT_INIT_DISPLAY_MODE); - GLUTGET(GLUT_INIT_WINDOW_X); - GLUTGET(GLUT_INIT_WINDOW_Y); - GLUTGET(GLUT_INIT_WINDOW_WIDTH); - GLUTGET(GLUT_INIT_WINDOW_HEIGHT); - GLUTGET(GLUT_ELAPSED_TIME); - - REPORTEND; - break; - -#define GLUTDEVGET(name) \ - { \ - char str[100], str2[100]; \ - int len, s; \ - sprintf(str, # name); \ - len = (int) strlen(# name); \ - for(s = 0 ; s < INDENT-len; s++) \ - strcat(str, " "); \ - sprintf(str2, ": %d\n", \ - glutDeviceGet(name)); \ - strcat(str, str2); \ - printf(str); \ - textPtr[textCount] = stralloc(str); \ - textCount++; \ - } - - case 701: - REPORTSTART("glutDeviceGet():"); - - GLUTDEVGET(GLUT_HAS_KEYBOARD); - GLUTDEVGET(GLUT_HAS_MOUSE); - GLUTDEVGET(GLUT_HAS_SPACEBALL); - GLUTDEVGET(GLUT_HAS_DIAL_AND_BUTTON_BOX); - GLUTDEVGET(GLUT_HAS_TABLET); - GLUTDEVGET(GLUT_NUM_MOUSE_BUTTONS); - GLUTDEVGET(GLUT_NUM_SPACEBALL_BUTTONS); - GLUTDEVGET(GLUT_NUM_BUTTON_BOX_BUTTONS); - GLUTDEVGET(GLUT_NUM_DIALS); - GLUTDEVGET(GLUT_NUM_TABLET_BUTTONS); - - REPORTEND; - break; - -#define EXTCHECK(name) \ - { \ - char str[100], str2[100]; \ - int len, s; \ - sprintf(str, # name); \ - len = (int) strlen(# name); \ - for(s = 0 ; s < INDENT-len; s++) \ - strcat(str, " "); \ - sprintf(str2, ": %s\n", \ - glutExtensionSupported(# name)? \ - "yes": "no"); \ - strcat(str, str2); \ - printf(str); \ - textPtr[textCount] = stralloc(str); \ - textCount++; \ - } - - case 702: - REPORTSTART("glutExtensionSupported():"); - - EXTCHECK(GL_EXT_abgr); - EXTCHECK(GL_EXT_blend_color); - EXTCHECK(GL_EXT_blend_minmax); - EXTCHECK(GL_EXT_blend_logic_op); - EXTCHECK(GL_EXT_blend_subtract); - EXTCHECK(GL_EXT_polygon_offset); - EXTCHECK(GL_EXT_texture); - EXTCHECK(GL_EXT_guaranteed_to_fail); - EXTCHECK(GLX_SGI_swap_control); - EXTCHECK(GLX_SGI_video_sync); - EXTCHECK(GLX_SGIS_multi_sample); - - REPORTEND; - break; - - case 703: - dumpIds(); - break; - -/* Mess around with menus */ - - case 800: - if (glutGetMenu() != menu8) /* just a test */ - printf("glutGetMenu() returned unexpected value\n"); - glutAddMenuEntry("help", 101); - glutAddMenuEntry("help", 101); - glutAddMenuEntry("help", 101); - glutAddMenuEntry("help", 101); - glutAddMenuEntry("help", 101); - break; - - case 801: - glutAddSubMenu("shapes", menu3); - glutAddSubMenu("shapes", menu3); - glutAddSubMenu("shapes (a long string to break menus with)", menu3); - glutAddSubMenu("shapes", menu3); - glutAddSubMenu("shapes", menu3); - break; - - case 802: - items = glutGet(GLUT_MENU_NUM_ITEMS); - for (m = initItems + 1; m <= items; m++) { - glutChangeToMenuEntry(m, "help", 101); - } - break; - - case 803: - items = glutGet(GLUT_MENU_NUM_ITEMS); - for (m = initItems + 1; m <= items; m++) { - glutChangeToSubMenu(m, "shapes", menu3); - } - break; - - case 804: - items = glutGet(GLUT_MENU_NUM_ITEMS); - /* reverse order so renumbering not aproblem */ - for (m = items; m >= initItems + 1; m--) { - glutRemoveMenuItem(m); - } - break; - - case 805: - menuButton[0] = !menuButton[0]; - attachMenus(); - break; - - case 806: - menuButton[1] = !menuButton[1]; - attachMenus(); - break; - - case 807: - menuButton[2] = !menuButton[2]; - attachMenus(); - break; - -/* Direct menu items. */ - - case 100: - exit(0); - break; - - case 101: - if (winId[5] == 0) - makeWindow(5); - else - killWindow(5); - break; - - case 9999: - break; - - default: - fprintf(stderr, "\007Unhandled case %d in menu callback\n", value); - } - -} - -/* redefineShapes - Remake the shapes display lists */ - -void -redefineShapes(int shape) -{ - int i; - -#define C3 \ - switch(i) \ - { \ - case 0: \ - case 3: \ - C1; \ - break; \ - \ - case 1: \ - case 2: \ - case 4: \ - case 6: \ - case 7: \ - C2; \ - break; \ - } \ - currentShape = shape - - for (i = 0; i < MAXWIN; i++) { - if (winId[i]) { - glutSetWindow(winId[i]); - if (glIsList(i + 1)) - glDeleteLists(i + 1, 1); - glNewList(i + 1, GL_COMPILE); - - switch (shape) { - -#undef C1 -#define C1 glutSolidSphere(1.5, 10, 10) -#undef C2 -#define C2 glutWireSphere(1.5, 10, 10) - - case 0: - C3; - break; - -#undef C1 -#define C1 glutSolidCube(2) -#undef C2 -#define C2 glutWireCube(2) - - case 1: - C3; - break; - -#undef C1 -#define C1 glutSolidCone(1.5, 1.75, 10, 10); -#undef C2 -#define C2 glutWireCone(1.5, 1.75, 10, 10); - - case 2: - C3; - break; - -#undef C1 -#define C1 glutSolidTorus(0.5, 1.1, 10, 10) -#undef C2 -#define C2 glutWireTorus(0.5, 1.1, 10, 10) - - case 3: - C3; - break; - -#undef C1 -#define C1 glScalef(.8, .8, .8);glutSolidDodecahedron() -#undef C2 -#define C2 glScalef(.8, .8, .8);glutWireDodecahedron() - - case 4: - C3; - break; - -#undef C1 -#define C1 glScalef(1.5, 1.5, 1.5);glutSolidOctahedron() -#undef C2 -#define C2 glScalef(1.5, 1.5, 1.5);glutWireOctahedron() - - case 5: - C3; - break; - -#undef C1 -#define C1 glScalef(1.8, 1.8, 1.8);glutSolidTetrahedron() -#undef C2 -#define C2 glScalef(1.8, 1.8, 1.8);glutWireTetrahedron() - - case 6: - C3; - break; - -#undef C1 -#define C1 glScalef(1.5, 1.5, 1.5);glutSolidIcosahedron() -#undef C2 -#define C2 glScalef(1.5, 1.5, 1.5);glutWireIcosahedron() - - case 7: - C3; - break; - -#undef C1 -#define C1 glutSolidTeapot(1.5); -#undef C2 -#define C2 glutWireTeapot(1.5); - - case 8: - C3; - break; - } - glEndList(); - } - } -} - -/* positionWindow - Shift a window */ - -void -positionWindow(int index) -{ - int x, y; - - if (winId[index] == 0) - return; - - glutSetWindow(winId[index]); - x = glutGet(GLUT_WINDOW_X); - y = glutGet(GLUT_WINDOW_Y); - glutPositionWindow(x + 50, y + 50); -} - -/* reshapeWindow - Change window size a little */ - -void -reshapeWindow(int index) -{ - int x, y; - - if (winId[index] == 0) - return; - glutSetWindow(winId[index]); - x = glutGet(GLUT_WINDOW_WIDTH); - y = glutGet(GLUT_WINDOW_HEIGHT); -/* glutReshapeWindow(x * (index % 2? 0.8: 1.2), y * (index % 2? - - 1.2: 0.8)); */ - glutReshapeWindow((int) (x * 1.0), (int) (y * 0.8)); -} - -/* iconifyWindow - Iconify a window */ - -void -iconifyWindow(int index) -{ - if (winId[index] == 0) - return; - glutSetWindow(winId[index]); - glutIconifyWindow(); -} - -/* showWindow - Show a window (map or uniconify it) */ - -void -showWindow(int index) -{ - if (winId[index] == 0) - return; - glutSetWindow(winId[index]); - glutShowWindow(); -} - -/* hideWindow - Hide a window (unmap it) */ - -void -hideWindow(int index) -{ - if (winId[index] == 0) - return; - glutSetWindow(winId[index]); - glutHideWindow(); -} - -/* pushWindow - Push a window */ - -void -pushWindow(int index) -{ - if (winId[index] == 0) - return; - glutSetWindow(winId[index]); - glutPushWindow(); -} - -/* popWindow - Pop a window */ - -void -popWindow(int index) -{ - if (winId[index] == 0) - return; - glutSetWindow(winId[index]); - glutPopWindow(); -} - -/* drawScene - Draw callback, triggered by expose events etc. - in GLUT. */ - -void -drawScene(void) -{ - int winIndex; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - winIndex = idToIndex(glutGetWindow()); - /* printf("drawScene for index %d, id %d\n", winIndex, - glutGetWindow()); */ - - glPushMatrix(); - glLineWidth(lineWidth); - if (backdrop) - glCallList(100); - - /* Left button spinning */ - - trackBall(APPLY, 0, 0, 0, 0); - - /* Apply continuous spinning */ - - glRotatef(angle, 0, 1, 0); - - glCallList(winIndex + 1); - glPopMatrix(); - - if (text[winIndex]) - showText(); - - glutSwapBuffers(); -} - -/* showText - Render some text in the current GLUT window */ - -void -showText(void) -{ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - gluOrtho2D(0, 100, 0, 100); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - glColor3f(1.0, 1.0, 1.0); - glIndexi(7); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - - glLineWidth(lineWidth); - - textString(1, 1, "GLUT_BITMAP_8_BY_13", GLUT_BITMAP_8_BY_13); - textString(1, 5, "GLUT_BITMAP_9_BY_15", GLUT_BITMAP_9_BY_15); - textString(1, 10, "GLUT_BITMAP_TIMES_ROMAN_10", GLUT_BITMAP_TIMES_ROMAN_10); - textString(1, 15, "GLUT_BITMAP_TIMES_ROMAN_24", GLUT_BITMAP_TIMES_ROMAN_24); - - strokeString(1, 25, "GLUT_STROKE_ROMAN", GLUT_STROKE_ROMAN); - strokeString(1, 35, "GLUT_STROKE_MONO_ROMAN", GLUT_STROKE_MONO_ROMAN); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - -} - -/* textString - Bitmap font string */ - -void -textString(int x, int y, char *msg, void *font) -{ - glRasterPos2f(x, y); - while (*msg) { - glutBitmapCharacter(font, *msg); - msg++; - } -} - -/* strokeString - Stroke font string */ - -void -strokeString(int x, int y, char *msg, void *font) -{ - glPushMatrix(); - glTranslatef(x, y, 0); - glScalef(.04, .04, .04); - while (*msg) { - glutStrokeCharacter(font, *msg); - msg++; - } - glPopMatrix(); -} - -/* idleFunc - GLUT idle func callback - animates windows */ - -void -idleFunc(void) -{ - int i; - - if (!leftDown && !middleDown) - angle += 1; - angle = angle % 360; - - for (i = 0; i < MAXWIN; i++) { - if (winId[i] && winVis[i] && !winFreeze[i]) { - glutSetWindow(winId[i]); - glutPostRedisplay(); - } - } -} - -/* reshapeFunc - Reshape callback. */ - -void -reshapeFunc(int width, int height) -{ - int winId; - float aspect; - - winId = glutGetWindow(); - PR("reshape callback for window id %d \n", winId); - - glViewport(0, 0, width, height); - aspect = (float) width / height; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(40.0, aspect, 1.0, 20.0); - glMatrixMode(GL_MODELVIEW); -} - -/* visible - Visibility callback. Turn off rendering in - invisible windows */ - -void -visible(int state) -{ - int winId; - static GLboolean someVisible = GL_TRUE; - - winId = glutGetWindow(); - /* printf("visible: state = %d \n", state); */ - - if (state == GLUT_VISIBLE) { - PR("Window id %d visible \n", winId); - winVis[idToIndex(winId)] = GL_TRUE; - } else { - PR("Window %d not visible \n", winId); - winVis[idToIndex(winId)] = GL_FALSE; - } - - if ((winVis[0] == GL_FALSE) && (winVis[1] == GL_FALSE) && (winVis[2] == GL_FALSE) - && (winVis[3] == GL_FALSE) && (winVis[6] == GL_FALSE) && (winVis[7] == - GL_FALSE)) { - glutIdleFunc(NULL); - PR("All windows not visible; idle func disabled\n"); - someVisible = GL_FALSE; - } else { - if (!someVisible) { - PR("Some windows now visible; idle func enabled\n"); - someVisible = GL_TRUE; - if (animation) - glutIdleFunc(idleFunc); - } - } -} - -/* keyFunc - Ascii key callback */ - -/* ARGSUSED1 */ -void -keyFunc(unsigned char key, int x, int y) -{ - int i, ii; - - if (debug || showKeys) - printf("Ascii key '%c' 0x%02x\n", key, key); - - switch (key) { - case 0x1b: - exit(0); - break; - - case 'a': - demoMode = !demoMode; - if (demoMode) - autoDemo(-2); - break; - - case 's': - AUTODELAY = AUTODELAY * 0.666; - break; - - case 'S': - AUTODELAY = AUTODELAY * 1.5; - break; - - case 'q': - killWindow(idToIndex(glutGetWindow())); - break; - - case 'k': - showKeys = !showKeys; - break; - - case 'p': - demoMode = !demoMode; - if (demoMode) - autoDemo(-999); - break; - - case 'D': - debug = !debug; - break; - - case 'd': - dumpIds(); - break; - - case 'h': - if (winId[5] == 0) - makeWindow(5); - else - killWindow(5); - break; - - case 't': - ii = idToIndex(glutGetWindow()); - text[ii] = !text[ii]; - break; - - case 'r': - trackBall(RESET, 0, 0, 0, 0); - break; - - case 'l': - lineWidth += 1; - updateAll(); - break; - - case 'L': - lineWidth -= 1; - if (lineWidth < 1) - lineWidth = 1; - updateAll(); - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '6': - i = key - '0'; - winVis[i] = !winVis[i]; - break; - - case ')': - makeWindow(0); - break; - - case '!': - makeWindow(1); - break; - - case '@': - makeWindow(2); - break; - - case '#': - makeWindow(3); - break; - - } -} - -/* specialFunc - Special keys callback (F keys, cursor keys - etc. */ - -/* ARGSUSED1 */ -void -specialFunc(int key, int x, int y) -{ - if (debug || showKeys) - printf("Special key %d\n", key); - - switch (key) { - case GLUT_KEY_PAGE_DOWN: - scrollLine += 10; - updateHelp(); - updateText(); - break; - - case GLUT_KEY_PAGE_UP: - scrollLine -= 10; - updateHelp(); - updateText(); - break; - - case GLUT_KEY_DOWN: - scrollLine += 1; - updateHelp(); - updateText(); - break; - - case GLUT_KEY_UP: - scrollLine -= 1; - updateHelp(); - updateText(); - break; - - case GLUT_KEY_HOME: - scrollLine = 0; - updateHelp(); - updateText(); - break; - - case GLUT_KEY_END: - scrollLine = 9999; - updateHelp(); - updateText(); - break; - - case GLUT_KEY_RIGHT: - scrollCol -= 1; - updateHelp(); - updateText(); - break; - - case GLUT_KEY_LEFT: - scrollCol += 1; - updateHelp(); - updateText(); - break; - } -} - -/* mouseFunc - Mouse button callback */ - -void -mouseFunc(int button, int state, int x, int y) -{ - PR("Mouse button %d, state %d, at pos %d, %d\n", button, state, x, y); - - trackBall(MOUSEBUTTON, button, state, x, y); -} - -/* motionFunc - Mouse movement (with a button down) callback */ - -void -motionFunc(int x, int y) -{ - PR("Mouse motion at %d, %d\n", x, y); - - trackBall(MOUSEMOTION, 0, 0, x, y); - - glutPostRedisplay(); -} - -/* passiveMotionFunc - Mouse movement (with no button down) - callback */ - -void -passiveMotionFunc(int x, int y) -{ - printf("Mouse motion at %d, %d\n", x, y); -} - -/* entryFunc - Window entry event callback */ - -void -entryFunc(int state) -{ - int winId = glutGetWindow(); - PR("Entry event: window id %d (index %d), state %d \n", winId, idToIndex( - winId), state); -} - -/* menuStateFunc - Callback to tell us when menus are popped - up/down. */ - -int menu_state = GLUT_MENU_NOT_IN_USE; - -void -menuStateFunc(int state) -{ - printf("menu stated = %d\n", state); - menu_state = state; - - if (glutGetWindow() == 0) { - PR("menuStateFunc: window invalid\n"); - return; - } - PR("Menus are%sin use\n", state == GLUT_MENU_IN_USE ? " " : " not "); - - if ((state == GLUT_MENU_IN_USE) && menuFreeze) - glutIdleFunc(NULL); - else if (animation) - glutIdleFunc(idleFunc); -} - -/* timerFunc - General test of global timer */ - -void -timerFunc(int value) -{ - printf("timer callback: value %d\n", value); - if (timerOn) { - glutTimerFunc(DELAY, timerFunc, 1); - } -} - -#if 0 -/* delayedReinstateMenuStateCallback - Hack to reinstate - MenuStateCallback after a while. */ - -void -delayedReinstateMenuStateCallback(int state) -{ - glutMenuStateFunc(menuStateFunc); -} - -#endif - -/* setInitDisplayMode - update display modes from display mode - menu */ - -void -setInitDisplayMode(void) -{ - int i; - - displayMode = 0; - - for (i = 0; i < MODES; i++) { - if (modes[i]) { - /* printf("Requesting %s \n", modeNames[i]); */ - displayMode |= glutMode[i]; - } - } - - glutInitDisplayMode(displayMode); - - createMenu6(); - if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) - warning("This display mode not supported\n"); -} - -/* makeWindow - Create one of the windows */ - -void -makeWindow(int index) -{ - char str[99]; - - if (winId[index] != 0) { - /* warning("Attempt to create window which is already - created"); */ - return; - } - switch (index) { - - case 0: /* ordinary RGB windows */ - case 1: - case 2: - case 3: - - setInitDisplayMode(); - glutInitWindowPosition(pos[index][0], pos[index][1]); - glutInitWindowSize(size[index][0], size[index][1]); - winId[index] = glutCreateWindow(" "); - PR("Window %d id = %d \n", index, winId[index]); - gfxInit(index); - - addCallbacks(); - - sprintf(str, "window %d (RGB)", index); - glutSetWindowTitle(str); - sprintf(str, "icon %d", index); - glutSetIconTitle(str); - glutSetMenu(menu1); - glutAttachMenu(GLUT_RIGHT_BUTTON); - break; - - case 4: /* subwindow */ - - setInitDisplayMode(); - winId[index] = glutCreateSubWindow(winId[0], pos[index][0], pos[index] - [1], size[index][0], size[index][1]); - PR("Window %d id = %d \n", index, winId[index]); - gfxInit(index); - glutDisplayFunc(drawScene); - glutVisibilityFunc(visible); - glutReshapeFunc(reshapeFunc); - - break; - - case 5: /* help window */ - case 8: /* text window */ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowPosition(pos[index][0], pos[index][1]); - glutInitWindowSize(size[index][0], size[index][1]); - winId[index] = glutCreateWindow(" "); - PR("Window %d id = %d \n", index, winId[index]); - - /* addCallbacks(); */ - glutKeyboardFunc(keyFunc); - glutSpecialFunc(specialFunc); - - glClearColor(0.15, 0.15, 0.15, 1.0); - glColor3f(1, 1, 1); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, 300, 0, 100); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - if (index == 5) { - glutDisplayFunc(updateHelp); - glutSetWindowTitle("help (RGB) win 5"); - glutSetIconTitle("help"); - } else { - glutDisplayFunc(updateText); - glutSetWindowTitle("text (RGB) win 8"); - glutSetIconTitle("text"); - } - glutSetMenu(menu1); - glutAttachMenu(GLUT_RIGHT_BUTTON); - break; - - case 6: /* color index window */ - case 7: /* color index window */ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_INDEX | GLUT_DEPTH); - if (glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) { - glutInitWindowPosition(pos[index][0], pos[index][1]); - glutInitWindowSize(size[index][0], size[index][1]); - winId[index] = glutCreateWindow(" "); - PR("Window %d id = %d \n", index, winId[index]); - - gfxInit(index); - - addCallbacks(); - - sprintf(str, "window %d (color index)", index); - glutSetWindowTitle(str); - sprintf(str, "icon %d", index); - glutSetIconTitle(str); - glutSetMenu(menu1); - glutAttachMenu(GLUT_RIGHT_BUTTON); - } - break; - - } -} - -/* killWindow - Kill one of the main windows */ - -void -killWindow(int index) -{ - int i; - - if (winId[index] == 0) { - /* fprintf(stderr, "Attempt to kill invalid window in - killWindow\n"); */ - return; - } - PR("Killing win %d\n", index); - glutSetWindow(winId[index]); - - /* Disable all callbacks for safety, although - glutDestroyWindow should do this. */ - - removeCallbacks(); - - glutDestroyWindow(winId[index]); - winId[index] = 0; - winVis[index] = GL_FALSE; - -#if 0 - /* If we reinstate the menu state func here, prog breaks. So - reinstate it a little later. */ - glutTimerFunc(MENUDELAY, delayedReinstateMenuStateCallback, 1); -#endif - - if (index == 5) { /* help */ - scrollLine = 0; - scrollCol = 0; - } - if (index == 8) { /* text window */ - for (i = 0; textPtr[i] != NULL; i++) { - free(textPtr[i]); /* free the text strings */ - textPtr[i] = NULL; - } - } -} - -/* addCallbacks - Add some standard callbacks after creating a - window */ - -void -addCallbacks(void) -{ - glutDisplayFunc(drawScene); - glutVisibilityFunc(visible); - glutReshapeFunc(reshapeFunc); - glutKeyboardFunc(keyFunc); - glutSpecialFunc(specialFunc); - glutMouseFunc(mouseFunc); - glutMotionFunc(motionFunc); - glutEntryFunc(entryFunc); - -/* Callbacks for exotic input devices. Must get my dials & - buttons back. */ - - glutSpaceballMotionFunc(spaceballMotionCB); - glutSpaceballRotateFunc(spaceballRotateCB); - glutSpaceballButtonFunc(spaceballButtonCB); - - glutButtonBoxFunc(buttonBoxCB); - glutDialsFunc(dialsCB); - - glutTabletMotionFunc(tabletMotionCB); - glutTabletButtonFunc(tabletButtonCB); -} - -/* removeCallbacks - Remove all callbacks before destroying a - window. GLUT probably does this anyway but we'll be safe. */ - -void -removeCallbacks(void) -{ - glutVisibilityFunc(NULL); - glutReshapeFunc(NULL); - glutKeyboardFunc(NULL); - glutSpecialFunc(NULL); - glutMouseFunc(NULL); - glutMotionFunc(NULL); - glutEntryFunc(NULL); -} - -/* updateHelp - Update the help window after user scrolls. */ - -void -updateHelp(void) -{ - static char *helpPtr[] = - { - "(Use PGUP, PGDN, HOME, END, arrows to scroll help text) ", - " ", - "A demo program for GLUT. ", - "G Edwards, Aug 95 ", - "Exercises 99% of GLUT calls ", - VERSIONLONG, - " ", - "This text uses GLUT_STROKE_MONO_ROMAN font, a built-in vector font.", - "(Try resizing the help window). ", - " ", - "Keys: ", - " esc quit ", - " t toggle text on/off in each window ", - " h toggle help ", - " q quit current window ", - " a auto demo ", - " p pause/unpause demo ", - " l increase line width (gfx & stroke text) ", - " L decrease line width (gfx & stroke text) ", - " r reset transforms ", - " k show keyboard events ", - " D show all events ", - " ", - "Mouse: ", - " Left button: rotate ", - " Middle button: pan ", - " Left + middle: zoom ", - NULL}; - - updateScrollWindow(5, helpPtr); -} - -/* updateText - Update a text window */ - -void -updateText(void) -{ - int i; - - if (textPtr[0] == NULL) { - for (i = 0; i < 20; i++) { - textPtr[i] = (char *) malloc(50); - strcpy(textPtr[i], "no current text"); - } - textPtr[20] = NULL; - } - updateScrollWindow(8, textPtr); -} - -/* updateScrollWindow */ - -void -updateScrollWindow(int index, char **ptr) -{ - int i, j, lines = 0; - - if (winId[index] == 0) - return; - - glutSetWindow(winId[index]); - - for (i = 0; ptr[i] != NULL; i++) - lines++; - - if (scrollLine < 0) - scrollLine = 0; - if (scrollLine > (lines - 5)) - scrollLine = lines - 5; - - glClear(GL_COLOR_BUFFER_BIT); - - glLineWidth(lineWidth); - - for (i = scrollLine, j = 1; ptr[i] != NULL; i++, j++) - strokeString(scrollCol * 50, 100 - j * 6, ptr[i], - GLUT_STROKE_MONO_ROMAN); - - glutSwapBuffers(); - -} - -/* updateAll - Update all visible windows after soem global - change, eg. line width */ - -void -updateAll(void) -{ - int i; - - if (winId[5] != 0) - updateHelp(); - - if (winId[8] != 0) - updateText(); - - for (i = 0; i < MAXWIN; i++) - if (winId[i]) { - glutSetWindow(winId[i]); - glutPostRedisplay(); - } -} - -/* idToIndex - Convert GLUT window id to our internal index */ - -int -idToIndex(int id) -{ - int i; - for (i = 0; i < MAXWIN; i++) { - if (winId[i] == id) - return i; - } - fprintf(stderr, "error: id %d not found \n", id); - return (-1); -} - -/* warning - warning messages */ - -void -warning(char *msg) -{ - fprintf(stderr, "\007"); - - if (debug) { - fprintf(stderr, "%s", msg); - if (msg[strlen(msg)] != '\n') - fprintf(stderr, "%s", "\n"); - } -} - -/* dumpIds - Debug: dump some internal data */ - -void -dumpIds(void) -{ - int i, j; - - printf("\nInternal data:\n"); - - for (i = 0; i < MAXWIN; i++) - printf("Index %d, glut win id %d, visibility %d\n", i, winId[i], - winVis[i]); - - for (i = 0; i < MAXWIN; i++) { - if (winId[i]) - glutSetWindow(winId[i]); - else { - printf("index %d - no glut window\n", i); - continue; - } - - for (j = 1; j <= MAXWIN; j++) - printf("Index %d, display list %d %s defined\n", i, j, glIsList(j) ? - "is " : "not"); - } -} - -/* autoDemo - Run auto demo/test This is a bit tricky. We need - to start a timer sequence which progressively orders things - to be done. The work really gets done when we return from - our callback. Have to think about the event loop / callback - design here. */ - -void -autoDemo(int value) -{ - -#define STEP(a, b) \ - case a: \ - action(a); \ - glutTimerFunc(AUTODELAY * b, autoDemo, next(a); \ - break; - - static int index = 0; - static int count = 0; - static int restartValue = -2; - - if (value == -999) - value = restartValue; - - restartValue = value; - -#define AUTODELAY2 (unsigned int) (AUTODELAY*0.66) - - /* fprintf(stderr, "autoDemo: value %d \n", value); */ - - if (!demoMode) - return; - - if (menu_state == GLUT_MENU_IN_USE) { - glutTimerFunc(AUTODELAY / 2, autoDemo, value); - return; - } - switch (value) { - -/* Entry point; kill off existing windows. */ - - case -2: - killAllWindows(); - glutTimerFunc(AUTODELAY / 2, autoDemo, 1); - break; - -/* Start making windows */ - - case -1: - makeWindow(0); - glutTimerFunc(AUTODELAY, autoDemo, 0); /* skip case 0 - first time */ - break; - -/* Change shape & backdrop */ - - case 0: - currentShape = (currentShape + 1) % 9; - redefineShapes(currentShape); - count += 1; - if (count % 2) - backdrop = !backdrop; - glutTimerFunc(AUTODELAY, autoDemo, 1); - break; - -/* Keep making windows */ - - case 1: - makeWindow(1); - glutTimerFunc(AUTODELAY, autoDemo, 2); - break; - - case 2: - makeWindow(2); - glutTimerFunc(AUTODELAY, autoDemo, 3); - break; - - case 3: - makeWindow(3); - glutTimerFunc(AUTODELAY, autoDemo, 4); - break; - - case 4: - makeWindow(4); - glutTimerFunc(AUTODELAY, autoDemo, 5); - break; - - case 5: - makeWindow(5); - glutTimerFunc(AUTODELAY * 2, autoDemo, 51); - break; - - case 51: - makeWindow(6); - glutTimerFunc(AUTODELAY * 2, autoDemo, 52); - break; - - case 52: - makeWindow(7); - glutTimerFunc(AUTODELAY * 2, autoDemo, 53); - break; - -/* Kill last 3 windows, leave 4 up. */ - - case 53: - killWindow(7); - glutTimerFunc(AUTODELAY, autoDemo, 54); - break; - - case 54: - killWindow(6); - glutTimerFunc(AUTODELAY, autoDemo, 6); - break; - - case 6: - killWindow(5); - glutTimerFunc(AUTODELAY, autoDemo, 7); - break; - - case 7: - killWindow(4); - glutTimerFunc(AUTODELAY, autoDemo, 700); - break; - -/* Change shape again */ - - case 700: - currentShape = (currentShape + 1) % 9; - redefineShapes(currentShape); - glutTimerFunc(AUTODELAY, autoDemo, 701); - break; - -/* Cycle 4 main windows through various window ops. */ - - case 701: - positionWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 701 : 702); - break; - - case 702: - reshapeWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 702 : 703); - break; - - case 703: - iconifyWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 703 : 704); - break; - - case 704: - showWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 704 : 705); - break; - - case 705: - hideWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 705 : 706); - break; - - case 706: - showWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 706 : 707); - break; - - case 707: - pushWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 707 : 708); - break; - - case 708: - popWindow(index); - index = (index + 1) % 4; - glutTimerFunc(AUTODELAY2, autoDemo, index > 0 ? 708 : 8); - break; - -/* Kill all windows */ - - case 8: - killWindow(3); - glutTimerFunc(AUTODELAY, autoDemo, 9); - break; - - case 9: - killWindow(2); - glutTimerFunc(AUTODELAY, autoDemo, 10); - break; - - case 10: - killWindow(1); - glutTimerFunc(AUTODELAY, autoDemo, 11); - break; - - case 11: - killWindow(0); - glutTimerFunc(AUTODELAY, autoDemo, -1); /* back to start */ - break; - } - -} - -/* attachMenus - Attach/detach menus to/from mouse buttons */ - -void -attachMenus(void) -{ - int i, b; - int button[3] = - {GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON}; - - for (i = 0; i < MAXWIN; i++) { - if (winId[i] != 0) { - for (b = 0; b < 3; b++) { - glutSetWindow(winId[i]); - glutSetMenu(menu1); - if (menuButton[b]) - glutAttachMenu(button[b]); - else - glutDetachMenu(button[b]); - } - } - } -} - -/* killAllWindows - Kill all windows (except 0) */ - -void -killAllWindows(void) -{ - int w; - - for (w = 1; w < MAXWIN; w++) - if (winId[w]) - killWindow(w); -} - -/* makeAllWindows - Make all windows */ - -void -makeAllWindows(void) -{ - int w; - - for (w = 0; w < MAXWIN; w++) - if (!winId[w]) - makeWindow(w); -} - -/* checkArgs - Check command line args */ - -void -checkArgs(int argc, char *argv[]) -{ - int argp; - GLboolean quit = GL_FALSE; - GLboolean error = GL_FALSE; - -#define AA argv[argp] - -#if 0 -#define NEXT argp++; \ - if(argp >= argc) \ - { \ - Usage(); \ - Exit(1); \ - } -#endif - - argp = 1; - while (argp < argc) { - if (match(AA, "-help")) { - commandLineHelp(); - quit = GL_TRUE; - } else if (match(AA, "-version")) { - printf(VERSIONLONG "\n"); - quit = GL_TRUE; - } else if (match(AA, "-auto")) { - demoMode = GL_TRUE; - } else if (match(AA, "-scale")) { - argp++; - scaleFactor = atof(argv[argp]); - } else { - fprintf(stderr, "Unknown arg: %s\n", AA); - error = GL_TRUE; - quit = GL_TRUE; - } - argp++; - } - - if (error) { - commandLineHelp(); - exit(1); - } - if (quit) - exit(0); -} - -/* commandLineHelp - Command line help */ - -void -commandLineHelp(void) -{ - printf("Usage:\n"); - printf(" -h[elp] this stuff\n"); - printf(" -v[ersion] show version\n"); - printf(" -a[uto] start in auto demo mode\n"); - printf(" -s[cale] f scale windows by f\n"); - printf("Standard GLUT args:\n"); - printf(" -iconic start iconic\n"); - printf(" -display DISP use display DISP\n"); - printf(" -direct use direct rendering (default)\n"); - printf(" -indirect use indirect rendering\n"); - printf(" -sync use synchronous X protocol\n"); - printf(" -gldebug check OpenGL errors\n"); - printf(" -geometry WxH+X+Y standard X window spec (overridden here) \n"); -} - -/* match - Match a string (any unique substring). */ - -GLboolean -match(char *arg, char *t) -{ - if (strstr(t, arg)) - return GL_TRUE; - else - return GL_FALSE; -} - -/* scaleWindows - Scale initial window sizes ansd positions */ - -void -scaleWindows(float scale) -{ - int i; - - for (i = 0; i < MAXWIN; i++) { - pos[i][0] = pos[i][0] * scale; - pos[i][1] = pos[i][1] * scale; - size[i][0] = size[i][0] * scale; - size[i][1] = size[i][1] * scale; - } -} - -/* trackBall - A simple trackball (not with proper rotations). */ - -/** A simple trackball with spin = left button - pan = middle button - zoom = left + middle - Doesn't have proper trackball rotation, ie axes which remain fixed in - the scene. We should use the trackball code from 4Dgifts. */ - -#define STARTROTATE(x, y) \ -{ \ - startMX = x; \ - startMY = y; \ -} - -#define STOPROTATE(x, y) \ -{ \ - steadyXangle = varXangle; \ - steadyYangle = varYangle; \ -} - -#define STARTPAN(x, y) \ -{ \ - startMX = x; \ - startMY = y; \ -} - -#define STOPPAN(x, y) \ -{ \ - steadyX = varX; \ - steadyY = varY; \ -} - -#define STARTZOOM(x, y) \ -{ \ - startMX = x; \ - startMY = y; \ -} - -#define STOPZOOM(x, y) \ -{ \ - steadyZ = varZ; \ -} - -static float -fixAngle(float angle) -{ - return angle - floor(angle / 360.0) * 360.0; -} - -void -trackBall(int mode, int button, int state, int x, int y) -{ - static int startMX = 0, startMY = 0; /* initial mouse pos */ - static int deltaMX = 0, deltaMY = 0; /* initial mouse pos */ - static float steadyXangle = 0.0, steadyYangle = 0.0; - static float varXangle = 0.0, varYangle = 0.0; - static float steadyX = 0.0, steadyY = 0.0, steadyZ = 0.0; - static float varX = 0.0, varY = 0.0, varZ = 0.0; - - switch (mode) { - - case RESET: - steadyXangle = steadyYangle = steadyX = steadyY = steadyZ = 0.0; - break; - - case MOUSEBUTTON: - - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN && !middleDown) { - STARTROTATE(x, y); - leftDown = GL_TRUE; - } else if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN && - middleDown) { - STOPPAN(x, y); - STARTZOOM(x, y); - leftDown = GL_TRUE; - } else if (button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN && - !leftDown) { - STARTPAN(x, y); - middleDown = GL_TRUE; - } else if (button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN && - leftDown) { - STOPROTATE(x, y); - STARTZOOM(x, y); - middleDown = GL_TRUE; - } else if (state == GLUT_UP && button == GLUT_LEFT_BUTTON && !middleDown) { - STOPROTATE(x, y); - leftDown = GL_FALSE; - } else if (state == GLUT_UP && button == GLUT_LEFT_BUTTON && middleDown) { - STOPZOOM(x, y); - STARTROTATE(x, y); - leftDown = GL_FALSE; - } else if (state == GLUT_UP && button == GLUT_MIDDLE_BUTTON && !leftDown) { - STOPPAN(x, y); - middleDown = GL_FALSE; - } else if (state == GLUT_UP && button == GLUT_MIDDLE_BUTTON && leftDown) { - STOPZOOM(x, y); - STARTROTATE(x, y); - middleDown = GL_FALSE; - } - break; - - case APPLY: - - if (leftDown && !middleDown) { - glTranslatef(steadyX, steadyY, steadyZ); - glRotatef(varXangle, 0, 1, 0); - glRotatef(varYangle, 1, 0, 0); - } - /* Middle button pan */ - - else if (middleDown && !leftDown) { - glTranslatef(varX, varY, steadyZ); - glRotatef(steadyXangle, 0, 1, 0); - glRotatef(steadyYangle, 1, 0, 0); - } - /* Left + middle zoom. */ - - else if (leftDown && middleDown) { - glTranslatef(steadyX, steadyY, varZ); - glRotatef(steadyXangle, 0, 1, 0); - glRotatef(steadyYangle, 1, 0, 0); - } - /* Nothing down. */ - - else { - glTranslatef(steadyX, steadyY, steadyZ); - glRotatef(steadyXangle, 0, 1, 0); - glRotatef(steadyYangle, 1, 0, 0); - } - break; - - case MOUSEMOTION: - - deltaMX = x - startMX; - deltaMY = startMY - y; - - if (leftDown && !middleDown) { - varXangle = fixAngle(steadyXangle + deltaMX); - varYangle = fixAngle(steadyYangle + deltaMY); - } else if (middleDown && !leftDown) { - varX = steadyX + deltaMX / 100.0; - varY = steadyY + deltaMY / 100.0; - } else if (leftDown && middleDown) { - varZ = steadyZ - deltaMY / 50.0; - } - break; - } - -} - -/* Callbacks for exotic input devices. These have not been - tested yet owing to the usual complete absence of such - devices in the UK support group. */ - -/* spaceballMotionCB */ - -void -spaceballMotionCB(int x, int y, int z) -{ - printf("spaceballMotionCB: translations are X %d, Y %d, Z %d\n", x, y, z); -} - -/* spaceballRotateCB */ - -void -spaceballRotateCB(int x, int y, int z) -{ - printf("spaceballRotateCB: rotations are X %d, Y %d, Z %d\n", x, y, z); -} - -/* spaceballButtonCB */ - -void -spaceballButtonCB(int button, int state) -{ - printf("spaceballButtonCB: button %d, state %d\n", button, state); -} - -/* buttonBoxCB */ - -void -buttonBoxCB(int button, int state) -{ - printf("buttonBoxCB: button %d, state %d\n", button, state); -} - -/* dialsCB */ - -void -dialsCB(int dial, int value) -{ - printf("dialsCB: dial %d, value %d\n", dial, value); -} - -/* tabletMotionCB */ - -void -tabletMotionCB(int x, int y) -{ - printf("tabletMotionCB: X %d, Y %d\n", x, y); -} - -/* tabletButtonCB */ - -/* ARGSUSED2 */ -void -tabletButtonCB(int button, int state, int dummy1, int dummy2) -{ - printf("tabletButtonCB: button %d, state %d\n", button, state); -} diff --git a/lib/glut-3.7.6/test/glut/bigtest.dsp b/lib/glut-3.7.6/test/glut/bigtest.dsp deleted file mode 100644 index d8ee90298e7ecc03b3b87822d96693e7d0f68dbd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/bigtest.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bigtest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bigtest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bigtest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bigtest.mak" CFG="bigtest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bigtest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bigtest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bigtest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "bigtest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "bigtest___Win32_Debug" -# PROP BASE Intermediate_Dir "bigtest___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "bigtest - Win32 Release" -# Name "bigtest - Win32 Debug" -# Begin Source File - -SOURCE=.\bigtest.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/cursor_test.c b/lib/glut-3.7.6/test/glut/cursor_test.c deleted file mode 100644 index 9f2e655592bca71155da0aaeaec227b771bb5580..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/cursor_test.c +++ /dev/null @@ -1,193 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int cursor[] = -{ - GLUT_CURSOR_INHERIT, - GLUT_CURSOR_NONE, - GLUT_CURSOR_FULL_CROSSHAIR, - GLUT_CURSOR_RIGHT_ARROW, - GLUT_CURSOR_LEFT_ARROW, - GLUT_CURSOR_INFO, - GLUT_CURSOR_DESTROY, - GLUT_CURSOR_HELP, - GLUT_CURSOR_CYCLE, - GLUT_CURSOR_SPRAY, - GLUT_CURSOR_WAIT, - GLUT_CURSOR_TEXT, - GLUT_CURSOR_CROSSHAIR, - GLUT_CURSOR_UP_DOWN, - GLUT_CURSOR_LEFT_RIGHT, - GLUT_CURSOR_TOP_SIDE, - GLUT_CURSOR_BOTTOM_SIDE, - GLUT_CURSOR_LEFT_SIDE, - GLUT_CURSOR_RIGHT_SIDE, - GLUT_CURSOR_TOP_LEFT_CORNER, - GLUT_CURSOR_TOP_RIGHT_CORNER, - GLUT_CURSOR_BOTTOM_RIGHT_CORNER, - GLUT_CURSOR_BOTTOM_LEFT_CORNER, - 0, -}; - -char *name[] = -{ - "INHERIT", - "NONE", - "FULL CROSSHAIR", - "RIGHT ARROW", - "LEFT ARROW", - "INFO", - "DESTROY", - "HELP", - "CYCLE", - "SPRAY", - "WAIT", - "TEXT", - "CROSSHAIR", - "UP DOWN", - "LEFT RIGHT", - "TOP SIDE", - "BOTTOM SIDE", - "LEFT SIDE", - "RIGHT SIDE", - "TOP LEFT CORNER", - "TOP RIGHT CORNER", - "BOTTOM RIGHT CORNER", - "BOTTOM LEFT CORNER", - NULL, -}; - -int win; - -void -futureSetCursor(int value) -{ - glutSetCursor(GLUT_CURSOR_HELP); -} - -void -menu(int value) -{ - int cursor; - - if(value < 0) { - switch(value) { - case -1: - glutSetWindow(win); - glutWarpPointer(25, 25); - return; - case -2: - glutSetWindow(win); - glutWarpPointer(-25, -25); - return; - case -3: - glutSetWindow(win); - glutWarpPointer(250, 250); - return; - case -4: - glutSetWindow(win); - glutWarpPointer(2000, 200); - return; - case -5: - glutTimerFunc(3000, futureSetCursor, glutGetWindow()); - return; - } - } - glutSetCursor(value); - cursor = glutGet(GLUT_WINDOW_CURSOR); - if (cursor != value) { - printf("cursor_test: cursor not set right\n"); - exit(1); - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void keyboard0( unsigned char key, int x, int y ) -{ - printf( "main window: %d %c (%d, %d)\n", key, key, x, y ); -} - -void keyboardup( unsigned char key, int x, int y ) -{ - printf( "main window (UP): %d %c (%d, %d)\n", key, key, x, y ); -} - -void keyboard1( unsigned char key, int x, int y ) -{ - printf( "subwindow 1: %d %c (%d, %d)\n", key, key, x, y ); -} - -void keyboard2( unsigned char key, int x, int y ) -{ - printf( "subwindow 2: %d %c (%d, %d)\n", key, key, x, y ); -} - -void keyboard3( unsigned char key, int x, int y ) -{ - printf( "subwindow 3: %d %c (%d, %d)\n", key, key, x, y ); -} - -void motion( int x, int y ) -{ - printf( "mouse motion: %d %d\n", x, y ); -} - -int -main(int argc, char **argv) -{ - int i; - int sub1, sub2; - - glutInit(&argc, argv); - win = glutCreateWindow("cursor test"); - glutSetCursor(GLUT_CURSOR_INFO); - glClearColor(0.49, 0.62, 0.75, 0.0); - glutDisplayFunc(display); - glutCreateMenu(menu); - for (i = 0; name[i] != NULL; i++) { - glutAddMenuEntry(name[i], cursor[i]); - } - glutAddMenuEntry("Warp to (25,25)", -1); - glutAddMenuEntry("Warp to (-25,-25)", -2); - glutAddMenuEntry("Warp to (250,250)", -3); - glutAddMenuEntry("Warp to (2000,200)", -4); - glutAddMenuEntry("Set cursor in 3 secs", -5); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc( keyboard0 ); - glutKeyboardUpFunc( keyboardup ); - glutMotionFunc( motion ); - sub1 = glutCreateSubWindow(win, 10, 10, 90, 90); - glutSetCursor(GLUT_CURSOR_CROSSHAIR); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc( keyboard1 ); - glClearColor(0.3, 0.82, 0.55, 0.0); - glutDisplayFunc(display); - sub2 = glutCreateSubWindow(win, 80, 80, 90, 90); - glutSetCursor(GLUT_CURSOR_WAIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc( keyboard2 ); - glClearColor(0.9, 0.2, 0.2, 0.0); - glutDisplayFunc(display); - glutCreateSubWindow(sub2, 30, 30, 30, 30 ); - glutSetCursor(GLUT_CURSOR_TEXT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutKeyboardFunc( keyboard3 ); - glClearColor(0.9, 0.9, 0.2, 0.0); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/cursor_test.dsp b/lib/glut-3.7.6/test/glut/cursor_test.dsp deleted file mode 100644 index bd53ff719197966fb59d2019add6a3e00fcd8265..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/cursor_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cursor_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cursor_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cursor_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cursor_test.mak" CFG="cursor_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cursor_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cursor_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cursor_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cursor_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cursor_test - Win32 Release" -# Name "cursor_test - Win32 Debug" -# Begin Source File - -SOURCE=.\cursor_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/joy_test.c b/lib/glut-3.7.6/test/glut/joy_test.c deleted file mode 100644 index b2641360b20b8300a835ca81a750b982cea4c76d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/joy_test.c +++ /dev/null @@ -1,72 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -void -joystick(unsigned int buttonMask, int x, int y, int z) -{ - printf("joy 0x%x, x=%d y=%d z=%d\n", buttonMask, x, y, z); -} - -void -joyPoll(void) -{ - printf("force\n"); - glutForceJoystickFunc(); -} - -void -menu(int value) -{ - switch(value) { - case 1: - glutJoystickFunc(joystick, 100); - glutIdleFunc(NULL); - break; - case 2: - glutJoystickFunc(NULL, 0); - glutIdleFunc(NULL); - break; - case 3: - glutJoystickFunc(joystick, 0); - glutIdleFunc(joyPoll); - break; - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void -keyboard(unsigned char c, int x, int y) -{ - if (c == 27) exit(0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutCreateWindow("joystick test"); - glClearColor(0.29, 0.62, 1.0, 0.0); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - glutCreateMenu(menu); - glutAddMenuEntry("Enable joystick callback", 1); - glutAddMenuEntry("Disable joystick callback", 2); - glutAddMenuEntry("Force joystick polling", 3); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/joy_test.dsp b/lib/glut-3.7.6/test/glut/joy_test.dsp deleted file mode 100644 index bd43229378673256ae882a69eee3ea21fb21f419..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/joy_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="joy_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=joy_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "joy_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "joy_test.mak" CFG="joy_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "joy_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "joy_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "joy_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "joy_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "joy_test - Win32 Release" -# Name "joy_test - Win32 Debug" -# Begin Source File - -SOURCE=.\joy_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/keyup_test.c b/lib/glut-3.7.6/test/glut/keyup_test.c deleted file mode 100644 index ab92a91f6777be9737215a6d4397abe33b363962..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/keyup_test.c +++ /dev/null @@ -1,104 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include - -void -key(unsigned char key, int x, int y) -{ - printf("kDN: %c <%d> @ (%d,%d)\n", key, key, x, y); -} - -void -keyup(unsigned char key, int x, int y) -{ - printf("kUP: %c <%d> @ (%d,%d)\n", key, key, x, y); -} - -void -special(int key, int x, int y) -{ - printf("sDN: %d @ (%d,%d)\n", key, x, y); -} - -void -specialup(int key, int x, int y) -{ - printf("sUP: %d @ (%d,%d)\n", key, x, y); -} - -void -menu(int value) -{ - switch(value) { - case 1: - glutIgnoreKeyRepeat(1); - break; - case 2: - glutIgnoreKeyRepeat(0); - break; - case 3: - glutKeyboardFunc(NULL); - break; - case 4: - glutKeyboardFunc(key); - break; - case 5: - glutKeyboardUpFunc(NULL); - break; - case 6: - glutKeyboardUpFunc(keyup); - break; - case 7: - glutSpecialFunc(NULL); - break; - case 8: - glutSpecialFunc(special); - break; - case 9: - glutSpecialUpFunc(NULL); - break; - case 10: - glutSpecialUpFunc(specialup); - break; - } -} - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutCreateWindow("keyup test"); - glClearColor(0.49, 0.62, 0.75, 0.0); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutKeyboardUpFunc(keyup); - glutSpecialFunc(special); - glutSpecialUpFunc(specialup); - glutCreateMenu(menu); - glutAddMenuEntry("Ignore autorepeat", 1); - glutAddMenuEntry("Accept autorepeat", 2); - glutAddMenuEntry("Stop key", 3); - glutAddMenuEntry("Start key", 4); - glutAddMenuEntry("Stop key up", 5); - glutAddMenuEntry("Start key up", 6); - glutAddMenuEntry("Stop special", 7); - glutAddMenuEntry("Start special", 8); - glutAddMenuEntry("Stop special up", 9); - glutAddMenuEntry("Start special up", 10); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/keyup_test.dsp b/lib/glut-3.7.6/test/glut/keyup_test.dsp deleted file mode 100644 index 11f0b67c019fdb4c9822584a2fefa8c1a019b2c8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/keyup_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="keyup_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=keyup_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "keyup_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "keyup_test.mak" CFG="keyup_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "keyup_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "keyup_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "keyup_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "keyup_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "keyup_test - Win32 Release" -# Name "keyup_test - Win32 Debug" -# Begin Source File - -SOURCE=.\keyup_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/menu_test.c b/lib/glut-3.7.6/test/glut/menu_test.c deleted file mode 100644 index c75c8ecd2e473a083f5cb17099de1d19fca84d9b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/menu_test.c +++ /dev/null @@ -1,165 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int win, subwin; -int mainmenu, submenu; -int item = 666; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -/* ARGSUSED1 */ -void -gokey(unsigned char key, int x, int y) -{ - char str[100]; - int mods; - - mods = glutGetModifiers(); - printf("key = %d, mods = 0x%x\n", key, mods); - if (mods & GLUT_ACTIVE_ALT) { - switch (key) { - case '1': - printf("Change to sub menu 1\n"); - glutChangeToSubMenu(1, "sub 1", submenu); - break; - case '2': - printf("Change to sub menu 2\n"); - glutChangeToSubMenu(2, "sub 2", submenu); - break; - case '3': - printf("Change to sub menu 3\n"); - glutChangeToSubMenu(3, "sub 3", submenu); - break; - case '4': - printf("Change to sub menu 4\n"); - glutChangeToSubMenu(4, "sub 4", submenu); - break; - case '5': - printf("Change to sub menu 5\n"); - glutChangeToSubMenu(5, "sub 5", submenu); - break; - } - } else { - switch (key) { - case '1': - printf("Change to menu entry 1\n"); - glutChangeToMenuEntry(1, "entry 1", 1); - break; - case '2': - printf("Change to menu entry 2\n"); - glutChangeToMenuEntry(2, "entry 2", 2); - break; - case '3': - printf("Change to menu entry 3\n"); - glutChangeToMenuEntry(3, "entry 3", 3); - break; - case '4': - printf("Change to menu entry 4\n"); - glutChangeToMenuEntry(4, "entry 4", 4); - break; - case '5': - printf("Change to menu entry 5\n"); - glutChangeToMenuEntry(5, "entry 5", 5); - break; - case 'a': - case 'A': - printf("Adding menu entry %d\n", item); - sprintf(str, "added entry %d", item); - glutAddMenuEntry(str, item); - item++; - break; - case 's': - case 'S': - printf("Adding submenu %d\n", item); - sprintf(str, "added submenu %d", item); - glutAddSubMenu(str, submenu); - item++; - break; - case 'q': - printf("Remove 1\n"); - glutRemoveMenuItem(1); - break; - case 'w': - printf("Remove 2\n"); - glutRemoveMenuItem(2); - break; - case 'e': - printf("Remove 3\n"); - glutRemoveMenuItem(3); - break; - case 'r': - printf("Remove 4\n"); - glutRemoveMenuItem(4); - break; - case 't': - printf("Remove 5\n"); - glutRemoveMenuItem(5); - break; - } - } -} - -void -keyboard(unsigned char key, int x, int y) -{ - glutSetMenu(mainmenu); - gokey(key, x, y); -} - -void -keyboard2(unsigned char key, int x, int y) -{ - glutSetMenu(submenu); - gokey(key, x, y); -} - -void -menu(int value) -{ - printf("menu: entry = %d\n", value); -} - -void -menu2(int value) -{ - printf("menu2: entry = %d\n", value); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - win = glutCreateWindow("menu test"); - glClearColor(0.3, 0.3, 0.3, 0.0); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - submenu = glutCreateMenu(menu2); - glutAddMenuEntry("Sub menu 1", 1001); - glutAddMenuEntry("Sub menu 2", 1002); - glutAddMenuEntry("Sub menu 3", 1003); - mainmenu = glutCreateMenu(menu); - glutAddMenuEntry("First", -1); - glutAddMenuEntry("Second", -2); - glutAddMenuEntry("Third", -3); - glutAddSubMenu("Submenu init", submenu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - subwin = glutCreateSubWindow(win, 50, 50, 50, 50); - glClearColor(0.7, 0.7, 0.7, 0.0); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard2); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/menu_test.dsp b/lib/glut-3.7.6/test/glut/menu_test.dsp deleted file mode 100644 index 2a9da558bd4e05b97c10acde7e06b521f7d20073..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/menu_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="menu_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=menu_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "menu_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "menu_test.mak" CFG="menu_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "menu_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "menu_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "menu_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "menu_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "menu_test - Win32 Release" -# Name "menu_test - Win32 Debug" -# Begin Source File - -SOURCE=.\menu_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/over_test.c b/lib/glut-3.7.6/test/glut/over_test.c deleted file mode 100644 index 8271db2e4f2174297873e672285fd1ab0ccc33fa..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/over_test.c +++ /dev/null @@ -1,388 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int on = 0; -int independent = 0; -int main_w, hidden_w, s1, s2; -float x = 0, y = 0; - -void -overlay_display(void) -{ - printf("overlay_display: damaged=%d\n", glutLayerGet(GLUT_OVERLAY_DAMAGED)); - if (on) { - glutUseLayer(GLUT_OVERLAY); - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_POLYGON); - glVertex2f(.2 + x, .2 + y); - glVertex2f(.5 + x, .5 + y); - glVertex2f(.2 + x, .5 + y); - glEnd(); - glFlush(); - } -} - -void -display(void) -{ - printf("normal_display: damaged=%d\n", glutLayerGet(GLUT_NORMAL_DAMAGED)); - glutUseLayer(GLUT_NORMAL); - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1.0, 0.0, 0.0); - glBegin(GL_POLYGON); - glVertex2f(.2, .28); - glVertex2f(.5, .58); - glVertex2f(.2, .58); - glEnd(); - - if (!independent) { - overlay_display(); - } else { - printf("not calling overlay_display\n"); - } -} - -void -hidden_display(void) -{ - printf("hidden_display: this should not be called ever\n"); -} - -void -reshape(int w, int h) -{ - glutUseLayer(GLUT_NORMAL); - glViewport(0, 0, w, h); - - if (on) { - glutUseLayer(GLUT_OVERLAY); - glViewport(0, 0, w, h); - printf("w=%d, h=%d\n", w, h); - } -} - -void -special(int c, int w, int h) -{ - printf("special %d w=%d h=%d\n", c, w, h); - if (on) { - switch (c) { - case GLUT_KEY_LEFT: - x -= 0.1; - break; - case GLUT_KEY_RIGHT: - x += 0.1; - break; - case GLUT_KEY_UP: - y += 0.1; - break; - case GLUT_KEY_DOWN: - y -= 0.1; - break; - } - glutPostOverlayRedisplay(); - } -} - -void -key(unsigned char c, int w, int h) -{ - int transP; - - printf("c=%d w=%d h=%d\n", c, w, h); - switch (c) { - case 'e': - glutEstablishOverlay(); - independent = 0; - transP = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(transP); - glutSetColor((transP + 1) % 2, 1.0, 1.0, 0.0); - glIndexi((transP + 1) % 2); - on = 1; - break; - case 'r': - glutRemoveOverlay(); - on = 0; - break; - case 'm': - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - int pixel; - GLfloat red, green, blue; - - transP = glutLayerGet(GLUT_TRANSPARENT_INDEX); - pixel = (transP + 1) % 2; - red = glutGetColor(pixel, GLUT_RED) + 0.2; - if (red > 1.0) - red = red - 1.0; - green = glutGetColor(pixel, GLUT_GREEN) - 0.1; - if (green > 1.0) - green = green - 1.0; - blue = glutGetColor(pixel, GLUT_BLUE) + 0.1; - if (blue > 1.0) - blue = blue - 1.0; - glutSetColor(pixel, red, green, blue); - } - break; - case 'h': - glutSetWindow(hidden_w); - glutHideWindow(); - glutSetWindow(s2); - glutHideWindow(); - break; - case 's': - glutSetWindow(hidden_w); - glutShowWindow(); - glutSetWindow(s2); - glutShowWindow(); - break; - case 'H': - glutHideOverlay(); - break; - case 'S': - glutShowOverlay(); - break; - case 'D': - glutDestroyWindow(main_w); - exit(0); - break; - case ' ': - printf("overlay possible: %d\n", glutLayerGet(GLUT_OVERLAY_POSSIBLE)); - printf("layer in use: %d\n", glutLayerGet(GLUT_LAYER_IN_USE)); - printf("has overlay: %d\n", glutLayerGet(GLUT_HAS_OVERLAY)); - printf("transparent index: %d\n", glutLayerGet(GLUT_TRANSPARENT_INDEX)); - break; - } -} - -/* ARGSUSED1 */ -void -key2(unsigned char c, int w, int h) -{ - int transP; - - printf("c=%d\n", c); - switch (c) { - case 'g': - glutReshapeWindow( - glutGet(GLUT_WINDOW_WIDTH) + 2, glutGet(GLUT_WINDOW_HEIGHT) + 2); - break; - case 's': - glutReshapeWindow( - glutGet(GLUT_WINDOW_WIDTH) - 2, glutGet(GLUT_WINDOW_HEIGHT) - 2); - break; - case 'u': - glutPopWindow(); - break; - case 'd': - glutPushWindow(); - break; - case 'e': - glutEstablishOverlay(); - transP = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(transP); - glutSetColor((transP + 1) % 2, 0.0, 0.25, 0.0); - glIndexi((transP + 1) % 2); - break; - case 'c': - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - glutUseLayer(GLUT_OVERLAY); - glutCopyColormap(main_w); - } - break; - case 'r': - glutRemoveOverlay(); - break; - case ' ': - printf("overlay possible: %d\n", glutLayerGet(GLUT_OVERLAY_POSSIBLE)); - printf("layer in use: %d\n", glutLayerGet(GLUT_LAYER_IN_USE)); - printf("has overlay: %d\n", glutLayerGet(GLUT_HAS_OVERLAY)); - printf("transparent index: %d\n", glutLayerGet(GLUT_TRANSPARENT_INDEX)); - break; - } -} - -void -vis(int state) -{ - if (state == GLUT_VISIBLE) - printf("visible %d\n", glutGetWindow()); - else - printf("NOT visible %d\n", glutGetWindow()); -} - -void -entry(int state) -{ - if (state == GLUT_LEFT) - printf("LEFT %d\n", glutGetWindow()); - else - printf("entered %d\n", glutGetWindow()); -} - -void -motion(int x, int y) -{ - printf("motion x=%x y=%d\n", x, y); -} - -void -mouse(int b, int s, int x, int y) -{ - printf("b=%d s=%d x=%d y=%d\n", b, s, x, y); -} - -void -display2(void) -{ - glutUseLayer(GLUT_NORMAL); - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - glutUseLayer(GLUT_OVERLAY); - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_POLYGON); - glVertex2f(.2, .28); - glVertex2f(.5, .58); - glVertex2f(.2, .58); - glEnd(); - glFlush(); - } -} - -void -dial(int dial, int value) -{ - printf("dial %d %d (%d)\n", dial, value, glutGetWindow()); -} - -void -box(int button, int state) -{ - printf("box %d %d (%d)\n", button, state, glutGetWindow()); -} - -void -main_menu(int option) -{ - switch (option) { - case 1: - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - independent = 1; - glutOverlayDisplayFunc(overlay_display); - } - break; - case 2: - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - independent = 0; - glutOverlayDisplayFunc(NULL); - } - break; - case 666: - exit(0); - break; - } -} - -void -s2_menu(int option) -{ - int transP; - - switch (option) { - case 1: - glutRemoveOverlay(); - break; - case 2: - glutEstablishOverlay(); - transP = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(transP); - glutSetColor((transP + 1) % 2, 0.0, 0.25, 0.0); - glIndexi((transP + 1) % 2); - break; - case 666: - exit(0); - break; - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitDisplayMode(GLUT_RGB); - glutInitWindowSize(210, 210); - - main_w = glutCreateWindow("overlay test"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glClearColor(1.0, 0.0, 1.0, 1.0); - - glutKeyboardFunc(key); - glutVisibilityFunc(vis); - glutEntryFunc(entry); - glutSpecialFunc(special); - - glutMotionFunc(motion); - glutMouseFunc(mouse); - - glutCreateMenu(main_menu); - glutAddMenuEntry("Dual display callbacks", 1); - glutAddMenuEntry("Single display callbacks", 2); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - hidden_w = glutCreateSubWindow(main_w, 10, 10, 100, 90); - /* hidden_w is completely obscured by its own s1 subwindow. - While display, entry and visibility callbacks are - registered, they will never be called. */ - glutDisplayFunc(hidden_display); - glutEntryFunc(entry); - glutVisibilityFunc(vis); - - s1 = glutCreateSubWindow(hidden_w, 0, 0, 100, 90); - glClearColor(0.0, 0.0, 1.0, 1.0); - glutDisplayFunc(display2); -#if 0 - glutKeyboardFunc(key2); -#endif - glutVisibilityFunc(vis); - glutEntryFunc(entry); - - s2 = glutCreateSubWindow(main_w, 35, 35, 100, 90); - glClearColor(0.5, 0.0, 0.5, 1.0); - glutDisplayFunc(display2); -#if 1 - glutKeyboardFunc(key2); -#endif - glutVisibilityFunc(vis); - glutEntryFunc(entry); - -#if 1 - glutCreateMenu(s2_menu); - glutAddMenuEntry("Remove overlay", 1); - glutAddMenuEntry("Establish overlay", 2); - glutAddMenuEntry("Quit", 666); - glutAttachMenu(GLUT_RIGHT_BUTTON); -#endif - - glutInitDisplayMode(GLUT_INDEX); - -#if 1 - glutSetWindow(main_w); - glutDialsFunc(dial); - glutButtonBoxFunc(box); -#endif - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/over_test.dsp b/lib/glut-3.7.6/test/glut/over_test.dsp deleted file mode 100644 index f6a22c889541d488612dca73bcdf542f620a01b9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/over_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="over_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=over_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "over_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "over_test.mak" CFG="over_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "over_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "over_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "over_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "over_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "over_test - Win32 Release" -# Name "over_test - Win32 Debug" -# Begin Source File - -SOURCE=.\over_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/shape_test.c b/lib/glut-3.7.6/test/glut/shape_test.c deleted file mode 100644 index a51099b6f0562937145348104a39ff8e21223e49..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/shape_test.c +++ /dev/null @@ -1,194 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include - -float w, h; - -GLfloat light_diffuse[] = -{1.0, 1.0, 1.0, 1.0}; -GLfloat light_position[] = -{1.0, 1.0, 1.0, 0.0}; -GLUquadricObj *qobj; - -void -reshape(int nw, int nh) -{ - w = nw; - h = nh; -} - -void -render(int shape) -{ - switch (shape) { - case 1: - glPushMatrix(); - glScalef(1.2, 1.2, 1.2); - glutWireSphere(1.0, 20, 20); - glPopMatrix(); - break; - case 10: - glPushMatrix(); - glScalef(1.2, 1.2, 1.2); - glEnable(GL_LIGHTING); - glutSolidSphere(1.0, 20, 20); - glDisable(GL_LIGHTING); - glPopMatrix(); - break; - case 2: - glPushMatrix(); - glRotatef(-90, 1.0, 0.0, 0.0); - glutWireCone(1.0, 1.3, 20, 20); - glPopMatrix(); - break; - case 11: - glPushMatrix(); - glRotatef(-90, 1.0, 0.0, 0.0); - glEnable(GL_LIGHTING); - glutSolidCone(1.0, 1.3, 20, 20); - glDisable(GL_LIGHTING); - glPopMatrix(); - break; - case 3: - glPushMatrix(); - glRotatef(-20, 0.0, 0.0, 1.0); - glScalef(1.8, 1.8, 1.8); - glutWireCube(1.0); - glPopMatrix(); - break; - case 12: - glPushMatrix(); - glRotatef(-20, 0.0, 0.0, 1.0); - glScalef(1.8, 1.8, 1.8); - glEnable(GL_LIGHTING); - glutSolidCube(1.0); - glDisable(GL_LIGHTING); - glPopMatrix(); - break; - case 4: - glPushMatrix(); - glScalef(0.9, 0.9, 0.9); - glutWireTorus(0.5, 1.0, 15, 15); - glPopMatrix(); - break; - case 13: - glPushMatrix(); - glScalef(0.9, 0.9, 0.9); - glEnable(GL_LIGHTING); - glutSolidTorus(0.5, 1.0, 15, 15); - glDisable(GL_LIGHTING); - glPopMatrix(); - break; - case 5: - glPushMatrix(); - glScalef(0.8, 0.8, 0.8); - glutWireDodecahedron(); - glPopMatrix(); - break; - case 14: - glPushMatrix(); - glScalef(0.8, 0.8, 0.8); - glEnable(GL_LIGHTING); - glutSolidDodecahedron(); - glDisable(GL_LIGHTING); - glPopMatrix(); - break; - case 6: - glPushMatrix(); - glScalef(0.9, 0.9, 0.9); - glutWireTeapot(1.0); - glPopMatrix(); - break; - case 15: - glPushMatrix(); - glScalef(0.9, 0.9, 0.9); - glEnable(GL_LIGHTING); - glutSolidTeapot(1.0); - glDisable(GL_LIGHTING); - glPopMatrix(); - break; - case 7: - glutWireOctahedron(); - break; - case 16: - glEnable(GL_LIGHTING); - glutSolidOctahedron(); - glDisable(GL_LIGHTING); - break; - case 8: - glPushMatrix(); - glScalef(1.2, 1.2, 1.2); - glutWireTetrahedron(); - glPopMatrix(); - break; - case 17: - glPushMatrix(); - glScalef(1.2, 1.2, 1.2); - glEnable(GL_LIGHTING); - glutSolidTetrahedron(); - glDisable(GL_LIGHTING); - glPopMatrix(); - break; - case 9: - glutWireIcosahedron(); - break; - case 18: - glEnable(GL_LIGHTING); - glutSolidIcosahedron(); - glDisable(GL_LIGHTING); - break; - } -} - -void -display(void) -{ - int i, j; - - glViewport(0, 0, w, h); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - for (j = 0; j < 6; j++) { - for (i = 0; i < 3; i++) { - glViewport(w / 3 * i, h / 6 * j, w / 3, h / 6); - render(18 - (j * 3 + (2 - i))); - } - } - glFlush(); -} - -int -main(int argc, char **argv) -{ - glutInitWindowSize(475, 950); - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGB); - glutCreateWindow("GLUT geometric shapes"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - - glClearColor(1.0, 1.0, 1.0, 1.0); - glColor3f(0.0, 0.0, 0.0); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 22.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glTranslatef(0.0, 0.0, -3.0); - glRotatef(25, 1.0, 0.0, 0.0); - glRotatef(5, 0.0, 1.0, 0.0); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/shape_test.dsp b/lib/glut-3.7.6/test/glut/shape_test.dsp deleted file mode 100644 index 0231bf80839d60408bf780f10474a1c500ae7376..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/shape_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="shape_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=shape_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "shape_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "shape_test.mak" CFG="shape_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "shape_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "shape_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "shape_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "shape_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "shape_test - Win32 Release" -# Name "shape_test - Win32 Debug" -# Begin Source File - -SOURCE=.\shape_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test1.c b/lib/glut-3.7.6/test/glut/test1.c deleted file mode 100644 index a21d553ccacdf105a404586761d09afcbde1e34e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test1.c +++ /dev/null @@ -1,91 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -char *fake_argv[] = -{ - "program", - "-display", - ":0", - "-geometry", - "500x400-34-23", - "-indirect", - "-iconic", - NULL}; - -int fake_argc = sizeof(fake_argv) / sizeof(char *) - 1; - -int -main(int argc, char **argv) -{ - char *altdisplay; - int screen_width, screen_height; - int got; - - altdisplay = getenv("GLUT_TEST_ALT_DISPLAY"); - if (altdisplay) { - fake_argv[2] = altdisplay; - } - glutInit(&fake_argc, fake_argv); - if (fake_argc != 1) { - printf("FAIL: argument processing\n"); - exit(1); - } - if ((got = glutGet(GLUT_INIT_WINDOW_WIDTH)) != 500) { - printf("FAIL: width wrong, got %d, not 500\n", got); - exit(1); - } - if ((got = glutGet(GLUT_INIT_WINDOW_HEIGHT)) != 400) { - printf("FAIL: width height, got %d, not 400\n", got); - exit(1); - } - screen_width = glutGet(GLUT_SCREEN_WIDTH); - screen_height = glutGet(GLUT_SCREEN_HEIGHT); - if ((got = glutGet(GLUT_INIT_WINDOW_X)) != (screen_width - 500 - 34)) { - printf("FAIL: width x, got %d, not %d\n", got, screen_width - 500 - 34); - exit(1); - } - if ((got = glutGet(GLUT_INIT_WINDOW_Y)) != (screen_height - 400 - 23)) { - printf("FAIL: width y, got %d, not %d\n", got, screen_height - 400 - 23); - exit(1); - } - if (glutGet(GLUT_INIT_DISPLAY_MODE) != - (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH)) { - printf("FAIL: width wrong\n"); - exit(1); - } - glutInitWindowPosition(10, 10); - glutInitWindowSize(200, 200); - glutInitDisplayMode( - GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL); - if (glutGet(GLUT_INIT_WINDOW_WIDTH) != 200) { - printf("FAIL: width wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_WINDOW_HEIGHT) != 200) { - printf("FAIL: width wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_WINDOW_X) != 10) { - printf("FAIL: width wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_WINDOW_Y) != 10) { - printf("FAIL: width wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_DISPLAY_MODE) != - (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL)) { - printf("FAIL: width wrong\n"); - exit(1); - } - printf("PASS: test1\n"); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test1.dsp b/lib/glut-3.7.6/test/glut/test1.dsp deleted file mode 100644 index 78fbc9a90a1682372501ca199b78cb0bcaf4dbdd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test1.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test1" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test1 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test1.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test1.mak" CFG="test1 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test1 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test1 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test1 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test1 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test1___Win32_Debug" -# PROP BASE Intermediate_Dir "test1___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test1 - Win32 Release" -# Name "test1 - Win32 Debug" -# Begin Source File - -SOURCE=.\test1.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test10.c b/lib/glut-3.7.6/test/glut/test10.c deleted file mode 100644 index b5e712b723a88521193aea7ad671073ffed6482d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test10.c +++ /dev/null @@ -1,127 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -/* XXX As a test of 16-bit font support in capturexfont, I made - a font out of the 16-bit Japanese font named - '-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1' - and tried it out. Defining JIS_FONT uses it in this test. */ -/* #define JIS_FONT */ - -#ifdef JIS_FONT -extern void *glutBitmapJis; -#endif - -int ch = -2; -void *fonts[] = -{ - GLUT_BITMAP_TIMES_ROMAN_24, - GLUT_BITMAP_TIMES_ROMAN_10, - GLUT_BITMAP_9_BY_15, - GLUT_BITMAP_8_BY_13, - GLUT_BITMAP_HELVETICA_10, - GLUT_BITMAP_HELVETICA_12, - GLUT_BITMAP_HELVETICA_18, -#ifdef JIS_FONT - &glutBitmapJis -#endif -}; -void *names[] = -{ - "Times Roman 24", - " Times Roman 10", - " 9 by 15", - " 8 by 13", - " Helvetica 10", - " Helvetica 12", - " Helvetica 18", -#ifdef JIS_FONT - " Mincho JIS" -#endif -}; -#define NUM_FONTS (sizeof(fonts)/sizeof(void*)) -int font = 0; - -void -tick(void) -{ - static int limit = 270; - - ch += 5; - if (ch > limit) { - ch = -2; - font++; -#ifdef JIS_FONT - if (font == 4) { - limit = 0x747e; - ch = 0x2121; - } -#endif - if (font == NUM_FONTS) { - printf("PASS: test10\n"); - exit(0); - } - } - glutPostRedisplay(); -} - -void -output(int x, int y, char *msg) -{ - glRasterPos2f(x, y); - while (*msg) { - glutBitmapCharacter(GLUT_BITMAP_9_BY_15, *msg); - msg++; - } -} - -void -display(void) -{ - glutIdleFunc(tick); - glClear(GL_COLOR_BUFFER_BIT); - glRasterPos2f(0, 0); - glutBitmapCharacter(fonts[font], ch); - glRasterPos2f(30, 30); - glutBitmapCharacter(fonts[font], ch + 1); - glRasterPos2f(-30, -30); - glutBitmapCharacter(fonts[font], ch + 2); - glRasterPos2f(30, -30); - glutBitmapCharacter(fonts[font], ch + 3); - glRasterPos2f(-30, 30); - glutBitmapCharacter(fonts[font], ch + 4); - glRasterPos2f(0, 30); - glutBitmapCharacter(fonts[font], ch + 5); - glRasterPos2f(0, -30); - glutBitmapCharacter(fonts[font], ch + 6); - glRasterPos2f(-30, 0); - glutBitmapCharacter(fonts[font], ch + 7); - glRasterPos2f(30, 0); - glutBitmapCharacter(fonts[font], ch + 8); - output(-48, -48, names[font]); - glutSwapBuffers(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize(200, 200); - glutCreateWindow("Test bitmap fonts"); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-50, 50, -50, 50); - glClearColor(0.0, 0.0, 0.0, 1.0); - glColor3f(1.0, 1.0, 1.0); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test10.dsp b/lib/glut-3.7.6/test/glut/test10.dsp deleted file mode 100644 index 55152a331461f194419f494ac1a75d0886322986..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test10.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test10" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test10 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test10.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test10.mak" CFG="test10 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test10 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test10 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test10 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test10 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test10___Win32_Debug" -# PROP BASE Intermediate_Dir "test10___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test10 - Win32 Release" -# Name "test10 - Win32 Debug" -# Begin Source File - -SOURCE=.\test10.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test11.c b/lib/glut-3.7.6/test/glut/test11.c deleted file mode 100644 index 5220f6b01dd4b7311eb9a71be8a6257f0c93a925..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test11.c +++ /dev/null @@ -1,28 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - printf("Keyboard: %s\n", glutDeviceGet(GLUT_HAS_KEYBOARD) ? "YES" : "no"); - printf("Mouse: %s\n", glutDeviceGet(GLUT_HAS_MOUSE) ? "YES" : "no"); - printf("Spaceball: %s\n", glutDeviceGet(GLUT_HAS_SPACEBALL) ? "YES" : "no"); - printf("Dials: %s\n", glutDeviceGet(GLUT_HAS_DIAL_AND_BUTTON_BOX) ? "YES" : "no"); - printf("Tablet: %s\n\n", glutDeviceGet(GLUT_HAS_TABLET) ? "YES" : "no"); - printf("Mouse buttons: %d\n", glutDeviceGet(GLUT_NUM_MOUSE_BUTTONS)); - printf("Spaceball buttons: %d\n", glutDeviceGet(GLUT_NUM_SPACEBALL_BUTTONS)); - printf("Button box buttons: %d\n", glutDeviceGet(GLUT_NUM_BUTTON_BOX_BUTTONS)); - printf("Dials: %d\n", glutDeviceGet(GLUT_NUM_DIALS)); - printf("Tablet buttons: %d\n\n", glutDeviceGet(GLUT_NUM_TABLET_BUTTONS)); - printf("PASS: test11\n"); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test11.dsp b/lib/glut-3.7.6/test/glut/test11.dsp deleted file mode 100644 index 0f07f016b00342f841eabf6ad37b05d0448c25ea..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test11.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test11" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test11 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test11.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test11.mak" CFG="test11 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test11 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test11 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test11 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test11 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test11___Win32_Debug" -# PROP BASE Intermediate_Dir "test11___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test11 - Win32 Release" -# Name "test11 - Win32 Debug" -# Begin Source File - -SOURCE=.\test11.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test12.c b/lib/glut-3.7.6/test/glut/test12.c deleted file mode 100644 index 06b5ffeb9c5d371525f6a948a7ba1cc29ce6515b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test12.c +++ /dev/null @@ -1,177 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#ifdef _WIN32 -#include -#define sleep(x) Sleep(1000 * x) -#else -#include -#endif -#include - -int -main(int argc, char **argv) -{ - int a, b, d; - int val; - - glutInit(&argc, argv); - a = glutGet(GLUT_ELAPSED_TIME); - sleep(1); - b = glutGet(GLUT_ELAPSED_TIME); - d = b - a; - if (d < 990 || d > 1200) { - printf("FAIL: test12\n"); - exit(1); - } - glutCreateWindow("dummy"); - /* try all GLUT_WINDOW_* glutGet's */ - val = glutGet(GLUT_WINDOW_X); - val = glutGet(GLUT_WINDOW_Y); - val = glutGet(GLUT_WINDOW_WIDTH); - if (val != 300) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_HEIGHT); - if (val != 300) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_BUFFER_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_STENCIL_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_DEPTH_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_RED_SIZE); - if (val < 1) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_GREEN_SIZE); - if (val < 1) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_BLUE_SIZE); - if (val < 1) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_ALPHA_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_ACCUM_RED_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_ACCUM_GREEN_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_ACCUM_BLUE_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_ACCUM_ALPHA_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_DOUBLEBUFFER); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_RGBA); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_CURSOR); - if (val != GLUT_CURSOR_INHERIT) { - printf("FAIL: test12\n"); - exit(1); - } - printf("Window format id = 0x%x (%d)\n", - glutGet(GLUT_WINDOW_FORMAT_ID), glutGet(GLUT_WINDOW_FORMAT_ID)); - glutSetCursor(GLUT_CURSOR_NONE); - val = glutGet(GLUT_WINDOW_CURSOR); - if (val != GLUT_CURSOR_NONE) { - printf("FAIL: test12\n"); - exit(1); - } - glutWarpPointer(0, 0); - glutWarpPointer(-5, -5); - glutWarpPointer(2000, 2000); - glutWarpPointer(-4000, 4000); - val = glutGet(GLUT_WINDOW_COLORMAP_SIZE); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_PARENT); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_NUM_CHILDREN); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_NUM_SAMPLES); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_WINDOW_STEREO); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - /* touch GLUT_SCREEN_* glutGet's supported */ - val = glutGet(GLUT_SCREEN_WIDTH); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_SCREEN_HEIGHT); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_SCREEN_WIDTH_MM); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - val = glutGet(GLUT_SCREEN_HEIGHT_MM); - if (val < 0) { - printf("FAIL: test12\n"); - exit(1); - } - printf("PASS: test12\n"); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test12.dsp b/lib/glut-3.7.6/test/glut/test12.dsp deleted file mode 100644 index f26847cc36bc0cac089812e7245129cda12537b9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test12.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test12" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test12 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test12.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test12.mak" CFG="test12 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test12 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test12 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test12 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test12 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test12___Win32_Debug" -# PROP BASE Intermediate_Dir "test12___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test12 - Win32 Release" -# Name "test12 - Win32 Debug" -# Begin Source File - -SOURCE=.\test12.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test13.c b/lib/glut-3.7.6/test/glut/test13.c deleted file mode 100644 index d39048e8cca00c2055ea70bbdce6965fb11a30f7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test13.c +++ /dev/null @@ -1,129 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#ifdef _WIN32 -#include -#define sleep(x) Sleep(1000 * x) -#else -#include -#endif -#include - -int window1, window2; -int win1reshaped = 0, win2reshaped = 0; -int win1displayed = 0, win2displayed = 0; - -void -checkifdone(void) -{ - if (win1reshaped && win2reshaped && win1displayed && win2displayed) { - sleep(1); - printf("PASS: test13\n"); - exit(0); - } -} - -void -window1reshape(int w, int h) -{ - if (glutGetWindow() != window1) { - printf("FAIL: window1reshape\n"); - exit(1); - } - glViewport(0, 0, w, h); - win1reshaped = 1; -} - -void -window1display(void) -{ - if (glutGetWindow() != window1) { - printf("FAIL: window1display\n"); - exit(1); - } - glClearColor(0, 1, 0, 0); - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - win1displayed = 1; - checkifdone(); -} - -void -window2reshape(int w, int h) -{ - if (glutGetWindow() != window2) { - printf("FAIL: window2reshape\n"); - exit(1); - } - glViewport(0, 0, w, h); - win2reshaped = 1; -} - -void -window2display(void) -{ - if (glutGetWindow() != window2) { - printf("FAIL: window2display\n"); - exit(1); - } - glClearColor(0, 0, 1, 0); - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - win2displayed = 1; - checkifdone(); -} - -/* ARGSUSED */ -void -timefunc(int value) -{ - printf("FAIL: test13\n"); - exit(1); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitWindowSize(100, 100); - glutInitWindowPosition(50, 100); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - window1 = glutCreateWindow("1"); - if (glutGet(GLUT_WINDOW_X) != 50) { - printf("FAIL: test13\n"); - exit(1); - } - if (glutGet(GLUT_WINDOW_Y) != 100) { - printf("FAIL: test13\n"); - exit(1); - } - glutReshapeFunc(window1reshape); - glutDisplayFunc(window1display); - - glutInitWindowSize(100, 100); - glutInitWindowPosition(250, 100); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - window2 = glutCreateWindow("2"); - if (glutGet(GLUT_WINDOW_X) != 250) { - printf("FAIL: test13\n"); - exit(1); - } - if (glutGet(GLUT_WINDOW_Y) != 100) { - printf("FAIL: test13\n"); - exit(1); - } - glutReshapeFunc(window2reshape); - glutDisplayFunc(window2display); - - glutTimerFunc(7000, timefunc, 1); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test13.dsp b/lib/glut-3.7.6/test/glut/test13.dsp deleted file mode 100644 index ca3463be00805e7bcaee7b34e45e40a929104c28..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test13.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test13" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test13 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test13.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test13.mak" CFG="test13 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test13 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test13 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test13 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test13 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test13 - Win32 Release" -# Name "test13 - Win32 Debug" -# Begin Source File - -SOURCE=.\test13.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test14.c b/lib/glut-3.7.6/test/glut/test14.c deleted file mode 100644 index e2b50c793313bbd1b889a66e4fa63bc137def41a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test14.c +++ /dev/null @@ -1,151 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Try testing menu item removal and menu destruction. */ - -#include -#include -#include - -void -displayFunc(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void -menuFunc(int choice) -{ - printf("choice = %d\n", choice); -} - -void -timefunc(int value) -{ - if (value != 1) { - printf("FAIL: test14\n"); - exit(1); - } - printf("PASS: test14\n"); - exit(0); -} - -int -main(int argc, char **argv) -{ - int i, menu, submenu; - - glutInit(&argc, argv); - glutCreateWindow("test14"); - glutDisplayFunc(displayFunc); - - submenu = glutCreateMenu(menuFunc); - glutAddMenuEntry("First", 10101); - glutAddMenuEntry("Second", 20202); - - menu = glutCreateMenu(menuFunc); - glutAddMenuEntry("Entry1", 101); - glutAddMenuEntry("Entry2----------", 102); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("oEntry1", 201); - glutAddMenuEntry("o----------", 200); - glutAddMenuEntry("oEntry2----------", 202); - glutAddMenuEntry("oEntry3", 203); - glutRemoveMenuItem(2); - glutDestroyMenu(menu); - - menu = glutCreateMenu(menuFunc); - glutAddMenuEntry("Entry1", 101); - glutAddMenuEntry("Entry2----------", 102); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("oEntry1", 201); - glutAddMenuEntry("o----------", 200); - glutAddMenuEntry("oEntry2----------", 202); - glutAddMenuEntry("oEntry3", 203); - glutRemoveMenuItem(2); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - menu = glutCreateMenu(menuFunc); - for (i = 0; i < 10; i++) { - glutAddMenuEntry("YES", i); - } - for (i = 0; i < 10; i++) { - glutRemoveMenuItem(1); - } - glutAddMenuEntry("Entry1", 101); - glutAddMenuEntry("Entry2", 102); - glutAddMenuEntry("Entry3", 103); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("----------", 303); - for (i = 0; i < 10; i++) { - glutAddMenuEntry("YES**************************", i); - } - for (i = 0; i < 9; i++) { - glutRemoveMenuItem(3); - } - glutDestroyMenu(menu); - - menu = glutCreateMenu(menuFunc); - for (i = 0; i < 10; i++) { - glutAddMenuEntry("YES", i); - } - for (i = 0; i < 10; i++) { - glutRemoveMenuItem(1); - } - glutAddMenuEntry("Entry1", 101); - glutAddMenuEntry("Entry2", 102); - glutAddMenuEntry("Entry3", 103); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("----------", 303); - for (i = 0; i < 10; i++) { - glutAddMenuEntry("YES**************************", i); - } - for (i = 0; i < 9; i++) { - glutRemoveMenuItem(3); - } - glutAttachMenu(GLUT_MIDDLE_BUTTON); - - menu = glutCreateMenu(menuFunc); - glutAddMenuEntry("Entry1", 101); - glutAddMenuEntry("Entry2", 102); - glutAddMenuEntry("Entry3", 103); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("nEntry1", 201); - glutAddMenuEntry("nEntry2----------", 202); - glutAddMenuEntry("nEntry3", 203); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("n----------", 303); - glutChangeToMenuEntry(1, "HELLO", 34); - glutChangeToSubMenu(2, "HELLO menu", submenu); - glutDestroyMenu(menu); - - menu = glutCreateMenu(menuFunc); - glutAddMenuEntry("Entry1", 101); - glutAddMenuEntry("Entry2", 102); - glutAddMenuEntry("Entry3", 103); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("nEntry1", 201); - glutAddMenuEntry("nEntry2----------", 202); - glutAddMenuEntry("nEntry3", 203); - glutRemoveMenuItem(2); - glutRemoveMenuItem(1); - glutAddMenuEntry("n----------", 303); - glutAttachMenu(GLUT_LEFT_BUTTON); - - glutTimerFunc(2000, timefunc, 1); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test14.dsp b/lib/glut-3.7.6/test/glut/test14.dsp deleted file mode 100644 index 1b2de1dfec6b645a7d9b61e3a553bb9d68ceac99..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test14.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test14" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test14 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test14.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test14.mak" CFG="test14 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test14 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test14 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test14 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test14 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test14___Win32_Debug" -# PROP BASE Intermediate_Dir "test14___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test14 - Win32 Release" -# Name "test14 - Win32 Debug" -# Begin Source File - -SOURCE=.\test14.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test15.c b/lib/glut-3.7.6/test/glut/test15.c deleted file mode 100644 index 220b326841cf08e853f37bdb0e4533438720f2c8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test15.c +++ /dev/null @@ -1,83 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This test makes sure that if you post a redisplay within a - display callback, another display callback will be - generated. I believe this is useful for progressive - refinement of an image. Draw it once at a coarse - tesselation to get something on the screen; then redraw at a - higher level of tesselation. Pre-GLUT 2.3 fails this test. */ - -#include -#include -#include - -GLfloat light_diffuse[] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat light_position[] = -{1.0, 1.0, 1.0, 0.0}; -GLUquadricObj *qobj; - -void -displayFunc(void) -{ - static int tesselation = 3; - - fprintf(stderr, " %d", tesselation); - if (tesselation > 23) { - printf("\nPASS: test15\n"); - exit(0); - } - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - gluSphere(qobj, /* radius */ 1.0, - /* slices */ tesselation, /* stacks */ tesselation); - glutSwapBuffers(); - tesselation += 1; - glutPostRedisplay(); -} - -/* ARGSUSED */ -void -timefunc(int value) -{ - printf("\nFAIL: test15\n"); - exit(1); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("test15"); - glutDisplayFunc(displayFunc); - - qobj = gluNewQuadric(); - gluQuadricDrawStyle(qobj, GLU_FILL); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 22.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glTranslatef(0.0, 0.0, -1.0); - - /* Have a reasonably large timeout since some machines make - take a while to render all those polygons. */ - glutTimerFunc(15000, timefunc, 1); - - fprintf(stderr, "tesselations ="); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test15.dsp b/lib/glut-3.7.6/test/glut/test15.dsp deleted file mode 100644 index c61dec725d94460f6b8e45d695aa246fa86652ab..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test15.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test15" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test15 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test15.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test15.mak" CFG="test15 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test15 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test15 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test15 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test15 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test15 - Win32 Release" -# Name "test15 - Win32 Debug" -# Begin Source File - -SOURCE=.\test15.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test16.c b/lib/glut-3.7.6/test/glut/test16.c deleted file mode 100644 index 2bb247c91c92ca8664ad8cc91843fa7a9b9ec90b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test16.c +++ /dev/null @@ -1,136 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Exercise all the GLUT shapes. */ - -#include -#include -#ifdef _WIN32 -#include -#define sleep(x) Sleep(1000 * x) -#else -#include -#endif -#include - -GLfloat light_diffuse[] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat light_position[] = -{1.0, 1.0, 1.0, 0.0}; - -void -displayFunc(void) -{ - static int shape = 1; - - fprintf(stderr, " %d", shape); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - switch (shape) { - case 1: - glutWireSphere(1.0, 20, 20); - break; - case 2: - glutSolidSphere(1.0, 20, 20); - break; - case 3: - glutWireCone(1.0, 1.0, 20, 20); - break; - case 4: - glutSolidCone(1.0, 1.0, 20, 20); - break; - case 5: - glutWireCube(1.0); - break; - case 6: - glutSolidCube(1.0); - break; - case 7: - glutWireTorus(0.5, 1.0, 15, 15); - break; - case 8: - glutSolidTorus(0.5, 1.0, 15, 15); - break; - case 9: - glutWireDodecahedron(); - break; - case 10: - glutSolidDodecahedron(); - break; - case 11: - glutWireTeapot(1.0); - break; - case 12: - glutSolidTeapot(1.0); - break; - case 13: - glutWireOctahedron(); - break; - case 14: - glutSolidOctahedron(); - break; - case 15: - glutWireTetrahedron(); - break; - case 16: - glutSolidTetrahedron(); - break; - case 17: - glutWireIcosahedron(); - break; - case 18: - glutSolidIcosahedron(); - break; - default: - printf("\nPASS: test16\n"); - exit(0); - } - glutSwapBuffers(); - shape += 1; - sleep(1); - glutPostRedisplay(); -} - -/* ARGSUSED */ -void -timefunc(int value) -{ - printf("\nFAIL: test16\n"); - exit(1); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("test16"); - glutDisplayFunc(displayFunc); - - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 22.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glTranslatef(0.0, 0.0, -3.0); - glRotatef(25, 1.0, 0.0, 0.0); - - /* Have a reasonably large timeout since some machines make - take a while to render all those polygons. */ - glutTimerFunc(35000, timefunc, 1); - - fprintf(stderr, "shape ="); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test16.dsp b/lib/glut-3.7.6/test/glut/test16.dsp deleted file mode 100644 index 6c2e2e7fe59fe0afca185555750585047635f3bb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test16.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test16" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test16 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test16.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test16.mak" CFG="test16 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test16 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test16 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test16 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test16 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test16___Win32_Debug" -# PROP BASE Intermediate_Dir "test16___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test16 - Win32 Release" -# Name "test16 - Win32 Debug" -# Begin Source File - -SOURCE=.\test16.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test17.c b/lib/glut-3.7.6/test/glut/test17.c deleted file mode 100644 index 593857ff8354aac974cb465c8ca6c604c706f4d2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test17.c +++ /dev/null @@ -1,289 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Test for GLUT 3.0's overlay functionality. */ - -#include -#include -#include - -static int transP; -static int main_win; -static float x = 0, y = 0; - -static void -render_normal(void) -{ - glutUseLayer(GLUT_NORMAL); - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(0.0, 0.0, 1.0); - glBegin(GL_POLYGON); - glVertex2f(.2, .28); - glVertex2f(.5, .58); - glVertex2f(.2, .58); - glEnd(); - glFlush(); -} - -static void -render_overlay(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_POLYGON); - glVertex2f(.2 + x, .2 + y); - glVertex2f(.5 + x, .5 + y); - glVertex2f(.2 + x, .5 + y); - glEnd(); - glFlush(); -} - -static void -render(void) -{ - glutUseLayer(GLUT_NORMAL); - render_normal(); - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - glutUseLayer(GLUT_OVERLAY); - render_overlay(); - } -} - -static void -render_sub(void) -{ - printf("render_sub\n"); - glutUseLayer(GLUT_NORMAL); - render_normal(); - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - glutUseLayer(GLUT_OVERLAY); - render_overlay(); - } -} - -static int display_count = 0; -static int damage_expectation; - -static void -timer(int value) -{ - if (value != 777) { - printf("FAIL: unexpected timer value\n"); - exit(1); - } - damage_expectation = 1; - glutShowWindow(); -} - -static void -time2(int value) -{ - if (value == 666) { - printf("PASS: test17\n"); - exit(0); - } - if (value != 888) { - printf("FAIL: bad value\n"); - exit(1); - } - glutDestroyWindow(main_win); - glutTimerFunc(500, time2, 666); -} - -static void -move_on(void) -{ - display_count++; - if (display_count == 2) { - damage_expectation = 1; - glutIconifyWindow(); - glutTimerFunc(500, timer, 777); - } - if (display_count == 4) { - printf("display_count == 4\n"); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - glutCreateSubWindow(main_win, 10, 10, 150, 150); - glClearColor(0.5, 0.5, 0.5, 0.0); - glutDisplayFunc(render_sub); - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - glutEstablishOverlay(); - glutCopyColormap(main_win); - glutSetColor((transP + 1) % 2, 0.0, 1.0, 1.0); - glutRemoveOverlay(); - glutEstablishOverlay(); - glutCopyColormap(main_win); - glutCopyColormap(main_win); - glutSetColor((transP + 1) % 2, 1.0, 1.0, 1.0); - glClearIndex(transP); - glIndexf((transP + 1) % 2); - glutSetWindow(main_win); - glutRemoveOverlay(); - glutTimerFunc(500, time2, 888); - } -} - -static void -display_normal(void) -{ - if (glutLayerGet(GLUT_NORMAL_DAMAGED) != damage_expectation) { - printf("FAIL: normal damage not expected\n"); - exit(1); - } - render_normal(); - move_on(); -} - -static void -display_overlay(void) -{ - if (glutLayerGet(GLUT_OVERLAY_DAMAGED) != damage_expectation) { - printf("FAIL: overlay damage not expected\n"); - exit(1); - } - render_overlay(); - move_on(); -} - -static void -display2(void) -{ - static int been_here = 0; - - if (glutLayerGet(GLUT_NORMAL_DAMAGED) != 0) { - printf("FAIL: normal damage not expected\n"); - exit(1); - } - if (glutLayerGet(GLUT_OVERLAY_DAMAGED) != 0) { - printf("FAIL: overlay damage not expected\n"); - exit(1); - } - if (been_here) { - glutPostOverlayRedisplay(); - } else { - glutOverlayDisplayFunc(display_overlay); - glutDisplayFunc(display_normal); - damage_expectation = 0; - glutPostOverlayRedisplay(); - glutPostRedisplay(); - } -} - -static void -display(void) -{ - if (glutLayerGet(GLUT_NORMAL_DAMAGED) == 0) { - printf("FAIL: normal damage expected\n"); - exit(1); - } - if (glutLayerGet(GLUT_OVERLAY_DAMAGED) == 0) { - printf("FAIL: overlay damage expected\n"); - exit(1); - } - render(); - - glutDisplayFunc(display2); - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(300, 300); - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - - if (!glutLayerGet(GLUT_OVERLAY_POSSIBLE)) { - printf("UNRESOLVED: need overlays for this test (your window system lacks overlays)\n"); - exit(0); - } - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - main_win = glutCreateWindow("test17"); - - if (glutLayerGet(GLUT_LAYER_IN_USE) == GLUT_OVERLAY) { - printf("FAIL: overlay should not be in use\n"); - exit(1); - } - if (glutLayerGet(GLUT_HAS_OVERLAY)) { - printf("FAIL: overlay should not exist\n"); - exit(1); - } - if (glutLayerGet(GLUT_TRANSPARENT_INDEX) != -1) { - printf("FAIL: transparent pixel of normal plane should be -1\n"); - exit(1); - } - if (glutLayerGet(GLUT_NORMAL_DAMAGED) != 0) { - printf("FAIL: no normal damage yet\n"); - exit(1); - } - if (glutLayerGet(GLUT_OVERLAY_DAMAGED) != -1) { - printf("FAIL: no overlay damage status yet\n"); - exit(1); - } - glClearColor(0.0, 1.0, 0.0, 0.0); - - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - - /* Small torture test. */ - glutEstablishOverlay(); - glutRemoveOverlay(); - glutEstablishOverlay(); - glutEstablishOverlay(); - glutShowOverlay(); - glutHideOverlay(); - glutShowOverlay(); - glutRemoveOverlay(); - glutRemoveOverlay(); - glutEstablishOverlay(); - - if (glutGet(GLUT_WINDOW_RGBA)) { - printf("FAIL: overlay should not be RGBA\n"); - exit(1); - } - glutUseLayer(GLUT_NORMAL); - if (!glutGet(GLUT_WINDOW_RGBA)) { - printf("FAIL: normal should be RGBA\n"); - exit(1); - } - glutUseLayer(GLUT_OVERLAY); - if (glutGet(GLUT_WINDOW_RGBA)) { - printf("FAIL: overlay should not be RGBA\n"); - exit(1); - } - if (glutLayerGet(GLUT_LAYER_IN_USE) == GLUT_NORMAL) { - printf("FAIL: overlay should be in use\n"); - exit(1); - } - if (glutLayerGet(GLUT_HAS_OVERLAY) == 0) { - printf("FAIL: overlay should exist\n"); - exit(1); - } - if (glutLayerGet(GLUT_TRANSPARENT_INDEX) == -1) { - printf("FAIL: transparent pixel should exist\n"); - exit(1); - } - if (glutLayerGet(GLUT_NORMAL_DAMAGED) != 0) { - printf("FAIL: no normal damage yet\n"); - exit(1); - } - if (glutLayerGet(GLUT_OVERLAY_DAMAGED) != 0) { - printf("FAIL: no overlay damage yet\n"); - exit(1); - } - transP = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(glutLayerGet(GLUT_TRANSPARENT_INDEX)); - glutSetColor((transP + 1) % 2, 1.0, 0.0, 1.0); - glIndexi((transP + 1) % 2); - - glutUseLayer(GLUT_NORMAL); - if (glutLayerGet(GLUT_LAYER_IN_USE) == GLUT_OVERLAY) { - printf("FAIL: overlay should not be in use\n"); - exit(1); - } - glutDisplayFunc(display); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test17.dsp b/lib/glut-3.7.6/test/glut/test17.dsp deleted file mode 100644 index b9be19603fd89b14747f771b1815b45e1800f55e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test17.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test17" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test17 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test17.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test17.mak" CFG="test17 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test17 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test17 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test17 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test17 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test17 - Win32 Release" -# Name "test17 - Win32 Debug" -# Begin Source File - -SOURCE=.\test17.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test18.c b/lib/glut-3.7.6/test/glut/test18.c deleted file mode 100644 index 3d9779cd7941f99c66e63ecb34b270af529edf38..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test18.c +++ /dev/null @@ -1,210 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Test display callbacks are not called for non-viewable - windows and overlays. */ - -#include -#include -#include - -int transP, opaqueP; -int main_win, sub_win; -int overlaySupported; -int subHidden, overlayHidden; -int warnIfNormalDisplay = 0; -int firstTime = 1; - -void -time5_cb(int value) -{ - if (value != -3) { - printf("ERROR: test18\n"); - exit(1); - } - printf("PASS: test18\n"); - exit(0); -} - -void -time4_cb(int value) -{ - if (value != -6) { - printf("ERROR: test18\n"); - exit(1); - } - warnIfNormalDisplay = 0; - glutTimerFunc(750, time5_cb, -3); - glutSetWindow(sub_win); - glutPostRedisplay(); - glutSetWindow(main_win); - if (overlaySupported) { - glutPostOverlayRedisplay(); - } -} - -void -time3_cb(int value) -{ - if (value != 6) { - printf("ERROR: test18\n"); - exit(1); - } - glutSetWindow(main_win); - glutHideOverlay(); - overlayHidden = 1; - warnIfNormalDisplay = 1; - glutTimerFunc(500, time4_cb, -6); -} - -void -time2_cb(int value) -{ - if (value != 56) { - printf("ERROR: test18\n"); - exit(1); - } - glutSetWindow(main_win); - if (overlaySupported) { - glutShowOverlay(); - overlayHidden = 0; - } - glutSetWindow(sub_win); - glutHideWindow(); - subHidden = 1; - glutTimerFunc(500, time3_cb, 6); -} - -void -time_cb(int value) -{ - if (value != 456) { - printf("ERROR: test18\n"); - exit(1); - } - glutSetWindow(sub_win); - subHidden = 0; - glutShowWindow(); - glutTimerFunc(500, time2_cb, 56); -} - -void -display(void) -{ - if (warnIfNormalDisplay) { - printf("WARNING: hiding overlay should not generate normal plane expose!\n"); - printf("does overlay operation work correctly?\n"); - } - if (glutLayerGet(GLUT_LAYER_IN_USE) != GLUT_NORMAL) { - printf("ERROR: test18\n"); - exit(1); - } - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - if (firstTime) { - glutTimerFunc(500, time_cb, 456); - firstTime = 0; - } -} - -void -subDisplay(void) -{ - if (glutLayerGet(GLUT_LAYER_IN_USE) != GLUT_NORMAL) { - printf("ERROR: test18\n"); - exit(1); - } - if (subHidden) { - printf("display callback generated when subwindow was hidden!\n"); - printf("ERROR: test18\n"); - exit(1); - } - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void -overDisplay(void) -{ - if (glutLayerGet(GLUT_LAYER_IN_USE) != GLUT_OVERLAY) { - printf("ERROR: test18\n"); - exit(1); - } - if (overlayHidden) { - printf("display callback generated when overlay was hidden!\n"); - printf("ERROR: test18\n"); - exit(1); - } - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void -subVis(int state) -{ - if (glutLayerGet(GLUT_LAYER_IN_USE) != GLUT_NORMAL) { - printf("ERROR: test18\n"); - exit(1); - } - if (subHidden && state == GLUT_VISIBLE) { - printf("visible callback generated when overlay was hidden!\n"); - printf("ERROR: test18\n"); - exit(1); - } - if (!subHidden && state == GLUT_NOT_VISIBLE) { - printf("non-visible callback generated when overlay was shown!\n"); - printf("ERROR: test18\n"); - exit(1); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(300, 300); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); - - main_win = glutCreateWindow("test18"); - - if (glutGet(GLUT_WINDOW_COLORMAP_SIZE) != 0) { - printf("RGBA color model windows should report zero colormap entries.\n"); - printf("ERROR: test18\n"); - exit(1); - } - - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - glutDisplayFunc(display); - - overlaySupported = glutLayerGet(GLUT_OVERLAY_POSSIBLE); - if (overlaySupported) { - glutEstablishOverlay(); - glutHideOverlay(); - overlayHidden = 1; - glutOverlayDisplayFunc(overDisplay); - transP = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(glutLayerGet(GLUT_TRANSPARENT_INDEX)); - opaqueP = (transP + 1) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - glutSetColor(opaqueP, 1.0, 0.0, 1.0); - glClearIndex(opaqueP); - } - else - { - printf("UNRESOLVED: need overlays for this test (your window system lacks overlays)\n"); - return 0; - } - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); - sub_win = glutCreateSubWindow(main_win, 10, 10, 20, 20); - glClearColor(0.0, 1.0, 0.0, 0.0); - glutDisplayFunc(subDisplay); - glutVisibilityFunc(subVis); - glutHideWindow(); - subHidden = 1; - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test18.dsp b/lib/glut-3.7.6/test/glut/test18.dsp deleted file mode 100644 index 2c2897790a5783ce7749bf3845cfac3d9a0e56d2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test18.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test18" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test18 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test18.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test18.mak" CFG="test18 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test18 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test18 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test18 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test18 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test18___Win32_Debug" -# PROP BASE Intermediate_Dir "test18___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test18 - Win32 Release" -# Name "test18 - Win32 Debug" -# Begin Source File - -SOURCE=.\test18.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test19.c b/lib/glut-3.7.6/test/glut/test19.c deleted file mode 100644 index 111980e5a232779720277d0b04e7543aa65823bf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test19.c +++ /dev/null @@ -1,67 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This test makes sure damaged gets set when a window is - resized smaller. */ - -#include -#include -#include - -int width = -1, height = -1; -int displayCount = 0; - -/* ARGSUSED */ -void -done(int value) -{ - if (displayCount != 2) { - fprintf(stderr, "FAIL: test19, damage expected\n"); - exit(1); - } - fprintf(stderr, "PASS: test19\n"); - exit(0); -} - -void -reshape(int w, int h) -{ - printf("window reshaped: w=%d, h=%d\n", w, h); - width = w; - height = h; -} - -void -display(void) -{ - if (glutLayerGet(GLUT_NORMAL_DAMAGED) == 0) { - fprintf(stderr, "FAIL: test19, damage expected\n"); - exit(1); - } - displayCount++; - if (width == -1 || height == -1) { - fprintf(stderr, "FAIL: test19, reshape not called\n"); - exit(1); - } - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - if (displayCount == 1) { - glutReshapeWindow(width / 2, height / 2); - glutTimerFunc(1000, done, 0); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutCreateWindow("test19"); - glutDisplayFunc(display); - glutReshapeFunc(reshape); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test19.dsp b/lib/glut-3.7.6/test/glut/test19.dsp deleted file mode 100644 index 5d748273cb79d21fb87a4fe31681af564249bac4..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test19.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test19" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test19 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test19.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test19.mak" CFG="test19 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test19 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test19 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test19 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test19 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test19___Win32_Debug" -# PROP BASE Intermediate_Dir "test19___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test19 - Win32 Release" -# Name "test19 - Win32 Debug" -# Begin Source File - -SOURCE=.\test19.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test2.c b/lib/glut-3.7.6/test/glut/test2.c deleted file mode 100644 index 2573c2cb3fe503f7290c295e8fd7e30b30de78ff..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test2.c +++ /dev/null @@ -1,177 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int count = 0, save_count; -int head, tail, diff; - -void -idle(void) -{ - count++; -} - -void -timer2(int value) -{ - if (value != 36) { - printf("FAIL: timer value wrong\n"); - exit(1); - } - if (count != save_count) { - printf("FAIL: counter still counting\n"); - exit(1); - } - printf("PASS: test2\n"); - exit(0); -} - -void -timer(int value) -{ - if (value != 42) { - printf("FAIL: timer value wrong\n"); - exit(1); - } - if (count <= 0) { - printf("FAIL: idle func not running\n"); - exit(1); - } - glutIdleFunc(NULL); - save_count = count; - tail = glutGet(GLUT_ELAPSED_TIME); - diff = tail - head; - printf("diff = %d (%d - %d)\n", diff, tail, head); - if (diff > ((int) 500 * 1.2)) { - printf("THIS TEST IS TIME SENSITIVE; IF IT FAILS, TRY RUNNING IT AGAIN.\n"); - printf("FAIL: timer too late\n"); - exit(1); - } - if (diff < ((int) 500 * .9)) { - printf("THIS TEST IS TIME SENSITIVE; IF IT FAILS, TRY RUNNING IT AGAIN.\n"); - printf("FAIL: timer too soon\n"); - exit(1); - } - glutTimerFunc(100, timer2, 36); -} - -/* ARGSUSED */ -void -menuSelect(int value) -{ -} - -void -NeverVoid(void) -{ - printf("FAIL: NeverVoid should never be called\n"); - exit(1); -} - -/* ARGSUSED */ -void -NeverValue(int value) -{ - printf("FAIL: NeverValue most be NOT visible\n"); - exit(1); -} - -#define NUM 15 - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -int -main(int argc, char **argv) -{ - int win, menu; - int marray[NUM]; - int warray[NUM]; - int i, j; - GLint isIndex; - - glutInit(&argc, argv); - glutInitWindowPosition(10, 10); - glutInitWindowSize(200, 200); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - win = glutCreateWindow("test2"); - glGetIntegerv(GL_INDEX_MODE, &isIndex); - if (isIndex != 0) { - printf("FAIL: window should be RGBA\n"); - exit(1); - } - glutSetWindow(win); - glutDisplayFunc(display); - menu = glutCreateMenu(menuSelect); - glutSetMenu(menu); - glutReshapeFunc(NULL); - glutReshapeFunc(NULL); - glutKeyboardFunc(NULL); - glutKeyboardFunc(NULL); - glutMouseFunc(NULL); - glutMouseFunc(NULL); - glutMotionFunc(NULL); - glutMotionFunc(NULL); - glutVisibilityFunc(NULL); - glutVisibilityFunc(NULL); - glutMenuStateFunc(NULL); - glutMenuStateFunc(NULL); - glutMenuStatusFunc(NULL); - glutMenuStatusFunc(NULL); - glutSpecialFunc(NULL); - glutSpecialFunc(NULL); - glutSpaceballMotionFunc(NULL); - glutSpaceballMotionFunc(NULL); - glutSpaceballRotateFunc(NULL); - glutSpaceballRotateFunc(NULL); - glutSpaceballButtonFunc(NULL); - glutSpaceballButtonFunc(NULL); - glutButtonBoxFunc(NULL); - glutButtonBoxFunc(NULL); - glutDialsFunc(NULL); - glutDialsFunc(NULL); - glutTabletMotionFunc(NULL); - glutTabletMotionFunc(NULL); - glutTabletButtonFunc(NULL); - glutTabletButtonFunc(NULL); - for (i = 0; i < NUM; i++) { - marray[i] = glutCreateMenu(menuSelect); - warray[i] = glutCreateWindow("test"); - glutDisplayFunc(display); - for (j = 0; j < i; j++) { - glutAddMenuEntry("Hello", 1); - glutAddSubMenu("Submenu", menu); - } - if (marray[i] != glutGetMenu()) { - printf("FAIL: current menu not %d\n", marray[i]); - exit(1); - } - if (warray[i] != glutGetWindow()) { - printf("FAIL: current window not %d\n", warray[i]); - exit(1); - } - glutDisplayFunc(NeverVoid); - glutVisibilityFunc(NeverValue); - glutHideWindow(); - } - for (i = 0; i < NUM; i++) { - glutDestroyMenu(marray[i]); - glutDestroyWindow(warray[i]); - } - glutTimerFunc(500, timer, 42); - head = glutGet(GLUT_ELAPSED_TIME); - glutIdleFunc(idle); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test2.dsp b/lib/glut-3.7.6/test/glut/test2.dsp deleted file mode 100644 index 11d5df9751030a25bcc171c4683fa81033349f2d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test2.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test2.mak" CFG="test2 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test2___Win32_Debug" -# PROP BASE Intermediate_Dir "test2___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test2 - Win32 Release" -# Name "test2 - Win32 Debug" -# Begin Source File - -SOURCE=.\test2.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test20.c b/lib/glut-3.7.6/test/glut/test20.c deleted file mode 100644 index f539716358a4b0a7a0936154f7071e332fd0dd21..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test20.c +++ /dev/null @@ -1,139 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Test glutExtensionSupported. */ - -#include -#include -#include -#include - -void -wrangleExtensionName(char *extension) -{ - char buffer[512]; - int rc, len; - - sprintf(buffer, " %s", extension); - rc = glutExtensionSupported(buffer); - if (rc) { - printf("FAIL: test20, space prefix\n"); - exit(1); - } - - sprintf(buffer, "%s ", extension); - rc = glutExtensionSupported(buffer); - if (rc) { - printf("FAIL: test20, space suffix\n"); - exit(1); - } - - sprintf(buffer, "GL_%s", extension); - rc = glutExtensionSupported(buffer); - if (rc) { - printf("FAIL: test20, GL_ prefix\n"); - exit(1); - } - - sprintf(buffer, "%s", extension + 1); - rc = glutExtensionSupported(buffer); - if (rc) { - printf("FAIL: test20, missing first character\n"); - exit(1); - } - - sprintf(buffer, "%s", extension); - len = (int) strlen(buffer); - if(len > 0) { - buffer[len-1] = '\0'; - } - rc = glutExtensionSupported(buffer); - if (rc) { - printf("FAIL: test20, mising last character\n"); - exit(1); - } - - sprintf(buffer, "%s", extension); - len = (int) strlen(buffer); - if(len > 0) { - buffer[len-1] = 'X'; - } - rc = glutExtensionSupported(buffer); - if (rc) { - printf("FAIL: test20, changed last character\n"); - exit(1); - } -} - -int -main(int argc, char **argv) -{ - char *extension; - int rc; - - glutInit(&argc, argv); - glutCreateWindow("test20"); - - extension = "GL_EXT_blend_color"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_abgr"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_blend_minmax"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_blend_logic_op"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_blend_subtract"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_polygon_offset"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_subtexture"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_texture"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_EXT_texture_object"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - extension = "GL_SGIX_framezoom"; - rc = glutExtensionSupported(extension); - printf("Extension %s is %s by your OpenGL.\n", extension, rc ? "SUPPORTED" : "NOT supported"); - if (rc) wrangleExtensionName(extension); - - rc = glutExtensionSupported(""); - if (rc) { - printf("FAIL: test20, null string\n"); - exit(1); - } - - printf("PASS: test20\n"); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test20.dsp b/lib/glut-3.7.6/test/glut/test20.dsp deleted file mode 100644 index 0b3413ca5a4ffce67e8a15bd74ab44e6c95bfa30..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test20.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test20" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test20 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test20.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test20.mak" CFG="test20 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test20 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test20 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test20 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test20 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test20___Win32_Debug" -# PROP BASE Intermediate_Dir "test20___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test20 - Win32 Release" -# Name "test20 - Win32 Debug" -# Begin Source File - -SOURCE=.\test20.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test21.c b/lib/glut-3.7.6/test/glut/test21.c deleted file mode 100644 index 89a62dcfe208ee14e4dd16702c4248d40bc5b035..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test21.c +++ /dev/null @@ -1,189 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This tests GLUT's video resize API (currently only supported - on SGI's InfiniteReality hardware). */ - -#include -#include -#include -#include - -GLfloat light_diffuse[] = -{1.0, 0.0, 0.0, 1.0}; -GLfloat light_position[] = -{1.0, 1.0, 1.0, 0.0}; - -int x, y, w, h, dx, dy, dw, dh; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glutSolidTeapot(1.0); - glutSwapBuffers(); -} - -void -show_video_size(void) -{ - printf("GLUT_VIDEO_RESIZE_X = %d\n", - glutVideoResizeGet(GLUT_VIDEO_RESIZE_X)); - printf("GLUT_VIDEO_RESIZE_Y = %d\n", - glutVideoResizeGet(GLUT_VIDEO_RESIZE_Y)); - printf("GLUT_VIDEO_RESIZE_WIDTH = %d\n", - glutVideoResizeGet(GLUT_VIDEO_RESIZE_WIDTH)); - printf("GLUT_VIDEO_RESIZE_HEIGHT = %d\n", - glutVideoResizeGet(GLUT_VIDEO_RESIZE_HEIGHT)); -} - -/* ARGSUSED1 */ -void -key(unsigned char k, int x, int y) -{ - printf("c = %c\n", k); - switch (k) { - case 27: - exit(0); - return; - case 'a': - glutVideoPan(0, 0, 1280, 1024); - break; - case 'b': - glutVideoPan(0, 0, 1600, 1024); - break; - case 'c': - glutVideoPan(640, 512, 640, 512); - break; - case 'q': - glutVideoPan(320, 256, 640, 512); - break; - case '1': - glutVideoResize(0, 0, 640, 512); - break; - case '2': - glutVideoResize(0, 512, 640, 512); - break; - case '3': - glutVideoResize(512, 512, 640, 512); - break; - case '4': - glutVideoResize(512, 0, 640, 512); - break; - case 's': - glutStopVideoResizing(); - break; - case '=': - show_video_size(); - break; - case ' ': - glutPostRedisplay(); - break; - } -} - -/* ARGSUSED */ -void -time2(int value) -{ - glutVideoResize(x, y, w, h); - glutPostRedisplay(); - x -= dx; - y -= dy; - w += (dx * 2); - h += (dy * 2); - if (x > 0) { - glutTimerFunc(100, time2, 0); - } else { - glutStopVideoResizing(); - printf("PASS: test21 (with video resizing tested)\n"); - exit(0); - } -} - -/* ARGSUSED */ -void -time1(int value) -{ - glutVideoPan(x, y, w, h); - x += dx; - y += dy; - w -= (dx * 2); - h -= (dy * 2); - if (x < 200) { - glutTimerFunc(100, time1, 0); - } else { - glutTimerFunc(100, time2, 0); - } -} - -int -main(int argc, char **argv) -{ - int i, interact = 0; - - glutInit(&argc, argv); - - for (i = 1; i < argc; i++) { - if (!strcmp("-i", argv[i])) { - interact = 1; - } - } - - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("test21"); - - if (!glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) { - printf("video resizing not supported\n"); - printf("PASS: test21\n"); - exit(0); - } - glutSetupVideoResizing(); - printf("GLUT_VIDEO_RESIZE_X_DELTA = %d\n", - dx = glutVideoResizeGet(GLUT_VIDEO_RESIZE_X_DELTA)); - printf("GLUT_VIDEO_RESIZE_Y_DELTA = %d\n", - dy = glutVideoResizeGet(GLUT_VIDEO_RESIZE_Y_DELTA)); - printf("GLUT_VIDEO_RESIZE_WIDTH_DELTA = %d\n", - dw = glutVideoResizeGet(GLUT_VIDEO_RESIZE_WIDTH_DELTA)); - printf("GLUT_VIDEO_RESIZE_HEIGHT_DELTA = %d\n", - dh = glutVideoResizeGet(GLUT_VIDEO_RESIZE_HEIGHT_DELTA)); - printf("GLUT_VIDEO_RESIZE_X = %d\n", - x = glutVideoResizeGet(GLUT_VIDEO_RESIZE_X)); - printf("GLUT_VIDEO_RESIZE_Y = %d\n", - y = glutVideoResizeGet(GLUT_VIDEO_RESIZE_Y)); - printf("GLUT_VIDEO_RESIZE_WIDTH = %d\n", - w = glutVideoResizeGet(GLUT_VIDEO_RESIZE_WIDTH)); - printf("GLUT_VIDEO_RESIZE_HEIGHT = %d\n", - h = glutVideoResizeGet(GLUT_VIDEO_RESIZE_HEIGHT)); - glutStopVideoResizing(); - glutSetupVideoResizing(); - - glutDisplayFunc(display); - glutFullScreen(); - - glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); - gluPerspective( /* field of view in degree */ 22.0, - /* aspect ratio */ 1.0, - /* Z near */ 1.0, /* Z far */ 10.0); - glMatrixMode(GL_MODELVIEW); - gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ - 0.0, 0.0, 0.0, /* center is at (0,0,0) */ - 0.0, 1.0, 0.); /* up is in postivie Y direction */ - glTranslatef(0.0, 0.0, -1.0); - - glutKeyboardFunc(key); - if (!interact) { - glutTimerFunc(100, time1, 0); - } - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test21.dsp b/lib/glut-3.7.6/test/glut/test21.dsp deleted file mode 100644 index ef1ef9253743ce14df026089e383857982b068c2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test21.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test21" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test21 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test21.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test21.mak" CFG="test21 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test21 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test21 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test21 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test21 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test21___Win32_Debug" -# PROP BASE Intermediate_Dir "test21___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test21 - Win32 Release" -# Name "test21 - Win32 Debug" -# Begin Source File - -SOURCE=.\test21.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test22.c b/lib/glut-3.7.6/test/glut/test22.c deleted file mode 100644 index fdd63fce22969e7aedf92ee4c5ddd4335a7040bb..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test22.c +++ /dev/null @@ -1,209 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This tests GLUT's glutWindowStatusFunc rotuine. */ - -#include -#include -#include -#include - -int win, subwin, cover; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glutSwapBuffers(); -} - -/* ARGSUSED */ -void -time_end(int value) -{ - printf("PASS: test22\n"); - exit(0); -} - -/* ARGSUSED */ -void -time5(int value) -{ - glutSetWindow(subwin); - glutPositionWindow(40, 40); -} - -/* ARGSUSED */ -void -time4(int value) -{ - glutSetWindow(subwin); - glutShowWindow(); -} - -/* ARGSUSED */ -void -time3(int value) -{ - glutSetWindow(subwin); - glutHideWindow(); -} - -int sub_state = 0; -int cover_state = 0; -int state = 0; - -void -coverstat(int status) -{ - if (cover != glutGetWindow()) { - printf("ERROR: test22\n"); - exit(1); - } - printf("%d: cover = %d\n", cover_state, status); - switch(cover_state) { - case 0: - if (status != GLUT_FULLY_RETAINED) { - printf("ERROR: test22\n"); - exit(1); - } - glutTimerFunc(1000, time3, 0); - break; - default: - printf("ERROR: test22\n"); - exit(1); - break; - } - cover_state++; -} - -/* ARGSUSED */ -void -time2(int value) -{ - cover = glutCreateSubWindow(win, 5, 5, 105, 105); - glClearColor(0.0, 1.0, 0.0, 0.0); - glutDisplayFunc(display); - glutWindowStatusFunc(coverstat); -} - -void -substat(int status) -{ - if (subwin != glutGetWindow()) { - printf("ERROR: test22\n"); - exit(1); - } - printf("%d: substat = %d\n", sub_state, status); - switch(sub_state) { - case 0: - if (status != GLUT_FULLY_RETAINED) { - printf("ERROR: test22\n"); - exit(1); - } - glutTimerFunc(1000, time2, 0); - break; - case 1: - if (status != GLUT_FULLY_COVERED) { - printf("ERROR: test22\n"); - exit(1); - } - break; - case 2: - if (status != GLUT_HIDDEN) { - printf("ERROR: test22\n"); - exit(1); - } - glutTimerFunc(1000, time4, 0); - break; - case 3: - if (status != GLUT_FULLY_COVERED) { - printf("ERROR: test22\n"); - exit(1); - } - glutTimerFunc(1000, time5, 0); - break; - case 4: - if (status != GLUT_PARTIALLY_RETAINED) { - printf("ERROR: test22\n"); - exit(1); - } - glutTimerFunc(1000, time_end, 0); - break; - default: - printf("ERROR: test22\n"); - exit(1); - break; - } - sub_state++; -} - -/* ARGSUSED */ -void -time1(int value) -{ - subwin = glutCreateSubWindow(win, 10, 10, 100, 100); - glClearColor(0.0, 1.0, 1.0, 0.0); - glutDisplayFunc(display); - glutWindowStatusFunc(substat); -} - -void -winstat(int status) -{ - if (win != glutGetWindow()) { - printf("ERROR: test22\n"); - exit(1); - } - printf("%d: win = %d\n", state, status); - switch(state) { - case 0: - if (status != GLUT_FULLY_RETAINED) { - printf("ERROR: test22\n"); - exit(1); - } - glutTimerFunc(1000, time1, 0); - break; - case 1: - if (status != GLUT_PARTIALLY_RETAINED) { - printf("ERROR: test22\n"); - exit(1); - } - break; - default: - printf("ERROR: test22\n"); - exit(1); - break; - } - state++; -} - -/* ARGSUSED */ -void -visbad(int state) -{ - printf("ERROR: test22\n"); - exit(1); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); - win = glutCreateWindow("test22"); - glClearColor(1.0, 0.0, 1.0, 0.0); - glutDisplayFunc(display); - glutVisibilityFunc(visbad); - glutVisibilityFunc(NULL); - glutWindowStatusFunc(NULL); - glutVisibilityFunc(NULL); - glutWindowStatusFunc(winstat); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test22.dsp b/lib/glut-3.7.6/test/glut/test22.dsp deleted file mode 100644 index d2d705b3924a11b6aa5293e5df97f3ea30df0a70..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test22.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test22" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test22 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test22.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test22.mak" CFG="test22 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test22 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test22 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test22 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test22 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test22___Win32_Debug" -# PROP BASE Intermediate_Dir "test22___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test22 - Win32 Release" -# Name "test22 - Win32 Debug" -# Begin Source File - -SOURCE=.\test22.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test23.c b/lib/glut-3.7.6/test/glut/test23.c deleted file mode 100644 index 56f5e2ebd33df5a3d1c7c1c770a90e7bd9e7ae7f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test23.c +++ /dev/null @@ -1,138 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This tests unexpected interactions between - glutInitDisplayMode and glutInitDisplayString. */ - -#include -#include -#include -#include - -int modes[] = -{ - GLUT_RGB | GLUT_SINGLE, - GLUT_RGB | GLUT_DOUBLE, - GLUT_INDEX | GLUT_SINGLE, - GLUT_INDEX | GLUT_DOUBLE -}; -#define NUM_MODES (sizeof(modes)/sizeof(modes[0])) - -char *strings[] = -{ - "rgb double", - "rgba double", - "rgba single", - "index", - "index double", - "rgb samples=4", - "stencil depth red green blue alpha conformant auxbufs buffer acc acca double rgb rgba", - "stereo index samples slow", - NULL -}; - -char *ostrings[] = -{ - "index double", - "index single", - "index buffer=4", - "index buffer=8", - "index buffer~4", - "index buffer=4 depth", - NULL -}; - -int verbose; - -int -main(int argc, char **argv) -{ - int k, i, j, win; - int num, exists; - char mode[200]; - - glutInit(&argc, argv); - if (argc > 1) { - if (!strcmp(argv[1], "-v")) { - verbose = 1; - } - } - glutInitWindowPosition(10, 10); - glutInitWindowSize(200, 200); - for (k = 0; k < NUM_MODES; k++) { - glutInitDisplayMode(modes[k]); - printf("Display Mode = %d (%s,%s)\n", modes[k], - modes[k] & GLUT_INDEX ? "index" : "rgba", - modes[k] & GLUT_DOUBLE ? "double" : "single"); - for (i = 0; strings[i]; i++) { - glutInitDisplayString(strings[i]); - if (glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) { - if (verbose) - printf(" Possible: %s\n", strings[i]); - win = glutCreateWindow("test23"); - if (verbose) - printf(" Created: %s\n", strings[i]); - for (j = 0; ostrings[j]; j++) { - glutInitDisplayString(ostrings[j]); - if (glutLayerGet(GLUT_OVERLAY_POSSIBLE)) { - if (verbose) - printf(" Overlay possible: %s\n", ostrings[j]); - glutEstablishOverlay(); - if (verbose) - printf(" Overlay establish: %s\n", ostrings[j]); - glutRemoveOverlay(); - if (verbose) - printf(" Overlay remove: %s\n", ostrings[j]); - } - } - glutDestroyWindow(win); - if (verbose) - printf(" Destroyed: %s\n", strings[i]); - } else { - if (verbose) - printf("Not possible: %s\n", strings[i]); - } - } - } - - glutInitDisplayString(NULL); - - num = 1; - do { - sprintf(mode, "rgb num=%d", num); - glutInitDisplayString(mode); - exists = glutGet(GLUT_DISPLAY_MODE_POSSIBLE); - if (exists) { - if (verbose) - printf(" Possible: %s\n", mode); - win = glutCreateWindow("test23"); - if (verbose) - printf(" Created: %s\n", mode); - glutDestroyWindow(win); - if (verbose) - printf(" Destroyed: %s\n", mode); - sprintf(mode, "rgb num=0x%x", num); - glutInitDisplayString(mode); - exists = glutGet(GLUT_DISPLAY_MODE_POSSIBLE); - if (!exists) { - printf("FAIL: test23 (hex num= don't work)\n"); - exit(1); - } - win = glutCreateWindow("test23"); - glutDestroyWindow(win); - num++; - } else { - if (verbose) - printf("Not possible: %s\n", mode); - } - } while (exists); - - glutInitDisplayString(NULL); - - printf("PASS: test23\n"); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test23.dsp b/lib/glut-3.7.6/test/glut/test23.dsp deleted file mode 100644 index 01ed49168c592f83308f0bdd3c089c4a16d2d7d0..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test23.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test23" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test23 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test23.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test23.mak" CFG="test23 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test23 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test23 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test23 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test23 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test23___Win32_Debug" -# PROP BASE Intermediate_Dir "test23___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test23 - Win32 Release" -# Name "test23 - Win32 Debug" -# Begin Source File - -SOURCE=.\test23.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test24.c b/lib/glut-3.7.6/test/glut/test24.c deleted file mode 100644 index 6d361dc0c9f8b993f2e924d7ae9abb07aee990e8..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test24.c +++ /dev/null @@ -1,146 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This tests various obscure interactions in menu creation and - destruction, including the support for Sun's Creator 3D - overlay "high cell" overlay menu colormap cell allocation. */ - -#include -#include -#include - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFinish(); -} - -void -timer(int value) -{ - if (value != 23) { - printf("FAIL: bad timer value\n"); - exit(1); - } - printf("PASS: test24\n"); - exit(0); -} - -/* ARGSUSED */ -void -menuSelect(int value) -{ -} - -int -main(int argc, char **argv) -{ - int win1, win2, men1, men2, men3; - - glutInit(&argc, argv); - - if (0 != glutGetMenu()) { - printf("FAIL: current menu wrong, should be zero\n"); - exit(1); - } - if (0 != glutGetWindow()) { - printf("FAIL: current window wrong, should be zero\n"); - exit(1); - } - glutInitWindowSize(140, 140); - - /* Make sure initial glut init display mode is right. */ - if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH)) { - printf("FAIL: init display mode wrong\n"); - exit(1); - } - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_STENCIL); - if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) { - printf("FAIL: display mode wrong\n"); - exit(1); - } - /* Interesting case: creating menu before creating windows. */ - men1 = glutCreateMenu(menuSelect); - - /* Make sure glutCreateMenu doesn't change init display mode. - */ - if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) { - printf("FAIL: display mode changed\n"); - exit(1); - } - if (men1 != glutGetMenu()) { - printf("FAIL: current menu wrong\n"); - exit(1); - } - glutAddMenuEntry("hello", 1); - glutAddMenuEntry("bye", 2); - glutAddMenuEntry("yes", 3); - glutAddMenuEntry("no", 4); - glutAddSubMenu("submenu", 5); - - win1 = glutCreateWindow("test24"); - glutDisplayFunc(display); - - if (win1 != glutGetWindow()) { - printf("FAIL: current window wrong\n"); - exit(1); - } - if (men1 != glutGetMenu()) { - printf("FAIL: current menu wrong\n"); - exit(1); - } - men2 = glutCreateMenu(menuSelect); - glutAddMenuEntry("yes", 3); - glutAddMenuEntry("no", 4); - glutAddSubMenu("submenu", 5); - - /* Make sure glutCreateMenu doesn't change init display mode. - */ - if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) { - printf("FAIL: display mode changed\n"); - exit(1); - } - if (men2 != glutGetMenu()) { - printf("FAIL: current menu wrong\n"); - exit(1); - } - if (win1 != glutGetWindow()) { - printf("FAIL: current window wrong\n"); - exit(1); - } - win2 = glutCreateWindow("test24 second"); - glutDisplayFunc(display); - - if (win2 != glutGetWindow()) { - printf("FAIL: current window wrong\n"); - exit(1); - } - glutDestroyWindow(win2); - - if (0 != glutGetWindow()) { - printf("FAIL: current window wrong, should be zero\n"); - exit(1); - } - men3 = glutCreateMenu(menuSelect); - glutAddMenuEntry("no", 4); - glutAddSubMenu("submenu", 5); - - if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_STENCIL)) { - printf("FAIL: display mode changed\n"); - exit(1); - } - glutDestroyMenu(men3); - - if (0 != glutGetMenu()) { - printf("FAIL: current menu wrong, should be zero\n"); - exit(1); - } - glutTimerFunc(2 * 1000, timer, 23); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test24.dsp b/lib/glut-3.7.6/test/glut/test24.dsp deleted file mode 100644 index b6dd67a2ac7b2d2f5dc9d1640c35e2e5b4953f53..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test24.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test24" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test24 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test24.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test24.mak" CFG="test24 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test24 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test24 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test24 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test24 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test24___Win32_Debug" -# PROP BASE Intermediate_Dir "test24___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test24 - Win32 Release" -# Name "test24 - Win32 Debug" -# Begin Source File - -SOURCE=.\test24.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test25.c b/lib/glut-3.7.6/test/glut/test25.c deleted file mode 100644 index beb171a2f23fbf97acd85cb3bdccd9e61f0228a7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test25.c +++ /dev/null @@ -1,162 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This tests glutBitmapLength and glutStrokeLength. */ - -#include -#include -#include - -unsigned char *abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; -char *null = ""; -char *space = " "; - -void *bitmap_fonts[] = -{ - GLUT_BITMAP_TIMES_ROMAN_24, - GLUT_BITMAP_TIMES_ROMAN_10, - GLUT_BITMAP_9_BY_15, - GLUT_BITMAP_8_BY_13, - GLUT_BITMAP_HELVETICA_10, - GLUT_BITMAP_HELVETICA_12, - GLUT_BITMAP_HELVETICA_18 -}; -#define NUM_BITMAP_FONTS (sizeof(bitmap_fonts)/sizeof(void*)) -char *bitmap_names[NUM_BITMAP_FONTS] = -{ - "Times Roman 24", - "Times Roman 10", - "9 by 15", - "8 by 13", - "Helvetica 10", - "Helvetica 12", - "Helvetica 18", -}; -int bitmap_lens[NUM_BITMAP_FONTS] = -{ - 2399, - 1023, - 2016, - 1792, - 1080, - 1291, - 1895 -}; -int bitmap_abc_lens[NUM_BITMAP_FONTS] = -{ - 713, - 305, - 468, - 416, - 318, - 379, - 572, -}; -void *stroke_fonts[] = -{ - GLUT_STROKE_ROMAN, - GLUT_STROKE_MONO_ROMAN -}; -#define NUM_STROKE_FONTS (sizeof(stroke_fonts)/sizeof(void*)) -char *stroke_names[NUM_STROKE_FONTS] = -{ - "Roman", - "Monospaced Roman" -}; -int stroke_lens[NUM_STROKE_FONTS] = -{ - 6635, - 9984 -}; -int stroke_abc_lens[NUM_STROKE_FONTS] = -{ - 3683, - 5408 -}; - -int -main(int argc, char **argv) -{ - void *font; - int total; - int i, j; - - glutInit(&argc, argv); - - /* Touch test the width determination of all bitmap - characters. */ - for (i = 0; i < NUM_BITMAP_FONTS; i++) { - font = bitmap_fonts[i]; - total = 0; - for (j = -2; j < 259; j++) { - total += glutBitmapWidth(font, j); - } - printf(" %s: bitmap total = %d (expected %d)\n", bitmap_names[i], total, bitmap_lens[i]); - if (total != bitmap_lens[i]) { - printf("FAIL: test25\n"); - exit(1); - } - } - - /* Touch test the width determination of all stroke - characters. */ - for (i = 0; i < NUM_STROKE_FONTS; i++) { - font = stroke_fonts[i]; - total = 0; - for (j = -2; j < 259; j++) { - total += glutStrokeWidth(font, j); - } - printf(" %s: stroke total = %d (expected %d)\n", stroke_names[i], total, stroke_lens[i]); - if (total != stroke_lens[i]) { - printf("FAIL: test25\n"); - exit(1); - } - } - - for (i = 0; i < NUM_BITMAP_FONTS; i++) { - font = bitmap_fonts[i]; - total = glutBitmapLength(font, abc); - printf(" %s: bitmap abc len = %d (expected %d)\n", bitmap_names[i], total, bitmap_abc_lens[i]); - if (total != bitmap_abc_lens[i]) { - printf("FAIL: test25\n"); - exit(1); - } - } - - for (i = 0; i < NUM_BITMAP_FONTS; i++) { - font = bitmap_fonts[i]; - total = glutBitmapLength(font, ""); - printf(" %s: bitmap abc len = %d (expected %d)\n", bitmap_names[i], total, 0); - if (total != 0) { - printf("FAIL: test25\n"); - exit(1); - } - } - - for (i = 0; i < NUM_STROKE_FONTS; i++) { - font = stroke_fonts[i]; - total = glutStrokeLength(font, abc); - printf(" %s: stroke abc len = %d (expected %d)\n", stroke_names[i], total, stroke_abc_lens[i]); - if (total != stroke_abc_lens[i]) { - printf("FAIL: test25\n"); - exit(1); - } - } - - for (i = 0; i < NUM_STROKE_FONTS; i++) { - font = stroke_fonts[i]; - total = glutStrokeLength(font, ""); - printf(" %s: stroke null len = %d (expected %d)\n", stroke_names[i], total, 0); - if (total != 0) { - printf("FAIL: test25\n"); - exit(1); - } - } - - printf("PASS: test25\n"); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test25.dsp b/lib/glut-3.7.6/test/glut/test25.dsp deleted file mode 100644 index 55ea85b6df002e9bf3b2266b975120039df41aaf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test25.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test25" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test25 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test25.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test25.mak" CFG="test25 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test25 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test25 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test25 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test25 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test25___Win32_Debug" -# PROP BASE Intermediate_Dir "test25___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test25 - Win32 Release" -# Name "test25 - Win32 Debug" -# Begin Source File - -SOURCE=.\test25.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test26.c b/lib/glut-3.7.6/test/glut/test26.c deleted file mode 100644 index 6436d15507a8efdbdcc1821e24ded353ca7bef6b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test26.c +++ /dev/null @@ -1,145 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Test for glutPostWindowRedisplay and - glutPostWindowOverlayRedisplay introduced with GLUT 4 API. */ - -#include -#include -#include - -int window1, window2, win1displayed = 0, win2displayed = 0; -int win1vis = 0, win2vis = 0; - -int overlaySupported, transP, opaqueP, over1displayed = 0; - -void -checkifdone(void) -{ - if ((win1displayed > 15) && (win2displayed > 15) && (!overlaySupported || over1displayed>15)) { - printf("PASS: test26\n"); - exit(0); - } -} - -void -window1display(void) -{ - if (glutGetWindow() != window1) { - printf("FAIL: window1display\n"); - exit(1); - } - glClearColor(0, 1, 0, 0); - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - win1displayed++; - checkifdone(); -} - -void -overDisplay(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glRectf(-0.5, -0.5, 0.5, 0.5); - glFlush(); - over1displayed++; - checkifdone(); -} - -void -window2display(void) -{ - if (glutGetWindow() != window2) { - printf("FAIL: window2display\n"); - exit(1); - } - glClearColor(0, 0, 1, 0); - glClear(GL_COLOR_BUFFER_BIT); - glutSwapBuffers(); - win2displayed++; - checkifdone(); -} - -/* ARGSUSED */ -void -timefunc(int value) -{ - printf("FAIL: test26\n"); - exit(1); -} - -void -idle(void) -{ - static int count = 0; - - if (count % 2) { - glutPostWindowRedisplay(window1); - glutPostWindowRedisplay(window2); - } else { - glutPostWindowRedisplay(window2); - glutPostWindowRedisplay(window1); - } - if (overlaySupported) { - glutPostWindowOverlayRedisplay(window1); - } - count++; -} - -void -window1vis(int vis) -{ - win1vis = vis; - if (win1vis && win2vis) { - glutIdleFunc(idle); - } -} - -void -window2status(int status) -{ - win2vis = (status == GLUT_FULLY_RETAINED) || (status == GLUT_PARTIALLY_RETAINED); - if (win1vis && win2vis) { - glutIdleFunc(idle); - } -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitWindowSize(100, 100); - glutInitWindowPosition(50, 100); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - window1 = glutCreateWindow("1"); - glutDisplayFunc(window1display); - glutVisibilityFunc(window1vis); - - glutInitDisplayMode(GLUT_SINGLE | GLUT_INDEX); - overlaySupported = glutLayerGet(GLUT_OVERLAY_POSSIBLE); - if (overlaySupported) { - printf("testing glutPostWindowOverlayRedisplay since overlay supported\n"); - glutEstablishOverlay(); - glutOverlayDisplayFunc(overDisplay); - transP = glutLayerGet(GLUT_TRANSPARENT_INDEX); - glClearIndex(glutLayerGet(GLUT_TRANSPARENT_INDEX)); - opaqueP = (transP + 1) % glutGet(GLUT_WINDOW_COLORMAP_SIZE); - glutSetColor(opaqueP, 1.0, 0.0, 0.0); - } - - glutInitWindowPosition(250, 100); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - window2 = glutCreateWindow("2"); - glutDisplayFunc(window2display); - glutWindowStatusFunc(window2status); - - glutTimerFunc(9000, timefunc, 1); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test26.dsp b/lib/glut-3.7.6/test/glut/test26.dsp deleted file mode 100644 index 6329683f08a04b9ac39866ecbe1c4b5c7e95b0a3..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test26.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test26" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test26 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test26.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test26.mak" CFG="test26 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test26 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test26 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test26 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test26 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test26 - Win32 Release" -# Name "test26 - Win32 Debug" -# Begin Source File - -SOURCE=.\test26.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test27.c b/lib/glut-3.7.6/test/glut/test27.c deleted file mode 100644 index cb8108b71505b7deabc27e4c08ca407315a0a50e..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test27.c +++ /dev/null @@ -1,105 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This tests creation of a subwindow that gets "popped" to - check if it also (erroneously) gets moved. GLUT 3.5 had - this bug (fixed in GLUT 3.6). */ - -#include -#include -#include -#include - -int parent, child; -int parentDrawn = 0, childDrawn = 0; - -/* ARGSUSED */ -void -failTest(int value) -{ - printf("FAIL: test27\n"); - exit(1); -} - -/* ARGSUSED */ -void -passTest(int value) -{ - printf("PASS: test27\n"); - exit(0); -} - -void -installFinish(void) -{ - if (childDrawn && parentDrawn) { - glutTimerFunc(1000, passTest, 0); - } -} - -void -output(GLfloat x, GLfloat y, char *string) -{ - int len, i; - - glRasterPos2f(x, y); - len = (int) strlen(string); - for (i = 0; i < len; i++) { - glutBitmapCharacter(GLUT_BITMAP_9_BY_15, string[i]); - } -} - -void -displayParent(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - parentDrawn++; - installFinish(); -} - -void -displayChild(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - output(-0.4, 0.5, "this"); - output(-0.8, 0.1, "subwindow"); - output(-0.8, -0.3, "should be"); - output(-0.7, -0.7, "centered"); - glFlush(); - childDrawn++; - installFinish(); -} - -int -main(int argc, char **argv) -{ - int possible; - - glutInit(&argc, argv); - glutInitWindowSize(300, 300); - glutInitWindowPosition(5, 5); - glutInitDisplayMode(GLUT_RGB); - parent = glutCreateWindow("test27"); - glClearColor(1.0, 0.0, 0.0, 0.0); - glutDisplayFunc(displayParent); - possible = glutGet(GLUT_DISPLAY_MODE_POSSIBLE); - if (possible != 1) { - printf("FAIL: glutGet returned display mode not possible: %d\n", possible); - exit(1); - } - child = glutCreateSubWindow(parent, 100, 100, 100, 100); - glClearColor(0.0, 1.0, 0.0, 0.0); - glColor3f(0.0, 0.0, 0.0); - glutDisplayFunc(displayChild); - glutPopWindow(); - - glutTimerFunc(10000, failTest, 0); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test27.dsp b/lib/glut-3.7.6/test/glut/test27.dsp deleted file mode 100644 index c054dadfbb3f2f1b39fa24456c7a3c1a0a7d34cf..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test27.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test27" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test27 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test27.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test27.mak" CFG="test27 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test27 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test27 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test27 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test27 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test27___Win32_Debug" -# PROP BASE Intermediate_Dir "test27___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test27 - Win32 Release" -# Name "test27 - Win32 Debug" -# Begin Source File - -SOURCE=.\test27.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test28.c b/lib/glut-3.7.6/test/glut/test28.c deleted file mode 100644 index bfeed802eb30b95310f2bc8d7bca9fbc3ad96c7c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test28.c +++ /dev/null @@ -1,56 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -char *fake_argv[] = -{ - "program", -#if 1 - "-iconic", -#endif - NULL}; - -int fake_argc = sizeof(fake_argv) / sizeof(char *) - 1; -int displayed = 0; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glutSwapBuffers(); - displayed = 1; -} - -void -timer(int value) -{ - if (displayed) { - printf("FAIL: test28\n"); - exit(1); - } - printf("PASS: test28\n"); - exit(0); -} - -int -main(int argc, char **argv) -{ - glutInit(&fake_argc, fake_argv); - if (fake_argc != 1) { - printf("FAIL: argument processing\n"); - exit(1); - } - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutCreateWindow("test28"); - glutDisplayFunc(display); - glutTimerFunc(2000, timer, 0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test28.dsp b/lib/glut-3.7.6/test/glut/test28.dsp deleted file mode 100644 index ab05f3488b57700e9849f345d4530c2203814954..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test28.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test28" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test28 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test28.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test28.mak" CFG="test28 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test28 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test28 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test28 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test28 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test28___Win32_Debug" -# PROP BASE Intermediate_Dir "test28___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib glu32.lib opengl32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test28 - Win32 Release" -# Name "test28 - Win32 Debug" -# Begin Source File - -SOURCE=.\test28.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test29.c b/lib/glut-3.7.6/test/glut/test29.c deleted file mode 100644 index a6e6b75f2f50ead8dd23575b322f3d2e82357136..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test29.c +++ /dev/null @@ -1,162 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* Test timer func resolution but WITHOUT an idle callback registered - (test2 is the same basic test, but it has an idle callback registered). */ - -#include -#include -#include - -int head, tail, diff; - -void -timer2(int value) -{ - if (value != 36) { - printf("FAIL: timer value wrong\n"); - exit(1); - } - printf("PASS: test2\n"); - exit(0); -} - -void -timer(int value) -{ - if (value != 42) { - printf("FAIL: timer value wrong\n"); - exit(1); - } - tail = glutGet(GLUT_ELAPSED_TIME); - diff = tail - head; - printf("diff = %d (%d - %d)\n", diff, tail, head); - if (diff > ((int) 500 * 1.2)) { - printf("THIS TEST IS TIME SENSITIVE; IF IT FAILS, TRY RUNNING IT AGAIN.\n"); - printf("FAIL: timer too late\n"); - exit(1); - } - if (diff < ((int) 500 * .9)) { - printf("THIS TEST IS TIME SENSITIVE; IF IT FAILS, TRY RUNNING IT AGAIN.\n"); - printf("FAIL: timer too soon\n"); - exit(1); - } - glutTimerFunc(100, timer2, 36); -} - -/* ARGSUSED */ -void -menuSelect(int value) -{ -} - -void -NeverVoid(void) -{ - printf("FAIL: NeverVoid should never be called\n"); - exit(1); -} - -/* ARGSUSED */ -void -NeverValue(int value) -{ - printf("FAIL: NeverValue most be NOT visible\n"); - exit(1); -} - -#define NUM 15 - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -int -main(int argc, char **argv) -{ - int win, menu; - int marray[NUM]; - int warray[NUM]; - int i, j; - GLint isIndex; - - glutInit(&argc, argv); - glutInitWindowPosition(10, 10); - glutInitWindowSize(200, 200); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - win = glutCreateWindow("test2"); - glGetIntegerv(GL_INDEX_MODE, &isIndex); - if (isIndex != 0) { - printf("FAIL: window should be RGBA\n"); - exit(1); - } - glutSetWindow(win); - glutDisplayFunc(display); - menu = glutCreateMenu(menuSelect); - glutSetMenu(menu); - glutReshapeFunc(NULL); - glutReshapeFunc(NULL); - glutKeyboardFunc(NULL); - glutKeyboardFunc(NULL); - glutMouseFunc(NULL); - glutMouseFunc(NULL); - glutMotionFunc(NULL); - glutMotionFunc(NULL); - glutVisibilityFunc(NULL); - glutVisibilityFunc(NULL); - glutMenuStateFunc(NULL); - glutMenuStateFunc(NULL); - glutMenuStatusFunc(NULL); - glutMenuStatusFunc(NULL); - glutSpecialFunc(NULL); - glutSpecialFunc(NULL); - glutSpaceballMotionFunc(NULL); - glutSpaceballMotionFunc(NULL); - glutSpaceballRotateFunc(NULL); - glutSpaceballRotateFunc(NULL); - glutSpaceballButtonFunc(NULL); - glutSpaceballButtonFunc(NULL); - glutButtonBoxFunc(NULL); - glutButtonBoxFunc(NULL); - glutDialsFunc(NULL); - glutDialsFunc(NULL); - glutTabletMotionFunc(NULL); - glutTabletMotionFunc(NULL); - glutTabletButtonFunc(NULL); - glutTabletButtonFunc(NULL); - for (i = 0; i < NUM; i++) { - marray[i] = glutCreateMenu(menuSelect); - warray[i] = glutCreateWindow("test"); - glutDisplayFunc(display); - for (j = 0; j < i; j++) { - glutAddMenuEntry("Hello", 1); - glutAddSubMenu("Submenu", menu); - } - if (marray[i] != glutGetMenu()) { - printf("FAIL: current menu not %d\n", marray[i]); - exit(1); - } - if (warray[i] != glutGetWindow()) { - printf("FAIL: current window not %d\n", warray[i]); - exit(1); - } - glutDisplayFunc(NeverVoid); - glutVisibilityFunc(NeverValue); - glutHideWindow(); - } - for (i = 0; i < NUM; i++) { - glutDestroyMenu(marray[i]); - glutDestroyWindow(warray[i]); - } - glutTimerFunc(500, timer, 42); - head = glutGet(GLUT_ELAPSED_TIME); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test3.c b/lib/glut-3.7.6/test/glut/test3.c deleted file mode 100644 index cb6e43b0c4a96dbb5b76668a00c2548303788dfd..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test3.c +++ /dev/null @@ -1,92 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -#define N 6 -#define M 6 - -int exposed[M * N]; -int ecount = 0; -int viewable[M * N]; -int vcount = 0; - -void -display(void) -{ - int win; - - win = glutGetWindow() - 1; - if (!exposed[win]) { - exposed[win] = 1; - ecount++; - } - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - if ((ecount == (M * N)) && (vcount == (M * N))) { - printf("PASS: test3\n"); - exit(0); - } -} - -/* ARGSUSED */ -void -view(int state) -{ - int win; - - win = glutGetWindow() - 1; - if (!viewable[win]) { - viewable[win] = 1; - vcount++; - } - if ((ecount == (M * N)) && (vcount == (M * N))) { - printf("PASS: test3\n"); - exit(0); - } -} - -void -timer(int value) -{ - if (value != 23) { - printf("FAIL: bad timer value\n"); - exit(1); - } - printf("FAIL: didn't get all expose and viewable calls in 45 seconds\n"); - exit(1); -} - -int -main(int argc, char **argv) -{ - char buf[100]; - int i, j; - - glutInit(&argc, argv); - glutInitWindowSize(10, 10); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); - for (i = 0; i < M; i++) { - for (j = 0; j < N; j++) { - exposed[i * N + j] = 0; - viewable[i * N + j] = 0; - glutInitWindowPosition(100 * i, 100 * j); - sprintf(buf, "%d\n", i * N + j + 1); - glutCreateWindow(buf); - glutDisplayFunc(display); - glutVisibilityFunc(view); - glClearColor(1.0, 0.0, 0.0, 1.0); - } - } - /* XXX Hopefully in 45 seconds, all the windows should - appear, or they probably won't ever appear! */ - glutTimerFunc(45 * 1000, timer, 23); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test3.dsp b/lib/glut-3.7.6/test/glut/test3.dsp deleted file mode 100644 index a3bc5b7608924ddc6728ba407940104c43a23459..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test3.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test3" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test3 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test3.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test3.mak" CFG="test3 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test3 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test3 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test3 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test3 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test3___Win32_Debug" -# PROP BASE Intermediate_Dir "test3___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test3 - Win32 Release" -# Name "test3 - Win32 Debug" -# Begin Source File - -SOURCE=.\test3.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test4.c b/lib/glut-3.7.6/test/glut/test4.c deleted file mode 100644 index 41bdcaaf92a11ab000e880a788c9679de9ec58aa..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test4.c +++ /dev/null @@ -1,60 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int ch = -2; -void *font = GLUT_STROKE_ROMAN; - -void -tick(void) -{ - ch += 1; - if (ch > 180) { - if (font == GLUT_STROKE_MONO_ROMAN) { - printf("PASS: test4\n"); - exit(0); - } - ch = -2; - font = GLUT_STROKE_MONO_ROMAN; - } - glutPostRedisplay(); -} - -void -display(void) -{ - glutIdleFunc(tick); - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glutStrokeCharacter(font, ch); - glPopMatrix(); - glutSwapBuffers(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); - glutInitWindowSize(200, 200); - glutCreateWindow("Test stroke fonts"); - if (glutGet(GLUT_WINDOW_COLORMAP_SIZE) != 0) { - printf("FAIL: bad RGBA colormap size\n"); - exit(1); - } - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(-50, 150, -50, 150); - glClearColor(0.0, 0.0, 0.0, 1.0); - glColor3f(1.0, 1.0, 1.0); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test4.dsp b/lib/glut-3.7.6/test/glut/test4.dsp deleted file mode 100644 index 6b28b88bdcde95a3b988623a5d111d509044740b..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test4.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test4" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test4 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test4.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test4.mak" CFG="test4 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test4 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test4 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test4 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test4 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test4___Win32_Debug" -# PROP BASE Intermediate_Dir "test4___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test4 - Win32 Release" -# Name "test4 - Win32 Debug" -# Begin Source File - -SOURCE=.\test4.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test5.c b/lib/glut-3.7.6/test/glut/test5.c deleted file mode 100644 index 2c8414ab25d236065eb0ab21b5bcf6a79a09e7f9..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test5.c +++ /dev/null @@ -1,133 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -GLfloat comp; -int mask = 0; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - mask |= 1 << glutGetWindow(); -} - -void -timeout(int value) -{ - if (value != 1) { - printf("FAIL: test5\n"); - exit(1); - } - if (mask != 0x6) { - printf("FAIL: test5\n"); - exit(1); - } - printf("PASS: test5\n"); - exit(0); -} - -int -main(int argc, char **argv) -{ - int win1, win2, size; - GLint isIndex; - - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_INDEX); - if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) { - printf("UNRESOLVED: test5 (your OpenGL lacks color index support)\n"); - exit(0); - } - glutInitWindowPosition(45, 45); - win1 = glutCreateWindow("CI test 1"); - glGetIntegerv(GL_INDEX_MODE, &isIndex); - if (isIndex == 0) { - printf("FAIL: test5\n"); - exit(1); - } - size = glutGet(GLUT_WINDOW_COLORMAP_SIZE); - if (size <= 1 || size > (1 << glutGet(GLUT_WINDOW_BUFFER_SIZE))) { - printf("FAIL: test5\n"); - exit(1); - } - glutSetColor(2, 1.0, 3.4, 0.5); - comp = glutGetColor(2, GLUT_RED); - if (comp != 1.0) { - printf("FAIL: test5\n"); - exit(1); - } - comp = glutGetColor(2, GLUT_GREEN); - if (comp != 1.0) { - printf("FAIL: test5\n"); - exit(1); - } - comp = glutGetColor(2, GLUT_BLUE); - if (comp != 0.5) { - printf("FAIL: test5\n"); - exit(1); - } - glutInitWindowPosition(450, 450); - win2 = glutCreateWindow("CI test 2"); - glutCopyColormap(win1); - if (glutGetColor(2, GLUT_RED) != 1.0) { - printf("FAIL: test5\n"); - exit(1); - } - if (glutGetColor(2, GLUT_GREEN) != 1.0) { - printf("FAIL: test5\n"); - exit(1); - } - if (glutGetColor(2, GLUT_BLUE) != 0.5) { - printf("FAIL: test5\n"); - exit(1); - } - glutSetColor(2, -1.0, 0.25, 0.75); - glutSetWindow(win1); - if (win1 != glutGetWindow()) { - printf("FAIL: test5\n"); - exit(1); - } - glutDisplayFunc(display); - if (glutGetColor(2, GLUT_RED) != 1.0) { - printf("FAIL: test5\n"); - exit(1); - } - if (glutGetColor(2, GLUT_GREEN) != 1.0) { - printf("FAIL: test5\n"); - exit(1); - } - if (glutGetColor(2, GLUT_BLUE) != 0.5) { - printf("FAIL: test5\n"); - exit(1); - } - glutSetWindow(win2); - if (win2 != glutGetWindow()) { - printf("FAIL: test5\n"); - exit(1); - } - if (glutGetColor(2, GLUT_RED) != 0.0) { - printf("FAIL: test5\n"); - exit(1); - } - if (glutGetColor(2, GLUT_GREEN) != 0.25) { - printf("FAIL: test5\n"); - exit(1); - } - if (glutGetColor(2, GLUT_BLUE) != 0.75) { - printf("FAIL: test5\n"); - exit(1); - } - glutTimerFunc(1500, timeout, 1); - glutDisplayFunc(display); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test5.dsp b/lib/glut-3.7.6/test/glut/test5.dsp deleted file mode 100644 index 510fad7494819cbbf6c47754fc7ad90144413ee2..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test5.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test5" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test5 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test5.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test5.mak" CFG="test5 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test5 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test5 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test5 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test5 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test5___Win32_Debug" -# PROP BASE Intermediate_Dir "test5___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test5 - Win32 Release" -# Name "test5 - Win32 Debug" -# Begin Source File - -SOURCE=.\test5.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test6.c b/lib/glut-3.7.6/test/glut/test6.c deleted file mode 100644 index d897c48b4c9ad2673222211c7583686603bf942c..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test6.c +++ /dev/null @@ -1,539 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1997. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* This is an interactive test (not automatically run by "make - test") that requires user interaction to verify that input - callbacks operate as expected. */ - -#include -#include -#include - -static int mouseButtons; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -void -time7(int value) -{ - if (value != 7) { - printf("FAIL: time7 expected 6\n"); - exit(1); - } - printf("PASS: test6\n"); - exit(0); -} - -void -mstatus(int state) -{ - printf("state: %d\n", state); -} - -void -mstatus2(int state, int x, int y) -{ - printf("state: %d, x=%d, y=%d\n", state, x, y); -} - -void -menu2(int value) -{ - printf("menu item selected: %d\n", value); - if (value != 46) { - printf("FAIL: time6 expected 45\n"); - exit(1); - } - glutDestroyMenu(glutGetMenu()); - glutDestroyWindow(glutGetWindow()); - glutTimerFunc(1000, time7, 7); -} - -void -time6(int value) -{ - if (value != 6) { - printf("FAIL: time6 expected 6\n"); - exit(1); - } - glutMenuStateFunc(mstatus); - glutMenuStatusFunc(mstatus2); - glutCreateMenu(menu2); - glutAddMenuEntry("name", 46); - glutAttachMenu(GLUT_LEFT_BUTTON); - glutAttachMenu(GLUT_MIDDLE_BUTTON); - glutAttachMenu(GLUT_RIGHT_BUTTON); - printf("Pop up menu with any mouse button and select the item\n"); -} - -int estate = 0; - -void -entry(int state) -{ - printf("entry: %s\n", state == GLUT_LEFT ? "left" : "entered"); - switch (estate) { - case 0: - if (state == GLUT_LEFT) - estate++; - break; - case 1: - if (state == GLUT_ENTERED) - estate++; - glutTimerFunc(1000, time6, 6); - glutEntryFunc(NULL); - break; - } -} - -void -time5(int value) -{ - if (value != 5) { - printf("FAIL: time5 expected 5\n"); - exit(1); - } - glutEntryFunc(entry); - printf("In the black window, leave it, then enter it\n"); -} - -void -motion(int x, int y) -{ - printf("motion x=%d, y=%d\n", x, y); - glutMotionFunc(NULL); - glutTimerFunc(1000, time5, 5); -} - -void -time4(int value) -{ - if (value != 4) { - printf("FAIL: time4 expected 4\n"); - exit(1); - } - glutMotionFunc(motion); - printf("In the black window, move mouse with some button held down\n"); -} - -void -passive(int x, int y) -{ - printf("passive x=%d, y=%d\n", x, y); - glutTimerFunc(1000, time4, 4); - glutPassiveMotionFunc(NULL); -} - -void -time3(int value) -{ - if (value != 3) { - printf("FAIL: time3 expected 3\n"); - exit(1); - } - glutPassiveMotionFunc(passive); - printf("In the black window, mouse the mouse around with NO buttons down\n"); -} - -static int mode = 0; - -void -mouse(int button, int state, int x, int y) -{ - printf("but=%d, state=%d, x=%d, y=%d, modifiers=0x%x\n", - button, state, x, y, glutGetModifiers()); - switch (mode) { - case 0: - if (button != GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - printf("FAIL: mouse left down not found\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: mouse expected no modifier\n"); - exit(1); - } - mode++; - break; - case 1: - if (button != GLUT_LEFT_BUTTON && state == GLUT_UP) { - printf("FAIL: mouse left up not found\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: mouse expected no modifier\n"); - exit(1); - } - switch (mouseButtons) { - case 1: - mode = 6; /* Skip right or middle button tests. */ - printf("In the black window, please click: Shift-left, Ctrl-left, then Alt-left (in that order)\n"); - break; - case 2: - mode = 4; /* Continue with right button test - (skip middle button). */ - break; - case 3: - mode = 2; /* Continue with middle button test. */ - break; - } - break; - case 2: - if (button != GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) { - printf("FAIL: mouse center down not found\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: mouse expected no modifier\n"); - exit(1); - } - mode++; - break; - case 3: - if (button != GLUT_MIDDLE_BUTTON && state == GLUT_UP) { - printf("FAIL: mouse center up not found\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: mouse expected no modifier\n"); - exit(1); - } - mode++; - break; - case 4: - if (button != GLUT_RIGHT_BUTTON && state == GLUT_DOWN) { - printf("FAIL: mouse right down not found\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: mouse expected no modifier\n"); - exit(1); - } - mode++; - break; - case 5: - if (button != GLUT_RIGHT_BUTTON && state == GLUT_UP) { - printf("FAIL: mouse right up not found\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: mouse expected no modifier\n"); - exit(1); - } - printf("In the black window, please click: Shift-left, Ctrl-left, then Alt-left (in that order)\n"); - mode++; - break; - case 6: - if (button != GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - printf("FAIL: mouse right down not found\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_SHIFT) { - printf("FAIL: mouse expected shift modifier\n"); - exit(1); - } - mode++; - break; - case 7: - if (button != GLUT_LEFT_BUTTON && state == GLUT_UP) { - printf("FAIL: mouse right down not found\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_SHIFT) { - printf("FAIL: mouse expected shift modifier\n"); - exit(1); - } - mode++; - break; - case 8: - if (button != GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - printf("FAIL: mouse right down not found\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_CTRL) { - printf("FAIL: mouse expected ctrl modifier\n"); - exit(1); - } - mode++; - break; - case 9: - if (button != GLUT_LEFT_BUTTON && state == GLUT_UP) { - printf("FAIL: mouse right down not found\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_CTRL) { - printf("FAIL: mouse expected ctrl modifier\n"); - exit(1); - } - mode++; - break; - case 10: - if (button != GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - printf("FAIL: mouse right down not found\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_ALT) { - printf("FAIL: mouse expected alt modifier\n"); - exit(1); - } - mode++; - break; - case 11: - if (button != GLUT_LEFT_BUTTON && state == GLUT_UP) { - printf("FAIL: mouse right down not found\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_ALT) { - printf("FAIL: mouse expected alt modifier\n"); - exit(1); - } - glutTimerFunc(1000, time3, 3); - glutMouseFunc(NULL); - mode++; - break; - default: - printf("FAIL: mouse called with bad mode: %d\n", mode); - exit(1); - } -} - -/* ARGSUSED */ -void -menu(int selection) -{ - printf("FAIL: menu callback should never be called\n"); - exit(1); -} - -void -time2(int value) -{ - if (value != 2) { - printf("FAIL: time2 expected 2\n"); - exit(1); - } - glutMouseFunc(mouse); - - /* By attaching and detaching a menu to each button, make - sure button usage for menus does not mess up normal button - - callback. */ - glutCreateMenu(menu); - glutAttachMenu(GLUT_RIGHT_BUTTON); - glutAttachMenu(GLUT_MIDDLE_BUTTON); - glutAttachMenu(GLUT_LEFT_BUTTON); - glutDetachMenu(GLUT_RIGHT_BUTTON); - glutDetachMenu(GLUT_MIDDLE_BUTTON); - glutDetachMenu(GLUT_LEFT_BUTTON); - glutDestroyMenu(glutGetMenu()); - - switch (mouseButtons) { - case 3: - printf("In the black window, please click: left, then middle, then right buttons (in that order)\n"); - break; - case 2: - printf("In the black window, please click: left, then right buttons (in that order)\n"); - break; - case 1: - printf("In the black window, please click: left button\n"); - break; - case 0: - /* No mouse buttons?? Skip all subsequent tests since they - involve the mouse. */ - glutTimerFunc(1000, time7, 7); - glutMouseFunc(NULL); - break; - } -} - -int smode = 0; - -/* XXX Warning, sometimes an X window manager will intercept - some keystroke like Alt-F2. Be careful about window manager - interference when running test6. */ - -void -special(int key, int x, int y) -{ - printf("key=%d, x=%d, y=%d, modifiers=0x%x\n", - key, x, y, glutGetModifiers()); - switch (smode) { - case 0: - if (key != GLUT_KEY_F2) { - printf("FAIL: special expected F2\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: special expected no modifier\n"); - exit(1); - } - break; - case 1: - if (key != GLUT_KEY_F2) { - printf("FAIL: special expected F2\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_SHIFT) { - printf("FAIL: special expected shift modifier\n"); - exit(1); - } - break; - case 2: - if (key != GLUT_KEY_F2) { - printf("FAIL: special expected F2\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_CTRL) { - printf("FAIL: special expected ctrl modifier\n"); - exit(1); - } - break; - case 3: - if (key != GLUT_KEY_F2) { - printf("FAIL: special expected F2\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_ALT) { - printf("FAIL: special expected alt modifier\n"); - exit(1); - } - glutSpecialFunc(NULL); - glutTimerFunc(1000, time2, 2); - break; - default: - printf("FAIL: special called with bad mode: %d\n", smode); - exit(1); - } - smode++; -} - -void -time1(int value) -{ - printf("PLEASE EXPECT TO SEE A WARNING ON THE NEXT LINE:\n"); - glutGetModifiers(); - printf("DID YOU SEE A WARNING? IT IS AN ERROR NOT TO SEE ONE.\n"); - if (value != 1) { - printf("FAIL: time1 expected 1\n"); - exit(1); - } - glutSpecialFunc(special); - printf("In the black window, please press: F2, Shift-F2, Ctrl-F2, then Alt-F2\n"); -} -int kmode = 0; - -void -keyboard(unsigned char c, int x, int y) -{ - printf("char=%d, x=%d, y=%d, modifiers=0x%x\n", - c, x, y, glutGetModifiers()); - switch (kmode) { - case 0: - if (c != 'g') { - printf("FAIL: keyboard expected g\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: keyboard expected no modifier\n"); - exit(1); - } - break; - case 1: - if (c != 'G') { - printf("FAIL: keyboard expected G\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_SHIFT) { - printf("FAIL: keyboard expected shift modifier\n"); - exit(1); - } - break; - case 2: - if (c != 0x7) { /* Bell, Ctrl-g */ - printf("FAIL: keyboard expected g\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_CTRL) { - printf("FAIL: keyboard expected ctrl modifier\n"); - exit(1); - } - break; - case 3: - if (c != 'g') { - printf("FAIL: keyboard expected g\n"); - exit(1); - } - if (glutGetModifiers() != GLUT_ACTIVE_ALT) { - printf("FAIL: keyboard expected alt modifier\n"); - exit(1); - } - break; - case 4: - if (c != '\b') { - printf("FAIL: keyboard expected BACKSPACE\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: keyboard expected alt modifier\n"); - exit(1); - } - break; - case 5: - if (c != 127) { - printf("FAIL: keyboard expected DEL\n"); - exit(1); - } - if (glutGetModifiers() != 0) { - printf("FAIL: keyboard expected no modifier\n"); - exit(1); - } - glutKeyboardFunc(NULL); - glutTimerFunc(1000, time1, 1); - break; - default: - printf("FAIL: keyboard called with bad mode: %d\n", kmode); - exit(1); - } - kmode++; -} - -void -time0(int value) -{ - if (value != 0) { - printf("FAIL: time0 expected 0\n"); - exit(1); - } - glutKeyboardFunc(keyboard); - printf("In the black window, please press: g, G, Ctrl-g, Alt-g, Backspace, Delete\n"); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - mouseButtons = glutDeviceGet(GLUT_NUM_MOUSE_BUTTONS); - if (mouseButtons < 0) { - printf("FAIL: negative mouse buttons? mouseButtons=%d\n", - mouseButtons); - exit(1); - } - if (mouseButtons > 3) { - printf("More than 3 mouse buttons (ok). mouseButtons=%d\n", - mouseButtons); - mouseButtons = 3; /* Testing only of 3 mouse buttons. */ - } - glutCreateWindow("test"); - glutDisplayFunc(display); - glutTimerFunc(1000, time0, 0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test6.dsp b/lib/glut-3.7.6/test/glut/test6.dsp deleted file mode 100644 index 4f36bdeecd97e24a82680e93cc2bff6341774423..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test6.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test6" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test6 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test6.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test6.mak" CFG="test6 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test6 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test6 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test6 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test6 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test6___Win32_Debug" -# PROP BASE Intermediate_Dir "test6___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test6 - Win32 Release" -# Name "test6 - Win32 Debug" -# Begin Source File - -SOURCE=.\test6.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test7.c b/lib/glut-3.7.6/test/glut/test7.c deleted file mode 100644 index 15d8f95edb7e61d7aa53c01630ae69573507da37..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test7.c +++ /dev/null @@ -1,199 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int w1, w2; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); -} - -void -time9(int value) -{ - if (value != 9) { - printf("FAIL: time9 expected 9\n"); - exit(1); - } - printf("PASS: test7\n"); - exit(0); -} - -void -time8(int value) -{ - if (value != 8) { - printf("FAIL: time8 expected 8\n"); - exit(1); - } - printf("window 1 to 350x250+20+200; window 2 to 50x150+50+50\n"); - glutSetWindow(w1); - glutReshapeWindow(350, 250); - glutPositionWindow(20, 200); - glutSetWindow(w2); - glutReshapeWindow(50, 150); - glutPositionWindow(50, 50); - glutTimerFunc(1000, time9, 9); -} - -void -time7(int value) -{ - if (value != 7) { - printf("FAIL: time7 expected 7\n"); - exit(1); - } - printf("window 1 fullscreen; window 2 popped on top\n"); - glutSetWindow(w1); - glutShowWindow(); - glutFullScreen(); - glutSetWindow(w2); - glutShowWindow(); - glutPopWindow(); - /* It can take a long time for glutFullScreen to really happen - on a Windows 95 PC. I believe this has to do with the memory - overhead for resizing a huge soft color and/or ancillary buffers. */ - glutTimerFunc(6000, time8, 8); -} - -void -time6(int value) -{ - if (value != 6) { - printf("FAIL: time6 expected 6\n"); - exit(1); - } - printf("change icon tile for both windows\n"); - glutSetWindow(w1); - glutSetIconTitle("icon1"); - glutSetWindow(w2); - glutSetIconTitle("icon2"); - glutTimerFunc(1000, time7, 7); -} - -void -time5(int value) -{ - if (value != 5) { - printf("FAIL: time5 expected 5\n"); - exit(1); - } - glutSetWindow(w1); - if (glutGet(GLUT_WINDOW_X) != 20) { - printf("WARNING: x position expected to be 20\n"); - } - if (glutGet(GLUT_WINDOW_Y) != 20) { - printf("WARNING: y position expected to be 20\n"); - } - if (glutGet(GLUT_WINDOW_WIDTH) != 250) { - printf("WARNING: width expected to be 250\n"); - } - if (glutGet(GLUT_WINDOW_HEIGHT) != 250) { - printf("WARNING: height expected to be 250\n"); - } - glutSetWindow(w2); - if (glutGet(GLUT_WINDOW_X) != 250) { - printf("WARNING: x position expected to be 250\n"); - } - if (glutGet(GLUT_WINDOW_Y) != 250) { - printf("WARNING: y position expected to be 250\n"); - } - if (glutGet(GLUT_WINDOW_WIDTH) != 150) { - printf("WARNING: width expected to be 150\n"); - } - if (glutGet(GLUT_WINDOW_HEIGHT) != 150) { - printf("WARNING: height expected to be 150\n"); - } - printf("iconify both windows\n"); - glutSetWindow(w1); - glutIconifyWindow(); - glutSetWindow(w2); - glutIconifyWindow(); - glutTimerFunc(1000, time6, 6); -} - -void -time4(int value) -{ - if (value != 4) { - printf("FAIL: time4 expected 4\n"); - exit(1); - } - printf("reshape and reposition window\n"); - glutSetWindow(w1); - glutReshapeWindow(250, 250); - glutPositionWindow(20, 20); - glutSetWindow(w2); - glutReshapeWindow(150, 150); - glutPositionWindow(250, 250); - glutTimerFunc(1000, time5, 5); -} - -void -time3(int value) -{ - if (value != 3) { - printf("FAIL: time3 expected 3\n"); - exit(1); - } - printf("show both windows again\n"); - glutSetWindow(w1); - glutShowWindow(); - glutSetWindow(w2); - glutShowWindow(); - glutTimerFunc(1000, time4, 4); -} - -void -time2(int value) -{ - if (value != 2) { - printf("FAIL: time2 expected 2\n"); - exit(1); - } - printf("hiding w1; iconify w2\n"); - glutSetWindow(w1); - glutHideWindow(); - glutSetWindow(w2); - glutIconifyWindow(); - glutTimerFunc(1000, time3, 3); -} - -void -time1(int value) -{ - if (value != 1) { - printf("FAIL: time1 expected 1\n"); - exit(1); - } - printf("changing window titles\n"); - glutSetWindow(w1); - glutSetWindowTitle("changed title"); - glutSetWindow(w2); - glutSetWindowTitle("changed other title"); - glutTimerFunc(2000, time2, 2); -} - -int -main(int argc, char **argv) -{ - glutInitWindowPosition(20, 20); - glutInit(&argc, argv); - w1 = glutCreateWindow("test 1"); - glutDisplayFunc(display); - glutInitWindowPosition(200, 200); - w2 = glutCreateWindow("test 2"); - glutDisplayFunc(display); - glutTimerFunc(1000, time1, 1); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test7.dsp b/lib/glut-3.7.6/test/glut/test7.dsp deleted file mode 100644 index 20be5da41188b6da0211a2b5df3897ac71252203..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test7.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test7" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test7 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test7.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test7.mak" CFG="test7 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test7 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test7 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test7 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test7 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test7___Win32_Debug" -# PROP BASE Intermediate_Dir "test7___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test7 - Win32 Release" -# Name "test7 - Win32 Debug" -# Begin Source File - -SOURCE=.\test7.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test8.c b/lib/glut-3.7.6/test/glut/test8.c deleted file mode 100644 index 442ad38f3a28a187848569b0f1b69f3330af7f65..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test8.c +++ /dev/null @@ -1,164 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int main_w, w[4], win; -int num; - -/* ARGSUSED */ -void -time2(int value) -{ - printf("PASS: test8\n"); - exit(0); -} - -/* ARGSUSED */ -void -time1(int value) -{ - glutSetWindow(w[1]); - glutIdleFunc(NULL); - glutKeyboardFunc(NULL); - glutSetWindow(w[0]); - glutIdleFunc(NULL); /* redundant */ - glutKeyboardFunc(NULL); - glutSetWindow(main_w); - glutIdleFunc(NULL); /* redundant */ - glutKeyboardFunc(NULL); - glutDestroyWindow(w[1]); - glutDestroyWindow(w[0]); - glutDestroyWindow(main_w); - glutTimerFunc(500, time2, 0); -} - -void -display(void) -{ -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - if (glutGet(GLUT_INIT_WINDOW_WIDTH) != 300) { - printf("FAIL: init width wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_WINDOW_HEIGHT) != 300) { - printf("FAIL: init height wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_WINDOW_X) != -1) { - printf("FAIL: init x wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_WINDOW_Y) != -1) { - printf("FAIL: init y wrong\n"); - exit(1); - } - if (glutGet(GLUT_INIT_DISPLAY_MODE) != (GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH)) { - printf("FAIL: init display mode wrong\n"); - exit(1); - } - glutInitDisplayMode(GLUT_RGB); - main_w = glutCreateWindow("main"); - glutDisplayFunc(display); - num = glutGet(GLUT_DISPLAY_MODE_POSSIBLE); - if (num != 1) { - printf("FAIL: glutGet returned display mode not possible: %d\n", num); - exit(1); - } - num = glutGet(GLUT_WINDOW_NUM_CHILDREN); - if (0 != num) { - printf("FAIL: glutGet returned wrong # children: %d\n", num); - exit(1); - } - w[0] = glutCreateSubWindow(main_w, 10, 10, 20, 20); - glutDisplayFunc(display); - num = glutGet(GLUT_WINDOW_PARENT); - if (main_w != num) { - printf("FAIL: glutGet returned bad parent: %d\n", num); - exit(1); - } - glutSetWindow(main_w); - num = glutGet(GLUT_WINDOW_NUM_CHILDREN); - if (1 != num) { - printf("FAIL: glutGet returned wrong # children: %d\n", num); - exit(1); - } - w[1] = glutCreateSubWindow(main_w, 40, 10, 20, 20); - glutDisplayFunc(display); - num = glutGet(GLUT_WINDOW_PARENT); - if (main_w != num) { - printf("FAIL: glutGet returned bad parent: %d\n", num); - exit(1); - } - glutSetWindow(main_w); - num = glutGet(GLUT_WINDOW_NUM_CHILDREN); - if (2 != num) { - printf("FAIL: glutGet returned wrong # children: %d\n", num); - exit(1); - } - w[2] = glutCreateSubWindow(main_w, 10, 40, 20, 20); - glutDisplayFunc(display); - num = glutGet(GLUT_WINDOW_PARENT); - if (main_w != num) { - printf("FAIL: glutGet returned bad parent: %d\n", num); - exit(1); - } - glutSetWindow(main_w); - num = glutGet(GLUT_WINDOW_NUM_CHILDREN); - if (3 != num) { - printf("FAIL: glutGet returned wrong # children: %d\n", num); - exit(1); - } - w[3] = glutCreateSubWindow(main_w, 40, 40, 20, 20); - glutDisplayFunc(display); - num = glutGet(GLUT_WINDOW_PARENT); - if (main_w != num) { - printf("FAIL: glutGet returned bad parent: %d\n", num); - exit(1); - } - glutSetWindow(main_w); - num = glutGet(GLUT_WINDOW_NUM_CHILDREN); - if (4 != num) { - printf("FAIL: glutGet returned wrong # children: %d\n", num); - exit(1); - } - glutDestroyWindow(w[3]); - num = glutGet(GLUT_WINDOW_NUM_CHILDREN); - if (3 != num) { - printf("FAIL: glutGet returned wrong # children: %d\n", num); - exit(1); - } - w[3] = glutCreateSubWindow(main_w, 40, 40, 20, 20); - glutDisplayFunc(display); - glutCreateSubWindow(w[3], 40, 40, 20, 20); - glutDisplayFunc(display); - glutCreateSubWindow(w[3], 40, 40, 20, 20); - glutDisplayFunc(display); - win = glutCreateSubWindow(w[3], 40, 40, 20, 20); - glutDisplayFunc(display); - glutCreateSubWindow(win, 40, 40, 20, 20); - glutDisplayFunc(display); - win = glutCreateSubWindow(w[3], 40, 40, 20, 20); - glutDisplayFunc(display); - glutCreateSubWindow(win, 40, 40, 20, 20); - glutDisplayFunc(display); - glutDestroyWindow(w[3]); - - w[3] = glutCreateSubWindow(main_w, 40, 40, 20, 20); - glutDisplayFunc(display); - - glutTimerFunc(500, time1, 0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test8.dsp b/lib/glut-3.7.6/test/glut/test8.dsp deleted file mode 100644 index 9dcbdb27eaddfe300174843ce7523605e36c1d80..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test8.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test8" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test8 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test8.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test8.mak" CFG="test8 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test8 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test8 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test8 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test8 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test8___Win32_Debug" -# PROP BASE Intermediate_Dir "test8___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test8 - Win32 Release" -# Name "test8 - Win32 Debug" -# Begin Source File - -SOURCE=.\test8.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/test9.c b/lib/glut-3.7.6/test/glut/test9.c deleted file mode 100644 index 8b77409933b41c512a96b3a6bb25e393ed91e84a..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test9.c +++ /dev/null @@ -1,145 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -#include -#include -#include - -int main_w, w1, w2, w3, w4; - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glutSwapBuffers(); -} - -/* ARGSUSED */ -void -time8(int value) -{ - printf("PASS: test9\n"); - exit(0); -} - -/* ARGSUSED */ -void -time7(int value) -{ - glutDestroyWindow(main_w); - glutTimerFunc(500, time8, 0); -} - -/* ARGSUSED */ -void -time6(int value) -{ - glutDestroyWindow(w1); - glutTimerFunc(500, time7, 0); - glutInitDisplayMode(GLUT_INDEX); - if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) { - printf("UNRESOLVED: test9 (your OpenGL lacks color index support)\n"); - exit(0); - } - w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10); - glutDisplayFunc(display); - w2 = glutCreateSubWindow(w1, 10, 10, 30, 30); - glutDisplayFunc(display); - w3 = glutCreateSubWindow(w2, 10, 10, 50, 50); - glutDisplayFunc(display); - glutInitDisplayMode(GLUT_RGB); - w4 = glutCreateSubWindow(w3, 10, 10, 70, 70); - glClearColor(1.0, 1.0, 1.0, 1.0); - glutDisplayFunc(display); -} - -/* ARGSUSED */ -void -time5(int value) -{ - w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10); - glutDisplayFunc(display); - w2 = glutCreateSubWindow(w1, 10, 10, 30, 30); - glutDisplayFunc(display); - w3 = glutCreateSubWindow(w2, 10, 10, 50, 50); - glutDisplayFunc(display); - glutInitDisplayMode(GLUT_RGB); - w4 = glutCreateSubWindow(w3, 10, 10, 70, 70); - glClearColor(1.0, 1.0, 1.0, 1.0); - glutDisplayFunc(display); - glutTimerFunc(500, time6, 0); -} - -/* ARGSUSED */ -void -time4(int value) -{ - glutDestroyWindow(w4); - glutTimerFunc(500, time5, 0); -} - -/* ARGSUSED */ -void -time3(int value) -{ - glutDestroyWindow(w3); - glutTimerFunc(500, time4, 0); -} - -/* ARGSUSED */ -void -time2(int value) -{ - glutDestroyWindow(w2); - glutTimerFunc(500, time3, 0); -} - -/* ARGSUSED */ -void -time1(int value) -{ - glutDestroyWindow(w1); - glutTimerFunc(500, time2, 0); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitDisplayMode(GLUT_RGB); - main_w = glutCreateWindow("test9"); - glClearColor(0.0, 0.0, 0.0, 0.0); /* black */ - glutDisplayFunc(display); - glutInitDisplayMode(GLUT_INDEX); - if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) { - printf("UNRESOLVED: test9 (your OpenGL lacks color index support)\n"); - exit(0); - } - w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10); - glutSetColor(1, 1.0, 0.0, 0.0); /* red */ - glutSetColor(2, 0.0, 1.0, 0.0); /* green */ - glutSetColor(3, 0.0, 0.0, 1.0); /* blue */ - glClearIndex(1); - glutDisplayFunc(display); - w2 = glutCreateSubWindow(main_w, 30, 30, 10, 10); - glutCopyColormap(w1); - glClearIndex(2); - glutDisplayFunc(display); - w3 = glutCreateSubWindow(main_w, 50, 50, 10, 10); - glutCopyColormap(w1); - glClearIndex(3); - glutDisplayFunc(display); - w4 = glutCreateSubWindow(main_w, 70, 70, 10, 10); - glutCopyColormap(w1); - glutSetColor(3, 1.0, 1.0, 1.0); /* white */ - glClearIndex(3); - glutDisplayFunc(display); - glutTimerFunc(750, time1, 0); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/test9.dsp b/lib/glut-3.7.6/test/glut/test9.dsp deleted file mode 100644 index e7e11dc181ff51c6f5cd831a3ea9cedc41ffac87..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/test9.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test9" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=test9 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "test9.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "test9.mak" CFG="test9 - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "test9 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "test9 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test9 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "test9 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "test9___Win32_Debug" -# PROP BASE Intermediate_Dir "test9___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "test9 - Win32 Release" -# Name "test9 - Win32 Debug" -# Begin Source File - -SOURCE=.\test9.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/tests.dsp b/lib/glut-3.7.6/test/glut/tests.dsp deleted file mode 100644 index ad461645b44f47dec03defec68dd3de8c168145f..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/tests.dsp +++ /dev/null @@ -1,86 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tests" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tests - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tests.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tests.mak" CFG="tests - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tests - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tests - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tests - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "tests - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "tests___Win32_Debug" -# PROP BASE Intermediate_Dir "tests___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "tests - Win32 Release" -# Name "tests - Win32 Debug" -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/glut/timer_test.c b/lib/glut-3.7.6/test/glut/timer_test.c deleted file mode 100644 index 5a227641f68fd0cdf8daa3489e01ac37ab64ac9d..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/timer_test.c +++ /dev/null @@ -1,68 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1996. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -/* timer_test is supposed to demonstrate that window system - event related callbacks (like the keyboard callback) do not - "starve out" the dispatching of timer callbacks. Run this - program and hold down the space bar. The correct behavior - (assuming the system does autorepeat) is interleaved "key is - 32" and "timer called" messages. If you don't see "timer - called" messages, that's a problem. This problem exists in - GLUT implementations through GLUT 3.2. */ - -#include -#include - -#ifdef _WIN32 -#include -#define sleep(x) Sleep(1000 * x) -#else -#include -#endif - -#include - -void -display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); -} - -/* ARGSUSED */ -void -timer(int value) -{ - printf("timer called\n"); - glutTimerFunc(500, timer, 0); -} - -/* ARGSUSED1 */ -void -keyboard(unsigned char k, int x, int y) -{ - static int beenhere = 0; - - if (!beenhere) { - glutTimerFunc(500, timer, 0); - beenhere = 1; - } - printf("key is %d\n", k); - sleep(1); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutCreateWindow("timer test"); - glClearColor(0.49, 0.62, 0.75, 0.0); - glutDisplayFunc(display); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/glut/timer_test.dsp b/lib/glut-3.7.6/test/glut/timer_test.dsp deleted file mode 100644 index 0081e8bdf166281565e77a33131bbad4aa8fec06..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/glut/timer_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="timer_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=timer_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "timer_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "timer_test.mak" CFG="timer_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "timer_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "timer_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "timer_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "timer_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "timer_test - Win32 Release" -# Name "timer_test - Win32 Debug" -# Begin Source File - -SOURCE=.\timer_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/mui/Imakefile b/lib/glut-3.7.6/test/mui/Imakefile deleted file mode 100644 index 4130dc593c69c582f128146c5e79114f1d0f83b1..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/mui/Imakefile +++ /dev/null @@ -1,17 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1997. */ - -#include "../../Glut.cf" - -TARGETS = mui_test multi_test - -SRCS = mui_test.c multi_test.c - -AllTarget($(TARGETS)) - -MuiTestProgramTarget(mui_test) -MuiTestProgramTarget(multi_test) - -test: $(TARGETS) - -DependTarget() diff --git a/lib/glut-3.7.6/test/mui/mui_test.c b/lib/glut-3.7.6/test/mui/mui_test.c deleted file mode 100644 index 2d35f7c2e13b7a19ff47200f53d016ec3681bea5..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/mui/mui_test.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include - -extern int mui_singlebuffered; - -char *strs[] = { "Line 1", "Line 2", "Longer line 3", "Very, very, very long line number four", - "Line 5", "Sixth line", "Seventh line", "Line number 8", "9", "10", "The eleventh line", - "line 12", "Line number 13", "Quite long line 14", "15", - "Line 1", "Line 2", "Longer line 3", "Very, very, very long line number four", - "Line 5", "Sixth line", "Seventh line", "Line number 8", "9", "10", "The eleventh line", - "line 12", "Line number 13", "Quite long line 14", "15", 0, }; - -muiObject *b1, *b2, *b3, *rb1, *rb2, *rb3, *t, *t1, *l, *l1, *vs, *tl; -muiObject *trb1, *trb2, *trb3, *pd, *hs; - -int M1, M2, M3; /* menus */ - -void controltltop(muiObject *obj, enum muiReturnValue value) -{ - float sliderval; - - if ((value != MUI_SLIDER_RETURN) && (value != MUI_SLIDER_THUMB)) return; - sliderval = muiGetVSVal(obj); - muiSetTLTop(tl, sliderval); -} - -#define THUMBHEIGHT 20 -#define ARROWSPACE 40 - -void menucallback(int x) -{ - printf("menu callback: %d\n", x); -} - -void maketestmenus(void) -{ - M1 = glutCreateMenu(menucallback); - glutAddMenuEntry("Open", 1); - glutAddMenuEntry("Close", 2); - glutAddMenuEntry("Read", 3); - - M2 = glutCreateMenu(menucallback); - glutAddMenuEntry("Edit", 4); - glutAddMenuEntry("Cut", 5); - glutAddMenuEntry("Paste", 6); - - M3 = glutCreateMenu(menucallback); - glutAddMenuEntry("Help1", 7); - glutAddMenuEntry("Help2", 8); - glutAddMenuEntry("Help3", 9); - -} - -void bcallback(muiObject *obj, enum muiReturnValue r) -{ - obj = obj; r = r; /* for lint's sake */ - printf("Test 3 callback\n"); -} - -void maketestui(void) -{ - int xmin, ymin, xmax, ymax; - - maketestmenus(); - muiNewUIList(1); /* makes an MUI display list (number 1) */ - b1 = muiNewButton(10, 100, 10, 35); - b2 = muiNewButton(10, 100, 40, 65); - b3 = muiNewButton(10, 100, 70, 95); - rb1 = muiNewRadioButton(10, 380); - muiLoadButton(rb1, "Radio1"); - rb2 = muiNewRadioButton(10, 350); - muiLoadButton(rb2, "Radio2"); - rb3 = muiNewRadioButton(10, 320); - muiLoadButton(rb3, "Radio3"); - muiLinkButtons(rb1, rb2); - muiLinkButtons(rb2, rb3); - trb1 = muiNewTinyRadioButton(10, 450); - muiLoadButton(trb1, "TRadio1"); - trb2 = muiNewTinyRadioButton(10, 430); - muiLoadButton(trb2, "TRadio2"); - trb3 = muiNewTinyRadioButton(10, 410); - muiLoadButton(trb3, "TRadio3"); - muiLinkButtons(trb1, trb2); - muiLinkButtons(trb2, trb3); - t = muiNewTextbox(110, 250, 50); - muiSetActive(t, 1); - t1 = muiNewTextbox(110, 270, 20); - l = muiNewLabel(110, 85, "Label"); - l1 = muiNewBoldLabel(110, 110, "Bold Label"); - tl = muiNewTextList(20, 120, 200, 9); - muiGetObjectSize(tl, &xmin, &ymin, &xmax, &ymax); - vs = muiNewVSlider(xmax, ymin+2, ymax, 0, THUMBHEIGHT); - hs = muiNewHSlider(20, 290, 280, 0, THUMBHEIGHT); - muiSetVSValue(vs, 1.0); - muiSetVSArrowDelta(vs, (ymax-ymin-10-THUMBHEIGHT-ARROWSPACE)/((sizeof strs)/(sizeof (char *))-9)); - muiLoadButton(b1, "Test"); - muiLoadButton(b2, "Test22"); - muiLoadButton(b3, "Test3"); - muiSetCallback(b3, bcallback); - pd = muiNewPulldown(); - muiAddPulldownEntry(pd, "File", M1, 0); - muiAddPulldownEntry(pd, "Edit", M2, 0); - muiAddPulldownEntry(pd, "Help", M3, 1); - muiSetTLStrings(tl, strs); - muiSetCallback(vs, controltltop); -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - if (argc > 1) mui_singlebuffered = 1; - glutInitWindowPosition(100, 100); - glutInitWindowSize(300, 500); - if (mui_singlebuffered) - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE ); - else - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow("test"); - maketestui(); - muiInit(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/mui/mui_test.dsp b/lib/glut-3.7.6/test/mui/mui_test.dsp deleted file mode 100644 index 8505687619c0cc4fe4d21d19cae16968b8c42aa7..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/mui/mui_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mui_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mui_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mui_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mui_test.mak" CFG="mui_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mui_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mui_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mui_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "mui_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "mui_test___Win32_Debug" -# PROP BASE Intermediate_Dir "mui_test___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "mui_test - Win32 Release" -# Name "mui_test - Win32 Debug" -# Begin Source File - -SOURCE=.\mui_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/mui/multi_test.c b/lib/glut-3.7.6/test/mui/multi_test.c deleted file mode 100644 index 1e7bdf100a1c8b74553577de9c2ea9c7d3da5989..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/mui/multi_test.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include -#include -#include - -extern int mui_singlebuffered; - -muiObject *b1, *b2, *b3; - -void bcallback(muiObject *obj, enum muiReturnValue r) -{ - obj = obj; r = r; /* for lint's sake */ - printf("Test 3 callback, win = %d\n", glutGetWindow()); -} - -void maketestui(int win) -{ - muiNewUIList(win); /* makes an MUI display list (number 1) */ - b1 = muiNewButton(10, 100, 10, 35); - b2 = muiNewButton(10, 100, 40, 65); - b3 = muiNewButton(10, 100, 70, 95); - muiLoadButton(b1, "Test1"); - muiLoadButton(b2, "Test2"); - muiLoadButton(b3, "Test3"); - muiSetCallback(b3, bcallback); - muiAttachUIList(win); -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - if (argc > 1) mui_singlebuffered = 1; - glutInitWindowSize(110, 105); - if (mui_singlebuffered) - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE ); - else - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - - glutCreateWindow("1"); - muiInit(); - maketestui(1); - - glutCreateWindow("2"); - muiInit(); - maketestui(2); - - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/lib/glut-3.7.6/test/mui/multi_test.dsp b/lib/glut-3.7.6/test/mui/multi_test.dsp deleted file mode 100644 index 043034197de1dac40f45fda3cb91f9ae4734fe23..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/mui/multi_test.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multi_test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multi_test - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multi_test.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multi_test.mak" CFG="multi_test - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multi_test - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multi_test - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multi_test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "multi_test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "multi_test___Win32_Debug" -# PROP BASE Intermediate_Dir "multi_test___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "multi_test - Win32 Release" -# Name "multi_test - Win32 Debug" -# Begin Source File - -SOURCE=.\multi_test.c -# End Source File -# End Target -# End Project diff --git a/lib/glut-3.7.6/test/test.dsw b/lib/glut-3.7.6/test/test.dsw deleted file mode 100644 index 8fc1833b9049b202185d0b2f3641d103cd3eb575..0000000000000000000000000000000000000000 --- a/lib/glut-3.7.6/test/test.dsw +++ /dev/null @@ -1,839 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "_all"=".\glut\_all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name bigtest - End Project Dependency - Begin Project Dependency - Project_Dep_Name cursor_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency - Begin Project Dependency - Project_Dep_Name joy_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name keyup_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name menu_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name over_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name shape_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name test1 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test10 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test11 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test12 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test13 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test14 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test15 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test16 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test17 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test18 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test19 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test20 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test21 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test22 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test23 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test24 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test25 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test26 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test27 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test28 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test3 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test4 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test5 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test6 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test7 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test8 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test9 - End Project Dependency - Begin Project Dependency - Project_Dep_Name tests - End Project Dependency - Begin Project Dependency - Project_Dep_Name timer_test - End Project Dependency -}}} - -############################################################################### - -Project: "bigtest"=".\glut\bigtest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "cursor_test"=".\glut\cursor_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "joy_test"=".\glut\joy_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "keyup_test"=".\glut\keyup_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "menu_test"=".\glut\menu_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "mui"="..\lib\mui\mui.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mui_test"=".\mui\mui_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mui - End Project Dependency -}}} - -############################################################################### - -Project: "multi_test"=".\mui\multi_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mui - End Project Dependency -}}} - -############################################################################### - -Project: "over_test"=".\glut\over_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "shape_test"=".\glut\shape_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test1"=".\glut\test1.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test10"=".\glut\test10.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test11"=".\glut\test11.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test12"=".\glut\test12.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test13"=".\glut\test13.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test14"=".\glut\test14.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test15"=".\glut\test15.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test16"=".\glut\test16.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test17"=".\glut\test17.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test18"=".\glut\test18.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test19"=".\glut\test19.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test2"=".\glut\test2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test20"=".\glut\test20.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test21"=".\glut\test21.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test22"=".\glut\test22.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test23"=".\glut\test23.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test24"=".\glut\test24.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test25"=".\glut\test25.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test26"=".\glut\test26.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test27"=".\glut\test27.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test28"=".\glut\test28.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test3"=".\glut\test3.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test4"=".\glut\test4.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test5"=".\glut\test5.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test6"=".\glut\test6.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test7"=".\glut\test7.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test8"=".\glut\test8.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "test9"=".\glut\test9.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Project: "tests"=".\glut\tests.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name bigtest - End Project Dependency - Begin Project Dependency - Project_Dep_Name cursor_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name joy_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name keyup_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name menu_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name over_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name shape_test - End Project Dependency - Begin Project Dependency - Project_Dep_Name test10 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test11 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test12 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test13 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test14 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test15 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test16 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test17 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test18 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test19 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test20 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test21 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test22 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test23 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test24 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test25 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test26 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test27 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test28 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test3 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test4 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test5 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test6 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test7 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test8 - End Project Dependency - Begin Project Dependency - Project_Dep_Name test9 - End Project Dependency - Begin Project Dependency - Project_Dep_Name timer_test - End Project Dependency -}}} - -############################################################################### - -Project: "timer_test"=".\glut\timer_test.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut32 - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### -